ATLAS Offline Software
Public Types | Public Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
IOVPayloadContainerCnv_p1 Class Referenceabstract

#include <IOVPayloadContainerCnv_p1.h>

Inheritance diagram for IOVPayloadContainerCnv_p1:
Collaboration diagram for IOVPayloadContainerCnv_p1:

Public Types

typedef TRANS Trans_t
 
typedef PERS Pers_t
 
typedef PERS PersBase_t
 
typedef TRANS TransBase_t
 
typedef ITPConverterFor< TRANS > PolyCnvBase_t
 
typedef Gaudi::PluginService::Factory< ITPCnvBase *()> Factory
 

Public Member Functions

 IOVPayloadContainerCnv_p1 ()
 
virtual void persToTrans (const IOVPayloadContainer_p1 *persObj, IOVPayloadContainer *transObj, MsgStream &log)
 
virtual void transToPers (const IOVPayloadContainer *transObj, IOVPayloadContainer_p1 *persObj, MsgStream &log)
 
virtual TPObjRef virt_toPersistent (const TRANS *trans, MsgStream &log)
 Internal interface method that is used to invoke the real conversion method (toPersistent_impl) in the derived converter. More...
 
virtual TPObjRef virt_toPersistentWithKey (const TRANS *trans, const std::string &key, MsgStream &log)
 Internal interface method that is used to invoke the real conversion method (toPersistent_impl) in the derived converter. More...
 
virtual void pstoreToTrans (unsigned index, TRANS *trans, MsgStream &log)
 Convert persistent representation stored in the storage vector of the top-level object to transient. More...
 
virtual TRANS * createTransient (const PERS *persObj, MsgStream &log)
 Create transient representation of a persistent object. More...
 
virtual TRANS * createTransientWithKey (const PERS *persObj, const std::string &key, MsgStream &log)
 Create transient representation of a persistent object, with SG key. More...
 
virtual TRANS * virt_createTransFromPStore (unsigned index, MsgStream &log)
 Internal interface method that is used to invoke the real conversion method (createTransient) More...
 
virtual TRANS * virt_createTransFromPStoreWithKey (unsigned index, const std::string &key, MsgStream &log)
 Internal interface method that is used to invoke the real conversion method (createTransient) More...
 
virtual void persToTrans (const PERS *persObj, TRANS *transObj, MsgStream &log)=0
 Convert persistent representation to transient one. More...
 
virtual void transToPers (const TRANS *transObj, PERS *persObj, MsgStream &log)=0
 Convert transient representation to persistent one. More...
 
virtual void persToTransWithKey (const PERS *persObj, TRANS *transObj, const std::string &, MsgStream &log)
 Convert persistent representation to transient one. More...
 
virtual void transToPersWithKey (const TRANS *transObj, PERS *persObj, const std::string &, MsgStream &log)
 Convert transient representation to persistent one. More...
 
virtual void persToTransUntyped (const void *pers, void *trans, MsgStream &log)
 Convert persistent object representation to transient. More...
 
virtual void transToPersUntyped (const void *trans, void *pers, MsgStream &log)
 Convert transient object representation to persistent. More...
 
virtual void persToTransWithKeyUntyped (const void *pers, void *trans, const std::string &key, MsgStream &log)
 Convert persistent object representation to transient. More...
 
virtual void transToPersWithKeyUntyped (const void *trans, void *pers, const std::string &key, MsgStream &log)
 Convert transient object representation to persistent. More...
 
virtual PERScreatePersistent (const TRANS *transObj, MsgStream &log)
 Create persistent representation of a transient object. More...
 
virtual PERScreatePersistentWithKey (const TRANS *transObj, const std::string &key, MsgStream &log)
 Create persistent representation of a transient object, with SG key. More...
 
TPObjRef toPersistentWithKey_impl (const TRANS *trans, const std::string &key, MsgStream &log)
 Convert transient object to persistent representation. More...
 
virtual const std::type_info & transientTInfo () const
 return C++ type id of the transient class this converter is for More...
 
virtual const std::type_info & transientTInfo () const
 return C++ type id of the transient class this converter is for More...
 
virtual const std::type_info & persistentTInfo () const
 return C++ type id of the persistent class this converter is for More...
 
virtual const std::type_info & persistentTInfo () const =0
 return C++ type id of the persistent class this converter is for More...
 
void setPStorage (std::vector< PERS > *storage)
 Tell this converter which storage vector it should use to store or retrieve persistent representations. More...
 
void setRecursive (bool flag=true)
 Tell the converter if it should work in recursive mode slower but it can safely handle recursion. More...
 
void ignoreRecursion (bool flag=false)
 Tell the converter to ignore recursion (do not throw errors) even when recurion is detected. More...
 
virtual void reservePStorage (size_t size)
 Reserve 'size' elements for persistent storage. More...
 
template<class CNV >
CNV * converterForType (CNV *cnv, const std::type_info &t_info, MsgStream &log) const
 Find converter for a given C++ type ID, that is or ihnerits from CNV type. More...
 
template<class CNV >
CNV * converterForRef (CNV *cnv, const TPObjRef &ref, MsgStream &log) const
 Find converter for a TP type ID (passed in a TP Ref), that is or ihnerits from CNV type. More...
 
template<class CNV >
TPObjRef baseToPersistent (CNV **cnv, const typename CNV::Trans_t *transObj, MsgStream &log) const
 Persistify bass class of a given object and store the persistent represenation in the storage vector of the top-level persistent object. More...
 
template<class CNV >
TPObjRef toPersistent (CNV **cnv, const typename CNV::TransBase_t *transObj, MsgStream &log) const
 Persistify an object and store the persistent represenation in the storage vector of the top-level persistent object. More...
 
template<class CNV , class TRANS_T >
void fillTransFromPStore (CNV **cnv, const TPObjRef &ref, TRANS_T *trans, MsgStream &log) const
 Convert persistent object, stored in the the top-level persistent object and referenced by the TP Ref, to transient representation. More...
 
template<class CNV >
CNV::Trans_t * createTransFromPStore (CNV **cnv, const TPObjRef &ref, MsgStream &log) const
 Create transient representation of a persistent object, stored in the the top-level persistent object and referenced by the TP Ref. More...
 
virtual void initPrivateConverters (TopLevelTPCnvBase *)
 
virtual TopLevelTPCnvBasetopConverter ()
 return the top-level converter for this elemental TP converter More...
 
virtual const TopLevelTPCnvBasetopConverter () const
 return the top-level converter for this elemental TP converter More...
 
const std::type_info & transBaseTInfo () const
 return C++ type id of the common base transient type for all converters for a group of polymorphic types More...
 
virtual const TPObjRef::typeID_ttypeID () const
 Return TP typeID for persistent objects produced by this converter. More...
 
unsigned typeIDvalue () const
 inlined non-virtual version to get the typeID value fast More...
 
virtual void setRuntimeTopConverter (TopLevelTPCnvBase *topConverter)
 Set runtime top-level converter - usually it is the owning TL converter, but in case of extended objects it will be the TL converter of the extended object. More...
 
virtual void setTopConverter (TopLevelTPCnvBase *topConverter, const TPObjRef::typeID_t &TPtypeID)
 Set which top-level converter owns this elemental converter, and what TPtypeID was assigned to the persistent objects it produces. More...
 
void setReadingFlag ()
 
void clearReadingFlag ()
 
bool wasUsedForReading ()
 
virtual void converterNotFound (const std::type_info &converterType, ITPConverter *c, const std::string &typeName, MsgStream &log) const
 method called when the right TP converter was not found during writing More...
 
virtual void converterNotFound (unsigned typeID, ITPConverter *c, const std::string &typeName, MsgStream &log) const
 method called when the right TP converter was not found during reading More...
 

Protected Attributes

std::vector< PERS > * m_pStorage
 the address of the storage vector for persistent representations More...
 
int m_curRecLevel
 count recursive invocations, to detect recursion More...
 
bool m_recursive
 if true, work in recursion-safe way (slower) More...
 
bool m_ignoreRecursion
 if true, do not throw errors in case of recursion. More...
 
TPObjRef::typeID_t m_pStorageTID
 TP Ref typeID for the persistent objects this converter is creating. More...
 
unsigned m_pStorageTIDvalue
 m_pStorageTID converted to integer value More...
 
TopLevelTPCnvBasem_topConverter
 top level converter that owns this elemental TP converter it also holds the storage object More...
 
TopLevelTPCnvBasem_topConverterRuntime
 top level converter "owning" this TP converter at runtime (different from m_topConverter in case the top-level converter and object have extensions) More...
 
bool m_wasUsedForReading
 flag set when using this converter for reading triggers search for a new converter before writing, to prevent possible use of old version More...
 

Private Types

typedef std::map< std::string, unsigned int >::value_type attrNameMapValue_t
 

Private Member Functions

void fillPersAttrSpec (const IOVPayloadContainer *transObj, IOVPayloadContainer_p1 *persObj, MsgStream &log)
 
void fillAttributeTypeMap ()
 
void fillAttributeData (unsigned int attrName, unsigned int attrType, const coral::Attribute &attr, IOVPayloadContainer_p1 *persObj, MsgStream &log)
 
void fillAttributeData (const IOVPayloadContainer_p1 *persObj, const AttrListIndexes &index, const std::string &name, coral::AttributeList &attrList, MsgStream &log)
 

Private Attributes

std::map< std::string, unsigned int > m_attrNameMap
 
std::map< std::string, unsigned int > m_attributeTypeMap
 
std::vector< std::string > m_attributeTypes
 
unsigned int m_objIndexOffset [IOVPayloadContainer_p1::ATTR_TIME_STAMP+1]
 

Detailed Description

Definition at line 18 of file IOVPayloadContainerCnv_p1.h.

Member Typedef Documentation

◆ attrNameMapValue_t

typedef std::map<std::string, unsigned int>::value_type IOVPayloadContainerCnv_p1::attrNameMapValue_t
private

Definition at line 45 of file IOVPayloadContainerCnv_p1.h.

◆ Factory

typedef Gaudi::PluginService::Factory<ITPCnvBase*()> ITPCnvBase::Factory
inherited

Definition at line 26 of file ITPCnvBase.h.

◆ Pers_t

typedef PERS TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::Pers_t
inherited

Definition at line 335 of file TPConverter.h.

◆ PersBase_t

typedef PERS TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::PersBase_t
inherited

Definition at line 336 of file TPConverter.h.

◆ PolyCnvBase_t

template<class TRANS >
typedef ITPConverterFor< TRANS > ITPConverterFor< TRANS >::PolyCnvBase_t
inherited

Definition at line 41 of file TPConverter.h.

◆ Trans_t

typedef TRANS TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::Trans_t
inherited

Definition at line 334 of file TPConverter.h.

◆ TransBase_t

template<class TRANS >
typedef TRANS ITPConverterFor< TRANS >::TransBase_t
inherited

Definition at line 39 of file TPConverter.h.

Constructor & Destructor Documentation

◆ IOVPayloadContainerCnv_p1()

IOVPayloadContainerCnv_p1::IOVPayloadContainerCnv_p1 ( )

Definition at line 12 of file IOVPayloadContainerCnv_p1.cxx.

13 {}

Member Function Documentation

◆ baseToPersistent()

template<class TRANS >
template<class CNV >
TPObjRef ITPConverterFor< TRANS >::baseToPersistent ( CNV **  cnv,
const typename CNV::Trans_t *  transObj,
MsgStream &  log 
) const
inlineinherited

Persistify bass class of a given object and store the persistent represenation in the storage vector of the top-level persistent object.

The converter is located using the transient type from the CNV parameter, not from the object itself (because we need the base type, not the actual type)

Parameters
cnv[IN/OUT] type of this parameter decides which converter will be used. Once the converter is found, this pointer will be set so the search is done only once
transObj[IN] transient object
log[IN] output message stream
Returns
TPObjRef TP reference to the persistent representation stored in the storage vector of the top-level persistent object

