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 = {1, 3, 5, 7, 9, 11, 13, 15};
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 
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  const GEMChamber *ch = GEMGeometry_->chamber(gid);
283  Int_t nVFAT = 0;
284  Int_t nEtas = ch->nEtaPartitions();
285  if (gid.station() == 1)
286  nVFAT = nEtas * GEMeMap::maxVFatGE11_;
287  if (gid.station() == 2)
288  nVFAT = nEtas * GEMeMap::maxVFatGE21_;
289 
290  hName = "vfatStatus_QualityFlag_" + strIdxName;
291  hTitle = "VFAT quality " + strIdxTitle;
292  hTitle += ";VFAT;";
293  listVFATQualityFlag_[gid] = ibooker.book2D(hName, hTitle, nVFAT, 0, nVFAT, 9, 0, 9);
294 
295  hName = "vfatStatus_BC_" + strIdxName;
296  hTitle = "VFAT bunch crossing " + strIdxTitle;
297  hTitle += ";Bunch crossing;VFAT";
298  listVFATBC_[gid] = ibooker.book2D(hName, hTitle, nNBxBin_, -nNBxRange_, nNBxRange_, nVFAT, 0, nVFAT);
299 
300  hName = "vfatStatus_EC_" + strIdxName;
301  hTitle = "VFAT event counter " + strIdxTitle;
302  hTitle += ";Event counter;VFAT";
303  listVFATEC_[gid] = ibooker.book2D(hName, hTitle, 256, 0, 256, nVFAT, 0, nVFAT);
304 
305  unBinPos = 1;
306  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "Good", 2);
307  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "CRC fail", 2);
308  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "b1010 fail", 2);
309  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "b1100 fail", 2);
310  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "b1110 fail", 2);
311  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "Hamming error", 2);
312  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "AFULL", 2);
313  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "SEUlogic", 2);
314  listVFATQualityFlag_[gid]->setBinLabel(unBinPos++, "SUEI2C", 2);
315 
316  m_mapStatusFill[gid] = false;
317  m_mapStatusErr[gid] = false;
318 }
319 
321  UInt_t unBinPos;
322 
323  Int_t re = lid.region();
324  UInt_t st = lid.station();
325  UInt_t la = lid.layer();
326 
327  auto newbookGEB = [this](DQMStore::IBooker &ibooker,
328  std::string strName,
329  std::string strTitle,
330  std::string strAxis,
331  GEMDetId &lid,
332  int nLayer,
333  int nStation,
334  int re,
335  int nBin,
336  float fMin,
337  float fMax) -> MonitorElement * {
338  strName = strName + "_" + suffixLayer(lid);
339  strTitle = strTitle + ", station: " + (re >= 0 ? "+" : "-") + std::to_string(nStation);
340 
341  if (bPerSuperchamber_) {
342  strTitle += ", layer: " + std::to_string(nLayer);
343  }
344 
345  strTitle += ";Chamber;" + strAxis;
346 
347  auto hNew = ibooker.book2D(strName, strTitle, this->nNCh_, 0, this->nNCh_, nBin, fMin, fMax);
348 
349  for (Int_t i = 0; i < this->nNCh_; i++) {
350  auto &gid = this->m_listChambers[i];
351  Int_t nCh = gid.chamber() + (this->bPerSuperchamber_ ? 0 : gid.layer() - 1);
352  hNew->setBinLabel(i + 1, std::to_string(nCh), 1);
353  }
354 
355  return hNew;
356  };
357 
358  listGEBInputStatus_[lid] =
359  newbookGEB(ibooker, "geb_input_status", "inputStatus", "", lid, la, st, re, eBit_, 0, eBit_);
360  listGEBInputID_[lid] = newbookGEB(ibooker, "geb_input_ID", "inputID", "Input ID", lid, la, st, re, 32, 0, 32);
361  listGEBVFATWordCnt_[lid] =
362  newbookGEB(ibooker, "geb_no_vfats", "nvfats in header", "Number of VFATs in header", lid, la, st, re, 25, 0, 25);
363  listGEBVFATWordCntT_[lid] = newbookGEB(
364  ibooker, "geb_no_vfatsT", "nvfats in trailer", "Number of VFATs in trailer", lid, la, st, re, 25, 0, 25);
365  listGEBZeroSupWordsCnt_[lid] = newbookGEB(
366  ibooker, "geb_zeroSupWordsCnt", "zeroSupWordsCnt", "Zero sup. words count", lid, la, st, re, 10, 0, 10);
367 
368  if (bDebugMode_) {
369  listGEBbcOH_[lid] =
370  newbookGEB(ibooker, "geb_bcOH", "OH bunch crossing", "OH bunch crossing", lid, la, st, re, 3600, 0, 3600);
371  listGEBecOH_[lid] =
372  newbookGEB(ibooker, "geb_ecOH", "OH event coounter", "OH event counter", lid, la, st, re, 256, 0, 256);
373  listGEBOHCRC_[lid] =
374  newbookGEB(ibooker, "geb_OHCRC", "CRC of OH data", "CRC of OH data", lid, la, st, re, 65536, 0, 65536);
375  }
376 
377  unBinPos = 1;
378  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "Good", 2);
379  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "BX mismatch GLIB OH", 2);
380  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "BX mismatch GLIB VFAT", 2);
381  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "OOS GLIB OH", 2);
382  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "OOS GLIB VFAT", 2);
383  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "No VFAT marker", 2);
384  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "Event size warn", 2);
385  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "L1AFIFO near full", 2);
386  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "InFIFO near full", 2);
387  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "EvtFIFO near full", 2);
388  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "Event size overflow", 2);
389  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "L1AFIFO full", 2);
390  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "InFIFO full", 2);
391  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "EvtFIFO full", 2);
392  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "Input FIFO underflow", 2);
393  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "Stuck data", 2);
394  listGEBInputStatus_[lid]->setBinLabel(unBinPos++, "Event FIFO underflow", 2);
395 }
396 
398  h2AMCStatus_ = ibooker.book2D("amc_statusflag",
399  "Status of AMC slots;AMC slot;",
400  listAMCSlots_.size(),
401  0,
402  listAMCSlots_.size(),
403  amcStatusBit_,
404  0,
405  amcStatusBit_);
406 
407  uint32_t unBinPos = 1;
408  h2AMCStatus_->setBinLabel(unBinPos++, "Good", 2);
409  h2AMCStatus_->setBinLabel(unBinPos++, "BC0 not locked", 2);
410  h2AMCStatus_->setBinLabel(unBinPos++, "DAQ not ready", 2);
411  h2AMCStatus_->setBinLabel(unBinPos++, "DAQ clock not locked", 2);
412  h2AMCStatus_->setBinLabel(unBinPos++, "MMCM not locked", 2);
413  h2AMCStatus_->setBinLabel(unBinPos++, "Back pressure", 2);
414  h2AMCStatus_->setBinLabel(unBinPos++, "GLIB out-of-sync", 2);
415 }
416 
417 // To make labels like python, with std::(unordered_)map
418 std::string printfWithMap(std::string strFmt, std::unordered_map<std::string, Int_t> mapArg) {
419  std::string strRes = strFmt;
420  char szOutFmt[64];
421  size_t unPos, unPosEnd;
422 
423  for (unPos = strRes.find('%'); unPos != std::string::npos; unPos = strRes.find('%', unPos + 1)) {
424  unPosEnd = strRes.find(')', unPos);
425  if (strRes[unPos + 1] != '(' || unPosEnd == std::string::npos)
426  break; // Syntax error
427 
428  // Extracting the key
429  std::string strKey = strRes.substr(unPos + 2, unPosEnd - (unPos + 2));
430 
431  // To treat formats like '%5i' or '%02i', extracting '5' or '02'
432  // After do this,
433  std::string strOptNum = "%";
434  unPosEnd++;
435 
436  for (;; unPosEnd++) {
437  if (!('0' <= strRes[unPosEnd] && strRes[unPosEnd] <= '9') && strRes[unPosEnd] != '+')
438  break;
439  strOptNum += strRes[unPosEnd];
440  }
441 
442  if (strRes[unPosEnd] != 'i' && strRes[unPosEnd] != 'd')
443  break; // Syntax error
444  strOptNum += strRes[unPosEnd];
445  unPosEnd++;
446 
447  sprintf(szOutFmt, strOptNum.c_str(), mapArg[strKey]);
448  strRes = strRes.substr(0, unPos) + szOutFmt + strRes.substr(unPosEnd);
449  }
450 
451  if (unPos != std::string::npos) { // It means... an syntax error occurs!
452  std::cerr << "ERROR: Syntax error on printfWithMap(); " << std::endl;
453  return "";
454  }
455 
456  return strRes;
457 }
458 
460  // Start: Loading the GEM geometry
461 
462  GEMGeometry_ = initGeometry(iSetup);
463  if (GEMGeometry_ == nullptr)
464  return;
465 
466  SetInfoChambers();
467 
468  // End: Set the configurations
469 
470  // Start: Setting books
471 
472  ibooker.cd();
473  ibooker.setCurrentFolder("GEM/StatusDigi");
474 
475  for (const auto &ch : gemChambers_) {
476  GEMDetId gid = ch.id();
477  bookHistogramsChamberPart(ibooker, gid);
478  }
479 
480  for (auto lid : m_listLayers) {
481  bookHistogramsStationPart(ibooker, lid);
482  }
483 
484  bookHistogramsAMCPart(ibooker);
485 
486  h1_vfat_qualityflag_ = ibooker.book1D("vfat_quality_flag", "quality and flag", 9, 0, 9);
487  h2_vfat_qualityflag_ = ibooker.book2D("vfat_quality_flag_per_geb", "quality and flag", nNCh_, 0, nNCh_, 9, 0, 9);
488 
489  h1_amc_ttsState_ = ibooker.book1D("amc_ttsState", "ttsState", 10, 0, 10);
490  h1_amc_davCnt_ = ibooker.book1D("amc_davCnt", "davCnt", 10, 0, 10);
491  h1_amc_buffState_ = ibooker.book1D("amc_buffState", "buffState", 10, 0, 10);
492  h1_amc_oosGlib_ = ibooker.book1D("amc_oosGlib", "oosGlib", 10, 0, 10);
493  h1_amc_chTimeOut_ = ibooker.book1D("amc_chTimeOut", "chTimeOut", 10, 0, 10);
494 
495  ibooker.cd();
496  ibooker.setCurrentFolder("GEM/EventInfo");
497 
498  h3SummaryStatusPre_ = ibooker.book3D(
499  "reportSummaryMapPreliminary", ";Chamber;", nNCh_, 0, nNCh_, m_listLayers.size(), 0, m_listLayers.size(), 2, 0, 1);
500 
501  for (Int_t i = 0; i < nNCh_; i++) {
502  auto &gid = this->m_listChambers[i];
503  Int_t nCh = gid.chamber() + (bPerSuperchamber_ ? 0 : gid.layer() - 1);
504  h3SummaryStatusPre_->setBinLabel(i + 1, std::to_string(nCh), 1);
505  }
506 
507  Int_t nIdxLayer = 0;
508  std::unordered_map<std::string, Int_t> mapArg;
509 
510  // Start: Labeling section
511 
512  for (auto lid : m_listLayers) {
513  mapArg["station_signed"] = lid.region() * lid.station();
514  mapArg["region"] = lid.region();
515  mapArg["station"] = lid.station();
516  mapArg["layer"] = lid.layer();
517  mapArg["chamber"] = lid.chamber();
518 
519  h3SummaryStatusPre_->setBinLabel(nIdxLayer + 1, printfWithMap(strFmtSummaryLabel_, mapArg), 2);
520  nIdxLayer++;
521  }
522 }
523 
525  int i = 0;
526  uint64_t unFlag = 1;
527 
528  if (monitor == nullptr)
529  return false;
530 
531  for (; i < nNumBits; i++, unFlag <<= 1) {
532  if ((unVal & unFlag) != 0) {
533  monitor->Fill(i);
534  }
535  }
536 
537  return true;
538 }
539 
540 Bool_t GEMDQMStatusDigi::FillBits(MonitorElement *monitor, uint64_t unVal, int nNumBits, int nX) {
541  int i = 0;
542  uint64_t unFlag = 1;
543 
544  if (monitor == nullptr)
545  return false;
546 
547  for (; i < nNumBits; i++, unFlag <<= 1) {
548  if ((unVal & unFlag) != 0) {
549  monitor->Fill(nX, i);
550  }
551  }
552 
553  return true;
554 }
555 
556 Int_t GEMDQMStatusDigi::seekIdx(std::vector<GEMDetId> &listLayers, UInt_t unId) {
557  if (unId < 256)
558  return -1;
559 
560  GEMDetId id(unId);
561  for (Int_t nIdx = 0; nIdx < (Int_t)listLayers.size(); nIdx++)
562  if (id == listLayers[nIdx])
563  return nIdx;
564  return -1;
565 }
566 
567 void GEMDQMStatusDigi::seekIdxSummary(GEMDetId gid, Int_t &nIdxLayer, Int_t &nIdxChamber) {
568  Int_t nLayer = (bPerSuperchamber_ ? gid.layer() : 0);
569  GEMDetId layerId(gid.region(), gid.ring(), gid.station(), nLayer, 0, 0);
570  GEMDetId chamberId(0, 1, 1, gid.layer() - nLayer, gid.chamber(), 0);
571 
572  nIdxLayer = seekIdx(m_listLayers, layerId) + 1;
573  nIdxChamber = seekIdx(m_listChambers, chamberId) + 1;
574 }
575 
577  Bool_t bIsNotEmpty = true;
578 
583 
584  event.getByToken(tagVFAT_, gemVFAT);
585  event.getByToken(tagGEB_, gemGEB);
586  event.getByToken(tagAMC_, gemAMC);
587  event.getByToken(tagDigi_, gemDigis);
588 
589  for (GEMVfatStatusDigiCollection::DigiRangeIterator vfatIt = gemVFAT->begin(); vfatIt != gemVFAT->end(); ++vfatIt) {
590  GEMDetId gemid = (*vfatIt).first;
591  GEMDetId gemchId = gemid.chamberId();
592  GEMDetId gemOnlychId(0, 1, 1, (bPerSuperchamber_ ? 0 : gemid.layer()), gemid.chamber(), 0);
593  const GEMChamber *ch = GEMGeometry_->chamber(gemchId);
594  Int_t maxEtaPs = ch->nEtaPartitions();
595 
596  int nIdx = seekIdx(m_listChambers, gemOnlychId);
597  int nRoll = gemid.roll();
598  const GEMVfatStatusDigiCollection::Range &range = (*vfatIt).second;
599 
600  for (auto vfatStat = range.first; vfatStat != range.second; ++vfatStat) {
601  bIsNotEmpty = true;
602 
603  uint64_t unQFVFAT = vfatStat->quality() /* | (vfatStat->flag() << qVFATBit_)*/;
604  if ((unQFVFAT & ~0x1) == 0) {
605  unQFVFAT |= 0x1; // If no error, then it should be 'Good'
606  } else { // Error!!
607  Int_t nIdxLayer, nIdxChamber;
608  seekIdxSummary(gemchId, nIdxLayer, nIdxChamber);
609  h3SummaryStatusPre_->setBinContent(nIdxChamber, nIdxLayer, m_nIdxSummaryErr, 1.0);
610  }
611 
612  FillBits(h1_vfat_qualityflag_, unQFVFAT, qVFATBit_ + fVFATBit_);
613  FillBits(h2_vfat_qualityflag_, unQFVFAT, qVFATBit_ + fVFATBit_, nIdx); // They could be there
614 
615  int nVFAT = (maxEtaPs - nRoll) + maxEtaPs * vfatStat->phi();
616  bIsNotEmpty = FillBits(listVFATQualityFlag_[gemchId], unQFVFAT, qVFATBit_ + fVFATBit_, nVFAT);
617 
618  if (!bIsNotEmpty) {
619  edm::LogError("BadGeometry") << "Wrong detId which is not in the current geometry (VFAT status): " << gemchId
620  << std::endl;
621  continue;
622  }
623 
624  listVFATEC_[gemchId]->Fill(vfatStat->ec(), nVFAT);
625  }
626  }
627 
628  for (GEMGEBdataCollection::DigiRangeIterator gebIt = gemGEB->begin(); gebIt != gemGEB->end(); ++gebIt) {
629  GEMDetId gemid = (*gebIt).first;
630  GEMDetId lid(gemid.region(), gemid.ring(), gemid.station(), (bPerSuperchamber_ ? gemid.layer() : 0), 0, 0);
631  GEMDetId chid(0, 1, 1, (bPerSuperchamber_ ? 0 : gemid.layer()), gemid.chamber(), 0);
632 
633  Int_t nCh = seekIdx(m_listChambers, chid);
634 
635  const GEMGEBdataCollection::Range &range = (*gebIt).second;
636  for (auto GEBStatus = range.first; GEBStatus != range.second; ++GEBStatus) {
637  bIsNotEmpty = true;
638 
639  uint64_t unBit = 1;
640  uint64_t unStatus = 0;
641 
642  unStatus |= (GEBStatus->bxmVvV() << unBit++);
643  unStatus |= (GEBStatus->bxmAvV() << unBit++);
644  unStatus |= (GEBStatus->oOScVvV() << unBit++);
645  unStatus |= (GEBStatus->oOScAvV() << unBit++);
646  unStatus |= (GEBStatus->noVFAT() << unBit++);
647  unStatus |= (GEBStatus->evtSzW() << unBit++);
648  unStatus |= (GEBStatus->l1aNF() << unBit++);
649  unStatus |= (GEBStatus->inNF() << unBit++);
650  unStatus |= (GEBStatus->evtNF() << unBit++);
651  unStatus |= (GEBStatus->evtSzOFW() << unBit++);
652  unStatus |= (GEBStatus->l1aF() << unBit++);
653  unStatus |= (GEBStatus->inF() << unBit++);
654  unStatus |= (GEBStatus->evtF() << unBit++);
655  unStatus |= (GEBStatus->inUfw() << unBit++);
656  unStatus |= (GEBStatus->stuckData() << unBit++);
657  unStatus |= (GEBStatus->evUfw() << unBit++);
658 
659  if (unStatus != 0) { // Error!
660  Int_t nIdxLayer, nIdxChamber;
661  seekIdxSummary(gemid, nIdxLayer, nIdxChamber);
662  h3SummaryStatusPre_->setBinContent(nIdxChamber, nIdxLayer, m_nIdxSummaryErr, 1.0);
663  } else {
664  unStatus = 0x01; // Good
665  }
666 
667  bIsNotEmpty = FillBits(listGEBInputStatus_[lid], unStatus, eBit_, nCh);
668 
669  if (!bIsNotEmpty) {
670  edm::LogError("BadGeometry") << "Wrong detId which is not in the current geometry (GEB status): " << lid
671  << std::endl;
672  continue;
673  }
674 
675  listGEBInputID_[lid]->Fill(nCh, GEBStatus->inputID());
676  listGEBVFATWordCnt_[lid]->Fill(nCh, GEBStatus->vfatWordCnt() / 3);
677  listGEBVFATWordCntT_[lid]->Fill(nCh, GEBStatus->vfatWordCntT() / 3);
678  listGEBZeroSupWordsCnt_[lid]->Fill(nCh, GEBStatus->zeroSupWordsCnt());
679 
680  if (bDebugMode_) {
681  listGEBbcOH_[lid]->Fill(nCh, GEBStatus->bcOH());
682  listGEBecOH_[lid]->Fill(nCh, GEBStatus->ecOH());
683  listGEBOHCRC_[lid]->Fill(nCh, GEBStatus->crc());
684  }
685  }
686  }
687 
688  auto findAMCIdx = [this](Int_t nAMCnum) -> Int_t {
689  for (Int_t i = 0; i < (Int_t)listAMCSlots_.size(); i++)
690  if (listAMCSlots_[i] == nAMCnum)
691  return i;
692  return -1;
693  };
694 
695  for (GEMAMCdataCollection::DigiRangeIterator amcIt = gemAMC->begin(); amcIt != gemAMC->end(); ++amcIt) {
696  const GEMAMCdataCollection::Range &range = (*amcIt).second;
697  for (auto amc = range.first; amc != range.second; ++amc) {
698  Int_t nIdAMC = findAMCIdx(amc->amcNum());
699  uint64_t unBit = 1;
700  uint64_t unStatus = 0;
701 
702  unStatus |= (!amc->bc0locked() << unBit++);
703  unStatus |= (!amc->daqReady() << unBit++);
704  unStatus |= (!amc->daqClockLocked() << unBit++);
705  unStatus |= (!amc->mmcmLocked() << unBit++);
706  unStatus |= (amc->backPressure() << unBit++);
707  unStatus |= (amc->oosGlib() << unBit++);
708 
709  if (unStatus == 0) {
710  unStatus = 0x01; // Good
711  }
712 
713  FillBits(h2AMCStatus_, unStatus, amcStatusBit_, nIdAMC);
714 
715  h1_amc_ttsState_->Fill(amc->ttsState());
716  h1_amc_davCnt_->Fill(amc->davCnt());
717  h1_amc_buffState_->Fill(amc->buffState());
718  h1_amc_oosGlib_->Fill(amc->oosGlib());
719  h1_amc_chTimeOut_->Fill(amc->linkTo());
720  }
721  }
722 
723  // Checking if there is a fire (data)
724  for (const auto &ch : gemChambers_) {
725  GEMDetId cId = ch.id();
726  Bool_t bIsHit = false;
727 
728  // Because every fired strip in a same VFAT shares a same bx, we keep bx from only one strip
729  std::unordered_map<Int_t, Int_t> mapBXVFAT;
730 
731  GEMDetId chIdDigi(cId.region(), cId.ring(), cId.station(), cId.layer(), cId.chamber(), 2);
732  GEMDetId chIdBx(cId.region(), cId.ring(), cId.station(), cId.layer(), cId.chamber(), 3);
733 
734  Int_t maxEtaPs = ch.nEtaPartitions();
735  Int_t nNumVFAT = GEMeMap::maxVFatGE11_;
736  if (cId.station() == 2)
737  nNumVFAT = GEMeMap::maxVFatGE21_;
738 
739  for (auto roll : ch.etaPartitions()) {
740  GEMDetId rId = roll->id();
741  const auto &digis_in_det = gemDigis->get(rId);
742 
743  for (auto d = digis_in_det.first; d != digis_in_det.second; ++d) {
744  Int_t nIdxStrip = d->strip() - nIdxFirstStrip_;
745  Int_t nVFAT = maxEtaPs * ((Int_t)(nIdxStrip / (roll->nstrips() / nNumVFAT)) + 1) - rId.roll();
746 
747  bIsHit = true;
748  mapBXVFAT[nVFAT] = d->bx();
749  }
750  }
751 
752  for (auto bx : mapBXVFAT)
753  listVFATBC_[cId]->Fill(bx.second, bx.first);
754 
755  if (bIsHit) { // Data occur!
756  Int_t nIdxLayer, nIdxChamber;
757  seekIdxSummary(cId, nIdxLayer, nIdxChamber);
758  h3SummaryStatusPre_->setBinContent(nIdxChamber, nIdxLayer, m_nIdxSummaryFill, 1.0);
759  }
760  }
761 }
762 
GEMDQMStatusDigi::bookHistograms
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: GEMDQMStatusDigi.cc:459
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:428
MessageLogger.h
GEMGEBdataCollection.h
GEMDetId::ring
constexpr int ring() const
Definition: GEMDetId.h:173
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:187
edm::Run
Definition: Run.h:45
GEMDetId::region
constexpr int region() const
Definition: GEMDetId.h:168
GEMDQMStatusDigi::strFmtSummaryLabel_
std::string strFmtSummaryLabel_
Definition: GEMDQMStatusDigi.cc:81
relativeConstraints.station
station
Definition: relativeConstraints.py:67
edm
HLT enums.
Definition: AlignableModifier.h:19
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89353
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
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
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:320
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:66
MakerMacros.h
testProducerWithPsetDescEmpty_cfi.x1
x1
Definition: testProducerWithPsetDescEmpty_cfi.py:33
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
GEMDQMStatusDigi::bookHistogramsAMCPart
void bookHistogramsAMCPart(DQMStore::IBooker &)
Definition: GEMDQMStatusDigi.cc:397
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:576
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:556
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 >
dqm::implementation::NavigatorBase::cd
virtual void cd()
Definition: DQMStore.cc:29
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:65
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:180
MonitorElement.h
edm::ParameterSet
Definition: ParameterSet.h:47
printfWithMap
std::string printfWithMap(std::string strFmt, std::unordered_map< std::string, Int_t > mapArg)
Definition: GEMDQMStatusDigi.cc:418
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:240
GEMDQMStatusDigi::h1_amc_davCnt_
MonitorElement * h1_amc_davCnt_
Definition: GEMDQMStatusDigi.cc:118
GEMDetId::roll
constexpr int roll() const
Definition: GEMDetId.h:191
GEMDQMStatusDigi::FillBits
Bool_t FillBits(MonitorElement *monitor, uint64_t unVal, int nNumBits)
Definition: GEMDQMStatusDigi.cc:524
GEMDetId
Definition: GEMDetId.h:18
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
dqm::impl::MonitorElement::setBinLabel
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:771
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::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
edm::EDGetToken
Definition: EDGetToken.h:35
get
#define get
GEMChamber::nEtaPartitions
int nEtaPartitions() const
Retunr numbers of eta partitions.
Definition: GEMChamber.cc:31
InputTag.h
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:204
looper.cfg
cfg
Definition: looper.py:297
GEMDQMStatusDigi::h1_amc_buffState_
MonitorElement * h1_amc_buffState_
Definition: GEMDQMStatusDigi.cc:119
GEMChamber
Definition: GEMChamber.h:19
GEMDQMStatusDigi::h1_amc_ttsState_
MonitorElement * h1_amc_ttsState_
Definition: GEMDQMStatusDigi.cc:117
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
GEMDQMStatusDigi::seekIdxSummary
void seekIdxSummary(GEMDetId gid, Int_t &nIdxLayer, Int_t &nIdxChamber)
Definition: GEMDQMStatusDigi.cc:567
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
dqm::implementation::IBooker::book2D
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:177
GEMDQMStatusDigi::listGEBecOH_
std::unordered_map< UInt_t, MonitorElement * > listGEBecOH_
Definition: GEMDQMStatusDigi.cc:108
GEMDetId::chamberId
constexpr GEMDetId chamberId() const
Definition: GEMDetId.h:196
dqm::implementation::IBooker::book3D
MonitorElement * book3D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ, FUNC onbooking=NOOP())
Definition: DQMStore.h:290
GEMVfatStatusDigiCollection.h
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
dqm::implementation::IBooker
Definition: DQMStore.h:43
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:176
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
EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0.cerr
cerr
Definition: EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0.py:8
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
dqm::implementation::IBooker::book1D
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
GEMDQMStatusDigi::listGEBbcOH_
std::unordered_map< UInt_t, MonitorElement * > listGEBbcOH_
Definition: GEMDQMStatusDigi.cc:107
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37