ATLAS Offline Software
STGC_RawDataContainerCnv.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
8 
11 {
12 }
13 
15 
17  // Call base clase initialize
18  if( !STGC_RawDataContainerCnvBase::initialize().isSuccess() )
19  return StatusCode::FAILURE;
20 
21  // Get the messaging service, print where you are
22  MsgStream log(msgSvc(), "STGC_RawDataContainerCnv");
23  if (log.level() <= MSG::INFO) log << MSG::INFO << "STGC_RawDataContainerCnv::initialize()" << endmsg;
24 
25  // get DetectorStore service
26  ISvcLocator* svcLocator = Gaudi::svcLocator();
27 
29  StatusCode sc = svcLocator->service("DetectorStore", detStore);
30  if (sc.isFailure()) {
31  log << MSG::FATAL << "DetectorStore service not found !" << endmsg;
32  return StatusCode::FAILURE;
33  } else {
34  if (log.level() <= MSG::DEBUG) log << MSG::DEBUG << "Found DetectorStore." << endmsg;
35  }
36 
37  // Get the helper from the detector store
38  const sTgcIdHelper *idHelper;
39  sc = detStore->retrieve(idHelper);
40  if (sc.isFailure()) {
41  log << MSG::FATAL << "Could not get ID helper !" << endmsg;
42  return StatusCode::FAILURE;
43  } else {
44  m_TPConverter_p1.initialize(idHelper);
45  m_TPConverter_p2.initialize(idHelper);
46  m_TPConverter_p3.initialize(idHelper);
47  if (log.level() <= MSG::DEBUG) log << MSG::DEBUG << "Found the ID helper and passed to the TP convertor." << endmsg;
48  }
49 
50  return StatusCode::SUCCESS;
51 }
52 
54  MsgStream log(msgSvc(), "STGC_RawDataContainerCnv" );
55  if (log.level() <= MSG::DEBUG) log<<MSG::DEBUG<<"createPersistent(): main converter"<<endmsg;
56  return m_TPConverter_p3.createPersistent( transCont, log );
57 }
58 
61 {
62  using namespace Muon;
63  MsgStream log(msgSvc(), "STGC_RawDataContainerCnv" );
64 
65  STGC_RawDataContainer *transCont = nullptr;
66  static const pool::Guid p3_guid("693ACD72-6796-4251-A932-9ABAF679A2B3");
67  static const pool::Guid p2_guid("F66FDF31-1BFD-43DE-B793-93635D98597E");
68  static const pool::Guid p1_guid("E9229710-DB8A-447E-9546-4BAB079C7547");
69 
70  if( compareClassGuid(p3_guid) ) {
71  std::unique_ptr< STGC_RawDataContainer_p3 > cont( this->poolReadObject<STGC_RawDataContainer_p3>() );
72  const STGC_RawDataContainer_p3* constCont = cont.get();
73  transCont = m_TPConverter_p3.createTransient( constCont, log );
74 
75  } else if( compareClassGuid(p2_guid) ) {
76  std::unique_ptr< STGC_RawDataContainer_p2 > cont( this->poolReadObject<STGC_RawDataContainer_p2>() );
77  const STGC_RawDataContainer_p2* constCont = cont.get();
78  transCont = m_TPConverter_p2.createTransient( constCont, log );
79 
80  } else if( compareClassGuid(p1_guid) ) {
81  std::unique_ptr< STGC_RawDataContainer_p1 > cont( this->poolReadObject<STGC_RawDataContainer_p1>() );
82  const STGC_RawDataContainer_p1* constCont = cont.get();
83  transCont = m_TPConverter_p1.createTransient( constCont, log );
84  // virtual Muon::STGC_RawDataContainer* createTransient(const Muon::STGC_RawDataContainer_p1* persObj, MsgStream& log) override final;
85 
86  } else {
87  throw std::runtime_error("Unsupported persistent version of STGC Raw Data (RDO) container");
88  }
89  return transCont;
90 }
STGC_RawDataContainerCnv::createTransient
virtual Muon::STGC_RawDataContainer * createTransient()
Definition: STGC_RawDataContainerCnv.cxx:60
Muon::STGC_RawDataContainerCnv_p2::initialize
void initialize(const sTgcIdHelper *idHelper)
Definition: STGC_RawDataContainerCnv_p2.cxx:74
Muon::STGC_RawDataContainer_p3
Definition: STGC_RawDataContainer_p3.h:14
STGC_RawDataContainerCnv::m_TPConverter_p1
Muon::STGC_RawDataContainerCnv_p1 m_TPConverter_p1
Definition: STGC_RawDataContainerCnv.h:33
sTgcIdHelper.h
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
STGC_RawDataContainerCnv::~STGC_RawDataContainerCnv
virtual ~STGC_RawDataContainerCnv()
STGC_RawDataContainerCnv.h
Muon::STGC_RawDataContainer_p2
Definition: STGC_RawDataContainer_p2.h:14
Muon::STGC_RawDataContainer
Definition: STGC_RawDataContainer.h:18
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
STGC_RawDataContainerCnv::STGC_RawDataContainerCnv
STGC_RawDataContainerCnv(ISvcLocator *svcloc)
Definition: STGC_RawDataContainerCnv.cxx:9
TPAbstractPolyCnvBase::createPersistent
virtual PERS * createPersistent(const TRANS *transObj, MsgStream &log)
Create persistent representation of a transient object.
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Muon::STGC_RawDataContainerCnv_p2::createTransient
virtual Muon::STGC_RawDataContainer * createTransient(const Muon::STGC_RawDataContainer_p2 *persObj, MsgStream &log) override final
Definition: STGC_RawDataContainerCnv_p2.cxx:63
Muon::STGC_RawDataContainer_p1
Definition: STGC_RawDataContainer_p1.h:14
pool::Guid
::Guid Guid
Definition: T_AthenaPoolCustCnv.h:19
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
T_AthenaPoolCustomCnv
Compatibility for old converter classes that don't get passed the key.
Definition: T_AthenaPoolCustomCnv.h:132
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
STGC_RawDataContainerCnv::createPersistent
virtual STGC_RawDataContainer_PERS * createPersistent(Muon::STGC_RawDataContainer *transCont)
Definition: STGC_RawDataContainerCnv.cxx:53
STGC_RawDataContainerCnv::m_TPConverter_p2
Muon::STGC_RawDataContainerCnv_p2 m_TPConverter_p2
Definition: STGC_RawDataContainerCnv.h:34
Muon::STGC_RawDataContainerCnv_p3::createTransient
virtual Muon::STGC_RawDataContainer * createTransient(const Muon::STGC_RawDataContainer_p3 *persObj, MsgStream &log) override final
Definition: STGC_RawDataContainerCnv_p3.cxx:63
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
STGC_RawDataContainerCnv::initialize
virtual StatusCode initialize()
Gaudi Service Interface method implementations:
Definition: STGC_RawDataContainerCnv.cxx:16
sTgcIdHelper
Definition: sTgcIdHelper.h:55
Muon::STGC_RawDataContainerCnv_p1::createTransient
virtual Muon::STGC_RawDataContainer * createTransient(const Muon::STGC_RawDataContainer_p1 *persObj, MsgStream &log) override final
Definition: STGC_RawDataContainerCnv_p1.cxx:63
Muon::STGC_RawDataContainerCnv_p1::initialize
void initialize(const sTgcIdHelper *idHelper)
Definition: STGC_RawDataContainerCnv_p1.cxx:74
DEBUG
#define DEBUG
Definition: page_access.h:11
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
Muon::STGC_RawDataContainerCnv_p3::initialize
void initialize(const sTgcIdHelper *idHelper)
Definition: STGC_RawDataContainerCnv_p3.cxx:74
T_AthenaPoolCustCnv::compareClassGuid
virtual bool compareClassGuid(const Guid &clid) const
Compare POOL class GUID with the one of the object being read.
T_AthenaPoolCustCnv::initialize
virtual StatusCode initialize()
Gaudi Service Interface method implementations:
StoreGateSvc.h
STGC_RawDataContainerCnv::m_TPConverter_p3
Muon::STGC_RawDataContainerCnv_p3 m_TPConverter_p3
Definition: STGC_RawDataContainerCnv.h:35