ATLAS Offline Software
MM_RawDataContainerCnv.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
8 
9 
11  MM_RawDataContainerCnvBase(svcloc, "MM_RawDataContainerCnv")
12 {
13 }
14 
16 
18  // Call base clase initialize
20 
21  // Get the helper from the detector store
22  const MmIdHelper *idHelper;
23  ATH_CHECK( detStore()->retrieve(idHelper) );
24 
25  m_TPConverter_p1.initialize(idHelper);
26  m_TPConverter_p2.initialize(idHelper);
27  m_TPConverter_p3.initialize(idHelper);
28 
29  return StatusCode::SUCCESS;
30 }
31 
33  return m_TPConverter_p3.createPersistent( transCont, msg() );
34 }
35 
38 {
39  using namespace Muon;
40 
41  MM_RawDataContainer *transCont = nullptr;
42  static const pool::Guid p1_guid("5F202045-CE2C-4AD4-96BA-7DA18053B90F");
43  static const pool::Guid p2_guid("A49EBDAC-A190-4198-95DF-BF75FBBB487F");
44  static const pool::Guid p3_guid("229DDB7E-59D3-4BE5-B3D5-B873EBC5C9AA");
45 
46  if( compareClassGuid(p1_guid) ) {
47  std::unique_ptr< MM_RawDataContainer_p1 > cont( this->poolReadObject<MM_RawDataContainer_p1>() );
48  const MM_RawDataContainer_p1* constCont = cont.get();
49  transCont = m_TPConverter_p1.createTransient( constCont, msg() );
50  }
51  // ----------------------------------------------
52  // p2 has the relBCID included
53  else if( compareClassGuid(p2_guid) ) {
54  std::unique_ptr< MM_RawDataContainer_p2 > cont( this->poolReadObject<MM_RawDataContainer_p2>() );
55  const MM_RawDataContainer_p2* constCont = cont.get();
56  transCont = m_TPConverter_p2.createTransient( constCont, msg() );
57  }
58  // ----------------------------------------------
59  // p3 has timeAndChargeInCounts switch included
60  else if( compareClassGuid(p3_guid) ) {
61  std::unique_ptr< MM_RawDataContainer_p3 > cont( this->poolReadObject<MM_RawDataContainer_p3>() );
62  const MM_RawDataContainer_p3* constCont = cont.get();
63  transCont = m_TPConverter_p3.createTransient( constCont, msg() );
64  }
65  // ----------------------------------------------
66  else {
67  throw std::runtime_error("Unsupported persistent version of MM Raw Data (RDO) container");
68  }
69  return transCont;
70 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
Muon::MM_RawDataContainerCnv_p2::initialize
void initialize(const MmIdHelper *idHelper)
Definition: MM_RawDataContainerCnv_p2.cxx:77
Muon::MM_RawDataContainerCnv_p2::createTransient
virtual Muon::MM_RawDataContainer * createTransient(const Muon::MM_RawDataContainer_p2 *persObj, MsgStream &log) override final
Definition: MM_RawDataContainerCnv_p2.cxx:66
MM_RawDataContainerCnv::MM_RawDataContainerCnv
MM_RawDataContainerCnv(ISvcLocator *svcloc)
Definition: MM_RawDataContainerCnv.cxx:10
Muon::MM_RawDataContainerCnv_p3::createTransient
virtual Muon::MM_RawDataContainer * createTransient(const Muon::MM_RawDataContainer_p3 *persObj, MsgStream &log) override final
Definition: MM_RawDataContainerCnv_p3.cxx:66
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
TPAbstractPolyCnvBase::createPersistent
virtual PERS * createPersistent(const TRANS *transObj, MsgStream &log)
Create persistent representation of a transient object.
Muon::MM_RawDataContainer_p2
Definition: MM_RawDataContainer_p2.h:14
Muon::MM_RawDataContainer
Definition: MM_RawDataContainer.h:18
MM_RawDataContainerCnv::~MM_RawDataContainerCnv
virtual ~MM_RawDataContainerCnv()
MM_RawDataContainerCnv.h
pool::Guid
::Guid Guid
Definition: T_AthenaPoolCustCnv.h:19
Muon::MM_RawDataContainerCnv_p3::initialize
void initialize(const MmIdHelper *idHelper)
Definition: MM_RawDataContainerCnv_p3.cxx:77
T_AthenaPoolCustomCnv
Compatibility for old converter classes that don't get passed the key.
Definition: T_AthenaPoolCustomCnv.h:132
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MmIdHelper.h
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Muon::MM_RawDataContainer_p1
Definition: MM_RawDataContainer_p1.h:14
AthenaPoolConverter::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
Handle to DetectorStore.
Definition: AthenaPoolConverter.h:69
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
MM_RawDataContainerCnv::m_TPConverter_p1
Muon::MM_RawDataContainerCnv_p1 m_TPConverter_p1
Definition: MM_RawDataContainerCnv.h:33
MM_RawDataContainerCnv::createTransient
virtual Muon::MM_RawDataContainer * createTransient()
Definition: MM_RawDataContainerCnv.cxx:37
MM_RawDataContainerCnv::m_TPConverter_p2
Muon::MM_RawDataContainerCnv_p2 m_TPConverter_p2
Definition: MM_RawDataContainerCnv.h:34
MM_RawDataContainerCnv::initialize
virtual StatusCode initialize()
Gaudi Service Interface method implementations:
Definition: MM_RawDataContainerCnv.cxx:17
MmIdHelper
Definition: MmIdHelper.h:54
Muon::MM_RawDataContainerCnv_p1::createTransient
virtual Muon::MM_RawDataContainer * createTransient(const Muon::MM_RawDataContainer_p1 *persObj, MsgStream &log) override final
Definition: MM_RawDataContainerCnv_p1.cxx:66
MM_RawDataContainerCnv::m_TPConverter_p3
Muon::MM_RawDataContainerCnv_p3 m_TPConverter_p3
Definition: MM_RawDataContainerCnv.h:35
MM_RawDataContainerCnv::createPersistent
virtual MM_RawDataContainer_PERS * createPersistent(Muon::MM_RawDataContainer *transCont)
Definition: MM_RawDataContainerCnv.cxx:32
Muon::MM_RawDataContainerCnv_p1::initialize
void initialize(const MmIdHelper *idHelper)
Definition: MM_RawDataContainerCnv_p1.cxx:77
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
Muon::MM_RawDataContainer_p3
Definition: MM_RawDataContainer_p3.h:14