CMS 3D CMS Logo

EtlLocalRecoValidation.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Validation/MtdValidation
4 // Class: EtlLocalRecoValidation
5 //
14 #include <string>
15 
20 
23 
28 
34 
36 public:
38  ~EtlLocalRecoValidation() override;
39 
40  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
41 
42 private:
43  void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
44 
45  void analyze(const edm::Event&, const edm::EventSetup&) override;
46 
47  // ------------ member data ------------
48 
50  const float hitMinEnergy1Dis_;
51  const float hitMinEnergy2Dis_;
52 
55 
56  // --- histograms declaration
57 
61 
63 
69 
75 
82 };
83 
84 // ------------ constructor and destructor --------------
86  : folder_(iConfig.getParameter<std::string>("folder")),
87  hitMinEnergy1Dis_(iConfig.getParameter<double>("hitMinimumEnergy1Dis")),
88  hitMinEnergy2Dis_(iConfig.getParameter<double>("hitMinimumEnergy2Dis")) {
89  etlRecHitsToken_ = consumes<FTLRecHitCollection>(iConfig.getParameter<edm::InputTag>("recHitsTag"));
90  etlRecCluToken_ = consumes<FTLClusterCollection>(iConfig.getParameter<edm::InputTag>("recCluTag"));
91 }
92 
94 
95 // ------------ method called for each event ------------
97  using namespace edm;
98  using namespace std;
99  edm::ESHandle<MTDTopology> topologyHandle;
100  iSetup.get<MTDTopologyRcd>().get(topologyHandle);
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  edm::ESHandle<MTDGeometry> geometryHandle;
113  iSetup.get<MTDDigiGeometryRecord>().get(geometryHandle);
114  const MTDGeometry* geom = geometryHandle.product();
115 
116  auto etlRecHitsHandle = makeValid(iEvent.getHandle(etlRecHitsToken_));
117  auto etlRecCluHandle = makeValid(iEvent.getHandle(etlRecCluToken_));
118 
119  // --- Loop over the ELT RECO hits
120 
121  unsigned int n_reco_etl[4] = {0, 0, 0, 0};
122  for (const auto& recHit : *etlRecHitsHandle) {
123  ETLDetId detId = recHit.id();
124  DetId geoId = detId.geographicalId();
125  const MTDGeomDet* thedet = geom->idToDet(geoId);
126  if (thedet == nullptr)
127  throw cms::Exception("EtlLocalRecoValidation") << "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(recHit.row()), topo.localY(recHit.column()), 0.);
132  const auto& global_point = thedet->toGlobal(local_point);
133 
134  int idet = 999;
135 
136  if (topo1Dis) {
137  if (detId.zside() == -1) {
138  idet = 0;
139  } else if (detId.zside() == 1) {
140  idet = 2;
141  } else {
142  continue;
143  }
144  }
145 
146  if (topo2Dis) {
147  if ((detId.zside() == -1) && (detId.nDisc() == 1)) {
148  idet = 0;
149  } else if ((detId.zside() == -1) && (detId.nDisc() == 2)) {
150  idet = 1;
151  } else if ((detId.zside() == 1) && (detId.nDisc() == 1)) {
152  idet = 2;
153  } else if ((detId.zside() == 1) && (detId.nDisc() == 2)) {
154  idet = 3;
155  } else {
156  continue;
157  }
158  }
159 
160  // --- Fill the histograms
161 
162  meHitEnergy_[idet]->Fill(recHit.energy());
163  meHitTime_[idet]->Fill(recHit.time());
164 
165  meOccupancy_[idet]->Fill(global_point.x(), global_point.y());
166  meHitX_[idet]->Fill(global_point.x());
167  meHitY_[idet]->Fill(global_point.y());
168  meHitZ_[idet]->Fill(global_point.z());
169  meHitPhi_[idet]->Fill(global_point.phi());
170  meHitEta_[idet]->Fill(global_point.eta());
171  meHitTvsE_[idet]->Fill(recHit.energy(), recHit.time());
172  meHitEvsPhi_[idet]->Fill(global_point.phi(), recHit.energy());
173  meHitEvsEta_[idet]->Fill(global_point.eta(), recHit.energy());
174  meHitTvsPhi_[idet]->Fill(global_point.phi(), recHit.time());
175  meHitTvsEta_[idet]->Fill(global_point.eta(), recHit.time());
176 
177  n_reco_etl[idet]++;
178  } // recHit loop
179 
180  if (topo1Dis) {
181  meNhits_[0]->Fill(n_reco_etl[0]);
182  meNhits_[2]->Fill(n_reco_etl[2]);
183  }
184 
185  if (topo2Dis) {
186  for (int i = 0; i < 4; i++) {
187  meNhits_[i]->Fill(n_reco_etl[i]);
188  }
189  }
190 
191  // --- Loop over the ETL RECO clusters ---
192  for (const auto& DetSetClu : *etlRecCluHandle) {
193  for (const auto& cluster : DetSetClu) {
194  if (topo1Dis) {
195  if (cluster.energy() < hitMinEnergy1Dis_)
196  continue;
197  }
198  if (topo2Dis) {
199  if (cluster.energy() < hitMinEnergy2Dis_)
200  continue;
201  }
202  ETLDetId cluId = cluster.id();
203  DetId detIdObject(cluId);
204  const auto& genericDet = geom->idToDetUnit(detIdObject);
205  if (genericDet == nullptr) {
206  throw cms::Exception("EtlLocalRecoValidation")
207  << "GeographicalID: " << std::hex << cluId << " is invalid!" << std::dec << std::endl;
208  }
209 
210  const PixelTopology& topo = static_cast<const PixelTopology&>(genericDet->topology());
211 
212  Local3DPoint local_point(topo.localX(cluster.x()), topo.localY(cluster.y()), 0.);
213  const auto& global_point = genericDet->toGlobal(local_point);
214 
215  int idet = 999;
216 
217  if (topo1Dis) {
218  if (cluId.zside() == -1) {
219  idet = 0;
220  } else if (cluId.zside() == 1) {
221  idet = 2;
222  } else {
223  continue;
224  }
225  }
226 
227  if (topo2Dis) {
228  if ((cluId.zside() == -1) && (cluId.nDisc() == 1)) {
229  idet = 0;
230  } else if ((cluId.zside() == -1) && (cluId.nDisc() == 2)) {
231  idet = 1;
232  } else if ((cluId.zside() == 1) && (cluId.nDisc() == 1)) {
233  idet = 2;
234  } else if ((cluId.zside() == 1) && (cluId.nDisc() == 2)) {
235  idet = 3;
236  } else {
237  continue;
238  }
239  }
240 
241  meCluEnergy_[idet]->Fill(cluster.energy());
242  meCluTime_[idet]->Fill(cluster.time());
243  meCluPhi_[idet]->Fill(global_point.phi());
244  meCluEta_[idet]->Fill(global_point.eta());
245  meCluOccupancy_[idet]->Fill(global_point.x(), global_point.y());
246  meCluHits_[idet]->Fill(cluster.size());
247  }
248  }
249 }
250 
251 // ------------ method for histogram booking ------------
253  edm::Run const& run,
254  edm::EventSetup const& iSetup) {
255  ibook.setCurrentFolder(folder_);
256 
257  // --- histograms booking
258 
259  meNhits_[0] = ibook.book1D(
260  "EtlNhitsZnegD1", "Number of ETL RECO hits (-Z, Single(topo1D)/First(topo2D) disk);N_{RECO}", 100, 0., 5000.);
261  meNhits_[1] = ibook.book1D("EtlNhitsZnegD2", "Number of ETL RECO hits (-Z, Second disk);N_{RECO}", 100, 0., 5000.);
262  meNhits_[2] = ibook.book1D(
263  "EtlNhitsZposD1", "Number of ETL RECO hits (+Z, Single(topo1D)/First(topo2D) disk);N_{RECO}", 100, 0., 5000.);
264  meNhits_[3] = ibook.book1D("EtlNhitsZposD2", "Number of ETL RECO hits (+Z, Second disk);N_{RECO}", 100, 0., 5000.);
265  meHitEnergy_[0] = ibook.book1D(
266  "EtlHitEnergyZnegD1", "ETL RECO hits energy (-Z, Single(topo1D)/First(topo2D) disk);E_{RECO} [MeV]", 100, 0., 3.);
267  meHitEnergy_[1] =
268  ibook.book1D("EtlHitEnergyZnegD2", "ETL RECO hits energy (-Z, Second disk);E_{RECO} [MeV]", 100, 0., 3.);
269  meHitEnergy_[2] = ibook.book1D(
270  "EtlHitEnergyZposD1", "ETL RECO hits energy (+Z, Single(topo1D)/First(topo2D) disk);E_{RECO} [MeV]", 100, 0., 3.);
271  meHitEnergy_[3] =
272  ibook.book1D("EtlHitEnergyZposD2", "ETL RECO hits energy (+Z, Second disk);E_{RECO} [MeV]", 100, 0., 3.);
273  meHitTime_[0] = ibook.book1D(
274  "EtlHitTimeZnegD1", "ETL RECO hits ToA (-Z, Single(topo1D)/First(topo2D) disk);ToA_{RECO} [ns]", 100, 0., 25.);
275  meHitTime_[1] = ibook.book1D("EtlHitTimeZnegD2", "ETL RECO hits ToA (-Z, Second disk);ToA_{RECO} [ns]", 100, 0., 25.);
276  meHitTime_[2] = ibook.book1D(
277  "EtlHitTimeZposD1", "ETL RECO hits ToA (+Z, Single(topo1D)/First(topo2D) disk);ToA_{RECO} [ns]", 100, 0., 25.);
278  meHitTime_[3] = ibook.book1D("EtlHitTimeZposD2", "ETL RECO hits ToA (+Z, Second disk);ToA_{RECO} [ns]", 100, 0., 25.);
279 
280  meOccupancy_[0] =
281  ibook.book2D("EtlOccupancyZnegD1",
282  "ETL RECO hits occupancy (-Z, Single(topo1D)/First(topo2D) disk);X_{RECO} [cm];Y_{RECO} [cm]",
283  135,
284  -135.,
285  135.,
286  135,
287  -135.,
288  135.);
289  meOccupancy_[1] = ibook.book2D("EtlOccupancyZnegD2",
290  "ETL RECO hits occupancy (-Z, Second disk);X_{RECO} [cm];Y_{RECO} [cm]",
291  135,
292  -135.,
293  135.,
294  135,
295  -135.,
296  135.);
297  meOccupancy_[2] =
298  ibook.book2D("EtlOccupancyZposD1",
299  "ETL RECO hits occupancy (+Z, Single(topo1D)/First(topo2D) disk);X_{RECO} [cm];Y_{RECO} [cm]",
300  135,
301  -135.,
302  135.,
303  135,
304  -135.,
305  135.);
306  meOccupancy_[3] = ibook.book2D("EtlOccupancyZposD2",
307  "ETL RECO hits occupancy (+Z, Second disk);X_{RECO} [cm];Y_{RECO} [cm]",
308  135,
309  -135.,
310  135.,
311  135,
312  -135.,
313  135.);
314 
315  meHitX_[0] = ibook.book1D(
316  "EtlHitXZnegD1", "ETL RECO hits X (-Z, Single(topo1D)/First(topo2D) Disk);X_{RECO} [cm]", 100, -130., 130.);
317  meHitX_[1] = ibook.book1D("EtlHitXZnegD2", "ETL RECO hits X (-Z, Second Disk);X_{RECO} [cm]", 100, -130., 130.);
318  meHitX_[2] = ibook.book1D(
319  "EtlHitXZposD1", "ETL RECO hits X (+Z, Single(topo1D)/First(topo2D) Disk);X_{RECO} [cm]", 100, -130., 130.);
320  meHitX_[3] = ibook.book1D("EtlHitXZposD2", "ETL RECO hits X (+Z, Second Disk);X_{RECO} [cm]", 100, -130., 130.);
321  meHitY_[0] = ibook.book1D(
322  "EtlHitYZnegD1", "ETL RECO hits Y (-Z, Single(topo1D)/First(topo2D) Disk);Y_{RECO} [cm]", 100, -130., 130.);
323  meHitY_[1] = ibook.book1D("EtlHitYZnegD2", "ETL RECO hits Y (-Z, Second Disk);Y_{RECO} [cm]", 100, -130., 130.);
324  meHitY_[2] = ibook.book1D(
325  "EtlHitYZposD1", "ETL RECO hits Y (+Z, Single(topo1D)/First(topo2D) Disk);Y_{RECO} [cm]", 100, -130., 130.);
326  meHitY_[3] = ibook.book1D("EtlHitYZposD2", "ETL RECO hits Y (+Z, Second Disk);Y_{RECO} [cm]", 100, -130., 130.);
327  meHitZ_[0] = ibook.book1D(
328  "EtlHitZZnegD1", "ETL RECO hits Z (-Z, Single(topo1D)/First(topo2D) Disk);Z_{RECO} [cm]", 100, -304.2, -303.4);
329  meHitZ_[1] = ibook.book1D("EtlHitZZnegD2", "ETL RECO hits Z (-Z, Second Disk);Z_{RECO} [cm]", 100, -304.2, -303.4);
330  meHitZ_[2] = ibook.book1D(
331  "EtlHitZZposD1", "ETL RECO hits Z (+Z, Single(topo1D)/First(topo2D) Disk);Z_{RECO} [cm]", 100, 303.4, 304.2);
332  meHitZ_[3] = ibook.book1D("EtlHitZZposD2", "ETL RECO hits Z (+Z, Second Disk);Z_{RECO} [cm]", 100, 303.4, 304.2);
333  meHitPhi_[0] = ibook.book1D(
334  "EtlHitPhiZnegD1", "ETL RECO hits #phi (-Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad]", 100, -3.2, 3.2);
335  meHitPhi_[1] =
336  ibook.book1D("EtlHitPhiZnegD2", "ETL RECO hits #phi (-Z, Second Disk);#phi_{RECO} [rad]", 100, -3.2, 3.2);
337  meHitPhi_[2] = ibook.book1D(
338  "EtlHitPhiZposD1", "ETL RECO hits #phi (+Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad]", 100, -3.2, 3.2);
339  meHitPhi_[3] =
340  ibook.book1D("EtlHitPhiZposD2", "ETL RECO hits #phi (+Z, Second Disk);#phi_{RECO} [rad]", 100, -3.2, 3.2);
341  meHitEta_[0] = ibook.book1D(
342  "EtlHitEtaZnegD1", "ETL RECO hits #eta (-Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO}", 100, -3.2, -1.56);
343  meHitEta_[1] = ibook.book1D("EtlHitEtaZnegD2", "ETL RECO hits #eta (-Z, Second Disk);#eta_{RECO}", 100, -3.2, -1.56);
344  meHitEta_[2] = ibook.book1D(
345  "EtlHitEtaZposD1", "ETL RECO hits #eta (+Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO}", 100, 1.56, 3.2);
346  meHitEta_[3] = ibook.book1D("EtlHitEtaZposD2", "ETL RECO hits #eta (+Z, Second Disk);#eta_{RECO}", 100, 1.56, 3.2);
347 
348  meHitTvsE_[0] = ibook.bookProfile(
349  "EtlHitTvsEZnegD1",
350  "ETL RECO time vs energy (-Z, Single(topo1D)/First(topo2D) Disk);E_{RECO} [MeV];ToA_{RECO} [ns]",
351  50,
352  0.,
353  2.,
354  0.,
355  100.);
356  meHitTvsE_[1] = ibook.bookProfile("EtlHitTvsEZnegD2",
357  "ETL RECO time vs energy (-Z, Second Disk);E_{RECO} [MeV];ToA_{RECO} [ns]",
358  50,
359  0.,
360  2.,
361  0.,
362  100.);
363  meHitTvsE_[2] = ibook.bookProfile(
364  "EtlHitTvsEZposD1",
365  "ETL RECO time vs energy (+Z, Single(topo1D)/First(topo2D) Disk);E_{RECO} [MeV];ToA_{RECO} [ns]",
366  50,
367  0.,
368  2.,
369  0.,
370  100.);
371  meHitTvsE_[3] = ibook.bookProfile("EtlHitTvsEZposD2",
372  "ETL RECO time vs energy (+Z, Second Disk);E_{RECO} [MeV];ToA_{RECO} [ns]",
373  50,
374  0.,
375  2.,
376  0.,
377  100.);
378  meHitEvsPhi_[0] = ibook.bookProfile(
379  "EtlHitEvsPhiZnegD1",
380  "ETL RECO energy vs #phi (-Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad];E_{RECO} [MeV]",
381  50,
382  -3.2,
383  3.2,
384  0.,
385  100.);
386  meHitEvsPhi_[1] = ibook.bookProfile("EtlHitEvsPhiZnegD2",
387  "ETL RECO energy vs #phi (-Z, Second Disk);#phi_{RECO} [rad];E_{RECO} [MeV]",
388  50,
389  -3.2,
390  3.2,
391  0.,
392  100.);
393  meHitEvsPhi_[2] = ibook.bookProfile(
394  "EtlHitEvsPhiZposD1",
395  "ETL RECO energy vs #phi (+Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad];E_{RECO} [MeV]",
396  50,
397  -3.2,
398  3.2,
399  0.,
400  100.);
401  meHitEvsPhi_[3] = ibook.bookProfile("EtlHitEvsPhiZposD2",
402  "ETL RECO energy vs #phi (+Z, Second Disk);#phi_{RECO} [rad];E_{RECO} [MeV]",
403  50,
404  -3.2,
405  3.2,
406  0.,
407  100.);
408  meHitEvsEta_[0] =
409  ibook.bookProfile("EtlHitEvsEtaZnegD1",
410  "ETL RECO energy vs #eta (-Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO};E_{RECO} [MeV]",
411  50,
412  -3.2,
413  -1.56,
414  0.,
415  100.);
416  meHitEvsEta_[1] = ibook.bookProfile("EtlHitEvsEtaZnegD2",
417  "ETL RECO energy vs #eta (-Z, Second Disk);#eta_{RECO};E_{RECO} [MeV]",
418  50,
419  -3.2,
420  -1.56,
421  0.,
422  100.);
423  meHitEvsEta_[2] =
424  ibook.bookProfile("EtlHitEvsEtaZposD1",
425  "ETL RECO energy vs #eta (+Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO};E_{RECO} [MeV]",
426  50,
427  1.56,
428  3.2,
429  0.,
430  100.);
431  meHitEvsEta_[3] = ibook.bookProfile("EtlHitEvsEtaZposD2",
432  "ETL RECO energy vs #eta (+Z, Second Disk);#eta_{RECO};E_{RECO} [MeV]",
433  50,
434  1.56,
435  3.2,
436  0.,
437  100.);
438  meHitTvsPhi_[0] = ibook.bookProfile(
439  "EtlHitTvsPhiZnegD1",
440  "ETL RECO time vs #phi (-Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad];ToA_{RECO} [ns]",
441  50,
442  -3.2,
443  3.2,
444  0.,
445  100.);
446  meHitTvsPhi_[1] = ibook.bookProfile("EtlHitTvsPhiZnegD2",
447  "ETL RECO time vs #phi (-Z, Second Disk);#phi_{RECO} [rad];ToA_{RECO} [ns]",
448  50,
449  -3.2,
450  3.2,
451  0.,
452  100.);
453  meHitTvsPhi_[2] = ibook.bookProfile(
454  "EtlHitTvsPhiZposD1",
455  "ETL RECO time vs #phi (+Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad];ToA_{RECO} [ns]",
456  50,
457  -3.2,
458  3.2,
459  0.,
460  100.);
461  meHitTvsPhi_[3] = ibook.bookProfile("EtlHitTvsPhiZposD2",
462  "ETL RECO time vs #phi (+Z, Second Disk);#phi_{RECO} [rad];ToA_{RECO} [ns]",
463  50,
464  -3.2,
465  3.2,
466  0.,
467  100.);
468  meHitTvsEta_[0] =
469  ibook.bookProfile("EtlHitTvsEtaZnegD1",
470  "ETL RECO time vs #eta (-Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO};ToA_{RECO} [ns]",
471  50,
472  -3.2,
473  -1.56,
474  0.,
475  100.);
476  meHitTvsEta_[1] = ibook.bookProfile("EtlHitTvsEtaZnegD2",
477  "ETL RECO time vs #eta (-Z, Second Disk);#eta_{RECO};ToA_{RECO} [ns]",
478  50,
479  -3.2,
480  -1.56,
481  0.,
482  100.);
483  meHitTvsEta_[2] =
484  ibook.bookProfile("EtlHitTvsEtaZposD1",
485  "ETL RECO time vs #eta (+Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO};ToA_{RECO} [ns]",
486  50,
487  1.56,
488  3.2,
489  0.,
490  100.);
491  meHitTvsEta_[3] = ibook.bookProfile("EtlHitTvsEtaZposD2",
492  "ETL RECO time vs #eta (+Z, Second Disk);#eta_{RECO};ToA_{RECO} [ns]",
493  50,
494  1.56,
495  3.2,
496  0.,
497  100.);
498  meCluTime_[0] =
499  ibook.book1D("EtlCluTimeZnegD1", "ETL cluster ToA (-Z, Single(topo1D)/First(topo2D) Disk);ToA [ns]", 250, 0, 25);
500  meCluTime_[1] = ibook.book1D("EtlCluTimeZnegD2", "ETL cluster ToA (-Z, Second Disk);ToA [ns]", 250, 0, 25);
501  meCluTime_[2] =
502  ibook.book1D("EtlCluTimeZposD1", "ETL cluster ToA (+Z, Single(topo1D)/First(topo2D) Disk);ToA [ns]", 250, 0, 25);
503  meCluTime_[3] = ibook.book1D("EtlCluTimeZposD2", "ETL cluster ToA (+Z, Second Disk);ToA [ns]", 250, 0, 25);
504  meCluEnergy_[0] = ibook.book1D(
505  "EtlCluEnergyZnegD1", "ETL cluster energy (-Z, Single(topo1D)/First(topo2D) Disk);E_{RECO} [MeV]", 100, 0, 10);
506  meCluEnergy_[1] =
507  ibook.book1D("EtlCluEnergyZnegD2", "ETL cluster energy (-Z, Second Disk);E_{RECO} [MeV]", 100, 0, 10);
508  meCluEnergy_[2] = ibook.book1D(
509  "EtlCluEnergyZposD1", "ETL cluster energy (+Z, Single(topo1D)/First(topo2D) Disk);E_{RECO} [MeV]", 100, 0, 10);
510  meCluEnergy_[3] =
511  ibook.book1D("EtlCluEnergyZposD2", "ETL cluster energy (+Z, Second Disk);E_{RECO} [MeV]", 100, 0, 10);
512  meCluPhi_[0] = ibook.book1D(
513  "EtlCluPhiZnegD1", "ETL cluster #phi (-Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad]", 126, -3.2, 3.2);
514  meCluPhi_[1] =
515  ibook.book1D("EtlCluPhiZnegD2", "ETL cluster #phi (-Z, Second Disk);#phi_{RECO} [rad]", 126, -3.2, 3.2);
516  meCluPhi_[2] = ibook.book1D(
517  "EtlCluPhiZposD1", "ETL cluster #phi (+Z, Single(topo1D)/First(topo2D) Disk);#phi_{RECO} [rad]", 126, -3.2, 3.2);
518  meCluPhi_[3] =
519  ibook.book1D("EtlCluPhiZposD2", "ETL cluster #phi (+Z, Second Disk);#phi_{RECO} [rad]", 126, -3.2, 3.2);
520  meCluEta_[0] = ibook.book1D(
521  "EtlCluEtaZnegD1", "ETL cluster #eta (-Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO}", 100, -3.2, -1.4);
522  meCluEta_[1] = ibook.book1D("EtlCluEtaZnegD2", "ETL cluster #eta (-Z, Second Disk);#eta_{RECO}", 100, -3.2, -1.4);
523  meCluEta_[2] = ibook.book1D(
524  "EtlCluEtaZposD1", "ETL cluster #eta (+Z, Single(topo1D)/First(topo2D) Disk);#eta_{RECO}", 100, 1.4, 3.2);
525  meCluEta_[3] = ibook.book1D("EtlCluEtaZposD2", "ETL cluster #eta (+Z, Second Disk);#eta_{RECO}", 100, 1.4, 3.2);
526  meCluHits_[0] = ibook.book1D(
527  "EtlCluHitNumberZnegD1", "ETL hits per cluster (-Z, Single(topo1D)/First(topo2D) Disk);Cluster size", 10, 0, 10);
528  meCluHits_[1] =
529  ibook.book1D("EtlCluHitNumberZnegD2", "ETL hits per cluster (-Z, Second Disk);Cluster size", 10, 0, 10);
530  meCluHits_[2] = ibook.book1D(
531  "EtlCluHitNumberZposD1", "ETL hits per cluster (+Z, Single(topo1D)/First(topo2D) Disk);Cluster size", 10, 0, 10);
532  meCluHits_[3] =
533  ibook.book1D("EtlCluHitNumberZposD2", "ETL hits per cluster (+Z, Second Disk);Cluster size", 10, 0, 10);
534  meCluOccupancy_[0] =
535  ibook.book2D("EtlOccupancyZnegD1",
536  "ETL cluster X vs Y (-Z, Single(topo1D)/First(topo2D) Disk);X_{RECO} [cm]; Y_{RECO} [cm]",
537  100,
538  -150.,
539  150.,
540  100,
541  -150,
542  150);
543  meCluOccupancy_[1] = ibook.book2D("EtlOccupancyZnegD2",
544  "ETL cluster X vs Y (-Z, Second Disk);X_{RECO} [cm]; Y_{RECO} [cm]",
545  100,
546  -150.,
547  150.,
548  100,
549  -150,
550  150);
551  meCluOccupancy_[2] =
552  ibook.book2D("EtlOccupancyZposD1",
553  "ETL cluster X vs Y (+Z, Single(topo1D)/First(topo2D) Disk);X_{RECO} [cm]; Y_{RECO} [cm]",
554  100,
555  -150.,
556  150.,
557  100,
558  -150,
559  150);
560  meCluOccupancy_[3] = ibook.book2D("EtlOccupancyZposD2",
561  "ETL cluster X vs Y (+Z, Second Disk);X_{RECO} [cm]; Y_{RECO} [cm]",
562  100,
563  -150.,
564  150.,
565  100,
566  -150,
567  150);
568 }
569 
570 // ------------ method fills 'descriptions' with the allowed parameters for the module ------------
573 
574  desc.add<std::string>("folder", "MTD/ETL/LocalReco");
575  desc.add<edm::InputTag>("recHitsTag", edm::InputTag("mtdRecHits", "FTLEndcap"));
576  desc.add<edm::InputTag>("recCluTag", edm::InputTag("mtdClusters", "FTLEndcap"));
577  desc.add<double>("hitMinimumEnergy1Dis", 1.); // [MeV]
578  desc.add<double>("hitMinimumEnergy2Dis", 0.001); // [MeV]
579 
580  descriptions.add("etlLocalReco", desc);
581 }
582 
MTDDigiGeometryRecord
Definition: MTDDigiGeometryRecord.h:15
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
EtlLocalRecoValidation::bookHistograms
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: EtlLocalRecoValidation.cc:252
dqm::impl::MonitorElement
Definition: MonitorElement.h:98
mps_fire.i
i
Definition: mps_fire.py:428
PixelTopology.h
edm::Run
Definition: Run.h:45
EtlLocalRecoValidation::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: EtlLocalRecoValidation.cc:571
edm::EDGetTokenT
Definition: EDGetToken.h:33
edm
HLT enums.
Definition: AlignableModifier.h:19
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89353
MTDGeometry.h
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
TrackerGeomDet
Definition: TrackerGeomDet.h:6
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
MTDDigiGeometryRecord.h
DQMStore.h
GeomDet::topology
virtual const Topology & topology() const
Definition: GeomDet.cc:67
MTDTopologyMode::Mode::barphiflat
ETLDetId
Detector identifier class for the Endcap Timing Layer.
Definition: ETLDetId.h:15
EtlLocalRecoValidation::meHitY_
MonitorElement * meHitY_[4]
Definition: EtlLocalRecoValidation.cc:65
EtlLocalRecoValidation::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: EtlLocalRecoValidation.cc:96
MTDTopologyMode.h
ETLDetId.h
EtlLocalRecoValidation::meHitEvsPhi_
MonitorElement * meHitEvsPhi_[4]
Definition: EtlLocalRecoValidation.cc:71
EtlLocalRecoValidation::meHitTvsPhi_
MonitorElement * meHitTvsPhi_[4]
Definition: EtlLocalRecoValidation.cc:73
EtlLocalRecoValidation
Definition: EtlLocalRecoValidation.cc:35
rpcPointValidation_cfi.recHit
recHit
Definition: rpcPointValidation_cfi.py:7
DetId
Definition: DetId.h:17
EtlLocalRecoValidation::meHitEnergy_
MonitorElement * meHitEnergy_[4]
Definition: EtlLocalRecoValidation.cc:59
MakerMacros.h
EtlLocalRecoValidation::folder_
const std::string folder_
Definition: EtlLocalRecoValidation.cc:49
EtlLocalRecoValidation::etlRecCluToken_
edm::EDGetTokenT< FTLClusterCollection > etlRecCluToken_
Definition: EtlLocalRecoValidation.cc:54
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
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
ecaldqm::topology
const CaloTopology * topology(nullptr)
EtlLocalRecoValidation::meCluPhi_
MonitorElement * meCluPhi_[4]
Definition: EtlLocalRecoValidation.cc:78
dqm::impl::MonitorElement::Fill
void Fill(long long x)
Definition: MonitorElement.h:290
edm::ESHandle
Definition: DTSurvey.h:22
dqm::implementation::IBooker::bookProfile
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
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
EtlLocalRecoValidation::meHitZ_
MonitorElement * meHitZ_[4]
Definition: EtlLocalRecoValidation.cc:66
ETLDetId::nDisc
int nDisc() const
Definition: ETLDetId.h:122
MTDDetId::zside
int zside() const
Definition: MTDDetId.h:61
ETLDetId::geographicalId
ETLDetId geographicalId() const
Definition: ETLDetId.h:108
Point3DBase< float, LocalTag >
PixelTopology
Definition: PixelTopology.h:10
DQMEDAnalyzer.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
ValidHandle.h
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
EtlLocalRecoValidation::meCluEta_
MonitorElement * meCluEta_[4]
Definition: EtlLocalRecoValidation.cc:79
folder_
std::string folder_
Definition: DQMEDAnalyzer.cc:60
DQMEDAnalyzer
Definition: DQMEDAnalyzer.py:1
MTDTopology
Definition: MTDTopology.h:16
GeomDet::toGlobal
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
edm::ParameterSet
Definition: ParameterSet.h:47
MTDTopologyRcd
Definition: MTDTopologyRcd.h:10
Event.h
EtlLocalRecoValidation::meHitTime_
MonitorElement * meHitTime_[4]
Definition: EtlLocalRecoValidation.cc:60
EtlLocalRecoValidation::meHitX_
MonitorElement * meHitX_[4]
Definition: EtlLocalRecoValidation.cc:64
iEvent
int iEvent
Definition: GenABIO.cc:224
EtlLocalRecoValidation::meOccupancy_
MonitorElement * meOccupancy_[4]
Definition: EtlLocalRecoValidation.cc:62
edm::EventSetup
Definition: EventSetup.h:57
EtlLocalRecoValidation::meCluOccupancy_
MonitorElement * meCluOccupancy_[4]
Definition: EtlLocalRecoValidation.cc:81
EtlLocalRecoValidation::meCluTime_
MonitorElement * meCluTime_[4]
Definition: EtlLocalRecoValidation.cc:76
edm::makeValid
auto makeValid(const U &iOtherHandleType) noexcept(false)
Definition: ValidHandle.h:52
get
#define get
FTLRecHitCollections.h
MTDGeometry
Definition: MTDGeometry.h:14
EtlLocalRecoValidation::meCluEnergy_
MonitorElement * meCluEnergy_[4]
Definition: EtlLocalRecoValidation.cc:77
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
EtlLocalRecoValidation::hitMinEnergy2Dis_
const float hitMinEnergy2Dis_
Definition: EtlLocalRecoValidation.cc:51
std
Definition: JetResolutionObject.h:76
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
writedatasetfile.run
run
Definition: writedatasetfile.py:27
Frameworkfwd.h
EtlLocalRecoValidation::meNhits_
MonitorElement * meNhits_[4]
Definition: EtlLocalRecoValidation.cc:58
EtlLocalRecoValidation::~EtlLocalRecoValidation
~EtlLocalRecoValidation() override
Definition: EtlLocalRecoValidation.cc:93
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
Exception
Definition: hltDiff.cc:246
PixelTopology::localY
virtual float localY(float mpY) const =0
EtlLocalRecoValidation::meHitTvsE_
MonitorElement * meHitTvsE_[4]
Definition: EtlLocalRecoValidation.cc:70
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
EtlLocalRecoValidation::meHitTvsEta_
MonitorElement * meHitTvsEta_[4]
Definition: EtlLocalRecoValidation.cc:74
EtlLocalRecoValidation::meHitEvsEta_
MonitorElement * meHitEvsEta_[4]
Definition: EtlLocalRecoValidation.cc:72
dqm::implementation::IBooker
Definition: DQMStore.h:43
PixelTopology::localX
virtual float localX(float mpX) const =0
ParameterSet.h
EtlLocalRecoValidation::hitMinEnergy1Dis_
const float hitMinEnergy1Dis_
Definition: EtlLocalRecoValidation.cc:50
EtlLocalRecoValidation::meHitEta_
MonitorElement * meHitEta_[4]
Definition: EtlLocalRecoValidation.cc:68
EtlLocalRecoValidation::EtlLocalRecoValidation
EtlLocalRecoValidation(const edm::ParameterSet &)
Definition: EtlLocalRecoValidation.cc:85
edm::Event
Definition: Event.h:73
FTLClusterCollections.h
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
EtlLocalRecoValidation::meCluHits_
MonitorElement * meCluHits_[4]
Definition: EtlLocalRecoValidation.cc:80
edm::InputTag
Definition: InputTag.h:15
EtlLocalRecoValidation::meHitPhi_
MonitorElement * meHitPhi_[4]
Definition: EtlLocalRecoValidation.cc:67
MTDTopology.h
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
EtlLocalRecoValidation::etlRecHitsToken_
edm::EDGetTokenT< FTLRecHitCollection > etlRecHitsToken_
Definition: EtlLocalRecoValidation.cc:53