ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArCnv
LArByteStream
src
Hid2RESrcID.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 "
LArByteStream/Hid2RESrcID.h
"
6
#include "
LArRecConditions/LArFebRodMapping.h
"
7
#include "
CaloIdentifier/LArID_Exception.h
"
8
#include "
AtlasDetDescr/AtlasDetectorID.h
"
9
#include "
AthenaBaseComps/AthCheckMacros.h
"
10
#include "GaudiKernel/IToolSvc.h"
11
#include "GaudiKernel/ToolHandle.h"
12
#include "
StoreGate/StoreGateSvc.h
"
13
#include "GaudiKernel/MsgStream.h"
14
#include "
AthenaKernel/errorcheck.h
"
15
16
#include <iostream>
17
18
#include "eformat/SourceIdentifier.h"
19
20
using
eformat::helper::SourceIdentifier;
21
22
// implementation of LArOnlineID to RESrcID conversion.
23
//
24
// FIXME: need to check the convention for posNeg vs left-right.
25
// DET id assumes left-right
26
// FEB_ID assumes pos-neg.
27
// I have assumed here, left for pn=0 (negative?)
28
// right for pn=1 (positive?)
29
30
Hid2RESrcID::Hid2RESrcID
():
31
m_initialized
(false),
32
m_onlineHelper
(0)
33
{
34
35
}
36
37
StatusCode
Hid2RESrcID::initialize
(
const
LArFebRodMapping
& rodMapping)
38
{
39
ATH_CHECK
(
initialize
(rodMapping.
getLArRoModIDvec
()) );
40
return
StatusCode::SUCCESS;
41
}
42
43
44
StatusCode
Hid2RESrcID::initialize
(
const
std::vector<HWIdentifier>& roms)
45
{
46
// retrieve onlineHelper
47
ServiceHandle<StoreGateSvc>
detStore (
"DetectorStore"
,
"Hid2RESrcID"
);
48
ATH_CHECK
( detStore.retrieve() );
49
ATH_CHECK
( detStore->retrieve(
m_onlineHelper
,
"LArOnlineID"
) );
50
51
// make internal maps
52
53
eformat::SubDetector detid ;
54
for
(
const
HWIdentifier
& mId : roms)
55
{
56
detid = (eformat::SubDetector)
m_readoutModuleSvc
.subDet(mId);
57
uint8_t m =
m_readoutModuleSvc
.rodFragId(mId);
58
59
SourceIdentifier sid = SourceIdentifier(detid,m);
60
uint32_t rod_id = sid.code();
61
62
assert(
m_coll2ROD
.count(mId) == 0 );
63
m_coll2ROD
[ mId ]=rod_id;
64
65
}
66
67
68
m_initialized
= true ;
69
70
return
StatusCode::SUCCESS;
71
}
72
73
74
uint32_t
Hid2RESrcID::getRodIDFromROM
(
const
COLLECTION_ID
&
id
)
const
75
{
// this method returns a RESrcID for the ROD, for a given COLLECTION_ID
76
77
COLL_MAP::const_iterator it =
m_coll2ROD
.find(
id
);
78
if
(it ==
m_coll2ROD
.end()){
79
REPORT_MESSAGE_WITH_CONTEXT
(MSG::ERROR,
"H2d2RESrcID::getRodIDFromROM"
)
80
<<
"invalid COLL ID in hex "
<<std::hex<<
id
.get_compact()<<std::dec<<
endmsg
;
81
std::abort();
82
}
83
84
return
(*it).second ;
85
}
86
87
88
uint32_t
Hid2RESrcID::getRodID
(
const
LArFebRodMapping
& rodMapping,
89
const
HWIdentifier
& hid)
const
90
{
// this method returns a RESrcID for the ROD, for a given LArOnlineID
91
// channel number is ignored.
92
HWIdentifier
febId =
m_onlineHelper
->feb_Id(hid) ;
93
HWIdentifier
romId = rodMapping.
getReadoutModuleID
(febId);
94
95
return
getRodIDFromROM
(romId);
96
}
97
100
uint32_t
Hid2RESrcID::getRobID
( uint32_t rod_id)
const
101
{
102
return
m_rodRobIdMap
.getRobID (rod_id);
103
}
104
105
108
uint32_t
Hid2RESrcID::getRosID
( uint32_t rob_id)
const
109
{
110
// Change Module Type to ROS, moduleid = 0
111
112
SourceIdentifier
id
= SourceIdentifier(rob_id);
113
SourceIdentifier id2 = SourceIdentifier(
id
.subdetector_id(), 0);
114
return
id2.code();
115
116
}
117
120
uint32_t
Hid2RESrcID::getDetID
( uint32_t ros_id)
const
121
{
122
// ROS to DET
123
124
SourceIdentifier
id
= SourceIdentifier(ros_id);
125
SourceIdentifier id2 = SourceIdentifier(
id
.subdetector_id(), 0);
126
return
id2.code();
127
}
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:61
AthCheckMacros.h
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
AtlasDetectorID.h
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
errorcheck.h
Helpers for checking error return status codes and reporting errors.
REPORT_MESSAGE_WITH_CONTEXT
#define REPORT_MESSAGE_WITH_CONTEXT(LVL, CONTEXT_NAME)
Report a message, with an explicitly specified context name.
Definition
Control/AthenaKernel/AthenaKernel/errorcheck.h:345
Hid2RESrcID.h
LArFebRodMapping.h
LArID_Exception.h
StoreGateSvc.h
HWIdentifier
Definition
HWIdentifier.h:13
Hid2RESrcID::getRobID
uint32_t getRobID(uint32_t rod_id) const
Make a ROB Source ID from a ROD source ID.
Definition
Hid2RESrcID.cxx:100
Hid2RESrcID::COLLECTION_ID
HWIdentifier COLLECTION_ID
Definition
Hid2RESrcID.h:42
Hid2RESrcID::m_readoutModuleSvc
LArReadoutModuleService m_readoutModuleSvc
Definition
Hid2RESrcID.h:80
Hid2RESrcID::getRodIDFromROM
uint32_t getRodIDFromROM(const COLLECTION_ID &hid) const
make a ROD SrcID for a COLLECTION_ID
Definition
Hid2RESrcID.cxx:74
Hid2RESrcID::getRodID
uint32_t getRodID(const LArFebRodMapping &rodMapping, const HWIdentifier &hid) const
make a ROD SrcID for a HWIdentifier
Definition
Hid2RESrcID.cxx:88
Hid2RESrcID::m_coll2ROD
COLL_MAP m_coll2ROD
Definition
Hid2RESrcID.h:79
Hid2RESrcID::Hid2RESrcID
Hid2RESrcID()
constructor
Definition
Hid2RESrcID.cxx:30
Hid2RESrcID::getRosID
uint32_t getRosID(uint32_t rob_id) const
Make a ROS Source ID from a ROB source ID.
Definition
Hid2RESrcID.cxx:108
Hid2RESrcID::m_onlineHelper
const LArOnlineID * m_onlineHelper
Definition
Hid2RESrcID.h:77
Hid2RESrcID::m_rodRobIdMap
RodRobIdMap m_rodRobIdMap
Definition
Hid2RESrcID.h:81
Hid2RESrcID::initialize
StatusCode initialize(const LArFebRodMapping &rodMapping)
Definition
Hid2RESrcID.cxx:37
Hid2RESrcID::m_initialized
bool m_initialized
Definition
Hid2RESrcID.h:76
Hid2RESrcID::getDetID
uint32_t getDetID(uint32_t ros_id) const
Make a SubDetector ID from ROS source ID.
Definition
Hid2RESrcID.cxx:120
LArFebRodMapping
Definition
LArFebRodMapping.h:17
LArFebRodMapping::getLArRoModIDvec
const std::vector< HWIdentifier > & getLArRoModIDvec() const
"iterator" on LArReadoutModuleIDs
Definition
LArFebRodMapping.h:46
LArFebRodMapping::getReadoutModuleID
HWIdentifier getReadoutModuleID(const HWIdentifier &id) const
Definition
LArFebRodMapping.cxx:15
ServiceHandle
Definition
ClusterMakerTool.h:36
Generated on
for ATLAS Offline Software by
1.17.0