ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetConditions
TRT_ConditionsAlgs
src
TRTStrawStatusWrite.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
5
//
12
13
#include "
TRTStrawStatusWrite.h
"
14
#include <fstream>
15
#include <iostream>
16
#include <iomanip>
17
#include <sstream>
18
#include <stdio.h>
19
#include "
TRT_ReadoutGeometry/TRT_BaseElement.h
"
20
21
TRTStrawStatusWrite::TRTStrawStatusWrite
(
const
std::string &name, ISvcLocator *pSvcLocator) :
AthAlgorithm
(name, pSvcLocator){}
22
23
StatusCode
TRTStrawStatusWrite::initialize
()
24
{
25
ATH_MSG_INFO
(
" Initializing TRTStrawStatusWrite "
);
26
ATH_CHECK
(
detStore
()->retrieve(
m_trtid
,
"TRT_ID"
));
27
28
if
(!
m_par_stattextfile
.empty())
29
{
30
ATH_MSG_INFO
(
"Recording StrawStatusContainer for key "
<<
m_par_strawstatuscontainerkey
);
31
if
(!
readStatFromTextFile
(
m_par_stattextfile
).isSuccess())
32
{
33
ATH_MSG_ERROR
(
" Could not read TRT StrawStatus objects "
);
34
return
StatusCode::FAILURE;
35
}
36
ATH_MSG_INFO
(
" Filled "
<<
m_par_strawstatuscontainerkey
<<
" using input file "
<<
m_par_stattextfile
);
37
}
38
39
if
(!
m_par_stattextfilepermanent
.empty())
40
{
41
ATH_MSG_INFO
(
"Recording StrawStatusPermanent Container for key "
<<
m_par_strawstatuspermanentcontainerkey
);
42
if
(!
readStatPermFromTextFile
(
m_par_stattextfilepermanent
).isSuccess())
43
{
44
ATH_MSG_ERROR
(
" Could not read TRT StrawStatus permanent objects "
);
45
return
StatusCode::FAILURE;
46
}
47
ATH_MSG_INFO
(
" Filled "
<<
m_par_strawstatuspermanentcontainerkey
<<
" using input file "
<<
m_par_stattextfilepermanent
);
48
}
49
50
if
(!
m_par_stattextfileHT
.empty())
51
{
52
ATH_MSG_INFO
(
"Recording StrawStatusHTContainer for key "
<<
m_par_strawstatusHTcontainerkey
);
53
if
(!
readStatHTFromTextFile
(
m_par_stattextfileHT
).isSuccess())
54
{
55
ATH_MSG_ERROR
(
" Could not read TRT StrawStatus HT objects "
);
56
return
StatusCode::FAILURE;
57
}
58
ATH_MSG_INFO
(
" Filled "
<<
m_par_strawstatusHTcontainerkey
<<
" using input file "
<<
m_par_stattextfileHT
);
59
}
60
61
return
StatusCode::SUCCESS;
62
}
63
64
StatusCode
TRTStrawStatusWrite::execute
(
const
EventContext&
/*ctx*/
)
65
{
66
return
StatusCode::SUCCESS;
67
}
68
69
StatusCode
TRTStrawStatusWrite::finalize
()
70
{
71
return
StatusCode::SUCCESS;
72
}
73
74
// set special bits//////////////////////////////////////////////////
75
void
TRTStrawStatusWrite::set_status_temp
(
StrawStatusContainer
*strawstatuscontainer,
Identifier
offlineID,
bool
set
)
76
{
77
int
level =
TRTCond::ExpandedIdentifier::STRAW
;
78
TRTCond::ExpandedIdentifier
id
=
TRTCond::ExpandedIdentifier
(
m_trtid
->barrel_ec(offlineID),
m_trtid
->layer_or_wheel(offlineID),
79
m_trtid
->phi_module(offlineID),
m_trtid
->straw_layer(offlineID),
80
m_trtid
->straw(offlineID), level);
81
82
unsigned
int
org_stat = int((*strawstatuscontainer).get(
id
).getstatus());
83
const
unsigned
int
statusbitmask = 1 << 8;
// 0000001 00000000
84
85
if
(
set
)
86
{
87
(*strawstatuscontainer).set(
id
, (org_stat | statusbitmask));
88
}
89
else
90
{
91
(*strawstatuscontainer).set(
id
, (org_stat & (~statusbitmask)));
92
}
93
}
94
95
// set special bits////////////////////////////////////////////////
96
void
TRTStrawStatusWrite::set_status_permanent
(
StrawStatusContainer
*strawstatuspermanentcontainer,
Identifier
offlineID,
bool
set
)
97
{
98
99
int
level =
TRTCond::ExpandedIdentifier::STRAW
;
100
TRTCond::ExpandedIdentifier
id
=
TRTCond::ExpandedIdentifier
(
m_trtid
->barrel_ec(offlineID),
m_trtid
->layer_or_wheel(offlineID),
101
m_trtid
->phi_module(offlineID),
m_trtid
->straw_layer(offlineID),
102
m_trtid
->straw(offlineID), level);
103
unsigned
int
org_stat = int((*strawstatuspermanentcontainer).get(
id
).getstatus());
104
const
unsigned
int
statusbitmask = 1 << 8;
// 0000001 00000000
105
106
if
(
set
)
107
{
108
(*strawstatuspermanentcontainer).set(
id
, (org_stat | statusbitmask));
109
}
110
else
111
{
112
(*strawstatuspermanentcontainer).set(
id
, (org_stat & (~statusbitmask)));
113
}
114
}
115
117
StatusCode
TRTStrawStatusWrite::readStatFromTextFile
(
const
std::string &filename)
118
{
119
120
StrawStatusContainer
*strawstatus =
new
TRTCond::StrawStatusMultChanContainer
();
121
122
strawstatus->
clear
();
123
ATH_MSG_INFO
(
" ***************** TRTStrawStatusWrite ************************ "
);
124
ATH_MSG_INFO
(
" readStatFromTextFile called with file name "
<< filename);
125
126
int
deadba0[32];
127
int
deadba1[32];
128
int
deadba2[32];
129
int
deadbc0[32];
130
int
deadbc1[32];
131
int
deadbc2[32];
132
int
deadea[14];
133
int
deadec[14];
134
for
(
int
i = 0; i < 32; i++)
135
{
136
deadba0[i] = 0;
137
deadba1[i] = 0;
138
deadba2[i] = 0;
139
deadbc0[i] = 0;
140
deadbc1[i] = 0;
141
deadbc2[i] = 0;
142
}
143
for
(
int
i = 0; i < 14; i++)
144
{
145
deadea[i] = 0;
146
deadec[i] = 0;
147
}
148
// initialize detector layers with status 'good'
149
for
(
int
l = 0; l < 3; l++)
150
{
151
TRTCond::ExpandedIdentifier
idbc(-1, l, 0, 0, 0,
TRTCond::ExpandedIdentifier::LAYERWHEEL
);
152
strawstatus->
setStatus
(idbc,
TRTCond::StrawStatus::Good
);
153
TRTCond::ExpandedIdentifier
idba(1, l, 0, 0, 0,
TRTCond::ExpandedIdentifier::LAYERWHEEL
);
154
strawstatus->
setStatus
(idba,
TRTCond::StrawStatus::Good
);
155
}
156
for
(
int
l = 0; l < 14; l++)
157
{
158
TRTCond::ExpandedIdentifier
idec(-2, l, 0, 0, 0,
TRTCond::ExpandedIdentifier::LAYERWHEEL
);
159
strawstatus->
setStatus
(idec,
TRTCond::StrawStatus::Good
);
160
TRTCond::ExpandedIdentifier
idea(2, l, 0, 0, 0,
TRTCond::ExpandedIdentifier::LAYERWHEEL
);
161
strawstatus->
setStatus
(idea,
TRTCond::StrawStatus::Good
);
162
}
163
164
if
(filename.empty())
165
{
166
ATH_MSG_FATAL
(
" Empty input file! "
);
167
return
StatusCode::FAILURE;
168
}
169
std::ifstream ifs(filename.c_str());
170
int
bec, layer, sector, strawlayer, straw, status;
171
// txt file format : bec sector straw strawlayer layer dead/alive
172
int
line = 0;
173
ATH_MSG_INFO
(
"StrawStatus levels: strawlayer: "
<<
TRTCond::ExpandedIdentifier::STRAWLAYER
<<
" module: "
<<
TRTCond::ExpandedIdentifier::MODULE
<<
" layer: "
<<
TRTCond::ExpandedIdentifier::LAYERWHEEL
);
174
while
(ifs >> bec >> sector >> straw >> strawlayer >> layer >> status)
175
{
176
if
((status == 3) || (status == 4) || (status == 5))
177
status = 1;
178
if
(status != 1)
179
{
180
ATH_MSG_FATAL
(
" The Status Temp : "
<< status <<
" IS NOT ACCEPTED, Use 1 for dead "
);
181
return
StatusCode::FAILURE;
182
}
183
int
level =
TRTCond::ExpandedIdentifier::STRAW
;
184
line += 1;
185
186
if
(straw < 0)
187
{
188
level =
TRTCond::ExpandedIdentifier::STRAWLAYER
;
189
straw = 0;
190
}
191
if
(strawlayer < 0)
192
{
193
level =
TRTCond::ExpandedIdentifier::MODULE
;
194
strawlayer = 0;
195
}
196
if
(sector < 0)
197
{
198
level =
TRTCond::ExpandedIdentifier::LAYERWHEEL
;
199
sector = 0;
200
}
201
if
(layer < 0)
202
{
203
level =
TRTCond::ExpandedIdentifier::BARRELEC
;
204
layer = 0;
205
}
206
if
(bec < -2)
207
{
208
level =
TRTCond::ExpandedIdentifier::DETECTOR
;
209
bec = -2;
210
}
211
212
if
(level ==
TRTCond::ExpandedIdentifier::STRAW
)
213
{
214
if
(bec == -1 && sector >= 0 && sector < 32)
215
{
216
if
(layer == 0)
217
deadbc0[sector]++;
218
if
(layer == 1)
219
deadbc1[sector]++;
220
if
(layer == 2)
221
deadbc2[sector]++;
222
}
223
if
(bec == 1 && sector >= 0 && sector < 32)
224
{
225
if
(layer == 0)
226
deadba0[sector]++;
227
if
(layer == 1)
228
deadba1[sector]++;
229
if
(layer == 2)
230
deadba2[sector]++;
231
}
232
if
(bec == -2 && layer >= 0 && layer < 14)
233
deadec[layer]++;
234
if
(bec == 2 && layer >= 0 && layer < 14)
235
deadea[layer]++;
236
}
237
else
238
{
239
ATH_MSG_INFO
(
"Entire Module dead: bec: "
<< bec <<
" layer: "
<< layer <<
" phi: "
<< sector <<
" stl: "
<< strawlayer <<
" stw: "
<< straw <<
" level "
<< level);
240
}
241
242
TRTCond::ExpandedIdentifier
id(bec, layer, sector, strawlayer, straw, level);
243
// 1 means BAD
244
strawstatus->
setStatus
(
id
, 1);
245
246
// I don't know why to set this extra bit 8 here for dead straws. Been always like that. (PH)
247
strawstatus->
set
(
id
, 1);
248
Identifier
ID =
m_trtid
->straw_id(bec, sector, layer, strawlayer, straw);
249
set_status_temp
(strawstatus, ID, (status == 1) );
250
}
251
252
ATH_MSG_INFO
(
" Dead straws BA layer 0"
);
253
ATH_MSG_INFO
(
"deadba0[] = { "
<< deadba0[0] <<
", "
<< deadba0[1] <<
", "
<< deadba0[2] <<
", "
<< deadba0[3] <<
", "
<< deadba0[4] <<
", "
<< deadba0[5] <<
", "
<< deadba0[6] <<
", "
<< deadba0[7] <<
", "
<< deadba0[8] <<
", "
<< deadba0[9] <<
", "
<< deadba0[10] <<
", "
<< deadba0[11] <<
", "
<< deadba0[12] <<
", "
<< deadba0[13] <<
", "
<< deadba0[14] <<
", "
<< deadba0[15] <<
", "
<< deadba0[16] <<
", "
<< deadba0[17] <<
", "
<< deadba0[18] <<
", "
<< deadba0[19] <<
", "
<< deadba0[20] <<
", "
<< deadba0[21] <<
", "
<< deadba0[22] <<
", "
<< deadba0[23] <<
", "
<< deadba0[24] <<
", "
<< deadba0[25] <<
", "
<< deadba0[26] <<
", "
<< deadba0[27] <<
", "
<< deadba0[28] <<
", "
<< deadba0[29] <<
", "
<< deadba0[30] <<
", "
<< deadba0[31] <<
"}; "
);
254
ATH_MSG_INFO
(
" Dead straws BA layer 1 "
);
255
ATH_MSG_INFO
(
"deadba1[] = { "
<< deadba1[0] <<
", "
<< deadba1[1] <<
", "
<< deadba1[2] <<
", "
<< deadba1[3] <<
", "
<< deadba1[4] <<
", "
<< deadba1[5] <<
", "
<< deadba1[6] <<
", "
<< deadba1[7] <<
", "
<< deadba1[8] <<
", "
<< deadba1[9] <<
", "
<< deadba1[10] <<
", "
<< deadba1[11] <<
", "
<< deadba1[12] <<
", "
<< deadba1[13] <<
", "
<< deadba1[14] <<
", "
<< deadba1[15] <<
", "
<< deadba1[16] <<
", "
<< deadba1[17] <<
", "
<< deadba1[18] <<
", "
<< deadba1[19] <<
", "
<< deadba1[20] <<
", "
<< deadba1[21] <<
", "
<< deadba1[22] <<
", "
<< deadba1[23] <<
", "
<< deadba1[24] <<
", "
<< deadba1[25] <<
", "
<< deadba1[26] <<
", "
<< deadba1[27] <<
", "
<< deadba1[28] <<
", "
<< deadba1[29] <<
", "
<< deadba1[30] <<
", "
<< deadba1[31] <<
"};"
);
256
ATH_MSG_INFO
(
" Dead straws BA layer 2"
);
257
ATH_MSG_INFO
(
"deadba2[]= { "
<< deadba2[0] <<
", "
<< deadba2[1] <<
", "
<< deadba2[2] <<
", "
<< deadba2[3] <<
", "
<< deadba2[4] <<
", "
<< deadba2[5] <<
", "
<< deadba2[6] <<
", "
<< deadba2[7] <<
", "
<< deadba2[8] <<
", "
<< deadba2[9] <<
", "
<< deadba2[10] <<
", "
<< deadba2[11] <<
", "
<< deadba2[12] <<
", "
<< deadba2[13] <<
", "
<< deadba2[14] <<
", "
<< deadba2[15] <<
", "
<< deadba2[16] <<
", "
<< deadba2[17] <<
", "
<< deadba2[18] <<
", "
<< deadba2[19] <<
", "
<< deadba2[20] <<
", "
<< deadba2[21] <<
", "
<< deadba2[22] <<
", "
<< deadba2[23] <<
", "
<< deadba2[24] <<
", "
<< deadba2[25] <<
", "
<< deadba2[26] <<
", "
<< deadba2[27] <<
", "
<< deadba2[28] <<
", "
<< deadba2[29] <<
", "
<< deadba2[30] <<
", "
<< deadba2[31] <<
"}; "
);
258
259
ATH_MSG_INFO
(
" Dead straws BC layer 0"
);
260
ATH_MSG_INFO
(
"deadbc0[] = { "
<< deadbc0[0] <<
", "
<< deadbc0[1] <<
", "
<< deadbc0[2] <<
", "
<< deadbc0[3] <<
", "
<< deadbc0[4] <<
", "
<< deadbc0[5] <<
", "
<< deadbc0[6] <<
", "
<< deadbc0[7] <<
", "
<< deadbc0[8] <<
", "
<< deadbc0[9] <<
", "
<< deadbc0[10] <<
", "
<< deadbc0[11] <<
", "
<< deadbc0[12] <<
", "
<< deadbc0[13] <<
", "
<< deadbc0[14] <<
", "
<< deadbc0[15] <<
", "
<< deadbc0[16] <<
", "
<< deadbc0[17] <<
", "
<< deadbc0[18] <<
", "
<< deadbc0[19] <<
", "
<< deadbc0[20] <<
", "
<< deadbc0[21] <<
", "
<< deadbc0[22] <<
", "
<< deadbc0[23] <<
", "
<< deadbc0[24] <<
", "
<< deadbc0[25] <<
", "
<< deadbc0[26] <<
", "
<< deadbc0[27] <<
", "
<< deadbc0[28] <<
", "
<< deadbc0[29] <<
", "
<< deadbc0[30] <<
", "
<< deadbc0[31] <<
"}; "
);
261
ATH_MSG_INFO
(
" Dead straws BC layer 1 "
);
262
ATH_MSG_INFO
(
"deadbc1[] = { "
<< deadbc1[0] <<
", "
<< deadbc1[1] <<
", "
<< deadbc1[2] <<
", "
<< deadbc1[3] <<
", "
<< deadbc1[4] <<
", "
<< deadbc1[5] <<
", "
<< deadbc1[6] <<
", "
<< deadbc1[7] <<
", "
<< deadbc1[8] <<
", "
<< deadbc1[9] <<
", "
<< deadbc1[10] <<
", "
<< deadbc1[11] <<
", "
<< deadbc1[12] <<
", "
<< deadbc1[13] <<
", "
<< deadbc1[14] <<
", "
<< deadbc1[15] <<
", "
<< deadbc1[16] <<
", "
<< deadbc1[17] <<
", "
<< deadbc1[18] <<
", "
<< deadbc1[19] <<
", "
<< deadbc1[20] <<
", "
<< deadbc1[21] <<
", "
<< deadbc1[22] <<
", "
<< deadbc1[23] <<
", "
<< deadbc1[24] <<
", "
<< deadbc1[25] <<
", "
<< deadbc1[26] <<
", "
<< deadbc1[27] <<
", "
<< deadbc1[28] <<
", "
<< deadbc1[29] <<
", "
<< deadbc1[30] <<
", "
<< deadbc1[31] <<
"};"
);
263
ATH_MSG_INFO
(
" Dead straws BC leayer 2"
);
264
ATH_MSG_INFO
(
"deadbc2[]= { "
<< deadbc2[0] <<
", "
<< deadbc2[1] <<
", "
<< deadbc2[2] <<
", "
<< deadbc2[3] <<
", "
<< deadbc2[4] <<
", "
<< deadbc2[5] <<
", "
<< deadbc2[6] <<
", "
<< deadbc2[7] <<
", "
<< deadbc2[8] <<
", "
<< deadbc2[9] <<
", "
<< deadbc2[10] <<
", "
<< deadbc2[11] <<
", "
<< deadbc2[12] <<
", "
<< deadbc2[13] <<
", "
<< deadbc2[14] <<
", "
<< deadbc2[15] <<
", "
<< deadbc2[16] <<
", "
<< deadbc2[17] <<
", "
<< deadbc2[18] <<
", "
<< deadbc2[19] <<
", "
<< deadbc2[20] <<
", "
<< deadbc2[21] <<
", "
<< deadbc2[22] <<
", "
<< deadbc2[23] <<
", "
<< deadbc2[24] <<
", "
<< deadbc2[25] <<
", "
<< deadbc2[26] <<
", "
<< deadbc2[27] <<
", "
<< deadbc2[28] <<
", "
<< deadbc2[29] <<
", "
<< deadbc2[30] <<
", "
<< deadbc2[31] <<
"}; "
);
265
266
ATH_MSG_INFO
(
" Dead straws EA"
);
267
ATH_MSG_INFO
(
"deadea[] = { "
<< deadea[0] <<
", "
<< deadea[1] <<
", "
<< deadea[2] <<
", "
<< deadea[3] <<
", "
<< deadea[4] <<
", "
<< deadea[5] <<
", "
<< deadea[6] <<
", "
<< deadea[7] <<
", "
<< deadea[8] <<
", "
<< deadea[9] <<
", "
<< deadea[10] <<
", "
<< deadea[11] <<
", "
<< deadea[12] <<
", "
<< deadea[13] <<
"}; "
);
268
ATH_MSG_INFO
(
" Dead straws EC"
);
269
ATH_MSG_INFO
(
"deadec[] = { "
<< deadec[0] <<
", "
<< deadec[1] <<
", "
<< deadec[2] <<
", "
<< deadec[3] <<
", "
<< deadec[4] <<
", "
<< deadec[5] <<
", "
<< deadec[6] <<
", "
<< deadec[7] <<
", "
<< deadec[8] <<
", "
<< deadec[9] <<
", "
<< deadec[10] <<
", "
<< deadec[11] <<
", "
<< deadec[12] <<
", "
<< deadec[13] <<
"}; "
);
270
271
ATH_MSG_INFO
(
"Recording StrawStatus Container. Number of dead straws "
<< line <<
" straws"
);
272
if
((
detStore
()->record(strawstatus,
m_par_strawstatuscontainerkey
)) != StatusCode::SUCCESS)
273
{
274
ATH_MSG_ERROR
(
"Could not record StrawStatus Container for key "
<<
m_par_strawstatuscontainerkey
);
275
return
StatusCode::FAILURE;
276
}
277
else
278
{
279
ATH_MSG_INFO
(
"Recorded StrawStatus container "
<<
m_par_strawstatuscontainerkey
<<
" with DetStore "
);
280
}
281
282
return
StatusCode::SUCCESS;
283
}
284
285
StatusCode
TRTStrawStatusWrite::readStatHTFromTextFile
(
const
std::string &filename)
286
{
287
288
StrawStatusContainer
*strawstatusHT =
new
TRTCond::StrawStatusMultChanContainer
();
289
290
strawstatusHT->
clear
();
291
292
ATH_MSG_INFO
(
" ***************** TRTStrawStatusWrite ************************ "
);
293
ATH_MSG_INFO
(
" readStatHTFromTextFile called with file name "
<< filename);
294
295
std::ifstream ifsHT(filename.c_str());
296
if
(ifsHT)
297
{
298
299
// initialize detector layers with Good like in rel21 (PH: Good and Xenon is treated as the same)
300
int
lineXe = 0;
301
TRTCond::ExpandedIdentifier
iddet(0, 0, 0, 0, 0,
TRTCond::ExpandedIdentifier::DETECTOR
);
302
strawstatusHT->
setStatus
(iddet,
TRTCond::StrawStatus::Good
);
303
304
for
(
int
l = 0; l < 3; l++)
305
{
306
307
TRTCond::ExpandedIdentifier
idbc(-1, l, 0, 0, 0,
TRTCond::ExpandedIdentifier::LAYERWHEEL
);
308
strawstatusHT->
setStatus
(idbc,
TRTCond::StrawStatus::Good
);
309
TRTCond::ExpandedIdentifier
idba(1, l, 0, 0, 0,
TRTCond::ExpandedIdentifier::LAYERWHEEL
);
310
strawstatusHT->
setStatus
(idba,
TRTCond::StrawStatus::Good
);
311
lineXe += 2;
312
}
313
for
(
int
l = 0; l < 14; l++)
314
{
315
TRTCond::ExpandedIdentifier
idec(-2, l, 0, 0, 0,
TRTCond::ExpandedIdentifier::LAYERWHEEL
);
316
strawstatusHT->
setStatus
(idec,
TRTCond::StrawStatus::Good
);
317
TRTCond::ExpandedIdentifier
idea(2, l, 0, 0, 0,
TRTCond::ExpandedIdentifier::LAYERWHEEL
);
318
strawstatusHT->
setStatus
(idea,
TRTCond::StrawStatus::Good
);
319
lineXe += 2;
320
}
321
322
int
bec, layer, sector, strawlayer, straw, status;
323
// txt file format : bec sector straw strawlayer layer dead/alive
324
int
line = 0;
325
int
lineAr = 0;
326
int
lineKr = 0;
327
int
lineEAr = 0;
328
int
lineEKr = 0;
329
330
while
(ifsHT >> bec >> sector >> strawlayer >> straw >> layer >> status)
331
{
332
int
level =
TRTCond::ExpandedIdentifier::STRAW
;
333
334
line += 1;
335
if
(straw < 0)
336
{
337
level =
TRTCond::ExpandedIdentifier::STRAWLAYER
;
338
straw = 0;
339
}
340
if
(strawlayer < 0)
341
{
342
level =
TRTCond::ExpandedIdentifier::MODULE
;
343
strawlayer = 0;
344
}
345
if
(sector < 0)
346
{
347
level =
TRTCond::ExpandedIdentifier::LAYERWHEEL
;
348
sector = 0;
349
}
350
if
(layer < 0)
351
{
352
level =
TRTCond::ExpandedIdentifier::BARRELEC
;
353
layer = 0;
354
}
355
if
(bec < -2)
356
{
357
level =
TRTCond::ExpandedIdentifier::DETECTOR
;
358
bec = -2;
359
}
360
361
ATH_MSG_INFO
(
"Layer/Wheel with Argon: bec: "
<< bec <<
" layer: "
<< layer <<
" phi: "
<< sector <<
" stl: "
<< strawlayer <<
" stw: "
<< straw <<
" status ("
<<
TRTCond::StrawStatus::Argon
<<
" is Argon): "
<< status <<
" level ("
<<
TRTCond::ExpandedIdentifier::LAYERWHEEL
<<
" is LAYERWHEEL) "
<< level);
362
TRTCond::ExpandedIdentifier
id(bec, layer, sector, strawlayer, straw, level);
363
if
(status == 4)
364
{
// Argon
365
strawstatusHT->
setStatus
(
id
,
TRTCond::StrawStatus::Argon
);
366
lineAr += 1;
367
lineXe -= 1;
368
}
369
else
if
(status == 5)
370
{
// Krypton
371
strawstatusHT->
setStatus
(
id
,
TRTCond::StrawStatus::Krypton
);
372
lineKr += 1;
373
lineXe -= 1;
374
}
375
else
if
(status == 6)
376
{
// EmulateArgon
377
strawstatusHT->
setStatus
(
id
,
TRTCond::StrawStatus::EmulateArgon
);
378
lineEAr += 1;
379
}
380
else
if
(status == 7)
381
{
// EmulateKrypton
382
strawstatusHT->
setStatus
(
id
,
TRTCond::StrawStatus::EmulateKrypton
);
383
lineEKr += 1;
384
lineXe -= 1;
385
}
386
else
387
{
388
ATH_MSG_FATAL
(
" The HT Status: "
<< status <<
" IS NOT ACCEPTED, 4 for Argon, 5 for Krypton!! "
389
<<
" Or 6 or 7 for emulated types!"
);
390
return
StatusCode::FAILURE;
391
}
392
}
393
ATH_MSG_INFO
(
"All the rest is running Xenon"
);
394
ATH_MSG_INFO
(
"HT Status. Read "
<< line <<
" layers. "
<<
" Xenon: "
<< lineXe <<
" Argon: "
<< lineAr <<
" Krypton: "
<< lineKr <<
" EmulateArgon: "
<< lineEAr <<
" EmulateKrypton: "
<< lineEKr);
395
396
if
((
detStore
()->record(strawstatusHT,
m_par_strawstatusHTcontainerkey
)) != StatusCode::SUCCESS)
397
{
398
ATH_MSG_ERROR
(
"Could not record StrawStatusHT Container for key "
<<
m_par_strawstatusHTcontainerkey
);
399
return
StatusCode::FAILURE;
400
}
401
else
402
{
403
ATH_MSG_INFO
(
"Recorded StrawStatusHT container "
<<
m_par_strawstatusHTcontainerkey
<<
" with DetStore "
);
404
}
405
}
406
else
407
{
408
ATH_MSG_WARNING
(
" The HT Status input file not found "
);
409
}
410
return
StatusCode::SUCCESS;
411
}
412
413
StatusCode
TRTStrawStatusWrite::readStatPermFromTextFile
(
const
std::string &filename)
414
{
415
416
StrawStatusContainer
*strawstatuspermanent =
new
TRTCond::StrawStatusMultChanContainer
();
417
strawstatuspermanent->
clear
();
418
419
ATH_MSG_INFO
(
" readStatPermFromTextFile called with file name "
<< filename);
420
421
std::ifstream ifspermanent(filename.c_str());
422
423
if
(ifspermanent)
424
{
425
426
// initialize all straws with status 'Good'
427
for
(std::vector<Identifier>::const_iterator it =
m_trtid
->straw_layer_begin(); it !=
m_trtid
->straw_layer_end(); ++it)
428
{
429
Identifier
id
=
m_trtid
->straw_id(*it, 0);
430
int
m =
m_trtid
->phi_module(
id
);
431
int
n =
m_trtid
->barrel_ec(
id
);
432
int
l =
m_trtid
->layer_or_wheel(
id
);
433
int
nStrawsInLayer =
m_trtid
->straw_max(*it);
434
int
sl =
m_trtid
->straw_layer(
id
);
435
for
(
int
i = 0; i <= nStrawsInLayer; i++)
436
{
437
id
=
m_trtid
->straw_id(*it, i);
438
TRTCond::ExpandedIdentifier
expid(n, l, m, sl, i,
TRTCond::ExpandedIdentifier::STRAW
);
439
strawstatuspermanent->
setStatus
(expid,
TRTCond::StrawStatus::Good
);
440
}
441
}
442
int
bec, layer, sector, strawlayer, straw, status;
443
// txt file format : bec sector straw strawlayer layer dead/alive
444
int
line = 0;
445
int
nmodu = 0;
446
while
(ifspermanent >> bec >> sector >> straw >> strawlayer >> layer >> status)
447
{
448
if
((status == 3) || (status == 4) || (status == 5))
449
status = 1;
450
if
(status != 1)
451
{
452
ATH_MSG_FATAL
(
" The Status Permanent: "
<< status <<
" IS NOT ACCEPTED, Use 1 for dead "
);
453
return
StatusCode::FAILURE;
454
}
455
int
level =
TRTCond::ExpandedIdentifier::STRAW
;
456
line += 1;
457
458
// Expect the line to ask for either an entire modules or an individual straw to be turned off
459
if
(strawlayer < 0)
460
{
461
std::cout <<
" Read permanent dead module from txt: "
<< bec <<
" ,sector "
<< sector <<
" ,straw "
<< straw <<
" ,strawlayer "
<< strawlayer <<
" ,layer "
<< layer <<
" ,status "
<< status << std::endl;
462
for
(std::vector<Identifier>::const_iterator it =
m_trtid
->straw_layer_begin(); it !=
m_trtid
->straw_layer_end(); ++it)
463
{
464
Identifier
id
=
m_trtid
->straw_id(*it, 0);
465
int
m =
m_trtid
->phi_module(
id
);
466
int
n =
m_trtid
->barrel_ec(
id
);
467
int
l =
m_trtid
->layer_or_wheel(
id
);
468
if
(n != bec || m != sector || l != layer)
469
continue
;
470
471
int
nStrawsInLayer =
m_trtid
->straw_max(*it);
472
int
sl =
m_trtid
->straw_layer(
id
);
473
for
(
int
i = 0; i <= nStrawsInLayer; i++)
474
{
475
id
=
m_trtid
->straw_id(*it, i);
476
TRTCond::ExpandedIdentifier
expid(bec, layer, sector, sl, i, level);
477
strawstatuspermanent->
setStatus
(expid,
TRTCond::StrawStatus::Dead
);
478
}
479
}
480
nmodu++;
481
}
482
else
483
{
484
TRTCond::ExpandedIdentifier
expid(bec, layer, sector, strawlayer, straw, level);
485
strawstatuspermanent->
setStatus
(expid,
TRTCond::StrawStatus::Dead
);
486
}
487
488
ATH_MSG_DEBUG
(
"Permanent dead ids: bec: "
<< bec <<
" layer: "
<< layer <<
" phi: "
<< sector <<
" stl: "
<< strawlayer <<
" stw: "
<< straw);
489
}
// end reading input text file
490
491
ATH_MSG_INFO
(
" Record Permanent Straw Status. Dead modules : "
<< nmodu <<
" Number of lines: "
<< line <<
" of dead identifiers "
);
492
if
((
detStore
()->record(strawstatuspermanent,
m_par_strawstatuspermanentcontainerkey
)) != StatusCode::SUCCESS)
493
{
494
ATH_MSG_ERROR
(
"Could not record StrawStatusPermanent Container for key "
<<
m_par_strawstatuspermanentcontainerkey
);
495
return
StatusCode::FAILURE;
496
}
497
else
498
{
499
ATH_MSG_INFO
(
"Recorded StrawStatusPermanent container "
<<
m_par_strawstatuspermanentcontainerkey
<<
" with DetStore "
);
500
}
501
}
502
return
StatusCode::SUCCESS;
503
}
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_FATAL
#define ATH_MSG_FATAL(x)
Definition
AthMsgStreamMacros.h:34
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
TRTStrawStatusWrite.h
TRT_BaseElement.h
AthAlgorithm::AthAlgorithm
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition
AthAlgorithm.cxx:10
AthCommonAlgorithm< Gaudi::Algorithm >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
Definition
AthCommonDataStore.h:95
TRTCond::ExpandedIdentifier
Identifier for TRT detector elements in the conditions code.
Definition
InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/ExpandedIdentifier.h:30
TRTCond::ExpandedIdentifier::STRAW
@ STRAW
Definition
InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/ExpandedIdentifier.h:37
TRTCond::ExpandedIdentifier::LAYERWHEEL
@ LAYERWHEEL
Definition
InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/ExpandedIdentifier.h:37
TRTCond::ExpandedIdentifier::MODULE
@ MODULE
Definition
InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/ExpandedIdentifier.h:37
TRTCond::ExpandedIdentifier::DETECTOR
@ DETECTOR
Definition
InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/ExpandedIdentifier.h:37
TRTCond::ExpandedIdentifier::BARRELEC
@ BARRELEC
Definition
InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/ExpandedIdentifier.h:37
TRTCond::ExpandedIdentifier::STRAWLAYER
@ STRAWLAYER
Definition
InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/ExpandedIdentifier.h:37
TRTCond::MultChanContainer::set
void set(const ExpandedIdentifier &id, const typename DaughterContainer::value_type &t)
set a value
Definition
MultChanContainer.h:223
TRTCond::MultChanContainer::clear
void clear()
clear all layercontainers
Definition
MultChanContainer.h:307
TRTCond::StrawStatusMultChanContainer
A COOL multichannel container for StrawStatus.
Definition
StrawStatusMultChanContainer.h:19
TRTCond::StrawStatusMultChanContainer::setStatus
void setStatus(const ExpandedIdentifier &id, unsigned int status)
set t0
Definition
StrawStatusMultChanContainer.h:33
TRTCond::StrawStatus::EmulateKrypton
@ EmulateKrypton
Definition
StrawStatus.h:18
TRTCond::StrawStatus::Argon
@ Argon
Definition
StrawStatus.h:18
TRTCond::StrawStatus::Good
@ Good
Definition
StrawStatus.h:18
TRTCond::StrawStatus::EmulateArgon
@ EmulateArgon
Definition
StrawStatus.h:18
TRTCond::StrawStatus::Krypton
@ Krypton
Definition
StrawStatus.h:18
TRTCond::StrawStatus::Dead
@ Dead
Definition
StrawStatus.h:18
TRTStrawStatusWrite::m_par_strawstatuspermanentcontainerkey
Gaudi::Property< std::string > m_par_strawstatuspermanentcontainerkey
Definition
TRTStrawStatusWrite.h:47
TRTStrawStatusWrite::set_status_permanent
virtual void set_status_permanent(StrawStatusContainer *ssc, Identifier offlineID, bool set)
Definition
TRTStrawStatusWrite.cxx:96
TRTStrawStatusWrite::m_par_stattextfilepermanent
Gaudi::Property< std::string > m_par_stattextfilepermanent
Definition
TRTStrawStatusWrite.h:51
TRTStrawStatusWrite::readStatHTFromTextFile
virtual StatusCode readStatHTFromTextFile(const std::string &filename)
Definition
TRTStrawStatusWrite.cxx:285
TRTStrawStatusWrite::finalize
virtual StatusCode finalize() override
Definition
TRTStrawStatusWrite.cxx:69
TRTStrawStatusWrite::set_status_temp
virtual void set_status_temp(StrawStatusContainer *ssc, Identifier offlineID, bool set)
Definition
TRTStrawStatusWrite.cxx:75
TRTStrawStatusWrite::m_par_stattextfileHT
Gaudi::Property< std::string > m_par_stattextfileHT
Definition
TRTStrawStatusWrite.h:52
TRTStrawStatusWrite::TRTStrawStatusWrite
TRTStrawStatusWrite(const std::string &name, ISvcLocator *pSvcLocator)
Definition
TRTStrawStatusWrite.cxx:21
TRTStrawStatusWrite::m_par_strawstatuscontainerkey
Gaudi::Property< std::string > m_par_strawstatuscontainerkey
Definition
TRTStrawStatusWrite.h:46
TRTStrawStatusWrite::m_par_strawstatusHTcontainerkey
Gaudi::Property< std::string > m_par_strawstatusHTcontainerkey
Definition
TRTStrawStatusWrite.h:48
TRTStrawStatusWrite::readStatPermFromTextFile
virtual StatusCode readStatPermFromTextFile(const std::string &filename)
Definition
TRTStrawStatusWrite.cxx:413
TRTStrawStatusWrite::StrawStatusContainer
TRTCond::StrawStatusMultChanContainer StrawStatusContainer
Definition
TRTStrawStatusWrite.h:29
TRTStrawStatusWrite::m_par_stattextfile
Gaudi::Property< std::string > m_par_stattextfile
Definition
TRTStrawStatusWrite.h:50
TRTStrawStatusWrite::readStatFromTextFile
virtual StatusCode readStatFromTextFile(const std::string &filename)
Definition
TRTStrawStatusWrite.cxx:117
TRTStrawStatusWrite::execute
virtual StatusCode execute(const EventContext &ctx) override
Execute method.
Definition
TRTStrawStatusWrite.cxx:64
TRTStrawStatusWrite::m_trtid
const TRT_ID * m_trtid
Definition
TRTStrawStatusWrite.h:54
TRTStrawStatusWrite::initialize
virtual StatusCode initialize() override
Definition
TRTStrawStatusWrite.cxx:23
set
STL class.
Identifier
Definition
IdentifierFieldParser.cxx:14
Generated on
for ATLAS Offline Software by
1.17.0