ATLAS Offline Software
DQTNonCollBkg_ZDC.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 // ********************************************************************
6 //
7 // NAME: DQTNonCollBkg_ZDC
8 // PACKAGE: DataQualityTools
9 // AUTHORS: A.Canepa <acanepa@cern.ch>,
10 // Marco Leite <leite@cern.ch>
11 //
12 // See DQTNonCollBkg_ZDC.h for a description of this class
13 //
14 //
15 // ********************************************************************
16 
17 
18 #include "ZdcEvent/ZdcDigits.h"
19 #include "ZdcRec/ZdcSignalSinc.h"
20 
22 
23 using namespace Trig;
24 namespace Trig {
25  class ChainGroup;
26 }
27 
28 //----------------------------------------------------------------------------------
30  const std::string & name,
31  const IInterface* parent) :
33  m_HistEnergySideA(nullptr),
34  m_HistEnergySideC(nullptr),
35  m_HistTimeSideA(nullptr),
36  m_HistTimeSideC(nullptr),
37  m_HistTimeDeltaSidesAC(nullptr),
38  m_nsamples(0),
39  m_bcid(nullptr),
40  m_trigDec("Trig::TrigDecisionTool")
41 
42 {
43  //declareInterface<IMonitorToolBase> (this);
44 
45  declareProperty("histoPath", m_path = "GLOBAL/DQTNonCollBkg_ZDC");
46  //declareProperty("doRunCosmics", m_doRunCosmics = 1);
47  //declareProperty("doRunBeam", m_doRunBeam = 1);
48  //declareProperty("doOfflineHists", m_doOfflineHists = 1);
49  //declareProperty("doOnlineHists", m_doOnlineHists = 1);
50 
51  m_EnergySideA.resize(4,0);
52  m_EnergySideC.resize(4,0);
53  m_TimeSideA.resize(4,0);
54  m_TimeSideC.resize(4,0);
55 
56  m_map_LowGain[0xec000000] = 1.00; // verify
57  m_map_LowGain[0xec400000] = 5.21;
58  m_map_LowGain[0xec800000] = 17.40;
59  m_map_LowGain[0xecc00000] = 22.60;
60  m_map_LowGain[0xed000000] = 1.00; // verify
61  m_map_LowGain[0xed400000] = 4.52;
62  m_map_LowGain[0xed800000] = 8.52;
63  m_map_LowGain[0xedc00000] = 50.90;
64 
65  m_map_HighGain[0xec000000] = 0.10; // verify
66  m_map_HighGain[0xec400000] = 0.55;
67  m_map_HighGain[0xec800000] = 1.80;
68  m_map_HighGain[0xecc00000] = 2.41;
69  m_map_HighGain[0xed000000] = 0.10; // verify
70  m_map_HighGain[0xed400000] = 0.45;
71  m_map_HighGain[0xed800000] = 0.93;
72  m_map_HighGain[0xedc00000] = 5.10;
73 
74 }
75 
76 //----------------------------------------------------------------------------------
78 //----------------------------------------------------------------------------------
79 {
80 }
81 
82 //----------------------------------------------------------------------------------
84 //----------------------------------------------------------------------------------
85 {
89 }
90 
91 //----------------------------------------------------------------------------------
93 //StatusCode DQTNonCollBkg_ZDC::bookHistograms(bool isNewEventsBlock, bool isNewLumiBlock, bool isNewRun )
94 //----------------------------------------------------------------------------------
95 {
96  bool failure(false);
97 
98  //if (newRun) {
99  ATH_MSG_INFO( "In bookHistograms(): " << "m_doRunCosmics = " << m_doRunCosmics << "; m_doRunBeam = "<< m_doRunBeam );
100 
101  //This will do the real booking
102  failure = bookDQTNonCollBkg_ZDC();
103 
104  // reset the map
105  // do NOT dereg (histo are not written to file)
106  m_map_BCID_DeltaT.clear();
107 
108  //}
109  //else if (newEventsBlock || newLumiBlock) {
110  // return StatusCode::SUCCESS;
111  //}
112  if (failure) {
113  return StatusCode::FAILURE;
114  }
115  else {
116  return StatusCode::SUCCESS;
117  }
118 
119 }
120 
121 //----------------------------------------------------------------------------------
123 //Here the histograms are defined and booked. If anyone fails, it will trigger an
124 //error message and return an error.
125 //----------------------------------------------------------------------------------
126 {
127  bool failure(false);
128 
129  std::string fullPath = m_path+"/ZDC";
130 
131  //failure = failure | registerHist(fullPath, m_bcid = TH1F_LW::create("bcid", "Events per BCID", 3564,0.5,3564.5),ManagedMonitorToolBase::shift).isFailure();
132  failure = failure | registerHist(fullPath, m_bcid = TH1F_LW::create("bcid", "Events per BCID", 3564,0.5,3564.5)).isFailure();
133 
134  failure = failure | registerHist(fullPath,
135  m_HistEnergySideA = TH1F_LW::create("m_EnergySideA",
136  "Total Energy Side A (TeV)",
137  200,0.,7.),run).isFailure();
138  //200,0.,7.),ManagedMonitorToolBase::expert,run).isFailure();
139 
140  failure = failure | registerHist(fullPath,
141  m_HistEnergySideC = TH1F_LW::create("m_EnergySideC",
142  "Total Energy Side C (TeV)",
143  200,0.,7.),run).isFailure();
144 
145  failure = failure | registerHist(fullPath,
146  m_HistTimeSideA = TH1F_LW::create("m_TimeSideA",
147  "Absolute Time Side A (ns)",
148  200,0.,50.),run).isFailure();
149 
150  failure = failure | registerHist(fullPath,
151  m_HistTimeSideC = TH1F_LW::create("m_TimeSideC",
152  "Absolute Time Side C (ns)",
153  200,0.,50.),run).isFailure();
154 
155  failure = failure | registerHist(fullPath,
156  m_HistTimeDeltaSidesAC = TH1F_LW::create("m_TimeDeltaSidesAC",
157  "Time Difference Side A - C (ns)",
158  500,-50.,50.),run).isFailure();
159 
160 
161  if (failure) {
162  ATH_MSG_ERROR( "Error Booking histograms " );
163  }
164 
165  return failure;
166 }
167 
168 
169 //This method will retrieve the SG container, loop over the ZDC channels
170 //and for each channel call the methods to extract energy and timing information
171 //----------------------------------------------------------------------------------
173 //----------------------------------------------------------------------------------
174 {
175 
176  bool failure(false);
177 
178  // Do the trigger selection here
179  // Trigger selection suggested by D.Berge
180  // Too rare :for testing, comment it
181  if (! m_trigDec->isPassed("L1_ZDC_UNPAIRED")) return StatusCode::FAILURE;
182 
183  std::vector<std::string> L1items = m_trigDec->getChainGroup("L1_.*")->getListOfTriggers();
184  unsigned int nL1Items = L1items.size();
185 
186  for(unsigned int it=0; it<nL1Items; ++it) {
187  if( L1items[it] != "" ) {
188  m_L1Names.push_back( L1items[it]);
189  m_L1Trigs.push_back(0);
190  msg(MSG::DEBUG) <<"L1Chain " <<it <<" " <<L1items <<m_trigDec->isPassed(L1items[it]) <<endmsg;
191  }
192  }
193 
194  unsigned bunch_crossing_id=0;
196 
197  if (! event_info.isValid()) {
198  ATH_MSG_ERROR( "ERROR cannot get BCID = " );
199  }
200  else {
201  bunch_crossing_id = event_info->bcid();
202  ATH_MSG_DEBUG( "BCID = " << bunch_crossing_id );
203  m_bcid->Fill(bunch_crossing_id);
204  }
205 
206 
207 
208  //int ped = 0;
209 
210  float eA = 0.;
211  float eC = 0.;
212 
213  std::vector<std::vector<int> > wfm;
214  std::vector<std::vector<int> >::iterator vit;
215 
216 
217  Identifier id;
218 
219 
222  const ZdcDigits* digits_p;
223 
224 
225  // Look up the ZdcDigitsCollection in Storegate
226  if (! digitsCollection.isValid()) {
227  ATH_MSG_WARNING( "--> DQT_ZDC: Could not retrieve " << m_digitsContainerName << " from evtStore"
228  );
229  return StatusCode::SUCCESS;
230  }
231 
232  //2) The container was sucessfully retrieved, go ahead looping over it
233  // and extract the information
234  ATH_MSG_DEBUG( "--> DQT_ZDC: SUCCESS retrieving " << m_digitsContainerName );
235 
236  //Loop over the channels
237  for (iter = digitsCollection->begin(); iter != digitsCollection->end(); ++iter)
238  {
239  digits_p = *iter;
240  id = digits_p->identify();
241  wfm.clear();
242  wfm.resize(2);
243 
244  //These combinations are present for all channels
245  // wfm[0] -> low gain, undelayed
246  // wfm[1] -> high gain, undelayed
247  wfm[0] = digits_p->get_digits_gain0_delay0();
248  wfm[1] = digits_p->get_digits_gain1_delay0();
249 
250 
251  //Sometimes we get a zero size back. Handle it here
252  if (wfm[0].size() == 0)
253  {
254  ATH_MSG_WARNING( "ZERO SIZE g0d0 at ID " << id.getString()
255  );
256  wfm[0].resize(m_nsamples);
257  }
258 
259 
260  if (wfm[1].size() == 0)
261  {
262  ATH_MSG_WARNING( "ZERO SIZE g1d0 at ID " << id.getString()
263  );
264  wfm[1].resize(7);
265  }
266 
267 
268 
269 
270  // Check to see if there are delayed information
271  // module type 0 -> (full Energy) delayed info
272  // module type 1 -> (segmented) do not have delayed info
273  // wfm[2] -> low gain, delayed
274  // wfm[3] -> high gain, delayed
275  // - use the identifiers here -
276  if (((id.get_identifier32().get_compact() >> 21) & 1) == 0)
277  {
278  wfm.resize(4);
279  wfm[2] = digits_p->get_digits_gain0_delay1();
280  wfm[3] = digits_p->get_digits_gain1_delay1();
281  }
282 
283  //3) Subtratct baseline pedestal
284  //We need to be carefull. Sometimes the vector size here is zero (PPM flaw) and
285  //the code crashs if we do not treat this.
286  for (vit = wfm.begin(); vit < wfm.end(); ++vit)
287  {
288  if (vit->size() == 0)
289  vit->resize(7);
290  //ped = *vit->begin();
291  //TODO: use algo
292  //for (it = vit->begin(); it < vit->end(); it++)
293  // {
294  // (*it) -= ped;
295  // }
296  }
297  getEnergyAndTimeByModule(id, wfm);
298  }
299 
300  //Fill the ZDC global information histograms
301 
302  //total energy: multiply vectors of weight by energy and accumulate
303  //float vmul (float i, float j) { return i*j; }
304  //result gets back to a
305  //transform (a.begin(), a.end(), b.begin(), b.begin(), vmul);
306 
307  //getTotalEnergy(m_EnergySideA,"A");
308  //getTotalEnergy(m_EnergySideC,"C");
309 
310 
311  eA = m_EnergySideA[1] + m_EnergySideA[2] + m_EnergySideA[3];
312  eC = m_EnergySideC[1] + m_EnergySideC[2] + m_EnergySideC[3];
313 
314 
315  // std::cout << "**** ZDC+ EA EC" << eA << " " << eC << std::endl;
316 
317 
318 
319  m_HistEnergySideA->Fill(eA);
320  m_HistEnergySideC->Fill(eC);
321 
324 
326 
327  if(m_map_BCID_DeltaT[bunch_crossing_id] == 0){
328 
329  TString histoName ="deltaT_"; histoName+=bunch_crossing_id;
330  TString histoTitle="Arrival time BCID:"; histoTitle+=bunch_crossing_id;
331  std::string fullPath=m_path+"/ZDC";
332  failure = failure | registerHist(fullPath, m_map_BCID_DeltaT[bunch_crossing_id] = TH1F_LW::create(histoName,histoTitle,500,-50.,50.)).isFailure();
333  //failure = failure | registerHist(fullPath, m_map_BCID_DeltaT[bunch_crossing_id] = TH1F_LW::create(histoName,histoTitle,500,-50.,50.),ManagedMonitorToolBase::expert).isFailure();
334  }
335 
336  if(m_map_BCID_DeltaT[bunch_crossing_id]) m_map_BCID_DeltaT[bunch_crossing_id]->Fill(m_TimeSideA[0] - m_TimeSideC[0]); // fill with the DeltaT
337 
338 
339  if (failure) {
340  ATH_MSG_ERROR( "Error Booking histograms " );
341  }
342 
343 
344  return StatusCode::SUCCESS;
345 
346 }
347 
348 //----------------------------------------------------------------------------------
350 //StatusCode DQTNonCollBkg_ZDC::procHistograms( bool isEndOfEventsBlock, bool isEndOfLumiBlock, bool isEndOfRun )
351 //----------------------------------------------------------------------------------
352 {
353  ATH_MSG_DEBUG( "In procHists()" );
354 
355  // std::vector<TH1D*> proj;
356  // if( isEndOfRun ){
357  //if ( endOfEventsBlock || endOfLumiBlock || endOfRun ) {
358 
359  //}
360 
361  return StatusCode::SUCCESS;
362 
363 }
364 
365 //Here we could make checks like the
366 // - m_TimeDeltaSidesAC is peaked at zero
367 // - m_TimeDeltaSidesAC width
368 // - m_EnergySideA - m_EnergySideA residual
369 // - etc.
370 //----------------------------------------------------------------------------------
372 //----------------------------------------------------------------------------------
373 {
374  ATH_MSG_DEBUG( "In checkHists()" );
375  return StatusCode::SUCCESS;
376 }
377 
378 //----------------------------------------------------------------------------------
380  const std::vector< std::vector <int> >& wfm) {
381 //----------------------------------------------------------------------------------
382 
383  int i = 0;
384  int wfmIndex = 0;
385  float energy = 0.;
386  float w = 0.;
387  float timing = 0.;
388  //int error = 0;
389  //int warning = 0;
390 
391  double Slices[10];
392  int NSlice = 5;
393  double gain=1.;
394  double pedestal=0;
395  double CFD_frac = 1.0;
396  bool corr=0;
397 
398  ZdcSignalSinc* zdcSignalSinc;
399 
400  std::vector<std::vector<int> >::const_iterator vit;
401  std::vector<int> y;
402 
404 
405  /*
406  Id: Side Module Number Module Type
407  0xec000000 0 (C) 0 0
408  0xec400000 0 (C) 1 0
409  0xec800000 0 (C) 2 0
410  0xecc00000 0 (C) 3 0
411  0xed000000 1 (A) 0 0
412  0xed400000 1 (A) 1 0
413  0xed800000 1 (A) 2 0
414  0xedc00000 1 (A) 3 0
415  */
416  x = id.get_identifier32().get_compact();
417  // We will fix only on low gain, undelayed information
418  wfmIndex = 0;
419  i = 0;
420  for (vit = wfm.begin(); vit<wfm.end(); ++vit) {
421  if (i == wfmIndex)
422  {
423  y = *vit;
424 
425  //Very simple: energy is the maximum sample and
426  //timing is the ratio of A2/A1
427 
428  //energy = *(std::max_element(y.begin(), y.end()));
429  //if (y[1]) timing = y[2]/y[1];
430 
431 
432  // This is for the sinx/x interpolation
433 
434  for(int I=0;I<NSlice;I++) {Slices[I]=y[I];}
435  zdcSignalSinc = new ZdcSignalSinc(NSlice);
436 
437  zdcSignalSinc->process(Slices,gain,pedestal,CFD_frac,corr);
438 
439  energy = zdcSignalSinc->getAmp() ;
440  timing = zdcSignalSinc->getTime();
441  //error = zdcSignalSinc->getError();
442  //warning = zdcSignalSinc->getWarning();
443 
444 
445  //Retrieves only total energy (big PMT's) information
446  if (((x >> 21) & 1) == 0)
447  {
448  //Use the appropriate weight for energy according to the module
449  w = (wfmIndex == 0) ? m_map_LowGain[x] : m_map_HighGain[x];
450  energy = w * energy;
451 
452  //std::cout << "ZDC+++ID " << x << std::endl;
453  //std::cout << "ZDC++Weight " << w << std::endl;
454  //std::cout << "ZDC+++Energy " << energy << std::endl;
455  //std::cout << "ZDC+++Timing " << timing << std::endl;
456  //std::cout << "ZDC+++Error " << error << std::endl;
457  //std::cout << "ZDC+++Warning " << warning << std::endl;
458 
459 
460  switch (x)
461  {
462  case 0xec000000: //Side C Mod 0
463  m_EnergySideC[0] = energy; //Pin Diode !!
464  m_TimeSideC[0] = timing;
465  break;
466 
467  case 0xec400000: //Side C Mod 1
468  m_EnergySideC[1] = energy;
469  m_TimeSideC[1] = timing;
470  break;
471 
472  case 0xec800000: //Side C Mod 2
473  m_EnergySideC[2] = energy;
474  m_TimeSideC[2] = timing;
475  break;
476 
477  case 0xecc00000: //Side C Mod 3
478  m_EnergySideC[3] = energy;
479  m_TimeSideC[3] = timing;
480  break;
481 
482  case 0xed000000: //Side A Mod 0
483  m_EnergySideA[0] = energy; //Pin Diode !!
484  m_TimeSideA[0] = timing;
485  break;
486 
487  case 0xed400000: //Side A Mod 1
488  m_EnergySideA[1] = energy;
489  m_TimeSideA[2] = timing;
490  break;
491 
492  case 0xed800000: //Side A Mod 2
493  m_EnergySideA[2] = energy;
494  m_TimeSideA[2] = timing;
495  break;
496 
497  case 0xedc00000: //Side A Mod 3
498  m_EnergySideA[3] = energy;
499  m_TimeSideA[3] = timing;
500  break;
501  }
502  }
503  }
504  i = (i<4) ? (i+1) : 0;
505  }
506  /*
507  #These are constants Andrei used to convert from ADC counts to GeV
508  #http://indico.cern.ch/getFile.py/access?contribId=0&resId=0&materialId=slides&confId=89265
509  # neutrons photons
510  # c/g hg lg hg lg
511  #A0 0.74 0.45 4.52 0.62 6.22
512  #A1 1.19 0.93 8.52
513  #A2 1.60 5.10 50.9
514 
515  #C0 0.78 0.55 5.21 0.71 6.73
516  #C1 1.09 1.80 17.4
517  #C2 1.75 2.41 22.6
518 
519  #For photons in hadronic section I just repeat the neutron weight
520  #numbers unit is GeV/PPM count
521  self.hg_weigths= {'A':{'neutron':[0.45,0.93,5.10], 'photon':[0.62,0.93,5.10], 'total':[0.45,0.93,5.10]},
522  'C':{'neutron':[0.55,1.80,2.41], 'photon':[0.71,1.80,2.41], 'total':[0.55,1.80,2.41]} }
523 
524  self.lg_weigths= {'A':{'neutron':[4.52, 8.52, 50,9], 'photon':[6.22,8.52, 50,9], 'total':[4.52, 8.52, 50,9]},
525  'C':{'neutron':[5.21, 17.4, 22.6], 'photon':[6.73,17.4, 22.6], 'total':[5.21, 17.4, 22.6]} }
526 
527  # photon: E0 >= 5 ADC counts, E1< 20GeV ; E2 < 4 ADC Counts
528  # neutrons: E0 >= 5 ADC counts, E1>= 20GeV ; E2 >= 4 ADC Counts
529  */
530 return 0;
531 }
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
DQTNonCollBkg_ZDC::bookHistograms
StatusCode bookHistograms()
An inheriting class should either override this function or bookHists().
Definition: DQTNonCollBkg_ZDC.cxx:92
ManagedMonitorToolBase::m_path
std::string m_path
Definition: ManagedMonitorToolBase.h:915
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
DataQualityFatherMonTool::m_doRunCosmics
bool m_doRunCosmics
Definition: DataQualityFatherMonTool.h:77
TH1F_LW::Fill
virtual void Fill(const double &x) override
Definition: TH1F_LW.cxx:246
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ZdcSignalSinc
Definition: ZdcSignalSinc.h:14
Trig
The common trigger namespace for trigger analysis tools.
Definition: CaloTowerVecMon.h:44
Identifier32::value_type
unsigned int value_type
Definition: Identifier32.h:33
TH1F_LW::create
static TH1F_LW * create(const char *name, const char *title, unsigned nbinsx, const double &xlow, const double &xup)
Definition: TH1F_LW.cxx:33
DataQualityFatherMonTool::registerHist
StatusCode registerHist(const std::string &path, TH1 *h1, Interval_t interval=run, MgmtAttr_t histo_mgmt=ATTRIB_MANAGED, const std::string &merge_algo="")
Definition: DataQualityFatherMonTool.cxx:245
ZdcSignalSinc.h
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
DQTNonCollBkg_ZDC::m_L1Names
std::vector< std::string > m_L1Names
Definition: DQTNonCollBkg_ZDC.h:157
DQTNonCollBkg_ZDC::procHistograms
StatusCode procHistograms()
An inheriting class should either override this function or finalHists().
Definition: DQTNonCollBkg_ZDC.cxx:349
CscCalibQuery.fullPath
string fullPath
Definition: CscCalibQuery.py:360
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
skel.it
it
Definition: skel.GENtoEVGEN.py:423
ZdcDigits
Definition: ZdcDigits.h:28
DQTNonCollBkg_ZDC::m_map_HighGain
std::map< Identifier::value_type, float > m_map_HighGain
Definition: DQTNonCollBkg_ZDC.h:163
DQTNonCollBkg_ZDC::fillHistograms
StatusCode fillHistograms()
An inheriting class should either override this function or fillHists().
Definition: DQTNonCollBkg_ZDC.cxx:172
DQTNonCollBkg_ZDC::m_HistEnergySideA
TH1F_LW * m_HistEnergySideA
Definition: DQTNonCollBkg_ZDC.h:118
DQTNonCollBkg_ZDC::m_EventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_EventInfoKey
Definition: DQTNonCollBkg_ZDC.h:167
ZdcDigits::get_digits_gain1_delay1
const std::vector< int > & get_digits_gain1_delay1(void) const
Definition: ZdcDigits.h:61
DQTNonCollBkg_ZDC::m_TimeSideC
std::vector< float > m_TimeSideC
Definition: DQTNonCollBkg_ZDC.h:114
ZdcSignalSinc::process
int process(double *, double gain=1., double ped=0., double frac=1., bool corr=true)
Definition: ZdcSignalSinc.cxx:42
x
#define x
DQTNonCollBkg_ZDC::m_bcid
TH1F_LW * m_bcid
Definition: DQTNonCollBkg_ZDC.h:152
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
DQTNonCollBkg_ZDC::m_HistTimeSideC
TH1F_LW * m_HistTimeSideC
Definition: DQTNonCollBkg_ZDC.h:121
DQTNonCollBkg_ZDC::getEnergyAndTimeByModule
int getEnergyAndTimeByModule(const Identifier &id, const std::vector< std::vector< int > > &wfm)
Definition: DQTNonCollBkg_ZDC.cxx:379
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
trigDumpTimers.timing
def timing(hist)
Definition: trigDumpTimers.py:13
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
lumiFormat.i
int i
Definition: lumiFormat.py:92
DQTNonCollBkg_ZDC::m_trigDec
ToolHandle< Trig::TrigDecisionTool > m_trigDec
Definition: DQTNonCollBkg_ZDC.h:156
DQTNonCollBkg_ZDC::~DQTNonCollBkg_ZDC
~DQTNonCollBkg_ZDC()
Definition: DQTNonCollBkg_ZDC.cxx:77
DataQualityFatherMonTool
Definition: DataQualityFatherMonTool.h:38
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
ZdcSignalSinc::getAmp
double getAmp() const
Definition: ZdcSignalSinc.cxx:154
DQTNonCollBkg_ZDC::m_HistEnergySideC
TH1F_LW * m_HistEnergySideC
Definition: DQTNonCollBkg_ZDC.h:119
ZdcSignalSinc::getTime
double getTime() const
Definition: ZdcSignalSinc.cxx:153
test_pyathena.parent
parent
Definition: test_pyathena.py:15
DQTNonCollBkg_ZDC::m_EnergySideC
std::vector< float > m_EnergySideC
Definition: DQTNonCollBkg_ZDC.h:111
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
run
Definition: run.py:1
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
DQTNonCollBkg_ZDC::m_digitsContainerName
SG::ReadHandleKey< ZdcDigitsCollection > m_digitsContainerName
Definition: DQTNonCollBkg_ZDC.h:148
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
DQTNonCollBkg_ZDC::bookDQTNonCollBkg_ZDC
bool bookDQTNonCollBkg_ZDC()
Definition: DQTNonCollBkg_ZDC.cxx:122
DQTNonCollBkg_ZDC::checkHists
StatusCode checkHists(bool fromFinalize)
This implementation does nothing; equivalent functionality may be provided by procHists(....
Definition: DQTNonCollBkg_ZDC.cxx:371
Trig::ChainGroup
Definition: Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.h:51
ZdcDigits::get_digits_gain0_delay1
const std::vector< int > & get_digits_gain0_delay1(void) const
Definition: ZdcDigits.h:59
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:194
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
DataQualityFatherMonTool::m_doRunBeam
bool m_doRunBeam
Definition: DataQualityFatherMonTool.h:78
DataQualityFatherMonTool::initialize
virtual StatusCode initialize()
Definition: DataQualityFatherMonTool.cxx:43
DQTNonCollBkg_ZDC::initialize
StatusCode initialize()
Definition: DQTNonCollBkg_ZDC.cxx:83
DQTNonCollBkg_ZDC::m_L1Trigs
std::vector< double > m_L1Trigs
Definition: DQTNonCollBkg_ZDC.h:158
ZdcDigits.h
DQTNonCollBkg_ZDC::m_nsamples
unsigned int m_nsamples
Definition: DQTNonCollBkg_ZDC.h:150
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
y
#define y
DQTNonCollBkg_ZDC::m_map_LowGain
std::map< Identifier::value_type, float > m_map_LowGain
Definition: DQTNonCollBkg_ZDC.h:162
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
DEBUG
#define DEBUG
Definition: page_access.h:11
DQTNonCollBkg_ZDC::DQTNonCollBkg_ZDC
DQTNonCollBkg_ZDC(const std::string &type, const std::string &name, const IInterface *parent)
Definition: DQTNonCollBkg_ZDC.cxx:29
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
ZdcDigits::get_digits_gain0_delay0
const std::vector< int > & get_digits_gain0_delay0(void) const
Definition: ZdcDigits.h:58
DQTNonCollBkg_ZDC::m_HistTimeSideA
TH1F_LW * m_HistTimeSideA
Definition: DQTNonCollBkg_ZDC.h:120
ZdcDigits::get_digits_gain1_delay0
const std::vector< int > & get_digits_gain1_delay0(void) const
Definition: ZdcDigits.h:60
DQTNonCollBkg_ZDC::m_HistTimeDeltaSidesAC
TH1F_LW * m_HistTimeDeltaSidesAC
Definition: DQTNonCollBkg_ZDC.h:123
ZdcRawData::identify
Identifier identify(void) const
Definition: ZdcRawData.h:44
DQTNonCollBkg_ZDC.h
DQTNonCollBkg_ZDC::m_map_BCID_DeltaT
std::map< unsigned, TH1F_LW * > m_map_BCID_DeltaT
Definition: DQTNonCollBkg_ZDC.h:154
I
#define I(x, y, z)
Definition: MD5.cxx:116
DQTNonCollBkg_ZDC::m_TimeSideA
std::vector< float > m_TimeSideA
Definition: DQTNonCollBkg_ZDC.h:113
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
xAOD::EventInfo_v1::bcid
uint32_t bcid() const
The bunch crossing ID of the event.
DQTNonCollBkg_ZDC::m_EnergySideA
std::vector< float > m_EnergySideA
Definition: DQTNonCollBkg_ZDC.h:110
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.