CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
EtlDigiHitsValidation.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Validation/MtdValidation
4 // Class: EtlDigiHitsValidation
5 //
14 #include <string>
15 
20 
23 
27 
33 
35 public:
37  ~EtlDigiHitsValidation() override;
38 
39  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
40 
41 private:
42  void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
43 
44  void analyze(const edm::Event&, const edm::EventSetup&) override;
45 
46  // ------------ member data ------------
47 
49  const bool LocalPosDebug_;
50 
52 
55 
56  // --- histograms declaration
57 
59 
62 
64 
65  MonitorElement* meLocalOccupancy_[2]; //folding the two ETL discs
68 
74 
80 };
81 
82 // ------------ constructor and destructor --------------
84  : folder_(iConfig.getParameter<std::string>("folder")),
85  LocalPosDebug_(iConfig.getParameter<bool>("LocalPositionDebug")) {
86  etlDigiHitsToken_ = consumes<ETLDigiCollection>(iConfig.getParameter<edm::InputTag>("inputTag"));
87  mtdgeoToken_ = esConsumes<MTDGeometry, MTDDigiGeometryRecord>();
88  mtdtopoToken_ = esConsumes<MTDTopology, MTDTopologyRcd>();
89 }
90 
92 
93 // ------------ method called for each event ------------
95  using namespace edm;
96 
97  auto geometryHandle = iSetup.getTransientHandle(mtdgeoToken_);
98  const MTDGeometry* geom = geometryHandle.product();
99 
100  auto topologyHandle = iSetup.getTransientHandle(mtdtopoToken_);
101  const MTDTopology* topology = topologyHandle.product();
102 
103  bool topo1Dis = false;
104  bool topo2Dis = false;
105  if (topology->getMTDTopologyMode() <= static_cast<int>(MTDTopologyMode::Mode::barphiflat)) {
106  topo1Dis = true;
107  }
108  if (topology->getMTDTopologyMode() > static_cast<int>(MTDTopologyMode::Mode::barphiflat)) {
109  topo2Dis = true;
110  }
111 
112  auto etlDigiHitsHandle = makeValid(iEvent.getHandle(etlDigiHitsToken_));
113 
114  // --- Loop over the ETL DIGI hits
115 
116  unsigned int n_digi_etl[4] = {0, 0, 0, 0};
117 
118  for (const auto& dataFrame : *etlDigiHitsHandle) {
119  // --- Get the on-time sample
120  int isample = 2;
121  double weight = 1.0;
122  const auto& sample = dataFrame.sample(isample);
123  ETLDetId detId = dataFrame.id();
124  DetId geoId = detId.geographicalId();
125 
126  const MTDGeomDet* thedet = geom->idToDet(geoId);
127  if (thedet == nullptr)
128  throw cms::Exception("EtlDigiHitsValidation") << "GeographicalID: " << std::hex << geoId.rawId() << " ("
129  << detId.rawId() << ") is invalid!" << std::dec << std::endl;
130  const PixelTopology& topo = static_cast<const PixelTopology&>(thedet->topology());
131 
132  Local3DPoint local_point(topo.localX(sample.row()), topo.localY(sample.column()), 0.);
133  const auto& global_point = thedet->toGlobal(local_point);
134 
135  // --- Fill the histograms
136 
137  int idet = 999;
138 
139  if (topo1Dis) {
140  if (detId.zside() == -1) {
141  idet = 0;
142  } else if (detId.zside() == 1) {
143  idet = 2;
144  } else {
145  continue;
146  }
147  }
148 
149  if (topo2Dis) {
150  if (detId.discSide() == 1) {
151  weight = -weight;
152  }
153  if ((detId.zside() == -1) && (detId.nDisc() == 1)) {
154  idet = 0;
155  } else if ((detId.zside() == -1) && (detId.nDisc() == 2)) {
156  idet = 1;
157  } else if ((detId.zside() == 1) && (detId.nDisc() == 1)) {
158  idet = 2;
159  } else if ((detId.zside() == 1) && (detId.nDisc() == 2)) {
160  idet = 3;
161  } else {
162  continue;
163  }
164  }
165 
166  meHitCharge_[idet]->Fill(sample.data());
167  meHitTime_[idet]->Fill(sample.toa());
168  meOccupancy_[idet]->Fill(global_point.x(), global_point.y(), weight);
169 
170  if (LocalPosDebug_) {
171  if ((idet == 0) || (idet == 1)) {
172  meLocalOccupancy_[0]->Fill(local_point.x(), local_point.y());
173  meHitXlocal_[0]->Fill(local_point.x());
174  meHitYlocal_[0]->Fill(local_point.y());
175 
176  } else if ((idet == 2) || (idet == 3)) {
177  meLocalOccupancy_[1]->Fill(local_point.x(), local_point.y());
178  meHitXlocal_[1]->Fill(local_point.x());
179  meHitYlocal_[1]->Fill(local_point.y());
180  }
181  }
182 
183  meHitX_[idet]->Fill(global_point.x());
184  meHitY_[idet]->Fill(global_point.y());
185  meHitZ_[idet]->Fill(global_point.z());
186  meHitPhi_[idet]->Fill(global_point.phi());
187  meHitEta_[idet]->Fill(global_point.eta());
188 
189  meHitTvsQ_[idet]->Fill(sample.data(), sample.toa());
190  meHitQvsPhi_[idet]->Fill(global_point.phi(), sample.data());
191  meHitQvsEta_[idet]->Fill(global_point.eta(), sample.data());
192  meHitTvsPhi_[idet]->Fill(global_point.phi(), sample.toa());
193  meHitTvsEta_[idet]->Fill(global_point.eta(), sample.toa());
194 
195  n_digi_etl[idet]++;
196 
197  } // dataFrame loop
198 
199  if (topo1Dis) {
200  meNhits_[0]->Fill(n_digi_etl[0]);
201  meNhits_[2]->Fill(n_digi_etl[2]);
202  }
203 
204  if (topo2Dis) {
205  for (int i = 0; i < 4; i++) {
206  meNhits_[i]->Fill(n_digi_etl[i]);
207  }
208  }
209 }
210 
211 // ------------ method for histogram booking ------------
213  edm::Run const& run,
214  edm::EventSetup const& iSetup) {
215  ibook.setCurrentFolder(folder_);
216 
217  // --- histograms booking
218 
219  meNhits_[0] = ibook.book1D("EtlNhitsZnegD1",
220  "Number of ETL DIGI hits (-Z, Single(topo1D)/First(topo2D) disk);log_{10}(N_{DIGI})",
221  100,
222  0.,
223  5000.);
224  meNhits_[1] =
225  ibook.book1D("EtlNhitsZnegD2", "Number of ETL DIGI hits (-Z, Second disk);log_{10}(N_{DIGI})", 100, 0., 5000.);
226  meNhits_[2] = ibook.book1D("EtlNhitsZposD1",
227  "Number of ETL DIGI hits (+Z, Single(topo1D)/First(topo2D) disk);log_{10}(N_{DIGI})",
228  100,
229  0.,
230  5000.);
231  meNhits_[3] =
232  ibook.book1D("EtlNhitsZposD2", "Number of ETL DIGI hits (+Z, Second disk);log_{10}(N_{DIGI})", 100, 0., 5000.);
233 
234  meHitCharge_[0] = ibook.book1D("EtlHitChargeZnegD1",
235  "ETL DIGI hits charge (-Z, Single(topo1D)/First(topo2D) disk);Q_{DIGI} [ADC counts]",
236  100,
237  0.,
238  256.);
239  meHitCharge_[1] =
240  ibook.book1D("EtlHitChargeZnegD2", "ETL DIGI hits charge (-Z, Second disk);Q_{DIGI} [ADC counts]", 100, 0., 256.);
241  meHitCharge_[2] = ibook.book1D("EtlHitChargeZposD1",
242  "ETL DIGI hits charge (+Z, Single(topo1D)/First(topo2D) disk);Q_{DIGI} [ADC counts]",
243  100,
244  0.,
245  256.);
246  meHitCharge_[3] =
247  ibook.book1D("EtlHitChargeZposD2", "ETL DIGI hits charge (+Z, Second disk);Q_{DIGI} [ADC counts]", 100, 0., 256.);
248  meHitTime_[0] = ibook.book1D("EtlHitTimeZnegD1",
249  "ETL DIGI hits ToA (-Z, Single(topo1D)/First(topo2D) disk);ToA_{DIGI} [TDC counts]",
250  100,
251  0.,
252  2000.);
253  meHitTime_[1] =
254  ibook.book1D("EtlHitTimeZnegD2", "ETL DIGI hits ToA (-Z, Second disk);ToA_{DIGI} [TDC counts]", 100, 0., 2000.);
255  meHitTime_[2] = ibook.book1D("EtlHitTimeZposD1",
256  "ETL DIGI hits ToA (+Z, Single(topo1D)/First(topo2D) disk);ToA_{DIGI} [TDC counts]",
257  100,
258  0.,
259  2000.);
260  meHitTime_[3] =
261  ibook.book1D("EtlHitTimeZposD2", "ETL DIGI hits ToA (+Z, Second disk);ToA_{DIGI} [TDC counts]", 100, 0., 2000.);
262 
263  meOccupancy_[0] =
264  ibook.book2D("EtlOccupancyZnegD1",
265  "ETL DIGI hits occupancy (-Z, Single(topo1D)/First(topo2D) disk);X_{DIGI} [cm];Y_{DIGI} [cm]",
266  135,
267  -135.,
268  135.,
269  135,
270  -135.,
271  135.);
272  meOccupancy_[1] = ibook.book2D("EtlOccupancyZnegD2",
273  "ETL DIGI hits occupancy (-Z, Second disk);X_{DIGI} [cm];Y_{DIGI} [cm]",
274  135,
275  -135.,
276  135.,
277  135,
278  -135.,
279  135.);
280  meOccupancy_[2] =
281  ibook.book2D("EtlOccupancyZposD1",
282  "ETL DIGI hits occupancy (+Z, Single(topo1D)/First(topo2D) disk);X_{DIGI} [cm];Y_{DIGI} [cm]",
283  135,
284  -135.,
285  135.,
286  135,
287  -135.,
288  135.);
289  meOccupancy_[3] = ibook.book2D("EtlOccupancyZposD2",
290  "ETL DIGI hits occupancy (+Z, Second disk);X_{DIGI} [cm];Y_{DIGI} [cm]",
291  135,
292  -135.,
293  135.,
294  135,
295  -135.,
296  135.);
297  if (LocalPosDebug_) {
298  meLocalOccupancy_[0] = ibook.book2D("EtlLocalOccupancyZneg",
299  "ETL DIGI hits local occupancy (-Z);X_{DIGI} [cm];Y_{DIGI} [cm]",
300  100,
301  -2.2,
302  2.2,
303  50,
304  -1.1,
305  1.1);
306  meLocalOccupancy_[1] = ibook.book2D("EtlLocalOccupancyZpos",
307  "ETL DIGI hits local occupancy (+Z);X_{DIGI} [cm];Y_{DIGI} [cm]",
308  100,
309  -2.2,
310  2.2,
311  50,
312  -1.1,
313  1.1);
314  meHitXlocal_[0] = ibook.book1D("EtlHitXlocalZneg", "ETL DIGI local X (-Z);X_{DIGI}^{LOC} [cm]", 100, -2.2, 2.2);
315  meHitXlocal_[1] = ibook.book1D("EtlHitXlocalZpos", "ETL DIGI local X (+Z);X_{DIGI}^{LOC} [cm]", 100, -2.2, 2.2);
316  meHitYlocal_[0] = ibook.book1D("EtlHitYlocalZneg", "ETL DIGI local Y (-Z);Y_{DIGI}^{LOC} [cm]", 50, -1.1, 1.1);
317  meHitYlocal_[1] = ibook.book1D("EtlHitYlocalZpos", "ETL DIGI local Y (-Z);Y_{DIGI}^{LOC} [cm]", 50, -1.1, 1.1);
318  }
319  meHitX_[0] = ibook.book1D(
320  "EtlHitXZnegD1", "ETL DIGI hits X (-Z, Single(topo1D)/First(topo2D) disk);X_{DIGI} [cm]", 100, -130., 130.);
321  meHitX_[1] = ibook.book1D("EtlHitXZnegD2", "ETL DIGI hits X (-Z, Second disk);X_{DIGI} [cm]", 100, -130., 130.);
322  meHitX_[2] = ibook.book1D(
323  "EtlHitXZposD1", "ETL DIGI hits X (+Z, Single(topo1D)/First(topo2D) disk);X_{DIGI} [cm]", 100, -130., 130.);
324  meHitX_[3] = ibook.book1D("EtlHitXZposD2", "ETL DIGI hits X (+Z, Second disk);X_{DIGI} [cm]", 100, -130., 130.);
325  meHitY_[0] = ibook.book1D(
326  "EtlHitYZnegD1", "ETL DIGI hits Y (-Z, Single(topo1D)/First(topo2D) disk);Y_{DIGI} [cm]", 100, -130., 130.);
327  meHitY_[1] = ibook.book1D("EtlHitYZnegD2", "ETL DIGI hits Y (-Z, Second disk);Y_{DIGI} [cm]", 100, -130., 130.);
328  meHitY_[2] = ibook.book1D(
329  "EtlHitYZposD1", "ETL DIGI hits Y (+Z, Single(topo1D)/First(topo2D) disk);Y_{DIGI} [cm]", 100, -130., 130.);
330  meHitY_[3] = ibook.book1D("EtlHitYZposD2", "ETL DIGI hits Y (+Z, Second disk);Y_{DIGI} [cm]", 100, -130., 130.);
331  meHitZ_[0] = ibook.book1D(
332  "EtlHitZZnegD1", "ETL DIGI hits Z (-Z, Single(topo1D)/First(topo2D) disk);Z_{DIGI} [cm]", 100, -302., -298.);
333  meHitZ_[1] = ibook.book1D("EtlHitZZnegD2", "ETL DIGI hits Z (-Z, Second disk);Z_{DIGI} [cm]", 100, -304., -300.);
334  meHitZ_[2] = ibook.book1D(
335  "EtlHitZZposD1", "ETL DIGI hits Z (+Z, Single(topo1D)/First(topo2D) disk);Z_{DIGI} [cm]", 100, 298., 302.);
336  meHitZ_[3] = ibook.book1D("EtlHitZZposD2", "ETL DIGI hits Z (+Z, Second disk);Z_{DIGI} [cm]", 100, 300., 304.);
337 
338  meHitPhi_[0] = ibook.book1D("EtlHitPhiZnegD1",
339  "ETL DIGI hits #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad]",
340  100,
341  -3.15,
342  3.15);
343  meHitPhi_[1] =
344  ibook.book1D("EtlHitPhiZnegD2", "ETL DIGI hits #phi (-Z, Second disk);#phi_{DIGI} [rad]", 100, -3.15, 3.15);
345  meHitPhi_[2] = ibook.book1D("EtlHitPhiZposD1",
346  "ETL DIGI hits #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad]",
347  100,
348  -3.15,
349  3.15);
350  meHitPhi_[3] =
351  ibook.book1D("EtlHitPhiZposD2", "ETL DIGI hits #phi (+Z, Second disk);#phi_{DIGI} [rad]", 100, -3.15, 3.15);
352  meHitEta_[0] = ibook.book1D(
353  "EtlHitEtaZnegD1", "ETL DIGI hits #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI}", 100, -3.2, -1.56);
354  meHitEta_[1] = ibook.book1D("EtlHitEtaZnegD2", "ETL DIGI hits #eta (-Z, Second disk);#eta_{DIGI}", 100, -3.2, -1.56);
355  meHitEta_[2] = ibook.book1D(
356  "EtlHitEtaZposD1", "ETL DIGI hits #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI}", 100, 1.56, 3.2);
357  meHitEta_[3] = ibook.book1D("EtlHitEtaZposD2", "ETL DIGI hits #eta (+Z, Second disk);#eta_{DIGI}", 100, 1.56, 3.2);
358  meHitTvsQ_[0] = ibook.bookProfile(
359  "EtlHitTvsQZnegD1",
360  "ETL DIGI ToA vs charge (-Z, Single(topo1D)/First(topo2D) disk);Q_{DIGI} [ADC counts];ToA_{DIGI} [TDC counts]",
361  50,
362  0.,
363  256.,
364  0.,
365  1024.);
366  meHitTvsQ_[1] =
367  ibook.bookProfile("EtlHitTvsQZnegD2",
368  "ETL DIGI ToA vs charge (-Z, Second Disk);Q_{DIGI} [ADC counts];ToA_{DIGI} [TDC counts]",
369  50,
370  0.,
371  256.,
372  0.,
373  1024.);
374  meHitTvsQ_[2] = ibook.bookProfile(
375  "EtlHitTvsQZposD1",
376  "ETL DIGI ToA vs charge (+Z, Single(topo1D)/First(topo2D) disk);Q_{DIGI} [ADC counts];ToA_{DIGI} [TDC counts]",
377  50,
378  0.,
379  256.,
380  0.,
381  1024.);
382  meHitTvsQ_[3] =
383  ibook.bookProfile("EtlHitTvsQZposD2",
384  "ETL DIGI ToA vs charge (+Z, Second disk);Q_{DIGI} [ADC counts];ToA_{DIGI} [TDC counts]",
385  50,
386  0.,
387  256.,
388  0.,
389  1024.);
390  meHitQvsPhi_[0] = ibook.bookProfile(
391  "EtlHitQvsPhiZnegD1",
392  "ETL DIGI charge vs #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad];Q_{DIGI} [ADC counts]",
393  50,
394  -3.15,
395  3.15,
396  0.,
397  1024.);
398  meHitQvsPhi_[1] =
399  ibook.bookProfile("EtlHitQvsPhiZnegD2",
400  "ETL DIGI charge vs #phi (-Z, Second disk);#phi_{DIGI} [rad];Q_{DIGI} [ADC counts]",
401  50,
402  -3.15,
403  3.15,
404  0.,
405  1024.);
406  meHitQvsPhi_[2] = ibook.bookProfile(
407  "EtlHitQvsPhiZposD1",
408  "ETL DIGI charge vs #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad];Q_{DIGI} [ADC counts]",
409  50,
410  -3.15,
411  3.15,
412  0.,
413  1024.);
414  meHitQvsPhi_[3] =
415  ibook.bookProfile("EtlHitQvsPhiZposD2",
416  "ETL DIGI charge vs #phi (+Z, Second disk);#phi_{DIGI} [rad];Q_{DIGI} [ADC counts]",
417  50,
418  -3.15,
419  3.15,
420  0.,
421  1024.);
422  meHitQvsEta_[0] = ibook.bookProfile(
423  "EtlHitQvsEtaZnegD1",
424  "ETL DIGI charge vs #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI};Q_{DIGI} [ADC counts]",
425  50,
426  -3.2,
427  -1.56,
428  0.,
429  1024.);
430  meHitQvsEta_[1] = ibook.bookProfile("EtlHitQvsEtaZnegD2",
431  "ETL DIGI charge vs #eta (-Z, Second disk);#eta_{DIGI};Q_{DIGI} [ADC counts]",
432  50,
433  -3.2,
434  -1.56,
435  0.,
436  1024.);
437  meHitQvsEta_[2] = ibook.bookProfile(
438  "EtlHitQvsEtaZposD1",
439  "ETL DIGI charge vs #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI};Q_{DIGI} [ADC counts]",
440  50,
441  1.56,
442  3.2,
443  0.,
444  1024.);
445  meHitQvsEta_[3] = ibook.bookProfile("EtlHitQvsEtaZposD2",
446  "ETL DIGI charge vs #eta (+Z, Second disk);#eta_{DIGI};Q_{DIGI} [ADC counts]",
447  50,
448  1.56,
449  3.2,
450  0.,
451  1024.);
452  meHitTvsPhi_[0] = ibook.bookProfile(
453  "EtlHitTvsPhiZnegD1",
454  "ETL DIGI ToA vs #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad];ToA_{DIGI} [TDC counts]",
455  50,
456  -3.15,
457  3.15,
458  0.,
459  1024.);
460  meHitTvsPhi_[1] =
461  ibook.bookProfile("EtlHitTvsPhiZnegD2",
462  "ETL DIGI ToA vs #phi (-Z, Second disk);#phi_{DIGI} [rad];ToA_{DIGI} [TDC counts]",
463  50,
464  -3.15,
465  3.15,
466  0.,
467  1024.);
468  meHitTvsPhi_[2] = ibook.bookProfile(
469  "EtlHitTvsPhiZposD1",
470  "ETL DIGI ToA vs #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{DIGI} [rad];ToA_{DIGI} [TDC counts]",
471  50,
472  -3.15,
473  3.15,
474  0.,
475  1024.);
476  meHitTvsPhi_[3] =
477  ibook.bookProfile("EtlHitTvsPhiZposD2",
478  "ETL DIGI ToA vs #phi (+Z, Second disk);#phi_{DIGI} [rad];ToA_{DIGI} [TDC counts]",
479  50,
480  -3.15,
481  3.15,
482  0.,
483  1024.);
484  meHitTvsEta_[0] = ibook.bookProfile(
485  "EtlHitTvsEtaZnegD1",
486  "ETL DIGI ToA vs #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI};ToA_{DIGI} [TDC counts]",
487  50,
488  -3.2,
489  -1.56,
490  0.,
491  1024.);
492  meHitTvsEta_[1] = ibook.bookProfile("EtlHitTvsEtaZnegD2",
493  "ETL DIGI ToA vs #eta (-Z, Second disk);#eta_{DIGI};ToA_{DIGI} [TDC counts]",
494  50,
495  -3.2,
496  -1.56,
497  0.,
498  1024.);
499  meHitTvsEta_[2] = ibook.bookProfile(
500  "EtlHitTvsEtaZposD1",
501  "ETL DIGI ToA vs #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{DIGI};ToA_{DIGI} [TDC counts]",
502  50,
503  1.56,
504  3.2,
505  0.,
506  1024.);
507  meHitTvsEta_[3] = ibook.bookProfile("EtlHitTvsEtaZposD2",
508  "ETL DIGI ToA vs #eta (+Z, Second disk);#eta_{DIGI};ToA_{DIGI} [TDC counts]",
509  50,
510  1.56,
511  3.2,
512  0.,
513  1024.);
514 }
515 
516 // ------------ method fills 'descriptions' with the allowed parameters for the module ------------
519 
520  desc.add<std::string>("folder", "MTD/ETL/DigiHits");
521  desc.add<edm::InputTag>("inputTag", edm::InputTag("mix", "FTLEndcap"));
522  desc.add<bool>("LocalPositionDebug", false);
523 
524  descriptions.add("etlDigiHitsDefaultValid", desc);
525 }
526 
MonitorElement * meHitQvsPhi_[4]
std::string folder_
int nDisc() const
Definition: ETLDetId.h:122
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
MonitorElement * meHitXlocal_[2]
virtual const Topology & topology() const
Definition: GeomDet.cc:67
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
int discSide() const
Definition: ETLDetId.h:117
MonitorElement * meHitEta_[4]
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
T y() const
Definition: PV3DBase.h:60
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
edm::EDGetTokenT< ETLDigiCollection > etlDigiHitsToken_
MonitorElement * meNhits_[4]
void Fill(long long x)
virtual float localX(float mpX) const =0
Handle< PROD > getHandle(EDGetTokenT< PROD > token) const
Definition: Event.h:563
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
MonitorElement * meOccupancy_[4]
MonitorElement * meHitTvsQ_[4]
int iEvent
Definition: GenABIO.cc:224
MonitorElement * meLocalOccupancy_[2]
void analyze(const edm::Event &, const edm::EventSetup &) override
MonitorElement * meHitQvsEta_[4]
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:322
ETLDetId geographicalId() const
Definition: ETLDetId.h:108
MonitorElement * meHitCharge_[4]
MonitorElement * meHitY_[4]
MonitorElement * meHitTime_[4]
MonitorElement * meHitYlocal_[2]
ParameterDescriptionBase * add(U const &iLabel, T const &value)
MonitorElement * meHitTvsEta_[4]
MonitorElement * meHitX_[4]
MonitorElement * meHitZ_[4]
Definition: DetId.h:17
virtual float localY(float mpY) const =0
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
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::ESGetToken< MTDTopology, MTDTopologyRcd > mtdtopoToken_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
MonitorElement * meHitTvsPhi_[4]
MonitorElement * meHitPhi_[4]
Detector identifier class for the Endcap Timing Layer.
Definition: ETLDetId.h:15
ESTransientHandle< T > getTransientHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:162
int zside() const
Definition: MTDDetId.h:61
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
EtlDigiHitsValidation(const edm::ParameterSet &)
int weight
Definition: histoStyle.py:51
auto makeValid(const U &iOtherHandleType) noexcept(false)
Definition: ValidHandle.h:52
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
T x() const
Definition: PV3DBase.h:59
Definition: Run.h:45