CMS 3D CMS Logo

DigiTask.cc
Go to the documentation of this file.
2 
3 using namespace hcaldqm;
4 using namespace hcaldqm::constants;
5 using namespace hcaldqm::filter;
6 
8  DQTask(ps)
9 {
11  edm::InputTag("hcalDigis"));
13  edm::InputTag("hcalDigis"));
15  edm::InputTag("hcalDigis"));
17  edm::InputTag("hcalDigis"));
18 
19  _tokHBHE = consumes<HBHEDigiCollection>(_tagHBHE);
20  _tokHE = consumes<QIE11DigiCollection>(_tagHE);
21  _tokHO = consumes<HODigiCollection>(_tagHO);
22  _tokHF = consumes<QIE10DigiCollection>(_tagHF);
23 
24  _cutSumQ_HBHE = ps.getUntrackedParameter<double>("cutSumQ_HBHE", 20);
25  _cutSumQ_HE = ps.getUntrackedParameter<double>("cutSumQ_HE", 20);
26  _cutSumQ_HO = ps.getUntrackedParameter<double>("cutSumQ_HO", 20);
27  _cutSumQ_HF = ps.getUntrackedParameter<double>("cutSumQ_HF", 20);
28  _thresh_unihf = ps.getUntrackedParameter<double>("thresh_unihf", 0.2);
29 
30  _vflags.resize(nDigiFlag);
31  _vflags[fUni]=hcaldqm::flag::Flag("UniSlotHF");
35 
36  _qie10InConditions = ps.getUntrackedParameter<bool>("qie10InConditions", true);
37 
38  // Get reference digi sizes. Convert from unsigned to signed int, because <digi>::size()/samples() return ints for some reason.
39  std::vector<uint32_t> vrefDigiSize = ps.getUntrackedParameter<std::vector<uint32_t>>("refDigiSize");
40  _refDigiSize[HcalBarrel] = (int)vrefDigiSize[0];
41  _refDigiSize[HcalEndcap] = (int)vrefDigiSize[1];
42  _refDigiSize[HcalOuter] = (int)vrefDigiSize[2];
43  _refDigiSize[HcalForward] = (int)vrefDigiSize[3];
44 }
45 
47  edm::Run const& r, edm::EventSetup const& es)
48 {
49  DQTask::bookHistograms(ib,r,es);
50 
51  // GET WHAT YOU NEED
53  es.get<HcalDbRecord>().get(dbs);
54  _emap = dbs->getHcalMapping();
55  std::vector<uint32_t> vVME;
56  std::vector<uint32_t> vuTCA;
60  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
62  vVME);
64  vuTCA);
65 
66  // Filters for QIE8 vs QIE10/11
67  std::vector<uint32_t> vhashQIE1011;
71  vhashQIE1011);
73  vhashQIE1011);
74 
75  // INITIALIZE FIRST
93 
107 
112  _cTimingCut_depth.initialize(_name, "TimingCut",
121 
122  // Occupancy w/o a cut
123  _cOccupancyvsLS_Subdet.initialize(_name, "OccupancyvsLS",
127  _cOccupancy_depth.initialize(_name, "Occupancy",
132 
133  // Occupancy w/ a cut
134  _cOccupancyCutvsLS_Subdet.initialize(_name, "OccupancyCutvsLS",
138  _cOccupancyCut_depth.initialize(_name, "OccupancyCut",
143 
144  // Digi size
145  _cDigiSize_Crate.initialize(_name, "DigiSize",
159 
160  _cLETDCTimevsADC_SubdetPM.initialize(_name, "LETDCTimevsADC",
165  _cLETDCvsADC_SubdetPM.initialize(_name, "LETDCvsADC",
170  _cLETDCvsTS_SubdetPM.initialize(_name, "LETDCvsTS",
179 
180  _cBadTDCValues_SubdetPM.initialize(_name, "BadTDCValues",
184  _cBadTDCvsBX_SubdetPM.initialize(_name, "BadTDCvsBX",
188  _cBadTDCvsLS_SubdetPM.initialize(_name, "BadTDCvsLS",
192  _cBadTDCCount_depth.initialize(_name, "BadTDCCount",
197 
198  if (_ptype == fOnline || _ptype == fLocal) {
200  "Occupancy", hashfunctions::fCrate,
205  "Occupancy", hashfunctions::fCrateSlot,
209  }
210 
211  // INITIALIZE HISTOGRAMS that are only for Online
212  if (_ptype==fOnline)
213  {
214  // Charge sharing
227  _cDigiSizevsLS_FED.initialize(_name, "DigiSizevsLS",
231  _cTimingCutvsiphi_SubdetPM.initialize(_name, "TimingCutvsiphi",
235  _cTimingCutvsieta_Subdet.initialize(_name, "TimingCutvsieta",
239  _cOccupancyvsiphi_SubdetPM.initialize(_name, "Occupancyvsiphi",
243  _cOccupancyvsieta_Subdet.initialize(_name, "Occupancyvsieta",
247  _cOccupancyCutvsiphi_SubdetPM.initialize(_name, "OccupancyCutvsiphi",
251  _cOccupancyCutvsieta_Subdet.initialize(_name, "OccupancyCutvsieta",
255  _cOccupancyCutvsLS_Subdet.initialize(_name, "OccupancyCutvsLS",
259  _cOccupancyCutvsBX_Subdet.initialize(_name, "OccupancyCutvsBX",
263 // _cOccupancyCutvsSlotvsLS_HFPM.initialize(_name,
264 // "OccupancyCutvsSlotvsLS", hcaldqm::hashfunctions::fSubdetPM,
265 // new hcaldqm::quantity::LumiSection(_maxLS),
266 // new hcaldqm::quantity::ElectronicsQuantity(hcaldqm::quantity::fSlotuTCA),
267 // new hcaldqm::quantity::ValueQuantity(hcaldqm::quantity::fN),0);
269  "OccupancyCutvsiphivsLS", hcaldqm::hashfunctions::fSubdetPM,
273  }
274  if (_ptype != fOffline) { // hidefed2crate
275  std::vector<int> vFEDs = hcaldqm::utilities::getFEDList(_emap);
276  std::vector<int> vFEDsVME = hcaldqm::utilities::getFEDVMEList(_emap);
277  std::vector<int> vFEDsuTCA = hcaldqm::utilities::getFEDuTCAList(_emap);
278 
279  std::vector<uint32_t> vFEDHF;
280  vFEDHF.push_back(HcalElectronicsId(22, SLOT_uTCA_MIN,
281  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
282  vFEDHF.push_back(HcalElectronicsId(22, SLOT_uTCA_MIN+6,
283  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
284  vFEDHF.push_back(HcalElectronicsId(29, SLOT_uTCA_MIN,
285  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
286  vFEDHF.push_back(HcalElectronicsId(29, SLOT_uTCA_MIN+6,
287  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
288  vFEDHF.push_back(HcalElectronicsId(32, SLOT_uTCA_MIN,
289  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
290  vFEDHF.push_back(HcalElectronicsId(32, SLOT_uTCA_MIN+6,
291  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
292 
293  // initialize filters
295  vFEDHF);
296 
297  // push the rawIds of each fed into the vector...
298  for (std::vector<int>::const_iterator it=vFEDsVME.begin();
299  it!=vFEDsVME.end(); ++it)
300  _vhashFEDs.push_back(HcalElectronicsId(
302  (*it)-FED_VME_MIN).rawId());
303  for (std::vector<int>::const_iterator it=vFEDsuTCA.begin();
304  it!=vFEDsuTCA.end(); ++it)
305  {
306  std::pair<uint16_t, uint16_t> cspair = utilities::fed2crate(*it);
307  _vhashFEDs.push_back(HcalElectronicsId(
308  cspair.first, cspair.second, FIBER_uTCA_MIN1,
309  FIBERCH_MIN, false).rawId());
310  }
311 
312  _cShapeCut_FED.initialize(_name, "ShapeCut",
316 
317  _cTimingCut_FEDVME.initialize(_name, "TimingCut",
322  _cTimingCut_FEDuTCA.initialize(_name, "TimingCut",
329  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
334  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
337  _cTimingCutvsLS_FED.initialize(_name, "TimingvsLS",
341 
342  _cOccupancy_FEDVME.initialize(_name, "Occupancy",
347  _cOccupancy_FEDuTCA.initialize(_name, "Occupancy",
354  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
359  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
362 
363  _cOccupancyCut_FEDVME.initialize(_name, "OccupancyCut",
368  _cOccupancyCut_FEDuTCA.initialize(_name, "OccupancyCut",
375  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
380  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
383 
384  _cDigiSize_FED.initialize(_name, "DigiSize",
388 
389  if (_ptype == fOnline) {
390  _cSummaryvsLS_FED.initialize(_name, "SummaryvsLS",
395  _cSummaryvsLS.initialize(_name, "SummaryvsLS",
399 
405  }
406  }
407 
408  // BOOK HISTOGRAMS
409  char cutstr[200];
410  sprintf(cutstr, "_SumQHBHE%dHO%dHF%d", int(_cutSumQ_HBHE),
411  int(_cutSumQ_HO), int(_cutSumQ_HF));
412  char cutstr2[200];
413  sprintf(cutstr2, "_SumQHF%d", int(_cutSumQ_HF));
414 
427 
428  if (_ptype != fOffline) { // hidefed2crate
444  }
445 
449 
453 
458 
463 
464  // BOOK HISTOGRAMS that are only for Online
467 
468  if (_ptype == fOnline || _ptype == fLocal) {
471  }
472 
473  if (_ptype==fOnline)
474  {
487 // _cOccupancyCutvsSlotvsLS_HFPM.book(ib, _emap, _filter_QIE1011, _subsystem);
491 
493  _xNChs.book(_emap);
495  _xUni.book(_emap);
497 
498  // just PER HF FED RECORD THE #CHANNELS
499  // ONLY WAY TO DO THAT AUTOMATICALLY AND W/O HARDCODING 1728
500  // or ANY OTHER VALUES LIKE 2592, 2192
501  std::vector<HcalGenericDetId> gids = _emap->allPrecisionId();
502  for (std::vector<HcalGenericDetId>::const_iterator it=gids.begin();
503  it!=gids.end(); ++it)
504  {
505  if (!it->isHcalDetId())
506  continue;
507  HcalDetId did(it->rawId());
508  if (_xQuality.exists(did))
509  {
510  HcalChannelStatus cs(it->rawId(), _xQuality.get(
511  HcalDetId(*it)));
512  if (
515  continue;
516  }
518  _xNChsNominal.get(eid)++; // he will know the nominal #channels per FED
519  }
520  }
521 
522  // MARK THESE HISTOGRAMS AS LUMI BASED FOR OFFLINE PROCESSING
523  if (_ptype==fOffline)
524  {
526  //_cDigiSize_FED.setLumiFlag();
528  }
529 
530  // book Number of Events vs LS histogram
531  ib.setCurrentFolder(_subsystem+"/RunInfo");
532  meNumEvents1LS = ib.book1D("NumberOfEvents", "NumberOfEvents",
533  1, 0, 1);
535 
536  // book the flag for unknown ids and the online guy as well
538  meUnknownIds1LS = ib.book1D("UnknownIds", "UnknownIds",
539  1, 0, 1);
540  _unknownIdsPresent = false;
542 }
543 
545 {
546  DQTask::_resetMonitors(uf);
547 
548  switch(uf)
549  {
550  case hcaldqm::f1LS:
551  _unknownIdsPresent = false;
552  break;
553  case hcaldqm::f50LS:
554  // ^^^ONLINE ONLY!
555  if (_ptype==fOnline)
557  // ^^^
558  break;
559  default:
560  break;
561  }
562 }
563 
564 /* virtual */ void DigiTask::_process(edm::Event const& e,
565  edm::EventSetup const&)
566 {
571 
572  if (!e.getByToken(_tokHBHE, chbhe))
573  _logger.dqmthrow("Collection HBHEDigiCollection isn't available"
574  + _tagHBHE.label() + " " + _tagHBHE.instance());
575  if (!e.getByToken(_tokHE, che_qie11))
576  _logger.dqmthrow("Collection QIE11DigiCollection isn't available"
577  + _tagHE.label() + " " + _tagHE.instance());
578  if (!e.getByToken(_tokHO, cho))
579  _logger.dqmthrow("Collection HODigiCollection isn't available"
580  + _tagHO.label() + " " + _tagHO.instance());
581  if (!e.getByToken(_tokHF, chf))
582  _logger.dqmthrow("Collection QIE10DigiCollection isn't available"
583  + _tagHF.label() + " " + _tagHF.instance());
584 
585  // extract some info per event
586  int bx = e.bunchCrossing();
587  meNumEvents1LS->Fill(0.5); // just increment
588 
589  // To fill histograms outside of the loop, you need to determine if there were
590  // any valid det ids first
591  uint32_t rawidValid = 0;
592  uint32_t rawidHBValid = 0;
593  uint32_t rawidHEValid = 0;
594 
595  // HB collection
596  int numChs = 0;
597  int numChsCut = 0;
598  int numChsHE = 0;
599  int numChsCutHE = 0;
600  for (HBHEDigiCollection::const_iterator it=chbhe->begin(); it!=chbhe->end();
601  ++it)
602  {
603  // Explicit check on the DetIds present in the Collection
604  HcalDetId const& did = it->id();
605  if (did.subdet() != HcalBarrel) {
606  continue;
607  }
608  uint32_t rawid = _ehashmap.lookup(did);
609  if (rawid==0)
610  {meUnknownIds1LS->Fill(1); _unknownIdsPresent=true;continue;}
611  HcalElectronicsId const& eid(rawid);
612  if (did.subdet()==HcalBarrel)
613  rawidHBValid = did.rawId();
614  else if (did.subdet()==HcalEndcap)
615  rawidHEValid = did.rawId();
616 
617  //double sumQ = hcaldqm::utilities::sumQ<HBHEDataFrame>(*it, 2.5, 0, it->size()-1);
618  CaloSamples digi_fC = hcaldqm::utilities::loadADC2fCDB<HBHEDataFrame>(_dbService, did, *it);
619  double sumQ = hcaldqm::utilities::sumQDB<HBHEDataFrame>(_dbService, digi_fC, did, *it, 0, it->size()-1);
620 
621  // filter out channels that are masked out
622  if (_xQuality.exists(did))
623  {
624  HcalChannelStatus cs(did.rawId(), _xQuality.get(did));
625  if (
628  continue;
629  }
630 
631  _cSumQ_SubdetPM.fill(did, sumQ);
632  _cOccupancy_depth.fill(did);
633  if (_ptype == fOnline || _ptype == fLocal) {
634  _cOccupancy_Crate.fill(eid);
636  }
637  if (_ptype==fOnline)
638  {
639  _cDigiSizevsLS_FED.fill(eid, _currentLS, it->size());
640  it->size()!=_refDigiSize[did.subdet()]?
641  _xDigiSize.get(eid)++:_xDigiSize.get(eid)+=0;
644  }
645  _cDigiSize_Crate.fill(eid, it->size());
646  if (_ptype != fOffline) { // hidefed2crate
647  _cDigiSize_FED.fill(eid, it->size());
648  if (eid.isVMEid())
649  {
652  }
653  else
654  {
657  /*
658  if (!it->validate(0, it->size()))
659  {
660  _cCapIdRots_depth.fill(did);
661  _cCapIdRots_FEDuTCA.fill(eid, 1);
662  }*/
663  }
664  }
665 
666  for (int i=0; i<it->size(); i++)
667  {
668  _cADC_SubdetPM.fill(did, it->sample(i).adc());
669  _cfC_SubdetPM.fill(did, it->sample(i).nominal_fC());
670  if (_ptype != fOffline) { // hidefed2crate
671  _cADCvsTS_SubdetPM.fill(did, i, it->sample(i).nominal_fC());
672  if (sumQ>_cutSumQ_HBHE) {
673  _cShapeCut_FED.fill(eid, i, it->sample(i).nominal_fC());
674  }
675  }
676  }
677 
678  if (sumQ>_cutSumQ_HBHE)
679  {
680  //double timing = hcaldqm::utilities::aveTS<HBHEDataFrame>(*it, 2.5, 0, it->size()-1);
681  double timing = hcaldqm::utilities::aveTSDB<HBHEDataFrame>(_dbService, digi_fC, did, *it, 0, it->size()-1);
682  _cTimingCut_SubdetPM.fill(did, timing);
683  _cTimingCut_depth.fill(did, timing);
686  if (_ptype != fOffline) { // hidefed2crate
687  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
688  }
689  _cSumQ_depth.fill(did, sumQ);
690  _cSumQvsLS_SubdetPM.fill(did, _currentLS, sumQ);
691  if (_ptype==fOnline)
692  {
693  _cSumQvsBX_SubdetPM.fill(did, bx, sumQ);
694  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
695  _cTimingCutvsieta_Subdet.fill(did, timing);
699  }
700  if (_ptype != fOffline) { // hidefed2crate
701  if (eid.isVMEid())
702  {
703  _cTimingCut_FEDVME.fill(eid, timing);
704  _cTimingCut_ElectronicsVME.fill(eid, timing);
707  }
708  else
709  {
710  _cTimingCut_FEDuTCA.fill(eid, timing);
711  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
714  }
715  }
716  did.subdet()==HcalBarrel?numChsCut++:numChsCutHE++;
717  }
718  did.subdet()==HcalBarrel?numChs++:numChsHE++;
719  }
720 
721  // HE QIE11 collection
722  for (QIE11DigiCollection::const_iterator it=che_qie11->begin(); it!=che_qie11->end();
723  ++it)
724  {
725  const QIE11DataFrame digi = static_cast<const QIE11DataFrame>(*it);
726 
727  // Explicit check on the DetIds present in the Collection
728  HcalDetId const& did = digi.detid();
729  uint32_t rawid = _ehashmap.lookup(did);
730  if (rawid==0) {
731  meUnknownIds1LS->Fill(1);
732  _unknownIdsPresent=true;
733  continue;
734  }
735  HcalElectronicsId const& eid(rawid);
736  if (did.subdet() != HcalEndcap) {
737  continue;
738  }
739  if (did.subdet()==HcalBarrel) { // Note: since this is HE, we obviously expect did.subdet() always to be HcalEndcap, but QIE11DigiCollection will have HB for Run 3.
740  rawidHBValid = did.rawId();
741  } else if (did.subdet()==HcalEndcap) {
742  rawidHEValid = did.rawId();
743  }
744 
745  CaloSamples digi_fC = hcaldqm::utilities::loadADC2fCDB<QIE11DataFrame>(_dbService, did, digi);
746  double sumQ = hcaldqm::utilities::sumQDB<QIE11DataFrame>(_dbService, digi_fC, did, digi, 0, digi.samples()-1);
747 
748  // filter out channels that are masked out
749  if (_xQuality.exists(did))
750  {
751  HcalChannelStatus cs(did.rawId(), _xQuality.get(did));
752  if (
755  continue;
756  }
757 
758  _cSumQ_SubdetPM_QIE1011.fill(did, sumQ);
759  _cOccupancy_depth.fill(did);
760  if (_ptype == fOnline || _ptype == fLocal) {
761  _cOccupancy_Crate.fill(eid);
763  }
764  if (_ptype==fOnline)
765  {
766  _cDigiSizevsLS_FED.fill(eid, _currentLS, digi.samples());
767  digi.samples()!=_refDigiSize[did.subdet()]?
768  _xDigiSize.get(eid)++:_xDigiSize.get(eid)+=0;
771  }
772  _cDigiSize_Crate.fill(eid, digi.samples());
773  if (_ptype != fOffline) { // hidefed2crate
774  _cDigiSize_FED.fill(eid, digi.samples());
775  if (eid.isVMEid())
776  {
779  }
780  else
781  {
784  /*
785  if (!digi.validate(0, digi.size()))
786  {
787  _cCapIdRots_depth.fill(did);
788  _cCapIdRots_FEDuTCA.fill(eid, 1);
789  }*/
790  }
791  }
792  for (int i=0; i<digi.samples(); i++) {
793  double q = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE11DataFrame>(_dbService, digi_fC, did, digi, i);
794  _cADC_SubdetPM_QIE1011.fill(did, digi[i].adc());
795  _cfC_SubdetPM_QIE1011.fill(did, q);
796  _cLETDCvsADC_SubdetPM.fill(did, digi[i].adc(), digi[i].tdc());
797  _cLETDCvsTS_SubdetPM.fill(did, (int)i, digi[i].tdc());
798  if (digi[i].tdc() <50) {
799  double time = i*25. + (digi[i].tdc() / 2.);
800  _cLETDCTime_SubdetPM.fill(did, time);
801  _cLETDCTimevsADC_SubdetPM.fill(did, digi[i].adc(), time);
802  }
803  // Bad TDC values: 50-61 should never happen in QIE10 or QIE11, but we saw some in 2017 data.
804  if ((50 <= digi[i].tdc()) && (digi[i].tdc() <= 61)) {
805  _cBadTDCValues_SubdetPM.fill(did, digi[i].tdc());
806  _cBadTDCvsBX_SubdetPM.fill(did, bx);
809  }
810  if (_ptype != fOffline) { // hidefed2crate
811  _cADCvsTS_SubdetPM_QIE1011.fill(did, i, q);
812  if (sumQ>_cutSumQ_HE) {
813  _cShapeCut_FED.fill(eid, i, q);
814  }
815  }
816  }
817 
818  if (sumQ>_cutSumQ_HE)
819  {
820  //double timing = hcaldqm::utilities::aveTS_v10<QIE11DataFrame>(digi, 2.5, 0,digi.samples()-1);
821  double timing = hcaldqm::utilities::aveTSDB<QIE11DataFrame>(_dbService, digi_fC, did, digi, 0, digi.samples()-1);
822  _cTimingCut_SubdetPM.fill(did, timing);
823  _cTimingCut_depth.fill(did, timing);
826  if (_ptype != fOffline) { // hidefed2crate
827  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
828  }
829  _cSumQ_depth.fill(did, sumQ);
831  if (_ptype==fOnline)
832  {
833  _cSumQvsBX_SubdetPM_QIE1011.fill(did, bx, sumQ);
834  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
835  _cTimingCutvsieta_Subdet.fill(did, timing);
839  }
840  if (_ptype != fOffline) { // hidefed2crate
841  if (eid.isVMEid())
842  {
843  _cTimingCut_FEDVME.fill(eid, timing);
844  _cTimingCut_ElectronicsVME.fill(eid, timing);
847  }
848  else
849  {
850  _cTimingCut_FEDuTCA.fill(eid, timing);
851  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
854  }
855  }
856  did.subdet()==HcalBarrel?numChsCut++:numChsCutHE++;
857  }
858  did.subdet()==HcalBarrel?numChs++:numChsHE++;
859  }
860 
861  if (rawidHBValid!=0 && rawidHEValid!=0)
862  {
864  numChs);
866  numChsHE);
867  // ONLINE ONLY!
868  if (_ptype==fOnline)
869  {
871  _currentLS, numChsCut);
872  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidHBValid), bx,
873  numChsCut);
875  _currentLS, numChsCutHE);
876  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidHEValid), bx,
877  numChsCutHE);
878  }
879  // ^^^ONLINE ONLY!
880  }
881  numChs=0;
882  numChsCut = 0;
883 
884  // reset
885  rawidValid = 0;
886 
887 
888  // HO collection
889  for (HODigiCollection::const_iterator it=cho->begin(); it!=cho->end();
890  ++it)
891  {
892  // Explicit check on the DetIds present in the Collection
893  HcalDetId const& did = it->id();
894  uint32_t rawid = _ehashmap.lookup(did);
895  if (rawid==0)
896  {meUnknownIds1LS->Fill(1); _unknownIdsPresent=true;continue;}
897  HcalElectronicsId const& eid(rawid);
898  if (did.subdet()==HcalOuter)
899  rawidValid = did.rawId();
900 
901  //double sumQ = hcaldqm::utilities::sumQ<HODataFrame>(*it, 8.5, 0, it->size()-1);
902  CaloSamples digi_fC = hcaldqm::utilities::loadADC2fCDB<HODataFrame>(_dbService, did, *it);
903  double sumQ = hcaldqm::utilities::sumQDB<HODataFrame>(_dbService, digi_fC, did, *it, 0, it->size()-1);
904 
905  // filter out channels that are masked out
906  if (_xQuality.exists(did))
907  {
908  HcalChannelStatus cs(did.rawId(), _xQuality.get(did));
909  if (
912  continue;
913  }
914 
915  _cSumQ_SubdetPM.fill(did, sumQ);
916  _cOccupancy_depth.fill(did);
917  if (_ptype==fOnline)
918  {
919  _cDigiSizevsLS_FED.fill(eid, _currentLS, it->size());
920  it->size()!=_refDigiSize[did.subdet()]?
921  _xDigiSize.get(eid)++:_xDigiSize.get(eid)+=0;
924  }
925  _cDigiSize_Crate.fill(eid, it->size());
926  if (_ptype != fOffline) { // hidefed2crate
927  _cDigiSize_FED.fill(eid, it->size());
928  if (eid.isVMEid())
929  {
932  /*
933  if (!it->validate(0, it->size()))
934  _cCapIdRots_FEDVME.fill(eid, 1);
935  */
936  }
937  else
938  {
941  /*
942  if (!it->validate(0, it->size()))
943  _cCapIdRots_FEDuTCA.fill(eid, 1);*/
944  }
945  }
946 
947  for (int i=0; i<it->size(); i++)
948  {
949  _cADC_SubdetPM.fill(did, it->sample(i).adc());
950  _cfC_SubdetPM.fill(did, it->sample(i).nominal_fC());
951  if (_ptype != fOffline) { // hidefed2crate
952  _cADCvsTS_SubdetPM.fill(did, i, it->sample(i).nominal_fC());
953  if (sumQ>_cutSumQ_HO)
954  _cShapeCut_FED.fill(eid, i, it->sample(i).nominal_fC());
955  }
956  }
957 
958  if (sumQ>_cutSumQ_HO)
959  {
960  //double timing = hcaldqm::utilities::aveTS<HODataFrame>(*it, 8.5, 0,it->size()-1);
961  double timing = hcaldqm::utilities::aveTSDB<HODataFrame>(_dbService, digi_fC, did, *it, 0, it->size()-1);
962  _cSumQ_depth.fill(did, sumQ);
963  _cSumQvsLS_SubdetPM.fill(did, _currentLS, sumQ);
965  _cTimingCut_SubdetPM.fill(did, timing);
966  _cTimingCut_depth.fill(did, timing);
968  if (_ptype != fOffline) { // hidefed2crate
969  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
970  }
971  if (_ptype==fOnline)
972  {
973  _cSumQvsBX_SubdetPM.fill(did, bx, sumQ);
974  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
975  _cTimingCutvsieta_Subdet.fill(did, timing);
979  }
980  if (_ptype != fOffline) { // hidefed2crate
981  if (eid.isVMEid())
982  {
983  _cTimingCut_FEDVME.fill(eid, timing);
984  _cTimingCut_ElectronicsVME.fill(eid, timing);
987  }
988  else
989  {
990  _cTimingCut_FEDuTCA.fill(eid, timing);
991  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
994  }
995  }
996  numChsCut++;
997  }
998  numChs++;
999  }
1000 
1001  if (rawidValid!=0)
1002  {
1004  numChs);
1005 
1006  if (_ptype==fOnline)
1007  {
1009  _currentLS, numChsCut);
1010  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidValid), bx,
1011  numChsCut);
1012  }
1013  }
1014  numChs=0; numChsCut=0;
1015 
1016  // reset
1017  rawidValid = 0;
1018 
1019  // HF collection
1020  if (_qie10InConditions) {
1021  for (QIE10DigiCollection::const_iterator it=chf->begin(); it!=chf->end(); ++it) {
1022  const QIE10DataFrame digi = static_cast<const QIE10DataFrame>(*it);
1023 
1024  // Explicit check on the DetIds present in the Collection
1025  HcalDetId const& did = digi.detid();
1026 
1027  // Require subdet == HF. In 2017, calibration channels are included in QIE10DigiCollection :(
1028  if (did.subdet() != HcalForward) {
1029  continue;
1030  }
1031 
1032  uint32_t rawid = _ehashmap.lookup(did);
1033  if (rawid==0) {
1034  meUnknownIds1LS->Fill(1);
1035  _unknownIdsPresent=true;
1036  continue;
1037  }
1038  HcalElectronicsId const& eid(rawid);
1039  if (did.subdet()==HcalForward)
1040  rawidValid = did.rawId();
1041 
1042  CaloSamples digi_fC = hcaldqm::utilities::loadADC2fCDB<QIE10DataFrame>(_dbService, did, digi);
1043  double sumQ = hcaldqm::utilities::sumQDB<QIE10DataFrame>(_dbService, digi_fC, did, digi, 0, digi.samples()-1);
1044  //double sumQ = hcaldqm::utilities::sumQ_v10<QIE10DataFrame>(digi, 2.5, 0, digi.samples()-1);
1045 
1046 
1047  // filter out channels that are masked out
1048  if (_xQuality.exists(did))
1049  {
1050  HcalChannelStatus cs(did.rawId(), _xQuality.get(did));
1051  if (
1052  cs.isBitSet(HcalChannelStatus::HcalCellMask) ||
1054  continue;
1055  }
1056  //if (!_filter_QIE1011.filter(did)) {
1057  _cSumQ_SubdetPM_QIE1011.fill(did, sumQ);
1058  //}
1059  _cOccupancy_depth.fill(did);
1060  if (_ptype==fOnline)
1061  {
1062  _xNChs.get(eid)++;
1063  _cDigiSizevsLS_FED.fill(eid, _currentLS, digi.samples());
1064  digi.samples()!=_refDigiSize[did.subdet()]?
1065  _xDigiSize.get(eid)++:_xDigiSize.get(eid)+=0;
1068  }
1069  _cDigiSize_Crate.fill(eid, digi.samples());
1070  if (_ptype != fOffline) { // hidefed2crate
1071  _cDigiSize_FED.fill(eid, digi.samples());
1072  if (eid.isVMEid())
1073  {
1074  _cOccupancy_FEDVME.fill(eid);
1076  /*
1077  if (!it->validate(0, it->size()))
1078  _cCapIdRots_FEDVME.fill(eid, 1);*/
1079  }
1080  else
1081  {
1084  /*
1085  if (!it->validate(0, it->size()))
1086  _cCapIdRots_FEDuTCA.fill(eid, 1);*/
1087  }
1088  }
1089 
1090  for (int i=0; i<digi.samples(); i++)
1091  {
1092  double q = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE10DataFrame>(_dbService, digi_fC, did, digi, i);
1093  //if (!_filter_QIE1011.filter(did)) {
1094  _cADC_SubdetPM_QIE1011.fill(did, digi[i].adc());
1095  _cfC_SubdetPM_QIE1011.fill(did, q);
1096  _cLETDCvsADC_SubdetPM.fill(did, digi[i].adc(), digi[i].le_tdc());
1097  _cLETDCvsTS_SubdetPM.fill(did, (int)i, digi[i].le_tdc());
1098  if (digi[i].le_tdc() <50) {
1099  double time = i*25. + (digi[i].le_tdc() / 2.);
1100  _cLETDCTime_SubdetPM.fill(did, time);
1101  _cLETDCTimevsADC_SubdetPM.fill(did, digi[i].adc(), time);
1102  }
1103 
1104  // Bad TDC values: 50-61 should never happen in QIE10 or QIE11, but we are seeing some in 2017 data.
1105  if ((50 <= digi[i].le_tdc()) && (digi[i].le_tdc() <= 61)) {
1106  _cBadTDCValues_SubdetPM.fill(did, digi[i].le_tdc());
1107  _cBadTDCvsBX_SubdetPM.fill(did, bx);
1110  }
1111  if (_ptype != fOffline) { // hidefed2crate
1112  _cADCvsTS_SubdetPM_QIE1011.fill(did, (int)i, q);
1113  if (sumQ>_cutSumQ_HF)
1114  _cShapeCut_FED.fill(eid, (int)i, q);
1115  }
1116  //}
1117  }
1118 
1119  if (sumQ>_cutSumQ_HF)
1120  {
1121  double timing = hcaldqm::utilities::aveTS_v10<QIE10DataFrame>(digi, 2.5, 0,
1122  digi.samples()-1);
1123  double q1 = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE10DataFrame>(_dbService, digi_fC, did, digi, 1);
1124  double q2 = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE10DataFrame>(_dbService, digi_fC, did, digi, 2);
1125  double q2q12 = q2/(q1+q2);
1126  _cSumQ_depth.fill(did, sumQ);
1127  //if (!_filter_QIE1011.filter(did)) {
1129  //}
1130  _cTimingCut_SubdetPM.fill(did, timing);
1131  _cTimingCut_depth.fill(did, timing);
1133  if (_ptype==fOnline)
1134  {
1135  //if (!_filter_QIE1011.filter(did)) {
1136  _cSumQvsBX_SubdetPM_QIE1011.fill(did, bx, sumQ);
1137  //}
1138  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
1139  _cTimingCutvsieta_Subdet.fill(did, timing);
1143  // _cOccupancyCutvsSlotvsLS_HFPM.fill(did, _currentLS);
1144  _xUniHF.get(eid)++;
1145  }
1146  if (_ptype != fOffline) { // hidefed2crate
1147  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
1148  }
1150  if (!eid.isVMEid())
1151  if (_ptype==fOnline)
1152  _cQ2Q12CutvsLS_FEDHF.fill(eid, _currentLS, q2q12);
1153  if (_ptype != fOffline) { // hidefed2crate
1154  if (eid.isVMEid())
1155  {
1156  _cTimingCut_FEDVME.fill(eid, timing);
1157  _cTimingCut_ElectronicsVME.fill(eid, timing);
1160  }
1161  else
1162  {
1163  _cTimingCut_FEDuTCA.fill(eid, timing);
1164  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
1167  }
1168  }
1169  numChsCut++;
1170  }
1171  numChs++;
1172  }
1173  }
1174 
1175  if (rawidValid!=0)
1176  {
1178  numChs);
1179 
1180  if (_ptype==fOnline)
1181  {
1183  _currentLS, numChsCut);
1184  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidValid), bx,
1185  numChsCut);
1186  }
1187  }
1188 }
1189 
1191  edm::LuminosityBlock const& lb, edm::EventSetup const& es)
1192 {
1193  DQTask::beginLuminosityBlock(lb, es);
1194 }
1195 
1197  edm::EventSetup const& es)
1198 {
1199  if (_ptype!=fOnline)
1200  return;
1201 
1202  for (uintCompactMap::const_iterator it=_xUniHF.begin();
1203  it!=_xUniHF.end(); ++it)
1204  {
1205  uint32_t hash1 = it->first;
1206  HcalElectronicsId eid1(hash1);
1207  double x1 = it->second;
1208 
1209  for (uintCompactMap::const_iterator jt=_xUniHF.begin();
1210  jt!=_xUniHF.end(); ++jt)
1211  {
1212  if (jt==it)
1213  continue;
1214  double x2 = jt->second;
1215  if (x2==0)
1216  continue;
1217  if (x1/x2<_thresh_unihf)
1218  _xUni.get(eid1)++;
1219  }
1220  }
1221 
1222  if (_ptype != fOffline) { // hidefed2crate
1223  for (std::vector<uint32_t>::const_iterator it=_vhashFEDs.begin();
1224  it!=_vhashFEDs.end(); ++it)
1225  {
1226  hcaldqm::flag::Flag fSum("DIGI");
1228 
1229  std::vector<uint32_t>::const_iterator cit=std::find(
1230  _vcdaqEids.begin(), _vcdaqEids.end(), *it);
1231  if (cit==_vcdaqEids.end())
1232  {
1233  // not @cDAQ
1234  for (uint32_t iflag=0; iflag<_vflags.size(); iflag++)
1235  _cSummaryvsLS_FED.setBinContent(eid, _currentLS, int(iflag),
1236  int(hcaldqm::flag::fNCDAQ));
1238  continue;
1239  }
1240 
1241  // FED is @cDAQ
1244  {
1245  if (_xDigiSize.get(eid)>0)
1247  else
1249  if (hcaldqm::utilities::isFEDHF(eid))
1250  {
1251  double fr = double(_xNChs.get(eid))/double(
1252  _xNChsNominal.get(eid)*_evsPerLS);
1253  if (_runkeyVal==0 || _runkeyVal==4)
1254  {
1255  // only for pp or hi
1256  if (_xUni.get(eid)>0)
1258  else
1259  _vflags[fUni]._state = hcaldqm::flag::fGOOD;
1260  }
1261  if (fr<0.95)
1263  else if (fr<1.0)
1265  else
1267  }
1268  }
1269  if (_unknownIdsPresent)
1271  else
1273 
1274  int iflag=0;
1275  for (std::vector<hcaldqm::flag::Flag>::iterator ft=_vflags.begin();
1276  ft!=_vflags.end(); ++ft)
1277  {
1279  int(ft->_state));
1280  fSum+=(*ft);
1281  iflag++;
1282 
1283  // reset!
1284  ft->reset();
1285  }
1287  }
1288  }
1289 
1291  _xNChs.reset();
1292 
1293  // in the end always do the DQTask::endLumi
1294  DQTask::endLuminosityBlock(lb, es);
1295 }
1296 
1298 
int adc(sample_type sample)
get the ADC sample (12 bits)
int samples() const
total number of samples in the digi
DetId detid() const
Get the detector id.
hcaldqm::ContainerProf1D _cTimingCutvsiphi_SubdetPM
Definition: DigiTask.h:118
void _process(edm::Event const &, edm::EventSetup const &) override
Definition: DigiTask.cc:564
bool _qie10InConditions
Definition: DigiTask.h:187
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * meNumEvents1LS
Definition: DigiTask.h:180
virtual void initialize(std::string const &folder, hashfunctions::HashType, Quantity *, Quantity *qy=new ValueQuantity(quantity::fN), int debug=0)
Definition: Container1D.cc:40
hcaldqm::Container1D _cADC_SubdetPM
Definition: DigiTask.h:88
hcaldqm::Container1D _cADC_SubdetPM_QIE1011
Definition: DigiTask.h:96
void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: DigiTask.cc:1196
hcaldqm::Container1D _cOccupancyCutvsieta_Subdet
Definition: DigiTask.h:145
auto_ptr< ClusterSequence > cs
hcaldqm::ContainerProf1D _cSumQvsBX_SubdetPM
Definition: DigiTask.h:93
virtual bool exists(HcalDetId const &)
Definition: ContainerXXX.h:267
int const CRATE_VME_MIN
Definition: Constants.h:111
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:49
edm::InputTag _tagHO
Definition: DigiTask.h:48
std::map< HcalSubdetector, int > _refDigiSize
Definition: DigiTask.h:72
hcaldqm::Container2D _cADCvsTS_SubdetPM
Definition: DigiTask.h:105
std::pair< uint16_t, uint16_t > fed2crate(int fed)
Definition: Utilities.cc:12
uint32_t rawId() const
void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: DigiTask.cc:1190
edm::EDGetTokenT< QIE11DigiCollection > _tokHE
Definition: DigiTask.h:51
double _cutSumQ_HE
Definition: DigiTask.h:55
hcaldqm::ContainerProf1D _cQ2Q12CutvsLS_FEDHF
Definition: DigiTask.h:122
MonitorElement * meUnknownIds1LS
Definition: DigiTask.h:181
edm::EDGetTokenT< HBHEDigiCollection > _tokHBHE
Definition: DigiTask.h:50
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
void initialize(HcalElectronicsMap const *, ElectronicsMapType etype=fHcalElectronicsMap)
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
hcaldqm::Container2D _cLETDCTimevsADC_SubdetPM
Definition: DigiTask.h:164
double _cutSumQ_HO
Definition: DigiTask.h:55
virtual CompactMap::const_iterator begin()
Definition: ContainerXXX.h:75
double _thresh_unihf
Definition: DigiTask.h:56
UpdateFreq
Definition: DQTask.h:17
State _state
Definition: Flag.h:79
std::vector< HBHEDataFrame >::const_iterator const_iterator
int bunchCrossing() const
Definition: EventBase.h:66
int const SPIGOT_MIN
Definition: Constants.h:136
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
hcaldqm::ContainerProf2D _cSumQ_depth
Definition: DigiTask.h:91
edm::EDGetTokenT< HODigiCollection > _tokHO
Definition: DigiTask.h:52
hcaldqm::Container1D _cOccupancyCutvsiphi_SubdetPM
Definition: DigiTask.h:144
const_iterator begin() const
virtual void reset()
Definition: ContainerXXX.h:366
hcaldqm::ContainerProf1D _cSumQvsLS_SubdetPM_QIE1011
Definition: DigiTask.h:99
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
hcaldqm::ContainerSingle2D _cSummaryvsLS
Definition: DigiTask.h:185
hcaldqm::ContainerProf2D _cTimingCut_FEDVME
Definition: DigiTask.h:111
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: DigiTask.cc:46
int const FIBER_VME_MIN
Definition: Constants.h:141
hcaldqm::Container2D _cOccupancyCutvsiphivsLS_SubdetPM
Definition: DigiTask.h:147
hcaldqm::ContainerXXX< uint32_t > _xDigiSize
Definition: DigiTask.h:158
hcaldqm::ContainerProf2D _cTimingCut_FEDuTCA
Definition: DigiTask.h:112
double q2[4]
Definition: TauolaWrapper.h:88
hcaldqm::Container1D _cBadTDCvsLS_SubdetPM
Definition: DigiTask.h:172
int const FIBERCH_MIN
Definition: Constants.h:151
void Fill(long long x)
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
std::vector< int > getFEDVMEList(HcalElectronicsMap const *)
Definition: Utilities.cc:119
hcaldqm::filter::HashFilter _filter_VME
Definition: DigiTask.h:79
uint32_t rawId() const
get the raw id
Definition: DetId.h:44
virtual CompactMap::const_iterator end()
Definition: ContainerXXX.h:77
hcaldqm::Container2D _cLETDCvsTS_SubdetPM
Definition: DigiTask.h:166
ProcessingType _ptype
Definition: DQModule.h:59
virtual void fill(uint32_t)
Definition: Container1D.cc:82
virtual void reset()
Definition: Container1D.cc:65
edm::InputTag _tagHBHE
Definition: DigiTask.h:46
void reset()
Definition: Flag.h:76
void setLumiFlag()
this ME is meant to be stored for each luminosity section
hcaldqm::Container2D _cOccupancy_CrateSlot
Definition: DigiTask.h:131
virtual void setBinContent(int, int, int)
void dqmthrow(std::string const &msg) const
Definition: Logger.h:15
ContainerXXX< uint32_t > _xQuality
Definition: DQTask.h:62
int const FED_VME_MIN
Definition: Constants.h:98
hcaldqm::Container2D _cADCvsTS_SubdetPM_QIE1011
Definition: DigiTask.h:106
hcaldqm::Container2D _cOccupancyCut_ElectronicsVME
Definition: DigiTask.h:141
hcaldqm::Container1D _cDigiSize_Crate
Definition: DigiTask.h:155
hcaldqm::Container1D _cShapeCut_FED
Definition: DigiTask.h:104
hcaldqm::Container2D _cOccupancyCut_depth
Definition: DigiTask.h:143
hcaldqm::ContainerProf1D _cOccupancyCutvsBX_Subdet
Definition: DigiTask.h:152
double _cutSumQ_HF
Definition: DigiTask.h:55
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
virtual example_stream void bookHistograms(DQMStore::IBooker &,@example_stream edm::Run const &,@example_stream edm::EventSetup const &) override
virtual void initialize(std::string const &folder, hashfunctions::HashType, Quantity *, Quantity *, Quantity *qz=new ValueQuantity(quantity::fN), int debug=0)
Definition: Container2D.cc:32
int const FIBER_uTCA_MIN1
Definition: Constants.h:144
hcaldqm::Container1D _cfC_SubdetPM_QIE1011
Definition: DigiTask.h:97
double _cutSumQ_HBHE
Definition: DigiTask.h:55
hash_function_did const hash_did[nHashType_did]
hcaldqm::ContainerProf2D _cTimingCut_depth
Definition: DigiTask.h:117
DetId detid() const
Get the detector id.
std::vector< HcalGenericDetId > allPrecisionId() const
Logger _logger
Definition: DQModule.h:70
hcaldqm::Container1D _cBadTDCValues_SubdetPM
Definition: DigiTask.h:170
hcaldqm::Container2D _cOccupancy_FEDVME
Definition: DigiTask.h:126
hcaldqm::ContainerProf1D _cTimingCutvsLS_SubdetPM
Definition: DigiTask.h:116
hcaldqm::Container2D _cOccupancyCut_FEDVME
Definition: DigiTask.h:139
hcaldqm::ContainerProf1D _cSumQvsBX_SubdetPM_QIE1011
Definition: DigiTask.h:100
hcaldqm::Container2D _cOccupancy_depth
Definition: DigiTask.h:132
std::string _name
Definition: DQModule.h:57
HcalElectronicsMap const * _emap
Definition: DQTask.h:73
void initialize(std::string const &folder, hashfunctions::HashType, Quantity *, Quantity *, Quantity *qz=new ValueQuantity(quantity::fEnergy), int debug=0) override
hcaldqm::Container2D _cSummaryvsLS_FED
Definition: DigiTask.h:184
hcaldqm::filter::HashFilter _filter_FEDHF
Definition: DigiTask.h:81
int const CRATE_uTCA_MIN
Definition: Constants.h:116
edm::InputTag _tagHE
Definition: DigiTask.h:47
const_iterator end() const
edm::EDGetTokenT< QIE10DigiCollection > _tokHF
Definition: DigiTask.h:53
DigiTask(edm::ParameterSet const &)
Definition: DigiTask.cc:7
hcaldqm::ContainerProf1D _cOccupancyvsLS_Subdet
Definition: DigiTask.h:150
void _resetMonitors(hcaldqm::UpdateFreq) override
Definition: DigiTask.cc:544
hcaldqm::ContainerProf1D _cSumQvsLS_SubdetPM
Definition: DigiTask.h:92
hcaldqm::ContainerXXX< uint32_t > _xUni
Definition: DigiTask.h:159
hcaldqm::ContainerProf1D _cTimingCutvsLS_FED
Definition: DigiTask.h:115
bool isVMEid() const
hcaldqm::Container2D _cOccupancyCut_FEDuTCA
Definition: DigiTask.h:140
hcaldqm::Container2D _cOccupancy_ElectronicsVME
Definition: DigiTask.h:128
edm::InputTag _tagHF
Definition: DigiTask.h:49
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:279
bool isFEDHBHE(HcalElectronicsId const &)
Definition: Utilities.cc:172
virtual void book(HcalElectronicsMap const *)
Definition: ContainerXXX.h:99
int size() const
get the size
Definition: CaloSamples.h:24
hcaldqm::Container1D _cDigiSize_FED
Definition: DigiTask.h:156
hcaldqm::filter::HashFilter _filter_QIE8
Definition: DigiTask.h:83
virtual void initialize(std::string const &folder, Quantity *, Quantity *, Quantity *qz=new ValueQuantity(quantity::fN), int debug=0)
double q1[4]
Definition: TauolaWrapper.h:87
virtual void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="")
Definition: Container1D.cc:957
hcaldqm::ContainerXXX< uint32_t > _xNChsNominal
Definition: DigiTask.h:161
hcaldqm::Container1D _cSumQ_SubdetPM
Definition: DigiTask.h:90
const T & get() const
Definition: EventSetup.h:59
hcaldqm::Container1D _cOccupancyvsiphi_SubdetPM
Definition: DigiTask.h:133
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
void initialize(std::string const &folder, hashfunctions::HashType, Quantity *, Quantity *, int debug=0) override
hcaldqm::ContainerProf1D _cTimingCutvsieta_Subdet
Definition: DigiTask.h:119
hcaldqm::Container1D _cLETDCTime_SubdetPM
Definition: DigiTask.h:167
hcaldqm::electronicsmap::ElectronicsMap _dhashmap
Definition: DigiTask.h:76
std::vector< hcaldqm::flag::Flag > _vflags
Definition: DigiTask.h:59
void setBinContent(HcalDetId const &, int) override
Definition: Container2D.cc:235
std::string const & label() const
Definition: InputTag.h:36
const_iterator end() const
hcaldqm::Container2D _cOccupancyCut_ElectronicsuTCA
Definition: DigiTask.h:142
hcaldqm::ContainerProf2D _cTimingCut_ElectronicsVME
Definition: DigiTask.h:113
hcaldqm::Container2D _cLETDCvsADC_SubdetPM
Definition: DigiTask.h:165
virtual STDTYPE & get(HcalDetId const &)
Definition: ContainerXXX.h:249
edm::ESHandle< HcalDbService > _dbService
Definition: DQTask.h:72
hcaldqm::Container1D _cBadTDCvsBX_SubdetPM
Definition: DigiTask.h:171
virtual void setLumiFlag()
std::vector< int > getFEDList(HcalElectronicsMap const *)
Definition: Utilities.cc:95
hcaldqm::Container2D _cOccupancy_Crate
Definition: DigiTask.h:130
std::vector< int > getFEDuTCAList(HcalElectronicsMap const *)
Definition: Utilities.cc:145
void fill(HcalDetId const &) override
Definition: Container2D.cc:59
const HcalElectronicsMap * getHcalMapping() const
std::string _subsystem
Definition: DQModule.h:64
hcaldqm::filter::HashFilter _filter_uTCA
Definition: DigiTask.h:80
bool isFEDHO(HcalElectronicsId const &)
Definition: Utilities.cc:212
std::vector< uint32_t > _vcdaqEids
Definition: DQTask.h:65
hcaldqm::ContainerProf1D _cDigiSizevsLS_FED
Definition: DigiTask.h:157
hcaldqm::ContainerXXX< uint32_t > _xNChs
Definition: DigiTask.h:160
hcaldqm::electronicsmap::ElectronicsMap _ehashmap
Definition: DigiTask.h:75
hcaldqm::ContainerProf1D _cOccupancyCutvsLS_Subdet
Definition: DigiTask.h:151
virtual void initialize(hashfunctions::HashType, int debug=0)
Definition: ContainerXXX.h:91
hcaldqm::filter::HashFilter _filter_QIE1011
Definition: DigiTask.h:82
virtual void initialize(FilterType ftype, HashType htype, std::vector< uint32_t > const &)
Definition: HashFilter.cc:26
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
Definition: Container2D.cc:895
hcaldqm::Container2D _cBadTDCCount_depth
Definition: DigiTask.h:173
std::vector< uint32_t > _vhashFEDs
Definition: DigiTask.h:70
int samples() const
total number of samples in the digi
hcaldqm::Container1D _cOccupancyvsieta_Subdet
Definition: DigiTask.h:134
Readout chain identification for Hcal.
std::string const & instance() const
Definition: InputTag.h:37
bool isFEDHF(HcalElectronicsId const &)
Definition: Utilities.cc:187
hcaldqm::ContainerProf2D _cTimingCut_ElectronicsuTCA
Definition: DigiTask.h:114
int const SLOT_uTCA_MIN
Definition: Constants.h:123
const_iterator begin() const
hcaldqm::Container1D _cSumQ_SubdetPM_QIE1011
Definition: DigiTask.h:98
hcaldqm::Container1D _cTimingCut_SubdetPM
Definition: DigiTask.h:110
Definition: Run.h:43
bool _unknownIdsPresent
Definition: DigiTask.h:182
hcaldqm::Container2D _cOccupancy_FEDuTCA
Definition: DigiTask.h:127
ib
Definition: cuy.py:660
hcaldqm::ContainerXXX< uint32_t > _xUniHF
Definition: DigiTask.h:159
double sumQ(DIGI const &digi, double ped, int i=0, int j=3)
Definition: Utilities.h:122
hcaldqm::Container1D _cfC_SubdetPM
Definition: DigiTask.h:89
hcaldqm::Container2D _cOccupancy_ElectronicsuTCA
Definition: DigiTask.h:129