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 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) {
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);
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) {
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()) {
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) {
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
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++;
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);
909  _cOccupancyCutDatavsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHBHEValid), bx, numCutHBHE);
910  _cOccupancyCutDatavsBX_TTSubdet.fill(HcalTrigTowerDetId(rawidHFValid), bx, 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()) {
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) {
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())) {
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);
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);
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 =
1134  (abs(ieta) < 29) ? true
1135  : (recdTp.SOI_compressedEt() == 0 || (sentTp.SOI_fineGrain() == recdTp.SOI_fineGrain()));
1136  // Ignore minBias (FB2) bit if we receieve 0 ET, which means it is likely zero-suppressed on HCal readout side
1137  const bool Hfb2Agreement =
1138  (abs(ieta) < 29) ? true
1139  : (recdTp.SOI_compressedEt() == 0 || (sentTp.SOI_fineGrain(1) == recdTp.SOI_fineGrain(1)));
1140  if (!(HetAgreement && Hfb1Agreement && Hfb2Agreement)) {
1143  _xSentRecL1Msm.get(eid)++;
1144  }
1145  }
1146  }
1147 }
1148 
1149 std::shared_ptr<hcaldqm::Cache> TPTask::globalBeginLuminosityBlock(edm::LuminosityBlock const& lb,
1150  edm::EventSetup const& es) const {
1151  return DQTask::globalBeginLuminosityBlock(lb, es);
1152 }
1153 
1155  if (_ptype != fOnline)
1156  return;
1157 
1158  auto lumiCache = luminosityBlockCache(lb.index());
1159  _currentLS = lumiCache->currentLS;
1160 
1161  //
1162  // GENERATE STATUS ONLY FOR ONLINE!
1163  //
1164  for (std::vector<uint32_t>::const_iterator it = _vhashFEDs.begin(); it != _vhashFEDs.end(); ++it) {
1165  flag::Flag fSum("TP");
1167 
1168  std::vector<uint32_t>::const_iterator cit = std::find(_vcdaqEids.begin(), _vcdaqEids.end(), *it);
1169  if (cit == _vcdaqEids.end()) {
1170  // not @cDAQ
1171  for (uint32_t iflag = 0; iflag < _vflags.size(); iflag++)
1174  continue;
1175  }
1176 
1178  // FED is @cDAQ
1179  double etmsm = _xNumCorr.get(eid) > 0 ? double(_xEtMsm.get(eid)) / double(_xNumCorr.get(eid)) : 0;
1180  /*
1181  * UNUSED VARS
1182  * double dmsm = _xDataTotal.get(eid)>0?
1183  double(_xDataMsn.get(eid))/double(_xDataTotal.get(eid)):0;
1184  double emsm = _xEmulTotal.get(eid)>0?
1185  double(_xEmulMsn.get(eid))/double(_xEmulTotal.get(eid)):0;
1186  double fgmsm = _xNumCorr.get(eid)>0?
1187  double(_xFGMsm.get(eid))/double(_xNumCorr.get(eid)):0;
1188  */
1189  if (etmsm >= _thresh_EtMsmRate_high)
1190  _vflags[fEtMsm]._state = flag::fBAD;
1191  else if (etmsm >= _thresh_EtMsmRate_low)
1192  _vflags[fEtMsm]._state = flag::fPROBLEMATIC;
1193  else
1194  _vflags[fEtMsm]._state = flag::fGOOD;
1195  /*
1196  * DISABLE THESE FLAGS FOR ONLINE FOR NOW!
1197  if (dmsm>=_thresh_DataMsn)
1198  _vflags[fDataMsn]._state = flag::fBAD;
1199  else
1200  _vflags[fDataMsn]._state = flag::fGOOD;
1201  if (emsm>=_thresh_EmulMsn)
1202  _vflags[fEmulMsn]._state = flag::fBAD;
1203  else
1204  _vflags[fEmulMsn]._state = flag::fGOOD;
1205  */
1206 
1207  if (_ptype == fOnline) {
1208  if (_xSentRecL1Msm.get(eid) >= 1) {
1209  _vflags[fSentRecL1Msm]._state = flag::fBAD;
1210  } else {
1211  _vflags[fSentRecL1Msm]._state = flag::fGOOD;
1212  }
1213  }
1214  }
1215 
1216  if (_unknownIdsPresent)
1217  _vflags[fUnknownIds]._state = flag::fBAD;
1218  else
1219  _vflags[fUnknownIds]._state = flag::fGOOD;
1220 
1221  int iflag = 0;
1222  for (std::vector<flag::Flag>::iterator ft = _vflags.begin(); ft != _vflags.end(); ++ft) {
1223  _cSummaryvsLS_FED.setBinContent(eid, _currentLS, int(iflag), ft->_state);
1224  fSum += (*ft);
1225  iflag++;
1226 
1227  // this is the MUST!
1228  // reset after using this flag
1229  ft->reset();
1230  }
1232  }
1233 
1234  // reset...
1235  _xEtMsm.reset();
1236  _xFGMsm.reset();
1237  _xNumCorr.reset();
1238  _xDataMsn.reset();
1239  _xDataTotal.reset();
1240  _xEmulMsn.reset();
1241  _xEmulTotal.reset();
1242 
1243  // in the end always do the DQTask::endLumi
1244  DQTask::globalEndLuminosityBlock(lb, es);
1245 }
1246 
void initialize(std::string const &folder, hashfunctions::HashType, quantity::Quantity *, quantity::Quantity *, int debug=0) override
size
Write out results.
hcaldqm::ContainerProf1D _cEtCorrRatiovsBX_TTSubdet
Definition: TPTask.h:94
hcaldqm::ContainerXXX< uint32_t > _xDataTotal
Definition: TPTask.h:159
bool _skip1x1
Definition: TPTask.h:51
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
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
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
std::vector< uint32_t > _vhashFEDs
Definition: TPTask.h:58
hcaldqm::ContainerProf1D _cEtMsmvsLS_TTSubdet
Definition: TPTask.h:118
void initialize(HcalElectronicsMap const *, ElectronicsMapType etype=fHcalElectronicsMap)
hcaldqm::ContainerProf1D _cEtCutEmulvsLS_TTSubdet
Definition: TPTask.h:77
hcaldqm::electronicsmap::ElectronicsMap _ehashmap
Definition: TPTask.h:61
std::string const & instance() const
Definition: InputTag.h:37
edm::EDGetTokenT< HcalTrigPrimDigiCollection > _tokData
Definition: TPTask.h:40
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
void dqmthrow(std::string const &msg) const
Definition: Logger.h:12
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
std::vector< T >::const_iterator const_iterator
hcaldqm::ContainerSingleProf2D _cEtCorrRatio_depthlike
Definition: TPTask.h:92
hcaldqm::ContainerProf1D _cMsnCutDatavsBX_TTSubdet
Definition: TPTask.h:133
void globalEndLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: TPTask.cc:1154
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
const HcalElectronicsMap * getHcalMapping() const
virtual void reset()
Definition: ContainerXXX.h:292
std::string const & label() const
Definition: InputTag.h:36
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
T getUntrackedParameter(std::string const &, T const &) const
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
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
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:1149
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: TPTask.cc:40
Logger _logger
Definition: DQModule.h:55
const_iterator begin() const
hcaldqm::ContainerSingle2D _cOccupancy_HF_depth
Definition: TPTask.h:163
UseScope< MonitorElementData::Scope::LUMI > UseLumiScope
Definition: DQMStore.h:540
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
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:151
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
const_iterator end() const
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
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
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
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::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
constexpr uint32_t rawId() const
int ietaAbs() const
get the absolute value of the tower ieta
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
hcaldqm::ContainerProf1D _cOccupancyCutDatavsBX_TTSubdet
Definition: TPTask.h:146
LuminosityBlockIndex index() const
hcaldqm::ContainerSingle1D _cOccupancyNoTDC_HF_ieta
Definition: TPTask.h:164
iterator find(key_type k)
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
HLT enums.
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
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
Definition: TPTask.py:1
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
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
int version() const
get the version code for the trigger tower
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.
hcaldqm::ContainerSingle2D _cMsnData_depthlike
Definition: TPTask.h:129
bool isFEDHF(HcalElectronicsId const &)
Definition: Utilities.cc:170
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
ib
Definition: cuy.py:661
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