ATLAS Offline Software
LArDigitContainerCnv.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "LArDigitContainerCnv.h"
14 #include <memory>
15 
16 
18  LArDigitContainerCnvBase(svcLoc, "LArDigitContainerCnv"),
19  m_storeGateSvc("StoreGateSvc", "LArDigitContainerCnv")
20 {}
21 
22 
24 
25  const LArOnlineID* idHelper=nullptr;
26  ATH_CHECK( detStore()->retrieve(idHelper,"LArOnlineID") );
27  m_idHelper=idHelper;//cast to base-class
28 
29  const LArOnline_SuperCellID* idSCHelper=nullptr;
30  ATH_CHECK( detStore()->retrieve(idSCHelper,"LArOnline_SuperCellID") );
31  m_idSCHelper=idSCHelper;//cast to base-class
32 
33  ATH_CHECK( m_storeGateSvc.retrieve() );
34 
36 }
37 
38 
40  ATH_MSG_DEBUG("Writing LArDigitContainer_p3");
43  converter.transToPers(trans, pers, msg());
44  return pers;
45 }
46 
47 
49 
50  constexpr pool::Guid p0_guid("B15FFDA0-206D-4062-8B5F-582A1ECD5502");
51  constexpr pool::Guid p1_guid("F1876026-CDFE-4110-AA59-E441BAA5DE44");
52  constexpr pool::Guid p2_guid("66F5B7AF-595C-4F79-A2B7-56590777C313");
53  constexpr pool::Guid p3_guid("24480EBA-1AF1-4646-95A7-11285F09717C");
54 
55  if (compareClassGuid(p0_guid)) {
56  ATH_MSG_DEBUG("Read version p0 of LArDigitContainer. GUID=" << m_classID.toString());
57  return poolReadObject<LArDigitContainer>();
58  }
59  else if (compareClassGuid(p1_guid)) {
60  ATH_MSG_DEBUG("Reading LArDigitContainer_p1. GUID=" << m_classID.toString());
62  std::unique_ptr<LArDigitContainer_p1> pers(poolReadObject<LArDigitContainer_p1>());
63  LArDigitContainerCnv_p1 converter;
64  converter.persToTrans(pers.get(), trans, msg());
65  return trans;
66  }
67  else if (compareClassGuid(p2_guid)) {
68  ATH_MSG_DEBUG("Reading LArDigitContainer_p2. GUID=" << m_classID.toString());
70  std::unique_ptr<LArDigitContainer_p2> pers(poolReadObject<LArDigitContainer_p2>());
72  converter.persToTrans(pers.get(), trans, msg());
73  return trans;
74  }
75  else if (compareClassGuid(p3_guid)) {
76  ATH_MSG_DEBUG("Reading LArDigitContainer_p3. GUID=" << m_classID.toString());
78  std::unique_ptr<LArDigitContainer_p3> pers(poolReadObject<LArDigitContainer_p3>());
80  converter.persToTrans(pers.get(), trans, msg());
81  return trans;
82  }
83  ATH_MSG_ERROR("Unsupported persistent version of LArDigitContainer. GUID=" << m_classID.toString());
84  throw std::runtime_error("Unsupported persistent version of Data Collection");
85  // not reached
86 }
LArDigitContainerCnv_p3::transToPers
virtual void transToPers(const LArDigitContainer *trans, LArDigitContainer_p3 *pers, MsgStream &log) const override
Definition: LArDigitContainerCnv_p3.cxx:82
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
LArDigitContainerCnv_p2::persToTrans
virtual void persToTrans(const LArDigitContainer_p2 *pers, LArDigitContainer *trans, MsgStream &log) const override
Definition: LArDigitContainerCnv_p2.cxx:37
T_AthenaPoolCustCnv::m_classID
Guid m_classID
Definition: T_AthenaPoolCustCnv.h:96
LArDigitContainerCnv_p1.h
LArDigitContainerCnv_p3
Definition: LArDigitContainerCnv_p3.h:17
LArDigitContainerCnv.h
LArDigitContainerCnv_p1
Definition: LArDigitContainerCnv_p1.h:16
LArDigitContainerCnv::LArDigitContainerCnv
LArDigitContainerCnv(ISvcLocator *)
Definition: LArDigitContainerCnv.cxx:17
LArDigitContainerCnv::initialize
StatusCode initialize()
Gaudi Service Interface method implementations:
Definition: LArDigitContainerCnv.cxx:23
LArDigitContainerCnv::createTransient
virtual LArDigitContainer * createTransient()
Definition: LArDigitContainerCnv.cxx:48
pool::Guid
::Guid Guid
Definition: T_AthenaPoolCustCnv.h:19
LArDigitContainerCnv_p3::persToTrans
virtual void persToTrans(const LArDigitContainer_p3 *pers, LArDigitContainer *trans, MsgStream &log) const override
Definition: LArDigitContainerCnv_p3.cxx:43
Guid::toString
constexpr void toString(std::span< char, StrLen > buf, bool uppercase=true) const noexcept
Automatic conversion to string representation.
LArDigitContainer_p3.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LArDigitContainerCnv::createPersistent
virtual LArDigitContainerPERS * createPersistent(LArDigitContainer *)
Definition: LArDigitContainerCnv.cxx:39
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
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
LArDigitContainerPERS
LArDigitContainer_p3 LArDigitContainerPERS
Definition: LArDigitContainerCnv.h:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LArDigitContainer_p2.h
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
LArDigitContainerCnv::m_storeGateSvc
ServiceHandle< StoreGateSvc > m_storeGateSvc
Definition: LArDigitContainerCnv.h:32
LArDigitContainer_p1.h
LArOnlineID
Definition: LArOnlineID.h:21
LArOnline_SuperCellID
Definition: LArOnline_SuperCellID.h:21
LArDigitContainerCnv_p1::persToTrans
virtual void persToTrans(const LArDigitContainer_p1 *pers, LArDigitContainer *trans, MsgStream &log) const override
Definition: LArDigitContainerCnv_p1.cxx:13
LArDigitContainerCnv_p2.h
LArDigitContainerCnv_p3.h
LArDigitContainerCnv::m_idHelper
const LArOnlineID_Base * m_idHelper
Definition: LArDigitContainerCnv.h:30
LArDigitContainer
Container class for LArDigit.
Definition: LArDigitContainer.h:24
LArOnline_SuperCellID.h
LArDigitContainerCnv::m_idSCHelper
const LArOnlineID_Base * m_idSCHelper
Definition: LArDigitContainerCnv.h:31
T_AthenaPoolCustCnv::compareClassGuid
virtual bool compareClassGuid(const Guid &clid) const
Compare POOL class GUID with the one of the object being read.
LArDigitContainer_p3
Definition: LArDigitContainer_p3.h:10
T_AthenaPoolCustCnv::initialize
virtual StatusCode initialize()
Gaudi Service Interface method implementations:
LArOnlineID.h
LArDigitContainerCnv_p2
Definition: LArDigitContainerCnv_p2.h:16