ATLAS Offline Software
TileInfoDump.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // Gaudi includes
6 #include "GaudiKernel/ITHistSvc.h"
7 
8 // Athena includes
12 #include "StoreGate/ReadHandle.h"
13 
14 // Calo includes
15 #include "CaloIdentifier/TileID.h"
16 #include "CaloDetDescr/CaloDetDescrElement.h"
17 
18 // Tile includes
19 #include "TileInfoDump.h"
26 
27 #include "TH2.h"
28 
29 #include <iomanip>
30 #include <sstream>
31 #include <fstream>
32 
34 
35 TileInfoDump::TileInfoDump(const std::string& name, ISvcLocator* pSvcLocator)
36  : AthAlgorithm(name, pSvcLocator)
37  , m_thistSvc(nullptr)
38  , m_tileHWID(nullptr)
39  , m_tileID(nullptr)
40  , m_h_badCellA(nullptr)
41  , m_h_badCellBC(nullptr)
42  , m_h_badCellD(nullptr)
43  , m_h_badCellGap(nullptr)
44  , m_h_badCell(nullptr)
45  , m_tileInfo(nullptr)
46 
47 {
48  declareProperty("AthenaIsOnline", m_isOnline = false, "Availability of COOL folders depends on Athena mode");
49  declareProperty("PrintEmscale", m_printEmscale = false, "Switch on calibration chain printout");
50  declareProperty("PrintEmscaleOnl", m_printEmscaleOnl = false, "Switch on online calibration chain printout");
51  declareProperty("PrintLaser", m_printLaser = false, "Switch on all laser constants printout");
52  declareProperty("PrintIntegrator", m_printIntegrator = false, "Switch on integrator printout");
53  declareProperty("PrintPedestals", m_printPedestals = false, "Switch on Pedstals print out");
54  declareProperty("PrintTimingCorrections", m_printTimingCorrections = false, "Switch on Timing Corrections print out");
55  declareProperty("PrintPulseShapes", m_printPulseShapes = false, "Switch on Pulse Shape print out");
56  declareProperty("PrintOfcsCool", m_printOfcsCool = false, "Switch on OFC print out");
57  declareProperty("PrintPulseShapesStep", m_printPulseShapesStep = 0.5, "Time step (ns) of PulseShapes print out");
58  declareProperty("PrintBadChannels", m_printBadChannels = false, "Switch on Bad Channels print out");
59  declareProperty("PrintBadCells", m_printBadCells = false, "Switch on Bad Cells print out");
60  declareProperty("PrintMuID", m_printMuID = false, "Switch on MuID threshold print out");
61  declareProperty("Print1gNoise", m_print1gNoise = false, "Switch on 1g noise print out");
62  declareProperty("PrintOfcRos", m_printOfcRos = 0, "Print OFC for this ros (0 by default)");
63  declareProperty("PrintOfcDrawer", m_printOfcDrawer = 0, "Print OFC for this drawer (0 by default)");
64  declareProperty("PrintOfcChannel", m_printOfcChannel = 0, "Print OFC for this channel (0 by default)");
65  declareProperty("TileInfoName", m_infoName = "TileInfo");
66 }
67 
68 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
69 
71 }
72 
73 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
75 
76  ATH_MSG_DEBUG( "in initialize()" );
77 
78  //=== EventInfo key
80 
81  //=== Get TileHWID
82  CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
83 
84  //=== CaloDetDescrManager
86 
87  //=== Get TileBadChanTool
88  CHECK( m_tileBadChanTool.retrieve() );
89 
90  //=== Get TileCondToolEmscale
91  CHECK( m_tileToolEmscale.retrieve() );
92 
93  //=== Get TileCondToolIntegrator
94  CHECK( m_tileToolIntegrator.retrieve() );
95 
96  //=== Get TileCondToolTiming
97  CHECK( m_tileToolTiming.retrieve() );
98 
99  //=== Get TileCondToolPulseShape
100  CHECK( m_tileToolPulseShape.retrieve() );
101 
102  //=== Get TileCondToolOfcCool
103  CHECK( m_tileToolOfcCool.retrieve() );
104 
105  //=== Get TileCondToolNoiseSample
106  CHECK( m_tileToolNoiseSample.retrieve() );
107 
108  //=== Get TileCondToolAutoCr
109  CHECK( m_tileToolAutoCr.retrieve() );
110 
111  //=== Get TileCondToolMuID
112  CHECK( m_tileToolMuID.retrieve() );
113 
114  //=== Get TileCondToolNoiseRawChn
116  CHECK( m_tileToolNoiseRawChn.retrieve() );
117  }
118 
119  //=== Retrieve TileID helpers from det store
120  CHECK( detStore()->retrieve(m_tileID, "TileID") );
121 
122  //--- Get a handle on the NTuple and histogramming service
123  CHECK( service("THistSvc", m_thistSvc) );
124 
125  //=== Get TileInfo and set max ADC counts
128 
129  //--- Histogram initialization
130  m_h_badCellA = new TH2F("m_h_badCellA", "Etaphi_maskedCell A", 34, -1.7, 1.7, 64, -3.2, 3.2);
131  m_h_badCellBC = new TH2F("m_h_badCellBC", "Etaphi_maskedCell BC", 34, -1.7, 1.7, 64, -3.2, 3.2);
132  m_h_badCellD = new TH2F("m_h_badCellD", "Etaphi_maskedCell D", 34, -1.7, 1.7, 64, -3.2, 3.2);
133  m_h_badCellGap = new TH2F("m_h_badCellGap", "Etaphi_maskedCell Gap", 34, -1.7, 1.7, 64, -3.2, 3.2);
134  m_h_badCell = new TH2F("m_h_badCell", "Etaphi_maskedCell All", 34, -1.7, 1.7, 64, -3.2, 3.2);
135 
136  CHECK( m_thistSvc->regHist("/AANT/m_h_badCellA", m_h_badCellA) );
137  CHECK( m_thistSvc->regHist("/AANT/m_h_badCellBC", m_h_badCellBC) );
138  CHECK( m_thistSvc->regHist("/AANT/m_h_badCellD", m_h_badCellD) );
139  CHECK( m_thistSvc->regHist("/AANT/m_h_badCellGap", m_h_badCellGap) );
140  CHECK( m_thistSvc->regHist("/AANT/m_h_badCell", m_h_badCell) );
141 
142  return StatusCode::SUCCESS;
143 
144 }
145 //
146 //___________________________________________________________________________________________
148 
149  ATH_MSG_DEBUG( " in execute()" );
150 
152  ATH_CHECK( eventInfo.isValid() );
153 
154  ATH_MSG_DEBUG( "Event: ["
155  << eventInfo->runNumber() << ", "
156  << eventInfo->eventNumber() << ", "
157  << eventInfo->lumiBlock() << ": "
158  << eventInfo->timeStamp() << "]" );
159 
160 
161 
162 
163  m_h_badCell->Fill(1., 1.5, 1.);
164 
165  //=== Print out stuff
168  if (m_printLaser) printLaser();
173  if (m_printOfcsCool) printOfcs();
174  if (m_printMuID) printMuID();
176 
177  //=== Print Bad Channels
180 
181  return StatusCode::SUCCESS;
182 }
183 
184 //
185 //___________________________________________________________________________________________
187  ATH_MSG_DEBUG( "In printEmscale()" );
188 
189  for (unsigned int ros = 0; ros < TileCalibUtils::MAX_ROS; ++ros) {
190  unsigned int drawerMax = TileCalibUtils::getMaxDrawer(ros);
191  for (unsigned int drawer = 0; drawer < drawerMax; ++drawer) {
192  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
193  for (unsigned int channel = 0; channel < TileCalibUtils::MAX_CHAN; ++channel) {
194  for (unsigned int adc = 0; adc < TileCalibUtils::MAX_GAIN; ++adc) {
195 
196  msg(MSG::INFO) << ros << "/" << std::setw(2)
197  << drawer << "/" << std::setw(2)
198  << channel << "/"
199  << adc << " : " << std::fixed << std::right << std::setw(9) << std::setprecision(5)
200  << m_tileToolEmscale->doCalibCis(drawerIdx, channel, adc, 1.) << " (CIS) | "
201  << std::fixed << std::right << std::setw(9) << std::setprecision(5)
202  << m_tileToolEmscale->doCalibLas(drawerIdx, channel, 1.) << " (LAS) | "
203  << std::fixed << std::right << std::setw(9) << std::setprecision(5)
204  << m_tileToolEmscale->doCalibCes(drawerIdx, channel, 1.) << " (CES) | "
205  << std::fixed << std::right << std::setw(9) << std::setprecision(5)
206  << m_tileToolEmscale->doCalibEms(drawerIdx, channel, 1.) << " (EMS) | ";
207 
208  float chanCalMeV = m_tileToolEmscale->channelCalib(drawerIdx, channel, adc, 1.
210 
211  msg(MSG::INFO) << std::fixed << std::right << std::setw(9) << std::setprecision(5)
212  << chanCalMeV << " (total)";
213 
214  //=== "undo" online calibration only if this functionality is available
215  if (m_tileToolEmscale->getOnlCacheUnit() != TileRawChannelUnit::Invalid) {
216  msg(MSG::INFO) << std::fixed << std::right << std::setw(9) << std::setprecision(5)
217  << m_tileToolEmscale->channelCalib(drawerIdx, channel, adc, chanCalMeV
219  << " (onlMev->oflADC)";
220  }
221 
222  msg(MSG::INFO) << endmsg;
223 
224  } //end adc
225  } //end channel
226  } //end drawer
227  } //end ros
228 
229  //===================================================================
230  //=== Perform a CIS energy scan to test CIS LUT
231  //===================================================================
232  ATH_MSG_INFO( "Performing an energy scan to test CIS LUT" );
233 
234  unsigned int ros = 1;
235  unsigned int drawer = 0;
236  unsigned int channel = 0;
237  for (unsigned int adc = 0; adc < TileCalibUtils::MAX_GAIN; ++adc) {
238  for (int adcCounts = 0; adcCounts <= m_i_ADCmax; ++adcCounts) {
239  double energy = static_cast<float>(adcCounts);
240  ATH_MSG_INFO( ros << "/" << drawer << "/" << channel << "/" << adc << " : "
241  << "ADC counts = " << adcCounts
242  << "\t---> " << m_tileToolEmscale->doCalibCis(20, 0, adc, energy) );
243 
244  } //end adcCounts
245  } //end adc
246 
247 }
248 
249 //
250 //___________________________________________________________________________________________
252 
253  ATH_MSG_DEBUG( "In printEmscaleOnl()" );
254 
255  for (unsigned int ros = 0; ros < TileCalibUtils::MAX_ROS; ++ros) {
256  unsigned int drawerMax = TileCalibUtils::getMaxDrawer(ros);
257  for (unsigned int drawer = 0; drawer < drawerMax; ++drawer) {
258  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
259  for (unsigned int channel = 0; channel < TileCalibUtils::MAX_CHAN; ++channel) {
260  for (unsigned int adc = 0; adc < TileCalibUtils::MAX_GAIN; ++adc) {
261 
262  msg(MSG::INFO) << ros << "/" << std::setw(2) << drawer << "/" << std::setw(2) << channel << "/" << adc << " : "
263  << std::fixed << std::right << std::setw(9) << std::setprecision(5)
264  << m_tileToolEmscale->doCalibCisOnl(drawerIdx, channel, adc, 1.) << " (ONL_CIS) | "
265  << std::fixed << std::right << std::setw(9) << std::setprecision(5)
266  << m_tileToolEmscale->doCalibLasOnl(drawerIdx, channel, 1.) << " (ONL_LAS) | "
267  << std::fixed << std::right << std::setw(9) << std::setprecision(5)
268  << m_tileToolEmscale->doCalibCesOnl(drawerIdx, channel, 1.) << " (ONL_CES) | "
269  << std::fixed << std::right << std::setw(9) << std::setprecision(5)
270  << m_tileToolEmscale->doCalibEmsOnl(drawerIdx, channel, 1.) << " (ONL_EMS) | ";
271 
272  float chanCalMeV = m_tileToolEmscale->channelCalibOnl(drawerIdx, channel, adc, 1., TileRawChannelUnit::OnlineMegaElectronVolts);
273 
274  msg(MSG::INFO) << std::fixed << std::right << std::setw(9) << std::setprecision(5)
275  << chanCalMeV << " (total)";
276 
277  msg(MSG::INFO) << endmsg;
278 
279  } //end adc
280  } //end channel
281  } //end drawer
282  } //end ros
283 
284 }
285 
286 //
287 //___________________________________________________________________________________________
289  ATH_MSG_DEBUG( "In printLaser()" );
290 
291  for (unsigned int ros = 0; ros < TileCalibUtils::MAX_ROS; ++ros) {
292  unsigned int drawerMax = TileCalibUtils::getMaxDrawer(ros);
293  for (unsigned int drawer = 0; drawer < drawerMax; ++drawer) {
294  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
295  for (unsigned int channel = 0; channel < TileCalibUtils::MAX_CHAN; ++channel) {
296  for (unsigned int adc = 0; adc < TileCalibUtils::MAX_GAIN; ++adc) {
297 
298  msg(MSG::INFO) << ros << "/" << std::setw(2)
299  << drawer << "/" << std::setw(2)
300  << channel << "/"
301  << adc << " : "
302  << std::fixed << std::right << std::setw(9) << std::setprecision(5)
303  << m_tileToolEmscale->getCesRefLas(drawerIdx, channel, adc) << " (absolute) | "
304  << std::fixed << std::right << std::setw(9) << std::setprecision(5)
305  << m_tileToolEmscale->doCalibLas(drawerIdx, channel, 1.) << " (channel) | "
306  << std::fixed << std::right << std::setw(9) << std::setprecision(5)
307  << m_tileToolEmscale->getLasFiber(drawerIdx, channel) << " (fiber) | "
308  << std::fixed << std::right << std::setw(9) << std::setprecision(5)
309  << m_tileToolEmscale->getLasPartition(drawerIdx) << " (partition)";
310 
311  msg(MSG::INFO) << endmsg;
312 
313  } //end adc
314  } //end channel
315  } //end drawer
316  } //end ros
317 
318 }
319 
320 //
321 //___________________________________________________________________________________________
323 
324  for (unsigned int ros = 0; ros < TileCalibUtils::MAX_ROS; ++ros) {
325  unsigned int drawerMax = TileCalibUtils::getMaxDrawer(ros);
326  for (unsigned int drawer = 0; drawer < drawerMax; ++drawer) {
327  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
328  for (unsigned int channel = 0; channel < TileCalibUtils::MAX_CHAN; ++channel) {
329  for (unsigned int adc = 0; adc < 6; ++adc) {
330 
331  //=== Output from the tool
332  ATH_MSG_INFO( ros << "/"
333  << drawer << "/"
334  << channel<< "/"
335  << adc << " : "
336  << "Gain=" << m_tileToolIntegrator->getGain(drawerIdx, channel, adc) << "\t"
337  << m_tileToolIntegrator->getGainError(drawerIdx, channel, adc) << "\t"
338  << m_tileToolIntegrator->getChi2(drawerIdx, channel, adc) << "\t"
339  << "Ped=" << m_tileToolIntegrator->getPedestal(drawerIdx, channel, adc) << "\t"
340  << m_tileToolIntegrator->getDACForPed(drawerIdx, channel, adc) << "\t"
341  << m_tileToolIntegrator->getSigmaOfPed(drawerIdx, channel, adc) << "\t"
342  << m_tileToolIntegrator->getRMSOfPed(drawerIdx, channel, adc) << "\t"
343  << m_tileToolIntegrator->getSigmaOfRMS(drawerIdx, channel, adc) << "\t" );
344 
345  } //end adc
346  } //end channel
347  } //end drawer
348  } //end ros
349 
350 }
351 
352 //
353 //___________________________________________________________________________________________
355 
356  const EventContext &ctx = Gaudi::Hive::currentContext();
357 
358  std::vector<float> vecAutoCr;
359 
360  for (unsigned int ros = 0; ros < TileCalibUtils::MAX_ROS; ++ros) {
361  unsigned int drawerMax = TileCalibUtils::getMaxDrawer(ros);
362  for (unsigned int drawer = 0; drawer < drawerMax; ++drawer) {
363  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
364  for (unsigned int channel = 0; channel < TileCalibUtils::MAX_CHAN; ++channel) {
365  for (unsigned int adc = 0; adc < TileCalibUtils::MAX_GAIN; ++adc) {
366 
367  //=== Retrieve autocorrelations
368  m_tileToolAutoCr->getAutoCorr(drawerIdx, channel, adc, vecAutoCr);
369 
370  //=== Output from the tool
371  msg(MSG::INFO) << ros << "/"
372  << drawer << "/"
373  << channel << "/"
374  << adc << " : "
375  << "Pedestal level=" << m_tileToolNoiseSample->getPed(drawerIdx, channel, adc, TileRawChannelUnit::ADCcounts, ctx) << "\t"
376  << "HFN=" << m_tileToolNoiseSample->getHfn(drawerIdx, channel, adc, TileRawChannelUnit::ADCcounts, ctx) << "\t"
377  << "LFN=" << m_tileToolNoiseSample->getLfn(drawerIdx, channel, adc, TileRawChannelUnit::ADCcounts, ctx) << "\t"
378  << "OF=" << m_tileToolNoiseRawChn->getNoise(drawerIdx, channel, adc, TileRawChannelUnit::ADCcounts, ctx) << "\t"
379  << "ACR = ";
380  for (unsigned int i = 0; i < vecAutoCr.size(); ++i) {
381  msg(MSG::INFO) << vecAutoCr[i] << " ";
382  }
383 
384  msg(MSG::INFO) << endmsg;
385 
386  } //end adc
387  } //end channel
388  } //end drawer
389  } //end ros
390 
391 }
392 
393 //
394 //___________________________________________________________________________________________
396 
397  const EventContext &ctx = Gaudi::Hive::currentContext();
398 
399  std::vector<float> vecAutoCr;
400 
401  for (unsigned int ros = 0; ros < TileCalibUtils::MAX_ROS; ++ros) {
402  unsigned int drawerMax = TileCalibUtils::getMaxDrawer(ros);
403  for (unsigned int drawer = 0; drawer < drawerMax; ++drawer) {
404  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
405  for (unsigned int channel = 0; channel < TileCalibUtils::MAX_CHAN; ++channel) {
406  for (unsigned int adc = 0; adc < TileCalibUtils::MAX_GAIN; ++adc) {
407 
408  //=== Output from the tool
409  ATH_MSG_INFO( "1g Noise (ros/dr/ch/gain) "
410  << ros << "/"
411  << drawer << "/"
412  << channel << "/"
413  << adc << " : "
414  << "Electronic (ADC counts) " << m_tileToolNoiseRawChn->getElectronicNoise(drawerIdx, channel, adc, TileRawChannelUnit::ADCcounts, ctx) << "\t"
415  << "PileUp (MeV) " << m_tileToolNoiseRawChn->getPileUpNoise(drawerIdx, channel, adc, ctx) );
416 
417  } //end adc
418  } //end channel
419  } //end drawer
420  } //end ros
421 
422 }
423 
424 //
425 //___________________________________________________________________________________________
427 
428  //=== In Athena online mode only channel offset is available
429  //=== In offline mode everything is available
430  if (m_isOnline) {
431  ATH_MSG_INFO( "Athena Online mode detected: only channel offset available." );
432  for (unsigned int ros = 0; ros < TileCalibUtils::MAX_ROS; ++ros) {
433  unsigned int drawerMax = TileCalibUtils::getMaxDrawer(ros);
434  for (unsigned int drawer = 0; drawer < drawerMax; ++drawer) {
435  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
436  for (unsigned int channel = 0; channel < TileCalibUtils::MAX_CHAN; ++channel) {
437  for (unsigned int adc = 0; adc < TileCalibUtils::MAX_GAIN; ++adc) {
438 
439  ATH_MSG_INFO( ros << "/"
440  << drawer << "/"
441  << channel << "/"
442  << adc << " : "
443  << "Time correction: " << m_tileToolTiming->getSignalPhase(drawerIdx, channel, adc)
444  << "\tchannel: " << m_tileToolTiming->getChannelOffset(drawerIdx, channel, adc) );
445 
446  } //end adc
447  } //end channel
448  } //end drawer
449  } //end ros
450  } else { // offline mode
451  for (unsigned int ros = 0; ros < TileCalibUtils::MAX_ROS; ++ros) {
452  unsigned int drawerMax = TileCalibUtils::getMaxDrawer(ros);
453  for (unsigned int drawer = 0; drawer < drawerMax; ++drawer) {
454  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
455  for (unsigned int channel = 0; channel < TileCalibUtils::MAX_CHAN; ++channel) {
456  for (unsigned int adc = 0; adc < TileCalibUtils::MAX_GAIN; ++adc) {
457 
458  //.. GL 130429: remove references to obsolete condDB folders.
459  ATH_MSG_INFO( ros << "/"
460  << drawer << "/"
461  << channel << "/"
462  << adc << " : "
463  << "Time correction: " << m_tileToolTiming->getSignalPhase(drawerIdx, channel, adc)
464  << "\tchannel: " << m_tileToolTiming->getChannelOffset(drawerIdx, channel, adc) );
465 
466  } //end adc
467  } //end channel
468  } //end drawer
469  } //end ros
470  } //offline mode
471 }
472 
473 //
474 //___________________________________________________________________________________________
476 
477  //=== dump default channel only
478  unsigned int ros = 0;
479  unsigned int drawer = 0;
480  unsigned int channel = 0;
481  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
482 
483  float y = 0;
484  float dy = 0;
485  float time = 0;
486 
487  float startpoint = -100.0;
488  float endpoint = 150.0;
489 
490  const EventContext &ctx = Gaudi::Hive::currentContext();
491 
492  //=== force m_printPulseShapesStep to have positive value
494  unsigned int npoint = static_cast<unsigned int>((endpoint - startpoint) / m_printPulseShapesStep);
495 
496  for (unsigned int adc = 0; adc < TileCalibUtils::MAX_GAIN; ++adc) {
497  for (unsigned int point = 0; point < npoint; ++point) {
498  time = startpoint + point * m_printPulseShapesStep;
499  //if(m_tileToolPulseShape->getPulseShapeYDY(drawerIdx,channel,adc,time,y,dy)) {
500  m_tileToolPulseShape->getPulseShapeYDY(drawerIdx, channel, adc, time, y, dy, ctx);
501  ATH_MSG_INFO( ros << "/" << std::setw(2)
502  << drawer << "/" << std::setw(2)
503  << channel << "/"
504  << adc << " : "
505  << "Time, Y, DY: " << std::fixed << std::right << std::setw(9) << std::setprecision(6) << time
506  << " " << std::fixed << std::right << std::setw(11) << std::setprecision(8) << y
507  << " " << std::fixed << std::right << std::setw(11) << std::setprecision(8) << dy );
508 
509  //}
510  } // end point
511  } //end adc
512 
513 }
514 
515 //
516 //___________________________________________________________________________________________
518 
519  ATH_MSG_DEBUG( "in printBadChannels()" );
520 
521  std::vector<std::string> vmod;
522 
523  std::ostringstream sSum;
524  std::ostringstream sDet;
525 
526  //=== Tile partitions counters
527  const unsigned int npar = 4;
528  unsigned int bchn[npar];
529  unsigned int badc[npar];
530  for (unsigned int ros = 0; ros < npar; ++ros) {
531  bchn[ros] = 0;
532  badc[ros] = 0;
533  }
534 
535  sDet << std::endl;
536  sDet << ">>>>>>>>>>>>>>> Detailed list of BAD Channels/ADCs <<<<<<<<<<<<<<<<" << std::endl;
537  for (unsigned int ros = 0; ros < TileCalibUtils::MAX_ROS; ++ros) {
538  unsigned int drawerMax = TileCalibUtils::getMaxDrawer(ros);
539  for (unsigned int drawer = 0; drawer < drawerMax; ++drawer) {
540  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
541 
542  unsigned int badadc = 0; //... counter of bad ADCs per drawer
543  unsigned int badchn = 0; //... counter of bad channels per drawer
544 
545  for (unsigned int channel = 0; channel < TileCalibUtils::MAX_CHAN; ++channel) {
546 
547  //=== check channel status
548  TileBchStatus status = m_tileBadChanTool->getChannelStatus(drawerIdx, channel);
549  if (status.isAffected()) {
550  if (status.isBad()) {
552  << "/ch" << channel << " :B: "
553  << "has at least one problem: " << status.getString() << std::endl;
554 
555  if (ros > 0) {
556  badchn++;
557  bchn[ros - 1]++;
558  }
559  } else
561  << "/ch" << channel << " :-: "
562  << "has at least one problem: " << status.getString() << std::endl;
563 
564  //==== check connected adc status
565  for (unsigned int adc = 0; adc < TileCalibUtils::MAX_GAIN; ++adc) {
566  status = m_tileBadChanTool->getAdcStatus(drawerIdx, channel, adc);
567  if (status.isBad()) {
568  sDet << "-B-> " << TileCalibUtils::getDrawerString(ros, drawer)
569  << "/ch" << channel << "/" << adc << " : " << status.getString() << std::endl;
570 
571  if (ros > 0) {
572  badadc++;
573  badc[ros - 1]++;
574  }
575  } else
576  sDet << "---> " << TileCalibUtils::getDrawerString(ros, drawer)
577  << "/ch" << channel << "/" << adc << " : " << status.getString() << std::endl;
578 
579  } //end adc
580  } //end status!=0
581 
582  } //end channel
583 
584  if (badadc) {
585  std::ostringstream myStream;
586  myStream << TileCalibUtils::getDrawerString(ros, drawer) << ": " << badchn << "/" << badadc;
587  vmod.push_back(myStream.str());
588  }
589 
590  } //end drawer
591  } //end ros
592 
593  ATH_MSG_INFO( sDet.str() );
594 
595  //=== Print summary
596  sSum << std::endl;
597  sSum << ">>> Summary of BAD channels/ADCs per drawer (in LBA, LBC, EBA, EBC) <<<<" << std::endl;
598  if (vmod.empty())
599  sSum << "There are no bad ADCs in LBA, LBC, EBA and EBC" << std::endl;
600  else {
601  unsigned int totchn = 0;
602  unsigned int totadc = 0;
603 
604  for (unsigned int ros = 0; ros < npar; ++ros) {
605  totchn += bchn[ros];
606  totadc += badc[ros];
607  }
608 
609  sSum << "Total number of bad channels/ADC: " << totchn << "/" << totadc << std::endl;
610  sSum << "Bad channels/ADC in LBA : " << bchn[0] << "/" << badc[0] << std::endl;
611  sSum << "Bad channels/ADC in LBC : " << bchn[1] << "/" << badc[1] << std::endl;
612  sSum << "Bad channels/ADC in EBA : " << bchn[2] << "/" << badc[2] << std::endl;
613  sSum << "Bad channels/ADC in EBC : " << bchn[3] << "/" << badc[3] << std::endl;
614  sSum << std::endl;
615 
616  for (const std::string& s : vmod)
617  sSum << s << std::endl;
618  }
619 
620  ATH_MSG_INFO( sSum.str() );
621 
622  //--- Output file: dump first the summary, then the details
623  std::ofstream fcout("tileBadChannelsAdcs.txt");
624  fcout << sSum.str() << std::endl;
625  fcout << sDet.str() << std::endl;
626  fcout.close();
627 
628 }
629 
630 //
631 //____________________________________________________________________________
632 void FillCell(TH2F *hist, const CaloDetDescrElement* elem) {
633  //--- auxiliary function for filling of larger cells into histograms in printBadCells
634  float step = 0.1;
635  int nstep = elem->deta() / step;
636  float seta = elem->eta() - 0.5 * (elem->deta() - step);
637  for (int e = 0; e < nstep; e++)
638  hist->Fill(seta + e * step, elem->phi(), 1.);
639 }
640 
641 //
642 //____________________________________________________________________________
644 
645  ATH_MSG_DEBUG( "in printBadCells()" );
646 
647  Identifier cell_id;
648  IdContext cell_context = m_tileID->cell_context();
649  int ncells = m_tileID->cell_hash_max();
650 
652  bool run2 = cabling->isRun2PlusCabling();
653 
654  std::ostringstream sSum;
655  std::ostringstream sDet;
656 
657  sDet << std::endl;
658  sDet << ">>>>>>>>>>>>>>> Detailed list of BAD Cells <<<<<<<<<<<<<<<<" << std::endl;
659  sDet << "tower 0-15: numbered by pseudorapidity from 0 with 0.1 increment in eta" << std::endl;
660 
661  int badcell_N = (run2) ? 0 : 4;
662  int badcell_EBA = 0;
663  int badcell_EBC = 0;
664  int badcell_LBA = 0;
665  int badcell_LBC = 0;
666  int badcell_GapA = 0;
667  int badcell_GapC = (run2) ? 0 : 4;
668 
669  HWIdentifier ch1_id, ch2_id;
670  TileBchStatus ch1_status, ch2_status;
671 
672  const EventContext &ctx = Gaudi::Hive::currentContext();
674  const CaloDetDescrManager* caloMgr = *caloMgrHandle;
675 
676  for (int i = 0; i < ncells; ++i) {
677  m_tileID->get_id((IdentifierHash) i, cell_id, &cell_context);
678 
679  //=== get calo detector description to obtain cell coordinates
680  const CaloDetDescrElement* elem = caloMgr->get_element(cell_id);
681  if (!elem) {
682  //=== this should never happen
683  ATH_MSG_ERROR( "CaloMgr returns NULL CaloDetDescrElement" );
684  std::abort();
685  }
686 
687  ch1_id = cabling->s2h_channel_id(m_tileID->pmt_id(cell_id, 0));
688  ch1_status = m_tileBadChanTool->getChannelStatus(ch1_id);
689 
690  if (m_tileID->is_tile_gapscin(cell_id)) ch2_id = ch1_id;
691  else ch2_id = cabling->s2h_channel_id(m_tileID->pmt_id(cell_id, 1));
692 
693  ch2_status = m_tileBadChanTool->getChannelStatus(ch2_id);
694 
695  //--- get channel
696  int ich1 = m_tileHWID->channel(ch1_id);
697  int ich2 = m_tileHWID->channel(ch2_id);
698 
699  if (ch1_status.isBad() && ch2_status.isBad()) {
700  badcell_N++;
701  if (m_tileID->section(cell_id) == 1) {
702  if (m_tileID->is_positive(cell_id) || m_tileID->is_twosides(cell_id)) {
703  badcell_LBA++;
704  sDet << "LBA";
705  }
706 
707  if (m_tileID->is_negative(cell_id)) {
708  badcell_LBC++;
709  sDet << "LBC";
710  }
711  }
712  if (m_tileID->section(cell_id) == 2) {
713  if (m_tileID->is_positive(cell_id)) {
714  badcell_EBA++;
715  sDet << "EBA";
716  }
717 
718  if (m_tileID->is_negative(cell_id)) {
719  badcell_EBC++;
720  sDet << "EBC";
721  }
722  }
723  if (m_tileID->section(cell_id) == 3) {
724  if (m_tileID->is_positive(cell_id)) {
725  badcell_GapA++;
726  sDet << "GapA";
727  }
728 
729  if (m_tileID->is_negative(cell_id)) {
730  badcell_GapC++;
731  sDet << "GapC";
732  }
733  }
734 
735  if (m_tileID->module(cell_id) < 9)
736  sDet << "0" << m_tileID->module(cell_id) + 1;
737  else
738  sDet << m_tileID->module(cell_id) + 1;
739 
740  sDet << ", tower " << m_tileID->tower(cell_id) << ", ";
741 
742  switch (m_tileID->sample(cell_id)) {
743  case 0: {
744  sDet << "sampling A";
745  FillCell(m_h_badCellA, elem);
746  };
747  break;
748  case 1: {
749  if (m_tileID->section(cell_id) == 1)
750  sDet << "sampling BC";
751  else
752  sDet << "sampling B";
753  FillCell(m_h_badCellBC, elem);
754  };
755  break;
756  case 2: {
757  sDet << "sampling D";
758  FillCell(m_h_badCellD, elem);
759  };
760  break;
761  case 3: {
762  sDet << "gap and crack scintillators";
763  FillCell(m_h_badCellGap, elem);
764  };
765  break;
766  default:
767  sDet << "individual tiles, used for Cesium calibration";
768  break;
769  }
770 
771  FillCell(m_h_badCell, elem);
772 
773  sDet << ", eta x phi = " << elem->eta()
774  << " x " << elem->phi()
775  << ", channels: " << ich1 << ", " << ich2 << std::endl;
776 
777  } // bad cell
778 
779  } // i, ncells
780 
781  if (!run2)
782  sDet << "!!! Four cells in GapC are also bad but not listed above: EBC04 ch 1, EBC35 ch 0, EBC54 ch 1, and EBC61 ch 1 " << std::endl;
783 
784  ATH_MSG_INFO( sDet.str() );
785 
786  //=== bad cells summary
787  float fncells = static_cast<float>(ncells);
788  if (run2)
789  fncells += 16 - 2; // adding 16 MBTS connected to PMT5 of special C10 and removing D4 in EBA15/EBC18
790  else
791  fncells = fncells - 2; // removing D4 in EBA15/EBC18
792 
793  sSum << std::endl;
794 
795  sSum << ">>>>>>>>>>>>>>> Tilecal BAD Cells Summary <<<<<<<<<<<<<<<<" << std::endl;
796  sSum << "Total number of cells including MBTS: " << fncells << std::endl;
797  sSum << "Total number of bad cells: " << badcell_N
798  << " (" << std::setprecision(4) << 100 * static_cast<float>(badcell_N) / fncells << " %)" << std::endl;
799 
800  sSum << "Bad cells in LBA(+cell D0): " << badcell_LBA
801  << " (" << std::setprecision(4) << 100 * static_cast<float>(badcell_LBA) / fncells << " %)" << std::endl;
802 
803  sSum << "Bad cells in LBC: " << badcell_LBC
804  << " (" << std::setprecision(4) << 100 * static_cast<float>(badcell_LBC) / fncells << " %)" << std::endl;
805 
806  sSum << "Bad cells in EBA: " << badcell_EBA
807  << " (" << std::setprecision(4) << 100 * static_cast<float>(badcell_EBA) / fncells << " %)" << std::endl;
808 
809  sSum << "Bad cells in EBC: " << badcell_EBC
810  << " (" << std::setprecision(4) << 100 * static_cast<float>(badcell_EBC) / fncells << " %)" << std::endl;
811 
812  sSum << "Bad cells in Gap A(ITC+E1-4): " << badcell_GapA
813  << " (" << std::setprecision(4) << 100 * static_cast<float>(badcell_GapA) / fncells << " %)" << std::endl;
814 
815  sSum << "Bad cells in Gap C(ITC+E1-4): " << badcell_GapC
816  << " (" << std::setprecision(4) << 100 * static_cast<float>(badcell_GapC) / fncells << " %)" << std::endl;
817 
818  ATH_MSG_INFO( sSum.str() );
819 
820  //--- Output file: dump first the summary, then the details
821  std::ofstream fcout("tileBadCells.txt");
822  fcout << sSum.str() << std::endl;
823  fcout << sDet.str() << std::endl;
824  fcout.close();
825 
826 }
827 
828 //
829 //___________________________________________________________________________________________
831 
832  float thr_low_value = -999.;
833  float thr_high_value = -999.;
834  Identifier id;
835  // loop over all TileCal cells
836  IdContext cell_context = m_tileID->cell_context();
837  int ncells = m_tileID->cell_hash_max();
838 
839  ATH_MSG_INFO( " printMuID: ncells " << ncells );
840  ATH_MSG_INFO( " Cell_ID, Threshold detector(TileCal=5)/section/side/module/tower/sampling" );
841 
842  for (int i = 0; i < ncells; ++i) {
843  {
844  m_tileID->get_id((IdentifierHash) i, id, &cell_context);
845 
846  thr_low_value = m_tileToolMuID->getLowThresholdValue(id);
847  thr_high_value = m_tileToolMuID->getHighThresholdValue(id);
848 
849  //=== Output from the tool
850  ATH_MSG_INFO( " Cell_ID " << id
851  << " Threshold low/high " << thr_low_value << " " << thr_high_value
852  << ", " << m_tileID->to_string(id, -2) );
853  }
854  }
855 }
856 
857 //
858 //____________________________________________________________________________
860  MsgStream log(msgSvc(), name());
861 
862  ATH_MSG_INFO("OFC will be printed for ros " << m_printOfcRos << ", drawer " << m_printOfcDrawer << ", channel " << m_printOfcChannel);
863 
864  //=== dump default channel only
865  unsigned int gain = 0;
867  int NPhases;
868  int NFields;
869  int Phamin;
870  int Phamax;
871  int NSamples;
872 
873  const EventContext &ctx = Gaudi::Hive::currentContext();
874  m_tileToolOfcCool->getOfcParams(drawerIdx, NPhases, NFields, Phamin, Phamax, NSamples, ctx);
875 
876  int phase_step = round(static_cast<double>(Phamax - Phamin) / (std::abs(NPhases) - 1));
877 
878  ATH_MSG_INFO( "-------- OFC parameters ----->"
879  << " nPhases " << NPhases
880  << " nFields " << NFields
881  << " minimum phase " << Phamin * PHASE_PRECISION << " ns "
882  << " maximum phase " << Phamax * PHASE_PRECISION << " ns "
883  << " nSamples " << NSamples
884  << " phase step " << phase_step * PHASE_PRECISION << " ns");
885 
886 
887 
888  for (gain = 0; gain < 2; gain++) {
889  ATH_MSG_INFO( "----------------- Gain " << gain << "-----------------" );
890 
891  for (int phase = Phamin; phase <= Phamax; phase += phase_step ) {
892  float real_phase = float(phase) * PHASE_PRECISION;
893  TileOfcWeightsStruct weights;
894  m_tileToolOfcCool->getOfcWeights(drawerIdx, m_printOfcChannel, gain, real_phase, true, weights, ctx).ignore();
895 
896  ATH_MSG_INFO( "OFC phase " << real_phase << " ns");
897 
898  msg(MSG::INFO) << "OFC A";
899  for (int i = 0; i < weights.n_samples; i++)
900  msg(MSG::INFO) << " " << weights.w_a[i];
901  msg(MSG::INFO) << endmsg;
902 
903  msg(MSG::INFO) << "OFC B";
904  for (int i = 0; i < weights.n_samples; i++)
905  msg(MSG::INFO) << " " << weights.w_b[i];
906  msg(MSG::INFO) << endmsg;
907 
908  msg(MSG::INFO) << "OFC C";
909  for (int i = 0; i < weights.n_samples; i++)
910  msg(MSG::INFO) << " " << weights.w_c[i];
911  msg(MSG::INFO) << endmsg;
912 
913  msg(MSG::INFO) << "OFC G";
914  for (int i = 0; i < weights.n_samples; i++)
915  msg(MSG::INFO) << " " << weights.g[i];
916  msg(MSG::INFO) << endmsg;
917 
918  if (NFields >= 5) {
919  msg(MSG::INFO) << "OFC DG";
920  for (int i = 0; i < weights.n_samples; i++)
921  msg(MSG::INFO) << " " << weights.dg[i];
922  msg(MSG::INFO) << endmsg;
923  }
924 
925  }
926  }
927 
928 }
929 
930 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
931 
933 
934  ATH_MSG_DEBUG( "in finalize()" );
935 
936  return StatusCode::SUCCESS;
937 }
CaloDetDescrElement::deta
float deta() const
cell deta
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:356
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
FillCell
void FillCell(TH2F *hist, const CaloDetDescrElement *elem)
Definition: TileInfoDump.cxx:632
TileInfoDump::m_print1gNoise
bool m_print1gNoise
Definition: TileInfoDump.h:95
Tile_Base_ID::is_positive
bool is_positive(const Identifier &id) const
Definition: Tile_Base_ID.cxx:250
ReadOfcFromCool.phase
phase
Definition: ReadOfcFromCool.py:127
TileInfoDump::m_tileToolAutoCr
ToolHandle< TileCondToolAutoCr > m_tileToolAutoCr
Definition: TileInfoDump.h:113
Tile_Base_ID::cell_hash_max
size_type cell_hash_max(void) const
Definition: Tile_Base_ID.cxx:1313
TileInfoDump::~TileInfoDump
~TileInfoDump()
Definition: TileInfoDump.cxx:70
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
TileCalibUtils::getMaxDrawer
static unsigned int getMaxDrawer(unsigned int ros)
Returns the maximal channel number for a given drawer.
Definition: TileCalibUtils.cxx:136
TileInfoDump::m_tileToolNoiseSample
ToolHandle< TileCondToolNoiseSample > m_tileToolNoiseSample
Definition: TileInfoDump.h:111
TileInfoDump::m_i_ADCmax
int m_i_ADCmax
Definition: TileInfoDump.h:143
TileInfoDump::m_caloMgrKey
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloMgrKey
Definition: TileInfoDump.h:127
TileInfoDump::m_tileToolTiming
ToolHandle< TileCondToolTiming > m_tileToolTiming
Definition: TileInfoDump.h:107
TileInfoDump::m_tileToolNoiseRawChn
ToolHandle< TileCondToolNoiseRawChn > m_tileToolNoiseRawChn
Definition: TileInfoDump.h:115
TileInfoDump::m_h_badCell
TH2F * m_h_badCell
Definition: TileInfoDump.h:134
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::EventInfo_v1::eventNumber
uint64_t eventNumber() const
The current event's event number.
TileInfoDump::execute
StatusCode execute()
Definition: TileInfoDump.cxx:147
TileCablingService::getInstance
static const TileCablingService * getInstance()
get pointer to service instance
Definition: TileCablingService.cxx:24
TileOfcWeightsStruct::g
float g[99]
Definition: ITileCondToolOfc.h:14
TileInfoDump::m_tileBadChanTool
ToolHandle< ITileBadChanTool > m_tileBadChanTool
Definition: TileInfoDump.h:101
TH2F
Definition: rootspy.cxx:420
Tile_Base_ID::cell_context
IdContext cell_context(void) const
id for cells
Definition: Tile_Base_ID.cxx:1059
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
TileInfoDump::m_printPulseShapes
bool m_printPulseShapes
Definition: TileInfoDump.h:79
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
TileInfoDump::m_printEmscaleOnl
bool m_printEmscaleOnl
Definition: TileInfoDump.h:64
TileInfoDump::m_h_badCellGap
TH2F * m_h_badCellGap
Definition: TileInfoDump.h:133
TileOfcWeightsStruct::w_c
float w_c[99]
Definition: ITileCondToolOfc.h:14
plotmaker.hist
hist
Definition: plotmaker.py:148
PHASE_PRECISION
#define PHASE_PRECISION
Class for storing Optimal Filtering Coefficients (OFCs) in a coral::Blob.
Definition: TileCalibDrawerOfc.h:38
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
StateLessPT_NewConfig.NSamples
int NSamples
Definition: StateLessPT_NewConfig.py:94
TileInfoDump::printEmscale
void printEmscale()
Definition: TileInfoDump.cxx:186
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
CaloDetDescrManager_Base::get_element
const CaloDetDescrElement * get_element(const Identifier &cellId) const
get element by its identifier
Definition: CaloDetDescrManager.cxx:159
MuonGM::round
float round(const float toRound, const unsigned int decimals)
Definition: Mdt.cxx:27
ReadCellNoiseFromCool.cabling
cabling
Definition: ReadCellNoiseFromCool.py:154
TileBchStatus
Class holding bad channel problems.
Definition: TileBchStatus.h:20
TileInfoDump::m_printTimingCorrections
bool m_printTimingCorrections
Definition: TileInfoDump.h:76
Tile_Base_ID::sample
int sample(const Identifier &id) const
Definition: Tile_Base_ID.cxx:171
TileInfoDump::m_h_badCellA
TH2F * m_h_badCellA
Definition: TileInfoDump.h:130
TileInfoDump::printPedestals
void printPedestals()
Definition: TileInfoDump.cxx:354
TileFragHash.h
TileInfo.h
TileCalibUtils.h
Tile_Base_ID::tower
int tower(const Identifier &id) const
Definition: Tile_Base_ID.cxx:165
TileInfoDump::finalize
StatusCode finalize()
Definition: TileInfoDump.cxx:932
TileInfoDump::m_tileToolMuID
ToolHandle< TileCondToolMuID > m_tileToolMuID
Definition: TileInfoDump.h:119
TileInfoDump::m_h_badCellD
TH2F * m_h_badCellD
Definition: TileInfoDump.h:132
TileInfoDump::printLaser
void printLaser()
Definition: TileInfoDump.cxx:288
HWIdentifier
Definition: HWIdentifier.h:13
python.TrigEgammaMonitorHelper.TH2F
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:45
TileInfoDump::m_printPulseShapesStep
float m_printPulseShapesStep
Definition: TileInfoDump.h:80
TileInfoDump::m_printBadChannels
bool m_printBadChannels
Definition: TileInfoDump.h:83
TileInfoDump::m_h_badCellBC
TH2F * m_h_badCellBC
Definition: TileInfoDump.h:131
Example_ReadSampleNoise.drawer
drawer
Definition: Example_ReadSampleNoise.py:39
TileInfoDump::m_thistSvc
ITHistSvc * m_thistSvc
Definition: TileInfoDump.h:123
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
TileHWID::channel
int channel(const HWIdentifier &id) const
extract channel field from HW identifier
Definition: TileHWID.h:189
TileID.h
TileInfoDump::m_printMuID
bool m_printMuID
Definition: TileInfoDump.h:92
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
TileInfoDump::TileInfoDump
TileInfoDump(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TileInfoDump.cxx:35
TileInfoDump::printBadCells
void printBadCells()
Definition: TileInfoDump.cxx:643
TileOfcWeightsStruct::n_samples
int n_samples
Definition: ITileCondToolOfc.h:15
TileOfcWeightsStruct::dg
float dg[99]
Definition: ITileCondToolOfc.h:14
TileInfoDump::printIntegrator
void printIntegrator()
Definition: TileInfoDump.cxx:322
Tile_Base_ID::get_id
virtual int get_id(const IdentifierHash &hash_id, Identifier &id, const IdContext *context=0) const
create compact id from hash id (return == 0 for OK)
Definition: Tile_Base_ID.cxx:1077
TileInfoDump::m_tileToolEmscale
ToolHandle< TileCondToolEmscale > m_tileToolEmscale
Definition: TileInfoDump.h:103
TileHWID.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Tile_Base_ID::is_tile_gapscin
bool is_tile_gapscin(const Identifier &id) const
Definition: Tile_Base_ID.cxx:268
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
Tile_Base_ID::module
int module(const Identifier &id) const
Definition: Tile_Base_ID.cxx:159
TileCablingService.h
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
TileInfoDump::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: TileInfoDump.h:97
lumiFormat.i
int i
Definition: lumiFormat.py:92
TileInfoDump::m_tileID
const TileID * m_tileID
Definition: TileInfoDump.h:126
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
TileInfoDump::printEmscaleOnl
void printEmscaleOnl()
Definition: TileInfoDump.cxx:251
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TileRawChannelUnit::Invalid
@ Invalid
Definition: TileRawChannelUnit.h:26
TileOfcWeightsStruct
Definition: ITileCondToolOfc.h:13
TileRawChannelUnit::MegaElectronVolts
@ MegaElectronVolts
Definition: TileRawChannelUnit.h:20
TileInfoDump::initialize
StatusCode initialize()
Definition: TileInfoDump.cxx:74
TileInfoDump::m_printLaser
bool m_printLaser
Definition: TileInfoDump.h:67
TileInfoDump::printTimingCorrections
void printTimingCorrections()
Definition: TileInfoDump.cxx:426
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
TileCalibUtils::MAX_ROS
static const unsigned int MAX_ROS
Number of ROSs
Definition: TileCalibUtils.h:138
TileInfoDump::m_printIntegrator
bool m_printIntegrator
Definition: TileInfoDump.h:70
maskDeadModules.ros
ros
Definition: maskDeadModules.py:35
TileCablingService
Definition: TileCablingService.h:23
xAOD::EventInfo_v1::lumiBlock
uint32_t lumiBlock() const
The current event's luminosity block number.
AthAlgorithm
Definition: AthAlgorithm.h:47
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
ReadCellNoiseFromCoolCompare.run2
run2
Definition: ReadCellNoiseFromCoolCompare.py:53
TileInfoDump::m_printOfcDrawer
unsigned int m_printOfcDrawer
Definition: TileInfoDump.h:137
TileInfoDump::m_tileToolIntegrator
ToolHandle< TileCondToolIntegrator > m_tileToolIntegrator
Definition: TileInfoDump.h:105
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:194
TileInfoDump::m_tileInfo
const TileInfo * m_tileInfo
Definition: TileInfoDump.h:142
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TileTrigType.h
IdentifierHash.h
errorcheck.h
Helpers for checking error return status codes and reporting errors.
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
TileInfoDump::m_printEmscale
bool m_printEmscale
Definition: TileInfoDump.h:61
EventInfo.h
makeTRTBarrelCans.dy
tuple dy
Definition: makeTRTBarrelCans.py:21
TileCalibUtils::getDrawerString
static std::string getDrawerString(unsigned int ros, unsigned int drawer)
Return the drawer name, e.g.
Definition: TileCalibUtils.cxx:145
TileInfoDump::printPulseShapes
void printPulseShapes()
Definition: TileInfoDump.cxx:475
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
TileInfoDump::printMuID
void printMuID()
Definition: TileInfoDump.cxx:830
y
#define y
CaloDetDescrManager
This class provides the client interface for accessing the detector description information common to...
Definition: CaloDetDescrManager.h:473
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
ReadFloatFromCool.adc
adc
Definition: ReadFloatFromCool.py:48
Tile_Base_ID::to_string
std::string to_string(const Identifier &id, int level=0) const
Definition: Tile_Base_ID.cxx:52
Tile_Base_ID::pmt_id
Identifier pmt_id(const Identifier &any_id) const
Definition: Tile_Base_ID.cxx:640
TileInfoDump::m_tileHWID
const TileHWID * m_tileHWID
Definition: TileInfoDump.h:125
TileInfoDump::m_tileToolOfcCool
ToolHandle< TileCondToolOfcCool > m_tileToolOfcCool
Definition: TileInfoDump.h:117
AthCommonMsg< Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
TileInfoDump::m_printOfcRos
unsigned int m_printOfcRos
Definition: TileInfoDump.h:136
TileInfoDump::m_printPedestals
bool m_printPedestals
Definition: TileInfoDump.h:73
Tile_Base_ID::is_twosides
bool is_twosides(const Identifier &id) const
Definition: Tile_Base_ID.cxx:259
xAOD::EventInfo_v1::timeStamp
uint32_t timeStamp() const
POSIX time in seconds from 1970. January 1st.
Tile_Base_ID::is_negative
bool is_negative(const Identifier &id) const
Definition: Tile_Base_ID.cxx:241
LArCellBinning.step
step
Definition: LArCellBinning.py:158
TileInfoDump.h
CaloDetDescrElement::eta
float eta() const
cell eta
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:344
merge.status
status
Definition: merge.py:17
TileOfcWeightsStruct::w_a
float w_a[99]
Definition: ITileCondToolOfc.h:14
CaloDetDescrElement::phi
float phi() const
cell phi
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:346
TileCalibUtils::getDrawerIdx
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
Definition: TileCalibUtils.cxx:60
TileInfoDump::print1gNoise
void print1gNoise()
Definition: TileInfoDump.cxx:395
Tile_Base_ID::section
int section(const Identifier &id) const
Definition: Tile_Base_ID.cxx:147
ReadHandle.h
Handle class for reading from StoreGate.
IdentifierHash
Definition: IdentifierHash.h:38
TileCalibUtils::MAX_CHAN
static const unsigned int MAX_CHAN
Number of channels in drawer.
Definition: TileCalibUtils.h:141
TileInfoDump::m_tileToolPulseShape
ToolHandle< TileCondToolPulseShape > m_tileToolPulseShape
Definition: TileInfoDump.h:109
IdContext
class IdContext
Definition: IdContext.h:34
TileInfoDump::m_isOnline
bool m_isOnline
Definition: TileInfoDump.h:58
readCCLHist.float
float
Definition: readCCLHist.py:83
TileInfo::ADCmax
int ADCmax() const
Returns the maximum ADC output (10 bits --> 1023)
Definition: TileInfo.h:71
TileBchStatus::isBad
bool isBad() const
Definition: TileBchStatus.h:145
TileRawChannelUnit::ADCcounts
@ ADCcounts
Definition: TileRawChannelUnit.h:17
TileInfoDump::m_printOfcChannel
unsigned int m_printOfcChannel
Definition: TileInfoDump.h:138
TileOfcWeightsStruct::w_b
float w_b[99]
Definition: ITileCondToolOfc.h:14
TileRawChannelUnit::OnlineMegaElectronVolts
@ OnlineMegaElectronVolts
Definition: TileRawChannelUnit.h:24
TileInfoDump::printBadChannels
void printBadChannels()
Definition: TileInfoDump.cxx:517
TileInfoDump::printOfcs
void printOfcs()
Definition: TileInfoDump.cxx:859
TileInfoDump::m_printBadCells
bool m_printBadCells
Definition: TileInfoDump.h:86
TileCalibUtils::MAX_GAIN
static const unsigned int MAX_GAIN
Number of gains per channel
Definition: TileCalibUtils.h:142
TileInfoDump::m_printOfcsCool
bool m_printOfcsCool
Definition: TileInfoDump.h:89
TileInfoDump::m_infoName
std::string m_infoName
Definition: TileInfoDump.h:141