ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Calorimeter
CaloTriggerTool
src
CaloTTPpmRxIdMap.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 "
CaloTriggerTool/CaloTTPpmRxIdMap.h
"
6
#include "
CaloIdentifier/CaloID_Exception.h
"
7
8
#include "GaudiKernel/ISvcLocator.h"
9
#include "GaudiKernel/Bootstrap.h"
10
#include "GaudiKernel/MsgStream.h"
11
#include "GaudiKernel/IMessageSvc.h"
12
13
#include "
AthenaKernel/errorcheck.h
"
14
#include "
StoreGate/StoreGateSvc.h
"
15
16
#include <iostream>
17
18
CaloTTPpmRxIdMap::CaloTTPpmRxIdMap
() {
19
}
20
21
22
CaloTTPpmRxIdMap::~CaloTTPpmRxIdMap
() {
23
}
24
25
//------------------------------------------//
26
void
CaloTTPpmRxIdMap::set
(
const
CaloTTPpmRxId
& m ) {
27
28
convert_to_P
(m);
29
30
SmartIF<IMessageSvc> msgSvc{Gaudi::svcLocator()->service(
"MessageSvc"
)};
31
if
(!msgSvc){
32
throw
std::runtime_error(
"Cannot locate MessageSvc"
);
33
}
34
MsgStream log( msgSvc,
"CaloTTPpmRxIdMap"
);
35
36
log<<MSG::DEBUG<<
" CaloTTPpmRxId size = "
<<m.size() <<
endmsg
;
37
38
SmartIF<StoreGateSvc> detStore{Gaudi::svcLocator()->service(
"DetectorStore"
)};
39
if
(!detStore){
40
log << MSG::ERROR <<
"Cannot locate DetectorStore"
<<
endmsg
;
41
}
42
43
CaloTTPpmRxId::const_iterator it = m.begin();
44
CaloTTPpmRxId::const_iterator it_e = m.end();
45
46
try
{
47
for
(; it!=it_e; ++it) {
48
const
CaloTTPpmRxId_t
& t = *it;
49
50
L1CaloCoolChannelId
ppmChannelId(t.ppm_crate,
L1CaloModuleType::Ppm
, t.ppm_module, t.ppm_subModule, t.ppm_channel);
51
L1CaloRxCoolChannelId
rxChannelId(t.rx_crate, t.rx_module, t.rx_inputConn, t.rx_inputPair, t.rx_outputConn, t.rx_outputPair);
52
53
if
(log.level()<=MSG::VERBOSE) {
54
log << MSG::VERBOSE <<
" ppm id = "
<< ppmChannelId.
id
() <<
" rx id ="
<< rxChannelId.
id
() <<
endmsg
;
55
}
56
57
m_mPpmIdToRx
[ppmChannelId].push_back(rxChannelId);
58
m_mRxIdToPpm
[rxChannelId] = ppmChannelId;
59
60
}
61
if
(log.level()<=MSG::DEBUG) {
62
log<<MSG::DEBUG<<
" CaloTTPpmRxIdMap::set : number of Ids="
<<
m_mPpmIdToRx
.size()<<std::endl;
63
}
64
}
catch
(
CaloID_Exception
& except) {
65
log<<MSG::ERROR<<
" Failed in CaloTTPpmRxIdMap::set "
<<
endmsg
;
66
log<<MSG::ERROR<< (std::string) except <<
endmsg
;
67
}
68
return
;
69
}
70
71
//--------------------------------------------------------------------------//
72
std::vector<L1CaloRxCoolChannelId>
CaloTTPpmRxIdMap::ppmToRxId
(
const
L1CaloCoolChannelId
& ppmChannelId)
const
{
73
74
std::map<L1CaloCoolChannelId, std::vector<L1CaloRxCoolChannelId> >
::const_iterator
it =
m_mPpmIdToRx
.find(ppmChannelId);
75
76
if
(it!=
m_mPpmIdToRx
.end()){
77
return
it->second;
78
}
79
80
REPORT_MESSAGE_WITH_CONTEXT
(MSG::ERROR,
"CaloTTPpmRxIdMap"
) <<
81
"Ppm channel ID not found, id= "
<< ppmChannelId.
id
()<<
" in Ppm to Rx map."
<<
endmsg
;
82
83
return
std::vector<L1CaloRxCoolChannelId>();
84
}
85
86
87
//---------------------------------------------------------------------//
88
L1CaloCoolChannelId
CaloTTPpmRxIdMap::rxToPpmId
(
const
L1CaloRxCoolChannelId
& rxChannelId)
const
{
89
90
std::map<L1CaloRxCoolChannelId, L1CaloCoolChannelId >::const_iterator it=
m_mRxIdToPpm
.find(rxChannelId);
91
92
if
(it!=
m_mRxIdToPpm
.end()){
93
return
it->second;
94
}
95
96
// ERROR, can not find the id.
97
REPORT_MESSAGE_WITH_CONTEXT
(MSG::ERROR,
"CaloTTPpmRxIdMap"
) <<
98
"Rx channel ID not found, id = "
<<rxChannelId.
id
()<<
" in Rx to Ppm map."
<<
endmsg
;
99
100
return
L1CaloCoolChannelId
(0) ;
101
}
102
103
CaloTTPpmRxId_P
*
CaloTTPpmRxIdMap::getP
() {
104
return
&
m_persData
;
105
}
106
107
void
CaloTTPpmRxIdMap::convert_to_P
(
const
CaloTTPpmRxId
& d ) {
108
109
CaloTTPpmRxId::const_iterator it = d.begin();
110
CaloTTPpmRxId::const_iterator it_e = d.end();
111
112
for
( ;it!=it_e;++it){
113
const
CaloTTPpmRxId_t
& t = *it;
114
CaloTTPpmRxId_P::__t
t2 ;
115
116
t2.ppm_crate = t.ppm_crate;
117
t2.ppm_module = t.ppm_module;
118
t2.ppm_subModule = t.ppm_subModule;
119
t2.ppm_channel = t.ppm_channel;
120
121
t2.rx_crate = t.rx_crate ;
122
t2.rx_module = t.rx_module;
123
t2.rx_inputConn = t.rx_inputConn;
124
t2.rx_inputPair = t.rx_inputPair;
125
t2.rx_outputConn = t.rx_outputConn;
126
t2.rx_outputPair = t.rx_outputPair;
127
128
m_persData
.m_v.push_back(t2);
129
}
130
}
131
132
133
void
CaloTTPpmRxIdMap::convert_to_D
(
const
CaloTTPpmRxId_P
& p,
CaloTTPpmRxId
& d ) {
134
135
std::vector<CaloTTPpmRxId_P::__t>::const_iterator it = p.m_v.begin();
136
std::vector<CaloTTPpmRxId_P::__t>::const_iterator it_e = p.m_v.end();
137
138
d.clear();
139
for
( ;it!=it_e;++it){
140
const
CaloTTPpmRxId_P::__t
& t = *it;
141
CaloTTPpmRxId_t
t2 ;
142
143
t2.ppm_crate = t.ppm_crate;
144
t2.ppm_module = t.ppm_module;
145
t2.ppm_subModule = t.ppm_subModule;
146
t2.ppm_channel = t.ppm_channel;
147
148
t2.rx_crate = t.rx_crate ;
149
t2.rx_module = t.rx_module;
150
t2.rx_inputConn = t.rx_inputConn;
151
t2.rx_inputPair = t.rx_inputPair;
152
t2.rx_outputConn = t.rx_outputConn;
153
t2.rx_outputPair = t.rx_outputPair;
154
155
d.push_back(t2);
156
}
157
}
158
159
void
CaloTTPpmRxIdMap::set
(
const
CaloTTPpmRxId_P
& p) {
160
161
CaloTTPpmRxId
d;
162
convert_to_D
(p,d);
163
set
(d);
164
m_persData
.m_version = p.m_version;
165
return
;
166
}
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:61
CaloID_Exception.h
CaloTTPpmRxIdMap.h
CaloTTPpmRxId
std::vector< CaloTTPpmRxId_t > CaloTTPpmRxId
Definition
CaloTTPpmRxId.h:30
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
StoreGateSvc.h
const_iterator
CaloID_Exception
Exception class for Calo Identifiers.
Definition
CaloID_Exception.h:20
CaloTTPpmRxIdMap::rxToPpmId
L1CaloCoolChannelId rxToPpmId(const L1CaloRxCoolChannelId &rxChannelId) const
return the corresponfing ppm channel to the Rx input one
Definition
CaloTTPpmRxIdMap.cxx:88
CaloTTPpmRxIdMap::convert_to_P
void convert_to_P(const CaloTTPpmRxId &t)
Definition
CaloTTPpmRxIdMap.cxx:107
CaloTTPpmRxIdMap::m_mRxIdToPpm
std::map< L1CaloRxCoolChannelId, L1CaloCoolChannelId > m_mRxIdToPpm
Definition
CaloTTPpmRxIdMap.h:62
CaloTTPpmRxIdMap::ppmToRxId
std::vector< L1CaloRxCoolChannelId > ppmToRxId(const L1CaloCoolChannelId &ppmChannelId) const
return the corresponding Rx channels to the Ppm input one
Definition
CaloTTPpmRxIdMap.cxx:72
CaloTTPpmRxIdMap::CaloTTPpmRxIdMap
CaloTTPpmRxIdMap()
Definition
CaloTTPpmRxIdMap.cxx:18
CaloTTPpmRxIdMap::m_mPpmIdToRx
std::map< L1CaloCoolChannelId, std::vector< L1CaloRxCoolChannelId > > m_mPpmIdToRx
Definition
CaloTTPpmRxIdMap.h:61
CaloTTPpmRxIdMap::set
void set(const PDATA &t)
initialize from Nova
Definition
CaloTTPpmRxIdMap.cxx:26
CaloTTPpmRxIdMap::convert_to_D
void convert_to_D(const CaloTTPpmRxId_P &t, CaloTTPpmRxId &d)
Definition
CaloTTPpmRxIdMap.cxx:133
CaloTTPpmRxIdMap::~CaloTTPpmRxIdMap
~CaloTTPpmRxIdMap()
Definition
CaloTTPpmRxIdMap.cxx:22
CaloTTPpmRxIdMap::m_persData
CaloTTPpmRxId_P m_persData
Definition
CaloTTPpmRxIdMap.h:64
CaloTTPpmRxIdMap::getP
CaloTTPpmRxId_P * getP()
return the persistified map
Definition
CaloTTPpmRxIdMap.cxx:103
CaloTTPpmRxId_P
This is a database object holding the TT PPM to RX channels map.
Definition
CaloTTPpmRxId_P.h:22
CaloTTPpmRxId_P::__t
CaloTTPpmRxId_P_t __t
Definition
CaloTTPpmRxId_P.h:41
L1CaloCoolChannelId
Encapsulates the ID of one channel of conditions data in COOL, ie the ID of a row in a table.
Definition
L1CaloCoolChannelId.h:10
L1CaloCoolChannelId::id
unsigned int id() const
Definition
L1CaloCoolChannelId.h:32
L1CaloModuleType::Ppm
@ Ppm
Definition
L1CaloModuleType.h:17
L1CaloRxCoolChannelId
Encapsulates the ID of one Rx channel of conditions data in COOL, ie the ID of a row in a table.
Definition
L1CaloRxCoolChannelId.h:10
L1CaloRxCoolChannelId::id
unsigned int id() const
Definition
L1CaloRxCoolChannelId.h:27
CaloTTPpmRxId_t
Structure definition of the CaloTTPpmRxIdMap.
Definition
CaloTTPpmRxId.h:15
Generated on
for ATLAS Offline Software by
1.17.0