CMS 3D CMS Logo

RecHitTask.cc
Go to the documentation of this file.
2 #include <cmath>
3 
4 using namespace hcaldqm;
5 using namespace hcaldqm::constants;
6 using namespace hcaldqm::filter;
7 
9  _tagHBHE = ps.getUntrackedParameter<edm::InputTag>("tagHBHE", edm::InputTag("hbhereco"));
10  _tagHO = ps.getUntrackedParameter<edm::InputTag>("tagHO", edm::InputTag("horeco"));
11  _tagHF = ps.getUntrackedParameter<edm::InputTag>("tagHF", edm::InputTag("hfreco"));
13  _hfPreRecHitsAvailable = ps.getUntrackedParameter<bool>("hfPreRecHitsAvailable", false);
14 
15  _tokHBHE = consumes<HBHERecHitCollection>(_tagHBHE);
16  _tokHO = consumes<HORecHitCollection>(_tagHO);
17  _tokHF = consumes<HFRecHitCollection>(_tagHF);
18  _tokPreHF = consumes<HFPreRecHitCollection>(_tagPreHF);
19 
20  _cutE_HBHE = ps.getUntrackedParameter<double>("cutE_HBHE", 5);
21  _cutE_HO = ps.getUntrackedParameter<double>("cutE_HO", 5);
22  _cutE_HF = ps.getUntrackedParameter<double>("cutE_HF", 5);
23  _thresh_unihf = ps.getUntrackedParameter<double>("thresh_unihf", 0.2);
24 
25  // order must be the same as in RecoFlag enum
26  _vflags.resize(nRecoFlag);
27  _vflags[fUni] = flag::Flag("UniSlotHF");
28  _vflags[fTCDS] = flag::Flag("TCDS");
29  _vflags[fUnknownIds] = flag::Flag("UnknownIds");
30 }
31 
32 /* virtual */ void RecHitTask::bookHistograms(DQMStore::IBooker& ib, edm::Run const& r, edm::EventSetup const& es) {
33  DQTask::bookHistograms(ib, r, es);
34 
35  // GET WHAT YOU NEED
37  es.get<HcalDbRecord>().get(dbs);
38  _emap = dbs->getHcalMapping();
39 
40  std::vector<uint32_t> vVME;
41  std::vector<uint32_t> vuTCA;
42  vVME.push_back(
44  vuTCA.push_back(HcalElectronicsId(CRATE_uTCA_MIN, SLOT_uTCA_MIN, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
47  std::vector<uint32_t> vhashHF;
48  vhashHF.push_back(
50 
52 
53  // INITIALIZE FIRST
54  // Energy
56  "Energy",
60  0);
62  "Energy",
67  0);
68 
69  // Timing
71  "TimingCut",
75  0);
77  "TimingvsEnergy",
82  0);
83 
85  "TimingCut",
89  0);
91  "TimingCut",
96  0);
98  "TimingCutvsLS",
102  0);
103 
104  // Occupancy
106  "Occupancy",
111  0);
112 
114  "OccupancyvsLS",
118  0);
119 
121  "OccupancyCut",
126  0);
127 
130  _name,
131  "ChargeVsAsymmetry",
136  0);
138  "AsymmetryMean",
143  0);
145  "Asymmetry",
149  0);
150  }
151 
152  // INITIALIZE HISTOGRAMS to be used only in Online
153  if (_ptype == fOnline) {
155  "Energyvsieta",
159  0);
161  "Energyvsiphi",
165  0);
167  "EnergyvsLS",
171  0);
173  "EnergyvsBX",
177  0);
179  "TimingCutvsieta",
183  0);
185  "TimingCutvsiphi",
189  0);
191  "TimingCutvsBX",
195  0);
197  "Occupancyvsiphi",
201  0);
203  "Occupancyvsieta",
207  0);
209  "OccupancyCutvsiphi",
213  0);
215  "OccupancyCutvsieta",
219  0);
221  "OccupancyCutvsBX",
225  0);
227  "OccupancyCutvsiphivsLS",
232  0);
234  "OccupancyCutvsLS",
238  0);
239  }
240 
241  // FED-based plots
242  if (_ptype != fOffline) { // hidefed2crate
243  std::vector<int> vFEDs = hcaldqm::utilities::getFEDList(_emap);
244  std::vector<int> vFEDsVME = hcaldqm::utilities::getFEDVMEList(_emap);
245  std::vector<int> vFEDsuTCA = hcaldqm::utilities::getFEDuTCAList(_emap);
246 
247  // push the rawIds of each fed into the vector
248  for (std::vector<int>::const_iterator it = vFEDsVME.begin(); it != vFEDsVME.end(); ++it)
250  for (std::vector<int>::const_iterator it = vFEDsuTCA.begin(); it != vFEDsuTCA.end(); ++it) {
251  std::pair<uint16_t, uint16_t> cspair = utilities::fed2crate(*it);
252  _vhashFEDs.push_back(HcalElectronicsId(cspair.first, cspair.second, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
253  }
254 
256  "TimingCut",
261  0);
263  "TimingCut",
268  0);
270  "TimingCutvsLS",
274  0);
276  "TimingCut",
278  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
281  0);
283  "TimingCut",
285  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
288  0);
289 
291  "Occupancy",
296  0);
298  "Occupancy",
303  0);
305  "Occupancy",
307  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
310  0);
312  "Occupancy",
314  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
317  0);
318 
320  "OccupancyCut",
325  0);
327  "OccupancyCut",
332  0);
334  "OccupancyCut",
336  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
339  0);
341  "OccupancyCut",
343  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
346  0);
347  if (_ptype == fOnline) {
349  "SummaryvsLS",
354  0);
356  "SummaryvsLS",
360  0);
361 
364  }
365  }
366 
367  // BOOK HISTOGRAMS
368  char cutstr[200];
369  sprintf(cutstr, "_EHBHE%dHO%dHF%d", int(_cutE_HBHE), int(_cutE_HO), int(_cutE_HF));
370  char cutstr2[200];
371  sprintf(cutstr2, "_EHF%d", int(_cutE_HF));
372 
373  // Energy
376 
377  // Timing
380  if (_ptype != fOffline) { // hidefed2crate
385  }
389  if (_ptype != fOffline) { // hidefed2crate
391  }
392 
393  // Occupancy
395  if (_ptype != fOffline) { // hidefed2crate
400  }
403  if (_ptype != fOffline) { // hidefed2crate
408  }
409 
414  }
415 
416  // BOOK HISTOGRAMS to be used only in Online
417  if (_ptype == fOnline) {
434 
435  std::vector<uint32_t> vhashFEDHF;
436  vhashFEDHF.push_back(HcalElectronicsId(22, SLOT_uTCA_MIN, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
437  vhashFEDHF.push_back(HcalElectronicsId(29, SLOT_uTCA_MIN, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
438  vhashFEDHF.push_back(HcalElectronicsId(32, SLOT_uTCA_MIN, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
439  vhashFEDHF.push_back(HcalElectronicsId(22, SLOT_uTCA_MIN + 6, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
440  vhashFEDHF.push_back(HcalElectronicsId(29, SLOT_uTCA_MIN + 6, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
441  vhashFEDHF.push_back(HcalElectronicsId(32, SLOT_uTCA_MIN + 6, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
442  HashFilter filter_FEDHF;
444 
446  if (_ptype != fOffline) { // hidefed2crate
447  _xUniHF.book(_emap, filter_FEDHF);
448  _xUni.book(_emap);
449  }
450  }
451 
452  // initialize hash map
454 
455  // book some mes...
456  ib.setCurrentFolder(_subsystem + "/" + _name);
457  meUnknownIds1LS = ib.book1D("UnknownIds", "UnknownIds", 1, 0, 1);
458  _unknownIdsPresent = false;
460 }
461 
463  switch (uf) {
464  case hcaldqm::f1LS:
465  _unknownIdsPresent = false;
466  break;
467  default:
468  break;
469  }
470 
471  DQTask::_resetMonitors(uf);
472 }
473 
474 /* virtual */ void RecHitTask::_process(edm::Event const& e, edm::EventSetup const&) {
478 
479  if (!(e.getByToken(_tokHBHE, chbhe)))
480  _logger.dqmthrow("Collection HBHERecHitCollection not available " + _tagHBHE.label() + " " + _tagHBHE.instance());
481  if (!(e.getByToken(_tokHO, cho)))
482  _logger.dqmthrow("Collection HORecHitCollection not available " + _tagHO.label() + " " + _tagHO.instance());
483  if (!(e.getByToken(_tokHF, chf)))
484  _logger.dqmthrow("Collection HFRecHitCollection not available " + _tagHF.label() + " " + _tagHF.instance());
485 
488  if (!(e.getByToken(_tokPreHF, cprehf)))
489  _logger.dqmthrow("Collection HFPreRecHitCollection not available " + _tagPreHF.label() + " " +
490  _tagPreHF.instance());
491  }
492 
493  // extract some info per event
494  int bx = e.bunchCrossing();
495 
496  // To fill histograms outside of the loop, you need to determine if there were
497  // any valid det ids first
498  uint32_t rawidValid = 0;
499  uint32_t rawidHBValid = 0;
500  uint32_t rawidHEValid = 0;
501 
502  double ehbm = 0;
503  double ehbp = 0;
504  double ehem = 0;
505  double ehep = 0;
506  int nChsHB = 0;
507  int nChsHE = 0;
508  int nChsHBCut = 0;
509  int nChsHECut = 0;
510  for (HBHERecHitCollection::const_iterator it = chbhe->begin(); it != chbhe->end(); ++it) {
511  double energy = it->energy();
512  double timing = it->time();
513 
514  // Explicit check on the DetIds present in the Collection
515  HcalDetId did = it->id();
516  uint32_t rawid = _ehashmap.lookup(did);
517  /*
518  * Needs to be removed as DetIds that belong to the HEP17 after combination
519  * are not present in the emap
520  * Removed until further notice!
521  *
522  */
523  //if (rawid==0)
524  //{meUnknownIds1LS->Fill(1); _unknownIdsPresent=true;continue;}
525 
526  HcalElectronicsId const& eid(rawid);
527  rawidValid = did.rawId();
528  if (did.subdet() == HcalBarrel)
529  rawidHBValid = did.rawId();
530  else if (did.subdet() == HcalEndcap)
531  rawidHEValid = did.rawId();
532 
533  _cEnergy_Subdet.fill(did, energy);
534  _cTimingvsEnergy_SubdetPM.fill(did, energy, timing);
535  _cOccupancy_depth.fill(did);
536  did.subdet() == HcalBarrel ? did.ieta() > 0 ? ehbp += energy : ehbm += energy
537  : did.ieta() > 0 ? ehep += energy : ehem += energy;
538 
539  // ONLINE ONLY!
540  if (_ptype == fOnline) {
543  }
544  // ^^^ONLINE ONLY!
545  //
546  if (_ptype != fOffline) { // hidefed2crate
547  // Also, for these electronics plots, require that the channel was found in the emap.
548  if (rawid != 0) {
549  if (eid.isVMEid()) {
552  } else if (eid.isUTCAid()) {
555  }
556  }
557  }
558 
559  if (energy > _cutE_HBHE) {
560  // ONLINE ONLY!
561  if (_ptype == fOnline) {
562  _cEnergyvsLS_SubdetPM.fill(did, _currentLS, energy);
563  _cEnergyvsBX_SubdetPM.fill(did, bx, energy);
564  _cEnergyvsieta_Subdet.fill(did, energy);
565  _cEnergyvsiphi_SubdetPM.fill(did, energy);
566  _cTimingCutvsieta_Subdet.fill(did, timing);
567  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
568  _cTimingCutvsBX_SubdetPM.fill(did, bx, timing);
572  }
573  // ^^^ONLINE ONLY!
574  _cEnergy_depth.fill(did, energy);
575  _cTimingCut_SubdetPM.fill(did, timing);
576  _cTimingCut_HBHEPartition.fill(did, timing);
578 
579  // ONLINE
580  if (_ptype == fOnline) {
581  if (rawid != 0) {
582  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
583  }
584  _cTimingCut_depth.fill(did, timing);
585  // ^^^ONLINE
586  } else {
587  if (_ptype != fOffline) { // hidefed2crate
588  if (rawid != 0) {
589  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
590  }
591  }
592  _cTimingCut_depth.fill(did, timing);
593  }
595  if (_ptype != fOffline) { // hidefed2crate
596  if (rawid != 0) {
597  if (eid.isVMEid()) {
598  // ONLINE
599  if (_ptype == fOnline) {
600  _cTimingCut_FEDVME.fill(eid, timing);
601  _cTimingCut_ElectronicsVME.fill(eid, timing);
602  } // ^^^ ONLINE
603  else {
604  _cTimingCut_FEDVME.fill(eid, timing);
605  _cTimingCut_ElectronicsVME.fill(eid, timing);
606  }
607  // ^^^ONLINE
608 
611  } else if (eid.isUTCAid()) {
612  if (_ptype == fOnline) {
613  // time constraints are explicit!
614  _cTimingCut_FEDuTCA.fill(eid, timing);
615  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
616  } else {
617  _cTimingCut_FEDuTCA.fill(eid, timing);
618  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
619  }
622  }
623  }
624  }
625  did.subdet() == HcalBarrel ? nChsHBCut++ : nChsHECut++;
626  }
627  did.subdet() == HcalBarrel ? nChsHB++ : nChsHE++;
628  }
629 
630  if (rawidHBValid != 0 && rawidHEValid != 0) {
631  _cOccupancyvsLS_Subdet.fill(HcalDetId(rawidHBValid), _currentLS, nChsHB);
632  _cOccupancyvsLS_Subdet.fill(HcalDetId(rawidHEValid), _currentLS, nChsHE);
633 
634  // ONLINE ONLY!
635  if (_ptype == fOnline) {
636  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidHBValid), bx, nChsHBCut);
637  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidHEValid), bx, nChsHECut);
638  _cOccupancyCutvsLS_Subdet.fill(HcalDetId(rawidHBValid), _currentLS, nChsHBCut);
639  _cOccupancyCutvsLS_Subdet.fill(HcalDetId(rawidHEValid), _currentLS, nChsHECut);
640  }
641  // ^^^ONLINE ONLY!
642  }
643 
644  // reset
645  rawidValid = 0;
646 
647  int nChsHO = 0;
648  int nChsHOCut = 0;
649  double ehop = 0;
650  double ehom = 0;
651  for (HORecHitCollection::const_iterator it = cho->begin(); it != cho->end(); ++it) {
652  double energy = it->energy();
653  double timing = it->time();
654 
655  // Explicit check on the DetIds present in the Collection
656  HcalDetId did = it->id();
657  uint32_t rawid = _ehashmap.lookup(did);
658  if (rawid == 0) {
659  meUnknownIds1LS->Fill(1);
660  _unknownIdsPresent = true;
661  continue;
662  }
663  HcalElectronicsId const& eid(rawid);
664  if (did.subdet() == HcalOuter)
665  rawidValid = did.rawId();
666 
667  _cEnergy_Subdet.fill(did, energy);
668  _cTimingvsEnergy_SubdetPM.fill(did, energy, timing);
669  _cOccupancy_depth.fill(did);
670  did.ieta() > 0 ? ehop += energy : ehom += energy;
671 
672  // IMPORTANT: ONLINE ONLY!
673  if (_ptype == fOnline) {
676  }
677  // ONLINE ONLY!
678 
679  if (_ptype != fOffline) { // hidefed2crate
680  if (eid.isVMEid()) {
683  } else {
686  }
687  }
688 
689  if (energy > _cutE_HO) {
690  // ONLINE ONLY!
691  if (_ptype == fOnline) {
692  _cEnergyvsLS_SubdetPM.fill(did, _currentLS, energy);
693  _cEnergyvsBX_SubdetPM.fill(did, bx, energy);
694  _cEnergyvsieta_Subdet.fill(did, energy);
695  _cEnergyvsiphi_SubdetPM.fill(did, energy);
696  _cTimingCutvsieta_Subdet.fill(did, timing);
697  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
698  _cTimingCutvsBX_SubdetPM.fill(did, bx, timing);
702  }
703  // ^^^ONLINE ONLY!
704 
705  _cEnergy_depth.fill(did, energy);
706  _cTimingCut_SubdetPM.fill(did, timing);
708  if (_ptype != fOffline) { // hidefed2crate
709  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
710  }
712  _cTimingCut_depth.fill(did, timing);
713  if (_ptype != fOffline) { // hidefed2crate
714  if (eid.isVMEid()) {
715  _cTimingCut_FEDVME.fill(eid, timing);
716  _cTimingCut_ElectronicsVME.fill(eid, timing);
719  } else {
720  _cTimingCut_FEDuTCA.fill(eid, timing);
721  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
724  }
725  }
726  nChsHOCut++;
727  }
728  nChsHO++;
729  }
730 
731  if (rawidValid != 0) {
732  _cOccupancyvsLS_Subdet.fill(HcalDetId(rawidValid), _currentLS, nChsHO);
733  // ONLINE ONLY!
734  if (_ptype == fOnline) {
735  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidValid), bx, nChsHOCut);
736  _cOccupancyCutvsLS_Subdet.fill(HcalDetId(rawidValid), _currentLS, nChsHOCut);
737  }
738  // ^^^ONLINE ONLY!
739  }
740 
741  //reset
742  rawidValid = 0;
743 
744  int nChsHF = 0;
745  int nChsHFCut = 0;
746  double ehfp = 0;
747  double ehfm = 0;
748  for (HFRecHitCollection::const_iterator it = chf->begin(); it != chf->end(); ++it) {
749  double energy = it->energy();
750  double timing = it->time();
751 
752  // Explicit check on the DetIds present in the Collection
753  HcalDetId did = it->id();
754  uint32_t rawid = _ehashmap.lookup(did);
755  if (rawid == 0) {
756  meUnknownIds1LS->Fill(1);
757  _unknownIdsPresent = true;
758  continue;
759  }
760  HcalElectronicsId const& eid(rawid);
761  if (did.subdet() == HcalForward)
762  rawidValid = did.rawId();
763 
764  _cEnergy_Subdet.fill(did, energy);
765  _cTimingvsEnergy_SubdetPM.fill(did, energy, timing);
766  _cOccupancy_depth.fill(did);
767  did.ieta() > 0 ? ehfp += energy : ehfm += energy;
768 
769  // IMPORTANT:
770  // only for Online Processing
771  //
772  if (_ptype == fOnline) {
775  }
776  // ONLINE ONLY!
777 
778  if (_ptype != fOffline) { // hidefed2crate
779  if (eid.isVMEid()) {
782  } else {
785  }
786  }
787 
788  if (energy > _cutE_HF) {
789  // ONLINE ONLY!
790  if (_ptype == fOnline) {
791  _cEnergyvsLS_SubdetPM.fill(did, _currentLS, energy);
792  _cEnergyvsBX_SubdetPM.fill(did, bx, energy);
793  _cEnergyvsieta_Subdet.fill(did, energy);
794  _cEnergyvsiphi_SubdetPM.fill(did, energy);
795  _cTimingCutvsieta_Subdet.fill(did, timing);
796  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
797  _cTimingCutvsBX_SubdetPM.fill(did, bx, timing);
801  if (_ptype != fOffline) { // hidefed2crate
802  _xUniHF.get(eid)++;
803  }
804  }
805  // ^^^ONLINE ONLY!
806  _cEnergy_depth.fill(did, energy);
807  _cTimingCut_SubdetPM.fill(did, timing);
809  if (_ptype != fOffline) { // hidefed2crate
810  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
811  }
813  _cTimingCut_depth.fill(did, timing);
814  if (_ptype != fOffline) { // hidefed2crate
815  if (eid.isVMEid()) {
816  _cTimingCut_FEDVME.fill(eid, timing);
817  _cTimingCut_ElectronicsVME.fill(eid, timing);
820  } else {
821  _cTimingCut_FEDuTCA.fill(eid, timing);
822  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
825  }
826  }
827  nChsHFCut++;
828  }
829  nChsHF++;
830  }
831 
832  if (rawidValid != 0) {
833  _cOccupancyvsLS_Subdet.fill(HcalDetId(rawidValid), _currentLS, nChsHF);
834  // ONLINE ONLY!
835  if (_ptype == fOnline) {
836  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidValid), bx, nChsHFCut);
837  _cOccupancyCutvsLS_Subdet.fill(HcalDetId(rawidValid), _currentLS, nChsHFCut);
838  }
839  // ^^^ONLINE ONLY!
840  }
841 
842  // Loop over HFPreRecHits to get charge and charge asymmetry
844  for (HFPreRecHitCollection::const_iterator it = cprehf->begin(); it != cprehf->end(); ++it) {
845  HcalDetId did = it->id();
846  if (_filter_HF.filter(did)) {
847  continue;
848  }
849  std::pair<float, bool> chargeAsymmetry = it->chargeAsymmetry(0.);
850  std::pair<float, bool> chargeAsymmetryCut = it->chargeAsymmetry(20.);
851 
852  if (chargeAsymmetry.second) {
853  _cDAAsymmetryVsCharge_SubdetPM.fill(did, chargeAsymmetry.first, it->charge());
854  }
855  if (chargeAsymmetryCut.second) {
856  _cDAAsymmetryMean_cut_depth.fill(did, chargeAsymmetryCut.first);
857  _cDAAsymmetry_cut_SubdetPM.fill(did, chargeAsymmetryCut.first);
858  }
859  }
860  }
861 }
862 
864  DQTask::beginLuminosityBlock(lb, es);
865 }
866 
867 /* virtual */ void RecHitTask::endLuminosityBlock(edm::LuminosityBlock const& lb, edm::EventSetup const& es) {
868  if (_ptype != fOnline)
869  return;
870 
871  //
872  // GENERATE STATUS ONLY FOR ONLINE
873  //
874  // for (std::vector<HcalGenericDetId>::const_iterator it=gids.begin();
875  // it!=gids.end(); ++it)
876  // {}
877 
878  for (uintCompactMap::const_iterator it = _xUniHF.begin(); it != _xUniHF.end(); ++it) {
879  uint32_t hash1 = it->first;
880  HcalElectronicsId eid1(hash1);
881  double x1 = it->second;
882 
883  for (uintCompactMap::const_iterator jt = _xUniHF.begin(); jt != _xUniHF.end(); ++jt) {
884  if (jt == it)
885  continue;
886  double x2 = jt->second;
887  if (x2 == 0)
888  continue;
889  if (x1 / x2 < _thresh_unihf)
890  _xUni.get(eid1)++;
891  }
892  }
893 
894  if (_ptype != fOffline) { // hidefed2crate
895  for (std::vector<uint32_t>::const_iterator it = _vhashFEDs.begin(); it != _vhashFEDs.end(); ++it) {
896  flag::Flag fSum("RECO");
898 
899  std::vector<uint32_t>::const_iterator cit = std::find(_vcdaqEids.begin(), _vcdaqEids.end(), *it);
900  if (cit == _vcdaqEids.end()) {
901  // not @cDAQ
902  for (uint32_t iflag = 0; iflag < _vflags.size(); iflag++)
903  _cSummaryvsLS_FED.setBinContent(eid, _currentLS, int(iflag), int(flag::fNCDAQ));
905  continue;
906  }
907 
908  // FED is @cDAQ
909  if (hcaldqm::utilities::isFEDHF(eid) && (_runkeyVal == 0 || _runkeyVal == 4)) {
910  if (_xUni.get(eid) > 0)
911  _vflags[fUni]._state = flag::fPROBLEMATIC;
912  else
913  _vflags[fUni]._state = flag::fGOOD;
914  }
915 
916  if (_unknownIdsPresent)
917  _vflags[fUnknownIds]._state = flag::fBAD;
918  else
919  _vflags[fUnknownIds]._state = flag::fGOOD;
920 
921  int iflag = 0;
922  for (std::vector<flag::Flag>::iterator ft = _vflags.begin(); ft != _vflags.end(); ++ft) {
923  _cSummaryvsLS_FED.setBinContent(eid, _currentLS, int(iflag), int(ft->_state));
924  fSum += (*ft);
925  iflag++;
926 
927  // reset after using
928  ft->reset();
929  }
931  }
932  _xUniHF.reset();
933  _xUni.reset();
934  }
935 
936  // in the end always do the DQTask::endLumi
937  DQTask::endLuminosityBlock(lb, es);
938 }
939 
void initialize(std::string const &folder, hashfunctions::HashType, quantity::Quantity *, quantity::Quantity *, int debug=0) override
hcaldqm::ContainerXXX< uint32_t > _xUniHF
Definition: RecHitTask.h:115
constexpr uint32_t rawId() const
T getUntrackedParameter(std::string const &, T const &) const
hcaldqm::Container2D _cOccupancyCut_depth
Definition: RecHitTask.h:110
hcaldqm::Container2D _cSummaryvsLS_FED
Definition: RecHitTask.h:127
std::vector< uint32_t > _vhashFEDs
Definition: RecHitTask.h:53
hcaldqm::ContainerProf1D _cOccupancyvsLS_Subdet
Definition: RecHitTask.h:100
edm::EDGetTokenT< HBHERecHitCollection > _tokHBHE
Definition: RecHitTask.h:44
hcaldqm::ContainerProf2D _cEnergy_depth
Definition: RecHitTask.h:73
virtual void initialize(std::string const &folder, hashfunctions::HashType, quantity::Quantity *, quantity::Quantity *qy=new quantity::ValueQuantity(quantity::fN), int debug=0)
Definition: Container1D.cc:33
hcaldqm::Container2D _cTimingvsEnergy_SubdetPM
Definition: RecHitTask.h:78
int const CRATE_VME_MIN
Definition: Constants.h:91
hcaldqm::Container2D _cOccupancyCut_FEDVME
Definition: RecHitTask.h:105
hcaldqm::Container2D _cOccupancy_FEDVME
Definition: RecHitTask.h:96
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:146
double _cutE_HO
Definition: RecHitTask.h:49
void fill(HcalDetId const &) override
std::pair< uint16_t, uint16_t > fed2crate(int fed)
Definition: Utilities.cc:10
edm::EDGetTokenT< HFRecHitCollection > _tokHF
Definition: RecHitTask.h:46
hcaldqm::ContainerXXX< uint32_t > _xUni
Definition: RecHitTask.h:115
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
void initialize(HcalElectronicsMap const *, ElectronicsMapType etype=fHcalElectronicsMap)
void _resetMonitors(hcaldqm::UpdateFreq) override
Definition: RecHitTask.cc:462
hcaldqm::Container1D _cOccupancyCutvsiphi_SubdetPM
Definition: RecHitTask.h:111
hcaldqm::ContainerProf1D _cEnergyvsieta_Subdet
Definition: RecHitTask.h:71
hcaldqm::ContainerProf1D _cEnergyvsiphi_SubdetPM
Definition: RecHitTask.h:72
hcaldqm::Container2D _cOccupancyCutvsiphivsLS_SubdetPM
Definition: RecHitTask.h:114
std::vector< HcalGenericDetId > _gids
Definition: RecHitTask.h:126
virtual CompactMap::const_iterator begin()
Definition: ContainerXXX.h:69
UpdateFreq
Definition: DQTask.h:16
State _state
Definition: Flag.h:62
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:50
std::vector< T >::const_iterator const_iterator
hcaldqm::Container1D _cTimingCut_SubdetPM
Definition: RecHitTask.h:81
int bunchCrossing() const
Definition: EventBase.h:64
RecHitTask(edm::ParameterSet const &)
Definition: RecHitTask.cc:8
virtual void initialize(std::string const &folder, quantity::Quantity *, quantity::Quantity *, quantity::Quantity *qz=new quantity::ValueQuantity(quantity::fN), int debug=0)
int const SPIGOT_MIN
Definition: Constants.h:116
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
virtual void reset()
Definition: ContainerXXX.h:292
hcaldqm::ContainerProf1D _cTimingCutvsieta_Subdet
Definition: RecHitTask.h:90
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
int const FIBER_VME_MIN
Definition: Constants.h:121
hcaldqm::ContainerProf1D _cEnergyvsBX_SubdetPM
Definition: RecHitTask.h:75
hcaldqm::Container2D _cOccupancyCut_ElectronicsVME
Definition: RecHitTask.h:107
int const FIBERCH_MIN
Definition: Constants.h:130
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:101
hcaldqm::ContainerProf2D _cTimingCut_ElectronicsuTCA
Definition: RecHitTask.h:86
virtual CompactMap::const_iterator end()
Definition: ContainerXXX.h:70
constexpr bool isUTCAid() const
std::vector< hcaldqm::flag::Flag > _vflags
Definition: RecHitTask.h:56
double _cutE_HBHE
Definition: RecHitTask.h:49
ProcessingType _ptype
Definition: DQModule.h:43
virtual void fill(uint32_t)
Definition: Container1D.cc:73
hcaldqm::Container1D _cEnergy_Subdet
Definition: RecHitTask.h:70
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
hcaldqm::ContainerProf1D _cTimingCutvsLS_FED
Definition: RecHitTask.h:88
hcaldqm::ContainerProf2D _cTimingCut_FEDVME
Definition: RecHitTask.h:83
hcaldqm::ContainerProf1D _cTimingCutvsLS_SubdetPM
Definition: RecHitTask.h:89
void reset()
Definition: Flag.h:59
void setLumiFlag()
this ME is meant to be stored for each luminosity section
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
hcaldqm::Container2D _cOccupancyCut_ElectronicsuTCA
Definition: RecHitTask.h:108
virtual void setBinContent(int, int, int)
hcaldqm::ContainerProf1D _cOccupancyCutvsBX_Subdet
Definition: RecHitTask.h:113
constexpr bool isVMEid() const
void dqmthrow(std::string const &msg) const
Definition: Logger.h:12
int const FED_VME_MIN
Definition: Constants.h:78
edm::InputTag _tagPreHF
Definition: RecHitTask.h:42
int ieta() const
get the cell ieta
Definition: HcalDetId.h:159
hcaldqm::Container2D _cOccupancy_ElectronicsVME
Definition: RecHitTask.h:98
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:106
int const FIBER_uTCA_MIN1
Definition: Constants.h:124
double _cutE_HF
Definition: RecHitTask.h:49
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: RecHitTask.cc:32
hash_function_did const hash_did[nHashType_did]
std::vector< HcalGenericDetId > allPrecisionId() const
Logger _logger
Definition: DQModule.h:54
hcaldqm::Container2D _cOccupancyCut_FEDuTCA
Definition: RecHitTask.h:106
hcaldqm::electronicsmap::ElectronicsMap _ehashmap
Definition: RecHitTask.h:60
MonitorElement * meUnknownIds1LS
Definition: RecHitTask.h:123
edm::EDGetTokenT< HFPreRecHitCollection > _tokPreHF
Definition: RecHitTask.h:47
std::string _name
Definition: DQModule.h:41
HcalElectronicsMap const * _emap
Definition: DQTask.h:59
hcaldqm::ContainerSingle2D _cSummaryvsLS
Definition: RecHitTask.h:128
double _thresh_unihf
Definition: RecHitTask.h:50
void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: RecHitTask.cc:863
int const CRATE_uTCA_MIN
Definition: Constants.h:96
const_iterator end() const
hcaldqm::Container2D _cOccupancy_ElectronicsuTCA
Definition: RecHitTask.h:99
virtual void book(HcalElectronicsMap const *)
Definition: ContainerXXX.h:87
edm::InputTag _tagHO
Definition: RecHitTask.h:40
virtual void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="")
Definition: Container1D.cc:592
hcaldqm::filter::HashFilter _filter_HF
Definition: RecHitTask.h:67
virtual void initialize(std::string const &folder, hashfunctions::HashType, quantity::Quantity *, quantity::Quantity *, quantity::Quantity *qz=new quantity::ValueQuantity(quantity::fN), int debug=0)
Definition: Container2D.cc:25
hcaldqm::Container2D _cOccupancy_FEDuTCA
Definition: RecHitTask.h:97
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
example_stream void bookHistograms(DQMStore::IBooker &,@example_stream edm::Run const &,@example_stream edm::EventSetup const &) override
edm::InputTag _tagHF
Definition: RecHitTask.h:41
void initialize(std::string const &folder, hashfunctions::HashType, quantity::Quantity *, quantity::Quantity *, quantity::Quantity *qz=new quantity::ValueQuantity(quantity::fEnergy), int debug=0) override
hcaldqm::Container2D _cDAAsymmetryVsCharge_SubdetPM
Definition: RecHitTask.h:118
void setBinContent(HcalDetId const &, int) override
Definition: Container2D.cc:163
std::string const & label() const
Definition: InputTag.h:36
hcaldqm::Container1D _cTimingCut_HBHEPartition
Definition: RecHitTask.h:82
hcaldqm::filter::HashFilter _filter_uTCA
Definition: RecHitTask.h:64
hcaldqm::ContainerProf1D _cOccupancyCutvsLS_Subdet
Definition: RecHitTask.h:109
virtual STDTYPE & get(HcalDetId const &)
Definition: ContainerXXX.h:197
hcaldqm::Container1D _cOccupancyvsieta_Subdet
Definition: RecHitTask.h:102
std::vector< int > getFEDList(HcalElectronicsMap const *)
Definition: Utilities.cc:83
T get() const
Definition: EventSetup.h:71
std::vector< int > getFEDuTCAList(HcalElectronicsMap const *)
Definition: Utilities.cc:121
void fill(HcalDetId const &) override
Definition: Container2D.cc:52
const HcalElectronicsMap * getHcalMapping() const
virtual bool filter(HcalDetId const &) const
Definition: HashFilter.cc:24
void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: RecHitTask.cc:867
bool _hfPreRecHitsAvailable
Definition: RecHitTask.h:43
virtual void initialize(FilterType ftype, hashfunctions::HashType htype, std::vector< uint32_t > const &)
Definition: HashFilter.cc:17
std::string _subsystem
Definition: DQModule.h:48
hcaldqm::ContainerProf1D _cTimingCutvsBX_SubdetPM
Definition: RecHitTask.h:92
edm::EDGetTokenT< HORecHitCollection > _tokHO
Definition: RecHitTask.h:45
std::vector< uint32_t > _vcdaqEids
Definition: DQTask.h:51
void _process(edm::Event const &, edm::EventSetup const &) override
Definition: RecHitTask.cc:474
edm::InputTag _tagHBHE
Definition: RecHitTask.h:39
hcaldqm::ContainerProf2D _cTimingCut_FEDuTCA
Definition: RecHitTask.h:84
virtual void initialize(hashfunctions::HashType, int debug=0)
Definition: ContainerXXX.h:81
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
Definition: Container2D.cc:558
hcaldqm::Container2D _cOccupancy_depth
Definition: RecHitTask.h:95
hcaldqm::ContainerProf2D _cDAAsymmetryMean_cut_depth
Definition: RecHitTask.h:119
hcaldqm::ContainerProf1D _cTimingCutvsiphi_SubdetPM
Definition: RecHitTask.h:91
hcaldqm::ContainerProf2D _cTimingCut_depth
Definition: RecHitTask.h:87
Readout chain identification for Hcal.
std::string const & instance() const
Definition: InputTag.h:37
hcaldqm::ContainerProf2D _cTimingCut_ElectronicsVME
Definition: RecHitTask.h:85
hcaldqm::filter::HashFilter _filter_VME
Definition: RecHitTask.h:63
hcaldqm::Container1D _cOccupancyCutvsieta_Subdet
Definition: RecHitTask.h:112
bool isFEDHF(HcalElectronicsId const &)
Definition: Utilities.cc:156
hcaldqm::Container1D _cOccupancyvsiphi_SubdetPM
Definition: RecHitTask.h:101
int const SLOT_uTCA_MIN
Definition: Constants.h:103
const_iterator begin() const
Definition: Run.h:45
bool _unknownIdsPresent
Definition: RecHitTask.h:124
ib
Definition: cuy.py:662
hcaldqm::Container1D _cDAAsymmetry_cut_SubdetPM
Definition: RecHitTask.h:120
hcaldqm::ContainerProf1D _cEnergyvsLS_SubdetPM
Definition: RecHitTask.h:74