ATLAS Offline Software
Loading...
Searching...
No Matches
TileCondToolMuID.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
5// Tile includes
9
10// Calo includes
12
13// Athena includes
16
17
18//
19//____________________________________________________________________
20static const InterfaceID IID_TileCondToolMuID("TileCondToolMuID", 1, 0);
21const InterfaceID&
25
26//
27//____________________________________________________________________
28TileCondToolMuID::TileCondToolMuID(const std::string& type, const std::string& name, const IInterface* parent)
29 : AthAlgTool(type, name, parent)
30 , m_caloID(nullptr)
31{
32 declareInterface<TileCondToolMuID>(this);
33}
34
35//
36//____________________________________________________________________
39
40//
41//____________________________________________________________________
43
44 ATH_MSG_DEBUG( "In initialize()" );
45
46 //=== Initialize MuID conditions data key
47 ATH_CHECK( m_calibMuIdKey.initialize() );
48
49 // Retrieve CaloIdManager
50 ATH_CHECK( detStore()->retrieve(m_caloID) );
51
52 return StatusCode::SUCCESS;
53}
54
55//
56//____________________________________________________________________
58 ATH_MSG_DEBUG( "finalize called" );
59 return StatusCode::SUCCESS;
60}
61
62//
63//____________________________________________________________________
64void TileCondToolMuID::getLowThreshold(Identifier & id, int & ros, int & module, int & index) const {
65
66 module = m_caloID->module(id);
67
68 if (m_caloID->is_tile_barrel(id) && m_caloID->is_tile_positive(id)) {
69
70 if (m_caloID->sample(id) == 0) {
71 index = m_caloID->tower(id);
72 }
73
74 if (m_caloID->sample(id) == 1) {
75 index = m_caloID->tower(id) + 10;
76 }
77
78 if (m_caloID->sample(id) == 2) {
79 index = m_caloID->tower(id) / 2 + 19;
80 }
81
82 ros = 1;
83
84 }
85
86 if (m_caloID->is_tile_barrel(id) && m_caloID->is_tile_negative(id)) {
87
88 if (m_caloID->sample(id) == 0) {
89 index = m_caloID->tower(id);
90 }
91
92 if (m_caloID->sample(id) == 1) {
93 index = m_caloID->tower(id) + 10;
94 }
95
96 if (m_caloID->sample(id) == 2) {
97 index = m_caloID->tower(id) / 2 + 19;
98 }
99
100 ros = 2;
101
102 }
103
104 if (m_caloID->is_tile_extbarrel(id) && m_caloID->is_tile_positive(id)) {
105
106 if (m_caloID->sample(id) == 0) {
107 index = m_caloID->tower(id) - 11;
108 }
109
110 if (m_caloID->sample(id) == 1) {
111 index = m_caloID->tower(id) - 4;
112 }
113
114 if (m_caloID->sample(id) == 2) {
115 index = m_caloID->tower(id) / 2 + 7;
116 }
117
118 ros = 3;
119
120 }
121
122 if (m_caloID->is_tile_gap(id) && m_caloID->is_tile_positive(id)) {
123
124 if (m_caloID->sample(id) == 1) {
125 index = 5;
126 }
127
128 if (m_caloID->sample(id) == 2) {
129 index = 11;
130 }
131
132 ros = 3;
133
134 }
135
136 if (m_caloID->is_tile_extbarrel(id) && m_caloID->is_tile_negative(id)) {
137
138 if (m_caloID->sample(id) == 0) {
139 index = m_caloID->tower(id) - 11;
140 }
141
142 if (m_caloID->sample(id) == 1) {
143 index = m_caloID->tower(id) - 4;
144 }
145
146 if (m_caloID->sample(id) == 2) {
147 index = m_caloID->tower(id) / 2 + 7;
148 }
149
150 ros = 4;
151
152 }
153
154 if (m_caloID->is_tile_gap(id) && m_caloID->is_tile_negative(id)) {
155
156 if (m_caloID->sample(id) == 1) {
157 index = 5;
158 }
159
160 if (m_caloID->sample(id) == 2) {
161 index = 11;
162 }
163
164 ros = 4;
165
166 }
167
168}
169
170//
171//____________________________________________________________________
172void TileCondToolMuID::getHighThreshold(Identifier & id, int & ros, int & module, int & index) const {
173
174 index = ros = -999;
175 module = m_caloID->module(id);
176
177 if (m_caloID->is_tile_barrel(id) && m_caloID->is_tile_positive(id)) {
178
179 if (m_caloID->sample(id) == 0) {
180 index = m_caloID->tower(id) + 23;
181 }
182
183 if (m_caloID->sample(id) == 1) {
184 index = m_caloID->tower(id) + 10 + 23;
185 }
186
187 if (m_caloID->sample(id) == 2) {
188 index = m_caloID->tower(id) / 2 + 19 + 23;
189 }
190
191 ros = 1;
192
193 }
194
195 if (m_caloID->is_tile_barrel(id) && m_caloID->is_tile_negative(id)) {
196
197 if (m_caloID->sample(id) == 0) {
198 index = m_caloID->tower(id) + 23;
199 }
200
201 if (m_caloID->sample(id) == 1) {
202 index = m_caloID->tower(id) + 10 + 23;
203 }
204
205 if (m_caloID->sample(id) == 2) {
206 index = m_caloID->tower(id) / 2 + 19 + 23;
207 }
208
209 ros = 2;
210
211 }
212
213 if (m_caloID->is_tile_extbarrel(id) && m_caloID->is_tile_positive(id)) {
214
215 if (m_caloID->sample(id) == 0) {
216 index = m_caloID->tower(id) - 11 + 14;
217 }
218
219 if (m_caloID->sample(id) == 1) {
220 index = m_caloID->tower(id) - 4 + 14;
221 }
222
223 if (m_caloID->sample(id) == 2) {
224 index = m_caloID->tower(id) / 2 + 7 + 14;
225 }
226
227 ros = 3;
228
229 }
230
231 if (m_caloID->is_tile_gap(id) && m_caloID->is_tile_positive(id)) {
232
233 if (m_caloID->sample(id) == 1) {
234 index = 5 + 14;
235 }
236
237 if (m_caloID->sample(id) == 2) {
238 index = 11 + 14;
239 }
240
241 ros = 3;
242
243 }
244
245 if (m_caloID->is_tile_extbarrel(id) && m_caloID->is_tile_negative(id)) {
246
247 if (m_caloID->sample(id) == 0) {
248 index = m_caloID->tower(id) - 11 + 14;
249 }
250
251 if (m_caloID->sample(id) == 1) {
252 index = m_caloID->tower(id) - 4 + 14;
253 }
254
255 if (m_caloID->sample(id) == 2) {
256 index = m_caloID->tower(id) / 2 + 7 + 14;
257 }
258
259 ros = 4;
260
261 }
262
263 if (m_caloID->is_tile_gap(id) && m_caloID->is_tile_negative(id)) {
264
265 if (m_caloID->sample(id) == 1) {
266 index = 5 + 14;
267 }
268
269 if (m_caloID->sample(id) == 2) {
270 index = 11 + 14;
271 }
272
273 ros = 4;
274
275 }
276
277}
278
279//
280//____________________________________________________________________
282
283 int ros;
284 int module;
285 int index;
286
287 getLowThreshold(id, ros, module, index);
288
289 unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, module);
290
292 int nValues = calibMuID->getCalibDrawer(drawerIdx)->getObjSizeUint32();
293
294
295 if (index >= nValues) {
296 ATH_MSG_ERROR( "getLowThresholdValue: index out of range! -> ros/mod/num_values/ind "
297 << ros << " " << module << " " << nValues << " " << index );
298 return -999.;
299 } else {
300 ATH_MSG_DEBUG( "getLowThresholdValue: ros/mod/drawer_ind/num_values/ind " << ros << " "
301 << module << " " << drawerIdx << " " << nValues << " " << index );
302
303 return calibMuID->getCalibDrawer(drawerIdx)->getData(0, 0, index);
304 }
305}
306
307//
308//____________________________________________________________________
310
311 int ros;
312 int module;
313 int index;
314
315 getHighThreshold(id, ros, module, index);
316
317 unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, module);
318
320 int nValues = calibMuID->getCalibDrawer(drawerIdx)->getObjSizeUint32();
321
322 if (index >= nValues) {
323 ATH_MSG_ERROR( "getHighThresholdValue: index out of range! -> ros/mod/num_values/ind "
324 << ros << " " << module << " " << nValues << " " << index );
325
326 return -999.;
327 } else {
328 ATH_MSG_DEBUG( "getHighThresholdValue: ros/mod/drawer_ind/num_values/ind " << ros << " "
329 << module << " " << drawerIdx << " " << nValues << " " << index );
330
331 return calibMuID->getCalibDrawer(drawerIdx)->getData(0, 0, index);
332
333 }
334}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_DEBUG(x)
Helpers for checking error return status codes and reporting errors.
static const InterfaceID IID_TileCondToolMuID("TileCondToolMuID", 1, 0)
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
const ServiceHandle< StoreGateSvc > & detStore() const
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
virtual StatusCode finalize() override
float getLowThresholdValue(Identifier id) const
void getLowThreshold(Identifier &id, int &ros, int &module, int &index) const
void getHighThreshold(Identifier &id, int &ros, int &module, int &index) const
float getHighThresholdValue(Identifier id) const
SG::ReadCondHandleKey< TileCalibDataFlt > m_calibMuIdKey
const CaloCell_ID * m_caloID
virtual StatusCode initialize() override
static const InterfaceID & interfaceID()
TileCondToolMuID(const std::string &type, const std::string &name, const IInterface *parent)
Definition index.py:1