ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
DetectorDescription
DetDescrCnvSvc
src
DetDescrCnvSvc.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// Include files
6
#include "
DetDescrCnvSvc/DetDescrCnvSvc.h
"
7
8
#include "
AthenaBaseComps/AthCheckMacros.h
"
9
#include "
AthenaBaseComps/AthMsgStreamMacros.h
"
10
#include "
DetDescrCnvSvc/DetDescrAddress.h
"
11
#include "
DetDescrCnvSvc/IDetDescrCnvSvc.h
"
12
#include "GaudiKernel/IConversionSvc.h"
13
#include "GaudiKernel/IConverter.h"
14
#include "GaudiKernel/IDataSelector.h"
15
#include "GaudiKernel/IOpaqueAddress.h"
16
#include "GaudiKernel/ISvcLocator.h"
17
#include "
StoreGate/StoreGateSvc.h
"
18
19
// External definitions
20
constexpr
long
DetDescr_StorageType
= 0x44;
21
22
//-------------------------------------------------------------------------
23
25
DetDescrCnvSvc::DetDescrCnvSvc
(
const
std::string &name, ISvcLocator *svc)
26
: ConversionSvc(name, svc,
DetDescr_StorageType
),
27
m_detStore
(
"DetectorStore"
, name)
28
{}
29
30
//-------------------------------------------------------------------------
31
33
DetDescrCnvSvc::~DetDescrCnvSvc
() =
default
;
34
35
//-------------------------------------------------------------------------
36
38
StatusCode
DetDescrCnvSvc::initialize
() {
39
ATH_CHECK
(ConversionSvc::initialize());
40
ATH_MSG_INFO
(
" initializing "
);
41
42
// get DetectorStore service
43
ATH_CHECK
(
m_detStore
.retrieve() );
44
ATH_MSG_INFO
(
"Found DetectorStore service"
);
45
46
// fill in the Addresses for Transient Detector Store objects
47
ATH_MSG_INFO
(
" filling proxies for detector managers "
);
48
49
// Additional CLIDS used as base classes.
50
constexpr
CLID
PixelID_CLID = 2516;
51
constexpr
CLID
LArEM_Base_ID_CLID = 166227018;
52
constexpr
CLID
LArHEC_Base_ID_CLID = 181654777;
53
constexpr
CLID
LArFCAL_Base_ID_CLID = 225948692;
54
constexpr
CLID
LArOnlineID_Base_CLID = 28598761;
55
constexpr
CLID
Tile_Base_ID_CLID = 241188216;
56
constexpr
CLID
CaloCell_Base_ID_CLID = 257140327;
57
constexpr
CLID
JGTowerBase_ID_CLID = 131336095;
58
59
ATH_CHECK
(
addToDetStore
(117659265,
"CaloTTMgr"
));
60
ATH_CHECK
(
addToDetStore
(4548337,
"CaloMgr"
));
61
ATH_CHECK
(
addToDetStore
(241807251,
"CaloSuperCellMgr"
));
62
ATH_CHECK
(
addToDetStore
(125856940,
"CaloIdManager"
));
63
// IdDict:
64
ATH_CHECK
(
addToDetStore
(2411,
"IdDict"
));
65
66
// IdHelpers
67
ATH_CHECK
(
addToDetStore
(164875623,
"AtlasID"
));
68
ATH_CHECK
(
addToDetStore
(2516,
"PixelID"
));
69
ATH_CHECK
(
addToDetStore
(2517,
"SCT_ID"
));
70
71
if
(
m_hasTRT
)
72
ATH_CHECK
(
addToDetStore
(2518,
"TRT_ID"
));
73
74
ATH_CHECK
(
addToDetStore
(131939624,
"PLR_ID"
, {PixelID_CLID}));
75
ATH_CHECK
(
addToDetStore
(79264207,
"HGTD_ID"
));
76
ATH_CHECK
(
addToDetStore
(129452393,
"SiliconID"
));
77
ATH_CHECK
(
addToDetStore
(163583365,
"LArEM_ID"
, {LArEM_Base_ID_CLID}));
78
ATH_CHECK
(
addToDetStore
(99488227,
"LArEM_SuperCell_ID"
, {LArEM_Base_ID_CLID}));
79
ATH_CHECK
(
addToDetStore
(3870484,
"LArHEC_ID"
, {LArHEC_Base_ID_CLID}));
80
ATH_CHECK
(
addToDetStore
(254277678,
"LArHEC_SuperCell_ID"
, {LArHEC_Base_ID_CLID}));
81
ATH_CHECK
(
addToDetStore
(45738051,
"LArFCAL_ID"
, {LArFCAL_Base_ID_CLID}));
82
ATH_CHECK
(
addToDetStore
(12829437,
"LArFCAL_SuperCell_ID"
, {LArFCAL_Base_ID_CLID}));
83
ATH_CHECK
(
addToDetStore
(79264204,
"LArMiniFCAL_ID"
));
84
ATH_CHECK
(
addToDetStore
(158698068,
"LArOnlineID"
, {LArOnlineID_Base_CLID}));
85
ATH_CHECK
(
addToDetStore
(38321944,
"TTOnlineID"
));
86
ATH_CHECK
(
addToDetStore
(115600394,
"LArOnline_SuperCellID"
, {LArOnlineID_Base_CLID}));
87
ATH_CHECK
(
addToDetStore
(27863673,
"LArHVLineID"
));
88
ATH_CHECK
(
addToDetStore
(80757351,
"LArElectrodeID"
));
89
ATH_CHECK
(
addToDetStore
(2901,
"TileID"
, {Tile_Base_ID_CLID}));
90
ATH_CHECK
(
addToDetStore
(49557789,
"Tile_SuperCell_ID"
, {Tile_Base_ID_CLID}));
91
ATH_CHECK
(
addToDetStore
(2902,
"TileHWID"
));
92
ATH_CHECK
(
addToDetStore
(2903,
"TileTBID"
));
93
94
if
(
m_hasMDT
)
95
ATH_CHECK
(
addToDetStore
(4170,
"MDTIDHELPER"
));
96
if
(
m_hasCSC
)
97
ATH_CHECK
(
addToDetStore
(4171,
"CSCIDHELPER"
));
98
99
if
(
m_hasRPC
)
100
ATH_CHECK
(
addToDetStore
(4172,
"RPCIDHELPER"
));
101
if
(
m_hasTGC
)
102
ATH_CHECK
(
addToDetStore
(4173,
"TGCIDHELPER"
));
103
if
(
m_hasSTGC
)
104
ATH_CHECK
(
addToDetStore
(4174,
"STGCIDHELPER"
));
105
if
(
m_hasMM
)
106
ATH_CHECK
(
addToDetStore
(4175,
"MMIDHELPER"
));
107
108
ATH_CHECK
(
addToDetStore
(108133391,
"CaloLVL1_ID"
));
109
ATH_CHECK
(
addToDetStore
(123500438,
"CaloCell_ID"
, {CaloCell_Base_ID_CLID}));
110
ATH_CHECK
(
addToDetStore
(128365736,
"CaloCell_SuperCell_ID"
, {CaloCell_Base_ID_CLID}));
111
ATH_CHECK
(
addToDetStore
(167756483,
"CaloDM_ID"
));
112
ATH_CHECK
(
addToDetStore
(190591643,
"ZdcID"
));
113
114
// for J/GTower
115
ATH_CHECK
(
addToDetStore
(218674799,
"JTower_ID"
, {JGTowerBase_ID_CLID}));
116
ATH_CHECK
(
addToDetStore
(49678914,
"GTower_ID"
, {JGTowerBase_ID_CLID}));
117
118
return
StatusCode::SUCCESS;
119
}
120
121
//-------------------------------------------------------------------------
122
125
StatusCode
DetDescrCnvSvc::createAddress
(
long
/* svc_type */
,
126
const
CLID
&
/* clid */
,
127
const
std::string *
/* par */
,
128
const
unsigned
long
*
/* ip */
,
129
IOpaqueAddress *&refpAddress) {
130
refpAddress =
nullptr
;
131
return
StatusCode::FAILURE;
132
}
133
134
//-------------------------------------------------------------------------
135
136
StatusCode
DetDescrCnvSvc::createAddress
(
long
/* svc_type */
,
const
CLID
&clid,
137
const
std::string &refAddress,
138
IOpaqueAddress *&refpAddress) {
139
try
{
140
refpAddress =
new
DetDescrAddress
(clid);
141
DetDescrAddress
*ddAddr;
142
ddAddr =
dynamic_cast<
DetDescrAddress
*
>
(refpAddress);
143
if
(!ddAddr) {
144
MsgStream log(msgSvc(), name());
145
log << MSG::FATAL <<
"Could not cast to DetDescrAddress."
<<
endmsg
;
146
return
StatusCode::FAILURE;
147
}
148
if
(ddAddr->
fromString
(refAddress).isFailure()) {
149
MsgStream log(msgSvc(), name());
150
log << MSG::FATAL <<
"Could not assign address "
<< refAddress
151
<<
endmsg
;
152
return
StatusCode::FAILURE;
153
}
154
}
catch
(...) {
155
refpAddress = 0;
156
}
157
return
(refpAddress != 0) ? StatusCode::SUCCESS : StatusCode::FAILURE;
158
}
159
160
//-------------------------------------------------------------------------
161
162
StatusCode
DetDescrCnvSvc::convertAddress
(
const
IOpaqueAddress *pAddress,
163
std::string &refAddress) {
164
const
DetDescrAddress
*addr =
165
dynamic_cast<
const
DetDescrAddress
*
>
(pAddress);
166
if
(!addr)
167
return
StatusCode::FAILURE;
168
return
addr->
toString
(refAddress);
169
}
170
171
//-------------------------------------------------------------------------
172
173
StatusCode
DetDescrCnvSvc::addToDetStore
(
const
CLID
&clid,
174
const
std::string &name,
175
const
std::vector<CLID>& bases
/*= {}*/
)
const
{
176
// Based on input parameters, create StoreGate proxies with
177
// DetDescrAddresses in the detector store for the different
178
// detectors.
179
180
// fill in the Addresses for Transient Detector Store objects
181
182
CxxUtils::RefCountedPtr<DetDescrAddress>
addr
183
(
new
DetDescrAddress
(clid, name, name));
184
ATH_MSG_INFO
(
" filling address for "
<< (*addr->par()) <<
" with CLID "
185
<< addr->clID() <<
" and storage type "
186
<< addr->svcType()
187
<<
" to detector store "
);
188
ATH_CHECK
(
m_detStore
->recordAddress(std::move(addr),
true
, bases));
189
return
StatusCode::SUCCESS;
190
}
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
AthCheckMacros.h
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
AthMsgStreamMacros.h
ATH_MSG_INFO
#define ATH_MSG_INFO(x,...)
Definition
AthMsgStreamMacros.h:45
DetDescrAddress.h
DetDescr_StorageType
const long DetDescr_StorageType
Definition
DetDescrCnvSvc.cxx:20
DetDescrCnvSvc.h
CLID
uint32_t CLID
The Class ID type.
Definition
Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
IDetDescrCnvSvc.h
StoreGateSvc.h
CxxUtils::RefCountedPtr
Simple smart pointer for Gaudi-style refcounted objects.
Definition
RefCountedPtr.h:39
DetDescrAddress
Definition
DetDescrAddress.h:32
DetDescrAddress::fromString
StatusCode fromString(const std::string &stringifiedIOA)
initialize technology-specific part of IOA from stringifiedIOA
Definition
DetDescrAddress.cxx:55
DetDescrAddress::toString
StatusCode toString(std::string &refString) const
write technology-specific part of address to string
Definition
DetDescrAddress.cxx:46
DetDescrCnvSvc::m_hasTGC
BooleanProperty m_hasTGC
Definition
DetDescrCnvSvc.h:97
DetDescrCnvSvc::m_hasMM
BooleanProperty m_hasMM
Definition
DetDescrCnvSvc.h:94
DetDescrCnvSvc::m_hasRPC
BooleanProperty m_hasRPC
Definition
DetDescrCnvSvc.h:96
DetDescrCnvSvc::m_detStore
ServiceHandle< StoreGateSvc > m_detStore
Definition
DetDescrCnvSvc.h:53
DetDescrCnvSvc::m_hasMDT
BooleanProperty m_hasMDT
Definition
DetDescrCnvSvc.h:95
DetDescrCnvSvc::m_hasCSC
BooleanProperty m_hasCSC
Switch on/off the muon detectors.
Definition
DetDescrCnvSvc.h:92
DetDescrCnvSvc::initialize
virtual StatusCode initialize()
Initialize the service.
Definition
DetDescrCnvSvc.cxx:38
DetDescrCnvSvc::createAddress
virtual StatusCode createAddress(long svc_type, const CLID &clid, const std::string *par, const unsigned long *ip, IOpaqueAddress *&refpAddress)
Basic create address.
Definition
DetDescrCnvSvc.cxx:125
DetDescrCnvSvc::DetDescrCnvSvc
DetDescrCnvSvc(const std::string &name, ISvcLocator *svc)
Standard Constructor.
Definition
DetDescrCnvSvc.cxx:25
DetDescrCnvSvc::m_hasSTGC
BooleanProperty m_hasSTGC
Definition
DetDescrCnvSvc.h:93
DetDescrCnvSvc::~DetDescrCnvSvc
virtual ~DetDescrCnvSvc()
Standard Destructor.
DetDescrCnvSvc::addToDetStore
virtual StatusCode addToDetStore(const CLID &clid, const std::string &name, const std::vector< CLID > &bases={}) const
Add new address to the Detector Store.
Definition
DetDescrCnvSvc.cxx:173
DetDescrCnvSvc::m_hasTRT
BooleanProperty m_hasTRT
Switch on/off the TRT.
Definition
DetDescrCnvSvc.h:88
DetDescrCnvSvc::convertAddress
virtual StatusCode convertAddress(const IOpaqueAddress *pAddress, std::string &refAddress)
Convert address to string form.
Definition
DetDescrCnvSvc.cxx:162
Generated on
for ATLAS Offline Software by
1.17.0