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  _tokHEP17 = consumes<QIE11DigiCollection>(_tagHEP17);
21  _tokHO = consumes<HODigiCollection>(_tagHO);
22  _tokHF = consumes<QIE10DigiCollection>(_tagHF);
23 
24  _cutSumQ_HBHE = ps.getUntrackedParameter<double>("cutSumQ_HBHE", 20);
25  _cutSumQ_HEP17 = ps.getUntrackedParameter<double>("cutSumQ_HEP17", 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 
40  edm::Run const& r, edm::EventSetup const& es)
41 {
42  DQTask::bookHistograms(ib,r,es);
43 
44  // GET WHAT YOU NEED
46  es.get<HcalDbRecord>().get(dbs);
47  _emap = dbs->getHcalMapping();
48  std::vector<uint32_t> vVME;
49  std::vector<uint32_t> vuTCA;
53  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
55  vVME);
57  vuTCA);
58 
59  // Filters for HEP17 and HF, aka QIE10/11
60  std::vector<uint32_t> vhashHF;
63  vhashHF);
65  vhashHF);
66 
67  std::vector<uint32_t> vhashHEP17;
68  vhashHEP17.push_back(HcalDetId(HcalEndcap, 1, 63, 1));
69  vhashHEP17.push_back(HcalDetId(HcalEndcap, 1, 64, 1));
70  vhashHEP17.push_back(HcalDetId(HcalEndcap, 1, 65, 1));
71  vhashHEP17.push_back(HcalDetId(HcalEndcap, 1, 66, 1));
73 
74  // INITIALIZE FIRST
92 
106 
111  _cTimingCut_depth.initialize(_name, "TimingCut",
120 
121  // Occupancy w/o a cut
122  _cOccupancyvsLS_Subdet.initialize(_name, "OccupancyvsLS",
126  _cOccupancy_depth.initialize(_name, "Occupancy",
131 
132  // Occupancy w/ a cut
133  _cOccupancyCutvsLS_Subdet.initialize(_name, "OccupancyCutvsLS",
137  _cOccupancyCut_depth.initialize(_name, "OccupancyCut",
142 
143  // Digi size
144  _cDigiSize_Crate.initialize(_name, "DigiSize",
158  _cLETDCTimevsADC_SubdetPM.initialize(_name, "LETDCTimevsADC",
163  _cLETDCvsADC_SubdetPM.initialize(_name, "LETDCvsADC",
168  _cLETDCvsTS_SubdetPM.initialize(_name, "LETDCvsTS",
189  _cBadTDCCount_depth.initialize(_name, "BadTDCCount",
206 
207  if (_ptype == fOnline || _ptype == fLocal) {
209  "Occupancy", hashfunctions::fCrate,
214  "Occupancy", hashfunctions::fCrateSlot,
218  }
219 
220  // INITIALIZE HISTOGRAMS that are only for Online
221  if (_ptype==fOnline)
222  {
223  // Charge sharing
236  _cDigiSizevsLS_FED.initialize(_name, "DigiSizevsLS",
240  _cTimingCutvsiphi_SubdetPM.initialize(_name, "TimingCutvsiphi",
244  _cTimingCutvsieta_Subdet.initialize(_name, "TimingCutvsieta",
248  _cOccupancyvsiphi_SubdetPM.initialize(_name, "Occupancyvsiphi",
252  _cOccupancyvsieta_Subdet.initialize(_name, "Occupancyvsieta",
256  _cOccupancyCutvsiphi_SubdetPM.initialize(_name, "OccupancyCutvsiphi",
260  _cOccupancyCutvsieta_Subdet.initialize(_name, "OccupancyCutvsieta",
264  _cOccupancyCutvsLS_Subdet.initialize(_name, "OccupancyCutvsLS",
268  _cOccupancyCutvsBX_Subdet.initialize(_name, "OccupancyCutvsBX",
272 // _cOccupancyCutvsSlotvsLS_HFPM.initialize(_name,
273 // "OccupancyCutvsSlotvsLS", hcaldqm::hashfunctions::fSubdetPM,
274 // new hcaldqm::quantity::LumiSection(_maxLS),
275 // new hcaldqm::quantity::ElectronicsQuantity(hcaldqm::quantity::fSlotuTCA),
276 // new hcaldqm::quantity::ValueQuantity(hcaldqm::quantity::fN),0);
278  "OccupancyCutvsiphivsLS", hcaldqm::hashfunctions::fSubdetPM,
282  }
283  if (_ptype != fOffline) { // hidefed2crate
284  std::vector<int> vFEDs = hcaldqm::utilities::getFEDList(_emap);
285  std::vector<int> vFEDsVME = hcaldqm::utilities::getFEDVMEList(_emap);
286  std::vector<int> vFEDsuTCA = hcaldqm::utilities::getFEDuTCAList(_emap);
287 
288  std::vector<uint32_t> vFEDHF;
289  vFEDHF.push_back(HcalElectronicsId(22, SLOT_uTCA_MIN,
290  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
291  vFEDHF.push_back(HcalElectronicsId(22, SLOT_uTCA_MIN+6,
292  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
293  vFEDHF.push_back(HcalElectronicsId(29, SLOT_uTCA_MIN,
294  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
295  vFEDHF.push_back(HcalElectronicsId(29, SLOT_uTCA_MIN+6,
296  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
297  vFEDHF.push_back(HcalElectronicsId(32, SLOT_uTCA_MIN,
298  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
299  vFEDHF.push_back(HcalElectronicsId(32, SLOT_uTCA_MIN+6,
300  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
301 
302  // initialize filters
304  vFEDHF);
305 
306  // push the rawIds of each fed into the vector...
307  for (std::vector<int>::const_iterator it=vFEDsVME.begin();
308  it!=vFEDsVME.end(); ++it)
309  _vhashFEDs.push_back(HcalElectronicsId(
311  (*it)-FED_VME_MIN).rawId());
312  for (std::vector<int>::const_iterator it=vFEDsuTCA.begin();
313  it!=vFEDsuTCA.end(); ++it)
314  {
315  std::pair<uint16_t, uint16_t> cspair = utilities::fed2crate(*it);
316  _vhashFEDs.push_back(HcalElectronicsId(
317  cspair.first, cspair.second, FIBER_uTCA_MIN1,
318  FIBERCH_MIN, false).rawId());
319  }
320 
321  _cShapeCut_FED.initialize(_name, "ShapeCut",
325 
326  _cTimingCut_FEDVME.initialize(_name, "TimingCut",
331  _cTimingCut_FEDuTCA.initialize(_name, "TimingCut",
338  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
343  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
346  _cTimingCutvsLS_FED.initialize(_name, "TimingvsLS",
350 
351  _cOccupancy_FEDVME.initialize(_name, "Occupancy",
356  _cOccupancy_FEDuTCA.initialize(_name, "Occupancy",
363  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
368  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
371 
372  _cOccupancyCut_FEDVME.initialize(_name, "OccupancyCut",
377  _cOccupancyCut_FEDuTCA.initialize(_name, "OccupancyCut",
384  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
389  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
392 
393  _cDigiSize_FED.initialize(_name, "DigiSize",
397 
398  if (_ptype == fOnline) {
399  _cSummaryvsLS_FED.initialize(_name, "SummaryvsLS",
404  _cSummaryvsLS.initialize(_name, "SummaryvsLS",
408 
414  }
415  }
416 
417  // BOOK HISTOGRAMS
418  char cutstr[200];
419  sprintf(cutstr, "_SumQHBHE%dHO%dHF%d", int(_cutSumQ_HBHE),
420  int(_cutSumQ_HO), int(_cutSumQ_HF));
421  char cutstr2[200];
422  sprintf(cutstr2, "_SumQHF%d", int(_cutSumQ_HF));
423 
436 
437  if (_ptype != fOffline) { // hidefed2crate
453  }
454 
458 
462 
474 
475  // BOOK HISTOGRAMS that are only for Online
478 
479  if (_ptype == fOnline || _ptype == fLocal) {
482  }
483 
484  if (_ptype==fOnline)
485  {
498 // _cOccupancyCutvsSlotvsLS_HFPM.book(ib, _emap, _filter_HF, _subsystem);
502 
504  _xNChs.book(_emap);
506  _xUni.book(_emap);
508 
509  // just PER HF FED RECORD THE #CHANNELS
510  // ONLY WAY TO DO THAT AUTOMATICALLY AND W/O HARDCODING 1728
511  // or ANY OTHER VALUES LIKE 2592, 2192
512  std::vector<HcalGenericDetId> gids = _emap->allPrecisionId();
513  for (std::vector<HcalGenericDetId>::const_iterator it=gids.begin();
514  it!=gids.end(); ++it)
515  {
516  if (!it->isHcalDetId())
517  continue;
518  HcalDetId did(it->rawId());
519  if (_xQuality.exists(did))
520  {
521  HcalChannelStatus cs(it->rawId(), _xQuality.get(
522  HcalDetId(*it)));
523  if (
526  continue;
527  }
529  _xNChsNominal.get(eid)++; // he will know the nominal #channels per FED
530  }
531  }
532 
533  // MARK THESE HISTOGRAMS AS LUMI BASED FOR OFFLINE PROCESSING
534  if (_ptype==fOffline)
535  {
537  //_cDigiSize_FED.setLumiFlag();
539  }
540 
541  // book Number of Events vs LS histogram
542  ib.setCurrentFolder(_subsystem+"/RunInfo");
543  meNumEvents1LS = ib.book1D("NumberOfEvents", "NumberOfEvents",
544  1, 0, 1);
546 
547  // book the flag for unknown ids and the online guy as well
549  meUnknownIds1LS = ib.book1D("UnknownIds", "UnknownIds",
550  1, 0, 1);
551  _unknownIdsPresent = false;
553 }
554 
556 {
557  DQTask::_resetMonitors(uf);
558 
559  switch(uf)
560  {
561  case hcaldqm::f1LS:
562  _unknownIdsPresent = false;
563  break;
564  case hcaldqm::f50LS:
565  // ^^^ONLINE ONLY!
566  if (_ptype==fOnline)
568  // ^^^
569  break;
570  default:
571  break;
572  }
573 }
574 
575 /* virtual */ void DigiTask::_process(edm::Event const& e,
576  edm::EventSetup const&)
577 {
582 
583  if (!e.getByToken(_tokHBHE, chbhe))
584  _logger.dqmthrow("Collection HBHEDigiCollection isn't available"
585  + _tagHBHE.label() + " " + _tagHBHE.instance());
586  if (!e.getByToken(_tokHEP17, chep17))
587  _logger.dqmthrow("Collection HEP17DigiCollection isn't available"
588  + _tagHEP17.label() + " " + _tagHEP17.instance());
589  if (!e.getByToken(_tokHO, cho))
590  _logger.dqmthrow("Collection HODigiCollection isn't available"
591  + _tagHO.label() + " " + _tagHO.instance());
592  if (!e.getByToken(_tokHF, chf))
593  _logger.dqmthrow("Collection QIE10DigiCollection isn't available"
594  + _tagHF.label() + " " + _tagHF.instance());
595 
596  // extract some info per event
597  int bx = e.bunchCrossing();
598  meNumEvents1LS->Fill(0.5); // just increment
599 
600  // To fill histograms outside of the loop, you need to determine if there were
601  // any valid det ids first
602  uint32_t rawidValid = 0;
603  uint32_t rawidHBValid = 0;
604  uint32_t rawidHEValid = 0;
605 
606  // HB collection
607  int numChs = 0;
608  int numChsCut = 0;
609  int numChsHE = 0;
610  int numChsCutHE = 0;
611  for (HBHEDigiCollection::const_iterator it=chbhe->begin(); it!=chbhe->end();
612  ++it)
613  {
614  // Explicit check on the DetIds present in the Collection
615  HcalDetId const& did = it->id();
616  uint32_t rawid = _ehashmap.lookup(did);
617  if (rawid==0)
618  {meUnknownIds1LS->Fill(1); _unknownIdsPresent=true;continue;}
619  HcalElectronicsId const& eid(rawid);
620  if (did.subdet()==HcalBarrel)
621  rawidHBValid = did.rawId();
622  else if (did.subdet()==HcalEndcap)
623  rawidHEValid = did.rawId();
624 
625  //double sumQ = hcaldqm::utilities::sumQ<HBHEDataFrame>(*it, 2.5, 0, it->size()-1);
626  CaloSamples digi_fC = hcaldqm::utilities::loadADC2fCDB<HBHEDataFrame>(_dbService, did, *it);
627  double sumQ = hcaldqm::utilities::sumQDB<HBHEDataFrame>(_dbService, digi_fC, did, *it, 0, it->size()-1);
628 
629  // filter out channels that are masked out
630  if (_xQuality.exists(did))
631  {
632  HcalChannelStatus cs(did.rawId(), _xQuality.get(did));
633  if (
636  continue;
637  }
638 
639  _cSumQ_SubdetPM.fill(did, sumQ);
640  _cOccupancy_depth.fill(did);
641  if (_ptype == fOnline || _ptype == fLocal) {
642  _cOccupancy_Crate.fill(eid);
644  }
645  if (_ptype==fOnline)
646  {
647  _cDigiSizevsLS_FED.fill(eid, _currentLS, it->size());
648  it->size()!=constants::DIGISIZE[did.subdet()-1]?
649  _xDigiSize.get(eid)++:_xDigiSize.get(eid)+=0;
652  }
653  _cDigiSize_Crate.fill(eid, it->size());
654  if (_ptype != fOffline) { // hidefed2crate
655  _cDigiSize_FED.fill(eid, it->size());
656  if (eid.isVMEid())
657  {
660  }
661  else
662  {
665  /*
666  if (!it->validate(0, it->size()))
667  {
668  _cCapIdRots_depth.fill(did);
669  _cCapIdRots_FEDuTCA.fill(eid, 1);
670  }*/
671  }
672  }
673 
674  for (int i=0; i<it->size(); i++)
675  {
676  _cADC_SubdetPM.fill(did, it->sample(i).adc());
677  _cfC_SubdetPM.fill(did, it->sample(i).nominal_fC());
678  if (_ptype != fOffline) { // hidefed2crate
679  _cADCvsTS_SubdetPM.fill(did, i, it->sample(i).nominal_fC());
680  if (sumQ>_cutSumQ_HBHE) {
681  _cShapeCut_FED.fill(eid, i, it->sample(i).nominal_fC());
682  }
683  }
684  }
685 
686  if (sumQ>_cutSumQ_HBHE)
687  {
688  //double timing = hcaldqm::utilities::aveTS<HBHEDataFrame>(*it, 2.5, 0, it->size()-1);
689  double timing = hcaldqm::utilities::aveTSDB<HBHEDataFrame>(_dbService, digi_fC, did, *it, 0, it->size()-1);
690  _cTimingCut_SubdetPM.fill(did, timing);
691  _cTimingCut_depth.fill(did, timing);
694  if (_ptype != fOffline) { // hidefed2crate
695  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
696  }
697  _cSumQ_depth.fill(did, sumQ);
698  _cSumQvsLS_SubdetPM.fill(did, _currentLS, sumQ);
699  if (_ptype==fOnline)
700  {
701  _cSumQvsBX_SubdetPM.fill(did, bx, sumQ);
702  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
703  _cTimingCutvsieta_Subdet.fill(did, timing);
707  }
708  if (_ptype != fOffline) { // hidefed2crate
709  if (eid.isVMEid())
710  {
711  _cTimingCut_FEDVME.fill(eid, timing);
712  _cTimingCut_ElectronicsVME.fill(eid, timing);
715  }
716  else
717  {
718  _cTimingCut_FEDuTCA.fill(eid, timing);
719  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
722  }
723  }
724  did.subdet()==HcalBarrel?numChsCut++:numChsCutHE++;
725  }
726  did.subdet()==HcalBarrel?numChs++:numChsHE++;
727  }
728 
729  // HEP17 collection
730  // The following are filled w.r.t. HBHE digis
731  // - All eta-phi maps
732  // - Occupancy in electronics coordinates
733  // - Digi size
734  //
735  // The following are not filled:
736  // - ADC, fC, sumQ, timing. These are different for QIE11 vs. QIE8. Find them in QIE11Task instead.
737  for (QIE11DigiCollection::const_iterator it=chep17->begin(); it!=chep17->end();
738  ++it)
739  {
740  const QIE11DataFrame digi = static_cast<const QIE11DataFrame>(*it);
741 
742  // Explicit check on the DetIds present in the Collection
743  HcalDetId const& did = digi.detid();
744  uint32_t rawid = _ehashmap.lookup(did);
745  if (rawid==0)
746  {meUnknownIds1LS->Fill(1); _unknownIdsPresent=true;continue;}
747  HcalElectronicsId const& eid(rawid);
748  if (did.subdet()==HcalBarrel) // Note: since this is HEP17, we obviously expect did.subdet() always to be HcalEndcap, but QIE11DigiCollection may someday expand.
749  rawidHBValid = did.rawId();
750  else if (did.subdet()==HcalEndcap)
751  rawidHEValid = did.rawId();
752 
753  //double sumQ = hcaldqm::utilities::sumQ_v10<QIE11DataFrame>(digi, 2.5, 0, digi.samples()-1);
754  CaloSamples digi_fC = hcaldqm::utilities::loadADC2fCDB<QIE11DataFrame>(_dbService, did, digi);
755  double sumQ = hcaldqm::utilities::sumQDB<QIE11DataFrame>(_dbService, digi_fC, did, digi, 0, digi.samples()-1);
756 
757  // filter out channels that are masked out
758  if (_xQuality.exists(did))
759  {
760  HcalChannelStatus cs(did.rawId(), _xQuality.get(did));
761  if (
764  continue;
765  }
766 
767  _cOccupancy_depth.fill(did);
768  if (_ptype==fOnline)
769  {
770  _cDigiSizevsLS_FED.fill(eid, _currentLS, digi.samples());
771  digi.samples()!=constants::DIGISIZE[did.subdet()-1]?
772  _xDigiSize.get(eid)++:_xDigiSize.get(eid)+=0;
775  }
776  _cDigiSize_Crate.fill(eid, digi.samples());
777  if (_ptype != fOffline) { // hidefed2crate
778  _cDigiSize_FED.fill(eid, digi.samples());
779  if (eid.isVMEid())
780  {
783  }
784  else
785  {
788  /*
789  if (!digi.validate(0, digi.size()))
790  {
791  _cCapIdRots_depth.fill(did);
792  _cCapIdRots_FEDuTCA.fill(eid, 1);
793  }*/
794  }
795  }
796  for (int i=0; i<digi.samples(); i++) {
797  if (!_filter_HEP17.filter(did)) {
798  // Bad TDC values: 50-61 should never happen in QIE10 or QIE11, but we are seeing some in 2017 data.
799  if ((50 <= digi[i].tdc()) && (digi[i].tdc() <= 61)) {
800  _cBadTDCValues_SubdetPM_HEP17.fill(did, digi[i].tdc());
804  }
805  }
806  }
807 
808  if (sumQ>_cutSumQ_HEP17)
809  {
810  //double timing = hcaldqm::utilities::aveTS_v10<QIE11DataFrame>(digi, 2.5, 0,digi.samples()-1);
811  double timing = hcaldqm::utilities::aveTSDB<QIE11DataFrame>(_dbService, digi_fC, did, digi, 0, digi.samples()-1);
812 
814  _cTimingCut_depth.fill(did, timing);
815  _cSumQ_depth.fill(did, sumQ);
816  if (_ptype==fOnline)
817  {
821  }
822  if (_ptype != fOffline) { // hidefed2crate
823  if (eid.isVMEid())
824  {
827  }
828  else
829  {
832  }
833  }
834  did.subdet()==HcalBarrel?numChsCut++:numChsCutHE++;
835  }
836  did.subdet()==HcalBarrel?numChs++:numChsHE++;
837  }
838 
839  if (rawidHBValid!=0 && rawidHEValid!=0)
840  {
842  numChs);
844  numChsHE);
845  // ONLINE ONLY!
846  if (_ptype==fOnline)
847  {
849  _currentLS, numChsCut);
850  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidHBValid), bx,
851  numChsCut);
853  _currentLS, numChsCutHE);
854  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidHEValid), bx,
855  numChsCutHE);
856  }
857  // ^^^ONLINE ONLY!
858  }
859  numChs=0;
860  numChsCut = 0;
861 
862  // reset
863  rawidValid = 0;
864 
865 
866  // HO collection
867  for (HODigiCollection::const_iterator it=cho->begin(); it!=cho->end();
868  ++it)
869  {
870  // Explicit check on the DetIds present in the Collection
871  HcalDetId const& did = it->id();
872  uint32_t rawid = _ehashmap.lookup(did);
873  if (rawid==0)
874  {meUnknownIds1LS->Fill(1); _unknownIdsPresent=true;continue;}
875  HcalElectronicsId const& eid(rawid);
876  if (did.subdet()==HcalOuter)
877  rawidValid = did.rawId();
878 
879  //double sumQ = hcaldqm::utilities::sumQ<HODataFrame>(*it, 8.5, 0, it->size()-1);
880  CaloSamples digi_fC = hcaldqm::utilities::loadADC2fCDB<HODataFrame>(_dbService, did, *it);
881  double sumQ = hcaldqm::utilities::sumQDB<HODataFrame>(_dbService, digi_fC, did, *it, 0, it->size()-1);
882 
883  // filter out channels that are masked out
884  if (_xQuality.exists(did))
885  {
886  HcalChannelStatus cs(did.rawId(), _xQuality.get(did));
887  if (
890  continue;
891  }
892 
893  _cSumQ_SubdetPM.fill(did, sumQ);
894  _cOccupancy_depth.fill(did);
895  if (_ptype==fOnline)
896  {
897  _cDigiSizevsLS_FED.fill(eid, _currentLS, it->size());
898  it->size()!=constants::DIGISIZE[did.subdet()-1]?
899  _xDigiSize.get(eid)++:_xDigiSize.get(eid)+=0;
902  }
903  _cDigiSize_Crate.fill(eid, it->size());
904  if (_ptype != fOffline) { // hidefed2crate
905  _cDigiSize_FED.fill(eid, it->size());
906  if (eid.isVMEid())
907  {
910  /*
911  if (!it->validate(0, it->size()))
912  _cCapIdRots_FEDVME.fill(eid, 1);
913  */
914  }
915  else
916  {
919  /*
920  if (!it->validate(0, it->size()))
921  _cCapIdRots_FEDuTCA.fill(eid, 1);*/
922  }
923  }
924 
925  for (int i=0; i<it->size(); i++)
926  {
927  _cADC_SubdetPM.fill(did, it->sample(i).adc());
928  _cfC_SubdetPM.fill(did, it->sample(i).nominal_fC());
929  if (_ptype != fOffline) { // hidefed2crate
930  _cADCvsTS_SubdetPM.fill(did, i, it->sample(i).nominal_fC());
931  if (sumQ>_cutSumQ_HO)
932  _cShapeCut_FED.fill(eid, i, it->sample(i).nominal_fC());
933  }
934  }
935 
936  if (sumQ>_cutSumQ_HO)
937  {
938  //double timing = hcaldqm::utilities::aveTS<HODataFrame>(*it, 8.5, 0,it->size()-1);
939  double timing = hcaldqm::utilities::aveTSDB<HODataFrame>(_dbService, digi_fC, did, *it, 0, it->size()-1);
940  _cSumQ_depth.fill(did, sumQ);
941  _cSumQvsLS_SubdetPM.fill(did, _currentLS, sumQ);
943  _cTimingCut_SubdetPM.fill(did, timing);
944  _cTimingCut_depth.fill(did, timing);
946  if (_ptype != fOffline) { // hidefed2crate
947  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
948  }
949  if (_ptype==fOnline)
950  {
951  _cSumQvsBX_SubdetPM.fill(did, bx, sumQ);
952  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
953  _cTimingCutvsieta_Subdet.fill(did, timing);
957  }
958  if (_ptype != fOffline) { // hidefed2crate
959  if (eid.isVMEid())
960  {
961  _cTimingCut_FEDVME.fill(eid, timing);
962  _cTimingCut_ElectronicsVME.fill(eid, timing);
965  }
966  else
967  {
968  _cTimingCut_FEDuTCA.fill(eid, timing);
969  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
972  }
973  }
974  numChsCut++;
975  }
976  numChs++;
977  }
978 
979  if (rawidValid!=0)
980  {
982  numChs);
983 
984  if (_ptype==fOnline)
985  {
987  _currentLS, numChsCut);
988  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidValid), bx,
989  numChsCut);
990  }
991  }
992  numChs=0; numChsCut=0;
993 
994  // reset
995  rawidValid = 0;
996 
997  // HF collection
998  if (_qie10InConditions) {
999  for (QIE10DigiCollection::const_iterator it=chf->begin(); it!=chf->end(); ++it) {
1000  const QIE10DataFrame digi = static_cast<const QIE10DataFrame>(*it);
1001 
1002  // Explicit check on the DetIds present in the Collection
1003  HcalDetId const& did = digi.detid();
1004 
1005  // Require subdet == HF. In 2017, calibration channels are included in QIE10DigiCollection :(
1006  if (did.subdet() != HcalForward) {
1007  continue;
1008  }
1009 
1010  uint32_t rawid = _ehashmap.lookup(did);
1011  if (rawid==0) {
1012  meUnknownIds1LS->Fill(1);
1013  _unknownIdsPresent=true;
1014  continue;
1015  }
1016  HcalElectronicsId const& eid(rawid);
1017  if (did.subdet()==HcalForward)
1018  rawidValid = did.rawId();
1019 
1020  CaloSamples digi_fC = hcaldqm::utilities::loadADC2fCDB<QIE10DataFrame>(_dbService, did, digi);
1021  double sumQ = hcaldqm::utilities::sumQDB<QIE10DataFrame>(_dbService, digi_fC, did, digi, 0, digi.samples()-1);
1022  //double sumQ = hcaldqm::utilities::sumQ_v10<QIE10DataFrame>(digi, 2.5, 0, digi.samples()-1);
1023 
1024 
1025  // filter out channels that are masked out
1026  if (_xQuality.exists(did))
1027  {
1028  HcalChannelStatus cs(did.rawId(), _xQuality.get(did));
1029  if (
1030  cs.isBitSet(HcalChannelStatus::HcalCellMask) ||
1032  continue;
1033  }
1034  if (!_filter_HF.filter(did)) {
1035  _cSumQ_SubdetPM_HF.fill(did, sumQ);
1036  }
1037  _cOccupancy_depth.fill(did);
1038  if (_ptype==fOnline)
1039  {
1040  _xNChs.get(eid)++;
1041  _cDigiSizevsLS_FED.fill(eid, _currentLS, digi.samples());
1042  digi.samples()!=constants::DIGISIZE[did.subdet()-1]?
1043  _xDigiSize.get(eid)++:_xDigiSize.get(eid)+=0;
1046  }
1047  _cDigiSize_Crate.fill(eid, digi.samples());
1048  if (_ptype != fOffline) { // hidefed2crate
1049  _cDigiSize_FED.fill(eid, digi.samples());
1050  if (eid.isVMEid())
1051  {
1052  _cOccupancy_FEDVME.fill(eid);
1054  /*
1055  if (!it->validate(0, it->size()))
1056  _cCapIdRots_FEDVME.fill(eid, 1);*/
1057  }
1058  else
1059  {
1062  /*
1063  if (!it->validate(0, it->size()))
1064  _cCapIdRots_FEDuTCA.fill(eid, 1);*/
1065  }
1066  }
1067 
1068  for (int i=0; i<digi.samples(); i++)
1069  {
1070  double q = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE10DataFrame>(_dbService, digi_fC, did, digi, i);
1071  if (!_filter_HF.filter(did)) {
1072  _cADC_SubdetPM_HF.fill(did, digi[i].adc());
1073  _cfC_SubdetPM_HF.fill(did, q);
1074  _cLETDCvsADC_SubdetPM.fill(did, digi[i].adc(), digi[i].le_tdc());
1075  _cLETDCvsTS_SubdetPM.fill(did, (int)i, digi[i].le_tdc());
1076  if (digi[i].le_tdc() <50) {
1077  double time = i*25. + (digi[i].le_tdc() / 2.);
1078  _cLETDCTime_SubdetPM.fill(did, time);
1079  _cLETDCTimevsADC_SubdetPM.fill(did, digi[i].adc(), time);
1080  }
1081 
1082  // Bad TDC values: 50-61 should never happen in QIE10 or QIE11, but we are seeing some in 2017 data.
1083  if ((50 <= digi[i].le_tdc()) && (digi[i].le_tdc() <= 61)) {
1084  _cBadTDCValues_SubdetPM_HF.fill(did, digi[i].le_tdc());
1085  _cBadTDCvsBX_SubdetPM_HF.fill(did, bx);
1088  }
1089  }
1090 
1091  if (_ptype != fOffline) { // hidefed2crate
1092  _cADCvsTS_SubdetPM_HF.fill(did, (int)i, q);
1093  if (sumQ>_cutSumQ_HF)
1094  _cShapeCut_FED.fill(eid, (int)i, q);
1095  }
1096  }
1097 
1098  if (sumQ>_cutSumQ_HF)
1099  {
1100  double timing = hcaldqm::utilities::aveTS_v10<QIE10DataFrame>(digi, 2.5, 0,
1101  digi.samples()-1);
1102  double q1 = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE10DataFrame>(_dbService, digi_fC, did, digi, 1);
1103  double q2 = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE10DataFrame>(_dbService, digi_fC, did, digi, 2);
1104  double q2q12 = q2/(q1+q2);
1105  _cSumQ_depth.fill(did, sumQ);
1106  if (!_filter_HF.filter(did)) {
1108  }
1109  if (_ptype==fOnline)
1110  {
1111  if (!_filter_HF.filter(did)) {
1112  _cSumQvsBX_SubdetPM_HF.fill(did, bx, sumQ);
1113  }
1114  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
1115  _cTimingCutvsieta_Subdet.fill(did, timing);
1119  // _cOccupancyCutvsSlotvsLS_HFPM.fill(did, _currentLS);
1120  _xUniHF.get(eid)++;
1121  }
1122  _cTimingCut_SubdetPM.fill(did, timing);
1123  _cTimingCut_depth.fill(did, timing);
1125  if (_ptype != fOffline) { // hidefed2crate
1126  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
1127  }
1129  if (!eid.isVMEid())
1130  if (_ptype==fOnline)
1131  _cQ2Q12CutvsLS_FEDHF.fill(eid, _currentLS, q2q12);
1132  if (_ptype != fOffline) { // hidefed2crate
1133  if (eid.isVMEid())
1134  {
1135  _cTimingCut_FEDVME.fill(eid, timing);
1136  _cTimingCut_ElectronicsVME.fill(eid, timing);
1139  }
1140  else
1141  {
1142  _cTimingCut_FEDuTCA.fill(eid, timing);
1143  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
1146  }
1147  }
1148  numChsCut++;
1149  }
1150  numChs++;
1151  }
1152  }
1153 
1154  if (rawidValid!=0)
1155  {
1157  numChs);
1158 
1159  if (_ptype==fOnline)
1160  {
1162  _currentLS, numChsCut);
1163  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidValid), bx,
1164  numChsCut);
1165  }
1166  }
1167 }
1168 
1170  edm::LuminosityBlock const& lb, edm::EventSetup const& es)
1171 {
1172  DQTask::beginLuminosityBlock(lb, es);
1173 }
1174 
1176  edm::EventSetup const& es)
1177 {
1178  if (_ptype!=fOnline)
1179  return;
1180 
1181  for (uintCompactMap::const_iterator it=_xUniHF.begin();
1182  it!=_xUniHF.end(); ++it)
1183  {
1184  uint32_t hash1 = it->first;
1185  HcalElectronicsId eid1(hash1);
1186  double x1 = it->second;
1187 
1188  for (uintCompactMap::const_iterator jt=_xUniHF.begin();
1189  jt!=_xUniHF.end(); ++jt)
1190  {
1191  if (jt==it)
1192  continue;
1193  double x2 = jt->second;
1194  if (x2==0)
1195  continue;
1196  if (x1/x2<_thresh_unihf)
1197  _xUni.get(eid1)++;
1198  }
1199  }
1200 
1201  if (_ptype != fOffline) { // hidefed2crate
1202  for (std::vector<uint32_t>::const_iterator it=_vhashFEDs.begin();
1203  it!=_vhashFEDs.end(); ++it)
1204  {
1205  hcaldqm::flag::Flag fSum("DIGI");
1207 
1208  std::vector<uint32_t>::const_iterator cit=std::find(
1209  _vcdaqEids.begin(), _vcdaqEids.end(), *it);
1210  if (cit==_vcdaqEids.end())
1211  {
1212  // not @cDAQ
1213  for (uint32_t iflag=0; iflag<_vflags.size(); iflag++)
1214  _cSummaryvsLS_FED.setBinContent(eid, _currentLS, int(iflag),
1215  int(hcaldqm::flag::fNCDAQ));
1217  continue;
1218  }
1219 
1220  // FED is @cDAQ
1223  {
1224  if (_xDigiSize.get(eid)>0)
1226  else
1228  if (hcaldqm::utilities::isFEDHF(eid))
1229  {
1230  double fr = double(_xNChs.get(eid))/double(
1231  _xNChsNominal.get(eid)*_evsPerLS);
1232  if (_runkeyVal==0 || _runkeyVal==4)
1233  {
1234  // only for pp or hi
1235  if (_xUni.get(eid)>0)
1237  else
1238  _vflags[fUni]._state = hcaldqm::flag::fGOOD;
1239  }
1240  if (fr<0.95)
1242  else if (fr<1.0)
1244  else
1246  }
1247  }
1248  if (_unknownIdsPresent)
1250  else
1252 
1253  int iflag=0;
1254  for (std::vector<hcaldqm::flag::Flag>::iterator ft=_vflags.begin();
1255  ft!=_vflags.end(); ++ft)
1256  {
1258  int(ft->_state));
1259  fSum+=(*ft);
1260  iflag++;
1261 
1262  // reset!
1263  ft->reset();
1264  }
1266  }
1267  }
1268 
1270  _xNChs.reset();
1271 
1272  // in the end always do the DQTask::endLumi
1273  DQTask::endLuminosityBlock(lb, es);
1274 }
1275 
1277 
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:116
void _process(edm::Event const &, edm::EventSetup const &) override
Definition: DigiTask.cc:575
hcaldqm::Container1D _cADC_SubdetPM_HF
Definition: DigiTask.h:94
bool _qie10InConditions
Definition: DigiTask.h:185
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * meNumEvents1LS
Definition: DigiTask.h:178
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:86
void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: DigiTask.cc:1175
hcaldqm::Container1D _cOccupancyCutvsieta_Subdet
Definition: DigiTask.h:143
auto_ptr< ClusterSequence > cs
hcaldqm::ContainerProf1D _cSumQvsBX_SubdetPM
Definition: DigiTask.h:91
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
hcaldqm::Container2D _cADCvsTS_SubdetPM
Definition: DigiTask.h:103
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:1169
hcaldqm::Container1D _cfC_SubdetPM_HF
Definition: DigiTask.h:95
hcaldqm::ContainerProf1D _cQ2Q12CutvsLS_FEDHF
Definition: DigiTask.h:120
MonitorElement * meUnknownIds1LS
Definition: DigiTask.h:179
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::Container1D _cBadTDCvsLS_SubdetPM_HEP17
Definition: DigiTask.h:175
hcaldqm::Container1D _cBadTDCvsLS_SubdetPM_HF
Definition: DigiTask.h:170
hcaldqm::Container2D _cLETDCTimevsADC_SubdetPM
Definition: DigiTask.h:162
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
hcaldqm::Container1D _cBadTDCValues_SubdetPM_HF
Definition: DigiTask.h:168
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:89
edm::EDGetTokenT< HODigiCollection > _tokHO
Definition: DigiTask.h:52
hcaldqm::Container1D _cOccupancyCutvsiphi_SubdetPM
Definition: DigiTask.h:142
const_iterator begin() const
virtual void reset()
Definition: ContainerXXX.h:366
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:183
hcaldqm::ContainerProf2D _cTimingCut_FEDVME
Definition: DigiTask.h:109
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: DigiTask.cc:39
int const FIBER_VME_MIN
Definition: Constants.h:141
hcaldqm::Container2D _cOccupancyCutvsiphivsLS_SubdetPM
Definition: DigiTask.h:145
hcaldqm::ContainerXXX< uint32_t > _xDigiSize
Definition: DigiTask.h:156
hcaldqm::ContainerProf2D _cTimingCut_FEDuTCA
Definition: DigiTask.h:110
void bookHistograms(fwlite::EventContainer &eventCont)
double q2[4]
Definition: TauolaWrapper.h:88
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:77
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
virtual CompactMap::const_iterator end()
Definition: ContainerXXX.h:77
hcaldqm::Container2D _cLETDCvsTS_SubdetPM
Definition: DigiTask.h:164
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:129
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 _cOccupancyCut_ElectronicsVME
Definition: DigiTask.h:139
hcaldqm::Container1D _cDigiSize_Crate
Definition: DigiTask.h:153
hcaldqm::Container1D _cShapeCut_FED
Definition: DigiTask.h:102
edm::InputTag _tagHEP17
Definition: DigiTask.h:47
hcaldqm::Container2D _cOccupancyCut_depth
Definition: DigiTask.h:141
hcaldqm::ContainerProf1D _cOccupancyCutvsBX_Subdet
Definition: DigiTask.h:150
double _cutSumQ_HF
Definition: DigiTask.h:55
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
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
double _cutSumQ_HBHE
Definition: DigiTask.h:55
hash_function_did const hash_did[nHashType_did]
hcaldqm::ContainerProf2D _cTimingCut_depth
Definition: DigiTask.h:115
DetId detid() const
Get the detector id.
std::vector< HcalGenericDetId > allPrecisionId() const
hcaldqm::Container1D _cBadTDCValues_SubdetPM_HEP17
Definition: DigiTask.h:173
Logger _logger
Definition: DQModule.h:70
hcaldqm::Container2D _cOccupancy_FEDVME
Definition: DigiTask.h:124
hcaldqm::ContainerProf1D _cTimingCutvsLS_SubdetPM
Definition: DigiTask.h:114
hcaldqm::Container2D _cOccupancyCut_FEDVME
Definition: DigiTask.h:137
hcaldqm::Container2D _cOccupancy_depth
Definition: DigiTask.h:130
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:182
edm::EDGetTokenT< QIE11DigiCollection > _tokHEP17
Definition: DigiTask.h:51
hcaldqm::filter::HashFilter _filter_FEDHF
Definition: DigiTask.h:79
int const CRATE_uTCA_MIN
Definition: Constants.h:116
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:148
void _resetMonitors(hcaldqm::UpdateFreq) override
Definition: DigiTask.cc:555
hcaldqm::ContainerProf1D _cSumQvsLS_SubdetPM
Definition: DigiTask.h:90
hcaldqm::ContainerXXX< uint32_t > _xUni
Definition: DigiTask.h:157
hcaldqm::ContainerProf1D _cTimingCutvsLS_FED
Definition: DigiTask.h:113
bool isVMEid() const
hcaldqm::Container2D _cOccupancyCut_FEDuTCA
Definition: DigiTask.h:138
hcaldqm::Container2D _cOccupancy_ElectronicsVME
Definition: DigiTask.h:126
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:154
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::Container1D _cBadTDCvsBX_SubdetPM_HEP17
Definition: DigiTask.h:174
hcaldqm::ContainerXXX< uint32_t > _xNChsNominal
Definition: DigiTask.h:159
hcaldqm::Container1D _cSumQ_SubdetPM
Definition: DigiTask.h:88
const T & get() const
Definition: EventSetup.h:58
hcaldqm::Container1D _cOccupancyvsiphi_SubdetPM
Definition: DigiTask.h:131
int const DIGISIZE[SUBDET_NUM]
Definition: Constants.h:183
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:117
hcaldqm::filter::HashFilter _filter_HEP17
Definition: DigiTask.h:82
hcaldqm::Container1D _cLETDCTime_SubdetPM
Definition: DigiTask.h:165
hcaldqm::electronicsmap::ElectronicsMap _dhashmap
Definition: DigiTask.h:74
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:140
hcaldqm::ContainerProf2D _cTimingCut_ElectronicsVME
Definition: DigiTask.h:111
hcaldqm::Container2D _cLETDCvsADC_SubdetPM
Definition: DigiTask.h:163
virtual STDTYPE & get(HcalDetId const &)
Definition: ContainerXXX.h:249
edm::ESHandle< HcalDbService > _dbService
Definition: DQTask.h:72
virtual void setLumiFlag()
std::vector< int > getFEDList(HcalElectronicsMap const *)
Definition: Utilities.cc:95
hcaldqm::Container2D _cOccupancy_Crate
Definition: DigiTask.h:128
std::vector< int > getFEDuTCAList(HcalElectronicsMap const *)
Definition: Utilities.cc:145
void fill(HcalDetId const &) override
Definition: Container2D.cc:59
const HcalElectronicsMap * getHcalMapping() const
virtual bool filter(HcalDetId const &) const
Definition: HashFilter.cc:36
std::string _subsystem
Definition: DQModule.h:64
hcaldqm::filter::HashFilter _filter_uTCA
Definition: DigiTask.h:78
hcaldqm::ContainerProf1D _cSumQvsLS_SubdetPM_HF
Definition: DigiTask.h:97
bool isFEDHO(HcalElectronicsId const &)
Definition: Utilities.cc:212
std::vector< uint32_t > _vcdaqEids
Definition: DQTask.h:65
hcaldqm::ContainerProf1D _cDigiSizevsLS_FED
Definition: DigiTask.h:155
hcaldqm::ContainerXXX< uint32_t > _xNChs
Definition: DigiTask.h:158
hcaldqm::electronicsmap::ElectronicsMap _ehashmap
Definition: DigiTask.h:73
hcaldqm::ContainerProf1D _cOccupancyCutvsLS_Subdet
Definition: DigiTask.h:149
virtual void initialize(hashfunctions::HashType, int debug=0)
Definition: ContainerXXX.h:91
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:171
hcaldqm::Container1D _cSumQ_SubdetPM_HF
Definition: DigiTask.h:96
std::vector< uint32_t > _vhashFEDs
Definition: DigiTask.h:70
hcaldqm::filter::HashFilter _filter_HF
Definition: DigiTask.h:80
int samples() const
total number of samples in the digi
hcaldqm::ContainerProf1D _cSumQvsBX_SubdetPM_HF
Definition: DigiTask.h:98
hcaldqm::Container1D _cOccupancyvsieta_Subdet
Definition: DigiTask.h:132
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:112
hcaldqm::filter::HashFilter _filter_notHF
Definition: DigiTask.h:81
int const SLOT_uTCA_MIN
Definition: Constants.h:123
const_iterator begin() const
hcaldqm::Container1D _cTimingCut_SubdetPM
Definition: DigiTask.h:108
Definition: Run.h:43
hcaldqm::Container1D _cBadTDCvsBX_SubdetPM_HF
Definition: DigiTask.h:169
bool _unknownIdsPresent
Definition: DigiTask.h:180
hcaldqm::Container2D _cOccupancy_FEDuTCA
Definition: DigiTask.h:125
ib
Definition: cuy.py:660
hcaldqm::ContainerXXX< uint32_t > _xUniHF
Definition: DigiTask.h:157
hcaldqm::Container2D _cADCvsTS_SubdetPM_HF
Definition: DigiTask.h:104
double _cutSumQ_HEP17
Definition: DigiTask.h:55
double sumQ(DIGI const &digi, double ped, int i=0, int j=3)
Definition: Utilities.h:122
hcaldqm::Container1D _cfC_SubdetPM
Definition: DigiTask.h:87
hcaldqm::Container2D _cOccupancy_ElectronicsuTCA
Definition: DigiTask.h:127