test
CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalBaseMonitor.cc
Go to the documentation of this file.
3 
4 #define ETAMAX 44.5
5 #define ETAMIN -44.5
6 #define PHIMAX 73.5
7 #define PHIMIN -0.5
8 
9 
11  fVerbosity = 0;
12  badCells_.clear();
13  rootFolder_ = "Hcal";
14  baseFolder_ = "BaseMonitor";
15 }
16 
18 
20 
22 
23  std::vector<std::string> dummy;
24  dummy.clear();
25  Online_ = ps.getUntrackedParameter<bool>("Online",false);
26  badCells_ = ps.getUntrackedParameter<std::vector<std::string> >( "BadCells" , dummy);
27  AllowedCalibTypes_ = ps.getUntrackedParameter<std::vector<int> > ("AllowedCalibTypes");
28 
29 
30  // Base folder for the contents of this job
31  std::string subsystemname = ps.getUntrackedParameter<std::string>("subSystemFolder", "Hcal") ;
32  rootFolder_ = subsystemname + "/";
33 
34  // Global cfgs
35 
36  fVerbosity = ps.getUntrackedParameter<int>("debug",0);
37  makeDiagnostics = ps.getUntrackedParameter<bool>("makeDiagnosticPlots",false);
38  showTiming = ps.getUntrackedParameter<bool>("showTiming",false);
39  dump2database = ps.getUntrackedParameter<bool>("dump2database",false); // dumps output to database file
40 
41  checkHB_ = ps.getUntrackedParameter<bool>("checkHB",true);
42  checkHE_ = ps.getUntrackedParameter<bool>("checkHE",true);
43  checkHO_ = ps.getUntrackedParameter<bool>("checkHO",true);
44  checkHF_ = ps.getUntrackedParameter<bool>("checkHF",true);
45 
46  checkNevents_ = ps.getUntrackedParameter<int>("checkNevents",1000); // specify how often to run checks
47  Nlumiblocks_ = ps.getUntrackedParameter<int>("Nlumiblocks",1000); // number of luminosity blocks to include in time plots
48  if (Nlumiblocks_<=0) Nlumiblocks_=1000;
49  resetNevents_ = ps.getUntrackedParameter<int>("resetNevents",-1); // how often to reset histograms
50 
51  // Minimum error rate that will caused the problem histogram to be filled
52  minErrorFlag_ = ps.getUntrackedParameter<double>("minErrorFlag",0.05);
53 
54  // Set eta, phi boundaries
55  // We can remove these variables once we move completely to EtaPhiHists from the old 2D SJ6hists
56  etaMax_ = ps.getUntrackedParameter<double>("MaxEta", ETAMAX);
57  etaMin_ = ps.getUntrackedParameter<double>("MinEta", ETAMIN);
58 
59  if (etaMax_ > 44.5)
60  {
61  std::cout <<"<HcalBaseMonitor> WARNING: etaMax_ value of "<<etaMax_<<" exceeds maximum allowed value of 44.5"<<std::endl;
62  std::cout <<" Value being set back to 44.5."<<std::endl;
63  std::cout <<" Additional code changes are necessary to allow value of "<<etaMax_<<std::endl;
64  etaMax_ = 44.5;
65  }
66 
67  if (etaMin_ < ETAMIN)
68  {
69  std::cout <<"<HcalBaseMonitor> WARNING: etaMin_ value of "<<etaMin_<<" exceeds minimum allowed value of 44.5"<<std::endl;
70  std::cout <<" Value being set back to -44.5."<<std::endl;
71  std::cout <<" Additional code changes are necessary to allow value of "<<etaMin_<<std::endl;
72  etaMin_ = -44.5;
73  }
74 
75  etaBins_ = (int)(etaMax_ - etaMin_);
76 
77  phiMax_ = ps.getUntrackedParameter<double>("MaxPhi", PHIMAX);
78  phiMin_ = ps.getUntrackedParameter<double>("MinPhi", PHIMIN);
79  phiBins_ = (int)(phiMax_ - phiMin_);
80 
81  ProblemsVsLB=0;
87 
88  meEVT_=0;
89  meTOTALEVT_=0;
90  ievt_=0;
91  levt_=0;
92  tevt_=0;
93  lumiblock=0;
94  oldlumiblock=0;
95  NumBadHB=0;
96  NumBadHE=0;
97  NumBadHO=0;
98  NumBadHF=0;
99 
100  return;
101 } //void HcalBaseMonitor::setup()
102 
104 {
105  // increment event counters
106  ++ievt_;
107  ++levt_;
108  ++tevt_;
109  // Fill MonitorElements
110  if (meEVT_) meEVT_->Fill(ievt_);
112  return;
113 }
114 
116 {
117 
118  //if (Online_ && lb<=lumiblock) // protect against mis-ordered LBs. Handle differently in the future?
119  // return;
120 
121  lumiblock=lb;
122  if (lumiblock==0) // initial lumiblock call; don't fill histograms, because nothing has been determined yet
123  return;
124 
125  if (lb>Nlumiblocks_) // don't fill plots if lumiblock is beyond range
126  return;
127 
128  // The following function would let us 'fill in' missing lumiblock sections.
129  // I think we only want this for Online running, since offline should fill each lumi block
130  // independently.
131  // Should probably just do this in the individual tasks?
132  /*
133  if (Online_ && lumiblock<lb)
134  {
135  for (int i=lumiblock+1;i<lb;++i)
136  {
137  if (ProblemsVsLB)
138  ProblemsVsLB->Fill(i,NumBadHB+NumBadHE+NumBadHO+NumBadHF);
139  if (ProblemsVsLB_HB)
140  ProblemsVsLB_HB->Fill(i,NumBadHB);
141  if (ProblemsVsLB_HE)
142  ProblemsVsLB_HE->Fill(i,NumBadHE);
143  if (ProblemsVsLB_HO)
144  ProblemsVsLB_HO->Fill(i,NumBadHO);
145  if (ProblemsVsLB_HF)
146  ProblemsVsLB_HF->Fill(i,NumBadHF);
147  if (ProblemsVsLB_HBHEHF)
148  ProblemsVsLB_HBHEHF->Fill(i,NumBadHB+NumBadHE+NumBadHF);
149  }
150  }
151  */
152  return;
153 }
154 
156 {
157  // Protect against online mis-ordering of events.
158  // Do we want this enabled here?
159  //if (Online_ && lumisec<lumiblock)
160  // return;
161  LumiBlockUpdate(lumisec);
162  levt_=0;
163  LBprocessed_=false;
164 } // beginLuminosityBlock
165 
167 {
168  LBprocessed_=true;
169  return;
170 } // endLuminosityBlock;
171 
173 
175 
176 /* if(m_dbe){
177  m_dbe->setCurrentFolder(baseFolder_);
178  m_dbe->removeContents();
179 // m_dbe->setCurrentFolder(baseFolder_+"/HB");
180 // m_dbe->removeContents();
181 //
182 // m_dbe->setCurrentFolder(baseFolder_+"/HE");
183 // m_dbe->removeContents();
184 //
185 // m_dbe->setCurrentFolder(baseFolder_+"/HO");
186 // m_dbe->removeContents();
187 //
188 // m_dbe->setCurrentFolder(baseFolder_+"/HF");
189 // m_dbe->removeContents();
190  }*/
191  return;
192 } // void HcalBaseMonitor::clearME();
193 
194 // ***************************************************************** //
195 
196 
198 {
199  /*
200  Function identifies whether cell with HcalDetId 'id' should be vetoed,
201  based on elements stored in badCells_ array.
202  */
203 
204  if(badCells_.size()==0) return false;
205  for(unsigned int i = 0; i< badCells_.size(); ++i)
206  {
207 
208  unsigned int badc = atoi(badCells_[i].c_str());
209  if(id.rawId() == badc) return true;
210  }
211  return false;
212 } // bool HcalBaseMonitor::vetoCell(HcalDetId id)
213 
215 {
216  /* This prevents known bad cells from being displayed in overall problem maps and
217  depth histograms. Is this what we want? Or do we want some problems to be
218  displayed in the depth plots but not the overall map? (Or vice versa?)
219  */
220 
221  for (unsigned int i=0;i<badCells_.size();++i)
222  {
223  unsigned int badc = atoi(badCells_[i].c_str());
224  HcalDetId id(badc);
225  int etabin=CalcEtaBin(id.subdet(),id.ieta(),id.depth());
226  if (ProblemCells!=0) ProblemCells->setBinContent(etabin+1,id.iphi(),0);
227  if (ProblemCellsByDepth.depth[id.depth()-1]!=0)
228  ProblemCellsByDepth.depth[id.depth()-1]->setBinContent(etabin+1,id.iphi(),0);
229  } // for (unsigned int i=0;...)
230  return;
231 } // void HcalBaseMonitor::hideKnownBadCells()
232 
233 
234 // ************************************************************************************************************ //
235 
236 
237 // Create vectors of MonitorElements for individual depths
238 
239 // *********************************************************** //
240 
242 {
243  std::stringstream name;
244  name<<Name;
245  std::stringstream unitname;
246  std::stringstream unittitle;
247  if (Units.empty())
248  {
249  unitname<<Units;
250  unittitle<<"No Units";
251  }
252  else
253  {
254  unitname<<" "<<Units;
255  unittitle<<Units;
256  }
257 
258  h=ib.book2D(("All "+name.str()+unitname.str()).c_str(),
259  (name.str() + " for all HCAL ("+unittitle.str().c_str()+")"),
260  85,-42.5,42.5,
261  72,0.5,72.5);
262 
263  h->setAxisTitle("i#eta",1);
264  h->setAxisTitle("i#phi",2);
265 
266  SetupEtaPhiHists(ib, hh, Name, Units);
267  return;
268 }
269 
271 {
272  hh.setup(ib, Name, Units);
273  return;
274 }
275 
276 void HcalBaseMonitor::setupDepthHists2D(DQMStore::IBooker &ib, MonitorElement* &h, std::vector<MonitorElement*> &hh, std::string Name, std::string Units)
277 {
278  /* Code makes overall 2D MonitorElement histogram,
279  and the vector of 2D MonitorElements for each individual depth.
280  Eta, Phi bins are set automatically from the etaMax_, etaMin_, etc.
281  values in HcalBaseMonitor.h
282  */
283 
284  /*
285  if (showTiming)
286  {
287  cpu_timer.reset(); cpu_timer.start();
288  }
289  */
290  std::stringstream name;
291  name<<Name;
292  std::stringstream unitname;
293  std::stringstream unittitle;
294  if (Units.empty())
295  {
296  unitname<<Units;
297  unittitle<<"No Units";
298  }
299  else
300  {
301  unitname<<" "<<Units;
302  unittitle<<Units;
303  }
304 
305  h=ib.book2D(("All "+name.str()+unitname.str()).c_str(),
306  (name.str() + " for all HCAL ("+unittitle.str().c_str()+")"),
309  h->setAxisTitle("i#eta",1);
310  h->setAxisTitle("i#phi",2);
311 
312  setupDepthHists2D(ib, hh, Name, Units);
313  /*
314  if (showTiming)
315  {
316  cpu_timer.stop(); std::cout <<"TIMER:: HcalBaseMonitor SETUPDEPTHHISTS2D_OVERALL "<<name.str().c_str()<<" -> "<<cpu_timer.cpuTime()<<std::endl;
317  }
318  */
319  return;
320 } // void HcalBaseMonitor::setupDepthHists2D(MonitorElement* &h, std::vector<MonitorElement*> &hh, std::string Name, std::string Units)
321 
322 
323 // *************************************** //
324 
325 void HcalBaseMonitor::setupDepthHists2D(DQMStore::IBooker &ib, std::vector<MonitorElement*> &hh, std::string Name, std::string Units)
326 {
327  /* Code makes vector of 2D MonitorElements for all 6 depths
328  (4 depths, + 2 for separate HE histograms).
329  Bins are automatically set for eta/phi indices
330  DEPRECATE THIS ONCE ALL OLD-STYLE 2D HISTOGRAMS HAVE BEEN REMOVED!
331  */
332 
333  /*
334  if (showTiming)
335  {
336  cpu_timer.reset(); cpu_timer.start();
337  }
338  */
339  std::stringstream name;
340  name<<Name;
341 
342  std::stringstream unitname;
343  std::stringstream unittitle;
344  if (Units.empty())
345  {
346  unitname<<Units;
347  unittitle<<"No Units";
348  }
349  else
350  {
351  unitname<<" "<<Units;
352  unittitle<<Units;
353  }
354 
355  // Push back depth plots -- remove ZDC names at some point?
356  hh.push_back(ib.book2D(("HB HF Depth 1 "+name.str()+unitname.str()).c_str(),
357  (name.str()+" Depth 1 -- HB & HF only ("+unittitle.str().c_str()+")"),
360  hh.push_back( ib.book2D(("HB HF Depth 2 "+name.str()+unitname.str()).c_str(),
361  (name.str()+" Depth 2 -- HB & HF only ("+unittitle.str().c_str()+")"),
364  hh.push_back( ib.book2D(("HE Depth 3 "+name.str()+unitname.str()).c_str(),
365  (name.str()+" Depth 3 -- HE ("+unittitle.str().c_str()+")"),
368  hh.push_back( ib.book2D(("HO ZDC "+name.str()+unitname.str()).c_str(),
369  (name.str()+" -- HO & ZDC ("+unittitle.str().c_str()+")"),
372  hh.push_back(ib.book2D(("HE Depth 1 "+name.str()+unitname.str()).c_str(),
373  (name.str()+" Depth 1 -- HE only ("+unittitle.str().c_str()+")"),
376  hh.push_back(ib.book2D(("HE Depth 2 "+name.str()+unitname.str()).c_str(),
377  (name.str()+" Depth 2 -- HE only ("+unittitle.str().c_str()+")"),
380  for (unsigned int i=0;i<hh.size();++i)
381  {
382  hh[i]->setAxisTitle("i#eta",1);
383  hh[i]->setAxisTitle("i#phi",2);
384  }
385  /*
386  if (showTiming)
387  {
388  cpu_timer.stop(); std::cout <<"TIMER:: HcalBaseMonitor SETUPDEPTHHISTS2D "<<name.str().c_str()<<" -> "<<cpu_timer.cpuTime()<<std::endl;
389  }
390  */
391  return;
392 } // void HcalBaseMonitor::setupDepthHists2D(std::vector<MonitorElement*> &hh, std::string Name, std::string Units)
393 
394 
395 // *************************************************************** //
396 
397 void HcalBaseMonitor::setupDepthHists2D(DQMStore::IBooker &ib, MonitorElement* &h, std::vector<MonitorElement*> &hh, std::string Name, std::string Units,
398  int nbinsx, int lowboundx, int highboundx,
399  int nbinsy, int lowboundy, int highboundy)
400 {
401  /* Code makes overall 2D MonitorElement histogram,
402  and the vector of 2D MonitorElements for each individual depth.
403  Bin ranges, sizes are specified by user
404  DEPRECATE THIS ONCE ALL OLD-STYLE 2D HISTOGRAMS HAVE BEEN REMOVED!
405  */
406 
407  if (showTiming)
408  {
410  }
411 
412  std::stringstream name;
413  name<<Name;
414  std::stringstream unitname;
415  std::stringstream unittitle;
416  if (Units.empty())
417  {
418  unitname<<Units;
419  unittitle<<"No Units";
420  }
421  else
422  {
423  unitname<<" "<<Units;
424  unittitle<<Units;
425  }
426 
427  h=ib.book2D(("All "+name.str()+unitname.str()).c_str(),
428  (name.str() + " for all HCAL ("+unittitle.str().c_str()+")"),
429  nbinsx, lowboundx, highboundx,
430  nbinsy, lowboundy, highboundy);
431 
432  setupDepthHists2D(ib, hh, Name, Units,
433  nbinsx, lowboundx, highboundx,
434  nbinsy, lowboundy, highboundy);
435 
436 
437  if (showTiming)
438  {
439  cpu_timer.stop(); std::cout <<"TIMER:: HcalBaseMonitor SETUPDEPTHHISTS2D_OVERALL "<<name.str().c_str()<<" -> "<<cpu_timer.cpuTime()<<std::endl;
440  }
441  return;
442 } // void HcalBaseMonitor::setupDepthHists2D(MonitorElement* &h, std::vector<MonitorElement*> &hh, std::string Name, std::string Units, int nbinsx...)
443 
444 // *************************************************************** //
445 
446 
447 void HcalBaseMonitor::setupDepthHists2D(DQMStore::IBooker &ib, std::vector<MonitorElement*> &hh, std::string Name, std::string Units,
448  int nbinsx, int lowboundx, int highboundx,
449  int nbinsy, int lowboundy, int highboundy)
450 {
451  /* Code makes vector of 2D MonitorElements for all 6 depths
452  (4 depths, + 2 for separate HE histograms).
453  Bins are automatically set for eta/phi indices
454  DEPRECATE THIS ONCE ALL OLD-STYLE 2D HISTOGRAMS HAVE BEEN REMOVED!
455 
456 
457  */
458 
459  if (showTiming)
460  {
462  }
463 
464  std::stringstream name;
465  name<<Name;
466 
467  std::stringstream unitname;
468  std::stringstream unittitle;
469  if (Units.empty())
470  {
471  unitname<<Units;
472  unittitle<<"No Units";
473  }
474  else
475  {
476  unitname<<" "<<Units;
477  unittitle<<Units;
478  }
479 
480  // Push back depth plots
481  hh.push_back(ib.book2D(("HB HF Depth 1 "+name.str()+unitname.str()).c_str(),
482  (name.str()+" Depth 1 -- HB & HF only ("+unittitle.str().c_str()+")"),
483  nbinsx, lowboundx, highboundx,
484  nbinsy, lowboundy, highboundy));
485  hh.push_back( ib.book2D(("HB HF Depth 2 "+name.str()+unitname.str()).c_str(),
486  (name.str()+" Depth 2 -- HB & HF only ("+unittitle.str().c_str()+")"),
487  nbinsx, lowboundx, highboundx,
488  nbinsy, lowboundy, highboundy));
489  hh.push_back( ib.book2D(("HE Depth 3 "+name.str()+unitname.str()).c_str(),
490  (name.str()+" Depth 3 -- HE ("+unittitle.str().c_str()+")"),
491  nbinsx, lowboundx, highboundx,
492  nbinsy, lowboundy, highboundy));
493  hh.push_back( ib.book2D(("HO ZDC "+name.str()+unitname.str()).c_str(),
494  (name.str()+" -- HO & ZDC ("+unittitle.str().c_str()+")"),
495  nbinsx, lowboundx, highboundx,
496  nbinsy, lowboundy, highboundy));
497  hh.push_back(ib.book2D(("HE Depth 1 "+name.str()+unitname.str()).c_str(),
498  (name.str()+" Depth 1 -- HE only ("+unittitle.str().c_str()+")"),
499  nbinsx, lowboundx, highboundx,
500  nbinsy, lowboundy, highboundy));
501  hh.push_back(ib.book2D(("HE Depth 2 "+name.str()+unitname.str()).c_str(),
502  (name.str()+" Depth 2 -- HE only ("+unittitle.str().c_str()+")"),
503  nbinsx, lowboundx, highboundx,
504  nbinsy, lowboundy, highboundy));
505 
506  if (showTiming)
507  {
508  cpu_timer.stop(); std::cout <<"TIMER:: HcalBaseMonitor SETUPDEPTHHISTS2D "<<name.str().c_str()<<" -> "<<cpu_timer.cpuTime()<<std::endl;
509  }
510 
511  return;
512 } // void HcalBaseMonitor::setupDepthHists2D(std::vector<MonitorElement*> &hh, std::string Name, std::string Units)
513 
514 // ****************************************** //
515 
516 void HcalBaseMonitor::setupDepthHists1D(DQMStore::IBooker &ib, MonitorElement* &h, std::vector<MonitorElement*> &hh, std::string Name, std::string Units, int lowbound, int highbound, int Nbins)
517 {
518  // Makes an overall 1D Monitor Element (for summing over depths) for h, and creates individual depth Monitor Elements for hh
519  if (showTiming)
520  {
522  }
523 
524  std::stringstream name;
525  name<<Name;
526 
527  std::stringstream unitname;
528  std::stringstream unittitle;
529  if (Units.empty())
530  {
531  unitname<<Units;
532  unittitle<<"No Units";
533  }
534  else
535  {
536  unitname<<" "<<Units;
537  unittitle<<Units;
538  }
539 
540  // Create overall 1D Monitor Element
541  h=ib.book1D(("All "+name.str()+unitname.str()).c_str(),
542  (name.str() + " for all HCAL ("+unittitle.str().c_str()+")"),
543  Nbins,lowbound,highbound);
544  h->setAxisTitle(unitname.str().c_str(),1);
545 
546  // Create vector of Monitor Elements for individual depths
547  setupDepthHists1D(ib, hh, Name, Units, lowbound, highbound, Nbins);
548 
549  if (showTiming)
550  {
551  cpu_timer.stop(); std::cout <<"TIMER:: HcalBaseMonitor SETUPDEPTHHISTS1D_OVERALL "<<name.str().c_str()<<" -> "<<cpu_timer.cpuTime()<<std::endl;
552  }
553  return;
554 
555 } //void HcalBaseMonitor::setupDepthHists1D(MonitorElement* &h, std::vector<MonitorElement*> &hh, std::string Name, std::string Units)
556 
557 
558 
559 void HcalBaseMonitor::setupDepthHists1D(DQMStore::IBooker &ib, std::vector<MonitorElement*> &hh, std::string Name, std::string Units, int lowbound, int highbound, int Nbins)
560 {
561  // Makes histograms just for the vector of Monitor Elements
562  if (showTiming)
563  {
565  }
566 
567  std::stringstream name;
568  name<<Name;
569  std::stringstream unitname;
570  std::stringstream unittitle;
571  if (Units.empty())
572  {
573  unitname<<Units;
574  unittitle<<"No Units";
575  }
576  else
577  {
578  unitname<<" "<<Units;
579  unittitle<<Units;
580  }
581 
582  // Push back depth plots
583  hh.push_back(ib.book1D(("HB "+name.str()+unitname.str()).c_str(),
584  (name.str()+" HB ("+unittitle.str().c_str()+")"),
585  Nbins,lowbound,highbound));
586  hh.push_back( ib.book1D(("HE "+name.str()+unitname.str()).c_str(),
587  (name.str()+" HE ("+unittitle.str().c_str()+")"),
588  Nbins,lowbound,highbound));
589  hh.push_back( ib.book1D(("HO "+name.str()+unitname.str()).c_str(),
590  (name.str()+" HO ("+unittitle.str().c_str()+")"),
591  Nbins,lowbound,highbound));
592  hh.push_back( ib.book1D(("HF "+name.str()+unitname.str()).c_str(),
593  (name.str()+" HF ("+unittitle.str().c_str()+")"),
594  Nbins,lowbound,highbound));
595 
596  for (unsigned int i=0;i<hh.size();++i)
597  {
598  hh[i]->setAxisTitle(unitname.str().c_str(),1);
599  }
600 
601  if (showTiming)
602  {
603  cpu_timer.stop(); std::cout <<"TIMER:: HcalBaseMonitor SETUPDEPTHHISTS1D "<<name.str().c_str()<<" -> "<<cpu_timer.cpuTime()<<std::endl;
604  }
605 
606  return;
607 } // void HcalBaseMonitor::setupDepthHists1D(std::vector<MonitorElement*> &hh, std::string Name, std::string Units, int lowbound, int highbound, int Nbins)
608 
609 
610 void HcalBaseMonitor::setMinMaxHists2D(std::vector<MonitorElement*> &hh, double min, double max)
611 {
612  for (unsigned int i=0; i<hh.size();++i)
613  {
614  TH2F* histo=hh[i]->getTH2F();
615  histo->SetMinimum(min);
616  histo->SetMaximum(max);
617  }
618  return;
619 }
620 
621 void HcalBaseMonitor::setMinMaxHists1D(std::vector<MonitorElement*> &hh, double min, double max)
622 {
623  for (unsigned int i=0; i<hh.size();++i)
624  {
625  TH1F* histo=hh[i]->getTH1F();
626  histo->SetMinimum(min);
627  histo->SetMaximum(max);
628  }
629  return;
630 }
631 
633 {
634  // when called, reset all counters, and all histograms
635  if (ProblemCells!=0) ProblemCells->Reset();
636  for (unsigned int i=0;i<ProblemCellsByDepth.depth.size();++i)
637  {
638  if (ProblemCellsByDepth.depth[i]!=0)
639  ProblemCellsByDepth.depth[i]->Reset();
640  }
641  return;
642 }
T getUntrackedParameter(std::string const &, T const &) const
#define PHIMAX
int i
Definition: DBlmapReader.cc:9
void setBinContent(int binx, double content)
set content of bin (1-D)
int ib
Definition: cuy.py:660
MonitorElement * ProblemsVsLB_HE
std::vector< int > AllowedCalibTypes_
void start()
Definition: CPUTimer.cc:74
MonitorElement * ProblemsVsLB_HO
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
void SetupEtaPhiHists(DQMStore::IBooker &ib, MonitorElement *&h, EtaPhiHists &hh, std::string Name, std::string Units)
virtual void beginRun()
virtual void setup(const edm::ParameterSet &ps, DQMStore::IBooker &ib)
MonitorElement * ProblemsVsLB_HBHEHF
void setupDepthHists2D(DQMStore::IBooker &ib, MonitorElement *&h, std::vector< MonitorElement * > &hh, std::string Name, std::string Units)
void reset()
Definition: CPUTimer.cc:107
EtaPhiHists ProblemCellsByDepth
MonitorElement * meTOTALEVT_
void LumiBlockUpdate(int lb)
void Fill(long long x)
MonitorElement * ProblemsVsLB_HF
#define ETAMAX
std::vector< MonitorElement * > depth
#define ETAMIN
virtual void clearME()
MonitorElement * ProblemsVsLB
std::string rootFolder_
MonitorElement * ProblemsVsLB_HB
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
MonitorElement * ProblemCells
void setup(DQMStore::IBooker &m_dbe, std::string Name, std::string Units="")
edm::CPUTimer cpu_timer
T min(T a, T b)
Definition: MathUtil.h:58
Times stop()
Definition: CPUTimer.cc:94
#define PHIMIN
virtual void periodicReset()
void setupDepthHists1D(DQMStore::IBooker &ib, MonitorElement *&h, std::vector< MonitorElement * > &hh, std::string Name, std::string Units, int lowbound, int highbound, int Nbins)
std::string baseFolder_
double cpuTime() const
Definition: CPUTimer.cc:158
void beginLuminosityBlock(int lb)
void setMinMaxHists1D(std::vector< MonitorElement * > &hh, double min, double max)
void setMinMaxHists2D(std::vector< MonitorElement * > &hh, double min, double max)
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
virtual void done()
std::vector< std::string > badCells_
int CalcEtaBin(int subdet, int ieta, int depth)
tuple cout
Definition: gather_cfg.py:145
MonitorElement * meEVT_
bool vetoCell(HcalDetId &id)
virtual ~HcalBaseMonitor()
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void Reset(void)
reset ME (ie. contents, errors, etc)