CMS 3D CMS Logo

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