CMS 3D CMS Logo

TPTask.cc
Go to the documentation of this file.
2 #include "DQM/L1TMonitor/interface/L1TStage2CaloLayer1.h" // For ComparisonHelper::zip
3 
4 
5 using namespace hcaldqm;
6 using namespace hcaldqm::constants;
8  DQTask(ps)
9 {
11  edm::InputTag("hcalDigis"));
13  edm::InputTag("caloLayer1Digis"));
15  edm::InputTag("emulDigis"));
17  edm::InputTag("emulTPDigisNoTDCCut"));
18 
19  _tokData = consumes<HcalTrigPrimDigiCollection>(_tagData);
20  _tokDataL1Rec = consumes<HcalTrigPrimDigiCollection>(_tagDataL1Rec);
21  _tokEmul = consumes<HcalTrigPrimDigiCollection>(_tagEmul);
22  _tokEmulNoTDCCut = consumes<HcalTrigPrimDigiCollection>(_tagEmulNoTDCCut);
23 
24  _skip1x1 = ps.getUntrackedParameter<bool>("skip1x1", true);
25  _cutEt = ps.getUntrackedParameter<int>("cutEt", 3);
27  "thresh_EtMsmRate_high", 0.2);
29  "thresh_EtMsmRate_low", 0.05);
31  "thresh_FGMsmRate", 0.2);
33  "thresh_FGMsmRate_low", 0.05);
34  _thresh_DataMsn = ps.getUntrackedParameter<double>("thresh_DataMsn",
35  0.1);
36  _thresh_EmulMsn = ps.getUntrackedParameter<double>("thresh_EmulMsn");
37  std::vector<int> tmp = ps.getUntrackedParameter<std::vector<int> >("vFGBitsReady");
38  for (uint32_t iii=0; iii<constants::NUM_FGBITS; iii++)
39  _vFGBitsReady.push_back(tmp[iii]);
40 
41  _vflags.resize(nTPFlag);
42  _vflags[fEtMsm]=flag::Flag("EtMsm");
43  _vflags[fDataMsn]=flag::Flag("DataMsn");
44  _vflags[fEmulMsn]=flag::Flag("EmulMsn");
45  _vflags[fUnknownIds]=flag::Flag("UnknownIds");
46  if (_ptype == fOnline) {
47  _vflags[fSentRecL1Msm]=flag::Flag("uHTR-L1TMsm");
48  }
49 }
50 
52  edm::Run const& r, edm::EventSetup const& es)
53 {
54  DQTask::bookHistograms(ib,r,es);
55 
56  // GET WHAT YOU NEED
58  es.get<HcalDbRecord>().get(dbs);
59  _emap = dbs->getHcalMapping();
60  std::vector<uint32_t> vVME;
61  std::vector<uint32_t> vuTCA;
62  std::vector<uint32_t> depth0;
63  vVME.push_back(HcalElectronicsId(FIBERCH_MIN,
66  FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
68  vVME);
70  vuTCA);
71  depth0.push_back(HcalTrigTowerDetId(1, 1, 0).rawId());
73  depth0);
74 
75  // INITIALIZE FIRST
76  // Et/FG
87  for (uint8_t iii=0; iii<constants::NUM_FGBITS; iii++)
88  {
93  }
94 
111 
112  // Occupancy
113  _cOccupancyData_depthlike.initialize(_name, "OccupancyData",
117  _cOccupancyEmul_depthlike.initialize(_name, "OccupancyEmul",
121  _cOccupancyCutData_depthlike.initialize(_name, "OccupancyCutData",
125  _cOccupancyCutEmul_depthlike.initialize(_name, "OccupancyCutEmul",
129 
130  // Mismatches
139 
140  if (_ptype == fOnline) {
141  // Mismatches: sent vs received
142  _cEtMsm_uHTR_L1T_depthlike.initialize(_name, "EtMsm_uHTR_L1T",
146  _cEtMsm_uHTR_L1T_LS.initialize(_name, "EtMsm_uHTR_L1T_LS",
149  }
150 
151  // Missing Data w.r.t. Emulator
160 
165 
166  _cOccupancyDatavsBX_TTSubdet.initialize(_name, "OccupancyDatavsBX",
170  _cOccupancyEmulvsBX_TTSubdet.initialize(_name, "OccupancyEmulvsBX",
174  _cOccupancyCutDatavsBX_TTSubdet.initialize(_name, "OccupancyCutDatavsBX",
178  _cOccupancyCutEmulvsBX_TTSubdet.initialize(_name, "OccupancyCutEmulvsBX",
182 
183  // INITIALIZE HISTOGRAMS to be used in Online only!
184  if (_ptype==fOnline)
185  {
186  _cEtCorr2x3_TTSubdet.initialize(_name, "EtCorr2x3",
191  _cOccupancyData2x3_depthlike.initialize(_name, "OccupancyData2x3",
195  _cOccupancyEmul2x3_depthlike.initialize(_name, "OccupancyEmul2x3",
199  _cEtCutDatavsLS_TTSubdet.initialize(_name, "EtCutDatavsLS",
203  _cEtCutEmulvsLS_TTSubdet.initialize(_name, "EtCutEmulvsLS",
207  _cEtCutDatavsBX_TTSubdet.initialize(_name, "EtCutDatavsBX",
211  _cEtCutEmulvsBX_TTSubdet.initialize(_name, "EtCutEmulvsBX",
215  _cEtCorrRatiovsLS_TTSubdet.initialize(_name, "EtCorrRatiovsLS",
219  _cEtCorrRatiovsBX_TTSubdet.initialize(_name, "EtCorrRatiovsBX",
223  _cEtMsmRatiovsLS_TTSubdet.initialize(_name, "EtMsmRatiovsLS",
227  _cEtMsmRatiovsBX_TTSubdet.initialize(_name, "EtMsmRatiovsBX",
239  _cMsnDatavsLS_TTSubdet.initialize(_name, "MsnDatavsLS",
243  _cMsnCutDatavsLS_TTSubdet.initialize(_name, "MsnCutDatavsLS",
247  _cMsnDatavsBX_TTSubdet.initialize(_name, "MsnDatavsBX",
251  _cMsnCutDatavsBX_TTSubdet.initialize(_name, "MsnCutDatavsBX",
255  _cMsnEmulvsLS_TTSubdet.initialize(_name, "MsnEmulvsLS",
259  _cMsnCutEmulvsLS_TTSubdet.initialize(_name, "MsnCutEmulvsLS",
263  _cMsnEmulvsBX_TTSubdet.initialize(_name, "MsnEmulvsBX",
267  _cMsnCutEmulvsBX_TTSubdet.initialize(_name, "MsnCutEmulvsBX",
271  _cOccupancyDatavsLS_TTSubdet.initialize(_name, "OccupancyDatavsLS",
276  "OccupancyCutDatavsLS",
280  _cOccupancyDatavsBX_TTSubdet.initialize(_name, "OccupancyDatavsBX",
285  "OccupancyCutDatavsBX",
289  _cOccupancyEmulvsLS_TTSubdet.initialize(_name, "OccupancyEmulvsLS",
294  "OccupancyCutEmulvsLS",
298  _cOccupancyEmulvsBX_TTSubdet.initialize(_name, "OccupancyEmulvsBX",
303  "OccupancyCutEmulvsBX",
307 
308  _cOccupancy_HF_depth.initialize(_name, "OccupancyDataHF_depth",
312  _cOccupancyNoTDC_HF_depth.initialize(_name, "OccupancyEmulHFNoTDC_depth",
316  _cOccupancy_HF_ieta.initialize(_name, "OccupancyDataHF_ieta",
319  _cOccupancyNoTDC_HF_ieta.initialize(_name, "OccupancyEmulHFNoTDC_ieta",
322  }
323 
324  // FED-based containers
325  if (_ptype != fOffline) { // hidefed2crate
326  std::vector<int> vFEDs = hcaldqm::utilities::getFEDList(_emap);
327  std::vector<int> vFEDsVME = hcaldqm::utilities::getFEDVMEList(_emap);
328  std::vector<int> vFEDsuTCA = hcaldqm::utilities::getFEDuTCAList(_emap);
329  // push the rawIds of each fed into the vector
330  // this vector is used at endlumi for online state generation
331  for (std::vector<int>::const_iterator it=vFEDsVME.begin();
332  it!=vFEDsVME.end(); ++it)
333  {
335  SPIGOT_MIN, (*it)-FED_VME_MIN).rawId());
336  }
337  for (std::vector<int>::const_iterator it=vFEDsuTCA.begin();
338  it!=vFEDsuTCA.end(); ++it)
339  {
340  std::pair<uint16_t, uint16_t> cspair = hcaldqm::utilities::fed2crate(*it);
341  _vhashFEDs.push_back(HcalElectronicsId(cspair.first,
342  cspair.second, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
343  }
346  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
351  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
356  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
361  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
364  // Occupancies
367  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
372  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
377  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
382  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
385 
388  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
393  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
398  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
403  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
406  // Mismatches
409  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
414  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
419  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
424  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
427 
428  // Missing Data w.r.t. Emulator
431  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
436  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
441  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
446  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
451  new hcaldqm::quantity::FEDQuantity(vFEDsVME),
456  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
459  if (_ptype == fOnline) {
460  _cSummaryvsLS_FED.initialize(_name, "SummaryvsLS",
465  _cSummaryvsLS.initialize(_name, "SummaryvsLS",
469 
478  }
479  }
480 
481  // BOOK HISTOGRAMS
482  char aux[20];
483  for (unsigned int iii=0; iii<constants::NUM_FGBITS; iii++)
484  {
485  sprintf(aux, "BIT%d", iii);
486  _cFGCorr_TTSubdet[iii].book(ib, _emap, _subsystem, aux);
487  }
491  if (_ptype != fOffline) { // hidefed2crate
496  }
501  if (_ptype != fOffline) { // hidefed2crate
510  }
515 
521 
522  if (_ptype == fOnline) {
525  }
526 
527  if (_ptype != fOffline) { // hidefed2crate
538  }
539 
540  // whatever has to go online only goes here
541  if (_ptype==fOnline)
542  {
574 
575  _xEtMsm.book(_emap);
576  _xFGMsm.book(_emap);
583 
588 
589  }
590 
591  // initialize the hash map
593 
594  // book the flag for unknown ids and the online guy as well
596  meUnknownIds1LS = ib.book1D("UnknownIds", "UnknownIds",
597  1, 0, 1);
598  _unknownIdsPresent = false;
600 }
601 
603 {
604  DQTask::_resetMonitors(uf);
605  switch (uf)
606  {
607  case hcaldqm::f1LS:
608  _unknownIdsPresent = false;
609  break;
610  default :
611  break;
612  }
613 }
614 
615 /* virtual */ void TPTask::_process(edm::Event const& e,
616  edm::EventSetup const&)
617 {
622  if (!e.getByToken(_tokData, cdata))
623  _logger.dqmthrow("Collection HcalTrigPrimDigiCollection isn't available: "
624  + _tagData.label() + " " + _tagData.instance());
625  if (_ptype == fOnline) {
626  if (!e.getByToken(_tokDataL1Rec, cdataL1Rec))
627  _logger.dqmthrow("Collection HcalTrigPrimDigiCollection isn't available: "
628  + _tagDataL1Rec.label() + " " + _tagDataL1Rec.instance());
629  }
630  if (!e.getByToken(_tokEmul, cemul))
631  _logger.dqmthrow("Collection HcalTrigPrimDigiCollection isn't available: "
632  + _tagEmul.label() + " " + _tagEmul.instance());
633  if (_ptype == fOnline) {
634  if (!e.getByToken(_tokEmulNoTDCCut, cemul_noTDCCut)) {
635  _logger.dqmthrow("Collection HcalTrigPrimDigiCollection isn't available: "
637  }
638  }
639 
640  // extract some info per event
641  int bx = e.bunchCrossing();
642 
643  // some summaries... per event
644  int numHBHE(0), numHF(0), numCutHBHE(0), numCutHF(0);
645  int numCorrHBHE(0), numCorrHF(0);
646  int numMsmHBHE(0), numMsmHF(0);
647  int numMsnHBHE(0), numMsnHF(0), numMsnCutHBHE(0), numMsnCutHF(0);
648 
649  // for explanation see RecHit or Digi Tasks
650  uint32_t rawidHBHEValid = 0;
651  uint32_t rawidHFValid = 0;
652 
653  /*
654  * STEP1:
655  * Loop over the data digis and
656  * - do ... for all the data digis
657  * - find the emulator digi
658  * --- compare soi Et
659  * --- compare soi FG
660  * --- Do not fill anything for emulator Et!!!
661  */
663  it!=cdata->end(); ++it)
664  {
665  // Explicit check on the DetIds present in the Collection
666  HcalTrigTowerDetId tid = it->id();
667  uint32_t rawid = _ehashmap.lookup(tid);
668  if (rawid==0) {
669  meUnknownIds1LS->Fill(1);
670  _unknownIdsPresent = true;
671  continue;
672  }
673  HcalElectronicsId const& eid(rawid);
674  if (tid.ietaAbs()>=29)
675  rawidHFValid = tid.rawId();
676  else
677  rawidHBHEValid = tid.rawId();
678 
679  //
680  // HF 2x3 TPs Treat theam separately and only for ONLINE!
681  //
682  if (tid.version()==0 && tid.ietaAbs()>=29)
683  {
684  // do this only for online processing
685  if (_ptype == fOnline)
686  {
689  if (jt!=cemul->end())
690  _cEtCorr2x3_TTSubdet.fill(tid, it->SOI_compressedEt(),
691  jt->SOI_compressedEt());
692  }
693 
694  // skip to the next tp digi
695  continue;
696  }
697 
698  // FROM THIS POINT, HBHE + 1x1 HF TPs
699  int soiEt_d = it->t0().compressedEt();
700  int soiFG_d[constants::NUM_FGBITS];
701  for (uint32_t ibit=0; ibit<constants::NUM_FGBITS; ibit++)
702  soiFG_d[ibit] = it->t0().fineGrain(ibit)?1:0;
703  tid.ietaAbs()>=29?numHF++:numHBHE++;
704 
705  // fill w/o a cut
706  _cEtData_TTSubdet.fill(tid, soiEt_d);
707  _cEtData_depthlike.fill(tid, soiEt_d);
709 
710  if (_ptype == fOnline) {
711  if (tid.ietaAbs()>=29) {
712  if (soiEt_d > 0) {
715  }
716  }
717  }
718  if (_ptype != fOffline) { // hidefed2crate
719  if (eid.isVMEid())
720  {
722  _cEtData_ElectronicsVME.fill(eid, soiEt_d);
723  }
724  else
725  {
727  _cEtData_ElectronicsuTCA.fill(eid, soiEt_d);
728  }
729  }
730 
731  // FILL w/a CUT
732  if (soiEt_d>_cutEt)
733  {
734  tid.ietaAbs()>=29?numCutHF++:numCutHBHE++;
736  _cEtCutData_depthlike.fill(tid, soiEt_d);
737 
738  // ONLINE ONLY!
739  if (_ptype==fOnline)
740  {
742  _cEtCutDatavsBX_TTSubdet.fill(tid, bx, soiEt_d);
743  _xDataTotal.get(eid)++;
744  }
745  // ^^^ONLINE ONLY!
746  if (_ptype != fOffline) { // hidefed2crate
747  if (eid.isVMEid())
749  else
751  }
752  }
753 
754  // FIND the EMULATOR DIGI
756  if (jt!=cemul->end())
757  {
758  // if PRESENT!
759  int soiEt_e = jt->SOI_compressedEt();
760  int soiFG_e[constants::NUM_FGBITS];
761  for (uint32_t ibit=0; ibit<constants::NUM_FGBITS; ibit++)
762  soiFG_e[ibit] = jt->t0().fineGrain(ibit)?1:0;
763  // if both are zeroes => set 1
764  double rEt = soiEt_d==0 && soiEt_e==0?1:
765  double(std::min(soiEt_d, soiEt_e))/
766  double(std::max(soiEt_e, soiEt_d));
767 
768  // ONLINE ONLY!
769  if (_ptype==fOnline)
770  {
771  _xNumCorr.get(eid)++;
772  tid.ietaAbs()>=29?numCorrHF++:numCorrHBHE++;
774  _cEtCorrRatiovsBX_TTSubdet.fill(tid, bx, rEt);
775  }
776  // ^^^ONLINE ONLY!
777 
778  _cEtCorrRatio_depthlike.fill(tid, rEt);
779  _cEtCorr_TTSubdet.fill(tid, soiEt_d, soiEt_e);
780  for (uint32_t ibit=0; ibit<constants::NUM_FGBITS; ibit++)
781  _cFGCorr_TTSubdet[ibit].fill(tid, soiFG_d[ibit], soiFG_e[ibit]);
782  // FILL w/o a CUT
783  if (_ptype != fOffline) { // hidefed2crate
784  if (eid.isVMEid())
785  {
787  }
788  else
789  {
791  }
792  }
793 
794  // if SOI Et are not equal
795  // fill mismatched
796  if (soiEt_d!=soiEt_e)
797  {
798  tid.ietaAbs()>=29?numMsmHF++:numMsmHBHE++;
799  _cEtMsm_depthlike.fill(tid);
800  if (_ptype != fOffline) { // hidefed2crate
801  if (eid.isVMEid())
803  else
805  }
806  if (_ptype==fOnline)
807  _xEtMsm.get(eid)++;
808  }
809  // if SOI FG are not equal
810  // fill mismatched.
811  // Do this comparison only for FG Bits that are commissioned
812  for (uint32_t ibit=0; ibit<constants::NUM_FGBITS; ibit++)
813  if (soiFG_d[ibit]!=soiFG_e[ibit] && _vFGBitsReady[ibit])
814  {
815  _cFGMsm_depthlike.fill(tid);
816  if (_ptype != fOffline) { // hidefed2crate
817  if (eid.isVMEid())
819  else
821  }
822  if (_ptype==fOnline)
823  _xFGMsm.get(eid)++;
824  }
825  }
826  else
827  {
828  // IF MISSING
829  _cEtCorr_TTSubdet.fill(tid, soiEt_d, -2);
831  tid.ietaAbs()>=29?numMsnHF++:numMsnHBHE++;
832  if (_ptype != fOffline) { // hidefed2crate
833  if (eid.isVMEid())
835  else
837  }
838 
839  if (soiEt_d>_cutEt)
840  {
841  tid.ietaAbs()>=29?numMsnCutHF++:numMsnCutHBHE++;
842  if (_ptype==fOnline)
843  _xEmulMsn.get(eid)++;
844  }
845  }
846  }
847 
848  if (_ptype == fOnline) {
849  for (HcalTrigPrimDigiCollection::const_iterator it=cemul_noTDCCut->begin(); it!=cemul_noTDCCut->end(); ++it) {
850  // Explicit check on the DetIds present in the Collection
851  HcalTrigTowerDetId tid = it->id();
852  uint32_t rawid = _ehashmap.lookup(tid);
853  if (rawid==0) {
854  continue;
855  }
856  if (tid.version()==0 && tid.ietaAbs()>=29)
857  {
858  continue;
859  }
860  int soiEt_e = it->SOI_compressedEt();
861  if (tid.ietaAbs() >= 29) {
862  if (soiEt_e > 0) {
865  }
866  }
867  }
868  }
869 
870  if (rawidHFValid!=0 && rawidHBHEValid!=0)
871  {
872  // ONLINE ONLY!
873  if (_ptype==fOnline)
874  {
876  numHBHE);
878  numHF);
880  bx, numCutHBHE);
882  numCutHF);
884  _currentLS, numHBHE);
886  _currentLS,numHF);
888  _currentLS, numCutHBHE);
890  _currentLS, numCutHF);
891 
893  numMsmHBHE);
895  numMsmHF);
896  _cEtMsmvsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), bx,
897  numMsmHBHE);
898  _cEtMsmvsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), bx,
899  numMsmHF);
900 
902  _currentLS,
903  double(numMsmHBHE)/double(numCorrHBHE));
905  _currentLS,
906  double(numMsmHF)/double(numCorrHF));
908  double(numMsmHBHE)/double(numCorrHBHE));
910  double(numMsmHF)/double(numCorrHF));
911 
913  _currentLS, numMsnHBHE);
915  _currentLS, numMsnHF);
917  _currentLS, numMsnCutHBHE);
919  _currentLS, numMsnCutHF);
920 
922  bx, numMsnHBHE);
924  bx, numMsnHF);
926  bx, numMsnCutHBHE);
928  bx, numMsnCutHF);
929  }
930  }
931 
932  numHBHE=0; numHF=0; numCutHBHE=0; numCutHF=0;
933  numMsnHBHE=0; numMsnHF=0; numCutHBHE=0; numCutHF=0;
934 
935  // reset
936  rawidHBHEValid = 0;
937  rawidHFValid = 0;
938 
939  /*
940  * STEP2:
941  * Loop over the emulator digis and
942  * - do ... for all the emulator digis
943  * - find data digi and
944  * --- if found skip
945  * --- if not found - fill the missing Data plot
946  */
948  it!=cemul->end(); ++it)
949  {
950  // Explicit check on the DetIds present in the Collection
951  HcalTrigTowerDetId tid = it->id();
952  uint32_t rawid = _ehashmap.lookup(tid);
953  if (rawid==0)
954  {meUnknownIds1LS->Fill(1); _unknownIdsPresent = true; continue;}
955  HcalElectronicsId const& eid(rawid);
956  if (tid.ietaAbs()>=29)
957  rawidHFValid = tid.rawId();
958  else
959  rawidHBHEValid = tid.rawId();
960 
961  // HF 2x3 TPs. Only do it for Online!!!
962  if (tid.version()==0 && tid.ietaAbs()>=29)
963  {
964  // only do this for online processing
965  if (_ptype==fOnline)
967  continue;
968  }
969  int soiEt = it->SOI_compressedEt();
970 
971  // FILL/INCREMENT w/o a CUT
972  tid.ietaAbs()>=29?numHF++:numHBHE++;
973  _cEtEmul_TTSubdet.fill(tid, soiEt);
974  _cEtEmul_depthlike.fill(tid, soiEt);
976  if (_ptype != fOffline) { // hidefed2crate
977  if (eid.isVMEid())
978  {
980  _cEtEmul_ElectronicsVME.fill(eid, soiEt);
981  }
982  else
983  {
985  _cEtEmul_ElectronicsuTCA.fill(eid, soiEt);
986  }
987  }
988 
989  // FILL w/ a CUT
990  if (soiEt>_cutEt)
991  {
992  tid.ietaAbs()>=29?numCutHF++:numCutHBHE++;
994  _cEtCutEmul_depthlike.fill(tid, soiEt);
995  if (_ptype != fOffline) { // hidefed2crate
996  if (eid.isVMEid())
998  else
1000  }
1001 
1002  // ONLINE ONLY!
1003  if (_ptype==fOnline)
1004  {
1006  _cEtCutEmulvsBX_TTSubdet.fill(tid, bx, soiEt);
1007  _xEmulTotal.get(eid)++;
1008  }
1009  // ^^^ONLINE ONLY!
1010  }
1011 
1012  // Look for a data digi.
1013  // Do not perform if the emulated digi is zero suppressed.
1014  if(!(it->zsMarkAndPass())) {
1016  if (jt==cdata->end())
1017  {
1018  tid.ietaAbs()>=29?numMsnHF++:numMsnHBHE++;
1019  _cEtCorr_TTSubdet.fill(tid, -2, soiEt);
1021  if (_ptype != fOffline) { // hidefed2crate
1022  if (eid.isVMEid())
1024  else
1026  }
1027  if (soiEt>_cutEt)
1028  {
1029  tid.ietaAbs()>=29?numMsnCutHF++:numMsnCutHBHE++;
1030  if (_ptype==fOnline)
1031  _xDataMsn.get(eid)++;
1032  }
1033  }
1034  }
1035  }
1036 
1037  // ONLINE ONLY!
1038  if (_ptype==fOnline) {
1039  if (rawidHBHEValid != 0) {
1041  numHBHE);
1043  bx,
1044  numCutHBHE);
1046  _currentLS, numHBHE);
1048  _currentLS, numCutHBHE);
1050  _currentLS, numMsnHBHE);
1052  _currentLS, numMsnCutHBHE);
1054  bx, numMsnHBHE);
1056  bx, numMsnCutHBHE);
1057  }
1058  if (rawidHFValid!=0) {
1060  numHF);
1062  numCutHF);
1064  _currentLS,numHF);
1066  _currentLS, numCutHF);
1068  _currentLS, numMsnHF);
1070  _currentLS, numMsnCutHF);
1072  bx, numMsnHF);
1074  bx, numMsnCutHF);
1075  }
1076  // ^^^ONLINE ONLY!
1077  }
1078 
1079  if (_ptype == fOnline) {
1080  // Compare the sent ("uHTR") and received (L1T "layer1") TPs
1081  // This algorithm is copied from DQM/L1TMonitor/src/L1TStage2CaloLayer1.cc
1082  // ...but it turns out to be extremely useful for detecting uHTR problems
1083  _vTPDigis_SentRec.clear();
1084  ComparisonHelper::zip(cdata->begin(), cdata->end(),
1085  cdataL1Rec->begin(), cdataL1Rec->end(),
1086  std::inserter(_vTPDigis_SentRec, _vTPDigis_SentRec.begin()),
1088 
1089  for ( const auto& tpPair : _vTPDigis_SentRec) {
1090  // From here, literal copy pasta from L1T
1091  const auto& sentTp = tpPair.first;
1092  const auto& recdTp = tpPair.second;
1093  const int ieta = sentTp.id().ieta();
1094  if ( abs(ieta) > 28 && sentTp.id().version() != 1 ) continue;
1095  //const int iphi = sentTp.id().iphi();
1096  const bool towerMasked = recdTp.sample(0).raw() & (1<<13);
1097  //const bool linkMasked = recdTp.sample(0).raw() & (1<<14);
1098  const bool linkError = recdTp.sample(0).raw() & (1<<15);
1099 
1100  if ( towerMasked || linkError ) {
1101  // Do not compare if known to be bad
1102  continue;
1103  }
1104  const bool HetAgreement = sentTp.SOI_compressedEt() == recdTp.SOI_compressedEt();
1105  const bool Hfb1Agreement = sentTp.SOI_fineGrain() == recdTp.SOI_fineGrain();
1106  // Ignore minBias (FB2) bit if we receieve 0 ET, which means it is likely zero-suppressed on HCal readout side
1107  const bool Hfb2Agreement = ( abs(ieta) < 29 ) ? true : (recdTp.SOI_compressedEt()==0 || (sentTp.SOI_fineGrain(1) == recdTp.SOI_fineGrain(1)));
1108  if (!(HetAgreement && Hfb1Agreement && Hfb2Agreement)) {
1109  HcalTrigTowerDetId tid = sentTp.id();
1110  uint32_t rawid = _ehashmap.lookup(tid);
1111  if (rawid==0) {
1112  continue;
1113  }
1114  HcalElectronicsId const& eid(rawid);
1115 
1118  _xSentRecL1Msm.get(eid)++;
1119  }
1120  }
1121  }
1122 }
1123 
1125  edm::EventSetup const& es)
1126 {
1127  DQTask::beginLuminosityBlock(lb, es);
1128 }
1129 
1131  edm::EventSetup const& es)
1132 {
1133  if (_ptype!=fOnline)
1134  return;
1135 
1136  //
1137  // GENERATE STATUS ONLY FOR ONLINE!
1138  //
1139  for (std::vector<uint32_t>::const_iterator it=_vhashFEDs.begin();
1140  it!=_vhashFEDs.end(); ++it)
1141  {
1142  flag::Flag fSum("TP");
1144 
1145  std::vector<uint32_t>::const_iterator cit=std::find(
1146  _vcdaqEids.begin(), _vcdaqEids.end(), *it);
1147  if (cit==_vcdaqEids.end())
1148  {
1149  // not @cDAQ
1150  for (uint32_t iflag=0; iflag<_vflags.size(); iflag++)
1151  _cSummaryvsLS_FED.setBinContent(eid, _currentLS, int(iflag),
1152  int(flag::fNCDAQ));
1154  continue;
1155  }
1156 
1158  {
1159  // FED is @cDAQ
1160  double etmsm = _xNumCorr.get(eid)>0?
1161  double(_xEtMsm.get(eid))/double(_xNumCorr.get(eid)):0;
1162  /*
1163  * UNUSED VARS
1164  * double dmsm = _xDataTotal.get(eid)>0?
1165  double(_xDataMsn.get(eid))/double(_xDataTotal.get(eid)):0;
1166  double emsm = _xEmulTotal.get(eid)>0?
1167  double(_xEmulMsn.get(eid))/double(_xEmulTotal.get(eid)):0;
1168  double fgmsm = _xNumCorr.get(eid)>0?
1169  double(_xFGMsm.get(eid))/double(_xNumCorr.get(eid)):0;
1170  */
1171  if (etmsm>=_thresh_EtMsmRate_high)
1172  _vflags[fEtMsm]._state = flag::fBAD;
1173  else if (etmsm>=_thresh_EtMsmRate_low)
1174  _vflags[fEtMsm]._state = flag::fPROBLEMATIC;
1175  else
1176  _vflags[fEtMsm]._state = flag::fGOOD;
1177  /*
1178  * DISABLE THESE FLAGS FOR ONLINE FOR NOW!
1179  if (dmsm>=_thresh_DataMsn)
1180  _vflags[fDataMsn]._state = flag::fBAD;
1181  else
1182  _vflags[fDataMsn]._state = flag::fGOOD;
1183  if (emsm>=_thresh_EmulMsn)
1184  _vflags[fEmulMsn]._state = flag::fBAD;
1185  else
1186  _vflags[fEmulMsn]._state = flag::fGOOD;
1187  */
1188 
1189  if (_ptype == fOnline) {
1190  if (_xSentRecL1Msm.get(eid) >= 1) {
1191  _vflags[fSentRecL1Msm]._state = flag::fBAD;
1192  } else {
1193  _vflags[fSentRecL1Msm]._state = flag::fGOOD;
1194  }
1195  }
1196  }
1197 
1198  if (_unknownIdsPresent)
1199  _vflags[fUnknownIds]._state = flag::fBAD;
1200  else
1201  _vflags[fUnknownIds]._state = flag::fGOOD;
1202 
1203 
1204 
1205  int iflag=0;
1206  for (std::vector<flag::Flag>::iterator ft=_vflags.begin();
1207  ft!=_vflags.end(); ++ft)
1208  {
1209  _cSummaryvsLS_FED.setBinContent(eid, _currentLS, int(iflag),
1210  ft->_state);
1211  fSum+=(*ft);
1212  iflag++;
1213 
1214  // this is the MUST!
1215  // reset after using this flag
1216  ft->reset();
1217  }
1218  _cSummaryvsLS.setBinContent(eid, _currentLS, int(fSum._state));
1219  }
1220 
1221  // reset...
1224  _xEmulTotal.reset();
1225 
1226  // in the end always do the DQTask::endLumi
1227  DQTask::endLuminosityBlock(lb, es);
1228 }
1229 
1231 
void initialize(std::string const &folder, hashfunctions::HashType, quantity::Quantity *, quantity::Quantity *, int debug=0) override
hcaldqm::ContainerProf1D _cEtCorrRatiovsBX_TTSubdet
Definition: TPTask.h:106
constexpr uint32_t rawId() const
hcaldqm::ContainerXXX< uint32_t > _xDataTotal
Definition: TPTask.h:179
T getUntrackedParameter(std::string const &, T const &) const
bool _skip1x1
Definition: TPTask.h:61
hcaldqm::ContainerProf1D _cMsnCutEmulvsBX_TTSubdet
Definition: TPTask.h:161
hcaldqm::Container2D _cMsnData_ElectronicsVME
Definition: TPTask.h:146
hcaldqm::Container1D _cEtEmul_TTSubdet
Definition: TPTask.h:81
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:40
hcaldqm::ContainerSingleProf2D _cEtData_depthlike
Definition: TPTask.h:96
edm::InputTag _tagData
Definition: TPTask.h:39
int const CRATE_VME_MIN
Definition: Constants.h:111
hcaldqm::ContainerProf1D _cMsnDatavsBX_TTSubdet
Definition: TPTask.h:151
double _thresh_FGMsmRate_high
Definition: TPTask.h:63
hcaldqm::ContainerSingle2D _cOccupancyCutEmul_depthlike
Definition: TPTask.h:123
hcaldqm::ContainerProf1D _cMsnDatavsLS_TTSubdet
Definition: TPTask.h:149
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
edm::InputTag _tagDataL1Rec
Definition: TPTask.h:40
void fill(HcalDetId const &) override
std::pair< uint16_t, uint16_t > fed2crate(int fed)
Definition: Utilities.cc:12
std::vector< uint32_t > _vhashFEDs
Definition: TPTask.h:69
hcaldqm::ContainerProf1D _cEtMsmvsLS_TTSubdet
Definition: TPTask.h:136
hcaldqm::Container2D _cOccupancyData_ElectronicsVME
Definition: TPTask.h:109
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
void initialize(HcalElectronicsMap const *, ElectronicsMapType etype=fHcalElectronicsMap)
hcaldqm::ContainerProf1D _cEtCutEmulvsLS_TTSubdet
Definition: TPTask.h:86
hcaldqm::electronicsmap::ElectronicsMap _ehashmap
Definition: TPTask.h:72
edm::EDGetTokenT< HcalTrigPrimDigiCollection > _tokData
Definition: TPTask.h:43
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
std::vector< std::pair< HcalTriggerPrimitiveDigi, HcalTriggerPrimitiveDigi > > _vTPDigis_SentRec
Definition: TPTask.h:187
UpdateFreq
Definition: DQTask.h:17
MonitorElement * meUnknownIds1LS
Definition: TPTask.h:174
State _state
Definition: Flag.h:79
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:50
std::vector< HcalTriggerPrimitiveDigi >::const_iterator const_iterator
hcaldqm::ContainerSingleProf2D _cEtCorrRatio_depthlike
Definition: TPTask.h:104
hcaldqm::ContainerProf1D _cMsnCutDatavsBX_TTSubdet
Definition: TPTask.h:152
int bunchCrossing() const
Definition: EventBase.h:66
int _cutEt
Definition: TPTask.h:62
virtual void initialize(std::string const &folder, quantity::Quantity *, quantity::Quantity *, quantity::Quantity *qz=new quantity::ValueQuantity(quantity::fN), int debug=0)
virtual example_stream void bookHistograms(DQMStore::IBooker &,@example_stream edm::Run const &,@example_stream edm::EventSetup const &) override
int const SPIGOT_MIN
Definition: Constants.h:136
hcaldqm::ContainerProf1D _cMsnCutDatavsLS_TTSubdet
Definition: TPTask.h:150
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
virtual void reset()
Definition: ContainerXXX.h:364
hcaldqm::ContainerSingle2D _cOccupancyCutData_depthlike
Definition: TPTask.h:122
double _thresh_FGMsmRate_low
Definition: TPTask.h:63
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
int const FIBER_VME_MIN
Definition: Constants.h:141
hcaldqm::ContainerProf1D _cOccupancyDatavsLS_TTSubdet
Definition: TPTask.h:168
edm::EDGetTokenT< HcalTrigPrimDigiCollection > _tokEmulNoTDCCut
Definition: TPTask.h:46
edm::EDGetTokenT< HcalTrigPrimDigiCollection > _tokDataL1Rec
Definition: TPTask.h:44
hcaldqm::Container2D _cOccupancyEmul_ElectronicsVME
Definition: TPTask.h:111
hcaldqm::ContainerProf1D _cEtMsmRatiovsLS_TTSubdet
Definition: TPTask.h:137
hcaldqm::ContainerSingle2D _cOccupancyEmul2x3_depthlike
Definition: TPTask.h:127
hcaldqm::ContainerProf1D _cMsnEmulvsBX_TTSubdet
Definition: TPTask.h:160
int const FIBERCH_MIN
Definition: Constants.h:151
void Fill(long long x)
double _thresh_EtMsmRate_low
Definition: TPTask.h:63
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
hcaldqm::ContainerProf2D _cEtCorrRatio_ElectronicsuTCA
Definition: TPTask.h:103
std::vector< int > getFEDVMEList(HcalElectronicsMap const *)
Definition: Utilities.cc:119
hcaldqm::Container2D _cFGCorr_TTSubdet[hcaldqm::constants::NUM_FGBITS]
Definition: TPTask.h:84
hcaldqm::ContainerXXX< uint32_t > _xDataMsn
Definition: TPTask.h:179
hcaldqm::filter::HashFilter _filter_uTCA
Definition: TPTask.h:76
double _thresh_EmulMsn
Definition: TPTask.h:63
hcaldqm::Container2D _cSummaryvsLS_FED
Definition: TPTask.h:177
ProcessingType _ptype
Definition: DQModule.h:59
virtual void fill(uint32_t)
Definition: Container1D.cc:82
edm::InputTag _tagEmulNoTDCCut
Definition: TPTask.h:42
hcaldqm::Container2D _cOccupancyCutData_ElectronicsVME
Definition: TPTask.h:114
std::vector< hcaldqm::flag::Flag > _vflags
Definition: TPTask.h:49
hcaldqm::ContainerSingle1D _cEtMsm_uHTR_L1T_LS
Definition: TPTask.h:143
virtual void initialize(std::string const &folder, quantity::Quantity *, quantity::Quantity *qy=new quantity::ValueQuantity(quantity::fN), int debug=0)
void reset()
Definition: Flag.h:76
void setLumiFlag()
this ME is meant to be stored for each luminosity section
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
virtual void setBinContent(int, int, int)
hcaldqm::ContainerXXX< uint32_t > _xEmulMsn
Definition: TPTask.h:179
void _resetMonitors(hcaldqm::UpdateFreq) override
Definition: TPTask.cc:602
constexpr bool isVMEid() const
void dqmthrow(std::string const &msg) const
Definition: Logger.h:15
hcaldqm::ContainerProf2D _cEtData_ElectronicsVME
Definition: TPTask.h:90
hcaldqm::ContainerProf1D _cEtMsmvsBX_TTSubdet
Definition: TPTask.h:138
int const FED_VME_MIN
Definition: Constants.h:98
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)
TPTask(edm::ParameterSet const &)
Definition: TPTask.cc:7
hcaldqm::ContainerProf1D _cOccupancyDatavsBX_TTSubdet
Definition: TPTask.h:164
hcaldqm::ContainerProf2D _cEtEmul_ElectronicsuTCA
Definition: TPTask.h:93
hcaldqm::ContainerProf1D _cEtCorrRatiovsLS_TTSubdet
Definition: TPTask.h:105
hcaldqm::ContainerSingle2D _cOccupancyData2x3_depthlike
Definition: TPTask.h:126
hcaldqm::ContainerSingle2D _cFGMsm_depthlike
Definition: TPTask.h:135
hcaldqm::ContainerProf2D _cEtEmul_ElectronicsVME
Definition: TPTask.h:92
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:106
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
hcaldqm::filter::HashFilter _filter_depth0
Definition: TPTask.h:77
int const FIBER_uTCA_MIN1
Definition: Constants.h:144
hcaldqm::ContainerProf2D _cEtCorrRatio_ElectronicsVME
Definition: TPTask.h:102
hcaldqm::ContainerXXX< uint32_t > _xEtMsm
Definition: TPTask.h:179
hcaldqm::Container2D _cEtMsm_ElectronicsuTCA
Definition: TPTask.h:131
hcaldqm::Container2D _cOccupancyCutEmul_ElectronicsuTCA
Definition: TPTask.h:117
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: TPTask.cc:51
Logger _logger
Definition: DQModule.h:70
T min(T a, T b)
Definition: MathUtil.h:58
hcaldqm::ContainerSingle2D _cOccupancy_HF_depth
Definition: TPTask.h:183
double _thresh_EtMsmRate_high
Definition: TPTask.h:63
std::string _name
Definition: DQModule.h:57
hcaldqm::ContainerProf1D _cOccupancyCutDatavsLS_TTSubdet
Definition: TPTask.h:170
hcaldqm::Container2D _cOccupancyCutData_ElectronicsuTCA
Definition: TPTask.h:115
HcalElectronicsMap const * _emap
Definition: DQTask.h:73
hcaldqm::ContainerSingle2D _cSummaryvsLS
Definition: TPTask.h:178
void initialize(std::string const &folder, quantity::Quantity *, quantity::Quantity *, quantity::Quantity *qz=new quantity::ValueQuantity(quantity::fN), int debug=0) override
int const CRATE_uTCA_MIN
Definition: Constants.h:116
hcaldqm::ContainerSingle2D _cOccupancyData_depthlike
Definition: TPTask.h:120
hcaldqm::Container2D _cOccupancyCutEmul_ElectronicsVME
Definition: TPTask.h:116
const_iterator end() const
hcaldqm::ContainerSingle2D _cEtMsm_depthlike
Definition: TPTask.h:134
hcaldqm::ContainerProf1D _cEtCutDatavsLS_TTSubdet
Definition: TPTask.h:85
hcaldqm::Container2D _cMsnData_ElectronicsuTCA
Definition: TPTask.h:147
hcaldqm::Container2D _cFGMsm_ElectronicsVME
Definition: TPTask.h:132
hcaldqm::Container2D _cMsnEmul_ElectronicsuTCA
Definition: TPTask.h:156
hcaldqm::ContainerProf1D _cOccupancyEmulvsBX_TTSubdet
Definition: TPTask.h:165
hcaldqm::ContainerXXX< uint32_t > _xEmulTotal
Definition: TPTask.h:179
double _thresh_DataMsn
Definition: TPTask.h:63
hcaldqm::ContainerXXX< uint32_t > _xSentRecL1Msm
Definition: TPTask.h:179
bool isFEDHBHE(HcalElectronicsId const &)
Definition: Utilities.cc:172
virtual void book(HcalElectronicsMap const *)
Definition: ContainerXXX.h:97
hcaldqm::Container2D _cFGMsm_ElectronicsuTCA
Definition: TPTask.h:133
virtual void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="")
Definition: Container1D.cc:777
hcaldqm::ContainerProf1D _cEtCutDatavsBX_TTSubdet
Definition: TPTask.h:87
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:31
int version() const
get the version code for the trigger tower
hcaldqm::ContainerSingle2D _cEtMsm_uHTR_L1T_depthlike
Definition: TPTask.h:142
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
std::vector< bool > _vFGBitsReady
Definition: TPTask.h:66
hcaldqm::ContainerProf1D _cOccupancyCutEmulvsBX_TTSubdet
Definition: TPTask.h:167
hcaldqm::ContainerXXX< uint32_t > _xFGMsm
Definition: TPTask.h:179
hcaldqm::Container2D _cOccupancyEmul_ElectronicsuTCA
Definition: TPTask.h:112
void initialize(std::string const &folder, hashfunctions::HashType, quantity::Quantity *, quantity::Quantity *, quantity::Quantity *qz=new quantity::ValueQuantity(quantity::fEnergy), int debug=0) override
void setBinContent(HcalDetId const &, int) override
Definition: Container2D.cc:234
std::string const & label() const
Definition: InputTag.h:36
hcaldqm::ContainerProf1D _cOccupancyCutDatavsBX_TTSubdet
Definition: TPTask.h:166
hcaldqm::ContainerSingle1D _cOccupancyNoTDC_HF_ieta
Definition: TPTask.h:184
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
iterator find(key_type k)
hcaldqm::ContainerSingle2D _cOccupancyEmul_depthlike
Definition: TPTask.h:121
hcaldqm::Container2D _cOccupancyData_ElectronicsuTCA
Definition: TPTask.h:110
virtual STDTYPE & get(HcalDetId const &)
Definition: ContainerXXX.h:247
int const NUM_FGBITS
Definition: Constants.h:228
edm::EDGetTokenT< HcalTrigPrimDigiCollection > _tokEmul
Definition: TPTask.h:45
hcaldqm::ContainerProf1D _cEtCutEmulvsBX_TTSubdet
Definition: TPTask.h:88
std::vector< int > getFEDList(HcalElectronicsMap const *)
Definition: Utilities.cc:95
hcaldqm::Container2D _cEtMsm_ElectronicsVME
Definition: TPTask.h:130
T get() const
Definition: EventSetup.h:68
hcaldqm::Container2D _cEtCorr2x3_TTSubdet
Definition: TPTask.h:83
std::vector< int > getFEDuTCAList(HcalElectronicsMap const *)
Definition: Utilities.cc:145
void fill(HcalDetId const &) override
Definition: Container2D.cc:58
const HcalElectronicsMap * getHcalMapping() const
hcaldqm::Container2D _cEtCorr_TTSubdet
Definition: TPTask.h:82
virtual void initialize(FilterType ftype, hashfunctions::HashType htype, std::vector< uint32_t > const &)
Definition: HashFilter.cc:28
std::string _subsystem
Definition: DQModule.h:64
hcaldqm::ContainerSingle2D _cOccupancyNoTDC_HF_depth
Definition: TPTask.h:183
hcaldqm::ContainerSingleProf2D _cEtEmul_depthlike
Definition: TPTask.h:97
Definition: TPTask.py:1
hcaldqm::ContainerXXX< uint32_t > _xNumCorr
Definition: TPTask.h:179
bool _unknownIdsPresent
Definition: TPTask.h:175
hcaldqm::filter::HashFilter _filter_VME
Definition: TPTask.h:75
std::vector< uint32_t > _vcdaqEids
Definition: DQTask.h:65
void _process(edm::Event const &, edm::EventSetup const &) override
Definition: TPTask.cc:615
hcaldqm::ContainerProf1D _cOccupancyEmulvsLS_TTSubdet
Definition: TPTask.h:169
hcaldqm::ContainerProf1D _cOccupancyCutEmulvsLS_TTSubdet
Definition: TPTask.h:171
virtual void fill(int, int)
virtual void initialize(hashfunctions::HashType, int debug=0)
Definition: ContainerXXX.h:89
hcaldqm::ContainerProf1D _cEtMsmRatiovsBX_TTSubdet
Definition: TPTask.h:139
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
Definition: Container2D.cc:894
edm::InputTag _tagEmul
Definition: TPTask.h:41
void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: TPTask.cc:1130
hcaldqm::ContainerSingleProf2D _cEtCutEmul_depthlike
Definition: TPTask.h:99
hcaldqm::ContainerProf2D _cEtData_ElectronicsuTCA
Definition: TPTask.h:91
hcaldqm::ContainerProf1D _cMsnEmulvsLS_TTSubdet
Definition: TPTask.h:158
void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="") override
hcaldqm::ContainerSingle1D _cOccupancy_HF_ieta
Definition: TPTask.h:184
Readout chain identification for Hcal.
void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: TPTask.cc:1124
std::string const & instance() const
Definition: InputTag.h:37
hcaldqm::ContainerSingle2D _cMsnData_depthlike
Definition: TPTask.h:148
bool isFEDHF(HcalElectronicsId const &)
Definition: Utilities.cc:187
int ietaAbs() const
get the absolute value of the tower ieta
int const SLOT_uTCA_MIN
Definition: Constants.h:123
hcaldqm::ContainerSingleProf2D _cEtCutData_depthlike
Definition: TPTask.h:98
const_iterator begin() const
Definition: Run.h:44
hcaldqm::Container1D _cEtData_TTSubdet
Definition: TPTask.h:80
ib
Definition: cuy.py:662
hcaldqm::ContainerSingle2D _cMsnEmul_depthlike
Definition: TPTask.h:157
hcaldqm::ContainerProf1D _cMsnCutEmulvsLS_TTSubdet
Definition: TPTask.h:159
hcaldqm::Container2D _cMsnEmul_ElectronicsVME
Definition: TPTask.h:155