ATLAS Offline Software
Loading...
Searching...
No Matches
TRTStrawStatusRead.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 "TRTStrawStatusRead.h"
14#include <fstream>
15#include <iostream>
16#include <iomanip>
17#include <sstream>
18#include <stdio.h>
24
25TRTStrawStatusRead::TRTStrawStatusRead(const std::string &name, ISvcLocator *pSvcLocator) : AthAlgorithm(name, pSvcLocator)
26{
27}
28
30{
31 // Get ID helper
32 ATH_MSG_INFO("TRTStrawStatusRead::initialize");
33 ATH_CHECK(detStore()->retrieve(m_trtid, "TRT_ID"));
34
35 // Get tool
36 ATH_CHECK(m_status.retrieve());
37
38 // Read keys
39 ATH_CHECK(m_statReadKey.initialize());
40 ATH_CHECK(m_permReadKey.initialize());
41 ATH_CHECK(m_statHTReadKey.initialize());
42
43 if( m_printfolder.empty() or (m_printfolder!="Status" and m_printfolder!="StatusHT" and m_printfolder!="StatusPermanent") ){
44 ATH_MSG_ERROR("You must specify the proper FolderToPrint, it could be 'Status', 'StatusHT' or 'StatusPermanent' ");
45 return StatusCode::FAILURE;
46 }
47
48 return StatusCode::SUCCESS;
49}
50
51StatusCode TRTStrawStatusRead::execute(const EventContext& /*ctx*/)
52{
53
54 StatusCode sc = StatusCode::SUCCESS;
55
56 ATH_MSG_INFO(" Dump the Straw Status to text file name: "<< m_outputfile);
58 if (sc.isFailure())
59 {
60 ATH_MSG_ERROR(" Error writing the text file");
61 }
62
63 return sc;
64}
65
67{
68 return StatusCode::SUCCESS;
69}
70
71StatusCode TRTStrawStatusRead::writeToTextFile(const std::string &filename)
72{
73 std::ofstream outfile(filename.c_str());
74
75 int stat, bec, lay, sec, slay, straw, level;
76 int deadba0[32];
77 int deadba1[32];
78 int deadba2[32];
79 int deadbc0[32];
80 int deadbc1[32];
81 int deadbc2[32];
82 int deadea[14];
83 int deadec[14];
84 for (int i = 0; i < 32; i++)
85 {
86 deadba0[i] = 0;
87 deadba1[i] = 0;
88 deadba2[i] = 0;
89 deadbc0[i] = 0;
90 deadbc1[i] = 0;
91 deadbc2[i] = 0;
92 }
93 for (int i = 0; i < 14; i++)
94 {
95 deadea[i] = 0;
96 deadec[i] = 0;
97 }
98 int ngood = 0;
99
100 if (m_printfolder == "Status")
101 {
102 ATH_MSG_INFO(" Dump To File: StrawStatus ");
104
105 getStrawStatusContainer()->getall(flatcontainer);
106
107 std::cout << " Status write output file in the same format as input " << std::endl;
108 for (TRTCond::StrawStatusContainer::FlatContainer::const_iterator
109 it = flatcontainer.begin();
110 it != flatcontainer.end(); ++it)
111 {
112 TRTCond::ExpandedIdentifier id = it->first;
113 const TRTCond::StrawStatus *status = it->second;
114 bec = id.becindextoid(id.index(1));
115 lay = id.index(2);
116 sec = id.index(3);
117 slay = id.index(4);
118 straw = id.index(5);
119 level = id.level();
120 stat = int(status->getstatus());
121 if (stat != TRTCond::StrawStatus::Good)
122 {
123 // record this straw in the output file in same format as in the original input text file
124 if (level == 4)
125 straw = -1;
126 if (level == 3)
127 {
128 straw = -1;
129 slay = -1;
130 }
131 if (level == 2)
132 {
133 straw = -1;
134 slay = -1;
135 sec = -1;
136 }
137 outfile << bec << " " << sec << " " << slay << " " << straw << " " << lay << " " << TRTCond::StrawStatus::Dead << std::endl;
138 }
139 }
140 std::cout << " Check all straws: " << " ( Good = " << TRTCond::StrawStatus::Good << " Dead = " << TRTCond::StrawStatus::Dead << std::endl;
141 for (std::vector<Identifier>::const_iterator it = m_trtid->straw_layer_begin(); it != m_trtid->straw_layer_end(); ++it)
142 {
143 int nStrawsInLayer = m_trtid->straw_max(*it);
144 for (int i = 0; i <= nStrawsInLayer; i++)
145 {
146
147 Identifier id = m_trtid->straw_id(*it, i);
148 bec = m_trtid->barrel_ec(id);
149 lay = m_trtid->layer_or_wheel(id);
150 sec = m_trtid->phi_module(id);
151
152
153 stat = m_status->getStatus(id, Gaudi::Hive::currentContext());
154 if (stat != TRTCond::StrawStatus::Good)
155 {
156 if (bec == -2)
157 {
158 deadec[lay]++;
159 }
160 else if (bec == 2)
161 {
162 deadea[lay]++;
163 }
164 else if (bec == -1)
165 {
166 if (lay == 0)
167 deadbc0[sec]++;
168 if (lay == 1)
169 deadbc1[sec]++;
170 if (lay == 2)
171 deadbc2[sec]++;
172 }
173 else if (bec == 1)
174 {
175 if (lay == 0)
176 deadba0[sec]++;
177 if (lay == 1)
178 deadba1[sec]++;
179 if (lay == 2)
180 deadba2[sec]++;
181 }
182 }
183 }
184 }
185 }
186
187 if (m_printfolder == "StatusHT")
188 {
189 ATH_MSG_INFO(" Dump To File: StrawStatus HT ");
191 getStrawStatusHTContainer()->getall(flatcontainerHT);
192
193 ATH_MSG_INFO(" bec lay gas (Xe=2 Ar=4)");
194 for (std::vector<Identifier>::const_iterator it = m_trtid->straw_layer_begin(); it != m_trtid->straw_layer_end(); ++it)
195 {
196 Identifier id = m_trtid->straw_id(*it, 1);
197 bec = m_trtid->barrel_ec(id);
198 lay = m_trtid->layer_or_wheel(id);
199 sec = m_trtid->phi_module(id);
200 slay = m_trtid->straw_layer(id);
201 // print gas status for sector 1, strawlayer 1, straw 1 in this layer-or-wheel
202 if (sec == 1 && slay == 1)
203 {
204
205 int stat = int(m_status->getStatusHT(id, Gaudi::Hive::currentContext()));
206
207 ATH_MSG_INFO(bec << " " << lay << " " << stat);
208 }
209 }
210
211 for (TRTCond::StrawStatusContainer::FlatContainer::const_iterator
212 it = flatcontainerHT.begin();
213 it != flatcontainerHT.end(); ++it)
214 {
215 TRTCond::ExpandedIdentifier id = it->first;
216 const TRTCond::StrawStatus *status = it->second;
217 outfile << id << " " << int(status->getstatus()) << std::endl;
218 }
219 }
220
221 if (m_printfolder == "StatusPermanent")
222 {
223 ATH_MSG_INFO(" Dump To File: StrawStatus permanent ");
224
226
227 getStrawStatusPermanentContainer()->getall(flatcontainerpermanent);
228
229 std::cout << " StatusPermanent cobntainer first straws: " << std::endl;
230 for (TRTCond::StrawStatusContainer::FlatContainer::const_iterator
231 it = flatcontainerpermanent.begin();
232 it != flatcontainerpermanent.end(); ++it)
233 {
234 TRTCond::ExpandedIdentifier id = it->first;
235 const TRTCond::StrawStatus *status = it->second;
236 bec = id.becindextoid(id.index(1));
237 lay = id.index(2);
238 sec = id.index(3);
239 slay = id.index(4);
240 straw = id.index(5);
241 stat = int(status->getstatus());
242 if (stat != TRTCond::StrawStatus::Good)
243 {
244 outfile << bec << " " << sec << " " << straw << " " << slay << " " << lay << " " << stat << std::endl;
245
246 if (bec == -2)
247 {
248 deadec[lay]++;
249 }
250 else if (bec == 2)
251 {
252 deadea[lay]++;
253 }
254 else if (bec == -1)
255 {
256 if (lay == 0)
257 deadbc0[sec]++;
258 if (lay == 1)
259 deadbc1[sec]++;
260 if (lay == 2)
261 deadbc2[sec]++;
262 }
263 else if (bec == 1)
264 {
265 if (lay == 0)
266 deadba0[sec]++;
267 if (lay == 1)
268 deadba1[sec]++;
269 if (lay == 2)
270 deadba2[sec]++;
271 }
272 }
273 else
274 {
275 ngood++;
276 }
277
278 if (straw == 0 && slay == 0)
279 std::cout << bec << " " << sec << " " << straw << " " << slay << " " << lay << " " << stat << std::endl;
280 }
281 std::cout << " First straws: " << " ( Good = " << TRTCond::StrawStatus::Good << " Dead = " << TRTCond::StrawStatus::Dead << " ) " << std::endl;
282
283 for (std::vector<Identifier>::const_iterator it = m_trtid->straw_layer_begin(); it != m_trtid->straw_layer_end(); ++it)
284 {
285 int nStrawsInLayer = m_trtid->straw_max(*it);
286 for (int i = 0; i <= nStrawsInLayer; i++)
287 {
288
289 Identifier id = m_trtid->straw_id(*it, i);
290 bec = m_trtid->barrel_ec(id);
291 lay = m_trtid->layer_or_wheel(id);
292 sec = m_trtid->phi_module(id);
293 slay = m_trtid->straw_layer(id);
294 straw = m_trtid->straw(id);
295 stat = int(m_status->getStatusPermanent(id, Gaudi::Hive::currentContext()));
296
297 if (slay == 0 && straw == 0)
298 std::cout << bec << " " << lay << " " << sec << " " << stat << std::endl;
299 }
300 }
301 }
302
303 if(m_printfolder=="Status" || m_printfolder=="StatusPermanent"){
304 ATH_MSG_INFO ( " Dead straws BA layer 0" );
305 ATH_MSG_INFO ( "deadba0[] = { " << deadba0[0] << ", " << deadba0[1] << ", " << deadba0[2] << ", " << deadba0[3] << ", " <<
306 deadba0[4] << ", " << deadba0[5] << ", " << deadba0[6] << ", " << deadba0[7] << ", " <<
307 deadba0[8] << ", " << deadba0[9] << ", " << deadba0[10] << ", " << deadba0[11] << ", " <<
308 deadba0[12] << ", " << deadba0[13] << ", " << deadba0[14] << ", " << deadba0[15] << ", " <<
309 deadba0[16] << ", " << deadba0[17] << ", " << deadba0[18] << ", " << deadba0[19] << ", " <<
310 deadba0[20] << ", " << deadba0[21] << ", " << deadba0[22] << ", " << deadba0[23] << ", " <<
311 deadba0[24] << ", " << deadba0[25] << ", " << deadba0[26] << ", " << deadba0[27] << ", " <<
312 deadba0[28] << ", " << deadba0[29] << ", " << deadba0[30] << ", " << deadba0[31] << "}; " );
313 ATH_MSG_INFO ( " Dead straws BA layer 1 ");
314 ATH_MSG_INFO ( "deadba1[] = { " << deadba1[0] << ", " << deadba1[1] << ", " << deadba1[2] << ", " << deadba1[3] << ", " <<
315 deadba1[4] << ", " << deadba1[5] << ", " << deadba1[6] << ", " << deadba1[7] << ", " <<
316 deadba1[8] << ", " << deadba1[9] << ", " << deadba1[10] << ", " << deadba1[11] << ", " <<
317 deadba1[12] << ", " << deadba1[13] << ", " << deadba1[14] << ", " << deadba1[15] << ", " <<
318 deadba1[16] << ", " << deadba1[17] << ", " << deadba1[18] << ", " << deadba1[19] << ", " <<
319 deadba1[20] << ", " << deadba1[21] << ", " << deadba1[22] << ", " << deadba1[23] << ", " <<
320 deadba1[24] << ", " << deadba1[25] << ", " << deadba1[26] << ", " << deadba1[27] << ", " <<
321 deadba1[28] << ", " << deadba1[29] << ", " << deadba1[30] << ", " << deadba1[31] << "};");
322 ATH_MSG_INFO (" Dead straws BA layer 2");
323 ATH_MSG_INFO ( "deadba2[]= { " << deadba2[0] << ", " << deadba2[1] << ", " << deadba2[2] << ", " << deadba2[3] << ", " <<
324 deadba2[4] << ", " << deadba2[5] << ", " << deadba2[6] << ", " << deadba2[7] << ", " <<
325 deadba2[8] << ", " << deadba2[9] << ", " << deadba2[10] << ", " << deadba2[11] << ", " <<
326 deadba2[12] << ", " << deadba2[13] << ", " << deadba2[14] << ", " << deadba2[15] << ", " <<
327 deadba2[16] << ", " << deadba2[17] << ", " << deadba2[18] << ", " << deadba2[19] << ", " <<
328 deadba2[20] << ", " << deadba2[21] << ", " << deadba2[22] << ", " << deadba2[23] << ", " <<
329 deadba2[24] << ", " << deadba2[25] << ", " << deadba2[26] << ", " << deadba2[27] << ", " <<
330 deadba2[28] << ", " << deadba2[29] << ", " << deadba2[30] << ", " << deadba2[31] << "}; ");
331
332 ATH_MSG_INFO ( " Dead straws BC layer 0" );
333 ATH_MSG_INFO ( "deadbc0[] = { " << deadbc0[0] << ", " << deadbc0[1] << ", " << deadbc0[2] << ", " << deadbc0[3] << ", " <<
334 deadbc0[4] << ", " << deadbc0[5] << ", " << deadbc0[6] << ", " << deadbc0[7] << ", " <<
335 deadbc0[8] << ", " << deadbc0[9] << ", " << deadbc0[10] << ", " << deadbc0[11] << ", " <<
336 deadbc0[12] << ", " << deadbc0[13] << ", " << deadbc0[14] << ", " << deadbc0[15] << ", " <<
337 deadbc0[16] << ", " << deadbc0[17] << ", " << deadbc0[18] << ", " << deadbc0[19] << ", " <<
338 deadbc0[20] << ", " << deadbc0[21] << ", " << deadbc0[22] << ", " << deadbc0[23] << ", " <<
339 deadbc0[24] << ", " << deadbc0[25] << ", " << deadbc0[26] << ", " << deadbc0[27] << ", " <<
340 deadbc0[28] << ", " << deadbc0[29] << ", " << deadbc0[30] << ", " << deadbc0[31] << "}; " );
341 ATH_MSG_INFO ( " Dead straws BC layer 1 ");
342 ATH_MSG_INFO ( "deadbc1[] = { " << deadbc1[0] << ", " << deadbc1[1] << ", " << deadbc1[2] << ", " << deadbc1[3] << ", " <<
343 deadbc1[4] << ", " << deadbc1[5] << ", " << deadbc1[6] << ", " << deadbc1[7] << ", " <<
344 deadbc1[8] << ", " << deadbc1[9] << ", " << deadbc1[10] << ", " << deadbc1[11] << ", " <<
345 deadbc1[12] << ", " << deadbc1[13] << ", " << deadbc1[14] << ", " << deadbc1[15] << ", " <<
346 deadbc1[16] << ", " << deadbc1[17] << ", " << deadbc1[18] << ", " << deadbc1[19] << ", " <<
347 deadbc1[20] << ", " << deadbc1[21] << ", " << deadbc1[22] << ", " << deadbc1[23] << ", " <<
348 deadbc1[24] << ", " << deadbc1[25] << ", " << deadbc1[26] << ", " << deadbc1[27] << ", " <<
349 deadbc1[28] << ", " << deadbc1[29] << ", " << deadbc1[30] << ", " << deadbc1[31] << "};");
350 ATH_MSG_INFO (" Dead straws BC layer 2");
351 ATH_MSG_INFO ( "deadbc2[]= { " << deadbc2[0] << ", " << deadbc2[1] << ", " << deadbc2[2] << ", " << deadbc2[3] << ", " <<
352 deadbc2[4] << ", " << deadbc2[5] << ", " << deadbc2[6] << ", " << deadbc2[7] << ", " <<
353 deadbc2[8] << ", " << deadbc2[9] << ", " << deadbc2[10] << ", " << deadbc2[11] << ", " <<
354 deadbc2[12] << ", " << deadbc2[13] << ", " << deadbc2[14] << ", " << deadbc2[15] << ", " <<
355 deadbc2[16] << ", " << deadbc2[17] << ", " << deadbc2[18] << ", " << deadbc2[19] << ", " <<
356 deadbc2[20] << ", " << deadbc2[21] << ", " << deadbc2[22] << ", " << deadbc2[23] << ", " <<
357 deadbc2[24] << ", " << deadbc2[25] << ", " << deadbc2[26] << ", " << deadbc2[27] << ", " <<
358 deadbc2[28] << ", " << deadbc2[29] << ", " << deadbc2[30] << ", " << deadbc2[31] << "}; ");
359
360 ATH_MSG_INFO (" Dead straws EA" );
361 ATH_MSG_INFO ("deadea[] = { " << deadea[0] << ", " << deadea[1] << ", " << deadea[2] << ", " << deadea[3] << ", " <<
362 deadea[4] << ", " << deadea[5] << ", " << deadea[6] << ", " << deadea[7] << ", " <<
363 deadea[8] << ", " << deadea[9] << ", " << deadea[10] << ", " << deadea[11] << ", " <<
364 deadea[12] << ", " << deadea[13] << "}; ");
365 ATH_MSG_INFO (" Dead straws EC" );
366 ATH_MSG_INFO ("deadec[] = { " << deadec[0] << ", " << deadec[1] << ", " << deadec[2] << ", " << deadec[3] << ", " <<
367 deadec[4] << ", " << deadec[5] << ", " << deadec[6] << ", " << deadec[7] << ", " <<
368 deadec[8] << ", " << deadec[9] << ", " << deadec[10] << ", " << deadec[11] << ", " <<
369 deadec[12] << ", " << deadec[13] << "}; " );
370 ATH_MSG_INFO("Number of good layers or wheels: " << ngood);
371 }
372
373 return StatusCode::SUCCESS;
374}
375
383
391
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
Interface to an output stream tool.
static Double_t sc
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
const ServiceHandle< StoreGateSvc > & detStore() const
void getall(typename DaughterContainer::FlatContainer &entries) const
get a flat vector with all values.
std::vector< std::pair< ExpandedIdentifier, const StrawStatus * > > FlatContainer
TRTStrawStatusRead(const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode writeToTextFile(const std::string &filename)
SG::ReadCondHandleKey< StrawStatusContainer > m_statReadKey
Gaudi::Property< std::string > m_outputfile
SG::ReadCondHandleKey< StrawStatusContainer > m_statHTReadKey
virtual StatusCode initialize() override
const TRT_ID * m_trtid
trt id helper
virtual StatusCode execute(const EventContext &ctx) override
Execute method.
TRTCond::StrawStatusMultChanContainer StrawStatusContainer
Gaudi::Property< std::string > m_printfolder
virtual const StrawStatusContainer * getStrawStatusContainer() const
SG::ReadCondHandleKey< StrawStatusContainer > m_permReadKey
ToolHandle< ITRT_StrawStatusSummaryTool > m_status
virtual const StrawStatusContainer * getStrawStatusPermanentContainer() const
virtual StatusCode finalize() override
virtual const StrawStatusContainer * getStrawStatusHTContainer() const
Definition index.py:1