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 
9  edm::InputTag("hcalDigis"));
11  edm::InputTag("hcalDigis"));
13  edm::InputTag("hcalDigis"));
14 
15  _tokQIE11 = consumes<QIE11DigiCollection>(_tagQIE11);
16  _tokHO = consumes<HODigiCollection>(_tagHO);
17  _tokQIE10 = consumes<QIE10DigiCollection>(_tagQIE10);
18 
19  _cutSumQ_HBHE = ps.getUntrackedParameter<double>("cutSumQ_HBHE", 20);
20  _cutSumQ_HO = ps.getUntrackedParameter<double>("cutSumQ_HO", 20);
21  _cutSumQ_HF = ps.getUntrackedParameter<double>("cutSumQ_HF", 20);
22  _thresh_unihf = ps.getUntrackedParameter<double>("thresh_unihf", 0.2);
23  _thresh_led = ps.getUntrackedParameter<double>("thresh_led", 20);
24 
25  _vflags.resize(nDigiFlag);
26  _vflags[fUni] = hcaldqm::flag::Flag("UniSlotHF");
27  _vflags[fDigiSize] = hcaldqm::flag::Flag("DigiSize");
28  _vflags[fNChsHF] = hcaldqm::flag::Flag("NChsHF");
29  _vflags[fUnknownIds] = hcaldqm::flag::Flag("UnknownIds");
30  _vflags[fLED] = hcaldqm::flag::Flag("LEDMisfire");
31  _vflags[fCapId] = hcaldqm::flag::Flag("BadCapId");
32 
33  _qie10InConditions = ps.getUntrackedParameter<bool>("qie10InConditions", true);
34 
35  // Get reference digi sizes. Convert from unsigned to signed int, because <digi>::size()/samples() return ints for some reason.
36  std::vector<uint32_t> vrefDigiSize = ps.getUntrackedParameter<std::vector<uint32_t>>("refDigiSize");
37  _refDigiSize[HcalBarrel] = (int)vrefDigiSize[0];
38  _refDigiSize[HcalEndcap] = (int)vrefDigiSize[1];
39  _refDigiSize[HcalOuter] = (int)vrefDigiSize[2];
40  _refDigiSize[HcalForward] = (int)vrefDigiSize[3];
41 
42  // (capid - BX) % 4 to 1
43  _capidmbx[HcalBarrel] = 1;
44  _capidmbx[HcalEndcap] = 1;
45  _capidmbx[HcalOuter] = 1;
47 
48  // LED calibration channels
49  std::vector<edm::ParameterSet> vLedCalibChannels =
50  ps.getParameter<std::vector<edm::ParameterSet>>("ledCalibrationChannels");
51  for (int i = 0; i <= 3; ++i) {
52  HcalSubdetector this_subdet = HcalEmpty;
53  switch (i) {
54  case 0:
55  this_subdet = HcalBarrel;
56  break;
57  case 1:
58  this_subdet = HcalEndcap;
59  break;
60  case 2:
61  this_subdet = HcalOuter;
62  break;
63  case 3:
64  this_subdet = HcalForward;
65  break;
66  default:
67  this_subdet = HcalEmpty;
68  break;
69  }
70  std::vector<int32_t> subdet_calib_ietas = vLedCalibChannels[i].getUntrackedParameter<std::vector<int32_t>>("ieta");
71  std::vector<int32_t> subdet_calib_iphis = vLedCalibChannels[i].getUntrackedParameter<std::vector<int32_t>>("iphi");
72  std::vector<int32_t> subdet_calib_depths =
73  vLedCalibChannels[i].getUntrackedParameter<std::vector<int32_t>>("depth");
74  for (unsigned int ichannel = 0; ichannel < subdet_calib_ietas.size(); ++ichannel) {
75  _ledCalibrationChannels[this_subdet].push_back(HcalDetId(
76  HcalOther, subdet_calib_ietas[ichannel], subdet_calib_iphis[ichannel], subdet_calib_depths[ichannel]));
77  }
78  }
79 }
80 
81 /* virtual */ void DigiTask::bookHistograms(DQMStore::IBooker& ib, edm::Run const& r, edm::EventSetup const& es) {
82  DQTask::bookHistograms(ib, r, es);
83 
84  // GET WHAT YOU NEED
86  es.get<HcalDbRecord>().get(dbs);
87  _emap = dbs->getHcalMapping();
88  std::vector<uint32_t> vVME;
89  std::vector<uint32_t> vuTCA;
90  vVME.push_back(
92  vuTCA.push_back(HcalElectronicsId(CRATE_uTCA_MIN, SLOT_uTCA_MIN, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
95 
96  // Filters for QIE8 vs QIE10/11
97  std::vector<uint32_t> vhashQIE8;
100  vhashQIE8);
101 
102  std::vector<uint32_t> vhashQIE1011;
107  vhashQIE1011);
108 
109  // INITIALIZE FIRST
111  "ADC",
115  0);
117  "fC",
121  0);
123  "SumQ",
127  0);
129  "SumQ",
134  0);
136  "SumQvsLS",
140  0);
141 
143  "ADC",
147  0);
149  "fC",
153  0);
155  "SumQ",
159  0);
161  "SumQvsLS",
165  0);
166 
168  "TimingCut",
172  0);
174  "TimingCut",
179  0);
181  "TimingvsLS",
185  0);
186 
187  // Occupancy w/o a cut
189  "OccupancyvsLS",
193  0);
195  "Occupancy",
200  0);
201 
202  // Occupancy w/ a cut
204  "OccupancyCutvsLS",
208  0);
210  "OccupancyCut",
215  0);
216 
217  // Digi size
219  "DigiSize",
223  0);
225  "ADCvsTS",
230  0);
232  "ADCvsTS",
237  0);
238 
240  "LETDCTimevsADC",
246  "LETDCvsADC",
252  "LETDCvsTS",
258  "LETDCTime",
263  "LETDCTime",
268  0);
269 
271  "BadTDCValues",
276  "BadTDCvsBX",
281  "BadTDCvsLS",
286  "BadTDCCount",
291  0);
292 
293  if (_ptype == fOnline || _ptype == fLocal) {
295  "Occupancy",
300  0);
302  "Occupancy",
307  0);
308  }
309 
310  // INITIALIZE HISTOGRAMS that are only for Online
311  if (_ptype == fOnline) {
312  // Charge sharing
314  "Q2Q12vsLS",
318  0);
320  "SumQvsBX",
324  0);
326  "SumQvsBX",
330  0);
332  "DigiSizevsLS",
336  0);
338  "TimingCutvsiphi",
342  0);
344  "TimingCutvsieta",
348  0);
350  "Occupancyvsiphi",
354  0);
356  "Occupancyvsieta",
360  0);
362  "OccupancyCutvsiphi",
366  0);
368  "OccupancyCutvsieta",
372  0);
374  "OccupancyCutvsLS",
378  0);
380  "OccupancyCutvsBX",
384  0);
385  // _cOccupancyCutvsSlotvsLS_HFPM.initialize(_name,
386  // "OccupancyCutvsSlotvsLS", hcaldqm::hashfunctions::fSubdetPM,
387  // new hcaldqm::quantity::LumiSection(_maxLS),
388  // new hcaldqm::quantity::ElectronicsQuantity(hcaldqm::quantity::fSlotuTCA),
389  // new hcaldqm::quantity::ValueQuantity(hcaldqm::quantity::fN),0);
391  "OccupancyCutvsiphivsLS",
396  0);
397  }
399  "CapID",
403 
404  for (int i = 0; i < 4; ++i) {
406  "CapID",
410  0);
412  "CapID",
416  0);
417  }
418 
419  if (_ptype != fOffline) { // hidefed2crate
420  std::vector<int> vFEDs = hcaldqm::utilities::getFEDList(_emap);
421  std::vector<int> vFEDsVME = hcaldqm::utilities::getFEDVMEList(_emap);
422  std::vector<int> vFEDsuTCA = hcaldqm::utilities::getFEDuTCAList(_emap);
423 
424  if (_ptype == fOnline) {
426  "CapID",
430  0);
431 
433  "CapID",
437  0);
438  }
439 
440  std::vector<uint32_t> vFEDHF;
441  vFEDHF.push_back(HcalElectronicsId(22, SLOT_uTCA_MIN, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
442  vFEDHF.push_back(HcalElectronicsId(22, SLOT_uTCA_MIN + 6, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
443  vFEDHF.push_back(HcalElectronicsId(29, SLOT_uTCA_MIN, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
444  vFEDHF.push_back(HcalElectronicsId(29, SLOT_uTCA_MIN + 6, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
445  vFEDHF.push_back(HcalElectronicsId(32, SLOT_uTCA_MIN, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
446  vFEDHF.push_back(HcalElectronicsId(32, SLOT_uTCA_MIN + 6, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
447 
448  // initialize filters
450 
451  // push the rawIds of each fed into the vector...
452  for (std::vector<int>::const_iterator it = vFEDsVME.begin(); it != vFEDsVME.end(); ++it)
453  _vhashFEDs.push_back(
455  for (std::vector<int>::const_iterator it = vFEDsuTCA.begin(); it != vFEDsuTCA.end(); ++it) {
456  std::pair<uint16_t, uint16_t> cspair = utilities::fed2crate(*it);
457  _vhashFEDs.push_back(HcalElectronicsId(cspair.first, cspair.second, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
458  }
459 
461  "ShapeCut",
465  0);
466 
468  "TimingCut",
473  0);
475  "TimingCut",
480  0);
482  "TimingCut",
484  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
487  0);
489  "TimingCut",
491  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
494  0);
496  "TimingvsLS",
500  0);
501 
503  "Occupancy",
508  0);
510  "Occupancy",
515  0);
517  "Occupancy",
519  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
522  0);
524  "Occupancy",
526  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
529  0);
530 
532  "OccupancyCut",
537  0);
539  "OccupancyCut",
544  0);
546  "OccupancyCut",
548  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
551  0);
553  "OccupancyCut",
555  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
558  0);
559 
561  "DigiSize",
565  0);
566 
567  if (_ptype == fOnline) {
569  "SummaryvsLS",
574  0);
576  "SummaryvsLS",
580  0);
581 
588  }
589  }
590  if (_ptype != fLocal) {
592  "LED_ADCvsBX",
597  0);
598 
600  "LED_CUCountvsLS",
604  0);
605  if (_ptype == fOnline) {
607  "LED_CUCountvsLSmod60",
611  0);
612  }
613  }
614 
615  // BOOK HISTOGRAMS
616  char cutstr[200];
617  sprintf(cutstr, "_SumQHBHE%dHO%dHF%d", int(_cutSumQ_HBHE), int(_cutSumQ_HO), int(_cutSumQ_HF));
618  char cutstr2[200];
619  sprintf(cutstr2, "_SumQHF%d", int(_cutSumQ_HF));
620 
633 
634  if (_ptype != fOffline) { // hidefed2crate
650  }
651 
655 
659 
665 
670 
672  if (_ptype == fOnline) {
673  _cCapid_BadvsFEDvsLS.book(ib, _subsystem, "BadvsLS");
674  _cCapid_BadvsFEDvsLSmod60.book(ib, _subsystem, "BadvsLSmod60");
675  }
676  for (int i = 0; i < 4; ++i) {
677  constexpr unsigned int kSize = 16;
678  char aux[kSize];
679  snprintf(aux, kSize, "%d_uTCA", i);
681 
682  snprintf(aux, kSize, "%d_VME", i);
684  }
685 
686  if (_ptype != fLocal) {
689  if (_ptype == fOnline) {
691  }
692  }
693 
694  // BOOK HISTOGRAMS that are only for Online
697 
698  if (_ptype == fOnline || _ptype == fLocal) {
701  }
702 
703  if (_ptype == fOnline) {
716  // _cOccupancyCutvsSlotvsLS_HFPM.book(ib, _emap, _filter_QIE1011, _subsystem);
720 
722  _xNChs.book(_emap);
724  _xUni.book(_emap);
727 
728  // just PER HF FED RECORD THE #CHANNELS
729  // ONLY WAY TO DO THAT AUTOMATICALLY AND W/O HARDCODING 1728
730  // or ANY OTHER VALUES LIKE 2592, 2192
731  std::vector<HcalGenericDetId> gids = _emap->allPrecisionId();
732  for (std::vector<HcalGenericDetId>::const_iterator it = gids.begin(); it != gids.end(); ++it) {
733  if (!it->isHcalDetId())
734  continue;
735  HcalDetId did(it->rawId());
736  if (_xQuality.exists(did)) {
737  HcalChannelStatus cs(it->rawId(), _xQuality.get(HcalDetId(*it)));
739  continue;
740  }
742  _xNChsNominal.get(eid)++; // he will know the nominal #channels per FED
743  }
744  }
745 
746  // MARK THESE HISTOGRAMS AS LUMI BASED FOR OFFLINE PROCESSING
747  if (_ptype == fOffline) {
749  //_cDigiSize_FED.setLumiFlag();
751  }
752 
753  // book Number of Events vs LS histogram
754  ib.setCurrentFolder(_subsystem + "/RunInfo");
755  meNumEvents1LS = ib.book1D("NumberOfEvents", "NumberOfEvents", 1, 0, 1);
757 
758  // book the flag for unknown ids and the online guy as well
759  ib.setCurrentFolder(_subsystem + "/" + _name);
760  meUnknownIds1LS = ib.book1D("UnknownIds", "UnknownIds", 1, 0, 1);
761  _unknownIdsPresent = false;
763 }
764 
766  DQTask::_resetMonitors(uf);
767 
768  switch (uf) {
769  case hcaldqm::f1LS:
770  _unknownIdsPresent = false;
771  break;
772  case hcaldqm::f50LS:
773  // ^^^ONLINE ONLY!
774  if (_ptype == fOnline)
776  // ^^^
777  break;
778  default:
779  break;
780  }
781 }
782 
783 /* virtual */ void DigiTask::_process(edm::Event const& e, edm::EventSetup const&) {
787 
788  if (!e.getByToken(_tokQIE11, c_QIE11))
789  _logger.dqmthrow("Collection QIE11DigiCollection isn't available" + _tagQIE11.label() + " " + _tagQIE11.instance());
790  if (!e.getByToken(_tokHO, c_ho))
791  _logger.dqmthrow("Collection HODigiCollection isn't available" + _tagHO.label() + " " + _tagHO.instance());
792  if (!e.getByToken(_tokQIE10, c_QIE10))
793  _logger.dqmthrow("Collection QIE10DigiCollection isn't available" + _tagQIE10.label() + " " + _tagQIE10.instance());
794 
795  // extract some info per event
796  int bx = e.bunchCrossing();
797  meNumEvents1LS->Fill(0.5); // just increment
798 
799  // To fill histograms outside of the loop, you need to determine if there were
800  // any valid det ids first
801  uint32_t rawidValid = 0;
802  uint32_t rawidHBValid = 0;
803  uint32_t rawidHEValid = 0;
804 
805  // HB collection
806  int numChs = 0;
807  int numChsCut = 0;
808  int numChsHE = 0;
809  int numChsCutHE = 0;
810 
811  // HB+HE QIE11 collection
812  for (QIE11DigiCollection::const_iterator it=c_QIE11->begin(); it!=c_QIE11->end(); ++it) {
813  const QIE11DataFrame digi = static_cast<const QIE11DataFrame>(*it);
814 
815  // Explicit check on the DetIds present in the Collection
816  HcalDetId const& did = digi.detid();
817  if ((did.subdet() != HcalBarrel) && (did.subdet() != HcalEndcap)) {
818  // LED monitoring from calibration channels
819  if (_ptype != fLocal) {
820  if (did.subdet() == HcalOther) {
821  HcalOtherDetId hodid(digi.detid());
822  if (hodid.subdet() == HcalCalibration) {
823  // New method: use configurable list of channels
826  did) != _ledCalibrationChannels[HcalEndcap].end()) {
827  bool channelLEDSignalPresent = false;
828  for (int i = 0; i < digi.samples(); i++) {
829  _LED_ADCvsBX_Subdet.fill(HcalDetId(HcalEndcap, 16, 1, 1), bx, digi[i].adc());
830 
831  if (digi[i].adc() > _thresh_led) {
832  channelLEDSignalPresent = true;
833  }
834  }
835  if (channelLEDSignalPresent) {
837  if (_ptype == fOnline) {
839  }
840  }
841  }
842  }
843  }
844  }
845  continue;
846  }
847 
848  uint32_t rawid = _ehashmap.lookup(did);
849  if (rawid == 0) {
850  meUnknownIds1LS->Fill(1);
851  _unknownIdsPresent = true;
852  continue;
853  } else {
854  if (did.subdet() == HcalBarrel) {
855  rawidHBValid = did.rawId();
856  } else if (did.subdet() == HcalEndcap) {
857  rawidHEValid = did.rawId();
858  }
859  }
860  HcalElectronicsId const& eid(rawid);
861 
862  // filter out channels that are masked out
863  if (_xQuality.exists(did)) {
864  HcalChannelStatus cs(did.rawId(), _xQuality.get(did));
866  continue;
867  }
868 
869  // (capid - BX) % 4
870  if (_ptype == fOnline) {
871  short soi = -1;
872  for (int i = 0; i < digi.samples(); i++) {
873  if (digi[i].soi()) {
874  soi = i;
875  break;
876  }
877  }
878  short this_capidmbx = (digi[soi].capid() - bx) % 4;
879  if (this_capidmbx < 0) {
880  this_capidmbx += 4;
881  }
882  _cCapidMinusBXmod4_SubdetPM.fill(did, this_capidmbx);
883  bool good_capidmbx = (_capidmbx[did.subdet()] == this_capidmbx);
884  if (!good_capidmbx) {
885  _xBadCapid.get(eid)++;
888  }
889  if (eid.isVMEid()) {
890  _cCapidMinusBXmod4_CrateSlotVME[this_capidmbx].fill(eid);
891 
892  } else {
893  _cCapidMinusBXmod4_CrateSlotuTCA[this_capidmbx].fill(eid);
894  }
895  }
896 
897  CaloSamples digi_fC = hcaldqm::utilities::loadADC2fCDB<QIE11DataFrame>(_dbService, did, digi);
898  double sumQ = hcaldqm::utilities::sumQDB<QIE11DataFrame>(_dbService, digi_fC, did, digi, 0, digi.samples() - 1);
899 
900  _cSumQ_SubdetPM_QIE1011.fill(did, sumQ);
901  _cOccupancy_depth.fill(did);
902  if (_ptype == fOnline || _ptype == fLocal) {
903  _cOccupancy_Crate.fill(eid);
905  }
906  if (_ptype == fOnline) {
907  _cDigiSizevsLS_FED.fill(eid, _currentLS, digi.samples());
908  digi.samples() != _refDigiSize[did.subdet()] ? _xDigiSize.get(eid)++ : _xDigiSize.get(eid) += 0;
911  }
912  _cDigiSize_Crate.fill(eid, digi.samples());
913  if (_ptype != fOffline) { // hidefed2crate
914  _cDigiSize_FED.fill(eid, digi.samples());
915  if (eid.isVMEid()) {
918  } else {
921  /*
922  if (!digi.validate(0, digi.size()))
923  {
924  _cCapIdRots_depth.fill(did);
925  _cCapIdRots_FEDuTCA.fill(eid, 1);
926  }*/
927  }
928  }
929  for (int i = 0; i < digi.samples(); i++) {
930  double q = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE11DataFrame>(_dbService, digi_fC, did, digi, i);
931  _cADC_SubdetPM_QIE1011.fill(did, digi[i].adc());
932  _cfC_SubdetPM_QIE1011.fill(did, q);
933  _cLETDCvsADC_SubdetPM.fill(did, digi[i].adc(), digi[i].tdc());
934  _cLETDCvsTS_SubdetPM.fill(did, (int)i, digi[i].tdc());
935  if (digi[i].tdc() < 50) {
936  double time = i * 25. + (digi[i].tdc() / 2.);
937  _cLETDCTime_SubdetPM.fill(did, time);
938  _cLETDCTime_depth.fill(did, time);
939  _cLETDCTimevsADC_SubdetPM.fill(did, digi[i].adc(), time);
940  }
941  // Bad TDC values: 50-61 should never happen in QIE10 or QIE11, but we saw some in 2017 data.
942  if ((50 <= digi[i].tdc()) && (digi[i].tdc() <= 61)) {
943  _cBadTDCValues_SubdetPM.fill(did, digi[i].tdc());
944  _cBadTDCvsBX_SubdetPM.fill(did, bx);
947  }
948  if (_ptype != fOffline) { // hidefed2crate
949  _cADCvsTS_SubdetPM_QIE1011.fill(did, i, digi[i].adc());
950  if (sumQ > _cutSumQ_HBHE) {
951  _cShapeCut_FED.fill(eid, i, q);
952  }
953  }
954  }
955 
956  if (sumQ > _cutSumQ_HBHE) {
957  //double timing = hcaldqm::utilities::aveTS_v10<QIE11DataFrame>(digi, 2.5, 0,digi.samples()-1);
958  double timing =
959  hcaldqm::utilities::aveTSDB<QIE11DataFrame>(_dbService, digi_fC, did, digi, 0, digi.samples() - 1);
960  _cTimingCut_SubdetPM.fill(did, timing);
961  _cTimingCut_depth.fill(did, timing);
964  if (_ptype != fOffline) { // hidefed2crate
965  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
966  }
967  _cSumQ_depth.fill(did, sumQ);
969  if (_ptype == fOnline) {
970  _cSumQvsBX_SubdetPM_QIE1011.fill(did, bx, sumQ);
971  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
972  _cTimingCutvsieta_Subdet.fill(did, timing);
976  }
977  if (_ptype != fOffline) { // hidefed2crate
978  if (eid.isVMEid()) {
979  _cTimingCut_FEDVME.fill(eid, timing);
980  _cTimingCut_ElectronicsVME.fill(eid, timing);
983  } else {
984  _cTimingCut_FEDuTCA.fill(eid, timing);
985  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
988  }
989  }
990  did.subdet() == HcalBarrel ? numChsCut++ : numChsCutHE++;
991  }
992  did.subdet() == HcalBarrel ? numChs++ : numChsHE++;
993  }
994 
995  if (rawidHBValid != 0 && rawidHEValid != 0) {
996  _cOccupancyvsLS_Subdet.fill(HcalDetId(rawidHBValid), _currentLS, numChs);
997  _cOccupancyvsLS_Subdet.fill(HcalDetId(rawidHEValid), _currentLS, numChsHE);
998  // ONLINE ONLY!
999  if (_ptype == fOnline) {
1000  _cOccupancyCutvsLS_Subdet.fill(HcalDetId(rawidHBValid), _currentLS, numChsCut);
1001  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidHBValid), bx, numChsCut);
1002  _cOccupancyCutvsLS_Subdet.fill(HcalDetId(rawidHEValid), _currentLS, numChsCutHE);
1003  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidHEValid), bx, numChsCutHE);
1004  }
1005  // ^^^ONLINE ONLY!
1006  }
1007  numChs = 0;
1008  numChsCut = 0;
1009 
1010  // reset
1011  rawidValid = 0;
1012 
1013  // HO collection
1014  for (HODigiCollection::const_iterator it = c_ho->begin(); it != c_ho->end(); ++it) {
1015  // Explicit check on the DetIds present in the Collection
1016  HcalDetId const& did = it->id();
1017  if (did.subdet() != HcalOuter) {
1018  continue;
1019  }
1020  uint32_t rawid = _ehashmap.lookup(did);
1021  if (rawid == 0) {
1022  meUnknownIds1LS->Fill(1);
1023  _unknownIdsPresent = true;
1024  continue;
1025  } else {
1026  rawidValid = did.rawId();
1027  }
1028  HcalElectronicsId const& eid(rawid);
1029 
1030  // filter out channels that are masked out
1031  if (_xQuality.exists(did)) {
1032  HcalChannelStatus cs(did.rawId(), _xQuality.get(did));
1034  continue;
1035  }
1036 
1037  if (_ptype == fOnline) {
1038  short this_capidmbx = (it->sample(it->presamples()).capid() - bx) % 4;
1039  if (this_capidmbx < 0) {
1040  this_capidmbx += 4;
1041  }
1042  _cCapidMinusBXmod4_SubdetPM.fill(did, this_capidmbx);
1043  bool good_capidmbx = (_capidmbx[did.subdet()] == this_capidmbx);
1044  if (!good_capidmbx) {
1045  _xBadCapid.get(eid)++;
1048  }
1049  if (eid.isVMEid()) {
1050  _cCapidMinusBXmod4_CrateSlotVME[this_capidmbx].fill(eid);
1051 
1052  } else {
1053  _cCapidMinusBXmod4_CrateSlotuTCA[this_capidmbx].fill(eid);
1054  }
1055  }
1056 
1057  //double sumQ = hcaldqm::utilities::sumQ<HODataFrame>(*it, 8.5, 0, it->size()-1);
1058  CaloSamples digi_fC = hcaldqm::utilities::loadADC2fCDB<HODataFrame>(_dbService, did, *it);
1059  double sumQ = hcaldqm::utilities::sumQDB<HODataFrame>(_dbService, digi_fC, did, *it, 0, it->size() - 1);
1060 
1061  _cSumQ_SubdetPM.fill(did, sumQ);
1062  _cOccupancy_depth.fill(did);
1063  if (_ptype == fOnline) {
1064  _cDigiSizevsLS_FED.fill(eid, _currentLS, it->size());
1065  it->size() != _refDigiSize[did.subdet()] ? _xDigiSize.get(eid)++ : _xDigiSize.get(eid) += 0;
1068  }
1069  _cDigiSize_Crate.fill(eid, it->size());
1070  if (_ptype != fOffline) { // hidefed2crate
1071  _cDigiSize_FED.fill(eid, it->size());
1072  if (eid.isVMEid()) {
1073  _cOccupancy_FEDVME.fill(eid);
1075  /*
1076  if (!it->validate(0, it->size()))
1077  _cCapIdRots_FEDVME.fill(eid, 1);
1078  */
1079  } else {
1082  /*
1083  if (!it->validate(0, it->size()))
1084  _cCapIdRots_FEDuTCA.fill(eid, 1);*/
1085  }
1086  }
1087 
1088  for (int i = 0; i < it->size(); i++) {
1089  _cADC_SubdetPM.fill(did, it->sample(i).adc());
1090  _cfC_SubdetPM.fill(did, it->sample(i).nominal_fC());
1091  if (_ptype != fOffline) { // hidefed2crate
1092  _cADCvsTS_SubdetPM.fill(did, i, it->sample(i).adc());
1093  if (sumQ > _cutSumQ_HO)
1094  _cShapeCut_FED.fill(eid, i, it->sample(i).nominal_fC());
1095  }
1096  }
1097 
1098  if (sumQ > _cutSumQ_HO) {
1099  //double timing = hcaldqm::utilities::aveTS<HODataFrame>(*it, 8.5, 0,it->size()-1);
1100  double timing = hcaldqm::utilities::aveTSDB<HODataFrame>(_dbService, digi_fC, did, *it, 0, it->size() - 1);
1101  _cSumQ_depth.fill(did, sumQ);
1102  _cSumQvsLS_SubdetPM.fill(did, _currentLS, sumQ);
1104  _cTimingCut_SubdetPM.fill(did, timing);
1105  _cTimingCut_depth.fill(did, timing);
1107  if (_ptype != fOffline) { // hidefed2crate
1108  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
1109  }
1110  if (_ptype == fOnline) {
1111  _cSumQvsBX_SubdetPM.fill(did, bx, sumQ);
1112  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
1113  _cTimingCutvsieta_Subdet.fill(did, timing);
1117  }
1118  if (_ptype != fOffline) { // hidefed2crate
1119  if (eid.isVMEid()) {
1120  _cTimingCut_FEDVME.fill(eid, timing);
1121  _cTimingCut_ElectronicsVME.fill(eid, timing);
1124  } else {
1125  _cTimingCut_FEDuTCA.fill(eid, timing);
1126  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
1129  }
1130  }
1131  numChsCut++;
1132  }
1133  numChs++;
1134  }
1135 
1136  if (rawidValid != 0) {
1137  _cOccupancyvsLS_Subdet.fill(HcalDetId(rawidValid), _currentLS, numChs);
1138 
1139  if (_ptype == fOnline) {
1140  _cOccupancyCutvsLS_Subdet.fill(HcalDetId(rawidValid), _currentLS, numChsCut);
1141  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidValid), bx, numChsCut);
1142  }
1143  }
1144  numChs = 0;
1145  numChsCut = 0;
1146 
1147  // reset
1148  rawidValid = 0;
1149 
1150  // HF collection
1151  if (_qie10InConditions) {
1152  for (QIE10DigiCollection::const_iterator it = c_QIE10->begin(); it != c_QIE10->end(); ++it) {
1153  const QIE10DataFrame digi = static_cast<const QIE10DataFrame>(*it);
1154 
1155  // Explicit check on the DetIds present in the Collection
1156  HcalDetId const& did = digi.detid();
1157  if (did.subdet() != HcalForward) {
1158  // LED monitoring from calibration channels
1159  if (_ptype != fLocal) {
1160  if (did.subdet() == HcalOther) {
1161  HcalOtherDetId hodid(digi.detid());
1162  if (hodid.subdet() == HcalCalibration) {
1163  // New method: use configurable list of channels
1166  did) != _ledCalibrationChannels[HcalForward].end()) {
1167  bool channelLEDSignalPresent = false;
1168  for (int i = 0; i < digi.samples(); i++) {
1169  _LED_ADCvsBX_Subdet.fill(HcalDetId(HcalForward, 16, 1, 1), bx, digi[i].adc());
1170 
1171  if (digi[i].adc() > _thresh_led) {
1172  channelLEDSignalPresent = true;
1173  }
1174  }
1175  if (channelLEDSignalPresent) {
1177  if (_ptype == fOnline) {
1179  }
1180  }
1181  }
1182  }
1183  }
1184  }
1185  continue;
1186  }
1187 
1188  uint32_t rawid = _ehashmap.lookup(did);
1189  if (rawid == 0) {
1190  meUnknownIds1LS->Fill(1);
1191  _unknownIdsPresent = true;
1192  continue;
1193  } else {
1194  rawidValid = did.rawId();
1195  }
1196  HcalElectronicsId const& eid(rawid);
1197 
1198  // filter out channels that are masked out
1199  if (_xQuality.exists(did)) {
1200  HcalChannelStatus cs(did.rawId(), _xQuality.get(did));
1202  continue;
1203  }
1204 
1205  // (capid - BX) % 4
1206  if (_ptype == fOnline) {
1207  short soi = -1;
1208  for (int i = 0; i < digi.samples(); i++) {
1209  if (digi[i].soi()) {
1210  soi = i;
1211  break;
1212  }
1213  }
1214  short this_capidmbx = (digi[soi].capid() - bx) % 4;
1215  if (this_capidmbx < 0) {
1216  this_capidmbx += 4;
1217  }
1218  _cCapidMinusBXmod4_SubdetPM.fill(did, this_capidmbx);
1219  bool good_capidmbx = (_capidmbx[did.subdet()] == this_capidmbx);
1220  if (!good_capidmbx) {
1221  _xBadCapid.get(eid)++;
1224  }
1225  if (eid.isVMEid()) {
1226  _cCapidMinusBXmod4_CrateSlotVME[this_capidmbx].fill(eid);
1227 
1228  } else {
1229  _cCapidMinusBXmod4_CrateSlotuTCA[this_capidmbx].fill(eid);
1230  }
1231  }
1232 
1233  CaloSamples digi_fC = hcaldqm::utilities::loadADC2fCDB<QIE10DataFrame>(_dbService, did, digi);
1234  double sumQ = hcaldqm::utilities::sumQDB<QIE10DataFrame>(_dbService, digi_fC, did, digi, 0, digi.samples() - 1);
1235  //double sumQ = hcaldqm::utilities::sumQ_v10<QIE10DataFrame>(digi, 2.5, 0, digi.samples()-1);
1236 
1237  //if (!_filter_QIE1011.filter(did)) {
1238  _cSumQ_SubdetPM_QIE1011.fill(did, sumQ);
1239  //}
1240 
1241  _cOccupancy_depth.fill(did);
1242  if (_ptype == fOnline) {
1243  _xNChs.get(eid)++;
1244  _cDigiSizevsLS_FED.fill(eid, _currentLS, digi.samples());
1245  digi.samples() != _refDigiSize[did.subdet()] ? _xDigiSize.get(eid)++ : _xDigiSize.get(eid) += 0;
1248  }
1249  _cDigiSize_Crate.fill(eid, digi.samples());
1250  if (_ptype != fOffline) { // hidefed2crate
1251  _cDigiSize_FED.fill(eid, digi.samples());
1252  if (eid.isVMEid()) {
1253  _cOccupancy_FEDVME.fill(eid);
1255  /*
1256  if (!it->validate(0, it->size()))
1257  _cCapIdRots_FEDVME.fill(eid, 1);*/
1258  } else {
1261  /*
1262  if (!it->validate(0, it->size()))
1263  _cCapIdRots_FEDuTCA.fill(eid, 1);*/
1264  }
1265  }
1266 
1267  for (int i = 0; i < digi.samples(); i++) {
1268  double q = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE10DataFrame>(_dbService, digi_fC, did, digi, i);
1269  //if (!_filter_QIE1011.filter(did)) {
1270  _cADC_SubdetPM_QIE1011.fill(did, digi[i].adc());
1271  _cfC_SubdetPM_QIE1011.fill(did, q);
1272  _cLETDCvsADC_SubdetPM.fill(did, digi[i].adc(), digi[i].le_tdc());
1273  _cLETDCvsTS_SubdetPM.fill(did, (int)i, digi[i].le_tdc());
1274  if (digi[i].le_tdc() < 50) {
1275  double time = i * 25. + (digi[i].le_tdc() / 2.);
1276  _cLETDCTime_SubdetPM.fill(did, time);
1277  _cLETDCTime_depth.fill(did, time);
1278  _cLETDCTimevsADC_SubdetPM.fill(did, digi[i].adc(), time);
1279  }
1280 
1281  // Bad TDC values: 50-61 should never happen in QIE10 or QIE11, but we are seeing some in 2017 data.
1282  if ((50 <= digi[i].le_tdc()) && (digi[i].le_tdc() <= 61)) {
1283  _cBadTDCValues_SubdetPM.fill(did, digi[i].le_tdc());
1284  _cBadTDCvsBX_SubdetPM.fill(did, bx);
1287  }
1288  if (_ptype != fOffline) { // hidefed2crate
1289  _cADCvsTS_SubdetPM_QIE1011.fill(did, (int)i, digi[i].adc());
1290  if (sumQ > _cutSumQ_HF)
1291  _cShapeCut_FED.fill(eid, (int)i, q);
1292  }
1293  //}
1294  }
1295 
1296  if (sumQ > _cutSumQ_HF) {
1297  double timing = hcaldqm::utilities::aveTS_v10<QIE10DataFrame>(digi, 2.5, 0, digi.samples() - 1);
1298  double q1 = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE10DataFrame>(_dbService, digi_fC, did, digi, 1);
1299  double q2 = hcaldqm::utilities::adc2fCDBMinusPedestal<QIE10DataFrame>(_dbService, digi_fC, did, digi, 2);
1300  double q2q12 = q2 / (q1 + q2);
1301  _cSumQ_depth.fill(did, sumQ);
1302  //if (!_filter_QIE1011.filter(did)) {
1304  //}
1305  _cTimingCut_SubdetPM.fill(did, timing);
1306  _cTimingCut_depth.fill(did, timing);
1308  if (_ptype == fOnline) {
1309  //if (!_filter_QIE1011.filter(did)) {
1310  _cSumQvsBX_SubdetPM_QIE1011.fill(did, bx, sumQ);
1311  //}
1312  _cTimingCutvsiphi_SubdetPM.fill(did, timing);
1313  _cTimingCutvsieta_Subdet.fill(did, timing);
1317  // _cOccupancyCutvsSlotvsLS_HFPM.fill(did, _currentLS);
1318  _xUniHF.get(eid)++;
1319  }
1320  if (_ptype != fOffline) { // hidefed2crate
1321  _cTimingCutvsLS_FED.fill(eid, _currentLS, timing);
1322  }
1324  if (!eid.isVMEid())
1325  if (_ptype == fOnline)
1326  _cQ2Q12CutvsLS_FEDHF.fill(eid, _currentLS, q2q12);
1327  if (_ptype != fOffline) { // hidefed2crate
1328  if (eid.isVMEid()) {
1329  _cTimingCut_FEDVME.fill(eid, timing);
1330  _cTimingCut_ElectronicsVME.fill(eid, timing);
1333  } else {
1334  _cTimingCut_FEDuTCA.fill(eid, timing);
1335  _cTimingCut_ElectronicsuTCA.fill(eid, timing);
1338  }
1339  }
1340  numChsCut++;
1341  }
1342  numChs++;
1343  }
1344  }
1345 
1346  if (rawidValid != 0) {
1347  _cOccupancyvsLS_Subdet.fill(HcalDetId(rawidValid), _currentLS, numChs);
1348 
1349  if (_ptype == fOnline) {
1350  _cOccupancyCutvsLS_Subdet.fill(HcalDetId(rawidValid), _currentLS, numChsCut);
1351  _cOccupancyCutvsBX_Subdet.fill(HcalDetId(rawidValid), bx, numChsCut);
1352  }
1353  }
1354 }
1355 
1356 /* virtual */ void DigiTask::beginLuminosityBlock(edm::LuminosityBlock const& lb, edm::EventSetup const& es) {
1357  DQTask::beginLuminosityBlock(lb, es);
1358  if (_ptype == fOnline) {
1359  // Reset the bin for _cCapid_BadvsFEDvsLSmod60
1360  for (std::vector<uint32_t>::const_iterator it = _vhashFEDs.begin(); it != _vhashFEDs.end(); ++it) {
1363  }
1364  }
1365 }
1366 
1367 /* virtual */ void DigiTask::endLuminosityBlock(edm::LuminosityBlock const& lb, edm::EventSetup const& es) {
1368  if (_ptype != fOnline)
1369  return;
1370 
1371  for (uintCompactMap::const_iterator it = _xUniHF.begin(); it != _xUniHF.end(); ++it) {
1372  uint32_t hash1 = it->first;
1373  HcalElectronicsId eid1(hash1);
1374  double x1 = it->second;
1375 
1376  for (uintCompactMap::const_iterator jt = _xUniHF.begin(); jt != _xUniHF.end(); ++jt) {
1377  if (jt == it)
1378  continue;
1379  double x2 = jt->second;
1380  if (x2 == 0)
1381  continue;
1382  if (x1 / x2 < _thresh_unihf)
1383  _xUni.get(eid1)++;
1384  }
1385  }
1386 
1387  if (_ptype != fOffline) { // hidefed2crate
1388  for (std::vector<uint32_t>::const_iterator it = _vhashFEDs.begin(); it != _vhashFEDs.end(); ++it) {
1389  hcaldqm::flag::Flag fSum("DIGI");
1391 
1392  std::vector<uint32_t>::const_iterator cit = std::find(_vcdaqEids.begin(), _vcdaqEids.end(), *it);
1393  if (cit == _vcdaqEids.end()) {
1394  // not @cDAQ
1395  for (uint32_t iflag = 0; iflag < _vflags.size(); iflag++)
1398  continue;
1399  }
1400 
1401  // FED is @cDAQ
1403  if (_xDigiSize.get(eid) > 0)
1405  else
1407 
1408  if (_xBadCapid.get(eid) > 0) {
1410  } else {
1412  }
1413 
1414  if (hcaldqm::utilities::isFEDHF(eid)) {
1415  double fr = double(_xNChs.get(eid)) / double(_xNChsNominal.get(eid) * _evsPerLS);
1416  if (_runkeyVal == 0 || _runkeyVal == 4) {
1417  // only for pp or hi
1418  if (_xUni.get(eid) > 0)
1420  else
1421  _vflags[fUni]._state = hcaldqm::flag::fGOOD;
1422  }
1423  if (fr < 0.95)
1425  else if (fr < 1.0)
1427  else
1429  }
1430  }
1431  if (_unknownIdsPresent)
1433  else
1435 
1436  // LED misfires
1437  if (_ptype != fLocal) {
1438  if (hcaldqm::utilities::isFEDHBHE(eid)) {
1441 
1444  _vflags[fLED]._state = hcaldqm::flag::fBAD;
1445  } else {
1446  _vflags[fLED]._state = hcaldqm::flag::fGOOD;
1447  }
1448  } else if (hcaldqm::utilities::isFEDHF(eid)) {
1451  _vflags[fLED]._state = hcaldqm::flag::fBAD;
1452  } else {
1453  _vflags[fLED]._state = hcaldqm::flag::fGOOD;
1454  }
1455  } else if (hcaldqm::utilities::isFEDHO(eid)) {
1458  _vflags[fLED]._state = hcaldqm::flag::fBAD;
1459  } else {
1460  _vflags[fLED]._state = hcaldqm::flag::fGOOD;
1461  }
1462  }
1463  }
1464 
1465  int iflag = 0;
1466  for (std::vector<hcaldqm::flag::Flag>::iterator ft = _vflags.begin(); ft != _vflags.end(); ++ft) {
1467  _cSummaryvsLS_FED.setBinContent(eid, _currentLS, iflag, int(ft->_state));
1468  fSum += (*ft);
1469  iflag++;
1470 
1471  // reset!
1472  ft->reset();
1473  }
1475  }
1476  }
1477 
1478  _xDigiSize.reset();
1479  _xUniHF.reset();
1480  _xUni.reset();
1481  _xNChs.reset();
1482  _xBadCapid.reset();
1483 
1484  // in the end always do the DQTask::endLumi
1485  DQTask::endLuminosityBlock(lb, es);
1486 }
1487 
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:103
constexpr uint32_t rawId() const
void _process(edm::Event const &, edm::EventSetup const &) override
Definition: DigiTask.cc:783
hcaldqm::ContainerXXX< uint32_t > _xBadCapid
Definition: DigiTask.h:147
T getParameter(std::string const &) const
bool _qie10InConditions
Definition: DigiTask.h:182
T getUntrackedParameter(std::string const &, T const &) const
double _thresh_led
Definition: DigiTask.h:187
MonitorElement * meNumEvents1LS
Definition: DigiTask.h:175
hcaldqm::Container1D _LED_CUCountvsLSmod60_Subdet
Definition: DigiTask.h:191
edm::InputTag _tagQIE10
Definition: DigiTask.h:44
hcaldqm::Container1D _cADC_SubdetPM
Definition: DigiTask.h:74
hcaldqm::Container1D _cADC_SubdetPM_QIE1011
Definition: DigiTask.h:82
hcaldqm::Container1D _LED_CUCountvsLS_Subdet
Definition: DigiTask.h:190
void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: DigiTask.cc:1367
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:130
hcaldqm::ContainerProf1D _cSumQvsBX_SubdetPM
Definition: DigiTask.h:79
virtual bool exists(HcalDetId const &)
Definition: ContainerXXX.h:212
int const CRATE_VME_MIN
Definition: Constants.h:83
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:146
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:90
std::pair< uint16_t, uint16_t > fed2crate(int fed)
Definition: Utilities.cc:10
void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: DigiTask.cc:1356
hcaldqm::ContainerProf1D _cQ2Q12CutvsLS_FEDHF
Definition: DigiTask.h:107
MonitorElement * meUnknownIds1LS
Definition: DigiTask.h:176
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
void initialize(HcalElectronicsMap const *, ElectronicsMapType etype=fHcalElectronicsMap)
unique_ptr< ClusterSequence > cs
hcaldqm::Container2D _cLETDCTimevsADC_SubdetPM
Definition: DigiTask.h:150
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:184
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:50
std::vector< T >::const_iterator const_iterator
int bunchCrossing() const
Definition: EventBase.h:64
hcaldqm::ContainerSingle2D _cCapidMinusBXmod4_CrateSlotuTCA[4]
Definition: DigiTask.h:168
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:108
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
hcaldqm::ContainerProf2D _cSumQ_depth
Definition: DigiTask.h:77
edm::EDGetTokenT< HODigiCollection > _tokHO
Definition: DigiTask.h:46
hcaldqm::Container1D _cOccupancyCutvsiphi_SubdetPM
Definition: DigiTask.h:129
const_iterator begin() const
virtual void reset()
Definition: ContainerXXX.h:292
hcaldqm::ContainerProf1D _cSumQvsLS_SubdetPM_QIE1011
Definition: DigiTask.h:85
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:180
hcaldqm::ContainerProf2D _cTimingCut_FEDVME
Definition: DigiTask.h:96
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: DigiTask.cc:81
int const FIBER_VME_MIN
Definition: Constants.h:113
hcaldqm::Container2D _cOccupancyCutvsiphivsLS_SubdetPM
Definition: DigiTask.h:132
hcaldqm::ContainerXXX< uint32_t > _xDigiSize
Definition: DigiTask.h:143
hcaldqm::ContainerProf2D _cTimingCut_FEDuTCA
Definition: DigiTask.h:97
double q2[4]
Definition: TauolaWrapper.h:88
hcaldqm::Container1D _cBadTDCvsLS_SubdetPM
Definition: DigiTask.h:159
int const FIBERCH_MIN
Definition: Constants.h:122
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::filter::HashFilter _filter_VME
Definition: DigiTask.h:66
virtual CompactMap::const_iterator end()
Definition: ContainerXXX.h:70
hcaldqm::Container2D _cLETDCvsTS_SubdetPM
Definition: DigiTask.h:152
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
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 _cOccupancy_CrateSlot
Definition: DigiTask.h:116
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:170
int const FED_VME_MIN
Definition: Constants.h:70
hcaldqm::Container2D _cADCvsTS_SubdetPM_QIE1011
Definition: DigiTask.h:91
hcaldqm::Container2D _cOccupancyCut_ElectronicsVME
Definition: DigiTask.h:126
hcaldqm::Container1D _cDigiSize_Crate
Definition: DigiTask.h:140
hcaldqm::Container1D _cShapeCut_FED
Definition: DigiTask.h:89
hcaldqm::Container2D _cOccupancyCut_depth
Definition: DigiTask.h:128
hcaldqm::ContainerProf1D _cOccupancyCutvsBX_Subdet
Definition: DigiTask.h:137
double _cutSumQ_HF
Definition: DigiTask.h:49
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:106
HcalSubdetector
Definition: HcalAssistant.h:31
edm::EDGetTokenT< QIE11DigiCollection > _tokQIE11
Definition: DigiTask.h:45
int const FIBER_uTCA_MIN1
Definition: Constants.h:116
hcaldqm::Container1D _cfC_SubdetPM_QIE1011
Definition: DigiTask.h:83
double _cutSumQ_HBHE
Definition: DigiTask.h:49
std::map< HcalSubdetector, std::vector< HcalDetId > > _ledCalibrationChannels
Definition: DigiTask.h:188
hash_function_did const hash_did[nHashType_did]
hcaldqm::ContainerProf2D _cTimingCut_depth
Definition: DigiTask.h:102
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:157
#define end
Definition: vmac.h:39
hcaldqm::Container2D _cOccupancy_FEDVME
Definition: DigiTask.h:111
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)
hcaldqm::ContainerProf1D _cTimingCutvsLS_SubdetPM
Definition: DigiTask.h:101
hcaldqm::Container2D _cOccupancyCut_FEDVME
Definition: DigiTask.h:124
hcaldqm::ContainerProf1D _cSumQvsBX_SubdetPM_QIE1011
Definition: DigiTask.h:86
hcaldqm::ContainerSingle2D _cCapidMinusBXmod4_CrateSlotVME[4]
Definition: DigiTask.h:169
uint32_t hash_Subdet(HcalDetId const &)
hcaldqm::Container2D _cOccupancy_depth
Definition: DigiTask.h:117
std::string _name
Definition: DQModule.h:41
HcalElectronicsMap const * _emap
Definition: DQTask.h:59
hcaldqm::Container2D _cSummaryvsLS_FED
Definition: DigiTask.h:179
hcaldqm::filter::HashFilter _filter_FEDHF
Definition: DigiTask.h:68
int const CRATE_uTCA_MIN
Definition: Constants.h:88
const_iterator end() const
DigiTask(edm::ParameterSet const &)
Definition: DigiTask.cc:7
hcaldqm::ContainerProf1D _cOccupancyvsLS_Subdet
Definition: DigiTask.h:135
void _resetMonitors(hcaldqm::UpdateFreq) override
Definition: DigiTask.cc:765
hcaldqm::ContainerProf1D _cSumQvsLS_SubdetPM
Definition: DigiTask.h:78
hcaldqm::ContainerXXX< uint32_t > _xUni
Definition: DigiTask.h:144
hcaldqm::ContainerProf1D _cTimingCutvsLS_FED
Definition: DigiTask.h:100
hcaldqm::Container2D _cOccupancyCut_FEDuTCA
Definition: DigiTask.h:125
hcaldqm::Container2D _cOccupancy_ElectronicsVME
Definition: DigiTask.h:113
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:141
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:192
hcaldqm::ContainerXXX< uint32_t > _xNChsNominal
Definition: DigiTask.h:146
hcaldqm::Container1D _cSumQ_SubdetPM
Definition: DigiTask.h:76
hcaldqm::Container1D _cOccupancyvsiphi_SubdetPM
Definition: DigiTask.h:118
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:104
hcaldqm::ContainerSingle2D _cCapid_BadvsFEDvsLSmod60
Definition: DigiTask.h:172
hcaldqm::Container1D _cLETDCTime_SubdetPM
Definition: DigiTask.h:153
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
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:127
hcaldqm::ContainerProf2D _cTimingCut_ElectronicsVME
Definition: DigiTask.h:98
hcaldqm::Container2D _cLETDCvsADC_SubdetPM
Definition: DigiTask.h:151
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:158
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:115
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 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::ContainerProf1D _cDigiSizevsLS_FED
Definition: DigiTask.h:142
hcaldqm::ContainerXXX< uint32_t > _xNChs
Definition: DigiTask.h:145
virtual void fill(int, int)
hcaldqm::electronicsmap::ElectronicsMap _ehashmap
Definition: DigiTask.h:62
hcaldqm::ContainerProf1D _cOccupancyCutvsLS_Subdet
Definition: DigiTask.h:136
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:160
hcaldqm::ContainerProf2D _cLETDCTime_depth
Definition: DigiTask.h:154
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:119
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:99
#define constexpr
int const SLOT_uTCA_MIN
Definition: Constants.h:95
const_iterator begin() const
hcaldqm::Container1D _cSumQ_SubdetPM_QIE1011
Definition: DigiTask.h:84
hcaldqm::Container1D _cTimingCut_SubdetPM
Definition: DigiTask.h:95
Definition: Run.h:45
bool _unknownIdsPresent
Definition: DigiTask.h:177
hcaldqm::Container2D _cOccupancy_FEDuTCA
Definition: DigiTask.h:112
hcaldqm::Container1D _cCapidMinusBXmod4_SubdetPM
Definition: DigiTask.h:167
ib
Definition: cuy.py:662
hcaldqm::ContainerXXX< uint32_t > _xUniHF
Definition: DigiTask.h:144
double sumQ(DIGI const &digi, double ped, int i=0, int j=3)
Definition: Utilities.h:126
hcaldqm::Container1D _cfC_SubdetPM
Definition: DigiTask.h:75
hcaldqm::Container2D _cOccupancy_ElectronicsuTCA
Definition: DigiTask.h:114