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  _tagQIE11 = ps.getUntrackedParameter<edm::InputTag>("tagHE", edm::InputTag("hcalDigis"));
9  _tagHO = ps.getUntrackedParameter<edm::InputTag>("tagHO", edm::InputTag("hcalDigis"));
10  _tagQIE10 = ps.getUntrackedParameter<edm::InputTag>("tagHF", edm::InputTag("hcalDigis"));
11 
12  _tokQIE11 = consumes<QIE11DigiCollection>(_tagQIE11);
13  _tokHO = consumes<HODigiCollection>(_tagHO);
14  _tokQIE10 = consumes<QIE10DigiCollection>(_tagQIE10);
15 
16  _cutSumQ_HBHE = ps.getUntrackedParameter<double>("cutSumQ_HBHE", 20);
17  _cutSumQ_HO = ps.getUntrackedParameter<double>("cutSumQ_HO", 20);
18  _cutSumQ_HF = ps.getUntrackedParameter<double>("cutSumQ_HF", 20);
19  _thresh_unihf = ps.getUntrackedParameter<double>("thresh_unihf", 0.2);
20  _thresh_led = ps.getUntrackedParameter<double>("thresh_led", 20);
21 
22  _vflags.resize(nDigiFlag);
23  _vflags[fUni] = hcaldqm::flag::Flag("UniSlotHF");
24  _vflags[fDigiSize] = hcaldqm::flag::Flag("DigiSize");
25  _vflags[fNChsHF] = hcaldqm::flag::Flag("NChsHF");
26  _vflags[fUnknownIds] = hcaldqm::flag::Flag("UnknownIds");
27  _vflags[fLED] = hcaldqm::flag::Flag("LEDMisfire");
28  _vflags[fCapId] = hcaldqm::flag::Flag("BadCapId");
29 
30  _qie10InConditions = ps.getUntrackedParameter<bool>("qie10InConditions", true);
31 
32  // Get reference digi sizes. Convert from unsigned to signed int, because <digi>::size()/samples() return ints for some reason.
33  std::vector<uint32_t> vrefDigiSize = ps.getUntrackedParameter<std::vector<uint32_t>>("refDigiSize");
34  _refDigiSize[HcalBarrel] = (int)vrefDigiSize[0];
35  _refDigiSize[HcalEndcap] = (int)vrefDigiSize[1];
36  _refDigiSize[HcalOuter] = (int)vrefDigiSize[2];
37  _refDigiSize[HcalForward] = (int)vrefDigiSize[3];
38 
39  // (capid - BX) % 4 to 1
40  _capidmbx[HcalBarrel] = 1;
41  _capidmbx[HcalEndcap] = 1;
42  _capidmbx[HcalOuter] = 1;
44 
45  // LED calibration channels
46  std::vector<edm::ParameterSet> vLedCalibChannels =
47  ps.getParameter<std::vector<edm::ParameterSet>>("ledCalibrationChannels");
48  for (int i = 0; i <= 3; ++i) {
49  HcalSubdetector this_subdet = HcalEmpty;
50  switch (i) {
51  case 0:
52  this_subdet = HcalBarrel;
53  break;
54  case 1:
55  this_subdet = HcalEndcap;
56  break;
57  case 2:
58  this_subdet = HcalOuter;
59  break;
60  case 3:
61  this_subdet = HcalForward;
62  break;
63  default:
64  this_subdet = HcalEmpty;
65  break;
66  }
67  std::vector<int32_t> subdet_calib_ietas = vLedCalibChannels[i].getUntrackedParameter<std::vector<int32_t>>("ieta");
68  std::vector<int32_t> subdet_calib_iphis = vLedCalibChannels[i].getUntrackedParameter<std::vector<int32_t>>("iphi");
69  std::vector<int32_t> subdet_calib_depths =
70  vLedCalibChannels[i].getUntrackedParameter<std::vector<int32_t>>("depth");
71  for (unsigned int ichannel = 0; ichannel < subdet_calib_ietas.size(); ++ichannel) {
72  _ledCalibrationChannels[this_subdet].push_back(HcalDetId(
73  HcalOther, subdet_calib_ietas[ichannel], subdet_calib_iphis[ichannel], subdet_calib_depths[ichannel]));
74  }
75  }
76 }
77 
78 /* virtual */ void DigiTask::bookHistograms(DQMStore::IBooker& ib, edm::Run const& r, edm::EventSetup const& es) {
79  DQTask::bookHistograms(ib, r, es);
80 
81  // GET WHAT YOU NEED
83  es.get<HcalDbRecord>().get(dbs);
84  _emap = dbs->getHcalMapping();
85  std::vector<uint32_t> vVME;
86  std::vector<uint32_t> vuTCA;
87  vVME.push_back(
89  vuTCA.push_back(HcalElectronicsId(CRATE_uTCA_MIN, SLOT_uTCA_MIN, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
92 
93  // Filters for QIE8 vs QIE10/11
94  std::vector<uint32_t> vhashQIE8;
97 
98  std::vector<uint32_t> vhashQIE1011;
99  vhashQIE1011.push_back(
101  vhashQIE1011.push_back(
103  vhashQIE1011.push_back(
106 
107  std::vector<uint32_t> vhash_TDC2bit;
108  vhash_TDC2bit.push_back(
110  vhash_TDC2bit.push_back(
113 
114  std::vector<uint32_t> vhash_TDC6bit;
115  vhash_TDC6bit.push_back(
117  vhash_TDC6bit.push_back(
119  vhash_TDC6bit.push_back(
121  vhash_TDC6bit.push_back(
124 
125  // INITIALIZE FIRST
127  "ADC",
131  0);
133  "fC",
137  0);
139  "SumQ",
143  0);
145  "SumQ",
150  0);
152  "SumQvsLS",
156  0);
157 
159  "ADC",
163  0);
165  "fC",
169  0);
171  "SumQ",
175  0);
177  "SumQvsLS",
181  0);
182 
184  "TimingCut",
188  0);
190  "TimingCut",
195  0);
197  "TimingvsLS",
201  0);
202 
203  // Occupancy w/o a cut
205  "OccupancyvsLS",
209  0);
211  "Occupancy",
216  0);
217 
218  // Occupancy w/ a cut
220  "OccupancyCutvsLS",
224  0);
226  "OccupancyCut",
231  0);
232 
233  // Digi size
235  "DigiSize",
239  0);
241  "ADCvsTS",
246  0);
248  "ADCvsTS",
253  0);
254 
256  "LETDCTimevsADC",
262  "LETDCvsADC",
268  "LETDCvsADC",
274  "LETDCvsTS",
280  "LETDCvsTS",
285 
287  "LETDCTime",
292  "LETDCTime",
297  0);
298 
300  "BadTDCValues",
305  "BadTDCvsBX",
310  "BadTDCvsLS",
315  "BadTDCCount",
320  0);
321 
322  if (_ptype == fOnline || _ptype == fLocal) {
324  "Occupancy",
329  0);
331  "Occupancy",
336  0);
337  }
338 
339  // INITIALIZE HISTOGRAMS that are only for Online
340  if (_ptype == fOnline) {
341  // Charge sharing
343  "Q2Q12vsLS",
347  0);
349  "SumQvsBX",
353  0);
355  "SumQvsBX",
359  0);
361  "DigiSizevsLS",
365  0);
367  "TimingCutvsiphi",
371  0);
373  "TimingCutvsieta",
377  0);
379  "Occupancyvsiphi",
383  0);
385  "Occupancyvsieta",
389  0);
391  "OccupancyCutvsiphi",
395  0);
397  "OccupancyCutvsieta",
401  0);
403  "OccupancyCutvsLS",
407  0);
409  "OccupancyCutvsBX",
413  0);
414  // _cOccupancyCutvsSlotvsLS_HFPM.initialize(_name,
415  // "OccupancyCutvsSlotvsLS", hcaldqm::hashfunctions::fSubdetPM,
416  // new hcaldqm::quantity::LumiSection(_maxLS),
417  // new hcaldqm::quantity::ElectronicsQuantity(hcaldqm::quantity::fSlotuTCA),
418  // new hcaldqm::quantity::ValueQuantity(hcaldqm::quantity::fN),0);
420  "OccupancyCutvsiphivsLS",
425  0);
426  }
428  "CapID",
432 
433  for (int i = 0; i < 4; ++i) {
435  "CapID",
439  0);
441  "CapID",
445  0);
446  }
447 
448  if (_ptype != fOffline) { // hidefed2crate
449  std::vector<int> vFEDs = hcaldqm::utilities::getFEDList(_emap);
450  std::vector<int> vFEDsVME = hcaldqm::utilities::getFEDVMEList(_emap);
451  std::vector<int> vFEDsuTCA = hcaldqm::utilities::getFEDuTCAList(_emap);
452 
453  if (_ptype == fOnline) {
455  "CapID",
459  0);
460 
462  "CapID",
466  0);
467  }
468 
469  std::vector<uint32_t> vFEDHF;
470  vFEDHF.push_back(HcalElectronicsId(22, SLOT_uTCA_MIN, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
471  vFEDHF.push_back(HcalElectronicsId(22, SLOT_uTCA_MIN + 6, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
472  vFEDHF.push_back(HcalElectronicsId(29, SLOT_uTCA_MIN, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
473  vFEDHF.push_back(HcalElectronicsId(29, SLOT_uTCA_MIN + 6, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
474  vFEDHF.push_back(HcalElectronicsId(32, SLOT_uTCA_MIN, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
475  vFEDHF.push_back(HcalElectronicsId(32, SLOT_uTCA_MIN + 6, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
476 
477  // initialize filters
479 
480  // push the rawIds of each fed into the vector...
481  for (std::vector<int>::const_iterator it = vFEDsVME.begin(); it != vFEDsVME.end(); ++it)
482  _vhashFEDs.push_back(
484  for (std::vector<int>::const_iterator it = vFEDsuTCA.begin(); it != vFEDsuTCA.end(); ++it) {
485  std::pair<uint16_t, uint16_t> cspair = utilities::fed2crate(*it);
486  _vhashFEDs.push_back(HcalElectronicsId(cspair.first, cspair.second, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
487  }
488 
490  "ShapeCut",
494  0);
495 
497  "TimingCut",
502  0);
504  "TimingCut",
509  0);
511  "TimingCut",
513  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
516  0);
518  "TimingCut",
520  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
523  0);
525  "TimingvsLS",
529  0);
530 
532  "Occupancy",
537  0);
539  "Occupancy",
544  0);
546  "Occupancy",
548  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
551  0);
553  "Occupancy",
555  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
558  0);
559 
561  "OccupancyCut",
566  0);
568  "OccupancyCut",
573  0);
575  "OccupancyCut",
577  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
580  0);
582  "OccupancyCut",
584  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
587  0);
588 
590  "DigiSize",
594  0);
595 
596  if (_ptype == fOnline) {
598  "SummaryvsLS",
603  0);
605  "SummaryvsLS",
609  0);
610 
617  }
618  }
619  if (_ptype != fLocal) {
621  "LED_ADCvsBX",
626  0);
627 
629  "LED_CUCountvsLS",
633  0);
634  if (_ptype == fOnline) {
636  "LED_CUCountvsLSmod60",
640  0);
641  }
642  }
643 
644  // BOOK HISTOGRAMS
645  char cutstr[200];
646  sprintf(cutstr, "_SumQHBHE%dHO%dHF%d", int(_cutSumQ_HBHE), int(_cutSumQ_HO), int(_cutSumQ_HF));
647  char cutstr2[200];
648  sprintf(cutstr2, "_SumQHF%d", int(_cutSumQ_HF));
649 
662 
663  if (_ptype != fOffline) { // hidefed2crate
679  }
680 
684 
688 
696 
701 
703  if (_ptype == fOnline) {
704  _cCapid_BadvsFEDvsLS.book(ib, _subsystem, "BadvsLS");
705  _cCapid_BadvsFEDvsLSmod60.book(ib, _subsystem, "BadvsLSmod60");
706  }
707  for (int i = 0; i < 4; ++i) {
708  constexpr unsigned int kSize = 32;
709  char aux[kSize];
710  snprintf(aux, kSize, "%d_uTCA", i);
712 
713  snprintf(aux, kSize, "%d_VME", i);
715  }
716 
717  if (_ptype != fLocal) {
720  if (_ptype == fOnline) {
722  }
723  }
724 
725  // BOOK HISTOGRAMS that are only for Online
728 
729  if (_ptype == fOnline || _ptype == fLocal) {
732  }
733 
734  if (_ptype == fOnline) {
747  // _cOccupancyCutvsSlotvsLS_HFPM.book(ib, _emap, _filter_QIE1011, _subsystem);
751 
753  _xNChs.book(_emap);
755  _xUni.book(_emap);
758 
759  // just PER HF FED RECORD THE #CHANNELS
760  // ONLY WAY TO DO THAT AUTOMATICALLY AND W/O HARDCODING 1728
761  // or ANY OTHER VALUES LIKE 2592, 2192
762  std::vector<HcalGenericDetId> gids = _emap->allPrecisionId();
763  for (std::vector<HcalGenericDetId>::const_iterator it = gids.begin(); it != gids.end(); ++it) {
764  if (!it->isHcalDetId())
765  continue;
766  HcalDetId did(it->rawId());
767  if (_xQuality.exists(did)) {
768  HcalChannelStatus cs(it->rawId(), _xQuality.get(HcalDetId(*it)));
770  continue;
771  }
773  _xNChsNominal.get(eid)++; // he will know the nominal #channels per FED
774  }
775  }
776 
777  // MARK THESE HISTOGRAMS AS LUMI BASED FOR OFFLINE PROCESSING
778  if (_ptype == fOffline) {
780  //_cDigiSize_FED.setLumiFlag();
782  }
783 
784  // book Number of Events vs LS histogram
785  ib.setCurrentFolder(_subsystem + "/RunInfo");
786  meNumEvents1LS = ib.book1D("NumberOfEvents", "NumberOfEvents", 1, 0, 1);
788 
789  // book the flag for unknown ids and the online guy as well
790  ib.setCurrentFolder(_subsystem + "/" + _name);
791  meUnknownIds1LS = ib.book1D("UnknownIds", "UnknownIds", 1, 0, 1);
792  _unknownIdsPresent = false;
794 }
795 
797  DQTask::_resetMonitors(uf);
798 
799  switch (uf) {
800  case hcaldqm::f1LS:
801  _unknownIdsPresent = false;
802  break;
803  case hcaldqm::f50LS:
804  // ^^^ONLINE ONLY!
805  if (_ptype == fOnline)
807  // ^^^
808  break;
809  default:
810  break;
811  }
812 }
813 
814 /* virtual */ void DigiTask::_process(edm::Event const& e, edm::EventSetup const&) {
818 
819  if (!e.getByToken(_tokQIE11, c_QIE11))
820  _logger.dqmthrow("Collection QIE11DigiCollection isn't available" + _tagQIE11.label() + " " + _tagQIE11.instance());
821  if (!e.getByToken(_tokHO, c_ho))
822  _logger.dqmthrow("Collection HODigiCollection isn't available" + _tagHO.label() + " " + _tagHO.instance());
823  if (!e.getByToken(_tokQIE10, c_QIE10))
824  _logger.dqmthrow("Collection QIE10DigiCollection isn't available" + _tagQIE10.label() + " " + _tagQIE10.instance());
825 
826  // extract some info per event
827  int bx = e.bunchCrossing();
828  meNumEvents1LS->Fill(0.5); // just increment
829 
830  // To fill histograms outside of the loop, you need to determine if there were
831  // any valid det ids first
832  uint32_t rawidValid = 0;
833  uint32_t rawidHBValid = 0;
834  uint32_t rawidHEValid = 0;
835 
836  // HB collection
837  int numChs = 0;
838  int numChsCut = 0;
839  int numChsHE = 0;
840  int numChsCutHE = 0;
841 
842  // HB+HE QIE11 collection
843  for (QIE11DigiCollection::const_iterator it = c_QIE11->begin(); it != c_QIE11->end(); ++it) {
844  const QIE11DataFrame digi = static_cast<const QIE11DataFrame>(*it);
845 
846  // Explicit check on the DetIds present in the Collection
847  HcalDetId const& did = digi.detid();
848  if ((did.subdet() != HcalBarrel) && (did.subdet() != HcalEndcap)) {
849  // LED monitoring from calibration channels
850  if (_ptype != fLocal) {
851  if (did.subdet() == HcalOther) {
852  HcalOtherDetId hodid(digi.detid());
853  if (hodid.subdet() == HcalCalibration) {
854  // New method: use configurable list of channels
857  did) != _ledCalibrationChannels[HcalEndcap].end()) {
858  bool channelLEDSignalPresent = false;
859  for (int i = 0; i < digi.samples(); i++) {
860  _LED_ADCvsBX_Subdet.fill(HcalDetId(HcalEndcap, 16, 1, 1), bx, digi[i].adc());
861 
862  if (digi[i].adc() > _thresh_led) {
863  channelLEDSignalPresent = true;
864  }
865  }
866  if (channelLEDSignalPresent) {
868  if (_ptype == fOnline) {
870  }
871  }
872  }
873  }
874  }
875  }
876  continue;
877  }
878 
879  uint32_t rawid = _ehashmap.lookup(did);
880  if (rawid == 0) {
881  meUnknownIds1LS->Fill(1);
882  _unknownIdsPresent = true;
883  continue;
884  } else {
885  if (did.subdet() == HcalBarrel) {
886  rawidHBValid = did.rawId();
887  } else if (did.subdet() == HcalEndcap) {
888  rawidHEValid = did.rawId();
889  }
890  }
891  HcalElectronicsId const& eid(rawid);
892 
893  // filter out channels that are masked out
894  if (_xQuality.exists(did)) {
895  HcalChannelStatus cs(did.rawId(), _xQuality.get(did));
897  continue;
898  }
899 
900  // (capid - BX) % 4
901  if (_ptype == fOnline) {
902  short soi = -1;
903  for (int i = 0; i < digi.samples(); i++) {
904  if (digi[i].soi()) {
905  soi = i;
906  break;
907  }
908  }
909  short this_capidmbx = (digi[soi].capid() - bx) % 4;
910  if (this_capidmbx < 0) {
911  this_capidmbx += 4;
912  }
913  _cCapidMinusBXmod4_SubdetPM.fill(did, this_capidmbx);
914  bool good_capidmbx = (_capidmbx[did.subdet()] == this_capidmbx);
915  if (!good_capidmbx) {
916  _xBadCapid.get(eid)++;
919  }
920  if (eid.isVMEid()) {
921  _cCapidMinusBXmod4_CrateSlotVME[this_capidmbx].fill(eid);
922 
923  } else {
924  _cCapidMinusBXmod4_CrateSlotuTCA[this_capidmbx].fill(eid);
925  }
926  }
927 
928  CaloSamples digi_fC = hcaldqm::utilities::loadADC2fCDB<QIE11DataFrame>(_dbService, did, digi);
929  double sumQ = hcaldqm::utilities::sumQDB<QIE11DataFrame>(_dbService, digi_fC, did, digi, 0, digi.samples() - 1);
930 
931  _cSumQ_SubdetPM_QIE1011.fill(did, sumQ);
932  _cOccupancy_depth.fill(did);
933  if (_ptype == fOnline || _ptype == fLocal) {
934  _cOccupancy_Crate.fill(eid);
936  }
937  if (_ptype == fOnline) {
938  _cDigiSizevsLS_FED.fill(eid, _currentLS, digi.samples());
939  digi.samples() != _refDigiSize[did.subdet()] ? _xDigiSize.get(eid)++ : _xDigiSize.get(eid) += 0;
942  }
943  _cDigiSize_Crate.fill(eid, digi.samples());
944  if (_ptype != fOffline) { // hidefed2crate
945  _cDigiSize_FED.fill(eid, digi.samples());
946  if (eid.isVMEid()) {
949  } else {
952  /*
953  if (!digi.validate(0, digi.size()))
954  {
955  _cCapIdRots_depth.fill(did);
956  _cCapIdRots_FEDuTCA.fill(eid, 1);
957  }*/
958  }
959  }
960  for (int i = 0; i < digi.samples(); i++) {
961  double q = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE11DataFrame>(_dbService, digi_fC, did, digi, i);
962  _cADC_SubdetPM_QIE1011.fill(did, digi[i].adc());
963  _cfC_SubdetPM_QIE1011.fill(did, q);
964 
965  if (did.subdet() == HcalBarrel) {
966  _cLETDCvsADC_2bit_SubdetPM.fill(did, digi[i].adc(), digi[i].tdc());
967  _cLETDCvsTS_2bit_SubdetPM.fill(did, (int)i, digi[i].tdc());
968 
969  if (digi[i].tdc() < 2) {
970  double time = i * 25. + (digi[i].tdc() * 12.5);
971  _cLETDCTime_SubdetPM.fill(did, time);
972  _cLETDCTime_depth.fill(did, time);
973  _cLETDCTimevsADC_SubdetPM.fill(did, digi[i].adc(), time);
974  }
975  } else if (did.subdet() == HcalEndcap) {
976  _cLETDCvsADC_6bit_SubdetPM.fill(did, digi[i].adc(), digi[i].tdc());
977  _cLETDCvsTS_6bit_SubdetPM.fill(did, (int)i, digi[i].tdc());
978  if (digi[i].tdc() < 50) {
979  double time = i * 25. + (digi[i].tdc() / 2.);
980  _cLETDCTime_SubdetPM.fill(did, time);
981  _cLETDCTime_depth.fill(did, time);
982  _cLETDCTimevsADC_SubdetPM.fill(did, digi[i].adc(), time);
983  }
984  // Bad TDC values: 50-61 should never happen in QIE10 or QIE11, but we saw some in 2017 data.
985  if ((50 <= digi[i].tdc()) && (digi[i].tdc() <= 61)) {
986  _cBadTDCValues_SubdetPM.fill(did, digi[i].tdc());
987  _cBadTDCvsBX_SubdetPM.fill(did, bx);
990  }
991  }
992  if (_ptype != fOffline) { // hidefed2crate
993  _cADCvsTS_SubdetPM_QIE1011.fill(did, i, digi[i].adc());
994  if (sumQ > _cutSumQ_HBHE) {
995  _cShapeCut_FED.fill(eid, i, q);
996  }
997  }
998  }
999 
1000  if (sumQ > _cutSumQ_HBHE) {
1001  //double timing = hcaldqm::utilities::aveTS_v10<QIE11DataFrame>(digi, 2.5, 0,digi.samples()-1);
1002  double timing =
1003  hcaldqm::utilities::aveTSDB<QIE11DataFrame>(_dbService, digi_fC, did, digi, 0, digi.samples() - 1);
1004  _cTimingCut_SubdetPM.fill(did, timing);
1005  _cTimingCut_depth.fill(did, timing);
1008  if (_ptype != fOffline) { // hidefed2crate
1009  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
1010  }
1011  _cSumQ_depth.fill(did, sumQ);
1013  if (_ptype == fOnline) {
1014  _cSumQvsBX_SubdetPM_QIE1011.fill(did, bx, sumQ);
1015  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
1016  _cTimingCutvsieta_Subdet.fill(did, timing);
1020  }
1021  if (_ptype != fOffline) { // hidefed2crate
1022  if (eid.isVMEid()) {
1023  _cTimingCut_FEDVME.fill(eid, timing);
1024  _cTimingCut_ElectronicsVME.fill(eid, timing);
1027  } else {
1028  _cTimingCut_FEDuTCA.fill(eid, timing);
1029  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
1032  }
1033  }
1034  did.subdet() == HcalBarrel ? numChsCut++ : numChsCutHE++;
1035  }
1036  did.subdet() == HcalBarrel ? numChs++ : numChsHE++;
1037  }
1038 
1039  if (rawidHBValid != 0 && rawidHEValid != 0) {
1040  _cOccupancyvsLS_Subdet.fill(HcalDetId(rawidHBValid), _currentLS, numChs);
1041  _cOccupancyvsLS_Subdet.fill(HcalDetId(rawidHEValid), _currentLS, numChsHE);
1042  // ONLINE ONLY!
1043  if (_ptype == fOnline) {
1044  _cOccupancyCutvsLS_Subdet.fill(HcalDetId(rawidHBValid), _currentLS, numChsCut);
1045  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidHBValid), bx, numChsCut);
1046  _cOccupancyCutvsLS_Subdet.fill(HcalDetId(rawidHEValid), _currentLS, numChsCutHE);
1047  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidHEValid), bx, numChsCutHE);
1048  }
1049  // ^^^ONLINE ONLY!
1050  }
1051  numChs = 0;
1052  numChsCut = 0;
1053 
1054  // reset
1055  rawidValid = 0;
1056 
1057  // HO collection
1058  for (HODigiCollection::const_iterator it = c_ho->begin(); it != c_ho->end(); ++it) {
1059  // Explicit check on the DetIds present in the Collection
1060  HcalDetId const& did = it->id();
1061  if (did.subdet() != HcalOuter) {
1062  continue;
1063  }
1064  uint32_t rawid = _ehashmap.lookup(did);
1065  if (rawid == 0) {
1066  meUnknownIds1LS->Fill(1);
1067  _unknownIdsPresent = true;
1068  continue;
1069  } else {
1070  rawidValid = did.rawId();
1071  }
1072  HcalElectronicsId const& eid(rawid);
1073 
1074  // filter out channels that are masked out
1075  if (_xQuality.exists(did)) {
1076  HcalChannelStatus cs(did.rawId(), _xQuality.get(did));
1078  continue;
1079  }
1080 
1081  if (_ptype == fOnline) {
1082  short this_capidmbx = (it->sample(it->presamples()).capid() - bx) % 4;
1083  if (this_capidmbx < 0) {
1084  this_capidmbx += 4;
1085  }
1086  _cCapidMinusBXmod4_SubdetPM.fill(did, this_capidmbx);
1087  bool good_capidmbx = (_capidmbx[did.subdet()] == this_capidmbx);
1088  if (!good_capidmbx) {
1089  _xBadCapid.get(eid)++;
1092  }
1093  if (eid.isVMEid()) {
1094  _cCapidMinusBXmod4_CrateSlotVME[this_capidmbx].fill(eid);
1095 
1096  } else {
1097  _cCapidMinusBXmod4_CrateSlotuTCA[this_capidmbx].fill(eid);
1098  }
1099  }
1100 
1101  //double sumQ = hcaldqm::utilities::sumQ<HODataFrame>(*it, 8.5, 0, it->size()-1);
1102  CaloSamples digi_fC = hcaldqm::utilities::loadADC2fCDB<HODataFrame>(_dbService, did, *it);
1103  double sumQ = hcaldqm::utilities::sumQDB<HODataFrame>(_dbService, digi_fC, did, *it, 0, it->size() - 1);
1104 
1105  _cSumQ_SubdetPM.fill(did, sumQ);
1106  _cOccupancy_depth.fill(did);
1107  if (_ptype == fOnline) {
1108  _cDigiSizevsLS_FED.fill(eid, _currentLS, it->size());
1109  it->size() != _refDigiSize[did.subdet()] ? _xDigiSize.get(eid)++ : _xDigiSize.get(eid) += 0;
1112  }
1113  _cDigiSize_Crate.fill(eid, it->size());
1114  if (_ptype != fOffline) { // hidefed2crate
1115  _cDigiSize_FED.fill(eid, it->size());
1116  if (eid.isVMEid()) {
1117  _cOccupancy_FEDVME.fill(eid);
1119  /*
1120  if (!it->validate(0, it->size()))
1121  _cCapIdRots_FEDVME.fill(eid, 1);
1122  */
1123  } else {
1126  /*
1127  if (!it->validate(0, it->size()))
1128  _cCapIdRots_FEDuTCA.fill(eid, 1);*/
1129  }
1130  }
1131 
1132  for (int i = 0; i < it->size(); i++) {
1133  _cADC_SubdetPM.fill(did, it->sample(i).adc());
1134  _cfC_SubdetPM.fill(did, it->sample(i).nominal_fC());
1135  if (_ptype != fOffline) { // hidefed2crate
1136  _cADCvsTS_SubdetPM.fill(did, i, it->sample(i).adc());
1137  if (sumQ > _cutSumQ_HO)
1138  _cShapeCut_FED.fill(eid, i, it->sample(i).nominal_fC());
1139  }
1140  }
1141 
1142  if (sumQ > _cutSumQ_HO) {
1143  //double timing = hcaldqm::utilities::aveTS<HODataFrame>(*it, 8.5, 0,it->size()-1);
1144  double timing = hcaldqm::utilities::aveTSDB<HODataFrame>(_dbService, digi_fC, did, *it, 0, it->size() - 1);
1145  _cSumQ_depth.fill(did, sumQ);
1146  _cSumQvsLS_SubdetPM.fill(did, _currentLS, sumQ);
1148  _cTimingCut_SubdetPM.fill(did, timing);
1149  _cTimingCut_depth.fill(did, timing);
1151  if (_ptype != fOffline) { // hidefed2crate
1152  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
1153  }
1154  if (_ptype == fOnline) {
1155  _cSumQvsBX_SubdetPM.fill(did, bx, sumQ);
1156  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
1157  _cTimingCutvsieta_Subdet.fill(did, timing);
1161  }
1162  if (_ptype != fOffline) { // hidefed2crate
1163  if (eid.isVMEid()) {
1164  _cTimingCut_FEDVME.fill(eid, timing);
1165  _cTimingCut_ElectronicsVME.fill(eid, timing);
1168  } else {
1169  _cTimingCut_FEDuTCA.fill(eid, timing);
1170  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
1173  }
1174  }
1175  numChsCut++;
1176  }
1177  numChs++;
1178  }
1179 
1180  if (rawidValid != 0) {
1181  _cOccupancyvsLS_Subdet.fill(HcalDetId(rawidValid), _currentLS, numChs);
1182 
1183  if (_ptype == fOnline) {
1184  _cOccupancyCutvsLS_Subdet.fill(HcalDetId(rawidValid), _currentLS, numChsCut);
1185  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidValid), bx, numChsCut);
1186  }
1187  }
1188  numChs = 0;
1189  numChsCut = 0;
1190 
1191  // reset
1192  rawidValid = 0;
1193 
1194  // HF collection
1195  if (_qie10InConditions) {
1196  for (QIE10DigiCollection::const_iterator it = c_QIE10->begin(); it != c_QIE10->end(); ++it) {
1197  const QIE10DataFrame digi = static_cast<const QIE10DataFrame>(*it);
1198 
1199  // Explicit check on the DetIds present in the Collection
1200  HcalDetId const& did = digi.detid();
1201  if (did.subdet() != HcalForward) {
1202  // LED monitoring from calibration channels
1203  if (_ptype != fLocal) {
1204  if (did.subdet() == HcalOther) {
1205  HcalOtherDetId hodid(digi.detid());
1206  if (hodid.subdet() == HcalCalibration) {
1207  // New method: use configurable list of channels
1210  did) != _ledCalibrationChannels[HcalForward].end()) {
1211  bool channelLEDSignalPresent = false;
1212  for (int i = 0; i < digi.samples(); i++) {
1213  _LED_ADCvsBX_Subdet.fill(HcalDetId(HcalForward, 16, 1, 1), bx, digi[i].adc());
1214 
1215  if (digi[i].adc() > _thresh_led) {
1216  channelLEDSignalPresent = true;
1217  }
1218  }
1219  if (channelLEDSignalPresent) {
1221  if (_ptype == fOnline) {
1223  }
1224  }
1225  }
1226  }
1227  }
1228  }
1229  continue;
1230  }
1231 
1232  uint32_t rawid = _ehashmap.lookup(did);
1233  if (rawid == 0) {
1234  meUnknownIds1LS->Fill(1);
1235  _unknownIdsPresent = true;
1236  continue;
1237  } else {
1238  rawidValid = did.rawId();
1239  }
1240  HcalElectronicsId const& eid(rawid);
1241 
1242  // filter out channels that are masked out
1243  if (_xQuality.exists(did)) {
1244  HcalChannelStatus cs(did.rawId(), _xQuality.get(did));
1246  continue;
1247  }
1248 
1249  // (capid - BX) % 4
1250  if (_ptype == fOnline) {
1251  short soi = -1;
1252  for (int i = 0; i < digi.samples(); i++) {
1253  if (digi[i].soi()) {
1254  soi = i;
1255  break;
1256  }
1257  }
1258  short this_capidmbx = (digi[soi].capid() - bx) % 4;
1259  if (this_capidmbx < 0) {
1260  this_capidmbx += 4;
1261  }
1262  _cCapidMinusBXmod4_SubdetPM.fill(did, this_capidmbx);
1263  bool good_capidmbx = (_capidmbx[did.subdet()] == this_capidmbx);
1264  if (!good_capidmbx) {
1265  _xBadCapid.get(eid)++;
1268  }
1269  if (eid.isVMEid()) {
1270  _cCapidMinusBXmod4_CrateSlotVME[this_capidmbx].fill(eid);
1271 
1272  } else {
1273  _cCapidMinusBXmod4_CrateSlotuTCA[this_capidmbx].fill(eid);
1274  }
1275  }
1276 
1277  CaloSamples digi_fC = hcaldqm::utilities::loadADC2fCDB<QIE10DataFrame>(_dbService, did, digi);
1278  double sumQ = hcaldqm::utilities::sumQDB<QIE10DataFrame>(_dbService, digi_fC, did, digi, 0, digi.samples() - 1);
1279  //double sumQ = hcaldqm::utilities::sumQ_v10<QIE10DataFrame>(digi, 2.5, 0, digi.samples()-1);
1280 
1281  //if (!_filter_QIE1011.filter(did)) {
1282  _cSumQ_SubdetPM_QIE1011.fill(did, sumQ);
1283  //}
1284 
1285  _cOccupancy_depth.fill(did);
1286  if (_ptype == fOnline) {
1287  _xNChs.get(eid)++;
1288  _cDigiSizevsLS_FED.fill(eid, _currentLS, digi.samples());
1289  digi.samples() != _refDigiSize[did.subdet()] ? _xDigiSize.get(eid)++ : _xDigiSize.get(eid) += 0;
1292  }
1293  _cDigiSize_Crate.fill(eid, digi.samples());
1294  if (_ptype != fOffline) { // hidefed2crate
1295  _cDigiSize_FED.fill(eid, digi.samples());
1296  if (eid.isVMEid()) {
1297  _cOccupancy_FEDVME.fill(eid);
1299  /*
1300  if (!it->validate(0, it->size()))
1301  _cCapIdRots_FEDVME.fill(eid, 1);*/
1302  } else {
1305  /*
1306  if (!it->validate(0, it->size()))
1307  _cCapIdRots_FEDuTCA.fill(eid, 1);*/
1308  }
1309  }
1310 
1311  for (int i = 0; i < digi.samples(); i++) {
1312  double q = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE10DataFrame>(_dbService, digi_fC, did, digi, i);
1313  //if (!_filter_QIE1011.filter(did)) {
1314  _cADC_SubdetPM_QIE1011.fill(did, digi[i].adc());
1315  _cfC_SubdetPM_QIE1011.fill(did, q);
1316  _cLETDCvsADC_6bit_SubdetPM.fill(did, digi[i].adc(), digi[i].le_tdc());
1317  _cLETDCvsTS_6bit_SubdetPM.fill(did, (int)i, digi[i].le_tdc());
1318  if (digi[i].le_tdc() < 50) {
1319  double time = i * 25. + (digi[i].le_tdc() / 2.);
1320  _cLETDCTime_SubdetPM.fill(did, time);
1321  _cLETDCTime_depth.fill(did, time);
1322  _cLETDCTimevsADC_SubdetPM.fill(did, digi[i].adc(), time);
1323  }
1324 
1325  // Bad TDC values: 50-61 should never happen in QIE10 or QIE11, but we are seeing some in 2017 data.
1326  if ((50 <= digi[i].le_tdc()) && (digi[i].le_tdc() <= 61)) {
1327  _cBadTDCValues_SubdetPM.fill(did, digi[i].le_tdc());
1328  _cBadTDCvsBX_SubdetPM.fill(did, bx);
1331  }
1332  if (_ptype != fOffline) { // hidefed2crate
1333  _cADCvsTS_SubdetPM_QIE1011.fill(did, (int)i, digi[i].adc());
1334  if (sumQ > _cutSumQ_HF)
1335  _cShapeCut_FED.fill(eid, (int)i, q);
1336  }
1337  //}
1338  }
1339 
1340  if (sumQ > _cutSumQ_HF) {
1341  double timing = hcaldqm::utilities::aveTS_v10<QIE10DataFrame>(digi, 2.5, 0, digi.samples() - 1);
1342  double q1 = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE10DataFrame>(_dbService, digi_fC, did, digi, 1);
1343  double q2 = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE10DataFrame>(_dbService, digi_fC, did, digi, 2);
1344  double q2q12 = q2 / (q1 + q2);
1345  _cSumQ_depth.fill(did, sumQ);
1346  //if (!_filter_QIE1011.filter(did)) {
1348  //}
1349  _cTimingCut_SubdetPM.fill(did, timing);
1350  _cTimingCut_depth.fill(did, timing);
1352  if (_ptype == fOnline) {
1353  //if (!_filter_QIE1011.filter(did)) {
1354  _cSumQvsBX_SubdetPM_QIE1011.fill(did, bx, sumQ);
1355  //}
1356  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
1357  _cTimingCutvsieta_Subdet.fill(did, timing);
1361  // _cOccupancyCutvsSlotvsLS_HFPM.fill(did, _currentLS);
1362  _xUniHF.get(eid)++;
1363  }
1364  if (_ptype != fOffline) { // hidefed2crate
1365  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
1366  }
1368  if (!eid.isVMEid())
1369  if (_ptype == fOnline)
1370  _cQ2Q12CutvsLS_FEDHF.fill(eid, _currentLS, q2q12);
1371  if (_ptype != fOffline) { // hidefed2crate
1372  if (eid.isVMEid()) {
1373  _cTimingCut_FEDVME.fill(eid, timing);
1374  _cTimingCut_ElectronicsVME.fill(eid, timing);
1377  } else {
1378  _cTimingCut_FEDuTCA.fill(eid, timing);
1379  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
1382  }
1383  }
1384  numChsCut++;
1385  }
1386  numChs++;
1387  }
1388  }
1389 
1390  if (rawidValid != 0) {
1391  _cOccupancyvsLS_Subdet.fill(HcalDetId(rawidValid), _currentLS, numChs);
1392 
1393  if (_ptype == fOnline) {
1394  _cOccupancyCutvsLS_Subdet.fill(HcalDetId(rawidValid), _currentLS, numChsCut);
1395  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidValid), bx, numChsCut);
1396  }
1397  }
1398 }
1399 
1401  DQTask::dqmBeginLuminosityBlock(lb, es);
1402  if (_ptype == fOnline) {
1403  // Reset the bin for _cCapid_BadvsFEDvsLSmod60
1404  for (std::vector<uint32_t>::const_iterator it = _vhashFEDs.begin(); it != _vhashFEDs.end(); ++it) {
1407  }
1408  }
1409 }
1410 
1412  if (_ptype != fOnline)
1413  return;
1414 
1415  for (uintCompactMap::const_iterator it = _xUniHF.begin(); it != _xUniHF.end(); ++it) {
1416  uint32_t hash1 = it->first;
1417  HcalElectronicsId eid1(hash1);
1418  double x1 = it->second;
1419 
1420  for (uintCompactMap::const_iterator jt = _xUniHF.begin(); jt != _xUniHF.end(); ++jt) {
1421  if (jt == it)
1422  continue;
1423  double x2 = jt->second;
1424  if (x2 == 0)
1425  continue;
1426  if (x1 / x2 < _thresh_unihf)
1427  _xUni.get(eid1)++;
1428  }
1429  }
1430 
1431  if (_ptype != fOffline) { // hidefed2crate
1432  for (std::vector<uint32_t>::const_iterator it = _vhashFEDs.begin(); it != _vhashFEDs.end(); ++it) {
1433  hcaldqm::flag::Flag fSum("DIGI");
1435 
1436  std::vector<uint32_t>::const_iterator cit = std::find(_vcdaqEids.begin(), _vcdaqEids.end(), *it);
1437  if (cit == _vcdaqEids.end()) {
1438  // not @cDAQ
1439  for (uint32_t iflag = 0; iflag < _vflags.size(); iflag++)
1442  continue;
1443  }
1444 
1445  // FED is @cDAQ
1447  if (_xDigiSize.get(eid) > 0)
1449  else
1451 
1452  if (_xBadCapid.get(eid) > 0) {
1454  } else {
1456  }
1457 
1458  if (hcaldqm::utilities::isFEDHF(eid)) {
1459  double fr = double(_xNChs.get(eid)) / double(_xNChsNominal.get(eid) * _evsPerLS);
1460  if (_runkeyVal == 0 || _runkeyVal == 4) {
1461  // only for pp or hi
1462  if (_xUni.get(eid) > 0)
1464  else
1465  _vflags[fUni]._state = hcaldqm::flag::fGOOD;
1466  }
1467  if (fr < 0.95)
1469  else if (fr < 1.0)
1471  else
1473  }
1474  }
1475  if (_unknownIdsPresent)
1477  else
1479 
1480  // LED misfires
1481  if (_ptype != fLocal) {
1482  if (hcaldqm::utilities::isFEDHBHE(eid)) {
1485 
1488  _vflags[fLED]._state = hcaldqm::flag::fBAD;
1489  } else {
1490  _vflags[fLED]._state = hcaldqm::flag::fGOOD;
1491  }
1492  } else if (hcaldqm::utilities::isFEDHF(eid)) {
1495  _vflags[fLED]._state = hcaldqm::flag::fBAD;
1496  } else {
1497  _vflags[fLED]._state = hcaldqm::flag::fGOOD;
1498  }
1499  } else if (hcaldqm::utilities::isFEDHO(eid)) {
1502  _vflags[fLED]._state = hcaldqm::flag::fBAD;
1503  } else {
1504  _vflags[fLED]._state = hcaldqm::flag::fGOOD;
1505  }
1506  }
1507  }
1508 
1509  int iflag = 0;
1510  for (std::vector<hcaldqm::flag::Flag>::iterator ft = _vflags.begin(); ft != _vflags.end(); ++ft) {
1511  _cSummaryvsLS_FED.setBinContent(eid, _currentLS, iflag, int(ft->_state));
1512  fSum += (*ft);
1513  iflag++;
1514 
1515  // reset!
1516  ft->reset();
1517  }
1519  }
1520  }
1521 
1522  _xDigiSize.reset();
1523  _xUniHF.reset();
1524  _xUni.reset();
1525  _xNChs.reset();
1526  _xBadCapid.reset();
1527 
1528  // in the end always do the DQTask::endLumi
1529  DQTask::dqmEndLuminosityBlock(lb, es);
1530 }
1531 
int samples() const
total number of samples in the digi
void initialize(std::string const &folder, hashfunctions::HashType, quantity::Quantity *, quantity::Quantity *, int debug=0) override
DetId detid() const
Get the detector id.
hcaldqm::ContainerProf1D _cTimingCutvsiphi_SubdetPM
Definition: DigiTask.h:105
constexpr uint32_t rawId() const
void _process(edm::Event const &, edm::EventSetup const &) override
Definition: DigiTask.cc:814
hcaldqm::ContainerXXX< uint32_t > _xBadCapid
Definition: DigiTask.h:149
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
Definition: DQMStore.cc:239
T getParameter(std::string const &) const
bool _qie10InConditions
Definition: DigiTask.h:186
T getUntrackedParameter(std::string const &, T const &) const
double _thresh_led
Definition: DigiTask.h:191
MonitorElement * meNumEvents1LS
Definition: DigiTask.h:179
hcaldqm::Container1D _LED_CUCountvsLSmod60_Subdet
Definition: DigiTask.h:195
edm::InputTag _tagQIE10
Definition: DigiTask.h:44
hcaldqm::Container1D _cADC_SubdetPM
Definition: DigiTask.h:76
hcaldqm::Container1D _cADC_SubdetPM_QIE1011
Definition: DigiTask.h:84
hcaldqm::Container1D _LED_CUCountvsLS_Subdet
Definition: DigiTask.h:194
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::Container1D _cOccupancyCutvsieta_Subdet
Definition: DigiTask.h:132
hcaldqm::Container2D _cLETDCvsADC_2bit_SubdetPM
Definition: DigiTask.h:152
hcaldqm::ContainerProf1D _cSumQvsBX_SubdetPM
Definition: DigiTask.h:81
virtual bool exists(HcalDetId const &)
Definition: ContainerXXX.h:212
int const CRATE_VME_MIN
Definition: Constants.h:93
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:138
void fill(HcalDetId const &) override
edm::InputTag _tagHO
Definition: DigiTask.h:43
std::map< HcalSubdetector, int > _refDigiSize
Definition: DigiTask.h:59
hcaldqm::Container2D _cADCvsTS_SubdetPM
Definition: DigiTask.h:92
std::pair< uint16_t, uint16_t > fed2crate(int fed)
Definition: Utilities.cc:10
hcaldqm::ContainerProf1D _cQ2Q12CutvsLS_FEDHF
Definition: DigiTask.h:109
MonitorElement * meUnknownIds1LS
Definition: DigiTask.h:180
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
void initialize(HcalElectronicsMap const *, ElectronicsMapType etype=fHcalElectronicsMap)
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:418
unique_ptr< ClusterSequence > cs
hcaldqm::Container2D _cLETDCTimevsADC_SubdetPM
Definition: DigiTask.h:158
double _cutSumQ_HO
Definition: DigiTask.h:49
virtual CompactMap::const_iterator begin()
Definition: ContainerXXX.h:69
double _thresh_unihf
Definition: DigiTask.h:50
UpdateFreq
Definition: DQTask.h:16
State _state
Definition: Flag.h:62
std::map< HcalSubdetector, short > _capidmbx
Definition: DigiTask.h:188
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
std::vector< T >::const_iterator const_iterator
void setLumiFlag()
this ME is meant to be stored for each luminosity section
hcaldqm::Container2D _cLETDCvsTS_2bit_SubdetPM
Definition: DigiTask.h:154
int bunchCrossing() const
Definition: EventBase.h:64
hcaldqm::ContainerSingle2D _cCapidMinusBXmod4_CrateSlotuTCA[4]
Definition: DigiTask.h:172
edm::EDGetTokenT< QIE10DigiCollection > _tokQIE10
Definition: DigiTask.h:47
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:118
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
hcaldqm::ContainerProf2D _cSumQ_depth
Definition: DigiTask.h:79
edm::EDGetTokenT< HODigiCollection > _tokHO
Definition: DigiTask.h:46
hcaldqm::Container1D _cOccupancyCutvsiphi_SubdetPM
Definition: DigiTask.h:131
const_iterator begin() const
virtual void reset()
Definition: ContainerXXX.h:292
hcaldqm::ContainerProf1D _cSumQvsLS_SubdetPM_QIE1011
Definition: DigiTask.h:87
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
hcaldqm::ContainerSingle2D _cSummaryvsLS
Definition: DigiTask.h:184
hcaldqm::ContainerProf2D _cTimingCut_FEDVME
Definition: DigiTask.h:98
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: DigiTask.cc:78
int const FIBER_VME_MIN
Definition: Constants.h:123
hcaldqm::Container2D _cOccupancyCutvsiphivsLS_SubdetPM
Definition: DigiTask.h:134
hcaldqm::ContainerXXX< uint32_t > _xDigiSize
Definition: DigiTask.h:145
hcaldqm::ContainerProf2D _cTimingCut_FEDuTCA
Definition: DigiTask.h:99
double q2[4]
Definition: TauolaWrapper.h:88
hcaldqm::Container1D _cBadTDCvsLS_SubdetPM
Definition: DigiTask.h:163
int const FIBERCH_MIN
Definition: Constants.h:132
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
std::vector< int > getFEDVMEList(HcalElectronicsMap const *)
Definition: Utilities.cc:101
hcaldqm::filter::HashFilter _filter_VME
Definition: DigiTask.h:66
void Fill(long long x)
virtual CompactMap::const_iterator end()
Definition: ContainerXXX.h:70
ProcessingType _ptype
Definition: DQModule.h:43
virtual void fill(uint32_t)
Definition: Container1D.cc:73
virtual void reset()
Definition: Container1D.cc:60
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
hcaldqm::Container2D _cLETDCvsADC_6bit_SubdetPM
Definition: DigiTask.h:153
void dqmEndLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: DigiTask.cc:1411
void reset()
Definition: Flag.h:59
hcaldqm::Container2D _cOccupancy_CrateSlot
Definition: DigiTask.h:118
virtual void setBinContent(int, int, int)
constexpr bool isVMEid() const
void dqmthrow(std::string const &msg) const
Definition: Logger.h:12
ContainerXXX< uint32_t > _xQuality
Definition: DQTask.h:48
hcaldqm::ContainerSingle2D _cCapid_BadvsFEDvsLS
Definition: DigiTask.h:174
int const FED_VME_MIN
Definition: Constants.h:80
hcaldqm::Container2D _cADCvsTS_SubdetPM_QIE1011
Definition: DigiTask.h:93
hcaldqm::Container2D _cOccupancyCut_ElectronicsVME
Definition: DigiTask.h:128
hcaldqm::Container1D _cDigiSize_Crate
Definition: DigiTask.h:142
hcaldqm::Container1D _cShapeCut_FED
Definition: DigiTask.h:91
hcaldqm::Container2D _cOccupancyCut_depth
Definition: DigiTask.h:130
hcaldqm::ContainerProf1D _cOccupancyCutvsBX_Subdet
Definition: DigiTask.h:139
double _cutSumQ_HF
Definition: DigiTask.h:49
HcalSubdetector
Definition: HcalAssistant.h:31
edm::EDGetTokenT< QIE11DigiCollection > _tokQIE11
Definition: DigiTask.h:45
int const FIBER_uTCA_MIN1
Definition: Constants.h:126
hcaldqm::Container1D _cfC_SubdetPM_QIE1011
Definition: DigiTask.h:85
double _cutSumQ_HBHE
Definition: DigiTask.h:49
std::map< HcalSubdetector, std::vector< HcalDetId > > _ledCalibrationChannels
Definition: DigiTask.h:192
hash_function_did const hash_did[nHashType_did]
hcaldqm::ContainerProf2D _cTimingCut_depth
Definition: DigiTask.h:104
DetId detid() const
Get the detector id.
std::vector< HcalGenericDetId > allPrecisionId() const
Logger _logger
Definition: DQModule.h:54
hcaldqm::Container1D _cBadTDCValues_SubdetPM
Definition: DigiTask.h:161
#define end
Definition: vmac.h:39
hcaldqm::Container2D _cOccupancy_FEDVME
Definition: DigiTask.h:113
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)
hcaldqm::ContainerProf1D _cTimingCutvsLS_SubdetPM
Definition: DigiTask.h:103
hcaldqm::Container2D _cOccupancyCut_FEDVME
Definition: DigiTask.h:126
hcaldqm::filter::HashFilter _filter_TDC2bit
Definition: DigiTask.h:71
hcaldqm::ContainerProf1D _cSumQvsBX_SubdetPM_QIE1011
Definition: DigiTask.h:88
hcaldqm::ContainerSingle2D _cCapidMinusBXmod4_CrateSlotVME[4]
Definition: DigiTask.h:173
uint32_t hash_Subdet(HcalDetId const &)
hcaldqm::Container2D _cOccupancy_depth
Definition: DigiTask.h:119
std::string _name
Definition: DQModule.h:41
HcalElectronicsMap const * _emap
Definition: DQTask.h:59
hcaldqm::Container2D _cSummaryvsLS_FED
Definition: DigiTask.h:183
hcaldqm::filter::HashFilter _filter_FEDHF
Definition: DigiTask.h:68
int const CRATE_uTCA_MIN
Definition: Constants.h:98
const_iterator end() const
DigiTask(edm::ParameterSet const &)
Definition: DigiTask.cc:7
hcaldqm::ContainerProf1D _cOccupancyvsLS_Subdet
Definition: DigiTask.h:137
void _resetMonitors(hcaldqm::UpdateFreq) override
Definition: DigiTask.cc:796
hcaldqm::ContainerProf1D _cSumQvsLS_SubdetPM
Definition: DigiTask.h:80
hcaldqm::ContainerXXX< uint32_t > _xUni
Definition: DigiTask.h:146
hcaldqm::ContainerProf1D _cTimingCutvsLS_FED
Definition: DigiTask.h:102
hcaldqm::Container2D _cOccupancyCut_FEDuTCA
Definition: DigiTask.h:127
hcaldqm::Container2D _cOccupancy_ElectronicsVME
Definition: DigiTask.h:115
bool isFEDHBHE(HcalElectronicsId const &)
Definition: Utilities.cc:142
virtual void book(HcalElectronicsMap const *)
Definition: ContainerXXX.h:87
int size() const
get the size
Definition: CaloSamples.h:24
hcaldqm::Container1D _cDigiSize_FED
Definition: DigiTask.h:143
hcaldqm::filter::HashFilter _filter_QIE8
Definition: DigiTask.h:70
double q1[4]
Definition: TauolaWrapper.h:87
virtual void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="")
Definition: Container1D.cc:592
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 _LED_ADCvsBX_Subdet
Definition: DigiTask.h:196
hcaldqm::ContainerXXX< uint32_t > _xNChsNominal
Definition: DigiTask.h:148
hcaldqm::Container1D _cSumQ_SubdetPM
Definition: DigiTask.h:78
hcaldqm::Container1D _cOccupancyvsiphi_SubdetPM
Definition: DigiTask.h:120
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
hcaldqm::ContainerProf1D _cTimingCutvsieta_Subdet
Definition: DigiTask.h:106
hcaldqm::ContainerSingle2D _cCapid_BadvsFEDvsLSmod60
Definition: DigiTask.h:176
hcaldqm::Container1D _cLETDCTime_SubdetPM
Definition: DigiTask.h:156
hcaldqm::electronicsmap::ElectronicsMap _dhashmap
Definition: DigiTask.h:63
void initialize(std::string const &folder, hashfunctions::HashType, quantity::Quantity *, quantity::Quantity *, quantity::Quantity *qz=new quantity::ValueQuantity(quantity::fEnergy), int debug=0) override
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
std::vector< hcaldqm::flag::Flag > _vflags
Definition: DigiTask.h:53
void setBinContent(HcalDetId const &, int) override
Definition: Container2D.cc:163
std::string const & label() const
Definition: InputTag.h:36
const_iterator end() const
hcaldqm::Container2D _cOccupancyCut_ElectronicsuTCA
Definition: DigiTask.h:129
hcaldqm::ContainerProf2D _cTimingCut_ElectronicsVME
Definition: DigiTask.h:100
virtual STDTYPE & get(HcalDetId const &)
Definition: ContainerXXX.h:197
#define begin
Definition: vmac.h:32
edm::ESHandle< HcalDbService > _dbService
Definition: DQTask.h:58
hcaldqm::Container1D _cBadTDCvsBX_SubdetPM
Definition: DigiTask.h:162
virtual void setLumiFlag()
Definition: Container1D.cc:769
virtual double getBinContent(HcalDetId const &)
Definition: Container1D.cc:177
std::vector< int > getFEDList(HcalElectronicsMap const *)
Definition: Utilities.cc:83
hcaldqm::Container2D _cOccupancy_Crate
Definition: DigiTask.h:117
T get() const
Definition: EventSetup.h:73
std::vector< int > getFEDuTCAList(HcalElectronicsMap const *)
Definition: Utilities.cc:121
void fill(HcalDetId const &) override
Definition: Container2D.cc:52
const HcalElectronicsMap * getHcalMapping() const
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::filter::HashFilter _filter_uTCA
Definition: DigiTask.h:67
bool isFEDHO(HcalElectronicsId const &)
Definition: Utilities.cc:180
std::vector< uint32_t > _vcdaqEids
Definition: DQTask.h:51
hcaldqm::Container2D _cLETDCvsTS_6bit_SubdetPM
Definition: DigiTask.h:155
hcaldqm::ContainerProf1D _cDigiSizevsLS_FED
Definition: DigiTask.h:144
hcaldqm::ContainerXXX< uint32_t > _xNChs
Definition: DigiTask.h:147
hcaldqm::filter::HashFilter _filter_TDC6bit
Definition: DigiTask.h:72
virtual void fill(int, int)
hcaldqm::electronicsmap::ElectronicsMap _ehashmap
Definition: DigiTask.h:62
hcaldqm::ContainerProf1D _cOccupancyCutvsLS_Subdet
Definition: DigiTask.h:138
virtual void initialize(hashfunctions::HashType, int debug=0)
Definition: ContainerXXX.h:81
hcaldqm::filter::HashFilter _filter_QIE1011
Definition: DigiTask.h:69
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
Definition: Container2D.cc:558
hcaldqm::Container2D _cBadTDCCount_depth
Definition: DigiTask.h:164
hcaldqm::ContainerProf2D _cLETDCTime_depth
Definition: DigiTask.h:157
std::vector< uint32_t > _vhashFEDs
Definition: DigiTask.h:57
int samples() const
total number of samples in the digi
edm::InputTag _tagQIE11
Definition: DigiTask.h:42
hcaldqm::Container1D _cOccupancyvsieta_Subdet
Definition: DigiTask.h:121
Readout chain identification for Hcal.
std::string const & instance() const
Definition: InputTag.h:37
bool isFEDHF(HcalElectronicsId const &)
Definition: Utilities.cc:156
hcaldqm::ContainerProf2D _cTimingCut_ElectronicsuTCA
Definition: DigiTask.h:101
#define constexpr
int const SLOT_uTCA_MIN
Definition: Constants.h:105
const_iterator begin() const
hcaldqm::Container1D _cSumQ_SubdetPM_QIE1011
Definition: DigiTask.h:86
hcaldqm::Container1D _cTimingCut_SubdetPM
Definition: DigiTask.h:97
Definition: Run.h:45
bool _unknownIdsPresent
Definition: DigiTask.h:181
hcaldqm::Container2D _cOccupancy_FEDuTCA
Definition: DigiTask.h:114
hcaldqm::Container1D _cCapidMinusBXmod4_SubdetPM
Definition: DigiTask.h:171
ib
Definition: cuy.py:662
hcaldqm::ContainerXXX< uint32_t > _xUniHF
Definition: DigiTask.h:146
void dqmBeginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: DigiTask.cc:1400
double sumQ(DIGI const &digi, double ped, int i=0, int j=3)
Definition: Utilities.h:126
hcaldqm::Container1D _cfC_SubdetPM
Definition: DigiTask.h:77
hcaldqm::Container2D _cOccupancy_ElectronicsuTCA
Definition: DigiTask.h:116