ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
TileCalorimeter
TileConditions
src
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
6
#include "
TileConditions/TileCondToolMuID.h
"
7
#include "
TileCalibBlobObjs/TileCalibDrawerFlt.h
"
8
#include "
TileCalibBlobObjs/TileCalibUtils.h
"
9
10
// Calo includes
11
#include "
CaloIdentifier/CaloCell_ID.h
"
12
13
// Athena includes
14
#include "
AthenaKernel/errorcheck.h
"
15
#include "
StoreGate/ReadCondHandle.h
"
16
17
18
//
19
//____________________________________________________________________
20
static
const
InterfaceID
IID_TileCondToolMuID
(
"TileCondToolMuID"
, 1, 0);
21
const
InterfaceID&
22
TileCondToolMuID::interfaceID
() {
23
return
IID_TileCondToolMuID
;
24
}
25
26
//
27
//____________________________________________________________________
28
TileCondToolMuID::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
//____________________________________________________________________
37
TileCondToolMuID::~TileCondToolMuID
() {
38
}
39
40
//
41
//____________________________________________________________________
42
StatusCode
TileCondToolMuID::initialize
() {
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
//____________________________________________________________________
57
StatusCode
TileCondToolMuID::finalize
() {
58
ATH_MSG_DEBUG
(
"finalize called"
);
59
return
StatusCode::SUCCESS;
60
}
61
62
//
63
//____________________________________________________________________
64
void
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
//____________________________________________________________________
172
void
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
//____________________________________________________________________
281
float
TileCondToolMuID::getLowThresholdValue
(
Identifier
id
)
const
{
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
291
SG::ReadCondHandle<TileCalibData<TileCalibDrawerFlt>
> calibMuID(
m_calibMuIdKey
);
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
//____________________________________________________________________
309
float
TileCondToolMuID::getHighThresholdValue
(
Identifier
id
)
const
{
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
319
SG::ReadCondHandle<TileCalibData<TileCalibDrawerFlt>
> calibMuID(
m_calibMuIdKey
);
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
}
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
CaloCell_ID.h
errorcheck.h
Helpers for checking error return status codes and reporting errors.
ReadCondHandle.h
TileCalibDrawerFlt.h
TileCalibUtils.h
IID_TileCondToolMuID
static const InterfaceID IID_TileCondToolMuID("TileCondToolMuID", 1, 0)
TileCondToolMuID.h
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
Definition
AthCommonDataStore.h:95
SG::ReadCondHandle
Definition
ReadCondHandle.h:40
TileCalibUtils::getDrawerIdx
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
Definition
TileCalibUtils.cxx:60
TileCondToolMuID::finalize
virtual StatusCode finalize() override
Definition
TileCondToolMuID.cxx:57
TileCondToolMuID::getLowThresholdValue
float getLowThresholdValue(Identifier id) const
Definition
TileCondToolMuID.cxx:281
TileCondToolMuID::getLowThreshold
void getLowThreshold(Identifier &id, int &ros, int &module, int &index) const
Definition
TileCondToolMuID.cxx:64
TileCondToolMuID::getHighThreshold
void getHighThreshold(Identifier &id, int &ros, int &module, int &index) const
Definition
TileCondToolMuID.cxx:172
TileCondToolMuID::getHighThresholdValue
float getHighThresholdValue(Identifier id) const
Definition
TileCondToolMuID.cxx:309
TileCondToolMuID::~TileCondToolMuID
virtual ~TileCondToolMuID()
Definition
TileCondToolMuID.cxx:37
TileCondToolMuID::m_calibMuIdKey
SG::ReadCondHandleKey< TileCalibDataFlt > m_calibMuIdKey
Definition
TileCondToolMuID.h:41
TileCondToolMuID::m_caloID
const CaloCell_ID * m_caloID
Definition
TileCondToolMuID.h:38
TileCondToolMuID::initialize
virtual StatusCode initialize() override
Definition
TileCondToolMuID.cxx:42
TileCondToolMuID::interfaceID
static const InterfaceID & interfaceID()
Definition
TileCondToolMuID.cxx:22
TileCondToolMuID::TileCondToolMuID
TileCondToolMuID(const std::string &type, const std::string &name, const IInterface *parent)
Definition
TileCondToolMuID.cxx:28
Identifier
Definition
IdentifierFieldParser.cxx:14
index
Definition
index.py:1
type
Generated on
for ATLAS Offline Software by
1.17.0