Definition at line 97 of file TPConverter.h.

97  {
98  if( !*cnv || (*cnv)->wasUsedForReading() ) {
99  // don't trust the converter if it was used for reading, find again
100  *cnv = converterForType( *cnv, typeid(typename CNV::Trans_t), log );
101  if( !*cnv ) return TPObjRef();
102  (*cnv)->clearReadingFlag();
103  }
104 // return (**cnv).toPersistent_impl(transObj, log);
105  return (**cnv).virt_toPersistent(transObj, log);
106  }

◆ clearReadingFlag()

template<class TRANS >
void ITPConverterFor< TRANS >::clearReadingFlag ( )
inlineinherited

Definition at line 235 of file TPConverter.h.

235 { m_wasUsedForReading = false; }

◆ converterForRef()

template<class TRANS >
template<class CNV >
CNV* ITPConverterFor< TRANS >::converterForRef ( CNV *  cnv,
const TPObjRef ref,
MsgStream &  log 
) const
inlineinherited

Find converter for a TP type ID (passed in a TP Ref), that is or ihnerits from CNV type.

Parameters
cnv[IN] parameter specifying the converter type
ref[IN] TP Ref to an object for which a converter is sought
log[IN] output message stream
Returns
CNV* pointer to the converter, if found

Definition at line 74 of file TPConverter.h.

74  {
76  cnv = dynamic_cast<CNV*>(c);
77  if( !cnv )
78  this->converterNotFound( ref.typeID(), c, typeid(CNV).name(), log );
79  return cnv;
80  }

◆ converterForType()

template<class TRANS >
template<class CNV >
CNV* ITPConverterFor< TRANS >::converterForType ( CNV *  cnv,
const std::type_info &  t_info,
MsgStream &  log 
) const
inlineinherited

Find converter for a given C++ type ID, that is or ihnerits from CNV type.

Parameters
cnv[IN] parameter specifying the converter type
t_info[IN] C++ type id for which a converter is sought
log[IN] output message stream
Returns
CNV* pointer to the converter, if found

Definition at line 58 of file TPConverter.h.

58  {
60  cnv = dynamic_cast< CNV* >( c );
61  if( !cnv )
62  this->converterNotFound( typeid(CNV), c, t_info.name(), log );
63  return cnv;
64  }

◆ converterNotFound() [1/2]

void ITPConverter::converterNotFound ( const std::type_info &  converterType,
ITPConverter c,
const std::string &  typeName,
MsgStream &  log 
) const
virtualinherited

method called when the right TP converter was not found during writing

  • useful as a debugging hook, prints a detailed error message
Parameters
converterType[IN] converterType that was requested
c[IN] converter that was actually found (0 if not)
typeName[IN] the C++ type name of the type for which converter was searched for
log[IN] output message stream

Definition at line 22 of file ITPConverter.cxx.

26 {
27  log << MSG::ERROR << ">>>>>> in parent TP converter " << typeid(*this).name()
28  << ": could not find matching TP converter for type " << typeName << endmsg;
29  if( c ) {
30  log << MSG::ERROR << " - found incompatible converter of type "
31  << typeid(*c).name() << endmsg;
32  }
33  log << MSG::ERROR << " Converter handle type was " << converterType.name() << endmsg;
34  errorHandler();
35 }

◆ converterNotFound() [2/2]

void ITPConverter::converterNotFound ( unsigned  typeID,
ITPConverter c,
const std::string &  typeName,
MsgStream &  log 
) const
virtualinherited

method called when the right TP converter was not found during reading

  • useful as a debugging hook, prints a detailed error message
Parameters
typeID[IN] converter ID that was requested
c[IN] converter that was actually found (0 if not)
typeName[IN] the C++ type name of the type for which converter was searched for
log[IN] output message stream

Definition at line 40 of file ITPConverter.cxx.

44 {
45  log << MSG::ERROR << ">>>>>> in parent TP converter " << typeid(*this).name()
46  << " requested TP converter for TP type ID " << typeID << " not found " << endmsg;
47  if( c ) {
48  log << MSG::ERROR << " - found converter " << typeid(*c).name()
49  << " for " << c->transientTInfo().name()
50  << " with an incompatible base type " << c->transBaseTInfo().name()
51  << endmsg;
52  }
53  log << MSG::ERROR << " Converter handle type was " << reqCnvTypeName << endmsg;
54  errorHandler();
55 }

◆ createPersistent()

virtual PERS* TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::createPersistent ( const TRANS *  transObj,
MsgStream &  log 
)
virtualinherited

Create persistent representation of a transient object.

Simply creates a new persistent object and calls transToPers()

Parameters
transObj[IN] transient object
log[IN] output message stream
Returns
the created persistent representation

◆ createPersistentWithKey()

virtual PERS* TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::createPersistentWithKey ( const TRANS *  transObj,
const std::string &  key,
MsgStream &  log 
)
virtualinherited

Create persistent representation of a transient object, with SG key.

Simply creates a new persistent object and calls transToPersWithKey()

Parameters
transObj[IN] transient object
key[IN] SG key of object being written
log[IN] output message stream
Returns
the created persistent representation

◆ createTransFromPStore()

template<class TRANS >
template<class CNV >
CNV::Trans_t* ITPConverterFor< TRANS >::createTransFromPStore ( CNV **  cnv,
const TPObjRef ref,
MsgStream &  log 
) const
inlineinherited

Create transient representation of a persistent object, stored in the the top-level persistent object and referenced by the TP Ref.

If a TP converter is not specified, it will be found based on the Ref type.

Parameters
cnv[IN][OUT] pointer to the converter, usually 0 at the start. Once the right converter is found, this pointer will be set so the search is done only once
ref[IN] TP Ref to the persistent object to be converted
log[IN] output message stream
Returns
pointer to the created transient represention

Definition at line 172 of file TPConverter.h.

172  {
173  if( ref.isNull() ) return 0;
174  CNV *temp_cnv_p = 0;
175  if( !cnv ) cnv = &temp_cnv_p;
176  // see if we already have a converter and if it is the right one
177  if( !*cnv || (*cnv)->typeID().value() != ref.typeID() ) {
178  // we don't - find the right converter for ref.typeID()
179  *cnv = converterForRef( *cnv, ref, log );
180  if( !*cnv ) return 0;
181  (*cnv)->setReadingFlag();
182  }
183  return (**cnv).virt_createTransFromPStore( ref.index(), log );
184  }

◆ createTransient()

virtual TRANS* TPPolyCnvBase< TRANS , TRANS, PERS >::createTransient ( const PERS persObj,
MsgStream &  log 
)
virtualinherited

Create transient representation of a persistent object.

Simply creates a new transient object and calls persToTrans()

Parameters
persObj[IN] persistent object
log[IN] output message stream
Returns
the created transient object

◆ createTransientWithKey()

virtual TRANS* TPPolyCnvBase< TRANS , TRANS, PERS >::createTransientWithKey ( const PERS persObj,
const std::string &  key,
MsgStream &  log 
)
virtualinherited

Create transient representation of a persistent object, with SG key.

Simply creates a new transient object and calls persToTransWithKey()

Parameters
persObj[IN] persistent object
key[IN] SG key of object being read
log[IN] output message stream
Returns
the created transient object

◆ fillAttributeData() [1/2]

void IOVPayloadContainerCnv_p1::fillAttributeData ( const IOVPayloadContainer_p1 persObj,
const AttrListIndexes index,
const std::string &  name,
coral::AttributeList &  attrList,
MsgStream &  log 
)
private

Definition at line 561 of file IOVPayloadContainerCnv_p1.cxx.

566 {
567  /*
568  this offset calculation solves the problem reported in
569  ATR-22116 trying to get past the limitation introduced by
570  AttrListIndexes::m_objIndex being of type short, which doesn't
571  cover the full length of the type-wise data vectors
572 
573  It is assumed that when reading the persistent object entries,
574  the objIndex starts at 0, and increases by 1 each read for a given type.
575 
576  One must also not call fillAttributeData multiple times for the
577  same (AttrListIndexes index), nor call them out of order
578 
579  * There is one offset per type, initialized to 1
580  * In the first read of a type the offset is set to 0
581  * In all later reads the offset is not changed unless the objIndex equals 0
582  - if objIndex is fixed to be unsigned int, then objIndex should never be 0 in later reads
583  - if objIndex is unsigned short, then objIndex==0 only when it runs into the 65536 boundary
584  and the offset then gets increased by this amount
585 
586  So this will work also when objIndex is integer
587  */
588 
589  unsigned int objIndex = index.objIndex();
590  unsigned int & offset = m_objIndexOffset[index.typeIndex()];
591  if(offset == 1) {
592  offset = 0;
593  } else {
594  if(objIndex == 0) {
595  offset += 65536;
596  }
597  }
598 
599  // Fill persistent object with attribute data - must use switch
600  // for all possible types
601  switch (index.typeIndex()) {
603  attrList[name].setValue(persObj->m_bool[objIndex + offset]);
604  break;
606  attrList[name].setValue(persObj->m_char[objIndex + offset]);
607  break;
609  attrList[name].setValue(persObj->m_unsignedChar[objIndex + offset]);
610  break;
612  attrList[name].setValue(persObj->m_short[objIndex + offset]);
613  break;
615  attrList[name].setValue(persObj->m_unsignedShort[objIndex + offset]);
616  break;
618  attrList[name].setValue(persObj->m_int[objIndex + offset]);
619  break;
621  attrList[name].setValue(persObj->m_unsignedInt[objIndex + offset]);
622  break;
624  attrList[name].setValue(persObj->m_long[objIndex + offset]);
625  break;
627  attrList[name].setValue(persObj->m_unsignedLong[objIndex + offset]);
628  break;
630  attrList[name].setValue(persObj->m_longLong[objIndex + offset]);
631  break;
633  attrList[name].setValue(persObj->m_unsignedLongLong[objIndex + offset]);
634  break;
636  attrList[name].setValue(persObj->m_float[objIndex + offset]);
637  break;
639  attrList[name].setValue(persObj->m_double[objIndex + offset]);
640  break;
642 // attrList[name].setValue(persObj->m_longDouble[objIndex + offset]);
643  break;
645  attrList[name].setValue(persObj->m_string[objIndex + offset]);
646  break;
648  log << MSG::ERROR
649  << "IOVPayloadContainerCnv_p1::fillAttributeData - cannot currently treat BLOB type "
650  << endmsg;
651  return;
653  {
654  coral::TimeStamp::ValueType ns( persObj->m_date[objIndex + offset] );
655  attrList[name].setValue( coral::Date(coral::TimeStamp(ns).time()) );
656  break;
657  }
659  {
660  coral::TimeStamp::ValueType ns =
661  coral::TimeStamp::ValueType( persObj->m_timeStamp[objIndex + offset] );
662  attrList[name].setValue( coral::TimeStamp(ns) );
663  break;
664  }
665  };
666 }

◆ fillAttributeData() [2/2]

void IOVPayloadContainerCnv_p1::fillAttributeData ( unsigned int  attrName,
unsigned int  attrType,
const coral::Attribute &  attr,
IOVPayloadContainer_p1 persObj,
MsgStream &  log 
)
private

Definition at line 451 of file IOVPayloadContainerCnv_p1.cxx.

