ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArCnv
LArAthenaPool
src
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
"
6
#include "
LArTPCnv/LArDigitContainer_p1.h
"
7
#include "
LArTPCnv/LArDigitContainer_p2.h
"
8
#include "
LArTPCnv/LArDigitContainer_p3.h
"
9
#include "
LArTPCnv/LArDigitContainerCnv_p1.h
"
10
#include "
LArTPCnv/LArDigitContainerCnv_p2.h
"
11
#include "
LArTPCnv/LArDigitContainerCnv_p3.h
"
12
#include "
LArIdentifier/LArOnlineID.h
"
13
#include "
LArIdentifier/LArOnline_SuperCellID.h
"
14
#include <memory>
15
16
17
LArDigitContainerCnv::LArDigitContainerCnv
(ISvcLocator* svcLoc) :
18
LArDigitContainerCnvBase
(svcLoc,
"LArDigitContainerCnv"
),
19
m_storeGateSvc
(
"StoreGateSvc"
,
"LArDigitContainerCnv"
)
20
{}
21
22
23
StatusCode
LArDigitContainerCnv::initialize
() {
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
35
return
LArDigitContainerCnvBase::initialize
();
36
}
37
38
39
LArDigitContainerPERS
*
LArDigitContainerCnv::createPersistent
(
LArDigitContainer
* trans) {
40
ATH_MSG_DEBUG
(
"Writing LArDigitContainer_p3"
);
41
LArDigitContainerPERS
* pers=
new
LArDigitContainerPERS
();
42
LArDigitContainerCnv_p3
converter(
m_idHelper
,
m_idSCHelper
,
m_storeGateSvc
.get());
43
converter.
transToPers
(trans, pers,
msg
());
44
return
pers;
45
}
46
47
48
LArDigitContainer
*
LArDigitContainerCnv::createTransient
(
const
Token
* token) {
49
50
constexpr
Guid
p0_guid(
"B15FFDA0-206D-4062-8B5F-582A1ECD5502"
);
51
constexpr
Guid
p1_guid(
"F1876026-CDFE-4110-AA59-E441BAA5DE44"
);
52
constexpr
Guid
p2_guid(
"66F5B7AF-595C-4F79-A2B7-56590777C313"
);
53
constexpr
Guid
p3_guid(
"24480EBA-1AF1-4646-95A7-11285F09717C"
);
54
55
if
(
compareClassGuid
(token, p0_guid)) {
56
ATH_MSG_DEBUG
(
"Read version p0 of LArDigitContainer. token="
<< token->
toString
());
57
return
poolReadObject<LArDigitContainer>
(token);
58
}
59
else
if
(
compareClassGuid
(token, p1_guid)) {
60
ATH_MSG_DEBUG
(
"Reading LArDigitContainer_p1. token="
<< token->
toString
());
61
LArDigitContainer
* trans=
new
LArDigitContainer
();
62
std::unique_ptr<LArDigitContainer_p1> pers(
poolReadObject<LArDigitContainer_p1>
(token));
63
LArDigitContainerCnv_p1
converter;
64
converter.
persToTrans
(pers.get(), trans,
msg
());
65
return
trans;
66
}
67
else
if
(
compareClassGuid
(token, p2_guid)) {
68
ATH_MSG_DEBUG
(
"Reading LArDigitContainer_p2. token="
<< token->
toString
());
69
LArDigitContainer
* trans=
new
LArDigitContainer
();
70
std::unique_ptr<LArDigitContainer_p2> pers(
poolReadObject<LArDigitContainer_p2>
(token));
71
LArDigitContainerCnv_p2
converter(
m_idHelper
);
72
converter.
persToTrans
(pers.get(), trans,
msg
());
73
return
trans;
74
}
75
else
if
(
compareClassGuid
(token, p3_guid)) {
76
ATH_MSG_DEBUG
(
"Reading LArDigitContainer_p3. token="
<< token->
toString
());
77
LArDigitContainer
* trans=
new
LArDigitContainer
();
78
std::unique_ptr<LArDigitContainer_p3> pers(
poolReadObject<LArDigitContainer_p3>
(token));
79
LArDigitContainerCnv_p3
converter(
m_idHelper
,
m_idSCHelper
,
m_storeGateSvc
.get());
80
converter.
persToTrans
(pers.get(), trans,
msg
());
81
return
trans;
82
}
83
ATH_MSG_ERROR
(
"Unsupported persistent version of LArDigitContainer. token="
<< token->
toString
());
84
throw
std::runtime_error(
"Unsupported persistent version of Data Collection"
);
85
// not reached
86
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
LArDigitContainerCnv.h
LArDigitContainerPERS
LArDigitContainer_p3 LArDigitContainerPERS
Definition
LArDigitContainerCnv.h:17
LArDigitContainerCnvBase
T_AthenaPoolCustomCnv< LArDigitContainer, LArDigitContainerPERS > LArDigitContainerCnvBase
Definition
LArDigitContainerCnv.h:19
LArDigitContainerCnv_p1.h
LArDigitContainerCnv_p2.h
LArDigitContainerCnv_p3.h
LArDigitContainer_p1.h
LArDigitContainer_p2.h
LArDigitContainer_p3.h
LArOnlineID.h
LArOnline_SuperCellID.h
T_AthenaPoolCustomCnv< LArDigitContainer, LArDigitContainerPERS >::msg
MsgStream & msg() const
Definition
AthMessaging.h:167
T_AthenaPoolCustomCnv< LArDigitContainer, LArDigitContainerPERS >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
Definition
AthenaPoolConverter.h:68
Guid
This class provides a encapsulation of a GUID/UUID/CLSID/IID data structure (128 bit number).
Definition
Guid.h:25
LArDigitContainerCnv_p1
Definition
LArDigitContainerCnv_p1.h:16
LArDigitContainerCnv_p1::persToTrans
virtual void persToTrans(const LArDigitContainer_p1 *pers, LArDigitContainer *trans, MsgStream &log) const override
Definition
LArDigitContainerCnv_p1.cxx:13
LArDigitContainerCnv_p2
Definition
LArDigitContainerCnv_p2.h:16
LArDigitContainerCnv_p2::persToTrans
virtual void persToTrans(const LArDigitContainer_p2 *pers, LArDigitContainer *trans, MsgStream &log) const override
Definition
LArDigitContainerCnv_p2.cxx:37
LArDigitContainerCnv_p3
Definition
LArDigitContainerCnv_p3.h:17
LArDigitContainerCnv_p3::persToTrans
virtual void persToTrans(const LArDigitContainer_p3 *pers, LArDigitContainer *trans, MsgStream &log) const override
Definition
LArDigitContainerCnv_p3.cxx:43
LArDigitContainerCnv_p3::transToPers
virtual void transToPers(const LArDigitContainer *trans, LArDigitContainer_p3 *pers, MsgStream &log) const override
Definition
LArDigitContainerCnv_p3.cxx:82
LArDigitContainerCnv::createTransient
virtual LArDigitContainer * createTransient(const Token *token)
Definition
LArDigitContainerCnv.cxx:48
LArDigitContainerCnv::initialize
StatusCode initialize()
Gaudi Service Interface method implementations:
Definition
LArDigitContainerCnv.cxx:23
LArDigitContainerCnv::m_storeGateSvc
ServiceHandle< StoreGateSvc > m_storeGateSvc
Definition
LArDigitContainerCnv.h:32
LArDigitContainerCnv::createPersistent
virtual LArDigitContainerPERS * createPersistent(LArDigitContainer *)
Definition
LArDigitContainerCnv.cxx:39
LArDigitContainerCnv::LArDigitContainerCnv
LArDigitContainerCnv(ISvcLocator *)
Definition
LArDigitContainerCnv.cxx:17
LArDigitContainerCnv::m_idHelper
const LArOnlineID_Base * m_idHelper
Definition
LArDigitContainerCnv.h:30
LArDigitContainerCnv::m_idSCHelper
const LArOnlineID_Base * m_idSCHelper
Definition
LArDigitContainerCnv.h:31
LArDigitContainer
Container class for LArDigit.
Definition
LArDigitContainer.h:24
LArOnlineID
Definition
LArOnlineID.h:21
LArOnline_SuperCellID
Definition
LArOnline_SuperCellID.h:21
T_AthenaPoolCustomCnv< LArDigitContainer, LArDigitContainerPERS >::compareClassGuid
virtual bool compareClassGuid(const Token *token, const Guid &clid) const
T_AthenaPoolCustomCnv< LArDigitContainer, LArDigitContainerPERS >::initialize
virtual StatusCode initialize()
T_AthenaPoolCustomCnv< LArDigitContainer, LArDigitContainerPERS >::poolReadObject
P * poolReadObject(const Token *token)
Token
This class provides a token that identifies in a unique way objects on the persistent storage.
Definition
Token.h:22
Token::toString
const std::string toString() const
Retrieve the string representation of the token.
Definition
Token.cxx:135
Generated on
for ATLAS Offline Software by
1.17.0