ATLAS Offline Software
AlignableTransformContainerCnv.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
13 
14 
16  MsgStream log(msgSvc(), "AlignableTransformContainerCnv" );
18  AlignableTransform_PERS* persObj = cnv.createPersistent( transObj, log );
19  if (log.level()<=MSG::DEBUG) log << MSG::DEBUG << "AlignableTransformContainer write a new AlignableTransform_PERS " << endmsg;
20  return persObj;
21 }
22 
24  MsgStream log(msgSvc(), "AlignableTransformContainerCnv" );
25  static const pool::Guid p1_guid("BA1A841C-8D92-45AE-9AD1-9AF7A1736844");
26  static const pool::Guid p0_guid("E779C6B5-3F2A-473E-B35E-6CCB345E0665");
27  if( compareClassGuid(p1_guid) ) {
28  // using unique_ptr ensures deletion of the persistent object
29  if (log.level()<=MSG::DEBUG) log << MSG::DEBUG << "AlignableTransformContainer read p1" << endmsg;
30  std::unique_ptr< AlignableTransform_p1 > col_vect( poolReadObject< AlignableTransform_p1 >() );
32  return cnv.createTransient( col_vect.get(), log );
33  }
34  else if( compareClassGuid(p0_guid) ) {
35  // regular object from before TP separation, just return it
36  if (log.level()<=MSG::DEBUG) log << MSG::DEBUG << "AlignableTransformContainer read p0" << endmsg;
37  return this->poolReadObject<AlignableTransform>();
38  }
39  throw std::runtime_error("Unsupported persistent version of AlignableTransformContainer");
40 }
41 
42 
44 {
46 }
47 
TPPolyCnvBase::createTransient
virtual TRANS * createTransient(const PERS *persObj, MsgStream &log)
Create transient representation of a persistent object.
TPAbstractPolyCnvBase::createPersistent
virtual PERS * createPersistent(const TRANS *transObj, MsgStream &log)
Create persistent representation of a transient object.
AlignableTransformContainerCnv.h
Generated header file which defines a typedef for templated converter class.
pool::Guid
::Guid Guid
Definition: T_AthenaPoolCustCnv.h:19
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AlignableTransformContainerCnv::createPersistent
virtual AlignableTransform_PERS * createPersistent(AlignableTransform_TRANS *transObj)
Definition: AlignableTransformContainerCnv.cxx:15
AlignableTransform_p1
Definition: AlignableTransform_p1.h:16
AlignableTransformContainerCnv::initialize
virtual StatusCode initialize()
Gaudi Service Interface method implementations:
Definition: AlignableTransformContainerCnv.cxx:43
DEBUG
#define DEBUG
Definition: page_access.h:11
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
AlignableTransform_TRANS
AlignableTransformContainer::base_value_type AlignableTransform_TRANS
Definition: AlignableTransformContainerCnv.h:19
T_AthenaPoolCustCnv< COLL_T, ELEM_T >::compareClassGuid
virtual bool compareClassGuid(const Guid &clid) const
Compare POOL class GUID with the one of the object being read.
AlignableTransformCnv_p1.h
T_AthenaPoolCustCnv< COLL_T, ELEM_T >::initialize
virtual StatusCode initialize()
Gaudi Service Interface method implementations:
AlignableTransformContainerCnv::createTransient
virtual AlignableTransform_TRANS * createTransient()
method to be implemented by the developer.
Definition: AlignableTransformContainerCnv.cxx:23
AlignableTransformCnv_p1
Definition: AlignableTransformCnv_p1.h:13