ATLAS Offline Software
Loading...
Searching...
No Matches
TRTStrawStatusRead.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 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
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 slay = m_trtid->straw_layer(id);
152 straw = m_trtid->straw(id);
153
154 stat = m_status->getStatus(id, Gaudi::Hive::currentContext());
155 if (stat != TRTCond::StrawStatus::Good)
156 {
157 if (bec == -2)
158 {
159 deadec[lay]++;
160 }
161 else if (bec == 2)
162 {
163 deadea[lay]++;
164 }
165 else if (bec == -1)
166 {
167 if (lay == 0)
168 deadbc0[sec]++;
169 if (lay == 1)
170 deadbc1[sec]++;
171 if (lay == 2)
172 deadbc2[sec]++;
173 }
174 else if (bec == 1)
175 {
176 if (lay == 0)
177 deadba0[sec]++;
178 if (lay == 1)
179 deadba1[sec]++;
180 if (lay == 2)
181 deadba2[sec]++;
182 }
183 }
184 }
185 }
186 }
187
188 if (m_printfolder == "StatusHT")
189 {
190 ATH_MSG_INFO(" Dump To File: StrawStatus HT ");
192 getStrawStatusHTContainer()->getall(flatcontainerHT);
193
194 ATH_MSG_INFO(" bec lay gas (Xe=2 Ar=4)");
195 for (std::vector<Identifier>::const_iterator it = m_trtid->straw_layer_begin(); it != m_trtid->straw_layer_end(); ++it)
196 {
197 Identifier id = m_trtid->straw_id(*it, 1);
198 bec = m_trtid->barrel_ec(id);
199 lay = m_trtid->layer_or_wheel(id);
200 sec = m_trtid->phi_module(id);
201 slay = m_trtid->straw_layer(id);
202 // print gas status for sector 1, strawlayer 1, straw 1 in this layer-or-wheel
203 if (sec == 1 && slay == 1)
204 {
205
206 int stat = int(m_status->getStatusHT(id, Gaudi::Hive::currentContext()));
207
208 ATH_MSG_INFO(bec << " " << lay << " " << stat);
209 }
210 }
211
212 for (TRTCond::StrawStatusContainer::FlatContainer::const_iterator
213 it = flatcontainerHT.begin();
214 it != flatcontainerHT.end(); ++it)
215 {
216 TRTCond::ExpandedIdentifier id = it->first;
217 const TRTCond::StrawStatus *status = it->second;
218 outfile << id << " " << int(status->getstatus()) << std::endl;
219 }
220 }
221
222 if (m_printfolder == "StatusPermanent")
223 {
224 ATH_MSG_INFO(" Dump To File: StrawStatus permanent ");
225
227
228 getStrawStatusPermanentContainer()->getall(flatcontainerpermanent);
229
230 std::cout << " StatusPermanent cobntainer first straws: " << std::endl;
231 for (TRTCond::StrawStatusContainer::FlatContainer::const_iterator
232 it = flatcontainerpermanent.begin();
233 it != flatcontainerpermanent.end(); ++it)
234 {
235 TRTCond::ExpandedIdentifier id = it->first;
236 const TRTCond::StrawStatus *status = it->second;
237 bec = id.becindextoid(id.index(1));
238 lay = id.index(2);
239 sec = id.index(3);
240 slay = id.index(4);
241 straw = id.index(5);
242 stat = int(status->getstatus());
243 if (stat != TRTCond::StrawStatus::Good)
244 {
245 outfile << bec << " " << sec << " " << straw << " " << slay << " " << lay << " " << stat << std::endl;
246
247 if (bec == -2)
248 {
249 deadec[lay]++;
250 }
251 else if (bec == 2)
252 {
253 deadea[lay]++;
254 }
255 else if (bec == -1)
256 {
257 if (lay == 0)
258 deadbc0[sec]++;
259 if (lay == 1)
260 deadbc1[sec]++;
261 if (lay == 2)
262 deadbc2[sec]++;
263 }
264 else if (bec == 1)
265 {
266 if (lay == 0)
267 deadba0[sec]++;
268 if (lay == 1)
269 deadba1[sec]++;
270 if (lay == 2)
271 deadba2[sec]++;
272 }
273 }
274 else
275 {
276 ngood++;
277 }
278
279 if (straw == 0 && slay == 0)
280 std::cout << bec << " " << sec << " " << straw << " " << slay << " " << lay << " " << stat << std::endl;
281 }
282 std::cout << " First straws: " << " ( Good = " << TRTCond::StrawStatus::Good << " Dead = " << TRTCond::StrawStatus::Dead << " ) " << std::endl;
283
284 for (std::vector<Identifier>::const_iterator it = m_trtid->straw_layer_begin(); it != m_trtid->straw_layer_end(); ++it)
285 {
286 int nStrawsInLayer = m_trtid->straw_max(*it);
287 for (int i = 0; i <= nStrawsInLayer; i++)
288 {
289
290 Identifier id = m_trtid->straw_id(*it, i);
291 bec = m_trtid->barrel_ec(id);
292 lay = m_trtid->layer_or_wheel(id);
293 sec = m_trtid->phi_module(id);
294 slay = m_trtid->straw_layer(id);
295 straw = m_trtid->straw(id);
296 stat = int(m_status->getStatusPermanent(id, Gaudi::Hive::currentContext()));
297
298 if (slay == 0 && straw == 0)
299 std::cout << bec << " " << lay << " " << sec << " " << stat << std::endl;
300 }
301 }
302 }
303
304 if(m_printfolder=="Status" || m_printfolder=="StatusPermanent"){
305 ATH_MSG_INFO ( " Dead straws BA layer 0" );
306 ATH_MSG_INFO ( "deadba0[] = { " << deadba0[0] << ", " << deadba0[1] << ", " << deadba0[2] << ", " << deadba0[3] << ", " <<
307 deadba0[4] << ", " << deadba0[5] << ", " << deadba0[6] << ", " << deadba0[7] << ", " <<
308 deadba0[8] << ", " << deadba0[9] << ", " << deadba0[10] << ", " << deadba0[11] << ", " <<
309 deadba0[12] << ", " << deadba0[13] << ", " << deadba0[14] << ", " << deadba0[15] << ", " <<
310 deadba0[16] << ", " << deadba0[17] << ", " << deadba0[18] << ", " << deadba0[19] << ", " <<
311 deadba0[20] << ", " << deadba0[21] << ", " << deadba0[22] << ", " << deadba0[23] << ", " <<
312 deadba0[24] << ", " << deadba0[25] << ", " << deadba0[26] << ", " << deadba0[27] << ", " <<
313 deadba0[28] << ", " << deadba0[29] << ", " << deadba0[30] << ", " << deadba0[31] << "}; " );
314 ATH_MSG_INFO ( " Dead straws BA layer 1 ");
315 ATH_MSG_INFO ( "deadba1[] = { " << deadba1[0] << ", " << deadba1[1] << ", " << deadba1[2] << ", " << deadba1[3] << ", " <<
316 deadba1[4] << ", " << deadba1[5] << ", " << deadba1[6] << ", " << deadba1[7] << ", " <<
317 deadba1[8] << ", " << deadba1[9] << ", " << deadba1[10] << ", " << deadba1[11] << ", " <<
318 deadba1[12] << ", " << deadba1[13] << ", " << deadba1[14] << ", " << deadba1[15] << ", " <<
319 deadba1[16] << ", " << deadba1[17] << ", " << deadba1[18] << ", " << deadba1[19] << ", " <<
320 deadba1[20] << ", " << deadba1[21] << ", " << deadba1[22] << ", " << deadba1[23] << ", " <<
321 deadba1[24] << ", " << deadba1[25] << ", " << deadba1[26] << ", " << deadba1[27] << ", " <<
322 deadba1[28] << ", " << deadba1[29] << ", " << deadba1[30] << ", " << deadba1[31] << "};");
323 ATH_MSG_INFO (" Dead straws BA layer 2");
324 ATH_MSG_INFO ( "deadba2[]= { " << deadba2[0] << ", " << deadba2[1] << ", " << deadba2[2] << ", " << deadba2[3] << ", " <<
325 deadba2[4] << ", " << deadba2[5] << ", " << deadba2[6] << ", " << deadba2[7] << ", " <<
326 deadba2[8] << ", " << deadba2[9] << ", " << deadba2[10] << ", " << deadba2[11] << ", " <<
327 deadba2[12] << ", " << deadba2[13] << ", " << deadba2[14] << ", " << deadba2[15] << ", " <<
328 deadba2[16] << ", " << deadba2[17] << ", " << deadba2[18] << ", " << deadba2[19] << ", " <<
329 deadba2[20] << ", " << deadba2[21] << ", " << deadba2[22] << ", " << deadba2[23] << ", " <<
330 deadba2[24] << ", " << deadba2[25] << ", " << deadba2[26] << ", " << deadba2[27] << ", " <<
331 deadba2[28] << ", " << deadba2[29] << ", " << deadba2[30] << ", " << deadba2[31] << "}; ");
332
333 ATH_MSG_INFO ( " Dead straws BC layer 0" );
334 ATH_MSG_INFO ( "deadbc0[] = { " << deadbc0[0] << ", " << deadbc0[1] << ", " << deadbc0[2] << ", " << deadbc0[3] << ", " <<
335 deadbc0[4] << ", " << deadbc0[5] << ", " << deadbc0[6] << ", " << deadbc0[7] << ", " <<
336 deadbc0[8] << ", " << deadbc0[9] << ", " << deadbc0[10] << ", " << deadbc0[11] << ", " <<
337 deadbc0[12] << ", " << deadbc0[13] << ", " << deadbc0[14] << ", " << deadbc0[15] << ", " <<
338 deadbc0[16] << ", " << deadbc0[17] << ", " << deadbc0[18] << ", " << deadbc0[19] << ", " <<
339 deadbc0[20] << ", " << deadbc0[21] << ", " << deadbc0[22] << ", " << deadbc0[23] << ", " <<
340 deadbc0[24] << ", " << deadbc0[25] << ", " << deadbc0[26] << ", " << deadbc0[27] << ", " <<
341 deadbc0[28] << ", " << deadbc0[29] << ", " << deadbc0[30] << ", " << deadbc0[31] << "}; " );
342 ATH_MSG_INFO ( " Dead straws BC layer 1 ");
343 ATH_MSG_INFO ( "deadbc1[] = { " << deadbc1[0] << ", " << deadbc1[1] << ", " << deadbc1[2] << ", " << deadbc1[3] << ", " <<
344 deadbc1[4] << ", " << deadbc1[5] << ", " << deadbc1[6] << ", " << deadbc1[7] << ", " <<
345 deadbc1[8] << ", " << deadbc1[9] << ", " << deadbc1[10] << ", " << deadbc1[11] << ", " <<
346 deadbc1[12] << ", " << deadbc1[13] << ", " << deadbc1[14] << ", " << deadbc1[15] << ", " <<
347 deadbc1[16] << ", " << deadbc1[17] << ", " << deadbc1[18] << ", " << deadbc1[19] << ", " <<
348 deadbc1[20] << ", " << deadbc1[21] << ", " << deadbc1[22] << ", " << deadbc1[23] << ", " <<
349 deadbc1[24] << ", " << deadbc1[25] << ", " << deadbc1[26] << ", " << deadbc1[27] << ", " <<
350 deadbc1[28] << ", " << deadbc1[29] << ", " << deadbc1[30] << ", " << deadbc1[31] << "};");
351 ATH_MSG_INFO (" Dead straws BC layer 2");
352 ATH_MSG_INFO ( "deadbc2[]= { " << deadbc2[0] << ", " << deadbc2[1] << ", " << deadbc2[2] << ", " << deadbc2[3] << ", " <<
353 deadbc2[4] << ", " << deadbc2[5] << ", " << deadbc2[6] << ", " << deadbc2[7] << ", " <<
354 deadbc2[8] << ", " << deadbc2[9] << ", " << deadbc2[10] << ", " << deadbc2[11] << ", " <<
355 deadbc2[12] << ", " << deadbc2[13] << ", " << deadbc2[14] << ", " << deadbc2[15] << ", " <<
356 deadbc2[16] << ", " << deadbc2[17] << ", " << deadbc2[18] << ", " << deadbc2[19] << ", " <<
357 deadbc2[20] << ", " << deadbc2[21] << ", " << deadbc2[22] << ", " << deadbc2[23] << ", " <<
358 deadbc2[24] << ", " << deadbc2[25] << ", " << deadbc2[26] << ", " << deadbc2[27] << ", " <<
359 deadbc2[28] << ", " << deadbc2[29] << ", " << deadbc2[30] << ", " << deadbc2[31] << "}; ");
360
361 ATH_MSG_INFO (" Dead straws EA" );
362 ATH_MSG_INFO ("deadea[] = { " << deadea[0] << ", " << deadea[1] << ", " << deadea[2] << ", " << deadea[3] << ", " <<
363 deadea[4] << ", " << deadea[5] << ", " << deadea[6] << ", " << deadea[7] << ", " <<
364 deadea[8] << ", " << deadea[9] << ", " << deadea[10] << ", " << deadea[11] << ", " <<
365 deadea[12] << ", " << deadea[13] << "}; ");
366 ATH_MSG_INFO (" Dead straws EC" );
367 ATH_MSG_INFO ("deadec[] = { " << deadec[0] << ", " << deadec[1] << ", " << deadec[2] << ", " << deadec[3] << ", " <<
368 deadec[4] << ", " << deadec[5] << ", " << deadec[6] << ", " << deadec[7] << ", " <<
369 deadec[8] << ", " << deadec[9] << ", " << deadec[10] << ", " << deadec[11] << ", " <<
370 deadec[12] << ", " << deadec[13] << "}; " );
371 ATH_MSG_INFO("Number of good layers or wheels: " << ngood);
372 }
373
374 return StatusCode::SUCCESS;
375}
376
384
392
#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 with parameters:
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
virtual StatusCode execute() override
const TRT_ID * m_trtid
trt id helper
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