CMS 3D CMS Logo

GEMDQMStatusDigi.cc
Go to the documentation of this file.
12 
16 
21 
22 #include <string>
23 #include <fstream>
24 
25 #include <TFile.h>
26 #include <TDirectoryFile.h>
27 
28 //----------------------------------------------------------------------------------------------------
29 
30 using namespace dqm::impl;
31 
33 public:
35  ~GEMDQMStatusDigi() override{};
36  static void fillDescriptions(edm::ConfigurationDescriptions &descriptions);
37 
38 protected:
39  void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
40  void bookHistogramsChamberPart(DQMStore::IBooker &, GEMDetId &);
41  void bookHistogramsStationPart(DQMStore::IBooker &, GEMDetId &);
42  void bookHistogramsAMCPart(DQMStore::IBooker &);
43 
44  int SetInfoChambers();
45 
46  Int_t seekIdx(std::vector<GEMDetId> &listLayers, UInt_t unId);
47  void seekIdxSummary(GEMDetId gid, Int_t &nIdxLayer, Int_t &nIdxChamber);
48 
49  void analyze(edm::Event const &e, edm::EventSetup const &eSetup) override;
50 
51 private:
52  const GEMGeometry *initGeometry(edm::EventSetup const &iSetup);
53 
54  void AddLabel();
55 
56  std::string suffixChamber(GEMDetId &id);
57  std::string suffixLayer(GEMDetId &id);
58 
59  Bool_t FillBits(MonitorElement *monitor, uint64_t unVal, int nNumBits);
60  Bool_t FillBits(MonitorElement *monitor, uint64_t unVal, int nNumBits, int nY);
61 
63 
65  std::shared_ptr<GEMROMapping> GEMROMapping_;
66  std::vector<GEMChamber> gemChambers_;
67 
68  int nNCh_;
69 
70  int cBit_ = 9;
71  int qVFATBit_ = 5;
72  int fVFATBit_ = 4;
73  int eBit_ = 17;
74  int amcStatusBit_ = 7;
75 
77 
78  int nNBxBin_;
80 
84 
89 
90  std::vector<Int_t> listAMCSlots_;
91 
92  std::vector<GEMDetId> m_listLayers;
93  std::vector<GEMDetId> m_listChambers;
94 
97 
98  std::unordered_map<UInt_t, MonitorElement *> listVFATQualityFlag_;
99  std::unordered_map<UInt_t, MonitorElement *> listVFATBC_;
100  std::unordered_map<UInt_t, MonitorElement *> listVFATEC_;
101 
102  std::unordered_map<UInt_t, MonitorElement *> listGEBInputStatus_;
103  std::unordered_map<UInt_t, MonitorElement *> listGEBInputID_;
104  std::unordered_map<UInt_t, MonitorElement *> listGEBVFATWordCnt_;
105  std::unordered_map<UInt_t, MonitorElement *> listGEBVFATWordCntT_;
106  std::unordered_map<UInt_t, MonitorElement *> listGEBZeroSupWordsCnt_;
107  std::unordered_map<UInt_t, MonitorElement *> listGEBbcOH_;
108  std::unordered_map<UInt_t, MonitorElement *> listGEBecOH_;
109  std::unordered_map<UInt_t, MonitorElement *> listGEBOHCRC_;
110 
111  std::unordered_map<UInt_t, Bool_t> m_mapStatusFill;
112  std::unordered_map<UInt_t, Bool_t> m_mapStatusErr;
113 
115  const Int_t m_nIdxSummaryFill = 1, m_nIdxSummaryErr = 2;
116 
123 
125 };
126 
128  const GEMGeometry *GEMGeometry_ = nullptr;
129  try {
131  iSetup.get<MuonGeometryRecord>().get(hGeom);
132  GEMGeometry_ = &*hGeom;
134  edm::LogError("MuonGEMBaseValidation") << "+++ Error : GEM geometry is unavailable on event loop. +++\n";
135  return nullptr;
136  }
137  return GEMGeometry_;
138 }
139 
140 using namespace std;
141 using namespace edm;
142 
144  tagVFAT_ = consumes<GEMVfatStatusDigiCollection>(cfg.getParameter<edm::InputTag>("VFATInputLabel"));
145  tagGEB_ = consumes<GEMGEBdataCollection>(cfg.getParameter<edm::InputTag>("GEBInputLabel"));
146  tagAMC_ = consumes<GEMAMCdataCollection>(cfg.getParameter<edm::InputTag>("AMCInputLabel"));
147  tagDigi_ = consumes<GEMDigiCollection>(cfg.getParameter<edm::InputTag>("digisInputLabel"));
148 
149  listAMCSlots_ = cfg.getParameter<std::vector<int>>("AMCSlots");
150 
151  strFmtSummaryLabel_ = cfg.getParameter<std::string>("summaryLabelFmt");
152  bFlipSummary_ = cfg.getParameter<bool>("flipSummary");
153  bPerSuperchamber_ = cfg.getParameter<bool>("perSuperchamber");
154 
155  nIdxFirstStrip_ = cfg.getParameter<int>("idxFirstStrip");
156 
157  nNBxRange_ = cfg.getParameter<int>("bxRange");
158  nNBxBin_ = cfg.getParameter<int>("bxBin");
159 
160  bDebugMode_ = cfg.getParameter<bool>("debugMode");
161 }
162 
165  desc.add<edm::InputTag>("VFATInputLabel", edm::InputTag("muonGEMDigis", "vfatStatus"));
166  desc.add<edm::InputTag>("GEBInputLabel", edm::InputTag("muonGEMDigis", "gebStatus"));
167  desc.add<edm::InputTag>("AMCInputLabel", edm::InputTag("muonGEMDigis", "AMCdata"));
168  desc.add<edm::InputTag>("digisInputLabel", edm::InputTag("muonGEMDigis", ""));
169 
170  std::vector<int> listAMCSlotsDef = {0, 1, 2, 3, 4, 5, 6, 7};
171  desc.add<std::vector<int>>("AMCSlots", listAMCSlotsDef); // TODO: Find how to get this from the geometry
172 
173  desc.add<std::string>("summaryLabelFmt", "GE%(station_signed)+i/%(layer)i");
174  desc.add<bool>("flipSummary", false);
175  desc.add<bool>("perSuperchamber", true);
176 
177  desc.add<int>("idxFirstStrip", 0);
178 
179  desc.add<int>("bxRange", 10);
180  desc.add<int>("bxBin", 20);
181 
182  desc.add<bool>("debugMode", false);
183 
184  descriptions.add("GEMDQMStatusDigi", desc);
185 }
186 
188  return "Gemini_" + to_string(id.chamber()) + "_GE" + (id.region() > 0 ? "p" : "m") + to_string(id.station()) + "_" +
189  to_string(id.layer());
190 }
191 
193  return std::string("st_") + (id.region() >= 0 ? "p" : "m") + std::to_string(id.station()) +
194  (bPerSuperchamber_ ? "_la_" + std::to_string(id.layer()) : "");
195 }
196 
198  const std::vector<const GEMSuperChamber *> &superChambers_ = GEMGeometry_->superChambers();
199  for (auto sch : superChambers_) {
200  int nLayer = sch->nChambers();
201  for (int l = 0; l < nLayer; l++) {
202  Bool_t bExist = false;
203  for (const auto &ch : gemChambers_)
204  if (ch.id() == sch->chamber(l + 1)->id())
205  bExist = true;
206  if (bExist)
207  continue;
208 
209  gemChambers_.push_back(*sch->chamber(l + 1));
210  }
211  }
212 
213  // End: Loading the GEM geometry
214 
215  // Start: Set the configurations
216 
217  m_listLayers.clear();
218 
219  // Summarizing geometry configurations
220  for (const auto &ch : gemChambers_) {
221  GEMDetId gid = ch.id();
222 
223  GEMDetId layerID(gid.region(), gid.ring(), gid.station(), (bPerSuperchamber_ ? gid.layer() : 0), 0, 0);
224  Bool_t bOcc = false;
225 
226  for (auto lid : m_listLayers) {
227  if (lid == layerID) {
228  bOcc = true;
229  break;
230  }
231  }
232 
233  if (!bOcc)
234  m_listLayers.push_back(layerID);
235 
236  GEMDetId chamberID(0, 1, 1, (bPerSuperchamber_ ? 0 : gid.layer()), gid.chamber(), 0);
237  bOcc = false;
238 
239  for (auto cid : m_listChambers) {
240  if (cid == chamberID) {
241  bOcc = true;
242  break;
243  }
244  }
245 
246  if (!bOcc)
247  m_listChambers.push_back(chamberID);
248  }
249 
250  // Preliminary for sorting the summaries
251  auto lambdaLayer = [this](GEMDetId a, GEMDetId b) -> Bool_t {
252  Int_t nFlipSign = (this->bFlipSummary_ ? -1 : 1);
253  Int_t nA = nFlipSign * a.region() * (20 * a.station() + a.layer());
254  Int_t nB = nFlipSign * b.region() * (20 * b.station() + b.layer());
255  return nA > nB;
256  };
257 
258  auto lambdaChamber = [](GEMDetId a, GEMDetId b) -> Bool_t {
259  Int_t nA = 20 * a.chamber() + a.layer();
260  Int_t nB = 20 * b.chamber() + b.layer();
261  return nA < nB;
262  };
263 
264  // Sorting the summaries
265  std::sort(m_listLayers.begin(), m_listLayers.end(), lambdaLayer);
266  std::sort(m_listChambers.begin(), m_listChambers.end(), lambdaChamber);
267 
268  nNCh_ = (int)m_listChambers.size();
269 
270  return 0;
271 }
272 
273 void GEMDQMStatusDigi::bookHistogramsChamberPart(DQMStore::IBooker &ibooker, GEMDetId &gid) {
274  std::string hName, hTitle;
275 
276  UInt_t unBinPos;
277 
278  std::string strIdxName = suffixChamber(gid);
279  std::string strIdxTitle = "GEMINIm" + to_string(gid.chamber()) + " in GE" + (gid.region() > 0 ? "+" : "-") +
280  to_string(gid.station()) + "/" + to_string(gid.layer());
281 
282  Int_t nVFAT = 0;
283  if (gid.station() == 1)
285  if (gid.station() == 2)
287 
288  hName = "vfatStatus_QualityFlag_" + strIdxName;
289  hTitle = "VFAT quality " + strIdxTitle;
290  hTitle += ";VFAT;";
291  listVFATQualityFlag_[gid] = ibooker.book2D(hName, hTitle, nVFAT, 0, nVFAT, 9, 0, 9);
292 
293  hName = "vfatStatus_BC_" + strIdxName;
294  hTitle = "VFAT bunch crossing " + strIdxTitle;
295  hTitle += ";Bunch crossing;VFAT";
296  listVFATBC_[gid] = ibooker.book2D(hName, hTitle, nNBxBin_, -nNBxRange_, nNBxRange_, nVFAT, 0, nVFAT);
297 
298  hName = "vfatStatus_EC_" + strIdxName;
299  hTitle = "VFAT event counter " + strIdxTitle;
300  hTitle += ";Event counter;VFAT";
301  listVFATEC_[gid] = ibooker.book2D(hName, hTitle, 256, 0, 256, nVFAT, 0, nVFAT);
302 
303  unBinPos = 1;
304  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "Good", 2);
305  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "CRC fail", 2);
306  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "b1010 fail", 2);
307  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "b1100 fail", 2);
308  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "b1110 fail", 2);
309  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "Hamming error", 2);
310  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "AFULL", 2);
311  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "SEUlogic", 2);
312  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "SUEI2C", 2);
313 
314  m_mapStatusFill[gid] = false;
315  m_mapStatusErr[gid] = false;
316 }
317 
318 void GEMDQMStatusDigi::bookHistogramsStationPart(DQMStore::IBooker &ibooker, GEMDetId &lid) {
319  UInt_t unBinPos;
320 
321  Int_t re = lid.region();
322  UInt_t st = lid.station();
323  UInt_t la = lid.layer();
324 
325  auto newbookGEB = [this](DQMStore::IBooker &ibooker,
326  std::string strName,
327  std::string strTitle,
328  std::string strAxis,
329  GEMDetId &lid,
330  int nLayer,
331  int nStation,
332  int re,
333  int nBin,
334  float fMin,
335  float fMax) -> MonitorElement * {
336  strName = strName + "_" + suffixLayer(lid);
337  strTitle = strTitle + ", station: " + (re >= 0 ? "+" : "-") + std::to_string(nStation);
338 
339  if (bPerSuperchamber_) {
340  strTitle += ", layer: " + std::to_string(nLayer);
341  }
342 
343  strTitle += ";Chamber;" + strAxis;
344 
345  auto hNew = ibooker.book2D(strName, strTitle, this->nNCh_, 0, this->nNCh_, nBin, fMin, fMax);
346 
347  for (Int_t i = 0; i < this->nNCh_; i++) {
348  auto &gid = this->m_listChambers[i];
349  Int_t nCh = gid.chamber() + (this->bPerSuperchamber_ ? 0 : gid.layer() - 1);
350  hNew->setBinLabel(i + 1, std::to_string(nCh), 1);
351  }
352 
353  return hNew;
354  };
355 
356  listGEBInputStatus_[lid] =
357  newbookGEB(ibooker, "geb_input_status", "inputStatus", "", lid, la, st, re, eBit_, 0, eBit_);
358  listGEBInputID_[lid] = newbookGEB(ibooker, "geb_input_ID", "inputID", "Input ID", lid, la, st, re, 32, 0, 32);
359  listGEBVFATWordCnt_[lid] =
360  newbookGEB(ibooker, "geb_no_vfats", "nvfats in header", "Number of VFATs in header", lid, la, st, re, 25, 0, 25);
361  listGEBVFATWordCntT_[lid] = newbookGEB(
362  ibooker, "geb_no_vfatsT", "nvfats in trailer", "Number of VFATs in trailer", lid, la, st, re, 25, 0, 25);
363  listGEBZeroSupWordsCnt_[lid] = newbookGEB(
364  ibooker, "geb_zeroSupWordsCnt", "zeroSupWordsCnt", "Zero sup. words count", lid, la, st, re, 10, 0, 10);
365 
366  if (bDebugMode_) {
367  listGEBbcOH_[lid] =
368  newbookGEB(ibooker, "geb_bcOH", "OH bunch crossing", "OH bunch crossing", lid, la, st, re, 3600, 0, 3600);
369  listGEBecOH_[lid] =
370  newbookGEB(ibooker, "geb_ecOH", "OH event coounter", "OH event counter", lid, la, st, re, 256, 0, 256);
371  listGEBOHCRC_[lid] =
372  newbookGEB(ibooker, "geb_OHCRC", "CRC of OH data", "CRC of OH data", lid, la, st, re, 65536, 0, 65536);
373  }
374 
375  unBinPos = 1;
376  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "Good", 2);
377  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "BX mismatch GLIB OH", 2);
378  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "BX mismatch GLIB VFAT", 2);
379  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "OOS GLIB OH", 2);
380  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "OOS GLIB VFAT", 2);
381  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "No VFAT marker", 2);
382  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "Event size warn", 2);
383  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "L1AFIFO near full", 2);
384  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "InFIFO near full", 2);
385  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "EvtFIFO near full", 2);
386  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "Event size overflow", 2);
387  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "L1AFIFO full", 2);
388  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "InFIFO full", 2);
389  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "EvtFIFO full", 2);
390  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "Input FIFO underflow", 2);
391  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "Stuck data", 2);
392  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "Event FIFO underflow", 2);
393 }
394 
395 void GEMDQMStatusDigi::bookHistogramsAMCPart(DQMStore::IBooker &ibooker) {
396  h2AMCStatus_ = ibooker.book2D("amc_statusflag",
397  "Status of AMC slots;AMC slot;",
398  listAMCSlots_.size(),
399  0,
400  listAMCSlots_.size(),
401  amcStatusBit_,
402  0,
403  amcStatusBit_);
404 
405  uint32_t unBinPos = 1;
406  h2AMCStatus_->setBinLabel(unBinPos++, "Good", 2);
407  h2AMCStatus_->setBinLabel(unBinPos++, "BC0 not locked", 2);
408  h2AMCStatus_->setBinLabel(unBinPos++, "DAQ not ready", 2);
409  h2AMCStatus_->setBinLabel(unBinPos++, "DAQ clock not locked", 2);
410  h2AMCStatus_->setBinLabel(unBinPos++, "MMCM not locked", 2);
411  h2AMCStatus_->setBinLabel(unBinPos++, "Back pressure", 2);
412  h2AMCStatus_->setBinLabel(unBinPos++, "GLIB out-of-sync", 2);
413 }
414 
415 // To make labels like python, with std::(unordered_)map
416 std::string printfWithMap(std::string strFmt, std::unordered_map<std::string, Int_t> mapArg) {
417  std::string strRes = strFmt;
418  char szOutFmt[64];
419  size_t unPos, unPosEnd;
420 
421  for (unPos = strRes.find('%'); unPos != std::string::npos; unPos = strRes.find('%', unPos + 1)) {
422  unPosEnd = strRes.find(')', unPos);
423  if (strRes[unPos + 1] != '(' || unPosEnd == std::string::npos)
424  break; // Syntax error
425 
426  // Extracting the key
427  std::string strKey = strRes.substr(unPos + 2, unPosEnd - (unPos + 2));
428 
429  // To treat formats like '%5i' or '%02i', extracting '5' or '02'
430  // After do this,
431  std::string strOptNum = "%";
432  unPosEnd++;
433 
434  for (;; unPosEnd++) {
435  if (!('0' <= strRes[unPosEnd] && strRes[unPosEnd] <= '9') && strRes[unPosEnd] != '+')
436  break;
437  strOptNum += strRes[unPosEnd];
438  }
439 
440  if (strRes[unPosEnd] != 'i' && strRes[unPosEnd] != 'd')
441  break; // Syntax error
442  strOptNum += strRes[unPosEnd];
443  unPosEnd++;
444 
445  sprintf(szOutFmt, strOptNum.c_str(), mapArg[strKey]);
446  strRes = strRes.substr(0, unPos) + szOutFmt + strRes.substr(unPosEnd);
447  }
448 
449  if (unPos != std::string::npos) { // It means... an syntax error occurs!
450  std::cerr << "ERROR: Syntax error on printfWithMap(); " << std::endl;
451  return "";
452  }
453 
454  return strRes;
455 }
456 
457 void GEMDQMStatusDigi::bookHistograms(DQMStore::IBooker &ibooker, edm::Run const &, edm::EventSetup const &iSetup) {
458  // Start: Loading the GEM geometry
459 
460  GEMGeometry_ = initGeometry(iSetup);
461  if (GEMGeometry_ == nullptr)
462  return;
463 
464  SetInfoChambers();
465 
466  // End: Set the configurations
467 
468  // Start: Setting books
469 
470  ibooker.cd();
471  ibooker.setCurrentFolder("GEM/StatusDigi");
472 
473  for (const auto &ch : gemChambers_) {
474  GEMDetId gid = ch.id();
475  bookHistogramsChamberPart(ibooker, gid);
476  }
477 
478  for (auto lid : m_listLayers) {
479  bookHistogramsStationPart(ibooker, lid);
480  }
481 
482  bookHistogramsAMCPart(ibooker);
483 
484  h1_vfat_qualityflag_ = ibooker.book1D("vfat_quality_flag", "quality and flag", 9, 0, 9);
485  h2_vfat_qualityflag_ = ibooker.book2D("vfat_quality_flag_per_geb", "quality and flag", nNCh_, 0, nNCh_, 9, 0, 9);
486 
487  h1_amc_ttsState_ = ibooker.book1D("amc_ttsState", "ttsState", 10, 0, 10);
488  h1_amc_davCnt_ = ibooker.book1D("amc_davCnt", "davCnt", 10, 0, 10);
489  h1_amc_buffState_ = ibooker.book1D("amc_buffState", "buffState", 10, 0, 10);
490  h1_amc_oosGlib_ = ibooker.book1D("amc_oosGlib", "oosGlib", 10, 0, 10);
491  h1_amc_chTimeOut_ = ibooker.book1D("amc_chTimeOut", "chTimeOut", 10, 0, 10);
492 
493  ibooker.cd();
494  ibooker.setCurrentFolder("GEM/EventInfo");
495 
496  h3SummaryStatusPre_ = ibooker.book3D(
497  "reportSummaryMapPreliminary", ";Chamber;", nNCh_, 0, nNCh_, m_listLayers.size(), 0, m_listLayers.size(), 2, 0, 1);
498 
499  for (Int_t i = 0; i < nNCh_; i++) {
500  auto &gid = this->m_listChambers[i];
501  Int_t nCh = gid.chamber() + (bPerSuperchamber_ ? 0 : gid.layer() - 1);
502  h3SummaryStatusPre_->setBinLabel(i + 1, std::to_string(nCh), 1);
503  }
504 
505  Int_t nIdxLayer = 0;
506  std::unordered_map<std::string, Int_t> mapArg;
507 
508  // Start: Labeling section
509 
510  for (auto lid : m_listLayers) {
511  mapArg["station_signed"] = lid.region() * lid.station();
512  mapArg["region"] = lid.region();
513  mapArg["station"] = lid.station();
514  mapArg["layer"] = lid.layer();
515  mapArg["chamber"] = lid.chamber();
516 
517  h3SummaryStatusPre_->setBinLabel(nIdxLayer + 1, printfWithMap(strFmtSummaryLabel_, mapArg), 2);
518  nIdxLayer++;
519  }
520 }
521 
523  int i = 0;
524  uint64_t unFlag = 1;
525 
526  if (monitor == nullptr)
527  return false;
528 
529  for (; i < nNumBits; i++, unFlag <<= 1) {
530  if ((unVal & unFlag) != 0) {
531  monitor->Fill(i);
532  }
533  }
534 
535  return true;
536 }
537 
538 Bool_t GEMDQMStatusDigi::FillBits(MonitorElement *monitor, uint64_t unVal, int nNumBits, int nX) {
539  int i = 0;
540  uint64_t unFlag = 1;
541 
542  if (monitor == nullptr)
543  return false;
544 
545  for (; i < nNumBits; i++, unFlag <<= 1) {
546  if ((unVal & unFlag) != 0) {
547  monitor->Fill(nX, i);
548  }
549  }
550 
551  return true;
552 }
553 
554 Int_t GEMDQMStatusDigi::seekIdx(std::vector<GEMDetId> &listLayers, UInt_t unId) {
555  if (unId < 256)
556  return -1;
557 
558  GEMDetId id(unId);
559  for (Int_t nIdx = 0; nIdx < (Int_t)listLayers.size(); nIdx++)
560  if (id == listLayers[nIdx])
561  return nIdx;
562  return -1;
563 }
564 
565 void GEMDQMStatusDigi::seekIdxSummary(GEMDetId gid, Int_t &nIdxLayer, Int_t &nIdxChamber) {
566  Int_t nLayer = (bPerSuperchamber_ ? gid.layer() : 0);
567  GEMDetId layerId(gid.region(), gid.ring(), gid.station(), nLayer, 0, 0);
568  GEMDetId chamberId(0, 1, 1, gid.layer() - nLayer, gid.chamber(), 0);
569 
570  nIdxLayer = seekIdx(m_listLayers, layerId) + 1;
571  nIdxChamber = seekIdx(m_listChambers, chamberId) + 1;
572 }
573 
575  Bool_t bIsNotEmpty = true;
576 
581 
582  event.getByToken(tagVFAT_, gemVFAT);
583  event.getByToken(tagGEB_, gemGEB);
584  event.getByToken(tagAMC_, gemAMC);
585  event.getByToken(tagDigi_, gemDigis);
586 
587  for (GEMVfatStatusDigiCollection::DigiRangeIterator vfatIt = gemVFAT->begin(); vfatIt != gemVFAT->end(); ++vfatIt) {
588  GEMDetId gemid = (*vfatIt).first;
589  GEMDetId gemchId = gemid.chamberId();
590  GEMDetId gemOnlychId(0, 1, 1, (bPerSuperchamber_ ? 0 : gemid.layer()), gemid.chamber(), 0);
591 
592  int nIdx = seekIdx(m_listChambers, gemOnlychId);
593  int nRoll = gemid.roll();
594  const GEMVfatStatusDigiCollection::Range &range = (*vfatIt).second;
595 
596  for (auto vfatStat = range.first; vfatStat != range.second; ++vfatStat) {
597  bIsNotEmpty = true;
598 
599  uint64_t unQFVFAT = vfatStat->quality() /* | (vfatStat->flag() << qVFATBit_)*/;
600  if ((unQFVFAT & ~0x1) == 0) {
601  unQFVFAT |= 0x1; // If no error, then it should be 'Good'
602  } else { // Error!!
603  Int_t nIdxLayer, nIdxChamber;
604  seekIdxSummary(gemchId, nIdxLayer, nIdxChamber);
605  h3SummaryStatusPre_->setBinContent(nIdxChamber, nIdxLayer, m_nIdxSummaryErr, 1.0);
606  }
607 
608  FillBits(h1_vfat_qualityflag_, unQFVFAT, qVFATBit_ + fVFATBit_);
609  FillBits(h2_vfat_qualityflag_, unQFVFAT, qVFATBit_ + fVFATBit_, nIdx); // They could be there
610 
611  int nVFAT = (GEMeMap::maxEtaPartition_ - nRoll) + GEMeMap::maxEtaPartition_ * vfatStat->phi();
612  bIsNotEmpty = FillBits(listVFATQualityFlag_[gemchId], unQFVFAT, qVFATBit_ + fVFATBit_, nVFAT);
613 
614  if (!bIsNotEmpty) {
615  edm::LogError("BadGeometry") << "Wrong detId which is not in the current geometry (VFAT status): " << gemchId
616  << std::endl;
617  continue;
618  }
619 
620  listVFATEC_[gemchId]->Fill(vfatStat->ec(), nVFAT);
621  }
622  }
623 
624  for (GEMGEBdataCollection::DigiRangeIterator gebIt = gemGEB->begin(); gebIt != gemGEB->end(); ++gebIt) {
625  GEMDetId gemid = (*gebIt).first;
626  GEMDetId lid(gemid.region(), gemid.ring(), gemid.station(), (bPerSuperchamber_ ? gemid.layer() : 0), 0, 0);
627  GEMDetId chid(0, 1, 1, (bPerSuperchamber_ ? 0 : gemid.layer()), gemid.chamber(), 0);
628 
629  Int_t nCh = seekIdx(m_listChambers, chid);
630 
631  const GEMGEBdataCollection::Range &range = (*gebIt).second;
632  for (auto GEBStatus = range.first; GEBStatus != range.second; ++GEBStatus) {
633  bIsNotEmpty = true;
634 
635  uint64_t unBit = 1;
636  uint64_t unStatus = 0;
637 
638  unStatus |= (GEBStatus->bxmVvV() << unBit++);
639  unStatus |= (GEBStatus->bxmAvV() << unBit++);
640  unStatus |= (GEBStatus->oOScVvV() << unBit++);
641  unStatus |= (GEBStatus->oOScAvV() << unBit++);
642  unStatus |= (GEBStatus->noVFAT() << unBit++);
643  unStatus |= (GEBStatus->evtSzW() << unBit++);
644  unStatus |= (GEBStatus->l1aNF() << unBit++);
645  unStatus |= (GEBStatus->inNF() << unBit++);
646  unStatus |= (GEBStatus->evtNF() << unBit++);
647  unStatus |= (GEBStatus->evtSzOFW() << unBit++);
648  unStatus |= (GEBStatus->l1aF() << unBit++);
649  unStatus |= (GEBStatus->inF() << unBit++);
650  unStatus |= (GEBStatus->evtF() << unBit++);
651  unStatus |= (GEBStatus->inUfw() << unBit++);
652  unStatus |= (GEBStatus->stuckData() << unBit++);
653  unStatus |= (GEBStatus->evUfw() << unBit++);
654 
655  if (unStatus != 0) { // Error!
656  Int_t nIdxLayer, nIdxChamber;
657  seekIdxSummary(gemid, nIdxLayer, nIdxChamber);
658  h3SummaryStatusPre_->setBinContent(nIdxChamber, nIdxLayer, m_nIdxSummaryErr, 1.0);
659  } else {
660  unStatus = 0x01; // Good
661  }
662 
663  bIsNotEmpty = FillBits(listGEBInputStatus_[lid], unStatus, eBit_, nCh);
664 
665  if (!bIsNotEmpty) {
666  edm::LogError("BadGeometry") << "Wrong detId which is not in the current geometry (GEB status): " << lid
667  << std::endl;
668  continue;
669  }
670 
671  listGEBInputID_[lid]->Fill(nCh, GEBStatus->inputID());
672  listGEBVFATWordCnt_[lid]->Fill(nCh, GEBStatus->vfatWordCnt() / 3);
673  listGEBVFATWordCntT_[lid]->Fill(nCh, GEBStatus->vfatWordCntT() / 3);
674  listGEBZeroSupWordsCnt_[lid]->Fill(nCh, GEBStatus->zeroSupWordsCnt());
675 
676  if (bDebugMode_) {
677  listGEBbcOH_[lid]->Fill(nCh, GEBStatus->bcOH());
678  listGEBecOH_[lid]->Fill(nCh, GEBStatus->ecOH());
679  listGEBOHCRC_[lid]->Fill(nCh, GEBStatus->crc());
680  }
681  }
682  }
683 
684  auto findAMCIdx = [this](Int_t nAMCnum) -> Int_t {
685  for (Int_t i = 0; i < (Int_t)listAMCSlots_.size(); i++)
686  if (listAMCSlots_[i] == nAMCnum)
687  return i;
688  return -1;
689  };
690 
691  for (GEMAMCdataCollection::DigiRangeIterator amcIt = gemAMC->begin(); amcIt != gemAMC->end(); ++amcIt) {
692  const GEMAMCdataCollection::Range &range = (*amcIt).second;
693  for (auto amc = range.first; amc != range.second; ++amc) {
694  Int_t nIdAMC = findAMCIdx(amc->amcNum());
695  uint64_t unBit = 1;
696  uint64_t unStatus = 0;
697 
698  unStatus |= (!amc->bc0locked() << unBit++);
699  unStatus |= (!amc->daqReady() << unBit++);
700  unStatus |= (!amc->daqClockLocked() << unBit++);
701  unStatus |= (!amc->mmcmLocked() << unBit++);
702  unStatus |= (amc->backPressure() << unBit++);
703  unStatus |= (amc->oosGlib() << unBit++);
704 
705  if (unStatus == 0) {
706  unStatus = 0x01; // Good
707  }
708 
709  FillBits(h2AMCStatus_, unStatus, amcStatusBit_, nIdAMC);
710 
711  h1_amc_ttsState_->Fill(amc->ttsState());
712  h1_amc_davCnt_->Fill(amc->davCnt());
713  h1_amc_buffState_->Fill(amc->buffState());
714  h1_amc_oosGlib_->Fill(amc->oosGlib());
715  h1_amc_chTimeOut_->Fill(amc->linkTo());
716  }
717  }
718 
719  auto findVFATByStrip = [](GEMDetId gid, Int_t nIdxStrip, Int_t nNumStrips) -> Int_t {
720  Int_t nNumEtaPart = GEMeMap::maxEtaPartition_;
721 
722  // Strip: Start at 0
723  if (gid.station() == 1) { // GE1/1
724  Int_t nNumVFAT = GEMeMap::maxVFatGE11_;
725  return nNumEtaPart * ((Int_t)(nIdxStrip / (nNumStrips / nNumVFAT)) + 1) - gid.roll();
726  } else if (gid.station() == 2) { // GE2/1
727  Int_t nNumVFAT = GEMeMap::maxVFatGE21_;
728  return nNumEtaPart * ((Int_t)(nIdxStrip / (nNumStrips / nNumVFAT)) + 1) - gid.roll();
729  }
730 
731  return -1;
732  };
733 
734  // Checking if there is a fire (data)
735  for (const auto &ch : gemChambers_) {
736  GEMDetId cId = ch.id();
737  Bool_t bIsHit = false;
738 
739  // Because every fired strip in a same VFAT shares a same bx, we keep bx from only one strip
740  std::unordered_map<Int_t, Int_t> mapBXVFAT;
741 
742  GEMDetId chIdDigi(cId.region(), cId.ring(), cId.station(), cId.layer(), cId.chamber(), 2);
743  GEMDetId chIdBx(cId.region(), cId.ring(), cId.station(), cId.layer(), cId.chamber(), 3);
744 
745  for (auto roll : ch.etaPartitions()) {
746  GEMDetId rId = roll->id();
747  const auto &digis_in_det = gemDigis->get(rId);
748 
749  for (auto d = digis_in_det.first; d != digis_in_det.second; ++d) {
750  Int_t nIdxStrip = d->strip() - nIdxFirstStrip_;
751  Int_t nVFAT = findVFATByStrip(rId, nIdxStrip, roll->nstrips());
752 
753  bIsHit = true;
754  mapBXVFAT[nVFAT] = d->bx();
755  }
756  }
757 
758  for (auto bx : mapBXVFAT)
759  listVFATBC_[cId]->Fill(bx.second, bx.first);
760 
761  if (bIsHit) { // Data occur!
762  Int_t nIdxLayer, nIdxChamber;
763  seekIdxSummary(cId, nIdxLayer, nIdxChamber);
764  h3SummaryStatusPre_->setBinContent(nIdxChamber, nIdxLayer, m_nIdxSummaryFill, 1.0);
765  }
766  }
767 }
768 
GEMDQMStatusDigi::bookHistograms
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: GEMDQMStatusDigi.cc:457
dqm::impl
Definition: MonitorElement.h:74
GEMDQMStatusDigi::listGEBVFATWordCnt_
std::unordered_map< UInt_t, MonitorElement * > listGEBVFATWordCnt_
Definition: GEMDQMStatusDigi.cc:104
dqm::impl::MonitorElement
Definition: MonitorElement.h:98
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
GEMDQMStatusDigi::h1_vfat_qualityflag_
MonitorElement * h1_vfat_qualityflag_
Definition: GEMDQMStatusDigi.cc:95
mps_fire.i
i
Definition: mps_fire.py:355
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
MessageLogger.h
GEMGEBdataCollection.h
GEMDetId::ring
constexpr int ring() const
Definition: GEMDetId.h:170
GEMDQMStatusDigi::bFlipSummary_
bool bFlipSummary_
Definition: GEMDQMStatusDigi.cc:82
bookHistograms
example_stream void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
GEMDQMStatusDigi::bPerSuperchamber_
bool bPerSuperchamber_
Definition: GEMDQMStatusDigi.cc:83
GEMDQMStatusDigi::suffixLayer
std::string suffixLayer(GEMDetId &id)
Definition: GEMDQMStatusDigi.cc:192
ESHandle.h
GEMDetId::layer
constexpr int layer() const
Definition: GEMDetId.h:184
edm::Run
Definition: Run.h:45
GEMVfatStatusDigiCollection.h
GEMDetId::region
constexpr int region() const
Definition: GEMDetId.h:165
GEMDQMStatusDigi::strFmtSummaryLabel_
std::string strFmtSummaryLabel_
Definition: GEMDQMStatusDigi.cc:81
relativeConstraints.station
station
Definition: relativeConstraints.py:67
edm
HLT enums.
Definition: AlignableModifier.h:19
GEMDQMStatusDigi::h1_amc_oosGlib_
MonitorElement * h1_amc_oosGlib_
Definition: GEMDQMStatusDigi.cc:120
l1GtPatternGenerator_cfi.bx
bx
Definition: l1GtPatternGenerator_cfi.py:18
GEMDQMStatusDigi::h1_amc_chTimeOut_
MonitorElement * h1_amc_chTimeOut_
Definition: GEMDQMStatusDigi.cc:121
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
GEMDQMStatusDigi::listVFATBC_
std::unordered_map< UInt_t, MonitorElement * > listVFATBC_
Definition: GEMDQMStatusDigi.cc:99
GEMDQMStatusDigi
Definition: GEMDQMStatusDigi.cc:32
GEMDQMStatusDigi::bookHistogramsStationPart
void bookHistogramsStationPart(DQMStore::IBooker &, GEMDetId &)
Definition: GEMDQMStatusDigi.cc:318
DQMStore.h
GEMAMCdataCollection.h
GEMDQMStatusDigi::gemChambers_
std::vector< GEMChamber > gemChambers_
Definition: GEMDQMStatusDigi.cc:66
edm::Handle
Definition: AssociativeIterator.h:50
PFElectronDQMAnalyzer_cfi.nBin
nBin
Definition: PFElectronDQMAnalyzer_cfi.py:25
GEMDQMStatusDigi::SetInfoChambers
int SetInfoChambers()
Definition: GEMDQMStatusDigi.cc:197
GEMDQMStatusDigi::listGEBInputID_
std::unordered_map< UInt_t, MonitorElement * > listGEBInputID_
Definition: GEMDQMStatusDigi.cc:103
GEMeMap::maxVFatGE21_
static const int maxVFatGE21_
Definition: GEMeMap.h:68
MakerMacros.h
testProducerWithPsetDescEmpty_cfi.x1
x1
Definition: testProducerWithPsetDescEmpty_cfi.py:33
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
GEMDQMStatusDigi::bookHistogramsAMCPart
void bookHistogramsAMCPart(DQMStore::IBooker &)
Definition: GEMDQMStatusDigi.cc:395
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
GEMDQMStatusDigi::analyze
void analyze(edm::Event const &e, edm::EventSetup const &eSetup) override
Definition: GEMDQMStatusDigi.cc:574
GEMDQMStatusDigi::nNBxBin_
int nNBxBin_
Definition: GEMDQMStatusDigi.cc:78
GEMDQMStatusDigi::listGEBVFATWordCntT_
std::unordered_map< UInt_t, MonitorElement * > listGEBVFATWordCntT_
Definition: GEMDQMStatusDigi.cc:105
GEMeMap.h
GEMDQMStatusDigi::listGEBOHCRC_
std::unordered_map< UInt_t, MonitorElement * > listGEBOHCRC_
Definition: GEMDQMStatusDigi.cc:109
GEMDQMStatusDigi::seekIdx
Int_t seekIdx(std::vector< GEMDetId > &listLayers, UInt_t unId)
Definition: GEMDQMStatusDigi.cc:554
GEMDQMStatusDigi::listVFATEC_
std::unordered_map< UInt_t, MonitorElement * > listVFATEC_
Definition: GEMDQMStatusDigi.cc:100
fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
GEMDQMStatusDigi::suffixChamber
std::string suffixChamber(GEMDetId &id)
Definition: GEMDQMStatusDigi.cc:187
edm::ESHandle< GEMGeometry >
MuonDigiCollection::end
DigiRangeIterator end() const
Definition: MuonDigiCollection.h:136
GEMDQMStatusDigi::bDebugMode_
bool bDebugMode_
Definition: GEMDQMStatusDigi.cc:62
GEMDQMStatusDigi::nNCh_
int nNCh_
Definition: GEMDQMStatusDigi.cc:68
GEMDQMStatusDigi::GEMGeometry_
const GEMGeometry * GEMGeometry_
Definition: GEMDQMStatusDigi.cc:64
b
double b
Definition: hdecay.h:118
MuonDigiCollection::begin
DigiRangeIterator begin() const
Definition: MuonDigiCollection.h:134
GEMeMap::maxVFatGE11_
static const int maxVFatGE11_
Definition: GEMeMap.h:67
GEMDQMStatusDigi::tagAMC_
edm::EDGetToken tagAMC_
Definition: GEMDQMStatusDigi.cc:87
DQMEDAnalyzer.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
GEMDQMStatusDigi::listGEBInputStatus_
std::unordered_map< UInt_t, MonitorElement * > listGEBInputStatus_
Definition: GEMDQMStatusDigi.cc:102
GEMDQMStatusDigi::nIdxFirstStrip_
int nIdxFirstStrip_
Definition: GEMDQMStatusDigi.cc:76
DQMEDAnalyzer
Definition: DQMEDAnalyzer.py:1
GEMDQMStatusDigi::h2_vfat_qualityflag_
MonitorElement * h2_vfat_qualityflag_
Definition: GEMDQMStatusDigi.cc:96
GEMDetId::chamber
constexpr int chamber() const
Definition: GEMDetId.h:177
MonitorElement.h
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
edm::ParameterSet
Definition: ParameterSet.h:36
printfWithMap
std::string printfWithMap(std::string strFmt, std::unordered_map< std::string, Int_t > mapArg)
Definition: GEMDQMStatusDigi.cc:416
edm::LogError
Definition: MessageLogger.h:183
a
double a
Definition: hdecay.h:119
GEMDQMStatusDigi::listAMCSlots_
std::vector< Int_t > listAMCSlots_
Definition: GEMDQMStatusDigi.cc:90
Event.h
GEMDQMStatusDigi::tagDigi_
edm::EDGetToken tagDigi_
Definition: GEMDQMStatusDigi.cc:88
GEMDQMStatusDigi::~GEMDQMStatusDigi
~GEMDQMStatusDigi() override
Definition: GEMDQMStatusDigi.cc:35
beam_dqm_sourceclient-live_cfg.monitor
monitor
Definition: beam_dqm_sourceclient-live_cfg.py:237
GEMDQMStatusDigi::h1_amc_davCnt_
MonitorElement * h1_amc_davCnt_
Definition: GEMDQMStatusDigi.cc:118
beam_dqm_sourceclient-live_cfg.cerr
cerr
Definition: beam_dqm_sourceclient-live_cfg.py:17
GEMDetId::roll
constexpr int roll() const
Definition: GEMDetId.h:188
GEMDQMStatusDigi::FillBits
Bool_t FillBits(MonitorElement *monitor, uint64_t unVal, int nNumBits)
Definition: GEMDQMStatusDigi.cc:522
GEMDetId
Definition: GEMDetId.h:17
GEMDQMStatusDigi::tagGEB_
edm::EDGetToken tagGEB_
Definition: GEMDQMStatusDigi.cc:86
GEMDQMStatusDigi::listGEBZeroSupWordsCnt_
std::unordered_map< UInt_t, MonitorElement * > listGEBZeroSupWordsCnt_
Definition: GEMDQMStatusDigi.cc:106
ModuleDef.h
createfilelist.int
int
Definition: createfilelist.py:10
analyze
example_stream void analyze(const edm::Event &, const edm::EventSetup &) override
edm::EventSetup
Definition: EventSetup.h:57
GEMDQMStatusDigi::m_mapStatusErr
std::unordered_map< UInt_t, Bool_t > m_mapStatusErr
Definition: GEMDQMStatusDigi.cc:112
edm::EDGetToken
Definition: EDGetToken.h:35
get
#define get
InputTag.h
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:193
looper.cfg
cfg
Definition: looper.py:297
GEMDQMStatusDigi::h1_amc_buffState_
MonitorElement * h1_amc_buffState_
Definition: GEMDQMStatusDigi.cc:119
GEMDQMStatusDigi::h1_amc_ttsState_
MonitorElement * h1_amc_ttsState_
Definition: GEMDQMStatusDigi.cc:117
GEMDQMStatusDigi::seekIdxSummary
void seekIdxSummary(GEMDetId gid, Int_t &nIdxLayer, Int_t &nIdxChamber)
Definition: GEMDQMStatusDigi.cc:565
GEMGeometry.h
std
Definition: JetResolutionObject.h:76
GEMDQMStatusDigi::GEMROMapping_
std::shared_ptr< GEMROMapping > GEMROMapping_
Definition: GEMDQMStatusDigi.cc:65
GEMDQMStatusDigi::listVFATQualityFlag_
std::unordered_map< UInt_t, MonitorElement * > listVFATQualityFlag_
Definition: GEMDQMStatusDigi.cc:98
GEMDQMStatusDigi::nNBxRange_
int nNBxRange_
Definition: GEMDQMStatusDigi.cc:79
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
GEMDQMStatusDigi::m_mapStatusFill
std::unordered_map< UInt_t, Bool_t > m_mapStatusFill
Definition: GEMDQMStatusDigi.cc:111
GEMDQMStatusDigi::listGEBecOH_
std::unordered_map< UInt_t, MonitorElement * > listGEBecOH_
Definition: GEMDQMStatusDigi.cc:108
GEMDetId::chamberId
constexpr GEMDetId chamberId() const
Definition: GEMDetId.h:193
GEMeMap::maxEtaPartition_
static const int maxEtaPartition_
Definition: GEMeMap.h:71
GEMDQMStatusDigi::bookHistogramsChamberPart
void bookHistogramsChamberPart(DQMStore::IBooker &, GEMDetId &)
Definition: GEMDQMStatusDigi.cc:273
relativeConstraints.chamber
chamber
Definition: relativeConstraints.py:53
GEMDQMStatusDigi::initGeometry
const GEMGeometry * initGeometry(edm::EventSetup const &iSetup)
Definition: GEMDQMStatusDigi.cc:127
EventSetup.h
MuonDigiCollection::Range
std::pair< const_iterator, const_iterator > Range
Definition: MuonDigiCollection.h:95
amc
Definition: AMCSpec.h:8
GEMDigiCollection.h
GEMDQMStatusDigi::m_summaryReport_
MonitorElement * m_summaryReport_
Definition: GEMDQMStatusDigi.cc:124
GEMDQMStatusDigi::h3SummaryStatusPre_
MonitorElement * h3SummaryStatusPre_
Definition: GEMDQMStatusDigi.cc:114
cond::uint64_t
unsigned long long uint64_t
Definition: Time.h:13
GEMDQMStatusDigi::m_listChambers
std::vector< GEMDetId > m_listChambers
Definition: GEMDQMStatusDigi.cc:93
edm::eventsetup::NoProxyException
Definition: NoProxyException.h:31
GEMDetId::station
constexpr int station() const
Definition: GEMDetId.h:173
GEMGeometry
Definition: GEMGeometry.h:24
ztail.d
d
Definition: ztail.py:151
ParameterSet.h
MuonGeometryRecord.h
GEMDQMStatusDigi::tagVFAT_
edm::EDGetToken tagVFAT_
Definition: GEMDQMStatusDigi.cc:85
event
Definition: event.py:1
GEMDQMStatusDigi::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: GEMDQMStatusDigi.cc:163
cscd2r::chamberID
CSCDetId chamberID(const CSCDetId &cscDetId)
takes layer ID, converts to chamber ID, switching ME1A to ME11
Definition: CSCDigiToRaw.cc:29
DigiContainerIterator
Definition: MuonDigiCollection.h:30
edm::Event
Definition: Event.h:73
GEMDQMStatusDigi::m_listLayers
std::vector< GEMDetId > m_listLayers
Definition: GEMDQMStatusDigi.cc:92
MuonGeometryRecord
Definition: MuonGeometryRecord.h:34
GEMDQMStatusDigi::h2AMCStatus_
MonitorElement * h2AMCStatus_
Definition: GEMDQMStatusDigi.cc:122
edm::InputTag
Definition: InputTag.h:15
GEMDQMStatusDigi::GEMDQMStatusDigi
GEMDQMStatusDigi(const edm::ParameterSet &cfg)
Definition: GEMDQMStatusDigi.cc:143
GEMDQMStatusDigi::listGEBbcOH_
std::unordered_map< UInt_t, MonitorElement * > listGEBbcOH_
Definition: GEMDQMStatusDigi.cc:107
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37