CMS 3D CMS Logo

GEMDQMBase.cc
Go to the documentation of this file.
3 
4 using namespace std;
5 using namespace edm;
6 
8  std::string strRunType = cfg.getUntrackedParameter<std::string>("runType");
9 
11 
12  if (strRunType == "online") {
14  } else if (strRunType == "offline") {
16  } else if (strRunType == "relval") {
18  } else if (strRunType == "allplots") {
20  } else {
21  edm::LogError(log_category_) << "+++ Error : GEM geometry is unavailable on event loop. +++\n";
22  }
23 
24  log_category_ = cfg.getUntrackedParameter<std::string>("logCategory");
25 }
26 
28  GEMGeometry_ = nullptr;
29  if (auto handle = iSetup.getHandle(geomToken_)) {
30  GEMGeometry_ = handle.product();
31  } else {
32  edm::LogError(log_category_) << "+++ Error : GEM geometry is unavailable on event loop. +++\n";
33  return -1;
34  }
35 
36  return 0;
37 }
38 
39 // Borrowed from DQM/GEM/src/GEMOfflineDQMBase.cc
41  const auto&& superchambers = station->superChambers();
42  if (not checkRefs(superchambers)) {
43  edm::LogError(log_category_) << "failed to get a valid vector of GEMSuperChamber ptrs" << std::endl;
44  return 0;
45  }
46 
47  const auto& chambers = superchambers.front()->chambers();
48  if (not checkRefs(chambers)) {
49  edm::LogError(log_category_) << "failed to get a valid vector of GEMChamber ptrs" << std::endl;
50  return 0;
51  }
52 
53  return chambers.front()->nEtaPartitions();
54 }
55 
57  if (GEMGeometry_ == nullptr)
58  return -1;
59  listChamberId_.clear();
60  mapEtaPartition_.clear();
61  for (const GEMRegion* region : GEMGeometry_->regions()) {
62  for (const GEMStation* station : region->stations()) {
63  for (auto sch : station->superChambers()) {
64  for (auto pchamber : sch->chambers()) {
65  GEMDetId gid = pchamber->id();
66  listChamberId_.push_back(pchamber->id());
67  for (auto iEta : pchamber->etaPartitions()) {
68  mapEtaPartition_[gid].push_back(iEta);
69  }
70  }
71  }
72  }
73  }
74 
75  // Borrwed from DQM/GEM/src/GEMOfflineMonitor.cc
76  nMaxNumCh_ = 0;
77  for (const GEMRegion* region : GEMGeometry_->regions()) {
78  const int region_number = region->region();
79 
80  for (const GEMStation* station : region->stations()) {
81  const auto&& superchambers = station->superChambers();
82 
83  const int station_number = station->station();
84  const int num_superchambers = (station_number == 1 ? 36 : 18);
85  const int num_mod = getNumModule(station->station());
86  const int max_vfat = getMaxVFAT(station->station()); // the number of VFATs per GEMEtaPartition
87  const int num_etas = getNumEtaPartitions(station); // the number of eta partitions per GEMChamber
88  const int num_vfat = num_etas * max_vfat; // the number of VFATs per GEMChamber
89  const int strip1st = (station_number == 2 ? 1 : 0); // the index of the first strip
90  const int num_digi = GEMeMap::maxChan_; // the number of digis (channels) per VFAT
91 
92  nMaxNumCh_ = std::max(nMaxNumCh_, num_superchambers);
93 
94  Int_t nMinIdxChamber = 1048576;
95  Int_t nMaxIdxChamber = -1048576;
96  for (auto sch : superchambers) {
97  auto nIdxChamber = sch->chambers().front()->id().chamber();
98  if (nMinIdxChamber > nIdxChamber)
99  nMinIdxChamber = nIdxChamber;
100  if (nMaxIdxChamber < nIdxChamber)
101  nMaxIdxChamber = nIdxChamber;
102  }
103 
104  const auto& chambers = superchambers.front()->chambers();
105 
106  for (auto pchamber : chambers) {
107  int layer_number = pchamber->id().layer();
108  ME3IdsKey key3(region_number, station_number, layer_number);
109  mapStationInfo_[key3] = MEStationInfo(region_number,
110  station_number,
111  layer_number,
112  num_superchambers,
113  num_mod,
114  num_etas,
115  num_vfat,
116  strip1st,
117  num_digi,
118  nMinIdxChamber,
119  nMaxIdxChamber);
122  }
123  }
124  }
125 
126  return 0;
127 }
128 
129 int GEMDQMBase::SortingLayers(std::vector<ME4IdsKey>& listLayers) {
130  std::sort(listLayers.begin(), listLayers.end(), [](ME4IdsKey key1, ME4IdsKey key2) {
131  Int_t re1 = std::get<0>(key1), re2 = std::get<0>(key2);
132  Int_t st1 = std::get<1>(key1), st2 = std::get<1>(key2);
133  Int_t la1 = std::get<2>(key1), la2 = std::get<2>(key2);
134  Int_t mo1 = std::get<3>(key1), mo2 = std::get<3>(key2);
135  if (re1 < 0 && re2 > 0)
136  return false;
137  if (re1 > 0 && re2 < 0)
138  return true;
139  Bool_t bRes = (re1 < 0); // == re2 < 0
140  Int_t sum1 = 4096 * std::abs(re1) + 256 * st1 + 16 * la1 + mo1;
141  Int_t sum2 = 4096 * std::abs(re2) + 256 * st2 + 16 * la2 + mo2;
142  if (sum1 <= sum2)
143  return bRes;
144  return !bRes;
145  });
146 
147  return 0;
148 }
149 
151  std::vector<ME4IdsKey> listLayers;
152  for (auto const& [key3, stationInfo] : mapStationInfo_) {
153  for (int module_number = 1; module_number <= stationInfo.nNumModules_; module_number++) {
154  ME4IdsKey key4{keyToRegion(key3), keyToStation(key3), keyToLayer(key3), module_number};
155  listLayers.push_back(key4); // Note: Not only count layers but also modules
156  }
157  }
158  SortingLayers(listLayers);
159  for (Int_t i = 0; i < (Int_t)listLayers.size(); i++)
160  mapStationToIdx_[listLayers[i]] = i + 1;
161 
162  auto h2Res =
163  ibooker.book2D(strName, "", nMaxNumCh_, 0.5, nMaxNumCh_ + 0.5, listLayers.size(), 0.5, listLayers.size() + 0.5);
164  h2Res->setXTitle("Chamber");
165  h2Res->setYTitle("Layer");
166 
167  if (h2Res == nullptr)
168  return nullptr;
169 
170  for (Int_t i = 1; i <= nMaxNumCh_; i++)
171  h2Res->setBinLabel(i, Form("%i", i), 1);
172  for (Int_t i = 1; i <= (Int_t)listLayers.size(); i++) {
173  auto key = listLayers[i - 1];
174  ME3IdsKey key3 = key4Tokey3(key);
175 
176  auto region = keyToRegion(key);
177  auto strInfo = GEMUtils::getSuffixName(key3); // NOTE: It starts with '_'
178  if (mapStationInfo_[key3].nNumModules_ > 1) {
179  strInfo += Form("-M%i", keyToModule(key));
180  }
181  auto label = Form("GE%+i1-%cL%i-M%i;%s",
183  (region > 0 ? 'P' : 'M'),
184  keyToLayer(key),
185  keyToModule(key),
186  strInfo.Data());
187  h2Res->setBinLabel(i, label, 2);
188  Int_t nNumCh = mapStationInfo_[key3].nNumChambers_;
189  h2Res->setBinContent(0, i, nNumCh);
190  }
191 
192  h2Res->setBinContent(0, 0, 1.0);
193 
194  return h2Res;
195 }
196 
198  MEMap2Check_.clear();
199  MEMap3Check_.clear();
200  MEMap4Check_.clear();
201  MEMap5Check_.clear();
202  MEMap2WithEtaCheck_.clear();
203  MEMap2AbsReWithEtaCheck_.clear();
204 
205  MEMap2WithChCheck_.clear();
206 
207  MEMap4WithChCheck_.clear();
208  MEMap5WithChCheck_.clear();
209 
210  MEMap2WithEtaChCheck_.clear();
211  for (auto gid : listChamberId_) {
212  ME2IdsKey key2{gid.region(), gid.station()};
213  ME3IdsKey key3{gid.region(), gid.station(), gid.layer()};
214  /*******************/
215  ME3IdsKey key2WithChamber{gid.region(), gid.station(), gid.chamber()};
216  /******************/
217  const auto num_mod = mapStationInfo_[key3].nNumModules_;
218  for (int module_number = 1; module_number <= num_mod; module_number++) {
219  ME4IdsKey key4{gid.region(), gid.station(), gid.layer(), module_number};
220  ME4IdsKey key4WithChamber{gid.region(), gid.station(), gid.layer(), gid.chamber()};
221  ME5IdsKey key5WithChamber{gid.region(), gid.station(), gid.layer(), module_number, gid.chamber()};
222  if (!MEMap2Check_[key2]) {
223  auto strSuffixName = GEMUtils::getSuffixName(key2);
224  auto strSuffixTitle = GEMUtils::getSuffixTitle(key2);
225  BookingHelper bh2(ibooker, strSuffixName, strSuffixTitle);
226  ProcessWithMEMap2(bh2, key2);
227  MEMap2Check_[key2] = true;
228  }
229  if (!MEMap2WithChCheck_[key2WithChamber]) {
230  Int_t nCh = gid.chamber();
231  //Int_t nLa = gid.layer();
232  char cLS = (nCh % 2 == 0 ? 'L' : 'S'); // FIXME: Is it general enough?
233  auto strSuffixName = GEMUtils::getSuffixName(key2) + Form("-%02i-%c", nCh, cLS);
234  auto strSuffixTitle = GEMUtils::getSuffixTitle(key2) + Form("-%02i-%c", nCh, cLS);
235  BookingHelper bh2Ch(ibooker, strSuffixName, strSuffixTitle);
236  ProcessWithMEMap2WithChamber(bh2Ch, key2WithChamber);
237  MEMap2WithChCheck_[key2WithChamber] = true;
238  }
239  if (!MEMap3Check_[key3]) {
240  auto strSuffixName = GEMUtils::getSuffixName(key3);
241  auto strSuffixTitle = GEMUtils::getSuffixTitle(key3);
242  BookingHelper bh3(ibooker, strSuffixName, strSuffixTitle);
243  ProcessWithMEMap3(bh3, key3);
244  MEMap3Check_[key3] = true;
245  }
246  if (!MEMap4Check_[key4]) {
247  Int_t nLa = gid.layer();
248  TString strSuffixCh = Form("-L%i", nLa);
249  if (mapStationInfo_[key3].nNumModules_ > 1)
250  strSuffixCh = Form("-L%i-M%i", nLa, module_number);
251  auto strSuffixName = GEMUtils::getSuffixName(key2) + strSuffixCh;
252  auto strSuffixTitle = GEMUtils::getSuffixTitle(key2) + strSuffixCh;
253  BookingHelper bh4(ibooker, strSuffixName, strSuffixTitle);
254  ProcessWithMEMap4(bh4, key4);
255  MEMap4Check_[key4] = true;
256  }
257  if (!MEMap4WithChCheck_[key4WithChamber]) {
258  Int_t nCh = gid.chamber();
259  Int_t nLa = gid.layer();
260  char cLS = (nCh % 2 == 0 ? 'L' : 'S'); // FIXME: Is it general enough?
261  TString strSuffixCh = Form("-%02iL%i-%c", nCh, nLa, cLS);
262  auto strSuffixName = GEMUtils::getSuffixName(key2) + strSuffixCh;
263  auto strSuffixTitle = GEMUtils::getSuffixTitle(key2) + strSuffixCh;
264  BookingHelper bh4Ch(ibooker, strSuffixName, strSuffixTitle);
265  ProcessWithMEMap4WithChamber(bh4Ch, key4WithChamber);
266  MEMap4WithChCheck_[key4WithChamber] = true;
267  }
268  if (!MEMap5WithChCheck_[key5WithChamber]) {
269  Int_t nCh = gid.chamber();
270  Int_t nLa = gid.layer();
271  char cLS = (nCh % 2 == 0 ? 'L' : 'S'); // FIXME: Is it general enough?
272  TString strSuffixCh = Form("-%02iL%i-%c", nCh, nLa, cLS);
273  if (mapStationInfo_[key3].nNumModules_ > 1)
274  strSuffixCh = Form("-%02iL%i-M%i-%c", nCh, nLa, module_number, cLS);
275  auto strSuffixName = GEMUtils::getSuffixName(key2) + strSuffixCh;
276  auto strSuffixTitle = GEMUtils::getSuffixTitle(key2) + strSuffixCh;
277  BookingHelper bh5Ch(ibooker, strSuffixName, strSuffixTitle);
278  ProcessWithMEMap5WithChamber(bh5Ch, key5WithChamber);
279  MEMap5WithChCheck_[key5WithChamber] = true;
280  }
281  for (auto iEta : mapEtaPartition_[gid]) {
282  GEMDetId eId = iEta->id();
283  ME5IdsKey key5{gid.region(), gid.station(), gid.layer(), module_number, eId.ieta()};
284  /*******************/
285  ME4IdsKey key2WithEtaCh{gid.region(), gid.station(), eId.ieta(), gid.chamber()};
286  /******************/
287  ME3IdsKey key2WithEta{gid.region(), gid.station(), eId.ieta()};
288  ME3IdsKey key2AbsReWithEta{std::abs(gid.region()), gid.station(), eId.ieta()};
289  if (!MEMap5Check_[key5]) {
290  auto strSuffixName = GEMUtils::getSuffixName(key3) + Form("-E%02i", eId.ieta());
291  auto strSuffixTitle = GEMUtils::getSuffixTitle(key3) + Form("-E%02i", eId.ieta());
292  BookingHelper bh5(ibooker, strSuffixName, strSuffixTitle);
293  ProcessWithMEMap5(bh5, key5);
294  MEMap5Check_[key5] = true;
295  }
296  if (!MEMap2WithEtaChCheck_[key2WithEtaCh]) {
297  Int_t nCh = gid.chamber();
298  //Int_t nLa = gid.layer();
299  char cLS = (nCh % 2 == 0 ? 'L' : 'S');
300  auto strSuffixName = GEMUtils::getSuffixName(key2) + Form("-%02i-%c-E%02i", nCh, cLS, eId.ieta());
301  auto strSuffixTitle = GEMUtils::getSuffixTitle(key2) + Form("-%02i-%c-E%02i", nCh, cLS, eId.ieta());
302  BookingHelper bh4(ibooker, strSuffixName, strSuffixTitle);
303  ProcessWithMEMap2WithEtaCh(bh4, key2WithEtaCh);
304  MEMap2WithEtaChCheck_[key2WithEtaCh] = true;
305  }
306  if (!MEMap2WithEtaCheck_[key2WithEta]) {
307  auto strSuffixName = GEMUtils::getSuffixName(key2) + Form("-E%02i", eId.ieta());
308  auto strSuffixTitle = GEMUtils::getSuffixTitle(key2) + Form("-E%02i", eId.ieta());
309  BookingHelper bh3(ibooker, strSuffixName, strSuffixTitle);
310  ProcessWithMEMap2WithEta(bh3, key2WithEta);
311  MEMap2WithEtaCheck_[key2WithEta] = true;
312  }
313  if (!MEMap2AbsReWithEtaCheck_[key2AbsReWithEta]) {
314  auto strSuffixName = Form("_GE%d1-E%02i", gid.station(), eId.ieta());
315  auto strSuffixTitle = Form(" GE%d1-E%02i", gid.station(), eId.ieta());
316  BookingHelper bh3(ibooker, strSuffixName, strSuffixTitle);
317  ProcessWithMEMap2AbsReWithEta(bh3, key2AbsReWithEta);
318  MEMap2AbsReWithEtaCheck_[key2AbsReWithEta] = true;
319  }
320  }
321  }
322  }
323  return 0;
324 }
325 
327  auto listSuperChambers = station->superChambers();
328 
329  Bool_t bDoneEven = false, bDoneOdd = false;
330 
331  // Obtaining radius intervals of even/odd chambers
332  for (auto superchamber : listSuperChambers) {
333  Int_t chamberNo = superchamber->id().chamber();
334  if (chamberNo % 2 == 0 && bDoneEven)
335  continue;
336  if (chamberNo % 2 != 0 && bDoneOdd)
337  continue;
338 
339  auto& etaPartitions = superchamber->chambers().front()->etaPartitions();
340 
341  // A little of additional procedures to list up the radius intervals
342  // It would be independent to local direction of chambers and the order of eta partitions
343  // 1. Obtain the radius of the middle top/bottom points of the trapezoid
344  // 2. Sort these two values and determine which one is the lower/upper one
345  // 3. Keep them all and then sort them
346  // 4. The intermediate radii are set as the mean of the corresponding values of upper/lowers.
347  std::vector<Float_t> listRadiusLower, listRadiusUpper;
348  for (auto iEta : etaPartitions) {
349  const GEMStripTopology& stripTopology = dynamic_cast<const GEMStripTopology&>(iEta->specificTopology());
350  Float_t fHeight = stripTopology.stripLength();
351  LocalPoint lp1(0.0, -0.5 * fHeight), lp2(0.0, 0.5 * fHeight);
352  auto& surface = iEta->surface();
353  GlobalPoint gp1 = surface.toGlobal(lp1), gp2 = surface.toGlobal(lp2);
354  Float_t fR1 = gp1.perp(), fR2 = gp2.perp();
355  Float_t fRL = std::min(fR1, fR2), fRH = std::max(fR1, fR2);
356  listRadiusLower.push_back(fRL);
357  listRadiusUpper.push_back(fRH);
358  // For a future usage
359  //std::cout << "GEO_RADIUS: " << iEta->id().chamber() << " " << iEta->id().ieta() << " "
360  // << fRL << " " << fRH << std::endl;
361  }
362 
363  std::sort(listRadiusLower.begin(), listRadiusLower.end());
364  std::sort(listRadiusUpper.begin(), listRadiusUpper.end());
365 
366  std::vector<Float_t>& listR =
367  (chamberNo % 2 == 0 ? stationInfo.listRadiusEvenChamber_ : stationInfo.listRadiusOddChamber_);
368  listR.clear();
369  listR.push_back(listRadiusLower.front());
370  for (int i = 1; i < (int)listRadiusLower.size(); i++) {
371  listR.push_back(0.5 * (listRadiusLower[i] + listRadiusUpper[i - 1]));
372  }
373  listR.push_back(listRadiusUpper.back());
374 
375  if (chamberNo % 2 == 0)
376  bDoneEven = true;
377  if (chamberNo % 2 != 0)
378  bDoneOdd = true;
379 
380  if (bDoneEven && bDoneOdd)
381  break;
382  }
383 
384  return 0;
385 }
386 
388  auto listSuperChambers = station->superChambers();
389  Int_t nNumStripEta = stationInfo.nNumDigi_ * (stationInfo.nMaxVFAT_ / stationInfo.nNumEtaPartitions_);
390 
391  std::vector<std::pair<Int_t, std::pair<std::pair<Float_t, Float_t>, Bool_t>>> listDivPhi;
392 
393  // Obtaining phi intervals of chambers
394  for (auto superchamber : listSuperChambers) {
395  auto iEta = superchamber->chambers().front()->etaPartitions().front();
396 
397  // What is the index of the first strip? Rather than to ask to someone, let's calculate it!
398  Float_t fWidthStrip = std::abs(iEta->centreOfStrip((Int_t)1).x() - iEta->centreOfStrip((Int_t)0).x());
399  LocalPoint lpRef(-fWidthStrip / 3.0, 0.0);
400  Int_t nStripMid = (Int_t)iEta->strip(lpRef);
401  Int_t nFirstStrip = 1 - ((nNumStripEta / 2) - nStripMid);
402  Int_t nLastStrip = nFirstStrip + nNumStripEta - 1;
403 
404  auto& surface = iEta->surface();
405  LocalPoint lpF = iEta->centreOfStrip((Float_t)(nFirstStrip - 0.5)); // To avoid the round error(?)
406  LocalPoint lpL = iEta->centreOfStrip((Float_t)(nLastStrip + 0.5)); // To avoid the round error(?)
407  GlobalPoint gpF = surface.toGlobal(lpF);
408  GlobalPoint gpL = surface.toGlobal(lpL);
409 
410  Float_t fPhiF = gpF.phi();
411  Float_t fPhiL = gpL.phi();
412  if (fPhiF * fPhiL < 0 && std::abs(fPhiF) > 0.5 * 3.14159265359) {
413  if (fPhiF < 0)
414  fPhiF += 2 * 3.14159265359;
415  if (fPhiL < 0)
416  fPhiL += 2 * 3.14159265359;
417  }
418  Bool_t bFlipped = fPhiF > fPhiL;
419  Float_t fPhiMin = std::min(fPhiF, fPhiL);
420  Float_t fPhiMax = std::max(fPhiF, fPhiL);
421 
422  listDivPhi.emplace_back();
423  listDivPhi.back().first = iEta->id().chamber();
424  listDivPhi.back().second.first.first = fPhiMin;
425  listDivPhi.back().second.first.second = fPhiMax;
426  listDivPhi.back().second.second = bFlipped;
427  }
428 
429  stationInfo.fMinPhi_ = 0.0;
430  for (auto p : listDivPhi) {
431  if (p.first == 1) {
432  stationInfo.fMinPhi_ = p.second.first.first;
433  break;
434  }
435  }
436 
437  // For a future usage
438  //for ( auto p : listDivPhi ) {
439  // std::cout << "GEO_PHI: " << p.first << " "
440  // << p.second.first.first << " " << p.second.first.second << " " << p.second.second << std::endl;
441  //}
442 
443  return 0;
444 }
std::map< ME5IdsKey, bool > MEMap5WithChCheck_
Definition: GEMDQMBase.h:647
virtual int ProcessWithMEMap2WithEtaCh(BookingHelper &bh, ME4IdsKey key)
Definition: GEMDQMBase.h:564
float stripLength() const override
int keyToModule(ME4IdsKey key)
Definition: GEMDQMBase.h:581
std::map< ME3IdsKey, bool > MEMap2WithChCheck_
Definition: GEMDQMBase.h:639
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
bool checkRefs(const std::vector< T *> &)
Definition: GEMDQMBase.h:657
dqm::impl::MonitorElement * CreateSummaryHist(DQMStore::IBooker &ibooker, TString strName)
Definition: GEMDQMBase.cc:150
T perp() const
Definition: PV3DBase.h:69
Int_t nRunType_
Definition: GEMDQMBase.h:545
virtual int ProcessWithMEMap4(BookingHelper &bh, ME4IdsKey key)
Definition: GEMDQMBase.h:558
TString getSuffixName(Int_t region_id)
std::tuple< Int_t, Int_t, Int_t, Int_t, Int_t > ME5IdsKey
std::vector< GEMDetId > listChamberId_
Definition: GEMDQMBase.h:632
virtual int ProcessWithMEMap2AbsReWithEta(BookingHelper &bh, ME3IdsKey key)
Definition: GEMDQMBase.h:556
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
int initGeometry(edm::EventSetup const &iSetup)
Definition: GEMDQMBase.cc:27
std::tuple< Int_t, Int_t, Int_t, Int_t > ME4IdsKey
int readGeometryRadiusInfoChamber(const GEMStation *station, MEStationInfo &stationInfo)
Definition: GEMDQMBase.cc:326
virtual int ProcessWithMEMap5WithChamber(BookingHelper &bh, ME5IdsKey key)
Definition: GEMDQMBase.h:568
int getNumModule(const int)
Definition: GEMDQMBase.h:677
std::map< ME3IdsKey, MEStationInfo > mapStationInfo_
Definition: GEMDQMBase.h:651
int keyToRegion(ME2IdsKey key)
Definition: GEMDQMBase.h:570
int readGeometryPhiInfoChamber(const GEMStation *station, MEStationInfo &stationInfo)
Definition: GEMDQMBase.cc:387
int loadChambers()
Definition: GEMDQMBase.cc:56
static const int maxChan_
Definition: GEMeMap.h:72
int keyToLayer(ME3IdsKey key)
Definition: GEMDQMBase.h:578
Log< level::Error, false > LogError
TString getSuffixTitle(Int_t region_id)
std::vector< Float_t > listRadiusOddChamber_
Definition: GEMDQMBase.h:527
std::string log_category_
Definition: GEMDQMBase.h:547
int SortingLayers(std::vector< ME4IdsKey > &listLayers)
Definition: GEMDQMBase.cc:129
char const * label
std::map< ME3IdsKey, bool > MEMap2AbsReWithEtaCheck_
Definition: GEMDQMBase.h:637
std::map< ME2IdsKey, bool > MEMap2Check_
Definition: GEMDQMBase.h:635
virtual int ProcessWithMEMap3(BookingHelper &bh, ME3IdsKey key)
Definition: GEMDQMBase.h:557
virtual void setXTitle(std::string const &title)
int GenerateMEPerChamber(DQMStore::IBooker &ibooker)
Definition: GEMDQMBase.cc:197
std::vector< Float_t > listRadiusEvenChamber_
Definition: GEMDQMBase.h:526
std::map< ME3IdsKey, bool > MEMap3Check_
Definition: GEMDQMBase.h:644
int getNumEtaPartitions(const GEMStation *)
Definition: GEMDQMBase.cc:40
virtual int ProcessWithMEMap2WithChamber(BookingHelper &bh, ME3IdsKey key)
Definition: GEMDQMBase.h:561
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > geomToken_
Definition: GEMDQMBase.h:630
virtual int ProcessWithMEMap5(BookingHelper &bh, ME5IdsKey key)
Definition: GEMDQMBase.h:559
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
Transition
Definition: Transition.h:12
std::map< ME5IdsKey, bool > MEMap5Check_
Definition: GEMDQMBase.h:648
key
prepare the HTCondor submission files and eventually submit them
int getMaxVFAT(const int)
Definition: GEMDQMBase.h:666
std::map< ME4IdsKey, int > mapStationToIdx_
Definition: GEMDQMBase.h:652
int keyToStation(ME2IdsKey key)
Definition: GEMDQMBase.h:574
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:130
std::map< ME4IdsKey, bool > MEMap4Check_
Definition: GEMDQMBase.h:645
virtual int ProcessWithMEMap4WithChamber(BookingHelper &bh, ME4IdsKey key)
Definition: GEMDQMBase.h:567
constexpr int ieta() const
Definition: GEMDetId.h:199
const GEMGeometry * GEMGeometry_
Definition: GEMDQMBase.h:629
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:221
std::map< ME4IdsKey, bool > MEMap4WithChCheck_
Definition: GEMDQMBase.h:646
virtual int ProcessWithMEMap2WithEta(BookingHelper &bh, ME3IdsKey key)
Definition: GEMDQMBase.h:555
GEMDQMBase(const edm::ParameterSet &cfg)
Definition: GEMDQMBase.cc:7
std::map< ME3IdsKey, bool > MEMap2WithEtaCheck_
Definition: GEMDQMBase.h:636
ME3IdsKey key4Tokey3(ME4IdsKey key)
Definition: GEMDQMBase.h:596
std::map< GEMDetId, std::vector< const GEMEtaPartition * > > mapEtaPartition_
Definition: GEMDQMBase.h:633
HLT enums.
const std::vector< const GEMRegion * > & regions() const
Return a vector of all GEM regions.
Definition: GEMGeometry.cc:30
std::map< ME4IdsKey, bool > MEMap2WithEtaChCheck_
Definition: GEMDQMBase.h:642
int nMaxNumCh_
Definition: GEMDQMBase.h:650
std::tuple< Int_t, Int_t > ME2IdsKey
std::tuple< Int_t, Int_t, Int_t > ME3IdsKey
static char chambers[264][20]
Definition: ReadPGInfo.cc:243
virtual int ProcessWithMEMap2(BookingHelper &bh, ME2IdsKey key)
Definition: GEMDQMBase.h:554