ATLAS Offline Software
Loading...
Searching...
No Matches
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
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());
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>());
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}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_DEBUG(x)
LArDigitContainer_p3 LArDigitContainerPERS
T_AthenaPoolCustomCnv< LArDigitContainer, LArDigitContainerPERS > LArDigitContainerCnvBase
virtual void persToTrans(const LArDigitContainer_p1 *pers, LArDigitContainer *trans, MsgStream &log) const override
virtual void persToTrans(const LArDigitContainer_p2 *pers, LArDigitContainer *trans, MsgStream &log) const override
virtual void persToTrans(const LArDigitContainer_p3 *pers, LArDigitContainer *trans, MsgStream &log) const override
virtual void transToPers(const LArDigitContainer *trans, LArDigitContainer_p3 *pers, MsgStream &log) const override
StatusCode initialize()
Gaudi Service Interface method implementations:
ServiceHandle< StoreGateSvc > m_storeGateSvc
virtual LArDigitContainerPERS * createPersistent(LArDigitContainer *)
LArDigitContainerCnv(ISvcLocator *)
virtual LArDigitContainer * createTransient()
const LArOnlineID_Base * m_idHelper
const LArOnlineID_Base * m_idSCHelper
Container class for LArDigit.