456 {
457  // Fill persistent object with attribute data - must use switch
458  // for all possible types
459  switch (attrType) {
461  persObj->m_attrIndexes.push_back(
463  persObj->m_bool.push_back(attr.data<bool>());
464  break;
466  persObj->m_attrIndexes.push_back(
468  persObj->m_char.push_back(attr.data<char>());
469  break;
471  persObj->m_attrIndexes.push_back(
473  persObj->m_unsignedChar.size()));
474  persObj->m_unsignedChar.push_back(attr.data<unsigned char>());
475  break;
477  persObj->m_attrIndexes.push_back(
479  persObj->m_short.push_back(attr.data<short>());
480  break;
482  persObj->m_attrIndexes.push_back(
484  persObj->m_unsignedShort.size()));
485  persObj->m_unsignedShort.push_back(attr.data<unsigned short>());
486  break;
488  persObj->m_attrIndexes.push_back(
490  persObj->m_int.push_back(attr.data<int>());
491  break;
493  persObj->m_attrIndexes.push_back(
495  persObj->m_unsignedInt.size()));
496  persObj->m_unsignedInt.push_back(attr.data<unsigned int>());
497  break;
499  persObj->m_attrIndexes.push_back(
501  persObj->m_long.push_back(attr.data<long>());
502  break;
504  persObj->m_attrIndexes.push_back(
506  persObj->m_unsignedLong.size()));
507  persObj->m_unsignedLong.push_back(attr.data<unsigned long>());
508  break;
510  persObj->m_attrIndexes.push_back(
512  persObj->m_longLong.push_back(attr.data<long long>());
513  break;
515  persObj->m_attrIndexes.push_back(
517  persObj->m_unsignedLongLong.size()));
518  persObj->m_unsignedLongLong.push_back(attr.data<unsigned long long>());
519  break;
521  persObj->m_attrIndexes.push_back(
523  persObj->m_float.push_back(attr.data<float>());
524  break;
526  persObj->m_attrIndexes.push_back(
528  persObj->m_double.push_back(attr.data<double>());
529  break;
531 // persObj->m_attrIndexes.push_back(
532 // AttrListIndexes(attrName, IOVPayloadContainer_p1::ATTR_LONG_DOUBLE, persObj->m_longDouble.size()));
533 // persObj->m_longDouble.push_back(attr.data<long double>());
534  break;
536  persObj->m_attrIndexes.push_back(
538  persObj->m_string.push_back(attr.data<std::string>());
539  break;
541  log << MSG::ERROR
542  << "IOVPayloadContainerCnv_p1::fillAttributeData - cannot currently treat BLOB type "
543  << endmsg;
544  return;
546  persObj->m_attrIndexes.push_back(
548  persObj->m_date.push_back(coral::TimeStamp(attr.data<coral::Date>().time()).total_nanoseconds() );
549  break;
551  persObj->m_attrIndexes.push_back(
553  persObj->m_timeStamp.size()));
554  persObj->m_timeStamp.push_back( attr.data<coral::TimeStamp>().total_nanoseconds() );
555  break;
556  };
557 }

◆ fillAttributeTypeMap()

void IOVPayloadContainerCnv_p1::fillAttributeTypeMap ( )
private

Definition at line 406 of file IOVPayloadContainerCnv_p1.cxx.

407 {
408  // fill type name to number map
427 
428  // vector of types
429  m_attributeTypes.push_back("bool");
430  m_attributeTypes.push_back("char");
431  m_attributeTypes.push_back("unsigned char");
432  m_attributeTypes.push_back("short");
433  m_attributeTypes.push_back("unsigned short");
434  m_attributeTypes.push_back("int");
435  m_attributeTypes.push_back("unsigned int");
436  m_attributeTypes.push_back("long");
437  m_attributeTypes.push_back("unsigned long");
438  m_attributeTypes.push_back("long long");
439  m_attributeTypes.push_back("unsigned long long");
440  m_attributeTypes.push_back("float");
441  m_attributeTypes.push_back("double");
442  m_attributeTypes.push_back("long double");
443  m_attributeTypes.push_back("string");
444  m_attributeTypes.push_back("blob");
445  m_attributeTypes.push_back("date");
446  m_attributeTypes.push_back("time stamp");
447 
448 }

◆ fillPersAttrSpec()

void IOVPayloadContainerCnv_p1::fillPersAttrSpec ( const IOVPayloadContainer transObj,
IOVPayloadContainer_p1 persObj,
MsgStream &  log 
)
private

Definition at line 342 of file IOVPayloadContainerCnv_p1.cxx.

345 {
346 
347  if (log.level() <= MSG::DEBUG) {
348  log << MSG::DEBUG << "IOVPayloadContainerCnv_p1::fillPersAttrSpec IOVPayloadContainer size "
349  << transObj->size() << endmsg;
350  }
351 
352  // Clear name list from previous conversion
353  m_attrNameMap.clear();
354 
355  // Loop over all attribute lists and collect all possible
356  // names - note that some attribute lists may have more names
357  // (elements) than others, so we loop over all attribute lists
358  // for a complete set
359  std::set<std::string> names;
360  IOVPayloadContainer::const_iterator itPayload = transObj->begin();
361  IOVPayloadContainer::const_iterator itPayloadEnd = transObj->end();
362  // Only if there is at least one attribute list
363  for (; itPayload != itPayloadEnd; ++itPayload) {
364 
365  const CondAttrListCollection* coll = *itPayload;
367  CondAttrListCollection::const_iterator itCollEnd = coll->end();
368  for (; itColl != itCollEnd; ++itColl) {
369  const coral::AttributeList& attrList = itColl->second;
370  // iterate over attribute list and save types
371  coral::AttributeList::const_iterator it = attrList.begin();
372  coral::AttributeList::const_iterator last = attrList.end();
373  for (; it != last; ++it) {
374  const coral::Attribute& attr = *it;
375  std::string name = attr.specification().name();
376  std::string typeName = attr.specification().typeName();
377 
378  // Fill map of names for future lookup for conversion
379  names.insert(name);
380  }
381  }
382 
383  }
384 
385  // Fill map for conversion toPers, and pers lookup table to be
386  // saved for readback
387  unsigned int iname = 0;
388  persObj->m_attrName.reserve(names.size());
389  std::set<std::string>::iterator itName = names.begin();
390  std::set<std::string>::iterator itNameEnd = names.end();
391  for (; itName != itNameEnd; ++itName) {
392  // Save the attr name
393  persObj->m_attrName.push_back(*itName);
394  m_attrNameMap.insert(attrNameMapValue_t(*itName, iname));
395  ++iname;
396  }
397 
398  if (log.level() <= MSG::DEBUG) {
399  log << MSG::DEBUG << "IOVPayloadContainerCnv_p1::fillPersAttrSpec number of attribute names "
400  << names.size() << endmsg;
401  }
402 }

◆ fillTransFromPStore()

template<class TRANS >
template<class CNV , class TRANS_T >
void ITPConverterFor< TRANS >::fillTransFromPStore ( CNV **  cnv,
const TPObjRef ref,
TRANS_T *  trans,
MsgStream &  log 
) const
inlineinherited

Convert persistent object, stored in the the top-level persistent object and referenced by the TP Ref, to transient representation.

An empty transient object to be filled in is provided. If converter is not given, it will be found based on the Ref type.

Parameters
cnv[IN][OUT] pointer to the converter, usually 0 at the start. Once the right converter is found, this pointer will be set so the search is done only once
ref[IN] TP Ref to the persistent object to be converted
trans[IN] pointer to the empty transient object
log[IN] output message stream

Definition at line 145 of file TPConverter.h.

145  {
146  if( ref.isNull() ) return;
147  CNV *temp_cnv_p = 0;
148  if( !cnv ) cnv = &temp_cnv_p;
149  // see if we already have a converter and if it is the right one
150  if( !*cnv || (*cnv)->typeID().value() != ref.typeID() ) {
151  // we don't - find the right converter for ref.typeID()
152  *cnv = converterForRef( *cnv, ref, log );
153  if( !*cnv ) return;
154  (*cnv)->setReadingFlag();
155  }
156  (**cnv).pstoreToTrans( ref.index(), trans, log );
157  }

◆ ignoreRecursion()

void TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::ignoreRecursion ( bool  flag = false)
inlineinherited

Tell the converter to ignore recursion (do not throw errors) even when recurion is detected.

UNSAFE! use only if you are sure you preallocated enough persistent storage

Definition at line 568 of file TPConverter.h.

568  {
570  }

◆ initPrivateConverters()

template<class TRANS >
virtual void ITPConverterFor< TRANS >::initPrivateConverters ( TopLevelTPCnvBase )
inlinevirtualinherited

◆ persistentTInfo() [1/2]

virtual const std::type_info& TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::persistentTInfo ( ) const
inlinevirtualinherited

return C++ type id of the persistent class this converter is for

Returns
std::type_info&

Definition at line 482 of file TPConverter.h.

482 { return typeid(PERS); }

◆ persistentTInfo() [2/2]

virtual const std::type_info& ITPCnvBase::persistentTInfo ( ) const
pure virtualinherited

return C++ type id of the persistent class this converter is for

Returns
std::type_info&

Implemented in TopLevelTPConverter< MAIN_CNV, TL_PERS >, TPAbstractPolyCnvBase< TRANS_BASE, TRANS, PERS >, and DummyDetElementSurfaceCnv_p1.

◆ persToTrans() [1/2]

void IOVPayloadContainerCnv_p1::persToTrans ( const IOVPayloadContainer_p1 persObj,
IOVPayloadContainer transObj,
MsgStream &  log 
)
virtual

Definition at line 17 of file IOVPayloadContainerCnv_p1.cxx.

19 {
20 
21  if (log.level() <= MSG::DEBUG) {
22  log << MSG::DEBUG << "IOVPayloadContainerCnv_p1::persToTrans - entering "
23  << endmsg;
24  }
25 
26  for( auto & offset : m_objIndexOffset ) {
27  offset = 1; // this is just the initial value before first use
28  }
29 
30  IOVPayloadContainer::payloadVec& payloadVec = transObj->m_payloadVec;
31 
32  // Make sure transient container is empty - may be reused
33  payloadVec.clear();
34 
35  // fill map from type name to int
36  if (m_attributeTypes.size() == 0)fillAttributeTypeMap();
37 
38  // Check which version we have:
39  // 1) earlier version took the attr spec from first attribute list
40  // 2) more recent versions "correctly" checks ALL attribute lists for attr spec -
41  // attribute list spec may be extended as payloads get merged together
42  // Use a non-empty m_attrType vector to detect the earlier version
43  bool isEarlyVersion = persObj->m_attrType.size() > 0;
44 
45  // Loop over persistent attribute list collections
46  payloadVec.reserve(persObj->m_payloadVec.size());
48  persObj->m_payloadVec)
49  {
51 
52  // Add to transient payload container
53  payloadVec.push_back(transColl);
54 
55  // Loop over attribute lists
56  typedef std::vector<IOVPayloadContainer_p1::CondAttrListEntry_p1>::const_iterator attrListIt_t;
57 
58  attrListIt_t itattrList = persColl.m_attrLists.begin();
59  attrListIt_t lastAttrList = persColl.m_attrLists.end();
60  for (; itattrList != lastAttrList; ++itattrList) {
61 
63 
64  coral::AttributeList attrList;
65  // Add in attributes
66 
67  unsigned int inameOld = 0;
68  for (unsigned int iattr = entry.m_firstIndex;
69  iattr < entry.m_lastIndex; ++iattr, ++inameOld) {
70 
71  // Check that we have the correct number of attributes
72  if (iattr >= persObj->m_attrIndexes.size()) {
73  log << MSG::ERROR
74  << "IOVPayloadContainerCnv_p1::persToTrans attribute index bigger than array size "
75  << iattr << " " << persObj->m_attrIndexes.size() << " last index "
76  << entry.m_lastIndex
77  << endmsg;
78  return;
79  }
80 
81  if (!isEarlyVersion) {
82  // version with name index saved in AttrListIndexes
83 
84  // Get indexes to type/value
85  const AttrListIndexes& indexes = persObj->m_attrIndexes[iattr];
86  // Get attribute name and type name
87  unsigned int iname = indexes.nameIndex();
88  unsigned int itype = indexes.typeIndex();
89  const std::string& name = persObj->m_attrName[iname];
90  const std::string& typeName = m_attributeTypes[itype];
91  // Extend attribute list with new type/name
92  attrList.extend(name, typeName);
93  fillAttributeData(persObj, indexes, name, attrList, log);
94  }
95  else {
96  // Earlier version - did not allow for attr spec
97  // to vary across the collection of attribute
98  // lists
99  bool indexesOK = true;
100  if (inameOld >= persObj->m_attrName.size() ||
101  inameOld >= persObj->m_attrType.size()) {
102  log << MSG::WARNING << "IOVPayloadContainerCnv_p1::persToTrans name index bigger than name/type size. index "
103  << inameOld << " name size " << persObj->m_attrName.size()
104  << " attr size " << persObj->m_attrType.size()
105  << " last index " << entry.m_lastIndex
106  << " Most likely unfilled attribute list. Skipping to the next attrlist entry."
107  << endmsg;
108  indexesOK = false;
109 
110  }
111 
112  // Get indexes to type/value
113  const AttrListIndexes& indexes = persObj->m_attrIndexes[iattr];
114  // Get attribute name and type name
115  if (indexesOK) {
116  const std::string& name = persObj->m_attrName[inameOld];
117  unsigned int itype = persObj->m_attrType[inameOld];
118  const std::string& typeName = m_attributeTypes[itype];
119  // Extend attribute list with new type/name
120  attrList.extend(name, typeName);
121  fillAttributeData(persObj, indexes, name, attrList, log);
122  }
123  else {
124  // Error, print out info
125  std::string typeName;
126  unsigned int itype = indexes.typeIndex();
127  typedef std::map<std::string, unsigned int>::const_iterator it_type;
128  it_type typeIt = m_attributeTypeMap.begin();
129  it_type endType = m_attributeTypeMap.end();
130  for (; typeIt != endType; ++typeIt) {
131  if (itype == typeIt->second) {
132  typeName = typeIt->first;
133  break;
134  }
135  }
136  std::string name = "unknown";
137  attrList.extend(name, typeName);
138  fillAttributeData(persObj, indexes, name, attrList, log);
139  }
140  }
141  }
142 
143 
144 // std::ostringstream attrStr;
145 // attrList.toOutputStream(attrStr);
146 // log << MSG::DEBUG << "IOVPayloadContainerCnv_p1::persToTrans - 3 "
147 // << "start/stop " << entry.m_range.m_start << " "
148 // << entry.m_range.m_stop << " attrList " << attrStr.str()
149 // << endmsg;
150 // log << MSG::DEBUG << "IOVPayloadContainerCnv_p1::persToTrans - 3 "
151 // << "attrList size " << attrList.size()
152 // << endmsg;
153 // for (unsigned int i = 0; i < attrList.size(); ++i) {
154 // log << MSG::DEBUG << attrList[i].specification().name() << " "
155 // << attrList[i].specification().typeName() << " "
156 // << endmsg;
157 // }
158 
159 
160  // Add in AttributeList
161  transColl->add(entry.m_channelNumber, attrList);
162 
163  bool hasIOV = !(entry.m_range.m_start == 0 && entry.m_range.m_stop == 0);
164 
165  // Add in IOV
166  if (hasIOV) {
167  if (persColl.m_hasRunLumiBlockTime) {
168  // run/lumiblock
169  IOVTime start;
170  IOVTime stop;
171  start.setRETime(entry.m_range.m_start);
172  stop.setRETime(entry.m_range.m_stop);
173  transColl->add(entry.m_channelNumber, IOVRange(start, stop));
174  }
175  else {
176  // time stamp
177  IOVTime start;
178  IOVTime stop;
179  start.setTimestamp(entry.m_range.m_start);
180  stop.setTimestamp(entry.m_range.m_stop);
181  transColl->add(entry.m_channelNumber, IOVRange(start, stop));
182  }
183  }
184 
185  // Add in name
186  if (entry.m_name.size()) {
187  transColl->add(entry.m_channelNumber, entry.m_name);
188  }
189  }
190 
191  // Set start if needed:
192 
193  // Set stop which may be smaller than the min of all channels
194  IOVTime start;
195  IOVTime stop;
196  bool setStart = (persColl.m_start != static_cast<uint64_t>(-1));
197  if (persColl.m_hasRunLumiBlockTime) {
198  // run/lumiblock
199  if (setStart) start.setRETime ( persColl.m_start );
200  stop.setRETime ( persColl.m_stop );
201  }
202  else {
203  // time stamp
204  if (setStart) start.setTimestamp( persColl.m_start );
205  stop.setTimestamp( persColl.m_stop );
206  }
207  if (setStart) transColl->addNewStart(start);
208  transColl->addNewStop(stop);
209  }
210 }

◆ persToTrans() [2/2]

virtual void TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::persToTrans ( const PERS persObj,
TRANS *  transObj,
MsgStream &  log 
)
pure virtualinherited

Convert persistent representation to transient one.

Copies data members from persistent object to an existing transient one. Needs to be implemented by the developer on the actual converter.

Parameters
persObj[IN] persistent object
transObj[IN] transient object
log[IN] output message stream

Implemented in TPCnvIDContFromIdentifier< TRANS, PERS, CONV >, TPCnvIDCont< TRANS, PERS, CONV >, TPCnvStdVector< TRANS, PERS, CONV >, TPCnvVector< TRANS, PERS, CONV >, TPValVectorCnv< TRANS, PERS, CONV >, TPPtrVectorCnv< TRANS, PERS, CONV >, TPConverterConstBase< TRANS, PERS >, T_AtlasHitsVectorCnv< TRANS, PERS, CONV >, and T_AthenaHitsVectorCnv< TRANS, PERS, CONV >.

◆ persToTransUntyped()

virtual void TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::persToTransUntyped ( const void *  pers,
void *  trans,
MsgStream &  log 
)
inlinevirtualinherited

Convert persistent object representation to transient.

Parameters
pers[IN] void* pointer to the persistent object
trans[OUT] void* pointer to the empty transient object
log[IN] output message stream

Implements ITPCnvBase.

Definition at line 400 of file TPConverter.h.

403  {
404  persToTrans (reinterpret_cast<const PERS*> (pers),
405  reinterpret_cast<TRANS*> (trans),
406  log);
407  }

◆ persToTransWithKey()

virtual void TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::persToTransWithKey ( const PERS persObj,
TRANS *  transObj,
const std::string &  ,
MsgStream &  log 
)
inlinevirtualinherited

Convert persistent representation to transient one.

Copies data members from persistent object to an existing transient one. Needs to be implemented by the developer on the actual converter.

Parameters
persObj[IN] persistent object
transObj[IN] transient object
log[IN] output message stream

Reimplemented in TPConverterWithKeyBase< TRANS, PERS >.

Definition at line 376 of file TPConverter.h.

379  {
380  return persToTrans (persObj, transObj, log);
381  }

◆ persToTransWithKeyUntyped()

virtual void TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::persToTransWithKeyUntyped ( const void *  pers,
void *  trans,
const std::string &  key,
MsgStream &  log 
)
inlinevirtualinherited

Convert persistent object representation to transient.

Parameters
pers[IN] void* pointer to the persistent object
trans[OUT] void* pointer to the empty transient object
key[IN] SG key of object being read.
log[IN] output message stream

Reimplemented from ITPCnvBase.

Definition at line 420 of file TPConverter.h.

424  {
425  persToTransWithKey (reinterpret_cast<const PERS*> (pers),
426  reinterpret_cast<TRANS*> (trans),
427  key,
428  log);
429  }

◆ pstoreToTrans()

template<class TRANS , class PERS >
virtual void TPConverterBase< TRANS, PERS >::pstoreToTrans ( unsigned  index,
TRANS *  trans,
MsgStream &  log 
)
inlinevirtualinherited

Convert persistent representation stored in the storage vector of the top-level object to transient.

Internal.

Parameters
index[IN] index of the persistent representation in the storage vector
trans[IN] empty transient object
log[IN] output message stream

Reimplemented from TPAbstractPolyCnvBase< TRANS, TRANS, PERS >.

Definition at line 760 of file TPConverter.h.

760  {
761  assert (index < this->m_pStorage->size());
762  this->persToTrans( &(*this->m_pStorage)[index], trans, log );
763  }

◆ reservePStorage()

virtual void TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::reservePStorage ( size_t  size)
inlinevirtualinherited

Reserve 'size' elements for persistent storage.

Implements ITPConverter.

Definition at line 573 of file TPConverter.h.

573  {
574  m_pStorage->reserve( size );
575  }

◆ setPStorage()

void TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::setPStorage ( std::vector< PERS > *  storage)
inlineinherited

Tell this converter which storage vector it should use to store or retrieve persistent representations.

Parameters
storage[IN] the address of the storage vector

Definition at line 551 of file TPConverter.h.

551  {
552  m_pStorage = storage;
553  m_curRecLevel = 0;
554  }

◆ setReadingFlag()

template<class TRANS >
void ITPConverterFor< TRANS >::setReadingFlag ( )
inlineinherited

Definition at line 234 of file TPConverter.h.

234 { m_wasUsedForReading = true; }

◆ setRecursive()

void TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::setRecursive ( bool  flag = true)
inlineinherited

Tell the converter if it should work in recursive mode slower but it can safely handle recursion.

Definition at line 559 of file TPConverter.h.

559  {
560  m_recursive = flag;
561  }

◆ setRuntimeTopConverter()

template<class TRANS >
virtual void ITPConverterFor< TRANS >::setRuntimeTopConverter ( TopLevelTPCnvBase topConverter)
inlinevirtualinherited

Set runtime top-level converter - usually it is the owning TL converter, but in case of extended objects it will be the TL converter of the extended object.

Parameters
topConverter[IN] runtime top-level converter for this converter

Implements ITPConverter.

Definition at line 215 of file TPConverter.h.

◆ setTopConverter()

template<class TRANS >
virtual void ITPConverterFor< TRANS >::setTopConverter ( TopLevelTPCnvBase topConverter,
const TPObjRef::typeID_t TPtypeID 
)
inlinevirtualinherited

Set which top-level converter owns this elemental converter, and what TPtypeID was assigned to the persistent objects it produces.

Parameters
topConverter[IN] the top-level converter owning this converter
TPtypeID[IN] TP type id for persistent objects (used in TP refs)

Implements ITPConverter.

Definition at line 221 of file TPConverter.h.

223  {
225  m_pStorageTID = TPtypeID;
226  m_pStorageTIDvalue = TPtypeID.value();
228  }

◆ topConverter() [1/2]

template<class TRANS >
virtual TopLevelTPCnvBase* ITPConverterFor< TRANS >::topConverter ( )
inlinevirtualinherited

return the top-level converter for this elemental TP converter

Returns
TopLevelTPCnvBas

Reimplemented from ITPConverter.

Definition at line 191 of file TPConverter.h.

191  {
192  return m_topConverter;
193  }

◆ topConverter() [2/2]

template<class TRANS >
virtual const TopLevelTPCnvBase* ITPConverterFor< TRANS >::topConverter ( ) const
inlinevirtualinherited

return the top-level converter for this elemental TP converter

Returns
TopLevelTPCnvBas

Reimplemented from ITPConverter.

Definition at line 196 of file TPConverter.h.

196  {
197  return m_topConverter;
198  }

◆ toPersistent()

template<class TRANS >
template<class CNV >
TPObjRef ITPConverterFor< TRANS >::toPersistent ( CNV **  cnv,
const typename CNV::TransBase_t *  transObj,
MsgStream &  log 
) const
inlineinherited

Persistify an object and store the persistent represenation in the storage vector of the top-level persistent object.

The correct converter is located using the actual object type.

Parameters
cnv[IN/OUT] pointer to the converter, usually 0 at the start. Once the right converter is found, this pointer will be set so the search is done only once
transObj[IN] transient object
log[IN] output message stream
Returns
TPObjRef TP reference to the persistent representation stored in the storage vector of the top-level persistent object

Definition at line 119 of file TPConverter.h.

119  {
120  if( !transObj ) return TPObjRef();
121  CNV *temp_cnv_p = 0;
122  if( !cnv ) cnv = &temp_cnv_p;
123  if( !*cnv || (*cnv)->wasUsedForReading() ) {
124  // don't trust the converter if it was used for reading, find again
125  *cnv = converterForType( *cnv, typeid(*transObj), log );
126  if( !*cnv ) return TPObjRef();
127  (*cnv)->clearReadingFlag();
128  }
129  return (**cnv).virt_toPersistent(transObj, log);
130  }

◆ toPersistentWithKey_impl()

TPObjRef TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::toPersistentWithKey_impl ( const TRANS *  trans,
const std::string &  key,
MsgStream &  log 
)
inherited

Convert transient object to persistent representation.

Stores the result in the storage vector of the top-level object and returns a TP Ref to it.

Parameters
trans[IN] transient object
key[IN] SG key of object being converted
log[IN] output message stream
Returns
TP reference to the persistent representation

◆ transBaseTInfo()

template<class TRANS >
const std::type_info& ITPConverterFor< TRANS >::transBaseTInfo ( ) const
inlinevirtualinherited

return C++ type id of the common base transient type for all converters for a group of polymorphic types

Returns
std::type_info& this method is not overwritten in the subclasses like transientTInfo()

Implements ITPConverter.

Definition at line 205 of file TPConverter.h.

205 { return typeid(TRANS); }

◆ transientTInfo() [1/2]

template<class TRANS >
virtual const std::type_info& ITPConverterFor< TRANS >::transientTInfo ( ) const
inlinevirtualinherited

return C++ type id of the transient class this converter is for

Returns
std::type_info&

Implements ITPCnvBase.

Reimplemented in TPAbstractPolyCnvBase< Analysis::MuonContainer, Analysis::MuonContainer, MuonContainer_p3 >, TPAbstractPolyCnvBase< TileTrackMuFeatureContainer, TileTrackMuFeatureContainer, TileTrackMuFeatureContainer_p3 >, TPAbstractPolyCnvBase< std::vector< Analysis::TauPi0Cluster * >, std::vector< Analysis::TauPi0Cluster * >, std::vector< TPObjRef > >, TPAbstractPolyCnvBase< IsoMuonFeatureContainer, IsoMuonFeatureContainer, IsoMuonFeatureContainer_p2 >, TPAbstractPolyCnvBase< MuonFeatureDetailsContainer, MuonFeatureDetailsContainer, MuonFeatureDetailsContainer_p2 >, TPAbstractPolyCnvBase< std::vector< Trk::VxCandidate * >, std::vector< Trk::VxCandidate * >, std::vector< TPObjRef > >, TPAbstractPolyCnvBase< MuonFeatureContainer, MuonFeatureContainer, MuonFeatureContainer_p3 >, TPAbstractPolyCnvBase< std::vector< TrigConfAlg >, std::vector< TrigConfAlg >, std::vector< TrigConfAlg_p1 > >, TPAbstractPolyCnvBase< TrigT2MbtsBitsContainer, TrigT2MbtsBitsContainer, TrigT2MbtsBitsContainer_p3 >, TPAbstractPolyCnvBase< TrigCompositeContainer, TrigCompositeContainer, TrigCompositeContainer_p1 >, TPAbstractPolyCnvBase< LumiBlockCollection, LumiBlockCollection, LumiBlockCollection_p2 >, TPAbstractPolyCnvBase< TrigTauClusterContainer, TrigTauClusterContainer, TrigTauClusterContainer_p5 >, TPAbstractPolyCnvBase< TrigRNNOutputContainer, TrigRNNOutputContainer, TrigRNNOutputContainer_p2 >, TPAbstractPolyCnvBase< TrigRoiDescriptorCollection, TrigRoiDescriptorCollection, TrigRoiDescriptorCollection_p3 >, TPAbstractPolyCnvBase< TrigTauClusterContainer, TrigTauClusterContainer, TrigTauClusterContainer_p4 >, TPAbstractPolyCnvBase< TrigT2JetContainer, TrigT2JetContainer, TrigT2JetContainer_p3 >, TPAbstractPolyCnvBase< TrigPassBitsCollection, TrigPassBitsCollection, TrigPassBitsCollection_p1 >, TPAbstractPolyCnvBase< TrigRoiDescriptorCollection, TrigRoiDescriptorCollection, TrigRoiDescriptorCollection_p2 >, TPAbstractPolyCnvBase< std::vector< const JetTagInfoBase * >, std::vector< const JetTagInfoBase * >, std::vector< TPObjRef > >, TPAbstractPolyCnvBase< TrigTauClusterContainer, TrigTauClusterContainer, TrigTauClusterContainer_p3 >, TPAbstractPolyCnvBase< TrigMuonEFIsolationContainer, TrigMuonEFIsolationContainer, TrigMuonEFIsolationContainer_p1 >, TPAbstractPolyCnvBase< MultiComponentStateOnSurfaceDV, MultiComponentStateOnSurfaceDV, std::vector< TPObjRef > >, TPAbstractPolyCnvBase< RingerRingsContainer, RingerRingsContainer, RingerRingsContainer_p2 >, TPAbstractPolyCnvBase< std::vector< Trk::VxTrackAtVertex * >, std::vector< Trk::VxTrackAtVertex * >, std::vector< TPObjRef > >, TPAbstractPolyCnvBase< std::vector< TrigMonTE >, std::vector< TrigMonTE >, std::vector< TrigMonTE_p1 > >, TPAbstractPolyCnvBase< Analysis::MuonContainer, Analysis::MuonContainer, MuonContainer_p6 >, TPAbstractPolyCnvBase< TrigMissingETContainer, TrigMissingETContainer, TrigMissingETContainer_p3 >, TPAbstractPolyCnvBase< TileHitVector, TileHitVector, TileHitVector_p1 >, TPAbstractPolyCnvBase< DataVector< eflowObject >, DataVector< eflowObject >, std::vector< eflowObject_p2 > >, TPAbstractPolyCnvBase< std::vector< TrigConfSeq >, std::vector< TrigConfSeq >, std::vector< TrigConfSeq_p1 > >, TPAbstractPolyCnvBase< TrigTrtHitCountsCollection, TrigTrtHitCountsCollection, TrigTrtHitCountsCollection_p2 >, TPAbstractPolyCnvBase< JetCollection, JetCollection, ParticleJetContainer_p1 >, TPAbstractPolyCnvBase< TrigL2BjetContainer, TrigL2BjetContainer, TrigL2BjetContainer_p3 >, TPAbstractPolyCnvBase< TrigMuonEFIsolationContainer, TrigMuonEFIsolationContainer, TrigMuonEFIsolationContainer_p2 >, TPAbstractPolyCnvBase< TrigPassFlagsCollection, TrigPassFlagsCollection, TrigPassFlagsCollection_p1 >, TPAbstractPolyCnvBase< DataVector< const Trk::MeasurementBase >, DataVector< const Trk::MeasurementBase >, std::vector< TPObjRef > >, TPAbstractPolyCnvBase< DataVector< eflowObject >, DataVector< eflowObject >, std::vector< eflowObject_p3 > >, TPAbstractPolyCnvBase< TrigTauTracksInfoCollection, TrigTauTracksInfoCollection, TrigTauTracksInfoCollection_p2 >, TPAbstractPolyCnvBase< TrackInVertexVector, TrackInVertexVector, std::vector< TPObjRef > >, TPAbstractPolyCnvBase< TrigTauClusterDetailsContainer, TrigTauClusterDetailsContainer, TrigTauClusterDetailsContainer_p2 >, TPAbstractPolyCnvBase< TrigEMClusterContainer, TrigEMClusterContainer, TrigEMClusterContainer_p4 >, TPAbstractPolyCnvBase< std::vector< Analysis::TauShot * >, std::vector< Analysis::TauShot * >, std::vector< TPObjRef > >, TPAbstractPolyCnvBase< DataVector< eflowObject >, DataVector< eflowObject >, std::vector< eflowObject_p4 > >, TPAbstractPolyCnvBase< std::vector< TrigMonRoi >, std::vector< TrigMonRoi >, std::vector< TrigMonRoi_p1 > >, TPAbstractPolyCnvBase< DataVector< eflowObject >, DataVector< eflowObject >, std::vector< eflowObject_p5 > >, TPAbstractPolyCnvBase< TrigTauContainer, TrigTauContainer, TrigTauContainer_p3 >, TPAbstractPolyCnvBase< TrigEMClusterContainer, TrigEMClusterContainer, TrigEMClusterContainer_p3 >, TPAbstractPolyCnvBase< TrigMuonEFContainer, TrigMuonEFContainer, TrigMuonEFContainer_p2 >, TPAbstractPolyCnvBase< ElectronMuonTopoInfoContainer, ElectronMuonTopoInfoContainer, ElectronMuonTopoInfoContainer_p1 >, TPAbstractPolyCnvBase< TrigInDetTrackCollection, TrigInDetTrackCollection, std::vector< TPObjRef > >, TPAbstractPolyCnvBase< std::vector< const Trk::TrackParameters * >, std::vector< const Trk::TrackParameters * >, std::vector< TPObjRef > >, TPAbstractPolyCnvBase< EventBookkeeperCollection, EventBookkeeperCollection, EventBookkeeperCollection_p2 >, TPAbstractPolyCnvBase< SkimDecisionCollection, SkimDecisionCollection, SkimDecisionCollection_p1 >, TPAbstractPolyCnvBase< std::vector< TrigConfChain >, std::vector< TrigConfChain >, std::vector< TrigConfChain_p1 > >, TPAbstractPolyCnvBase< Trk::TrackStates, Trk::TrackStates, std::vector< TPObjRef > >, TPAbstractPolyCnvBase< CombinedMuonFeatureContainer, CombinedMuonFeatureContainer, CombinedMuonFeatureContainer_p4 >, TPAbstractPolyCnvBase< TrigPhotonContainer, TrigPhotonContainer, TrigPhotonContainer_p3 >, TPAbstractPolyCnvBase< std::vector< TrigMonSeq >, std::vector< TrigMonSeq >, std::vector< TrigMonSeq_p1 > >, TPAbstractPolyCnvBase< EventBookkeeperCollection, EventBookkeeperCollection, EventBookkeeperCollection_p1 >, TPAbstractPolyCnvBase< std::vector< TrigMonAlg >, std::vector< TrigMonAlg >, std::vector< TrigMonAlg_p1 > >, TPAbstractPolyCnvBase< CombinedMuonFeatureContainer, CombinedMuonFeatureContainer, CombinedMuonFeatureContainer_p3 >, TPAbstractPolyCnvBase< DataVector< eflowObject >, DataVector< eflowObject >, std::vector< eflowObject_p1 > >, TPAbstractPolyCnvBase< std::vector< Analysis::TauPi0Candidate * >, std::vector< Analysis::TauPi0Candidate * >, std::vector< TPObjRef > >, TPAbstractPolyCnvBase< CombinedMuonFeatureContainer, CombinedMuonFeatureContainer, CombinedMuonFeatureContainer_p2 >, TPAbstractPolyCnvBase< TrigElectronContainer, TrigElectronContainer, TrigElectronContainer_p3 >, TPAbstractPolyCnvBase< TrigSpacePointCountsCollection, TrigSpacePointCountsCollection, TrigSpacePointCountsCollection_p4 >, TPAbstractPolyCnvBase< Analysis::MuonContainer, Analysis::MuonContainer, MuonContainer_p5 >, TPAbstractPolyCnvBase< TileMuFeatureContainer, TileMuFeatureContainer, TileMuFeatureContainer_p2 >, TPAbstractPolyCnvBase< std::vector< TrigConfSig >, std::vector< TrigConfSig >, std::vector< TrigConfSig_p1 > >, TPAbstractPolyCnvBase< std::vector< TrigMonROBData >, std::vector< TrigMonROBData >, std::vector< TrigMonROBData_p1 > >, TPAbstractPolyCnvBase< Analysis::MuonContainer, Analysis::MuonContainer, MuonContainer_p4 >, TPAbstractPolyCnvBase< LumiBlockCollection, LumiBlockCollection, LumiBlockCollection_p1 >, TPAbstractPolyCnvBase< std::vector< const JetAssociationBase * >, std::vector< const JetAssociationBase * >, std::vector< TPObjRef > >, TPAbstractPolyCnvBase< IsoMuonFeatureContainer, IsoMuonFeatureContainer, IsoMuonFeatureContainer_p3 >, TPAbstractPolyCnvBase< TrigCaloClusterContainer, TrigCaloClusterContainer, TrigCaloClusterContainer_p3 >, and TPAbstractPolyCnvBase< std::vector< TrigMonROB >, std::vector< TrigMonROB >, std::vector< TrigMonROB_p1 > >.

Definition at line 201 of file TPConverter.h.

201 { return typeid(TRANS); }

◆ transientTInfo() [2/2]

virtual const std::type_info& TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::transientTInfo ( ) const
inlinevirtualinherited

return C++ type id of the transient class this converter is for

Returns
std::type_info&

Definition at line 479 of file TPConverter.h.

479 { return typeid(TRANS); }

◆ transToPers() [1/2]

void IOVPayloadContainerCnv_p1::transToPers ( const IOVPayloadContainer transObj,
IOVPayloadContainer_p1 persObj,
MsgStream &  log 
)
virtual

Definition at line 213 of file IOVPayloadContainerCnv_p1.cxx.

215 {
216 
217  if (log.level() <= MSG::DEBUG) {
218  log << MSG::DEBUG << "IOVPayloadContainerCnv_p1::transToPers "
219  << endmsg;
220  }
221 
222 
223  // fill map from type name to int
224  if (m_attributeTypes.size() == 0)fillAttributeTypeMap();
225 
226  // Create attribute list specification
227  fillPersAttrSpec(transObj, persObj, log);
228 
229  // Nothing to do if specification was not filled
230  if (!persObj->m_attrName.size()) {
231  if (log.level() <= MSG::DEBUG) {
232  log << MSG::DEBUG << "IOVPayloadContainerCnv_p1::transToPers - empty attr list spec "
233  << endmsg;
234  }
235  return;
236  }
237 
238  // Now fill pers object
239  persObj->m_payloadVec.resize(transObj->size());
240 
241  // Loop over transient CondAttrListCollection
242  unsigned int ipcoll = 0;
244  IOVPayloadContainer::const_iterator last = transObj->end();
245  for (; it != last; ++it, ++ipcoll) {
246  const CondAttrListCollection* tColl = *it;
248  persObj->m_payloadVec[ipcoll];
249  pColl.m_attrLists.resize(tColl->size());
250 
251  // minimal IOVRange
252  bool isRunLumiBlock = tColl->minRange().start().isRunEvent();
253  if (isRunLumiBlock) {
254  // run/lumiblock
255  pColl.m_hasRunLumiBlockTime = true;
256  // Save start and stop which may be form an IOV smaller than the min of all channels
257  pColl.m_start = tColl->minRange().start().re_time();
258  pColl.m_stop = tColl->minRange().stop().re_time();
259  }
260  else {
261  // time stamp
262  pColl.m_hasRunLumiBlockTime = false;
263  // Save start and stop which may be form an IOV smaller than the min of all channels
264  pColl.m_start = tColl->minRange().start().timestamp();
265  pColl.m_stop = tColl->minRange().stop().timestamp();
266  }
267 
268  // Loop over transient AttributeLists
270  CondAttrListCollection::const_iterator lastAttr = tColl->end();
271  unsigned int ientry = 0;
272  for (; itAttr != lastAttr; ++itAttr, ++ientry) {
274 
275  unsigned int chan = (*itAttr).first;
276  entry.m_channelNumber = chan;
277  entry.m_firstIndex = persObj->m_attrIndexes.size();
278  // make sure last index is set in case of error
279  entry.m_lastIndex = persObj->m_attrIndexes.size();
280  entry.m_range.m_start = 0;
281  entry.m_range.m_stop = 0;
282 
283  // Look for IOV per channel
285  if (iovIt != tColl->iov_end()) {
286  // this channel has an IOV of its own
287  if (isRunLumiBlock) {
288  entry.m_range.m_start = iovIt->second.start().re_time();
289  entry.m_range.m_stop = iovIt->second.stop().re_time();
290  }
291  else {
292  entry.m_range.m_start = iovIt->second.start().timestamp();
293  entry.m_range.m_stop = iovIt->second.stop().timestamp();
294  }
295  }
296 
297  // Add in name
298  std::string name = tColl->chanName(chan);
299  if (name.size()) {
300  entry.m_name = name;
301  }
302 
303  // Add in each attribute value and save indexes
304 
305  const coral::AttributeList& attrList = (*itAttr).second;
306 
307  coral::AttributeList::const_iterator itAttr = attrList.begin();
308  coral::AttributeList::const_iterator itLast = attrList.end();
309  for (; itAttr != itLast; ++itAttr) {
310 
311  std::string typeName = itAttr->specification().typeName();
312  std::map<std::string, unsigned int>::const_iterator attIt =
314  if (attIt == m_attributeTypeMap.end()) {
315  log << MSG::ERROR << "IOVPayloadContainerCnv_p1::transToPers - cannot find attibute type in map - name "
316  << typeName << endmsg;
317  return;
318  }
319  unsigned int itype = attIt->second;
320 
321  std::string name = itAttr->specification().name();
322  attIt = m_attrNameMap.find(name);
323  if (attIt == m_attrNameMap.end()) {
324  log << MSG::ERROR << "IOVPayloadContainerCnv_p1::transToPers - cannot find attibute name in map - name "
325  << name << endmsg;
326  return;
327  }
328  unsigned int iname = attIt->second;
329 
330  // fill persistent object with attribute data:
331  // name, type, attribute list, persObj
332  fillAttributeData(iname, itype,(*itAttr), persObj, log);
333  }
334 
335  // Now save the last index into the index vector
336  entry.m_lastIndex = persObj->m_attrIndexes.size();
337  }
338  }
339 }

◆ transToPers() [2/2]

virtual void TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::transToPers ( const TRANS *  transObj,
PERS persObj,
MsgStream &  log 
)
pure virtualinherited

Convert transient representation to persistent one.

Copies data members from transient object to an existing persistent one. Needs to be implemented by the developer on the actual converter.

Parameters
transObj[IN] transient object
persObj[IN] persistent object
log[IN] output message stream

Implemented in TPCnvIDContFromIdentifier< TRANS, PERS, CONV >, TPCnvIDCont< TRANS, PERS, CONV >, TPCnvStdVector< TRANS, PERS, CONV >, TPCnvVector< TRANS, PERS, CONV >, TPValVectorCnv< TRANS, PERS, CONV >, TPPolyVectorCnv< TRANS, PERS, CONV >, TPPtrVectorCnv< TRANS, PERS, CONV >, TPConverterConstBase< TRANS, PERS >, T_AtlasHitsVectorCnv< TRANS, PERS, CONV >, and T_AthenaHitsVectorCnv< TRANS, PERS, CONV >.

◆ transToPersUntyped()

virtual void TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::transToPersUntyped ( const void *  trans,
void *  pers,
MsgStream &  log 
)
inlinevirtualinherited

Convert transient object representation to persistent.

Parameters
trans[IN] void* pointer to the transient object
pers[OUT] void* pointer to the empty persistent object
log[IN] output message stream

Implements ITPCnvBase.

Definition at line 410 of file TPConverter.h.

413  {
414  transToPers (reinterpret_cast<const TRANS*> (trans),
415  reinterpret_cast<PERS*> (pers),
416  log);
417  }

◆ transToPersWithKey()

virtual void TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::transToPersWithKey ( const TRANS *  transObj,
PERS persObj,
const std::string &  ,
MsgStream &  log 
)
inlinevirtualinherited

Convert transient representation to persistent one.

Copies data members from transient object to an existing persistent one. Needs to be implemented by the developer on the actual converter.

Parameters
transObj[IN] transient object
persObj[IN] persistent object
key[IN] SG key of object being written.
log[IN] output message stream

Reimplemented in TPConverterWithKeyBase< TRANS, PERS >.

Definition at line 392 of file TPConverter.h.

395  {
396  return transToPers (transObj, persObj, log);
397  }

◆ transToPersWithKeyUntyped()

virtual void TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::transToPersWithKeyUntyped ( const void *  trans,
void *  pers,
const std::string &  key,
MsgStream &  log 
)
inlinevirtualinherited

Convert transient object representation to persistent.

Parameters
trans[IN] void* pointer to the transient object
pers[OUT] void* pointer to the empty persistent object
key[IN] SG key of object being written.
log[IN] output message stream

Reimplemented from ITPCnvBase.

Definition at line 432 of file TPConverter.h.

436  {
437  transToPersWithKey (reinterpret_cast<const TRANS*> (trans),
438  reinterpret_cast<PERS*> (pers),
439  key,
440  log);
441  }

◆ typeID()

template<class TRANS >
virtual const TPObjRef::typeID_t& ITPConverterFor< TRANS >::typeID ( ) const
inlinevirtualinherited

Return TP typeID for persistent objects produced by this converter.

Returns
TPObjRef::typeID_t&

Implements ITPConverter.

Definition at line 208 of file TPConverter.h.

208 { return m_pStorageTID; }

◆ typeIDvalue()

template<class TRANS >
unsigned ITPConverterFor< TRANS >::typeIDvalue ( ) const
inlineinherited

inlined non-virtual version to get the typeID value fast

Definition at line 211 of file TPConverter.h.

211 { return m_pStorageTIDvalue; }

◆ virt_createTransFromPStore()

virtual TRANS* TPPolyCnvBase< TRANS , TRANS, PERS >::virt_createTransFromPStore ( unsigned  index,
MsgStream &  log 
)
inlinevirtualinherited

Internal interface method that is used to invoke the real conversion method (createTransient)

Parameters
index[IN] index of the persistent object in the storage vector
log[IN] output message stream
Returns
Created transient object (by pointer)

Reimplemented from TPAbstractPolyCnvBase< TRANS, TRANS, PERS >.

Definition at line 706 of file TPConverter.h.

706  {
707  assert (index < this->m_pStorage->size());
708  return createTransient( &(*this->m_pStorage)[index], log );
709  }

◆ virt_createTransFromPStoreWithKey()

virtual TRANS* TPPolyCnvBase< TRANS , TRANS, PERS >::virt_createTransFromPStoreWithKey ( unsigned  index,
const std::string &  key,
MsgStream &  log 
)
inlinevirtualinherited

Internal interface method that is used to invoke the real conversion method (createTransient)

Parameters
index[IN] index of the persistent object in the storage vector
key[IN] SG key of the object being converted
log[IN] output message stream
Returns
Created transient object (by pointer)

Reimplemented from TPAbstractPolyCnvBase< TRANS, TRANS, PERS >.

Definition at line 718 of file TPConverter.h.

721  {
722  assert (index < this->m_pStorage->size());
723  return createTransientWithKey( &(*this->m_pStorage)[index], key, log );
724  }

◆ virt_toPersistent()

template<class TRANS , class PERS >
virtual TPObjRef TPConverterBase< TRANS, PERS >::virt_toPersistent ( const TRANS *  trans,
MsgStream &  log 
)
inlinevirtualinherited

Internal interface method that is used to invoke the real conversion method (toPersistent_impl) in the derived converter.

Parameters
trans[IN] transient object
log[IN] output message stream
Returns
TPObjRef TP reference to the persistent representation stored in the storage vector of the top-level persistent object Here toPersistent_impl is invoked with the dynamic cast of the transient type pointer to it's actual type

Reimplemented from TPAbstractPolyCnvBase< TRANS, TRANS, PERS >.

Definition at line 747 of file TPConverter.h.

747  {
748  return this->toPersistentWithKey_impl( trans, "", log);
749  }

◆ virt_toPersistentWithKey()

template<class TRANS , class PERS >
virtual TPObjRef TPConverterBase< TRANS, PERS >::virt_toPersistentWithKey ( const TRANS *  trans,
const std::string &  key,
MsgStream &  log 
)
inlinevirtualinherited

Internal interface method that is used to invoke the real conversion method (toPersistent_impl) in the derived converter.

Parameters
trans[IN] transient object
key[IN] SG key of the object being converted.
log[IN] output message stream
Returns
TPObjRef TP reference to the persistent representation stored in the storage vector of the top-level persistent object Here toPersistentWithKey_impl is invoked with the dynamic cast of the transient type pointer to it's actual type

Reimplemented from TPAbstractPolyCnvBase< TRANS, TRANS, PERS >.

Definition at line 752 of file TPConverter.h.

755  {
756  return this->toPersistentWithKey_impl( trans, key, log);
757  }

◆ wasUsedForReading()

template<class TRANS >
bool ITPConverterFor< TRANS >::wasUsedForReading ( )
inlineinherited

Definition at line 236 of file TPConverter.h.

236 { return m_wasUsedForReading; }

Member Data Documentation

◆ m_attributeTypeMap

std::map<std::string, unsigned int> IOVPayloadContainerCnv_p1::m_attributeTypeMap
private

Definition at line 49 of file IOVPayloadContainerCnv_p1.h.

◆ m_attributeTypes

std::vector<std::string> IOVPayloadContainerCnv_p1::m_attributeTypes
private

Definition at line 50 of file IOVPayloadContainerCnv_p1.h.

◆ m_attrNameMap

std::map<std::string, unsigned int> IOVPayloadContainerCnv_p1::m_attrNameMap
private

Definition at line 46 of file IOVPayloadContainerCnv_p1.h.

◆ m_curRecLevel

int TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::m_curRecLevel
protectedinherited

count recursive invocations, to detect recursion

Definition at line 582 of file TPConverter.h.

◆ m_ignoreRecursion

bool TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::m_ignoreRecursion
protectedinherited

if true, do not throw errors in case of recursion.

Definition at line 588 of file TPConverter.h.

◆ m_objIndexOffset

unsigned int IOVPayloadContainerCnv_p1::m_objIndexOffset[IOVPayloadContainer_p1::ATTR_TIME_STAMP+1]
private

Definition at line 52 of file IOVPayloadContainerCnv_p1.h.

◆ m_pStorage

std::vector< PERS >* TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::m_pStorage
protectedinherited

the address of the storage vector for persistent representations

Definition at line 579 of file TPConverter.h.

◆ m_pStorageTID

template<class TRANS >
TPObjRef::typeID_t ITPConverterFor< TRANS >::m_pStorageTID
protectedinherited

TP Ref typeID for the persistent objects this converter is creating.

Definition at line 292 of file TPConverter.h.

◆ m_pStorageTIDvalue

template<class TRANS >
unsigned ITPConverterFor< TRANS >::m_pStorageTIDvalue
protectedinherited

m_pStorageTID converted to integer value

Definition at line 295 of file TPConverter.h.

◆ m_recursive

bool TPAbstractPolyCnvBase< TRANS , TRANS, PERS >::m_recursive
protectedinherited

if true, work in recursion-safe way (slower)

Definition at line 585 of file TPConverter.h.

◆ m_topConverter

template<class TRANS >
TopLevelTPCnvBase* ITPConverterFor< TRANS >::m_topConverter
protectedinherited

top level converter that owns this elemental TP converter it also holds the storage object

Definition at line 299 of file TPConverter.h.

◆ m_topConverterRuntime

template<class TRANS >
TopLevelTPCnvBase* ITPConverterFor< TRANS >::m_topConverterRuntime
protectedinherited

top level converter "owning" this TP converter at runtime (different from m_topConverter in case the top-level converter and object have extensions)

Definition at line 302 of file TPConverter.h.

◆ m_wasUsedForReading

template<class TRANS >
bool ITPConverterFor< TRANS >::m_wasUsedForReading
protectedinherited

flag set when using this converter for reading triggers search for a new converter before writing, to prevent possible use of old version

Definition at line 306 of file TPConverter.h.


The documentation for this class was generated from the following files:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
ITPConverter::typeID
virtual const TPObjRef::typeID_t & typeID() const =0
Return TP typeID for persistent objects produced by this converter.
IOVPayloadContainer_p1::m_attrIndexes
std::vector< AttrListIndexes > m_attrIndexes
Definition: IOVPayloadContainer_p1.h:105
TopLevelTPCnvBase::converterForType
ITPConverter * converterForType(const std::type_info &info) const
Find and return a TP converter for a given C++ type info.
Definition: TopLevelTPCnvBase.h:80
TPAbstractPolyCnvBase< TRANS, TRANS, PERS >::m_pStorage
std::vector< PERS > * m_pStorage
the address of the storage vector for persistent representations
Definition: TPConverter.h:579
CondAttrListCollection::end
const_iterator end() const
Definition: CondAttrListCollection.h:315
IOVPayloadContainer_p1::m_short
std::vector< short > m_short
Definition: IOVPayloadContainer_p1.h:110
python.CaloScaleNoiseConfig.TimeStamp
TimeStamp
Definition: CaloScaleNoiseConfig.py:87
IOVPayloadContainer_p1::m_double
std::vector< double > m_double
Definition: IOVPayloadContainer_p1.h:119
IOVPayloadContainer::payloadVec
std::vector< CondAttrListCollection * > payloadVec
Definition: IOVPayloadContainer.h:38
IOVRange
Validity Range object. Holds two IOVTimes (start and stop)
Definition: IOVRange.h:30
CondAttrListCollection::iov_end
iov_const_iterator iov_end() const
Definition: CondAttrListCollection.h:343
ITPConverterFor::m_topConverter
TopLevelTPCnvBase * m_topConverter
top level converter that owns this elemental TP converter it also holds the storage object
Definition: TPConverter.h:299
IOVPayloadContainer_p1::CondAttrListCollection_p1::m_stop
unsigned long long m_stop
Definition: IOVPayloadContainer_p1.h:88
AttrListIndexes
Indexes to attribute name, type name and object value for the persistent storage of an attribute list...
Definition: AttrListIndexes.h:20
TPAbstractPolyCnvBase< TRANS, TRANS, PERS >::toPersistentWithKey_impl
TPObjRef toPersistentWithKey_impl(const TRANS *trans, const std::string &key, MsgStream &log)
Convert transient object to persistent representation.
CondAttrListCollection::minRange
IOVRange minRange() const
Current minimal IOVRange.
Definition: CondAttrListCollection.h:438
TPObjRef::typeID_t::value
unsigned value() const
Returns the type ID as an integer.
Definition: TPObjRef.h:46
IOVPayloadContainer_p1::ATTR_UNSIGNED_INT
@ ATTR_UNSIGNED_INT
Definition: IOVPayloadContainer_p1.h:37
IOVPayloadContainer_p1::m_unsignedLongLong
std::vector< unsigned long long > m_unsignedLongLong
Definition: IOVPayloadContainer_p1.h:117
IOVPayloadContainer_p1::m_unsignedInt
std::vector< unsigned int > m_unsignedInt
Definition: IOVPayloadContainer_p1.h:113
IOVPayloadContainer_p1::ATTR_UNSIGNED_LONG
@ ATTR_UNSIGNED_LONG
Definition: IOVPayloadContainer_p1.h:39
CondAttrListCollection::addNewStop
void addNewStop(const IOVTime &stop)
Add new stop time to minRange - make sure that stop is <= to new stop
Definition: CondAttrListCollection.h:518
index
Definition: index.py:1
TPPolyCnvBase< TRANS, TRANS, PERS >::createTransient
virtual TRANS * createTransient(const PERS *persObj, MsgStream &log)
Create transient representation of a persistent object.
mergePhysValFiles.start
start
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:14
IOVRange::start
const IOVTime & start() const
Definition: IOVRange.h:38
IOVPayloadContainer_p1::m_float
std::vector< float > m_float
Definition: IOVPayloadContainer_p1.h:118
IOVTime::timestamp
uint64_t timestamp() const noexcept
Definition: IOVTime.h:108
skel.it
it
Definition: skel.GENtoEVGEN.py:423
IOVPayloadContainer_p1::m_long
std::vector< long > m_long
Definition: IOVPayloadContainer_p1.h:114
IOVTime::re_time
uint64_t re_time() const noexcept
Definition: IOVTime.h:107
IOVPayloadContainer_p1::ATTR_FLOAT
@ ATTR_FLOAT
Definition: IOVPayloadContainer_p1.h:42
IOVPayloadContainer_p1::CondAttrListCollection_p1::m_start
unsigned long long m_start
Definition: IOVPayloadContainer_p1.h:87
TopLevelTPCnvBase::converterForRef
ITPConverter * converterForRef(const TPObjRef &ref) const
Find and return a TP converter for persistent type referenced by ref.
Definition: TopLevelTPCnvBase.h:89
CondAttrListCollection::begin
const_iterator begin() const
Access to Chan/AttributeList pairs via iterators.
Definition: CondAttrListCollection.h:309
IOVPayloadContainer_p1::ATTR_LONG
@ ATTR_LONG
Definition: IOVPayloadContainer_p1.h:38
CondAttrListCollection::addNewStart
void addNewStart(const IOVTime &start)
Add new start time to minRange - make sure that start is >= to new start.
Definition: CondAttrListCollection.h:508
TPPolyCnvBase< TRANS, TRANS, PERS >::createTransientWithKey
virtual TRANS * createTransientWithKey(const PERS *persObj, const std::string &key, MsgStream &log)
Create transient representation of a persistent object, with SG key.
IOVPayloadContainer_p1::ATTR_INT
@ ATTR_INT
Definition: IOVPayloadContainer_p1.h:36
PixelModuleFeMask_create_db.stop
int stop
Definition: PixelModuleFeMask_create_db.py:76
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
IOVPayloadContainer_p1::ATTR_LONG_DOUBLE
@ ATTR_LONG_DOUBLE
Definition: IOVPayloadContainer_p1.h:44
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number....
Definition: CondAttrListCollection.h:52
IOVPayloadContainer_p1::ATTR_UNSIGNED_LONG_LONG
@ ATTR_UNSIGNED_LONG_LONG
Definition: IOVPayloadContainer_p1.h:41
TPAbstractPolyCnvBase< TRANS, TRANS, PERS >::m_ignoreRecursion
bool m_ignoreRecursion
if true, do not throw errors in case of recursion.
Definition: TPConverter.h:588
ITPConverterFor::topConverter
virtual TopLevelTPCnvBase * topConverter()
return the top-level converter for this elemental TP converter
Definition: TPConverter.h:191
TPObjRef
Definition: TPObjRef.h:20
CondAttrListCollection::iov_const_iterator
ChanIOVMap::const_iterator iov_const_iterator
Definition: CondAttrListCollection.h:66
IOVPayloadContainer::size
size_type size() const
size of payload vector
Definition: IOVPayloadContainer.h:121
MuonValidation_CreateSlides_config.Date
string Date
Definition: MuonValidation_CreateSlides_config.py:26
TPAbstractPolyCnvBase< TRANS, TRANS, PERS >::transToPers
virtual void transToPers(const TRANS *transObj, PERS *persObj, MsgStream &log)=0
Convert transient representation to persistent one.
ITPConverterFor::m_wasUsedForReading
bool m_wasUsedForReading
flag set when using this converter for reading triggers search for a new converter before writing,...
Definition: TPConverter.h:306
IOVPayloadContainer_p1::CondAttrListEntry_p1
Definition: IOVPayloadContainer_p1.h:63
IOVRange::stop
const IOVTime & stop() const
Definition: IOVRange.h:39
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
IOVPayloadContainer::begin
const_iterator begin() const
Begin of payload vector.
Definition: IOVPayloadContainer.h:107
IOVTime
Basic time unit for IOVSvc. Hold time as a combination of run and event numbers.
Definition: IOVTime.h:33
IOVPayloadContainer_p1::CondAttrListCollection_p1
Definition: IOVPayloadContainer_p1.h:74
IOVPayloadContainer_p1::m_char
std::vector< char > m_char
Definition: IOVPayloadContainer_p1.h:108
IOVPayloadContainer_p1::ATTR_LONG_LONG
@ ATTR_LONG_LONG
Definition: IOVPayloadContainer_p1.h:40
IOVPayloadContainer_p1::ATTR_DOUBLE
@ ATTR_DOUBLE
Definition: IOVPayloadContainer_p1.h:43
AttrListIndexes::typeIndex
unsigned short typeIndex() const
Index into the type name vector.
Definition: AttrListIndexes.h:96
IOVPayloadContainer_p1::m_attrName
std::vector< std::string > m_attrName
Definition: IOVPayloadContainer_p1.h:126
ITPConverterFor::converterForType
CNV * converterForType(CNV *cnv, const std::type_info &t_info, MsgStream &log) const
Find converter for a given C++ type ID, that is or ihnerits from CNV type.
Definition: TPConverter.h:58
IOVPayloadContainer_p1::m_longLong
std::vector< long long > m_longLong
Definition: IOVPayloadContainer_p1.h:116
IOVPayloadContainer_p1::m_attrType
std::vector< unsigned int > m_attrType
Definition: IOVPayloadContainer_p1.h:127
IOVPayloadContainerCnv_p1::attrNameMapValue_t
std::map< std::string, unsigned int >::value_type attrNameMapValue_t
Definition: IOVPayloadContainerCnv_p1.h:45
ReadCellNoiseFromCool.chan
chan
Definition: ReadCellNoiseFromCool.py:52
IOVPayloadContainer_p1::m_string
std::vector< std::string > m_string
Definition: IOVPayloadContainer_p1.h:121
IOVPayloadContainer_p1::ATTR_UNSIGNED_CHAR
@ ATTR_UNSIGNED_CHAR
Definition: IOVPayloadContainer_p1.h:33
ITPConverterFor::m_pStorageTID
TPObjRef::typeID_t m_pStorageTID
TP Ref typeID for the persistent objects this converter is creating.
Definition: TPConverter.h:292
IOVPayloadContainer_p1::ATTR_UNSIGNED_SHORT
@ ATTR_UNSIGNED_SHORT
Definition: IOVPayloadContainer_p1.h:35
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
python.subdetectors.mmg.names
names
Definition: mmg.py:8
IOVPayloadContainer_p1::ATTR_DATE
@ ATTR_DATE
Definition: IOVPayloadContainer_p1.h:47
IOVPayloadContainerCnv_p1::fillPersAttrSpec
void fillPersAttrSpec(const IOVPayloadContainer *transObj, IOVPayloadContainer_p1 *persObj, MsgStream &log)
Definition: IOVPayloadContainerCnv_p1.cxx:342
IOVPayloadContainer_p1::m_unsignedShort
std::vector< unsigned short > m_unsignedShort
Definition: IOVPayloadContainer_p1.h:111
master.flag
bool flag
Definition: master.py:29
IOVPayloadContainer_p1::ATTR_SHORT
@ ATTR_SHORT
Definition: IOVPayloadContainer_p1.h:34
IOVTime::isRunEvent
bool isRunEvent() const noexcept
Definition: IOVTime.h:113
IOVPayloadContainerCnv_p1::m_objIndexOffset
unsigned int m_objIndexOffset[IOVPayloadContainer_p1::ATTR_TIME_STAMP+1]
Definition: IOVPayloadContainerCnv_p1.h:52
TPAbstractPolyCnvBase< TRANS, TRANS, PERS >::persToTransWithKey
virtual void persToTransWithKey(const PERS *persObj, TRANS *transObj, const std::string &, MsgStream &log)
Convert persistent representation to transient one.
Definition: TPConverter.h:376
IOVPayloadContainer::m_payloadVec
payloadVec m_payloadVec
Definition: IOVPayloadContainer.h:97
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
IOVPayloadContainer_p1::m_date
std::vector< unsigned long long > m_date
Definition: IOVPayloadContainer_p1.h:122
ITPConverterFor::m_topConverterRuntime
TopLevelTPCnvBase * m_topConverterRuntime
top level converter "owning" this TP converter at runtime (different from m_topConverter in case the ...
Definition: TPConverter.h:302
CondAttrListCollection::chanName
const std::string & chanName(ChanNum chanNum) const
find name for particular channel
Definition: CondAttrListCollection.h:426
IOVPayloadContainer_p1::CondAttrListCollection_p1::m_attrLists
std::vector< CondAttrListEntry_p1 > m_attrLists
Definition: IOVPayloadContainer_p1.h:81
IOVPayloadContainerCnv_p1::fillAttributeData
void fillAttributeData(unsigned int attrName, unsigned int attrType, const coral::Attribute &attr, IOVPayloadContainer_p1 *persObj, MsgStream &log)
Definition: IOVPayloadContainerCnv_p1.cxx:451
ITPConverterFor::converterForRef
CNV * converterForRef(CNV *cnv, const TPObjRef &ref, MsgStream &log) const
Find converter for a TP type ID (passed in a TP Ref), that is or ihnerits from CNV type.
Definition: TPConverter.h:74
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
PERS
RpcSectorLogicContainer_p1 PERS
Definition: RpcSectorLogicContainerCnv.h:13
RpcSectorLogicContainer_p1
Class to represent.
Definition: RpcSectorLogicContainer_p1.h:19
AttrListIndexes::nameIndex
unsigned short nameIndex() const
Index into attribute name vector.
Definition: AttrListIndexes.h:89
IOVPayloadContainer_p1::ATTR_BOOL
@ ATTR_BOOL
Definition: IOVPayloadContainer_p1.h:31
TPAbstractPolyCnvBase< TRANS, TRANS, PERS >::transToPersWithKey
virtual void transToPersWithKey(const TRANS *transObj, PERS *persObj, const std::string &, MsgStream &log)
Convert transient representation to persistent one.
Definition: TPConverter.h:392
CondAttrListCollection::size
size_type size() const
number of Chan/AttributeList pairs
Definition: CondAttrListCollection.h:322
IOVPayloadContainerCnv_p1::m_attributeTypes
std::vector< std::string > m_attributeTypes
Definition: IOVPayloadContainerCnv_p1.h:50
ITPConverterFor::initPrivateConverters
virtual void initPrivateConverters(TopLevelTPCnvBase *)
Definition: TPConverter.h:187
TPAbstractPolyCnvBase< TRANS, TRANS, PERS >::m_recursive
bool m_recursive
if true, work in recursion-safe way (slower)
Definition: TPConverter.h:585
python.PoolAttributeHelper.attrName
attrName
Definition: PoolAttributeHelper.py:100
IOVPayloadContainer_p1::ATTR_CHAR
@ ATTR_CHAR
Definition: IOVPayloadContainer_p1.h:32
ITPConverterFor::m_pStorageTIDvalue
unsigned m_pStorageTIDvalue
m_pStorageTID converted to integer value
Definition: TPConverter.h:295
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
CondAttrListCollection::const_iterator
ChanAttrListMap::const_iterator const_iterator
Definition: CondAttrListCollection.h:63
IOVPayloadContainer::const_iterator
payloadVec::const_iterator const_iterator
Definition: IOVPayloadContainer.h:39
ref
const boost::regex ref(r_ef)
IOVPayloadContainerCnv_p1::m_attrNameMap
std::map< std::string, unsigned int > m_attrNameMap
Definition: IOVPayloadContainerCnv_p1.h:46
TPAbstractPolyCnvBase< TRANS, TRANS, PERS >::persToTrans
virtual void persToTrans(const PERS *persObj, TRANS *transObj, MsgStream &log)=0
Convert persistent representation to transient one.
DEBUG
#define DEBUG
Definition: page_access.h:11
IOVPayloadContainer::end
const_iterator end() const
End of payload vector.
Definition: IOVPayloadContainer.h:114
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
IOVPayloadContainer_p1::ATTR_STRING
@ ATTR_STRING
Definition: IOVPayloadContainer_p1.h:45
ReadCalibFromCool.typeName
typeName
Definition: ReadCalibFromCool.py:477
IOVPayloadContainer_p1::m_unsignedLong
std::vector< unsigned long > m_unsignedLong
Definition: IOVPayloadContainer_p1.h:115
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
IOVPayloadContainerCnv_p1::fillAttributeTypeMap
void fillAttributeTypeMap()
Definition: IOVPayloadContainerCnv_p1.cxx:406
IOVPayloadContainer_p1::m_unsignedChar
std::vector< unsigned char > m_unsignedChar
Definition: IOVPayloadContainer_p1.h:109
IOVPayloadContainer_p1::ATTR_BLOB
@ ATTR_BLOB
Definition: IOVPayloadContainer_p1.h:46
ITPConverter
Definition: TPTools/TPTools/ITPConverter.h:32
ITPConverter::converterNotFound
virtual void converterNotFound(const std::type_info &converterType, ITPConverter *c, const std::string &typeName, MsgStream &log) const
method called when the right TP converter was not found during writing
Definition: ITPConverter.cxx:22
IOVPayloadContainer_p1::m_int
std::vector< int > m_int
Definition: IOVPayloadContainer_p1.h:112
TPObjRef::typeID
unsigned typeID() const
returns the type ID (as integer) of the referenced object
Definition: TPObjRef.h:71
IOVPayloadContainer_p1::m_payloadVec
std::vector< CondAttrListCollection_p1 > m_payloadVec
Definition: IOVPayloadContainer_p1.h:102
CondAttrListCollection::chanIOVPair
iov_const_iterator chanIOVPair(ChanNum chanNum) const
Access to Chan/IOV pairs via channel number: returns map iterator.
Definition: CondAttrListCollection.h:330
IOVPayloadContainer_p1::CondAttrListCollection_p1::m_hasRunLumiBlockTime
bool m_hasRunLumiBlockTime
Definition: IOVPayloadContainer_p1.h:89
CondAttrListCollection::add
bool add(ChanNum chanNum, const AttributeList &attributeList)
Adding in chan/attrList pairs.
Definition: CondAttrListCollection.h:452
python.compressB64.c
def c
Definition: compressB64.py:93
IOVPayloadContainerCnv_p1::m_attributeTypeMap
std::map< std::string, unsigned int > m_attributeTypeMap
Definition: IOVPayloadContainerCnv_p1.h:49
IOVPayloadContainer_p1::ATTR_TIME_STAMP
@ ATTR_TIME_STAMP
Definition: IOVPayloadContainer_p1.h:48
IOVPayloadContainer_p1::m_bool
std::vector< bool > m_bool
Definition: IOVPayloadContainer_p1.h:107
TPAbstractPolyCnvBase< TRANS, TRANS, PERS >::m_curRecLevel
int m_curRecLevel
count recursive invocations, to detect recursion
Definition: TPConverter.h:582
IOVPayloadContainer_p1::m_timeStamp
std::vector< unsigned long long > m_timeStamp
Definition: IOVPayloadContainer_p1.h:123
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37