CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
TPTask.cc
Go to the documentation of this file.
2 #include "DQM/L1TMonitor/interface/L1TStage2CaloLayer1.h" // For ComparisonHelper::zip
3 
4 using namespace hcaldqm;
5 using namespace hcaldqm::constants;
7  : DQTask(ps), hcalDbServiceToken_(esConsumes<HcalDbService, HcalDbRecord, edm::Transition::BeginRun>()) {
8  _tagData = ps.getUntrackedParameter<edm::InputTag>("tagData", edm::InputTag("hcalDigis"));
9  _tagDataL1Rec = ps.getUntrackedParameter<edm::InputTag>("tagDataL1Rec", edm::InputTag("caloLayer1Digis"));
10  _tagEmul = ps.getUntrackedParameter<edm::InputTag>("tagEmul", edm::InputTag("emulDigis"));
11  _tagEmulNoTDCCut = ps.getUntrackedParameter<edm::InputTag>("tagEmulNoTDCCut", edm::InputTag("emulTPDigisNoTDCCut"));
12 
13  _tokData = consumes<HcalTrigPrimDigiCollection>(_tagData);
14  _tokDataL1Rec = consumes<HcalTrigPrimDigiCollection>(_tagDataL1Rec);
15  _tokEmul = consumes<HcalTrigPrimDigiCollection>(_tagEmul);
16  _tokEmulNoTDCCut = consumes<HcalTrigPrimDigiCollection>(_tagEmulNoTDCCut);
17 
18  _skip1x1 = ps.getUntrackedParameter<bool>("skip1x1", true);
19  _cutEt = ps.getUntrackedParameter<int>("cutEt", 3);
20  _thresh_EtMsmRate_high = ps.getUntrackedParameter<double>("thresh_EtMsmRate_high", 0.2);
21  _thresh_EtMsmRate_low = ps.getUntrackedParameter<double>("thresh_EtMsmRate_low", 0.05);
22  _thresh_FGMsmRate_high = ps.getUntrackedParameter<double>("thresh_FGMsmRate", 0.2);
23  _thresh_FGMsmRate_low = ps.getUntrackedParameter<double>("thresh_FGMsmRate_low", 0.05);
24  _thresh_DataMsn = ps.getUntrackedParameter<double>("thresh_DataMsn", 0.1);
25  _thresh_EmulMsn = ps.getUntrackedParameter<double>("thresh_EmulMsn");
26  std::vector<int> tmp = ps.getUntrackedParameter<std::vector<int> >("vFGBitsReady");
27  for (uint32_t iii = 0; iii < constants::NUM_FGBITS; iii++)
28  _vFGBitsReady.push_back(tmp[iii]);
29 
30  _vflags.resize(nTPFlag);
31  _vflags[fEtMsm] = flag::Flag("EtMsm");
32  _vflags[fDataMsn] = flag::Flag("DataMsn");
33  _vflags[fEmulMsn] = flag::Flag("EmulMsn");
34  _vflags[fUnknownIds] = flag::Flag("UnknownIds");
35  if (_ptype == fOnline) {
36  _vflags[fSentRecL1Msm] = flag::Flag("uHTR-L1TMsm");
37  }
38 }
39 
40 /* virtual */ void TPTask::bookHistograms(DQMStore::IBooker& ib, edm::Run const& r, edm::EventSetup const& es) {
41  DQTask::bookHistograms(ib, r, es);
42 
43  // GET WHAT YOU NEED
45  _emap = dbs->getHcalMapping();
46  std::vector<uint32_t> vVME;
47  std::vector<uint32_t> vuTCA;
48  std::vector<uint32_t> depth0;
50  vuTCA.push_back(HcalElectronicsId(CRATE_uTCA_MIN, SLOT_uTCA_MIN, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
53  depth0.push_back(HcalTrigTowerDetId(1, 1, 0).rawId());
55 
56  // INITIALIZE FIRST
57  // Et/FG
59  "EtData",
63  0);
65  "EtEmul",
69  0);
71  "EtCorr_xTS",
76  0);
78  "EtCorr_EmulvsData",
83  0);
85  "EtCorr_EmulvsL1",
90  0);
91  for (uint8_t iii = 0; iii < constants::NUM_FGBITS; iii++) {
93  "FGCorr",
98  0);
99  }
100 
102  "EtData",
106  0);
108  "EtEmul",
112  0);
114  "EtCutData",
118  0);
120  "EtCutEmul",
124  0);
125 
126  // Occupancy
128  "OccupancyData",
132  0);
134  "OccupancyEmul",
138  0);
140  "OccupancyCutData",
144  0);
146  "OccupancyCutEmul",
150  0);
151 
152  // Mismatches
154  "EtMsm",
158  0);
160  "FGMsm",
164  0);
165 
166  if (_ptype == fOnline) {
167  // Mismatches: sent vs received
169  "EtMsm_uHTR_L1T",
173  0);
175  "EtMsm_uHTR_L1T_LS",
178  0);
179  }
180 
181  // Missing Data w.r.t. Emulator
183  "MsnData",
187  0);
189  "MsnEmul",
193  0);
194 
196  "EtCorrRatio",
200  0);
201 
203  "OccupancyDatavsBX",
207  0);
209  "OccupancyEmulvsBX",
213  0);
215  "OccupancyCutDatavsBX",
219  0);
221  "OccupancyCutEmulvsBX",
225  0);
226 
227  // INITIALIZE HISTOGRAMS to be used in Online only!
228  if (_ptype == fOnline) {
230  "EtCorr2x3",
235  0);
237  "OccupancyData2x3",
241  0);
243  "OccupancyEmul2x3",
247  0);
249  "EtCutDatavsLS",
253  0);
255  "EtCutEmulvsLS",
259  0);
261  "EtCutDatavsBX",
266  0);
268  "EtCutEmulvsBX",
272  0);
274  "EtCorrRatiovsLS",
278  0);
280  "EtCorrRatiovsBX",
284  0);
286  "EtMsmRatiovsLS",
290  0);
292  "EtMsmRatiovsBX",
296  0);
298  "EtMsmvsLS",
302  0);
304  "EtMsmvsBX",
308  0);
310  "MsnDatavsLS",
314  0);
316  "MsnCutDatavsLS",
320  0);
322  "MsnDatavsBX",
326  0);
328  "MsnCutDatavsBX",
332  0);
334  "MsnEmulvsLS",
338  0);
340  "MsnCutEmulvsLS",
344  0);
346  "MsnEmulvsBX",
350  0);
352  "MsnCutEmulvsBX",
356  0);
358  "OccupancyDatavsLS",
362  0);
364  "OccupancyCutDatavsLS",
368  0);
370  "OccupancyDatavsBX",
374  0);
376  "OccupancyCutDatavsBX",
380  0);
382  "OccupancyEmulvsLS",
386  0);
388  "OccupancyCutEmulvsLS",
392  0);
394  "OccupancyEmulvsBX",
398  0);
400  "OccupancyCutEmulvsBX",
404  0);
405 
407  "OccupancyDataHF_depth",
411  0);
413  "OccupancyEmulHFNoTDC_depth",
417  0);
419  "OccupancyDataHF_ieta",
422  0),
424  "OccupancyEmulHFNoTDC_ieta",
427  0);
428  }
429 
430  // FED-based containers
431  if (_ptype != fOffline) { // hidefed2crate
432  std::vector<int> vFEDs = hcaldqm::utilities::getFEDList(_emap);
433  std::vector<int> vFEDsVME = hcaldqm::utilities::getFEDVMEList(_emap);
434  std::vector<int> vFEDsuTCA = hcaldqm::utilities::getFEDuTCAList(_emap);
435  // push the rawIds of each fed into the vector
436  // this vector is used at endlumi for online state generation
437  for (std::vector<int>::const_iterator it = vFEDsVME.begin(); it != vFEDsVME.end(); ++it) {
439  }
440  for (std::vector<int>::const_iterator it = vFEDsuTCA.begin(); it != vFEDsuTCA.end(); ++it) {
441  std::pair<uint16_t, uint16_t> cspair = hcaldqm::utilities::fed2crate(*it);
442  _vhashFEDs.push_back(HcalElectronicsId(cspair.first, cspair.second, FIBER_uTCA_MIN1, FIBERCH_MIN, false).rawId());
443  }
445  "EtData",
447  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
450  0);
452  "EtEmul",
454  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
457  0);
458  // Occupancies
460  "OccupancyData",
462  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
465  0);
467  "OccupancyEmul",
469  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
472  0);
473 
475  _name,
476  "OccupancyCutData",
478  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
481  0);
483  _name,
484  "OccupancyCutEmul",
486  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
489  0);
490  // Mismatches
492  "EtMsm",
494  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
497  0);
499  "FGMsm",
501  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
504  0);
505 
506  // Missing Data w.r.t. Emulator
508  "MsnData",
510  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
513  0);
515  "MsnEmul",
517  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
520  0);
522  "EtCorrRatio",
524  new hcaldqm::quantity::FEDQuantity(vFEDsuTCA),
527  0);
528  if (_ptype == fOnline) {
530  "SummaryvsLS",
535  0);
537  "SummaryvsLS",
541  0);
542 
551  }
552  }
553 
554  // BOOK HISTOGRAMS
555  char aux[20];
556  for (unsigned int iii = 0; iii < constants::NUM_FGBITS; iii++) {
557  sprintf(aux, "BIT%d", iii);
558  _cFGCorr_TTSubdet[iii].book(ib, _emap, _subsystem, aux);
559  }
565  if (_ptype != fOffline) { // hidefed2crate
568  }
573  if (_ptype != fOffline) { // hidefed2crate
578  }
583 
589 
590  if (_ptype == fOnline) {
593  }
594 
595  if (_ptype != fOffline) { // hidefed2crate
601  }
602 
603  // whatever has to go online only goes here
604  if (_ptype == fOnline) {
636 
637  _xEtMsm.book(_emap);
638  _xFGMsm.book(_emap);
645 
650  }
651 
652  // initialize the hash map
654 
655  // book the flag for unknown ids and the online guy as well
656  ib.setCurrentFolder(_subsystem + "/" + _name);
657  auto scope = DQMStore::IBooker::UseLumiScope(ib);
658  meUnknownIds1LS = ib.book1DD("UnknownIds", "UnknownIds", 1, 0, 1);
659  _unknownIdsPresent = false;
660 }
661 
663  DQTask::_resetMonitors(uf);
664  switch (uf) {
665  case hcaldqm::f1LS:
666  _unknownIdsPresent = false;
667  break;
668  default:
669  break;
670  }
671 }
672 
673 /* virtual */ void TPTask::_process(edm::Event const& e, edm::EventSetup const&) {
678  if (!e.getByToken(_tokData, cdata))
679  _logger.dqmthrow("Collection HcalTrigPrimDigiCollection isn't available: " + _tagData.label() + " " +
680  _tagData.instance());
681  if (_ptype == fOnline) {
682  if (!e.getByToken(_tokDataL1Rec, cdataL1Rec))
683  _logger.dqmthrow("Collection HcalTrigPrimDigiCollection isn't available: " + _tagDataL1Rec.label() + " " +
685  }
686  if (!e.getByToken(_tokEmul, cemul))
687  _logger.dqmthrow("Collection HcalTrigPrimDigiCollection isn't available: " + _tagEmul.label() + " " +
688  _tagEmul.instance());
689  if (_ptype == fOnline) {
690  if (!e.getByToken(_tokEmulNoTDCCut, cemul_noTDCCut)) {
691  _logger.dqmthrow("Collection HcalTrigPrimDigiCollection isn't available: " + _tagEmulNoTDCCut.label() + " " +
693  }
694  }
695 
696  // extract some info per event
697  int bx = e.bunchCrossing();
698 
699  auto lumiCache = luminosityBlockCache(e.getLuminosityBlock().index());
700  _currentLS = lumiCache->currentLS;
701 
702  // some summaries... per event
703  int numHBHE(0), numHF(0), numCutHBHE(0), numCutHF(0);
704  int numCorrHBHE(0), numCorrHF(0);
705  int numMsmHBHE(0), numMsmHF(0);
706  int numMsnHBHE(0), numMsnHF(0), numMsnCutHBHE(0), numMsnCutHF(0);
707 
708  // for explanation see RecHit or Digi Tasks
709  uint32_t rawidHBHEValid = 0;
710  uint32_t rawidHFValid = 0;
711 
712  /*
713  * STEP1:
714  * Loop over the data digis and
715  * - do ... for all the data digis
716  * - find the emulator digi
717  * --- compare soi Et
718  * --- compare soi FG
719  * --- Do not fill anything for emulator Et!!!
720  */
721  for (HcalTrigPrimDigiCollection::const_iterator it = cdata->begin(); it != cdata->end(); ++it) {
722  // Explicit check on the DetIds present in the Collection
723  HcalTrigTowerDetId tid = it->id();
724  uint32_t rawid = _ehashmap.lookup(tid);
725  if (rawid == 0) {
726  meUnknownIds1LS->Fill(1);
727  _unknownIdsPresent = true;
728  continue;
729  }
730  HcalElectronicsId const& eid(rawid);
731  if (tid.ietaAbs() >= 29)
732  rawidHFValid = tid.rawId();
733  else
734  rawidHBHEValid = tid.rawId();
735 
736  //
737  // HF 2x3 TPs Treat theam separately and only for ONLINE!
738  //
739  if (tid.version() == 0 && tid.ietaAbs() >= 29) {
740  // do this only for online processing
741  if (_ptype == fOnline) {
743  HcalTrigPrimDigiCollection::const_iterator jt = cemul->find(tid);
744  if (jt != cemul->end())
745  _cEtCorr2x3_TTSubdet.fill(tid, it->SOI_compressedEt(), jt->SOI_compressedEt());
746  }
747 
748  // skip to the next tp digi
749  continue;
750  }
751 
752  // FROM THIS POINT, HBHE + 1x1 HF TPs
753  int soiEt_d = it->t0().compressedEt();
754  int soiFG_d[constants::NUM_FGBITS];
755  for (uint32_t ibit = 0; ibit < constants::NUM_FGBITS; ibit++)
756  soiFG_d[ibit] = it->t0().fineGrain(ibit) ? 1 : 0;
757  tid.ietaAbs() >= 29 ? numHF++ : numHBHE++;
758 
759  // fill w/o a cut
760  _cEtData_TTSubdet.fill(tid, soiEt_d);
761  _cEtData_depthlike.fill(tid, soiEt_d);
763 
764  if (_ptype == fOnline) {
765  if (tid.ietaAbs() >= 29) {
766  if (soiEt_d > 0) {
769  }
770  }
771  }
772  if (_ptype != fOffline) { // hidefed2crate
773  if (!eid.isVMEid()) {
775  _cEtData_ElectronicsuTCA.fill(eid, soiEt_d);
776  }
777  }
778 
779  // FILL w/a CUT
780  if (soiEt_d > _cutEt) {
781  tid.ietaAbs() >= 29 ? numCutHF++ : numCutHBHE++;
783  _cEtCutData_depthlike.fill(tid, soiEt_d);
784 
785  // ONLINE ONLY!
786  if (_ptype == fOnline) {
787  _cEtCutDatavsLS_TTSubdet.fill(tid, _currentLS, soiEt_d);
788  _cEtCutDatavsBX_TTSubdet.fill(tid, bx, log2(soiEt_d + 1.));
789  _xDataTotal.get(eid)++;
790  }
791  // ^^^ONLINE ONLY!
792  if (_ptype != fOffline) { // hidefed2crate
793  if (!eid.isVMEid())
795  }
796  }
797 
798  // FIND the EMULATOR DIGI
799  HcalTrigPrimDigiCollection::const_iterator jt = cemul->find(tid);
800  if (jt != cemul->end()) {
801  // if PRESENT!
802  int soiEt_e = jt->SOI_compressedEt();
803  int soiFG_e[constants::NUM_FGBITS];
804  for (uint32_t ibit = 0; ibit < constants::NUM_FGBITS; ibit++)
805  soiFG_e[ibit] = jt->t0().fineGrain(ibit) ? 1 : 0;
806  // if both are zeroes => set 1
807  double rEt =
808  soiEt_d == 0 && soiEt_e == 0 ? 1 : double(std::min(soiEt_d, soiEt_e)) / double(std::max(soiEt_e, soiEt_d));
809 
810  // ONLINE ONLY!
811  if (_ptype == fOnline) {
812  _xNumCorr.get(eid)++;
813  tid.ietaAbs() >= 29 ? numCorrHF++ : numCorrHBHE++;
814  _cEtCorrRatiovsLS_TTSubdet.fill(tid, _currentLS, rEt);
815  _cEtCorrRatiovsBX_TTSubdet.fill(tid, bx, rEt);
816  }
817  // ^^^ONLINE ONLY!
818 
819  _cEtCorrRatio_depthlike.fill(tid, rEt);
820  _cSOIEtCorr_TTSubdet.fill(tid, eid, soiEt_d, soiEt_e);
821  for (int ci = 0; ci < 4; ci++) {
822  for (int cj = 0; cj < 4; cj++) {
823  if (ci < it->size() && cj < jt->size()) {
824  if ((ci == cj) || (it->sample(ci).compressedEt() > 0 && jt->sample(cj).compressedEt() > 0)) {
826  tid, eid, 256 * ci + it->sample(ci).compressedEt(), 256 * cj + jt->sample(cj).compressedEt());
827  }
828  }
829  }
830  }
831  for (uint32_t ibit = 0; ibit < constants::NUM_FGBITS; ibit++)
832  _cFGCorr_TTSubdet[ibit].fill(tid, soiFG_d[ibit], soiFG_e[ibit]);
833  // FILL w/o a CUT
834  if (_ptype != fOffline) { // hidefed2crate
835  if (!eid.isVMEid())
837  }
838 
839  // if SOI Et are not equal
840  // fill mismatched
841  if (soiEt_d != soiEt_e) {
842  tid.ietaAbs() >= 29 ? numMsmHF++ : numMsmHBHE++;
843  _cEtMsm_depthlike.fill(tid);
844  if (_ptype != fOffline) { // hidefed2crate
845  if (!eid.isVMEid())
847  }
848  if (_ptype == fOnline)
849  _xEtMsm.get(eid)++;
850  }
851  // if SOI FG are not equal
852  // fill mismatched.
853  // Do this comparison only for FG Bits that are commissioned
854  for (uint32_t ibit = 0; ibit < constants::NUM_FGBITS; ibit++)
855  if (soiFG_d[ibit] != soiFG_e[ibit] && _vFGBitsReady[ibit]) {
856  _cFGMsm_depthlike.fill(tid);
857  if (_ptype != fOffline) { // hidefed2crate
858  if (!eid.isVMEid())
860  }
861  if (_ptype == fOnline)
862  _xFGMsm.get(eid)++;
863  }
864  } else {
865  // IF MISSING
866  _cEtCorr_TTSubdet.fill(tid, eid, soiEt_d, -1);
867  _cSOIEtCorr_TTSubdet.fill(tid, eid, soiEt_d, -1);
869  tid.ietaAbs() >= 29 ? numMsnHF++ : numMsnHBHE++;
870  if (_ptype != fOffline) { // hidefed2crate
871  if (!eid.isVMEid())
873  }
874 
875  if (soiEt_d > _cutEt) {
876  tid.ietaAbs() >= 29 ? numMsnCutHF++ : numMsnCutHBHE++;
877  if (_ptype == fOnline)
878  _xEmulMsn.get(eid)++;
879  }
880  }
881  }
882 
883  if (_ptype == fOnline) {
884  for (HcalTrigPrimDigiCollection::const_iterator it = cemul_noTDCCut->begin(); it != cemul_noTDCCut->end(); ++it) {
885  // Explicit check on the DetIds present in the Collection
886  HcalTrigTowerDetId tid = it->id();
887  uint32_t rawid = _ehashmap.lookup(tid);
888  if (rawid == 0) {
889  continue;
890  }
891  if (tid.version() == 0 && tid.ietaAbs() >= 29) {
892  continue;
893  }
894  int soiEt_e = it->SOI_compressedEt();
895  if (tid.ietaAbs() >= 29) {
896  if (soiEt_e > 0) {
899  }
900  }
901  }
902  }
903 
904  if (rawidHFValid != 0 && rawidHBHEValid != 0) {
905  // ONLINE ONLY!
906  if (_ptype == fOnline) {
907  _cOccupancyDatavsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), bx, numHBHE);
908  _cOccupancyDatavsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), bx, numHF);
909  _cOccupancyCutDatavsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), bx, numCutHBHE);
910  _cOccupancyCutDatavsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), bx, numCutHF);
911  _cOccupancyDatavsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), _currentLS, numHBHE);
912  _cOccupancyDatavsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), _currentLS, numHF);
913  _cOccupancyCutDatavsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), _currentLS, numCutHBHE);
914  _cOccupancyCutDatavsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), _currentLS, numCutHF);
915 
916  _cEtMsmvsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), _currentLS, numMsmHBHE);
917  _cEtMsmvsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), _currentLS, numMsmHF);
918  _cEtMsmvsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), bx, numMsmHBHE);
919  _cEtMsmvsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), bx, numMsmHF);
920 
922  HcalTrigTowerDetId(rawidHBHEValid), _currentLS, double(numMsmHBHE) / double(numCorrHBHE));
924  HcalTrigTowerDetId(rawidHFValid), _currentLS, double(numMsmHF) / double(numCorrHF));
925  _cEtMsmRatiovsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), bx, double(numMsmHBHE) / double(numCorrHBHE));
926  _cEtMsmRatiovsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), bx, double(numMsmHF) / double(numCorrHF));
927 
928  _cMsnEmulvsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), _currentLS, numMsnHBHE);
929  _cMsnEmulvsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), _currentLS, numMsnHF);
930  _cMsnCutEmulvsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), _currentLS, numMsnCutHBHE);
931  _cMsnCutEmulvsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), _currentLS, numMsnCutHF);
932 
933  _cMsnEmulvsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), bx, numMsnHBHE);
934  _cMsnEmulvsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), bx, numMsnHF);
935  _cMsnCutEmulvsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), bx, numMsnCutHBHE);
936  _cMsnCutEmulvsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), bx, numMsnCutHF);
937  }
938  }
939 
940  numHBHE = 0;
941  numHF = 0;
942  numCutHBHE = 0;
943  numCutHF = 0;
944  numMsnHBHE = 0;
945  numMsnHF = 0;
946  numCutHBHE = 0;
947  numCutHF = 0;
948 
949  // reset
950  rawidHBHEValid = 0;
951  rawidHFValid = 0;
952 
953  /*
954  * STEP2:
955  * Loop over the emulator digis and
956  * - do ... for all the emulator digis
957  * - find data digi and
958  * --- if found skip
959  * --- if not found - fill the missing Data plot
960  */
961  for (HcalTrigPrimDigiCollection::const_iterator it = cemul->begin(); it != cemul->end(); ++it) {
962  // Explicit check on the DetIds present in the Collection
963  HcalTrigTowerDetId tid = it->id();
964  uint32_t rawid = _ehashmap.lookup(tid);
965  if (rawid == 0) {
966  meUnknownIds1LS->Fill(1);
967  _unknownIdsPresent = true;
968  continue;
969  }
970  HcalElectronicsId const& eid(rawid);
971  if (tid.ietaAbs() >= 29)
972  rawidHFValid = tid.rawId();
973  else
974  rawidHBHEValid = tid.rawId();
975 
976  // HF 2x3 TPs. Only do it for Online!!!
977  if (tid.version() == 0 && tid.ietaAbs() >= 29) {
978  // only do this for online processing
979  if (_ptype == fOnline)
981  continue;
982  }
983  int soiEt = it->SOI_compressedEt();
984 
985  // FILL/INCREMENT w/o a CUT
986  tid.ietaAbs() >= 29 ? numHF++ : numHBHE++;
987  _cEtEmul_TTSubdet.fill(tid, soiEt);
988  _cEtEmul_depthlike.fill(tid, soiEt);
990  if (_ptype != fOffline) { // hidefed2crate
991  if (!eid.isVMEid()) {
993  _cEtEmul_ElectronicsuTCA.fill(eid, soiEt);
994  }
995  }
996 
997  // FILL w/ a CUT
998  if (soiEt > _cutEt) {
999  tid.ietaAbs() >= 29 ? numCutHF++ : numCutHBHE++;
1001  _cEtCutEmul_depthlike.fill(tid, soiEt);
1002  if (_ptype != fOffline) { // hidefed2crate
1003  if (!eid.isVMEid())
1005  }
1006 
1007  // ONLINE ONLY!
1008  if (_ptype == fOnline) {
1009  _cEtCutEmulvsLS_TTSubdet.fill(tid, _currentLS, soiEt);
1010  _cEtCutEmulvsBX_TTSubdet.fill(tid, bx, soiEt);
1011  _xEmulTotal.get(eid)++;
1012  }
1013  // ^^^ONLINE ONLY!
1014  }
1015 
1016  // Look for a data digi.
1017  // Do not perform if the emulated digi is zero suppressed.
1018  if (!(it->zsMarkAndPass())) {
1019  HcalTrigPrimDigiCollection::const_iterator jt = cdata->find(tid);
1020  if (jt == cdata->end()) {
1021  tid.ietaAbs() >= 29 ? numMsnHF++ : numMsnHBHE++;
1022  _cEtCorr_TTSubdet.fill(tid, eid, -1, soiEt);
1023  _cSOIEtCorr_TTSubdet.fill(tid, eid, -1, soiEt);
1025  if (_ptype != fOffline) { // hidefed2crate
1026  if (!eid.isVMEid())
1028  }
1029  if (soiEt > _cutEt) {
1030  tid.ietaAbs() >= 29 ? numMsnCutHF++ : numMsnCutHBHE++;
1031  if (_ptype == fOnline)
1032  _xDataMsn.get(eid)++;
1033  }
1034  }
1035  }
1036  }
1037 
1038  // ONLINE ONLY!
1039  if (_ptype == fOnline) {
1040  if (rawidHBHEValid != 0) {
1041  _cOccupancyEmulvsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), bx, numHBHE);
1042  _cOccupancyCutEmulvsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), bx, numCutHBHE);
1043  _cOccupancyEmulvsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), _currentLS, numHBHE);
1044  _cOccupancyCutEmulvsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), _currentLS, numCutHBHE);
1045  _cMsnDatavsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), _currentLS, numMsnHBHE);
1046  _cMsnCutDatavsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), _currentLS, numMsnCutHBHE);
1047  _cMsnDatavsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), bx, numMsnHBHE);
1048  _cMsnCutDatavsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), bx, numMsnCutHBHE);
1049  }
1050  if (rawidHFValid != 0) {
1051  _cOccupancyEmulvsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), bx, numHF);
1052  _cOccupancyCutEmulvsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), bx, numCutHF);
1053  _cOccupancyEmulvsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), _currentLS, numHF);
1054  _cOccupancyCutEmulvsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), _currentLS, numCutHF);
1055  _cMsnDatavsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), _currentLS, numMsnHF);
1056  _cMsnCutDatavsLS_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), _currentLS, numMsnCutHF);
1057  _cMsnDatavsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), bx, numMsnHF);
1058  _cMsnCutDatavsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), bx, numMsnCutHF);
1059  }
1060  // ^^^ONLINE ONLY!
1061  }
1062 
1063  if (_ptype == fOnline) {
1064  // Compare the sent ("uHTR") and received (L1T "layer1") TPs
1065  // This algorithm is copied from DQM/L1TMonitor/src/L1TStage2CaloLayer1.cc
1066  // ...but it turns out to be extremely useful for detecting uHTR problems
1067 
1068  _vEmulTPDigis_SentRec.clear();
1069  ComparisonHelper::zip(cemul->begin(),
1070  cemul->end(),
1071  cdataL1Rec->begin(),
1072  cdataL1Rec->end(),
1073  std::inserter(_vEmulTPDigis_SentRec, _vEmulTPDigis_SentRec.begin()),
1075 
1076  // comparison between emulation TP and L1 TP
1077  for (const auto& tpPair : _vEmulTPDigis_SentRec) {
1078  const auto& sentTp = tpPair.first;
1079  const auto& recdTp = tpPair.second;
1080  const int ieta = sentTp.id().ieta();
1081  if (abs(ieta) > 28 && sentTp.id().version() != 1)
1082  continue;
1083 
1084  const bool towerMasked = recdTp.sample(0).raw() & (1 << 13);
1085  const bool linkError = recdTp.sample(0).raw() & (1 << 15);
1086  if (towerMasked || linkError)
1087  continue;
1088 
1089  HcalTrigTowerDetId tid = sentTp.id();
1090  uint32_t rawid = _ehashmap.lookup(tid);
1091  if (rawid == 0) {
1092  continue;
1093  }
1094  HcalElectronicsId const& eid(rawid);
1095 
1096  _cSOIEtCorrEmulL1_TTSubdet.fill(tid, eid, recdTp.SOI_compressedEt(), sentTp.SOI_compressedEt());
1097  }
1098 
1099  // comparison between sent data TP and L1 TP
1100  _vTPDigis_SentRec.clear();
1101  ComparisonHelper::zip(cdata->begin(),
1102  cdata->end(),
1103  cdataL1Rec->begin(),
1104  cdataL1Rec->end(),
1105  std::inserter(_vTPDigis_SentRec, _vTPDigis_SentRec.begin()),
1107 
1108  for (const auto& tpPair : _vTPDigis_SentRec) {
1109  // From here, literal copy pasta from L1T
1110  const auto& sentTp = tpPair.first;
1111  const auto& recdTp = tpPair.second;
1112  const int ieta = sentTp.id().ieta();
1113  if (abs(ieta) > 28 && sentTp.id().version() != 1)
1114  continue;
1115  //const int iphi = sentTp.id().iphi();
1116  const bool towerMasked = recdTp.sample(0).raw() & (1 << 13);
1117  //const bool linkMasked = recdTp.sample(0).raw() & (1<<14);
1118  const bool linkError = recdTp.sample(0).raw() & (1 << 15);
1119 
1120  if (towerMasked || linkError) {
1121  // Do not compare if known to be bad
1122  continue;
1123  }
1124 
1125  HcalTrigTowerDetId tid = sentTp.id();
1126  uint32_t rawid = _ehashmap.lookup(tid);
1127  if (rawid == 0) {
1128  continue;
1129  }
1130  HcalElectronicsId const& eid(rawid);
1131 
1132  const bool HetAgreement = sentTp.SOI_compressedEt() == recdTp.SOI_compressedEt();
1133  const bool Hfb1Agreement = sentTp.SOI_fineGrain() == recdTp.SOI_fineGrain();
1134  // Ignore minBias (FB2) bit if we receieve 0 ET, which means it is likely zero-suppressed on HCal readout side
1135  const bool Hfb2Agreement =
1136  (abs(ieta) < 29) ? true
1137  : (recdTp.SOI_compressedEt() == 0 || (sentTp.SOI_fineGrain(1) == recdTp.SOI_fineGrain(1)));
1138  if (!(HetAgreement && Hfb1Agreement && Hfb2Agreement)) {
1140  _cEtMsm_uHTR_L1T_LS.fill(_currentLS);
1141  _xSentRecL1Msm.get(eid)++;
1142  }
1143  }
1144  }
1145 }
1146 
1147 std::shared_ptr<hcaldqm::Cache> TPTask::globalBeginLuminosityBlock(edm::LuminosityBlock const& lb,
1148  edm::EventSetup const& es) const {
1149  return DQTask::globalBeginLuminosityBlock(lb, es);
1150 }
1151 
1153  if (_ptype != fOnline)
1154  return;
1155 
1156  auto lumiCache = luminosityBlockCache(lb.index());
1157  _currentLS = lumiCache->currentLS;
1158 
1159  //
1160  // GENERATE STATUS ONLY FOR ONLINE!
1161  //
1162  for (std::vector<uint32_t>::const_iterator it = _vhashFEDs.begin(); it != _vhashFEDs.end(); ++it) {
1163  flag::Flag fSum("TP");
1165 
1166  std::vector<uint32_t>::const_iterator cit = std::find(_vcdaqEids.begin(), _vcdaqEids.end(), *it);
1167  if (cit == _vcdaqEids.end()) {
1168  // not @cDAQ
1169  for (uint32_t iflag = 0; iflag < _vflags.size(); iflag++)
1170  _cSummaryvsLS_FED.setBinContent(eid, _currentLS, int(iflag), int(flag::fNCDAQ));
1171  _cSummaryvsLS.setBinContent(eid, _currentLS, int(flag::fNCDAQ));
1172  continue;
1173  }
1174 
1176  // FED is @cDAQ
1177  double etmsm = _xNumCorr.get(eid) > 0 ? double(_xEtMsm.get(eid)) / double(_xNumCorr.get(eid)) : 0;
1178  /*
1179  * UNUSED VARS
1180  * double dmsm = _xDataTotal.get(eid)>0?
1181  double(_xDataMsn.get(eid))/double(_xDataTotal.get(eid)):0;
1182  double emsm = _xEmulTotal.get(eid)>0?
1183  double(_xEmulMsn.get(eid))/double(_xEmulTotal.get(eid)):0;
1184  double fgmsm = _xNumCorr.get(eid)>0?
1185  double(_xFGMsm.get(eid))/double(_xNumCorr.get(eid)):0;
1186  */
1187  if (etmsm >= _thresh_EtMsmRate_high)
1188  _vflags[fEtMsm]._state = flag::fBAD;
1189  else if (etmsm >= _thresh_EtMsmRate_low)
1190  _vflags[fEtMsm]._state = flag::fPROBLEMATIC;
1191  else
1192  _vflags[fEtMsm]._state = flag::fGOOD;
1193  /*
1194  * DISABLE THESE FLAGS FOR ONLINE FOR NOW!
1195  if (dmsm>=_thresh_DataMsn)
1196  _vflags[fDataMsn]._state = flag::fBAD;
1197  else
1198  _vflags[fDataMsn]._state = flag::fGOOD;
1199  if (emsm>=_thresh_EmulMsn)
1200  _vflags[fEmulMsn]._state = flag::fBAD;
1201  else
1202  _vflags[fEmulMsn]._state = flag::fGOOD;
1203  */
1204 
1205  if (_ptype == fOnline) {
1206  if (_xSentRecL1Msm.get(eid) >= 1) {
1207  _vflags[fSentRecL1Msm]._state = flag::fBAD;
1208  } else {
1209  _vflags[fSentRecL1Msm]._state = flag::fGOOD;
1210  }
1211  }
1212  }
1213 
1214  if (_unknownIdsPresent)
1215  _vflags[fUnknownIds]._state = flag::fBAD;
1216  else
1217  _vflags[fUnknownIds]._state = flag::fGOOD;
1218 
1219  int iflag = 0;
1220  for (std::vector<flag::Flag>::iterator ft = _vflags.begin(); ft != _vflags.end(); ++ft) {
1221  _cSummaryvsLS_FED.setBinContent(eid, _currentLS, int(iflag), ft->_state);
1222  fSum += (*ft);
1223  iflag++;
1224 
1225  // this is the MUST!
1226  // reset after using this flag
1227  ft->reset();
1228  }
1229  _cSummaryvsLS.setBinContent(eid, _currentLS, int(fSum._state));
1230  }
1231 
1232  // reset...
1233  _xEtMsm.reset();
1234  _xFGMsm.reset();
1235  _xNumCorr.reset();
1236  _xDataMsn.reset();
1237  _xDataTotal.reset();
1238  _xEmulMsn.reset();
1239  _xEmulTotal.reset();
1240 
1241  // in the end always do the DQTask::endLumi
1242  DQTask::globalEndLuminosityBlock(lb, es);
1243 }
1244 
void initialize(std::string const &folder, hashfunctions::HashType, quantity::Quantity *, quantity::Quantity *, int debug=0) override
hcaldqm::ContainerProf1D _cEtCorrRatiovsBX_TTSubdet
Definition: TPTask.h:94
constexpr uint32_t rawId() const
hcaldqm::ContainerXXX< uint32_t > _xDataTotal
Definition: TPTask.h:159
T getUntrackedParameter(std::string const &, T const &) const
bool _skip1x1
Definition: TPTask.h:51
hcaldqm::ContainerProf1D _cMsnCutEmulvsBX_TTSubdet
Definition: TPTask.h:141
hcaldqm::Container1D _cEtEmul_TTSubdet
Definition: TPTask.h:70
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::ContainerSingleProf2D _cEtData_depthlike
Definition: TPTask.h:85
edm::InputTag _tagData
Definition: TPTask.h:36
int const CRATE_VME_MIN
Definition: Constants.h:95
hcaldqm::ContainerProf1D _cMsnDatavsBX_TTSubdet
Definition: TPTask.h:132
double _thresh_FGMsmRate_high
Definition: TPTask.h:53
int ib
Definition: cuy.py:661
hcaldqm::ContainerSingle2D _cOccupancyCutEmul_depthlike
Definition: TPTask.h:107
hcaldqm::ContainerProf1D _cMsnDatavsLS_TTSubdet
Definition: TPTask.h:130
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
edm::InputTag _tagDataL1Rec
Definition: TPTask.h:37
void fill(HcalDetId const &) override
std::pair< uint16_t, uint16_t > fed2crate(int fed)
Definition: Utilities.cc:10
LuminosityBlockIndex index() const
std::vector< uint32_t > _vhashFEDs
Definition: TPTask.h:58
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
hcaldqm::ContainerProf1D _cEtMsmvsLS_TTSubdet
Definition: TPTask.h:118
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
void initialize(HcalElectronicsMap const *, ElectronicsMapType etype=fHcalElectronicsMap)
hcaldqm::ContainerProf1D _cEtCutEmulvsLS_TTSubdet
Definition: TPTask.h:77
hcaldqm::electronicsmap::ElectronicsMap _ehashmap
Definition: TPTask.h:61
edm::EDGetTokenT< HcalTrigPrimDigiCollection > _tokData
Definition: TPTask.h:40
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
std::vector< std::pair< HcalTriggerPrimitiveDigi, HcalTriggerPrimitiveDigi > > _vTPDigis_SentRec
Definition: TPTask.h:168
UpdateFreq
Definition: DQTask.h:32
MonitorElement * meUnknownIds1LS
Definition: TPTask.h:154
State _state
Definition: Flag.h:62
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
std::vector< T >::const_iterator const_iterator
hcaldqm::ContainerSingleProf2D _cEtCorrRatio_depthlike
Definition: TPTask.h:92
hcaldqm::ContainerProf1D _cMsnCutDatavsBX_TTSubdet
Definition: TPTask.h:133
int bunchCrossing() const
Definition: EventBase.h:64
void globalEndLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: TPTask.cc:1152
int _cutEt
Definition: TPTask.h:52
virtual void initialize(std::string const &folder, quantity::Quantity *, quantity::Quantity *, quantity::Quantity *qz=new quantity::ValueQuantity(quantity::fN), int debug=0)
hcaldqm::Container2D _cSOIEtCorrEmulL1_TTSubdet
Definition: TPTask.h:73
int const SPIGOT_MIN
Definition: Constants.h:120
hcaldqm::ContainerProf1D _cMsnCutDatavsLS_TTSubdet
Definition: TPTask.h:131
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
virtual void reset()
Definition: ContainerXXX.h:292
hcaldqm::ContainerSingle2D _cOccupancyCutData_depthlike
Definition: TPTask.h:106
double _thresh_FGMsmRate_low
Definition: TPTask.h:53
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
int const FIBER_VME_MIN
Definition: Constants.h:125
hcaldqm::ContainerProf1D _cOccupancyDatavsLS_TTSubdet
Definition: TPTask.h:148
edm::EDGetTokenT< HcalTrigPrimDigiCollection > _tokEmulNoTDCCut
Definition: TPTask.h:43
edm::EDGetTokenT< HcalTrigPrimDigiCollection > _tokDataL1Rec
Definition: TPTask.h:41
hcaldqm::ContainerProf1D _cEtMsmRatiovsLS_TTSubdet
Definition: TPTask.h:119
hcaldqm::ContainerSingle2D _cOccupancyEmul2x3_depthlike
Definition: TPTask.h:111
hcaldqm::ContainerProf1D _cMsnEmulvsBX_TTSubdet
Definition: TPTask.h:140
edm::ESGetToken< HcalDbService, HcalDbRecord > hcalDbServiceToken_
Definition: TPTask.h:44
int const FIBERCH_MIN
Definition: Constants.h:134
double _thresh_EtMsmRate_low
Definition: TPTask.h:53
virtual void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="")
hcaldqm::ContainerProf2D _cEtCorrRatio_ElectronicsuTCA
Definition: TPTask.h:91
example_stream void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
std::vector< int > getFEDVMEList(HcalElectronicsMap const *)
Definition: Utilities.cc:115
void Fill(long long x)
hcaldqm::Container2D _cFGCorr_TTSubdet[hcaldqm::constants::NUM_FGBITS]
Definition: TPTask.h:75
hcaldqm::ContainerXXX< uint32_t > _xDataMsn
Definition: TPTask.h:159
hcaldqm::filter::HashFilter _filter_uTCA
Definition: TPTask.h:65
MonitorElement * book1DD(TString const &name, TString const &title, int nchX, double lowX, double highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:155
double _thresh_EmulMsn
Definition: TPTask.h:53
hcaldqm::Container2D _cSummaryvsLS_FED
Definition: TPTask.h:157
ProcessingType _ptype
Definition: DQModule.h:44
virtual void fill(uint32_t)
Definition: Container1D.cc:73
edm::InputTag _tagEmulNoTDCCut
Definition: TPTask.h:39
std::vector< hcaldqm::flag::Flag > _vflags
Definition: TPTask.h:47
hcaldqm::ContainerSingle1D _cEtMsm_uHTR_L1T_LS
Definition: TPTask.h:125
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:59
virtual void setBinContent(int, int, int)
hcaldqm::ContainerXXX< uint32_t > _xEmulMsn
Definition: TPTask.h:159
void _resetMonitors(hcaldqm::UpdateFreq) override
Definition: TPTask.cc:662
constexpr bool isVMEid() const
void dqmthrow(std::string const &msg) const
Definition: Logger.h:12
hcaldqm::ContainerProf1D _cEtMsmvsBX_TTSubdet
Definition: TPTask.h:120
int const FED_VME_MIN
Definition: Constants.h:82
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)
TPTask(edm::ParameterSet const &)
Definition: TPTask.cc:6
hcaldqm::ContainerProf1D _cOccupancyDatavsBX_TTSubdet
Definition: TPTask.h:144
hcaldqm::ContainerProf2D _cEtEmul_ElectronicsuTCA
Definition: TPTask.h:82
hcaldqm::ContainerProf1D _cEtCorrRatiovsLS_TTSubdet
Definition: TPTask.h:93
hcaldqm::ContainerSingle2D _cOccupancyData2x3_depthlike
Definition: TPTask.h:110
hcaldqm::ContainerSingle2D _cFGMsm_depthlike
Definition: TPTask.h:117
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
hcaldqm::filter::HashFilter _filter_depth0
Definition: TPTask.h:66
int const FIBER_uTCA_MIN1
Definition: Constants.h:128
Transition
Definition: Transition.h:12
hcaldqm::ContainerXXX< uint32_t > _xEtMsm
Definition: TPTask.h:159
hcaldqm::Container2D _cEtMsm_ElectronicsuTCA
Definition: TPTask.h:114
hcaldqm::Container2D _cOccupancyCutEmul_ElectronicsuTCA
Definition: TPTask.h:101
std::shared_ptr< hcaldqm::Cache > globalBeginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) const override
Definition: TPTask.cc:1147
LuminosityBlock const & getLuminosityBlock() const
Definition: Event.h:100
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: TPTask.cc:40
Logger _logger
Definition: DQModule.h:55
T min(T a, T b)
Definition: MathUtil.h:58
hcaldqm::ContainerSingle2D _cOccupancy_HF_depth
Definition: TPTask.h:163
UseScope< MonitorElementData::Scope::LUMI > UseLumiScope
Definition: DQMStore.h:463
hcaldqm::Container2D _cEtCutDatavsBX_TTSubdet
Definition: TPTask.h:78
double _thresh_EtMsmRate_high
Definition: TPTask.h:53
std::string _name
Definition: DQModule.h:42
hcaldqm::ContainerProf1D _cOccupancyCutDatavsLS_TTSubdet
Definition: TPTask.h:150
hcaldqm::Container2D _cOccupancyCutData_ElectronicsuTCA
Definition: TPTask.h:100
HcalElectronicsMap const * _emap
Definition: DQTask.h:81
hcaldqm::ContainerSingle2D _cSummaryvsLS
Definition: TPTask.h:158
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:100
hcaldqm::ContainerSingle2D _cOccupancyData_depthlike
Definition: TPTask.h:104
hcaldqm::ContainerSingle2D _cEtMsm_depthlike
Definition: TPTask.h:116
hcaldqm::Container2D _cSOIEtCorr_TTSubdet
Definition: TPTask.h:72
hcaldqm::ContainerProf1D _cEtCutDatavsLS_TTSubdet
Definition: TPTask.h:76
hcaldqm::Container2D _cMsnData_ElectronicsuTCA
Definition: TPTask.h:128
hcaldqm::Container2D _cMsnEmul_ElectronicsuTCA
Definition: TPTask.h:136
hcaldqm::ContainerProf1D _cOccupancyEmulvsBX_TTSubdet
Definition: TPTask.h:145
hcaldqm::ContainerXXX< uint32_t > _xEmulTotal
Definition: TPTask.h:159
double _thresh_DataMsn
Definition: TPTask.h:53
hcaldqm::ContainerXXX< uint32_t > _xSentRecL1Msm
Definition: TPTask.h:159
bool isFEDHBHE(HcalElectronicsId const &)
Definition: Utilities.cc:156
void fill(std::map< std::string, TH1 * > &h, const std::string &s, double x)
virtual void book(HcalElectronicsMap const *)
Definition: ContainerXXX.h:87
hcaldqm::Container2D _cFGMsm_ElectronicsuTCA
Definition: TPTask.h:115
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
int version() const
get the version code for the trigger tower
hcaldqm::ContainerSingle2D _cEtMsm_uHTR_L1T_depthlike
Definition: TPTask.h:124
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
std::vector< bool > _vFGBitsReady
Definition: TPTask.h:55
hcaldqm::ContainerProf1D _cOccupancyCutEmulvsBX_TTSubdet
Definition: TPTask.h:147
hcaldqm::ContainerXXX< uint32_t > _xFGMsm
Definition: TPTask.h:159
hcaldqm::Container2D _cOccupancyEmul_ElectronicsuTCA
Definition: TPTask.h:98
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:163
std::string const & label() const
Definition: InputTag.h:36
hcaldqm::ContainerProf1D _cOccupancyCutDatavsBX_TTSubdet
Definition: TPTask.h:146
hcaldqm::ContainerSingle1D _cOccupancyNoTDC_HF_ieta
Definition: TPTask.h:164
hcaldqm::ContainerSingle2D _cOccupancyEmul_depthlike
Definition: TPTask.h:105
hcaldqm::Container2D _cOccupancyData_ElectronicsuTCA
Definition: TPTask.h:97
virtual STDTYPE & get(HcalDetId const &)
Definition: ContainerXXX.h:197
int const NUM_FGBITS
Definition: Constants.h:210
edm::EDGetTokenT< HcalTrigPrimDigiCollection > _tokEmul
Definition: TPTask.h:42
hcaldqm::ContainerProf1D _cEtCutEmulvsBX_TTSubdet
Definition: TPTask.h:79
std::vector< int > getFEDList(HcalElectronicsMap const *)
Definition: Utilities.cc:97
hcaldqm::Container2D _cEtCorr2x3_TTSubdet
Definition: TPTask.h:74
std::vector< int > getFEDuTCAList(HcalElectronicsMap const *)
Definition: Utilities.cc:135
Definition: TPTask.h:22
void fill(HcalDetId const &) override
Definition: Container2D.cc:52
hcaldqm::Container2D _cEtCorr_TTSubdet
Definition: TPTask.h:71
virtual void initialize(FilterType ftype, hashfunctions::HashType htype, std::vector< uint32_t > const &)
Definition: HashFilter.cc:17
std::string _subsystem
Definition: DQModule.h:49
hcaldqm::ContainerSingle2D _cOccupancyNoTDC_HF_depth
Definition: TPTask.h:163
hcaldqm::ContainerSingleProf2D _cEtEmul_depthlike
Definition: TPTask.h:86
hcaldqm::ContainerXXX< uint32_t > _xNumCorr
Definition: TPTask.h:159
bool _unknownIdsPresent
Definition: TPTask.h:155
hcaldqm::filter::HashFilter _filter_VME
Definition: TPTask.h:64
std::vector< uint32_t > _vcdaqEids
Definition: DQTask.h:69
void _process(edm::Event const &, edm::EventSetup const &) override
Definition: TPTask.cc:673
hcaldqm::ContainerProf1D _cOccupancyEmulvsLS_TTSubdet
Definition: TPTask.h:149
hcaldqm::ContainerProf1D _cOccupancyCutEmulvsLS_TTSubdet
Definition: TPTask.h:151
virtual void fill(int, int)
virtual void initialize(hashfunctions::HashType, int debug=0)
Definition: ContainerXXX.h:81
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:157
hcaldqm::ContainerProf1D _cEtMsmRatiovsBX_TTSubdet
Definition: TPTask.h:121
void book(DQMStore::IBooker &, HcalElectronicsMap const *, std::string subsystem="Hcal", std::string aux="") override
Definition: Container2D.cc:567
edm::InputTag _tagEmul
Definition: TPTask.h:38
hcaldqm::ContainerSingleProf2D _cEtCutEmul_depthlike
Definition: TPTask.h:88
hcaldqm::ContainerProf2D _cEtData_ElectronicsuTCA
Definition: TPTask.h:81
tmp
align.sh
Definition: createJobs.py:716
hcaldqm::ContainerProf1D _cMsnEmulvsLS_TTSubdet
Definition: TPTask.h:138
void book(DQMStore::IBooker &, std::string subsystem="Hcal", std::string aux="") override
hcaldqm::ContainerSingle1D _cOccupancy_HF_ieta
Definition: TPTask.h:164
Readout chain identification for Hcal.
std::string const & instance() const
Definition: InputTag.h:37
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
tuple size
Write out results.
hcaldqm::ContainerSingle2D _cMsnData_depthlike
Definition: TPTask.h:129
bool isFEDHF(HcalElectronicsId const &)
Definition: Utilities.cc:170
int ietaAbs() const
get the absolute value of the tower ieta
int const SLOT_uTCA_MIN
Definition: Constants.h:107
hcaldqm::ContainerSingleProf2D _cEtCutData_depthlike
Definition: TPTask.h:87
Definition: Run.h:45
hcaldqm::Container1D _cEtData_TTSubdet
Definition: TPTask.h:69
hcaldqm::ContainerSingle2D _cMsnEmul_depthlike
Definition: TPTask.h:137
std::vector< std::pair< HcalTriggerPrimitiveDigi, HcalTriggerPrimitiveDigi > > _vEmulTPDigis_SentRec
Definition: TPTask.h:167
hcaldqm::ContainerProf1D _cMsnCutEmulvsLS_TTSubdet
Definition: TPTask.h:139