CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DigiTask.cc
Go to the documentation of this file.
1 
3 
4 using namespace hcaldqm;
6  DQTask(ps)
7 {
8  // Signal, ADC, fC, SumQ
9  _cfCperTS_SubDet.initialize(_name+"/Signal/fC_SubDet", "fCperTS",
13  _cADCperTS_SubDet.initialize(_name+"/Signal/ADC_SubDet", "ADCperTS",
17  _cSumQ_depth.initialize(_name+"/Signal/depth", "SumQ",
22 
23  // Shape
24  _cShapeCut_SubDetPM_iphi.initialize(_name+"/Shape/SubDetPM_iphi", "Shape",
28  _cShapeCut_p3e41d2.initialize(_name+"/Shape/iphi3ieta41d2", "Shape",
31  _cShapeCut_p3em41d2.initialize(_name+"/Shape/iphi3ieta-41d2", "Shape",
34 
35  // Timing
36  _cTimingCut_SubDetPM_iphi.initialize(_name+"/Timing/SubDetPM_iphi",
37  "Timing", mapper::fSubDetPM_iphi,
39  _cTimingCut_depth.initialize(_name+"/Timing/depth", "Timing",
44 
45  // Special
46  _cQ2Q12CutvsLS_p3e41d2.initialize(_name+"/Q2Q12/vsLS_iphi3ieta41d2",
47  "Q2Q12",
50  _cQ2Q12CutvsLS_p3em41d2.initialize(_name+"/Q2Q12/vsLS_iphi3ieta-41d2",
51  "Q2Q12",
54  _cDigiSizevsLS_SubDet.initialize(_name+"/DigiSize/vsLS_SubDet", "DigiSize",
59  _name+"/CapIdRotations/depth", "CapIdRotations",
63 
64  // Occupancy
65  _cOccupancyvsiphi_SubDetPM.initialize(_name+"/Occupancy/vsiphi_SubDetPM", "Occupancyvsiphi",
69  _name+"/Occupancy/vsiphi_SubDetPM",
70  "Occupancyvsiphi",
73  _cOccupancyvsLS_SubDet.initialize(_name+"/Occupancy/vsLS_SubDet",
74  "OccupancyvsLS",
78  _cOccupancyCutvsLS_SubDet.initialize(_name+"/Occupancy/vsLS_SubDet",
79  "OccupancyvsLS",
83  _cOccupancy_depth.initialize(_name+"/Occupancy/depth", "Occupancy",
87  _cOccupancyCut_depth.initialize(_name+"/Occupancy/depth", "Occupancy",
91  _cOccupancyOnce_depth.initialize(_name+"/Occupancy/Once_depth",
92  "Occupancy", mapper::fdepth,
95  _cMsn1LS_depth.initialize(_name+"/Missing/1LS_depth", "Missing",
99  _cMsn10LS_depth.initialize(_name+"/Missing/10LS_depth", "Missing",
103  _cMsn1LSvsLS_SubDet.initialize(_name+"/Missing/1LSvsLS_SubDet", "Missing",
107 
108  // Summaries
109  _cSummary.initialize(_name+"/Summary", "Summary",
111  new axis::FlagAxis(axis::fYaxis, "Flag", int(nDigiFlag)));
112  _cSummaryvsLS_SubDet.initialize(_name+"/Summary/vsLS_SubDet", "SummaryvsLS",
115  new axis::FlagAxis(axis::fYaxis, "Flag", int(nDigiFlag)));
116 
117  // Initialize what should be present only for Online or Playback, not for
118  // Offline
119  if (this->_ptype!=fOffline)
120  {
121  _cSumQ_SubDetPM_iphi.initialize(_name+"/Signal/SubDetPM_iphi", "SumQ",
125  _cShape_SubDetPM_iphi.initialize(_name+"/Shape/SubDetPM_iphi", "Shape",
129  _cSumQvsLS_SubDetPM_iphi.initialize(_name+"/Signal/vsLS_SubDetPM_iphi", "SumQvsLS",
133  _cTimingCutvsLS_SubDetPM_iphi.initialize(_name+"/Timing/vsLS_SubDetPM_iphi",
134  "Timing", mapper::fSubDetPM_iphi,
137  _cTimingCutvsieta_SubDet_iphi.initialize(_name+"/Timing/vsieta_SubDet_iphi",
138  "Timingvsieta", mapper::fSubDet_iphi,
141  _cTimingCutvsiphi_SubDet_ieta.initialize(_name+"/Timing/vsiphi_SubDet_ieta",
142  "Timingvsiphi", mapper::fSubDet_ieta,
145  _cQ2Q12CutvsLS_HFPM_iphi.initialize(_name+"/Q2Q12/vsLS_HFPM_iphi",
146  "Q2Q12", mapper::fHFPM_iphi,
149 
150  }
151 
152  // tags and tokens
154  edm::InputTag("hcalDigis"));
156  edm::InputTag("hcalDigis"));
158  edm::InputTag("hcalDigis"));
159  _tokHBHE = consumes<HBHEDigiCollection>(_tagHBHE);
160  _tokHO = consumes<HODigiCollection>(_tagHO);
161  _tokHF = consumes<HFDigiCollection>(_tagHF);
162 
163  // cuts
164  _cutSumQ_HBHE = ps.getUntrackedParameter<double>("cutSumQ_HBHE", 20);
165  _cutSumQ_HO = ps.getUntrackedParameter<double>("cutSumQ_HO", 20);
166  _cutSumQ_HF = ps.getUntrackedParameter<double>("cutSumQ_HF", 20);
167 
168  // flags
169  _fNames.push_back("Low Occupancy");
170  _fNames.push_back("Digi Size Drift");
171  _fNames.push_back("iphi Uniformity");
172  _fNames.push_back("Missing for 1LS");
173  _fNames.push_back("Cap Id Rotation");
176 }
177 
179  edm::Run const& r, edm::EventSetup const& es)
180 {
181  char cutstr[200];
182  sprintf(cutstr, "_SumQHBHE%dHO%dHF%d", int(_cutSumQ_HBHE),
183  int(_cutSumQ_HO), int(_cutSumQ_HF));
184  char cutstr2[200];
185  sprintf(cutstr2, "_SumQHF%d", int(_cutSumQ_HF));
186 
187  DQTask::bookHistograms(ib, r, es);
190  _cSumQ_depth.book(ib);
191 
195 
200 
208  _cMsn1LS_depth.book(ib);
209  _cMsn10LS_depth.book(ib);
211 
214 
215  _cSummary.book(ib);
217 
218  if (this->_ptype!=fOffline)
219  {
225  std::string(cutstr));
228  }
229 }
230 
231 /* virtual */ void DigiTask::_resetMonitors(UpdateFreq uf)
232 {
233  switch (uf)
234  {
235  case fEvent:
236  for (unsigned int i=0; i<constants::SUBDET_NUM; i++)
237  {
238  _numDigis[i]=0;
239  _numDigisCut[i] = 0;
240  }
241  break;
242  case hcaldqm::fLS:
243  for (unsigned int idet=0; idet<constants::SUBDET_NUM; idet++)
244  {
245  for (int iiphi=0; iiphi<constants::IPHI_NUM; iiphi++)
246  for (int iieta=0; iieta<constants::IETA_NUM; iieta++)
247  for (int id=0; id<constants::DEPTH_NUM; id++)
248  {
249  _occ_1LS[idet][iiphi][iieta][id] = false;
250  _error_1LS[idet][iiphi][iieta][id] = false;
251  }
252  _nMsn[idet] = 0;
253  _nCapIdRots[idet] = 0;
254  }
255  break;
256  case hcaldqm::f10LS:
257  for (unsigned int idet=0; idet<constants::SUBDET_NUM; idet++)
258  for (int iiphi=0; iiphi<constants::IPHI_NUM; iiphi++)
259  for (int iieta=0; iieta<constants::IETA_NUM; iieta++)
260  for (int id=0; id<constants::DEPTH_NUM; id++)
261  _occ_10LS[idet][iiphi][iieta][id] = false;
264  break;
265  case hcaldqm::f50LS:
267  break;
268  default:
269  break;
270  }
271  DQTask::_resetMonitors(uf);
272 }
273 
274 /* virtual */ void DigiTask::_process(edm::Event const& e,
275  edm::EventSetup const& es)
276 {
280 
281  if (!e.getByToken(_tokHBHE, chbhe))
282  _logger.dqmthrow("Collection HBHEDigiCollection isn't available"
283  + _tagHBHE.label() + " " + _tagHBHE.instance());
284  if (!e.getByToken(_tokHO, cho))
285  _logger.dqmthrow("Collection HODigiCollection isn't available"
286  + _tagHO.label() + " " + _tagHO.instance());
287  if (!e.getByToken(_tokHF, chf))
288  _logger.dqmthrow("Collection HFDigiCollection isn't available"
289  + _tagHF.label() + " " + _tagHF.instance());
290 
291  for (HBHEDigiCollection::const_iterator it=chbhe->begin();
292  it!=chbhe->end(); ++it)
293  {
294  const HBHEDataFrame digi = (const HBHEDataFrame)(*it);
295  double sumQ = utilities::sumQ<HBHEDataFrame>(digi, 2.5, 0,
296  digi.size()-1);
297  double timing = utilities::aveTS<HBHEDataFrame>(digi, 2.5, 0,
298  digi.size()-1);
299  const HcalDetId did = digi.id();
300  int iieta = did.ieta()<0 ? abs(did.ieta())-constants::IETA_MIN :
302 
303  // fill without a cut
304  _cOccupancy_depth.fill(did);
306  _cSumQ_depth.fill(did, sumQ);
307  _numDigis[did.subdet()-1]++;
308  _cDigiSizevsLS_SubDet.fill(did, _currentLS, digi.size());
309  _occ_1LS[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1] = true;
310  _occ_10LS[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1] = true;
311  _error_1LS[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1] =
312  utilities::isError<HBHEDataFrame>(digi);
313  if (this->_ptype!=fOffline)
314  {
316  _cSumQ_SubDetPM_iphi.fill(did, sumQ);
317  }
318  if (_occ_Always[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1]==false)
319  {
321  _occ_Always[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1]=true;
322  }
323 
324  // fill with a cut
325  if (sumQ>_cutSumQ_HBHE)
326  {
327  _cTimingCut_SubDetPM_iphi.fill(did, timing);
328  _cTimingCut_depth.fill(did, timing);
331 
332  _numDigisCut[digi.id().subdet()-1]++;
333  if (this->_ptype!=fOffline)
334  {
336  _cTimingCutvsieta_SubDet_iphi.fill(did, timing);
337  _cTimingCutvsiphi_SubDet_ieta.fill(did, timing);
338  }
339  }
340 
341  // per TS
342  for (int i=0; i<digi.size(); i++)
343  {
344  // without a cut
345  _cADCperTS_SubDet.fill(did, digi.sample(i).adc());
346  _cfCperTS_SubDet.fill(did, digi.sample(i).nominal_fC());
347  if (this->_ptype!=fOffline)
348  {
349  _cShape_SubDetPM_iphi.fill(did, i, digi.sample(i).nominal_fC()-2.5);
350  }
351 
352  // with a cut
353  if (sumQ>_cutSumQ_HBHE)
354  {
356  digi.sample(i).nominal_fC()-2.5);
357  }
358  }
359  }
360  for (HODigiCollection::const_iterator it=cho->begin();
361  it!=cho->end(); ++it)
362  {
363  const HODataFrame digi = (const HODataFrame)(*it);
364  double sumQ = utilities::sumQ<HODataFrame>(digi, 8.5, 0,
365  digi.size()-1);
366  double timing = utilities::aveTS<HODataFrame>(digi, 8.5, 0,
367  digi.size()-1);
368  const HcalDetId did = digi.id();
369  int iieta = did.ieta()<0 ? abs(did.ieta())-constants::IETA_MIN :
371 
372  // fill without a cut
373  _cOccupancy_depth.fill(did);
375  _cSumQ_depth.fill(did, sumQ);
376  _numDigis[did.subdet()-1]++;
377  _cDigiSizevsLS_SubDet.fill(did, _currentLS, digi.size());
378  _occ_1LS[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1] = true;
379  _occ_10LS[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1] = true;
380  _error_1LS[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1] =
381  utilities::isError<HODataFrame>(digi);
382  if (this->_ptype!=fOffline)
383  {
385  _cSumQ_SubDetPM_iphi.fill(did, sumQ);
386  }
387  if (_occ_Always[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1]==false)
388  {
390  _occ_Always[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1]=true;
391  }
392 
393  // fill with a cut
394  if (sumQ>_cutSumQ_HO)
395  {
396  _cTimingCut_SubDetPM_iphi.fill(did, timing);
397  _cTimingCut_depth.fill(did, timing);
400 
401  _numDigisCut[digi.id().subdet()-1]++;
402 
403  if (this->_ptype!=fOffline)
404  {
406  _cTimingCutvsieta_SubDet_iphi.fill(did, timing);
407  _cTimingCutvsiphi_SubDet_ieta.fill(did, timing);
408  }
409  }
410 
411  // per TS
412  for (int i=0; i<digi.size(); i++)
413  {
414  // without a cut
415  _cADCperTS_SubDet.fill(did, digi.sample(i).adc());
416  _cfCperTS_SubDet.fill(did, digi.sample(i).nominal_fC());
417  if (this->_ptype!=fOffline)
418  {
419  _cShape_SubDetPM_iphi.fill(did, i, digi.sample(i).nominal_fC()-8.5);
420  }
421 
422  // with a cut
423  if (sumQ>_cutSumQ_HO)
424  {
426  digi.sample(i).nominal_fC()-8.5);
427  }
428  }
429  }
430  for (HFDigiCollection::const_iterator it=chf->begin();
431  it!=chf->end(); ++it)
432  {
433  const HFDataFrame digi = (const HFDataFrame)(*it);
434  double sumQ = utilities::sumQ<HFDataFrame>(digi, 2.5, 0,
435  digi.size()-1);
436  double timing = utilities::aveTS<HFDataFrame>(digi, 2.5, 0,
437  digi.size()-1);
438  const HcalDetId did = digi.id();
439  int iieta = did.ieta()<0 ? abs(did.ieta())-constants::IETA_MIN :
441 
442  // fill without a cut
443  _cOccupancy_depth.fill(did);
445  _cSumQ_depth.fill(did, sumQ);
446  _numDigis[digi.id().subdet()-1]++;
447  _cDigiSizevsLS_SubDet.fill(did, _currentLS, digi.size());
448  _occ_1LS[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1] = true;
449  _occ_10LS[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1] = true;
450  _error_1LS[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1] =
451  utilities::isError<HFDataFrame>(digi);
452  if (this->_ptype!=fOffline)
453  {
455  _cSumQ_SubDetPM_iphi.fill(did, sumQ);
456  }
457  if (_occ_Always[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1]==false)
458  {
460  _occ_Always[did.subdet()-1][did.iphi()-1][iieta][did.depth()-1]=true;
461  }
462 
463  // fill with a cut
464  if (sumQ>_cutSumQ_HF)
465  {
466  _cTimingCut_SubDetPM_iphi.fill(did, timing);
467  _cTimingCut_depth.fill(did, timing);
470 
471  double q1 = digi.sample(1).nominal_fC()-2.5;
472  double q2 = digi.sample(2).nominal_fC()-2.5;
473  double q2q12 = q2/(q1+q2);
474  if (did.iphi()==3 && did.ieta()==41 && did.depth()==2)
476  if (did.iphi()==3 && did.ieta()==-41 && did.depth()==2)
478 
479 
480  _numDigisCut[digi.id().subdet()-1]++;
481 
482  if (this->_ptype!=fOffline)
483  {
485  _cTimingCutvsieta_SubDet_iphi.fill(did, timing);
486  _cTimingCutvsiphi_SubDet_ieta.fill(did, timing);
488  }
489  }
490 
491  // per TS
492  for (int i=0; i<digi.size(); i++)
493  {
494  // without a cut
495  _cADCperTS_SubDet.fill(did, digi.sample(i).adc());
496  _cfCperTS_SubDet.fill(did, digi.sample(i).nominal_fC());
497  if (this->_ptype!=fOffline)
498  {
499  _cShape_SubDetPM_iphi.fill(did, i, digi.sample(i).nominal_fC()-2.5);
500  }
501 
502  // with a cut
503  if (sumQ>_cutSumQ_HF)
504  {
506  digi.sample(i).nominal_fC()-2.5);
507  if (did.iphi()==3 && did.ieta()==41 && did.depth()==2)
509  digi.sample(i).nominal_fC()-2.5);
510  if (did.iphi()==3 && did.ieta()==-41 && did.depth()==2)
512  digi.sample(i).nominal_fC()-2.5);
513  }
514  }
515  }
516 
517  // Fill the occupancy vs LS
519  _numDigis[0]);
521  _numDigisCut[0]);
523  _numDigis[1]);
525  _numDigisCut[1]);
527  _numDigis[2]);
529  _numDigisCut[2]);
531  _numDigis[3]);
533  _numDigisCut[3]);
534 }
535 
537  edm::EventSetup const& es)
538 {
539  // statuses
540  // By default the flag is not applicable
542  for (int j=fLowOcp; j<nDigiFlag; j++)
543  for (unsigned int i=0; i<constants::SUBDET_NUM; i++)
544  status[i][j]=constants::NOT_APPLICABLE;
545 
546  /*
547  * Do the checks here.
548  * -> HF Digi Occupancy
549  * -> Digi Size Fluctuations
550  * -> Missing (or Dead Channels)
551  */
552 
553  // HF Digi Occupancy Check
555  double numChs = meocpHF->getBinContent(_currentLS);
556  if (constants::CHS_NUM[3] - numChs>=48)
557  status[3][fLowOcp] = constants::VERY_LOW;
558  else if (constants::CHS_NUM[3] - numChs>=24)
559  status[3][fLowOcp] = constants::LOW;
560  else if (constants::CHS_NUM[3] - numChs>=10)
561  status[3][fLowOcp] = constants::LOW;
562  else if (constants::CHS_NUM[3] - numChs>=1)
563  status[3][fLowOcp] = constants::PROBLEMATIC;
564  else if (constants::CHS_NUM[3] - numChs<0)
565  status[3][fLowOcp] = constants::PROBLEMATIC;
566  else if (constants::CHS_NUM[3]==numChs)
567  status[3][fLowOcp] = constants::GOOD;
568 
569  // Digi Size Check
570  for (unsigned int i=0; i<constants::SUBDET_NUM; i++)
571  {
573  double size = meds->getBinContent(_currentLS);
574  double error = meds->getBinError(_currentLS);
575  if (size==constants::TS_NUM[i] && error==0)
576  status[i][fDigiSize] = constants::GOOD;
577  else
579 
580  }
581 
582  // Check the HF uniformity vs iphi
583  for (int i=0; i<IPHI_NUM; i+=4)
584  {
585  int i1 = (IPHI_NUM-1+i)%IPHI_NUM;
586  int i2 = (IPHI_NUM-1+2+i)%IPHI_NUM;
587  int j1 = (IPHI_NUM-1+4+i)%IPHI_NUM;
588  int j2 = (IPHI_NUM-1+6+i)%IPHI_NUM;
589 
590  // get HFM guys. For description of 6,7 see Mapper Class
593  6, i2);
596  6, j2);
597  double ratio_m = std::min(occ1_m, occ2_m)/std::max(occ1_m, occ2_m);
598 
599  // get HFP guys
602  7, i2);
605  7, j2);
606  double ratio_p = std::min(occ1_p, occ2_p)/std::max(occ1_p, occ2_p);
607 
608  if (ratio_m<0.8 || ratio_p<0.8)
609  {
610  // set and exit the loop!
611  status[3][fUniphi] = constants::VERY_LOW;
612  break;
613  }
614  else
615  status[3][fUniphi] = constants::GOOD;
616  }
617 
618  /*
619  * Generic all Hcal Loop.
620  * -> Possible Missing Channels
621  * -> Cap Id Rotations
622  */
623  for (unsigned int idet=0; idet<constants::SUBDET_NUM; idet++)
624  {
625  HcalSubdetector subd = HcalEmpty;
626  if (idet+1==HB)
627  subd = HcalBarrel;
628  else if (idet+1==HE)
629  subd = HcalEndcap;
630  else if (idet+1==HO)
631  subd = HcalOuter;
632  else
633  subd = HcalForward;
634  for (int iiphi=0; iiphi<constants::IPHI_NUM; iiphi++)
635  for (int iieta=0; iieta<constants::IETA_NUM; iieta++)
636  for (int id=0; id<constants::DEPTH_NUM; id++)
637  {
638  int ieta = iieta<constants::IETA_NUM/2 ?
639  -(iieta+constants::IETA_MIN) :
640  iieta-constants::IETA_NUM/2+constants::IETA_MIN;
641  HcalDetId did(subd, ieta, iiphi+1, id+1);
642  // if not a valid Detector cell continue;
643  if (!utilities::validDetId(did))
644  continue;
645 
646  // if absent for 1 full LS;
647  if (!_occ_1LS[idet][iiphi][iieta][id])
648  {
649  _cMsn1LS_depth.fill(did);
650  _nMsn[idet]++;
651  }
652  // if absent for 10LSs
653  if (_procLSs>0 && _procLSs%10==0 &&
654  !_occ_10LS[idet][iiphi][iieta][id])
655  _cMsn10LS_depth.fill(did);
656 
657  // capid rotations check
658  if (_error_1LS[idet][iiphi][iieta][id])
659  {
660  _nCapIdRots[idet]++;
661  _cCapIdRots_depth.fill(did);
662  }
663  }
664  }
666  _nMsn[0]);
668  _nMsn[1]);
670  _nMsn[2]);
672  _nMsn[3]);
673  for (unsigned int idet=0; idet<constants::SUBDET_NUM; idet++)
674  {
675  // deal with missing channels
676  double ratio = 1-double(_nMsn[idet])/double(constants::CHS_NUM[idet]);
677  if (ratio>=GOOD)
678  status[idet][fMsn1LS] = constants::GOOD;
679  else if (ratio>=constants::PROBLEMATIC)
680  status[idet][fMsn1LS] = constants::PROBLEMATIC;
681  else if (ratio>=constants::LOW)
682  status[idet][fMsn1LS] = constants::LOW;
683  else
684  status[idet][fMsn1LS] = constants::VERY_LOW;
685 
686  // deal with cap Id rotations
687  ratio = 1-double(_nCapIdRots[idet])/
688  double(constants::CHS_NUM[idet]);
689  if (ratio>=GOOD)
690  status[idet][fCapIdRot] = constants::GOOD;
691  else if (ratio>=constants::PROBLEMATIC)
692  status[idet][fCapIdRot] = constants::PROBLEMATIC;
693  else if (ratio>=constants::LOW)
694  status[idet][fCapIdRot] = constants::LOW;
695  else
696  status[idet][fCapIdRot] = constants::VERY_LOW;
697  }
698 
699  // finally set all the statuses!
700  for (int j=fLowOcp; j<nDigiFlag; j++)
701  for (unsigned int i=0; i<constants::SUBDET_NUM; i++)
702  {
703  _cSummary.setBinContent(i, j, status[i][j]);
705  _currentLS, j, status[i][j]);
706  }
707 
708  // in the end always do the DQTask::endLumi
709  DQTask::endLuminosityBlock(lb, es);
710 }
711 
713 
714 
double const LOW
Definition: Constants.h:17
virtual void initialize(std::string const &folder, std::string const &nametitle, mapper::MapperType mt, axis::Axis *xaxis, axis::Axis *yaxis=new axis::ValueAxis(axis::fYaxis, axis::fEntries), int debug=0)
Container1D _cfCperTS_SubDet
Definition: DigiTask.h:76
virtual void initialize(std::string const &folder, std::string const &nametitle, axis::Axis *xaxis, axis::Axis *yaxis=new CoordinateAxis(fYaxis, axis::fiphi), axis::Axis *zaxis=new ValueAxis(fZaxis, fEntries), int debug=0)
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
Definition: Container2D.cc:233
int const IPHI_NUM
Definition: Constants.h:100
virtual void initialize(std::string const &folder, std::string nametitle, mapper::MapperType mt, axis::Axis *xaxis, axis::Axis *yaxis=new axis::CoordinateAxis(axis::fYaxis, axis::fiphi), axis::Axis *zaxis=new axis::ValueAxis(axis::fZaxis, axis::fEntries), int debug=0)
Definition: Container2D.cc:30
double sumQ(DIGI digi, double ped, int i=0, int j=3)
Definition: Utilities.h:52
int ib
Definition: cuy.py:660
int const SUBDET_NUM
Definition: Constants.h:87
int _numDigis[constants::SUBDET_NUM]
Definition: DigiTask.h:61
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
edm::InputTag _tagHO
Definition: DigiTask.h:51
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
Definition: Container1D.cc:198
int const IETA_NUM
Definition: Constants.h:111
double const VERY_LOW
Definition: Constants.h:18
edm::EDGetTokenT< HBHEDigiCollection > _tokHBHE
Definition: DigiTask.h:53
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:462
Container2D _cSummaryvsLS_SubDet
Definition: DigiTask.h:117
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
ContainerSingle2D _cSummary
Definition: DigiTask.h:116
ContainerSingleProf1D _cQ2Q12CutvsLS_p3em41d2
Definition: DigiTask.h:98
ContainerProf1D _cOccupancyvsLS_SubDet
Definition: DigiTask.h:105
edm::EDGetTokenT< HFDigiCollection > _tokHF
Definition: DigiTask.h:55
double _cutSumQ_HO
Definition: DigiTask.h:71
bool validDetId(HcalSubdetector sd, int ies, int ip, int dp)
Container2D _cOccupancyCut_depth
Definition: DigiTask.h:108
int const IETA_MIN
Definition: Constants.h:108
Container2D _cOccupancyOnce_depth
Definition: DigiTask.h:110
int size() const
total number of samples in the digi
Definition: HBHEDataFrame.h:26
int _nCapIdRots[constants::SUBDET_NUM]
Definition: DigiTask.h:64
UpdateFreq
Definition: DQTask.h:16
std::vector< HBHEDataFrame >::const_iterator const_iterator
bool _error_1LS[constants::SUBDET_NUM][constants::IPHI_NUM][constants::IETA_NUM][constants::DEPTH_NUM]
Definition: DigiTask.h:66
int _procLSs
Definition: DQTask.h:58
bool _occ_1LS[constants::SUBDET_NUM][constants::IPHI_NUM][constants::IETA_NUM][constants::DEPTH_NUM]
Definition: DigiTask.h:65
edm::EDGetTokenT< HODigiCollection > _tokHO
Definition: DigiTask.h:54
Container1D _cShape_SubDetPM_iphi
Definition: DigiTask.h:83
ContainerSingle1D _cShapeCut_p3em41d2
Definition: DigiTask.h:86
Container1D _cShapeCut_SubDetPM_iphi
Definition: DigiTask.h:84
Container1D _cOccupancyCutvsiphi_SubDetPM
Definition: DigiTask.h:104
virtual void setBinContent(int, int, double)
virtual void loadLabels(std::vector< std::string > const &)
virtual void initialize(std::string const &folder, std::string const &nametitle, MapperType mt, Axis *xaxis, Axis *yaxis=new CoordinateAxis(axis::fYaxis, axis::fiphi), Axis *zaxis=new ValueAxis(axis::fZaxis, axis::fEntries), int debug=0)
void bookHistograms(fwlite::EventContainer &eventCont)
double q2[4]
Definition: TauolaWrapper.h:88
Container1D _cTimingCut_SubDetPM_iphi
Definition: DigiTask.h:89
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
ContainerProf1D _cQ2Q12CutvsLS_HFPM_iphi
Definition: DigiTask.h:96
ContainerProf2D _cTimingCut_depth
Definition: DigiTask.h:93
ContainerProf2D _cSumQ_depth
Definition: DigiTask.h:79
virtual void fill(HcalDetId const &)
Definition: Container2D.cc:39
ContainerProf1D _cTimingCutvsiphi_SubDet_ieta
Definition: DigiTask.h:91
ProcessingType _ptype
Definition: DQModule.h:52
virtual void reset()
Definition: Container1D.cc:230
edm::InputTag _tagHBHE
Definition: DigiTask.h:50
Container1D _cADCperTS_SubDet
Definition: DigiTask.h:77
Container2D _cMsn1LS_depth
Definition: DigiTask.h:111
ContainerProf1D _cTimingCutvsLS_SubDetPM_iphi
Definition: DigiTask.h:92
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
void dqmthrow(std::string const &msg) const
Definition: Logger.h:15
int ieta() const
get the cell ieta
Definition: HcalDetId.h:56
virtual void fill(double)
Definition: Container1D.h:53
virtual void loadLabels(std::vector< std::string > const &)
Definition: Container2D.cc:294
double _cutSumQ_HF
Definition: DigiTask.h:71
int size() const
total number of samples in the digi
Definition: HODataFrame.h:27
HcalSubdetector
Definition: HcalAssistant.h:31
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
virtual void _resetMonitors(UpdateFreq)
Definition: DigiTask.cc:231
int j
Definition: DBlmapReader.cc:9
double _cutSumQ_HBHE
Definition: DigiTask.h:71
Logger _logger
Definition: DQModule.h:62
double const GOOD
Definition: Constants.h:15
T min(T a, T b)
Definition: MathUtil.h:58
virtual void initialize(std::string const &folder, std::string const &nametitle, mapper::MapperType mt, axis::Axis *xaxis, axis::Axis *yaxis=new ValueAxis(fYaxis, fEntries), int debug=0)
Definition: Container1D.cc:28
std::string _name
Definition: DQModule.h:50
ContainerSingleProf1D _cQ2Q12CutvsLS_p3e41d2
Definition: DigiTask.h:97
ContainerProf1D _cOccupancyCutvsLS_SubDet
Definition: DigiTask.h:106
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
ContainerSingle1D _cShapeCut_p3e41d2
Definition: DigiTask.h:85
ContainerProf1D _cSumQvsLS_SubDetPM_iphi
Definition: DigiTask.h:80
Container2D _cOccupancy_depth
Definition: DigiTask.h:107
DigiTask(edm::ParameterSet const &)
Definition: DigiTask.cc:5
virtual void initialize(std::string const &folder, std::string const &nametitle, axis::Axis *xaxis, axis::Axis *yaxis=new ValueAxis(fYaxis, axis::fEntries), int debug=0)
virtual void initialize(std::string const &folder, std::string const &nametitle, axis::Axis *xaxis, axis::Axis *yaxis=new ValueAxis(fYaxis, axis::fEntries), int debug=0)
edm::InputTag _tagHF
Definition: DigiTask.h:52
int size() const
total number of samples in the digi
Definition: HFDataFrame.h:26
bool _occ_10LS[constants::SUBDET_NUM][constants::IPHI_NUM][constants::IETA_NUM][constants::DEPTH_NUM]
Definition: DigiTask.h:67
double q1[4]
Definition: TauolaWrapper.h:87
std::vector< std::string > _fNames
Definition: DigiTask.h:58
virtual MonitorElement * at(unsigned int i)
Definition: Container1D.cc:236
double getBinError(int binx) const
get uncertainty on content of bin (1-D) - See TH1::GetBinError for details
int const CHS_NUM[SUBDET_NUM]
Definition: Constants.h:136
int const DEPTH_NUM
Definition: Constants.h:128
Container1D _cOccupancyvsiphi_SubDetPM
Definition: DigiTask.h:103
ContainerProf1D _cMsn1LSvsLS_SubDet
Definition: DigiTask.h:113
std::string const & label() const
Definition: InputTag.h:36
virtual void setBinContent(int, int, int, double)
Definition: Container2D.cc:263
double const NOT_APPLICABLE
Definition: Constants.h:19
double getBinContent(int binx) const
get content of bin (1-D)
int _nMsn[constants::SUBDET_NUM]
Definition: DigiTask.h:63
Container1D _cSumQ_SubDetPM_iphi
Definition: DigiTask.h:78
std::string _subsystem
Definition: DQModule.h:57
virtual void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
Definition: DigiTask.cc:536
bool _occ_Always[constants::SUBDET_NUM][constants::IPHI_NUM][constants::IETA_NUM][constants::DEPTH_NUM]
Definition: DigiTask.h:68
Container2D _cMsn10LS_depth
Definition: DigiTask.h:112
Container2D _cCapIdRots_depth
Definition: DigiTask.h:100
int const HO
Definition: Constants.h:85
int const TS_NUM[SUBDET_NUM]
Definition: Constants.h:142
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
virtual double getBinContent(unsigned int, int)
Definition: Container1D.cc:225
virtual void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &)
Definition: DigiTask.cc:178
ContainerProf1D _cDigiSizevsLS_SubDet
Definition: DigiTask.h:99
virtual void _process(edm::Event const &, edm::EventSetup const &)
Definition: DigiTask.cc:274
double const PROBLEMATIC
Definition: Constants.h:16
std::string const & instance() const
Definition: InputTag.h:37
tuple size
Write out results.
ContainerProf1D _cTimingCutvsieta_SubDet_iphi
Definition: DigiTask.h:90
Definition: Run.h:43
int _numDigisCut[constants::SUBDET_NUM]
Definition: DigiTask.h:62
tuple status
Definition: mps_update.py:57