CMS 3D CMS Logo

EtlSimHitsValidation.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Validation/MtdValidation
4 // Class: EtlSimHitsValidation
5 //
14 #include <string>
15 
20 
23 
27 
31 
36 
37 struct MTDHit {
38  float energy;
39  float time;
40  float x;
41  float y;
42  float z;
43 };
44 
46 public:
47  explicit EtlSimHitsValidation(const edm::ParameterSet&);
48  ~EtlSimHitsValidation() override;
49 
50  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
51 
52 private:
53  void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
54 
55  void analyze(const edm::Event&, const edm::EventSetup&) override;
56 
57  // ------------ member data ------------
58 
60  const float hitMinEnergy1Dis_;
61  const float hitMinEnergy2Dis_;
62 
64 
65  // --- histograms declaration
66 
69 
72 
76 
78 
84 
90 };
91 
92 // ------------ constructor and destructor --------------
94  : folder_(iConfig.getParameter<std::string>("folder")),
95  hitMinEnergy1Dis_(iConfig.getParameter<double>("hitMinimumEnergy1Dis")),
96  hitMinEnergy2Dis_(iConfig.getParameter<double>("hitMinimumEnergy2Dis")) {
97  etlSimHitsToken_ = consumes<CrossingFrame<PSimHit> >(iConfig.getParameter<edm::InputTag>("inputTag"));
98 }
99 
101 
102 // ------------ method called for each event ------------
104  using namespace edm;
105  using namespace geant_units::operators;
106 
107  edm::ESHandle<MTDGeometry> geometryHandle;
108  iSetup.get<MTDDigiGeometryRecord>().get(geometryHandle);
109  const MTDGeometry* geom = geometryHandle.product();
110 
111  edm::ESHandle<MTDTopology> topologyHandle;
112  iSetup.get<MTDTopologyRcd>().get(topologyHandle);
113  const MTDTopology* topology = topologyHandle.product();
114 
115  bool topo1Dis = false;
116  bool topo2Dis = false;
117  if (topology->getMTDTopologyMode() <= static_cast<int>(MTDTopologyMode::Mode::barphiflat)) {
118  topo1Dis = true;
119  }
120  if (topology->getMTDTopologyMode() > static_cast<int>(MTDTopologyMode::Mode::barphiflat)) {
121  topo2Dis = true;
122  }
123 
124  auto etlSimHitsHandle = makeValid(iEvent.getHandle(etlSimHitsToken_));
125  MixCollection<PSimHit> etlSimHits(etlSimHitsHandle.product());
126 
127  std::unordered_map<uint32_t, MTDHit> m_etlHits[4];
128  std::unordered_map<uint32_t, std::set<int> > m_etlTrkPerCell[4];
129 
130  // --- Loop over the ETL SIM hits
131 
132  int idet = 999;
133 
134  for (auto const& simHit : etlSimHits) {
135  // --- Use only hits compatible with the in-time bunch-crossing
136  if (simHit.tof() < 0 || simHit.tof() > 25.)
137  continue;
138 
139  ETLDetId id = simHit.detUnitId();
140  if (topo1Dis) {
141  if (id.zside() == -1) {
142  idet = 0;
143  } else if (id.zside() == 1) {
144  idet = 2;
145  } else {
146  continue;
147  }
148  }
149 
150  if (topo2Dis) {
151  if ((id.zside() == -1) && (id.nDisc() == 1)) {
152  idet = 0;
153  } else if ((id.zside() == -1) && (id.nDisc() == 2)) {
154  idet = 1;
155  } else if ((id.zside() == 1) && (id.nDisc() == 1)) {
156  idet = 2;
157  } else if ((id.zside() == 1) && (id.nDisc() == 2)) {
158  idet = 3;
159  } else {
160  continue;
161  }
162  }
163 
164  m_etlTrkPerCell[idet][id.rawId()].insert(simHit.trackId());
165 
166  auto simHitIt = m_etlHits[idet].emplace(id.rawId(), MTDHit()).first;
167 
168  // --- Accumulate the energy (in MeV) of SIM hits in the same detector cell
169  (simHitIt->second).energy += convertUnitsTo(0.001_MeV, simHit.energyLoss());
170 
171  // --- Get the time of the first SIM hit in the cell
172  if ((simHitIt->second).time == 0 || simHit.tof() < (simHitIt->second).time) {
173  (simHitIt->second).time = simHit.tof();
174 
175  auto hit_pos = simHit.entryPoint();
176  (simHitIt->second).x = hit_pos.x();
177  (simHitIt->second).y = hit_pos.y();
178  (simHitIt->second).z = hit_pos.z();
179  }
180 
181  } // simHit loop
182 
183  // ==============================================================================
184  // Histogram filling
185  // ==============================================================================
186 
187  for (int idet = 0; idet < 4; ++idet) { //two disks per side
188  if (((idet == 1) || (idet == 3)) && (topo1Dis == true))
189  continue;
190  meNhits_[idet]->Fill(m_etlHits[idet].size());
191 
192  for (auto const& hit : m_etlTrkPerCell[idet]) {
193  meNtrkPerCell_[idet]->Fill((hit.second).size());
194  }
195 
196  for (auto const& hit : m_etlHits[idet]) {
197  if (topo1Dis) {
198  if ((hit.second).energy < hitMinEnergy1Dis_)
199  continue;
200  }
201  if (topo2Dis) {
202  if ((hit.second).energy < hitMinEnergy2Dis_)
203  continue;
204  }
205  // --- Get the SIM hit global position
206  ETLDetId detId(hit.first);
207  DetId geoId = detId.geographicalId();
208  const MTDGeomDet* thedet = geom->idToDet(geoId);
209  if (thedet == nullptr)
210  throw cms::Exception("EtlSimHitsValidation") << "GeographicalID: " << std::hex << geoId.rawId() << " ("
211  << detId.rawId() << ") is invalid!" << std::dec << std::endl;
212 
213  Local3DPoint local_point(
214  convertMmToCm((hit.second).x), convertMmToCm((hit.second).y), convertMmToCm((hit.second).z));
215  const auto& global_point = thedet->toGlobal(local_point);
216 
217  // --- Fill the histograms
218  meHitEnergy_[idet]->Fill((hit.second).energy);
219  meHitTime_[idet]->Fill((hit.second).time);
220  meHitXlocal_[idet]->Fill((hit.second).x);
221  meHitYlocal_[idet]->Fill((hit.second).y);
222  meHitZlocal_[idet]->Fill((hit.second).z);
223  meOccupancy_[idet]->Fill(global_point.x(), global_point.y());
224  meHitX_[idet]->Fill(global_point.x());
225  meHitY_[idet]->Fill(global_point.y());
226  meHitZ_[idet]->Fill(global_point.z());
227  meHitPhi_[idet]->Fill(global_point.phi());
228  meHitEta_[idet]->Fill(global_point.eta());
229  meHitTvsE_[idet]->Fill((hit.second).energy, (hit.second).time);
230  meHitEvsPhi_[idet]->Fill(global_point.phi(), (hit.second).energy);
231  meHitEvsEta_[idet]->Fill(global_point.eta(), (hit.second).energy);
232  meHitTvsPhi_[idet]->Fill(global_point.phi(), (hit.second).time);
233  meHitTvsEta_[idet]->Fill(global_point.eta(), (hit.second).time);
234 
235  } // hit loop
236 
237  } // idet loop
238 }
239 
240 // ------------ method for histogram booking ------------
242  edm::Run const& run,
243  edm::EventSetup const& iSetup) {
244  ibook.setCurrentFolder(folder_);
245 
246  // --- histograms booking
247 
248  meNhits_[0] = ibook.book1D("EtlNhitsZnegD1",
249  "Number of ETL cells with SIM hits (-Z, Single(topo1D)/First(topo2D) disk);N_{ETL cells}",
250  100,
251  0.,
252  5000.);
253  meNhits_[1] = ibook.book1D(
254  "EtlNhitsZnegD2", "Number of ETL cells with SIM hits (-Z, Second disk);N_{ETL cells}", 100, 0., 5000.);
255  meNhits_[2] = ibook.book1D("EtlNhitsZposD1",
256  "Number of ETL cells with SIM hits (+Z, Single(topo1D)/First(topo2D) disk);N_{ETL cells}",
257  100,
258  0.,
259  5000.);
260  meNhits_[3] = ibook.book1D(
261  "EtlNhitsZposD2", "Number of ETL cells with SIM hits (+Z, Second Disk);N_{ETL cells}", 100, 0., 5000.);
262  meNtrkPerCell_[0] = ibook.book1D("EtlNtrkPerCellZnegD1",
263  "Number of tracks per ETL sensor (-Z, Single(topo1D)/First(topo2D) disk);N_{trk}",
264  10,
265  0.,
266  10.);
267  meNtrkPerCell_[1] =
268  ibook.book1D("EtlNtrkPerCellZnegD2", "Number of tracks per ETL sensor (-Z, Second disk);N_{trk}", 10, 0., 10.);
269  meNtrkPerCell_[2] = ibook.book1D("EtlNtrkPerCellZposD1",
270  "Number of tracks per ETL sensor (+Z, Single(topo1D)/First(topo2D) disk);N_{trk}",
271  10,
272  0.,
273  10.);
274  meNtrkPerCell_[3] =
275  ibook.book1D("EtlNtrkPerCellZposD2", "Number of tracks per ETL sensor (+Z, Second disk);N_{trk}", 10, 0., 10.);
276 
277  meHitEnergy_[0] = ibook.book1D(
278  "EtlHitEnergyZnegD1", "ETL SIM hits energy (-Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV]", 100, 0., 3.);
279  meHitEnergy_[1] =
280  ibook.book1D("EtlHitEnergyZnegD2", "ETL SIM hits energy (-Z, Second disk);E_{SIM} [MeV]", 100, 0., 3.);
281  meHitEnergy_[2] = ibook.book1D(
282  "EtlHitEnergyZposD1", "ETL SIM hits energy (+Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV]", 100, 0., 3.);
283  meHitEnergy_[3] =
284  ibook.book1D("EtlHitEnergyZposD2", "ETL SIM hits energy (+Z, Second disk);E_{SIM} [MeV]", 100, 0., 3.);
285  meHitTime_[0] = ibook.book1D(
286  "EtlHitTimeZnegD1", "ETL SIM hits ToA (-Z, Single(topo1D)/First(topo2D) disk);ToA_{SIM} [ns]", 100, 0., 25.);
287  meHitTime_[1] = ibook.book1D("EtlHitTimeZnegD2", "ETL SIM hits ToA (-Z, Second disk);ToA_{SIM} [ns]", 100, 0., 25.);
288  meHitTime_[2] = ibook.book1D(
289  "EtlHitTimeZposD1", "ETL SIM hits ToA (+Z, Single(topo1D)/First(topo2D) disk);ToA_{SIM} [ns]", 100, 0., 25.);
290  meHitTime_[3] = ibook.book1D("EtlHitTimeZposD2", "ETL SIM hits ToA (+Z, Second disk);ToA_{SIM} [ns]", 100, 0., 25.);
291 
292  meHitXlocal_[0] = ibook.book1D("EtlHitXlocalZnegD1",
293  "ETL SIM local X (-Z, Single(topo1D)/First(topo2D) disk);X_{SIM}^{LOC} [mm]",
294  100,
295  -25.,
296  25.);
297  meHitXlocal_[1] =
298  ibook.book1D("EtlHitXlocalZnegD2", "ETL SIM local X (-Z, Second disk);X_{SIM}^{LOC} [mm]", 100, -25., 25.);
299  meHitXlocal_[2] = ibook.book1D("EtlHitXlocalZposD1",
300  "ETL SIM local X (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM}^{LOC} [mm]",
301  100,
302  -25.,
303  25.);
304  meHitXlocal_[3] =
305  ibook.book1D("EtlHitXlocalZposD2", "ETL SIM local X (+Z, Second disk);X_{SIM}^{LOC} [mm]", 100, -25., 25.);
306 
307  meHitYlocal_[0] = ibook.book1D("EtlHitYlocalZnegD1",
308  "ETL SIM local Y (-Z, Single(topo1D)/First(topo2D) disk);Y_{SIM}^{LOC} [mm]",
309  100,
310  -48.,
311  48.);
312  meHitYlocal_[1] =
313  ibook.book1D("EtlHitYlocalZnegD2", "ETL SIM local Y (-Z, Second Disk);Y_{SIM}^{LOC} [mm]", 100, -48., 48.);
314  meHitYlocal_[2] = ibook.book1D("EtlHitYlocalZposD1",
315  "ETL SIM local Y (+Z, Single(topo1D)/First(topo2D) disk);Y_{SIM}^{LOC} [mm]",
316  100,
317  -48.,
318  48.);
319  meHitYlocal_[3] =
320  ibook.book1D("EtlHitYlocalZposD2", "ETL SIM local Y (+Z, Second disk);Y_{SIM}^{LOC} [mm]", 100, -48., 48.);
321  meHitZlocal_[0] = ibook.book1D("EtlHitZlocalZnegD1",
322  "ETL SIM local Z (-Z, Single(topo1D)/First(topo2D) disk);Z_{SIM}^{LOC} [mm]",
323  80,
324  -0.16,
325  0.16);
326  meHitZlocal_[1] =
327  ibook.book1D("EtlHitZlocalZnegD2", "ETL SIM local Z (-Z, Second disk);Z_{SIM}^{LOC} [mm]", 80, -0.16, 0.16);
328  meHitZlocal_[2] = ibook.book1D("EtlHitZlocalZposD1",
329  "ETL SIM local Z (+Z, Single(topo1D)/First(topo2D) disk);Z_{SIM}^{LOC} [mm]",
330  80,
331  -0.16,
332  0.16);
333  meHitZlocal_[3] =
334  ibook.book1D("EtlHitZlocalZposD2", "ETL SIM local Z (+Z, Second disk);Z_{SIM}^{LOC} [mm]", 80, -0.16, 0.16);
335 
336  meOccupancy_[0] =
337  ibook.book2D("EtlOccupancyZnegD1",
338  "ETL SIM hits occupancy (-Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm];Y_{SIM} [cm]",
339  135,
340  -135.,
341  135.,
342  135,
343  -135.,
344  135.);
345  meOccupancy_[1] = ibook.book2D("EtlOccupancyZnegD2",
346  "ETL SIM hits occupancy (-Z, Second disk);X_{SIM} [cm];Y_{SIM} [cm]",
347  135,
348  -135.,
349  135.,
350  135,
351  -135.,
352  135.);
353  meOccupancy_[2] =
354  ibook.book2D("EtlOccupancyZposD1",
355  "ETL SIM hits occupancy (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm];Y_{SIM} [cm]",
356  135,
357  -135.,
358  135.,
359  135,
360  -135.,
361  135.);
362  meOccupancy_[3] = ibook.book2D("EtlOccupancyZposD2",
363  "ETL SIM hits occupancy (+Z, Second disk);X_{SIM} [cm];Y_{SIM} [cm]",
364  135,
365  -135.,
366  135.,
367  135,
368  -135.,
369  135.);
370 
371  meHitX_[0] = ibook.book1D(
372  "EtlHitXZnegD1", "ETL SIM hits X (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm]", 100, -130., 130.);
373  meHitX_[1] = ibook.book1D("EtlHitXZnegD2", "ETL SIM hits X (-Z, Second disk);X_{SIM} [cm]", 100, -130., 130.);
374  meHitX_[2] = ibook.book1D(
375  "EtlHitXZposD1", "ETL SIM hits X (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm]", 100, -130., 130.);
376  meHitX_[3] = ibook.book1D("EtlHitXZposD2", "ETL SIM hits X (+Z, Second disk);X_{SIM} [cm]", 100, -130., 130.);
377  meHitY_[0] = ibook.book1D(
378  "EtlHitYZnegD1", "ETL SIM hits Y (-Z, Single(topo1D)/First(topo2D) disk);Y_{SIM} [cm]", 100, -130., 130.);
379  meHitY_[1] = ibook.book1D("EtlHitYZnegD2", "ETL SIM hits Y (-Z, Second disk);Y_{SIM} [cm]", 100, -130., 130.);
380  meHitY_[2] = ibook.book1D(
381  "EtlHitYZposD1", "ETL SIM hits Y (+Z, Single(topo1D)/First(topo2D) disk);Y_{SIM} [cm]", 100, -130., 130.);
382  meHitY_[3] = ibook.book1D("EtlHitYZposD2", "ETL SIM hits Y (+Z, Second disk);Y_{SIM} [cm]", 100, -130., 130.);
383  meHitZ_[0] = ibook.book1D(
384  "EtlHitZZnegD1", "ETL SIM hits Z (-Z, Single(topo1D)/First(topo2D) disk);Z_{SIM} [cm]", 100, -304.2, -303.4);
385  meHitZ_[1] = ibook.book1D("EtlHitZZnegD2", "ETL SIM hits Z (-Z, Second disk);Z_{SIM} [cm]", 100, -304.2, -303.4);
386  meHitZ_[2] = ibook.book1D(
387  "EtlHitZZposD1", "ETL SIM hits Z (+Z, Single(topo1D)/First(topo2D) disk);Z_{SIM} [cm]", 100, 303.4, 304.2);
388  meHitZ_[3] = ibook.book1D("EtlHitZZposD2", "ETL SIM hits Z (+Z, Second disk);Z_{SIM} [cm]", 100, 303.4, 304.2);
389 
390  meHitPhi_[0] = ibook.book1D(
391  "EtlHitPhiZnegD1", "ETL SIM hits #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
392  meHitPhi_[1] =
393  ibook.book1D("EtlHitPhiZnegD2", "ETL SIM hits #phi (-Z, Second disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
394  meHitPhi_[2] = ibook.book1D(
395  "EtlHitPhiZposD1", "ETL SIM hits #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
396  meHitPhi_[3] =
397  ibook.book1D("EtlHitPhiZposD2", "ETL SIM hits #phi (+Z, Second disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
398  meHitEta_[0] = ibook.book1D(
399  "EtlHitEtaZnegD1", "ETL SIM hits #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM}", 100, -3.2, -1.56);
400  meHitEta_[1] = ibook.book1D("EtlHitEtaZnegD2", "ETL SIM hits #eta (-Z, Second disk);#eta_{SIM}", 100, -3.2, -1.56);
401  meHitEta_[2] = ibook.book1D(
402  "EtlHitEtaZposD1", "ETL SIM hits #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM}", 100, 1.56, 3.2);
403  meHitEta_[3] = ibook.book1D("EtlHitEtaZposD2", "ETL SIM hits #eta (+Z, Second disk);#eta_{SIM}", 100, 1.56, 3.2);
404 
405  meHitTvsE_[0] =
406  ibook.bookProfile("EtlHitTvsEZnegD1",
407  "ETL SIM time vs energy (-Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV];T_{SIM} [ns]",
408  50,
409  0.,
410  2.,
411  0.,
412  100.);
413  meHitTvsE_[1] = ibook.bookProfile(
414  "EtlHitTvsEZnegD2", "ETL SIM time vs energy (-Z, Second disk);E_{SIM} [MeV];T_{SIM} [ns]", 50, 0., 2., 0., 100.);
415  meHitTvsE_[2] =
416  ibook.bookProfile("EtlHitTvsEZposD1",
417  "ETL SIM time vs energy (+Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV];T_{SIM} [ns]",
418  50,
419  0.,
420  2.,
421  0.,
422  100.);
423  meHitTvsE_[3] = ibook.bookProfile(
424  "EtlHitTvsEZposD2", "ETL SIM time vs energy (+Z, Second disk);E_{SIM} [MeV];T_{SIM} [ns]", 50, 0., 2., 0., 100.);
425  meHitEvsPhi_[0] =
426  ibook.bookProfile("EtlHitEvsPhiZnegD1",
427  "ETL SIM energy vs #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
428  50,
429  -3.15,
430  3.15,
431  0.,
432  100.);
433  meHitEvsPhi_[1] = ibook.bookProfile("EtlHitEvsPhiZnegD2",
434  "ETL SIM energy vs #phi (-Z, Second disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
435  50,
436  -3.15,
437  3.15,
438  0.,
439  100.);
440  meHitEvsPhi_[2] =
441  ibook.bookProfile("EtlHitEvsPhiZposD1",
442  "ETL SIM energy vs #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
443  50,
444  -3.15,
445  3.15,
446  0.,
447  100.);
448  meHitEvsPhi_[3] = ibook.bookProfile("EtlHitEvsPhiZposD2",
449  "ETL SIM energy vs #phi (+Z, Second disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
450  50,
451  -3.15,
452  3.15,
453  0.,
454  100.);
455  meHitEvsEta_[0] =
456  ibook.bookProfile("EtlHitEvsEtaZnegD1",
457  "ETL SIM energy vs #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};E_{SIM} [MeV]",
458  50,
459  -3.2,
460  -1.56,
461  0.,
462  100.);
463  meHitEvsEta_[1] = ibook.bookProfile("EtlHitEvsEtaZnegD2",
464  "ETL SIM energy vs #eta (-Z, Second disk);#eta_{SIM};E_{SIM} [MeV]",
465  50,
466  -3.2,
467  -1.56,
468  0.,
469  100.);
470  meHitEvsEta_[2] =
471  ibook.bookProfile("EtlHitEvsEtaZposD1",
472  "ETL SIM energy vs #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};E_{SIM} [MeV]",
473  50,
474  1.56,
475  3.2,
476  0.,
477  100.);
478  meHitEvsEta_[3] = ibook.bookProfile("EtlHitEvsEtaZposD2",
479  "ETL SIM energy vs #eta (+Z, Second disk);#eta_{SIM};E_{SIM} [MeV]",
480  50,
481  1.56,
482  3.2,
483  0.,
484  100.);
485  meHitTvsPhi_[0] =
486  ibook.bookProfile("EtlHitTvsPhiZnegD1",
487  "ETL SIM time vs #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];T_{SIM} [ns]",
488  50,
489  -3.15,
490  3.15,
491  0.,
492  100.);
493  meHitTvsPhi_[1] = ibook.bookProfile("EtlHitTvsPhiZnegD2",
494  "ETL SIM time vs #phi (-Z, Second disk);#phi_{SIM} [rad];T_{SIM} [ns]",
495  50,
496  -3.15,
497  3.15,
498  0.,
499  100.);
500  meHitTvsPhi_[2] =
501  ibook.bookProfile("EtlHitTvsPhiZposD1",
502  "ETL SIM time vs #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];T_{SIM} [ns]",
503  50,
504  -3.15,
505  3.15,
506  0.,
507  100.);
508  meHitTvsPhi_[3] = ibook.bookProfile("EtlHitTvsPhiZposD2",
509  "ETL SIM time vs #phi (+Z, Second disk);#phi_{SIM} [rad];T_{SIM} [ns]",
510  50,
511  -3.15,
512  3.15,
513  0.,
514  100.);
515  meHitTvsEta_[0] =
516  ibook.bookProfile("EtlHitTvsEtaZnegD1",
517  "ETL SIM time vs #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};T_{SIM} [ns]",
518  50,
519  -3.2,
520  -1.56,
521  0.,
522  100.);
523  meHitTvsEta_[1] = ibook.bookProfile(
524  "EtlHitTvsEtaZnegD2", "ETL SIM time vs #eta (-Z, Second disk);#eta_{SIM};T_{SIM} [ns]", 50, -3.2, -1.56, 0., 100.);
525  meHitTvsEta_[2] =
526  ibook.bookProfile("EtlHitTvsEtaZposD1",
527  "ETL SIM time vs #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};T_{SIM} [ns]",
528  50,
529  1.56,
530  3.2,
531  0.,
532  100.);
533  meHitTvsEta_[3] = ibook.bookProfile(
534  "EtlHitTvsEtaZposD2", "ETL SIM time vs #eta (+Z, Second disk);#eta_{SIM};T_{SIM} [ns]", 50, 1.56, 3.2, 0., 100.);
535 }
536 
537 // ------------ method fills 'descriptions' with the allowed parameters for the module ------------
540 
541  desc.add<std::string>("folder", "MTD/ETL/SimHits");
542  desc.add<edm::InputTag>("inputTag", edm::InputTag("mix", "g4SimHitsFastTimerHitsEndcap"));
543  desc.add<double>("hitMinimumEnergy1Dis", 0.1); // [MeV]
544  desc.add<double>("hitMinimumEnergy2Dis", 0.001); // [MeV]
545 
546  descriptions.add("etlSimHits", desc);
547 }
548 
MTDDigiGeometryRecord
Definition: MTDDigiGeometryRecord.h:15
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
dqm::impl::MonitorElement
Definition: MonitorElement.h:98
DDAxes::y
EtlSimHitsValidation::meNhits_
MonitorElement * meNhits_[4]
Definition: EtlSimHitsValidation.cc:67
EtlSimHitsValidation::etlSimHitsToken_
edm::EDGetTokenT< CrossingFrame< PSimHit > > etlSimHitsToken_
Definition: EtlSimHitsValidation.cc:63
EtlSimHitsValidation::folder_
const std::string folder_
Definition: EtlSimHitsValidation.cc:59
edm::Run
Definition: Run.h:45
EtlSimHitsValidation::meHitZlocal_
MonitorElement * meHitZlocal_[4]
Definition: EtlSimHitsValidation.cc:75
ecaldqm::zside
int zside(DetId const &)
Definition: EcalDQMCommonUtils.cc:189
EtlSimHitsValidation::meHitX_
MonitorElement * meHitX_[4]
Definition: EtlSimHitsValidation.cc:79
edm::EDGetTokenT
Definition: EDGetToken.h:33
EtlSimHitsValidation::meHitTvsEta_
MonitorElement * meHitTvsEta_[4]
Definition: EtlSimHitsValidation.cc:89
geant_units::operators::convertUnitsTo
constexpr NumType convertUnitsTo(long double desiredUnits, NumType val)
Definition: GeantUnits.h:87
edm
HLT enums.
Definition: AlignableModifier.h:19
EtlSimHitsValidation::meHitY_
MonitorElement * meHitY_[4]
Definition: EtlSimHitsValidation.cc:80
CrossingFrame.h
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:85964
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
MTDTopologyMode::Mode::barphiflat
EtlSimHitsValidation::meHitXlocal_
MonitorElement * meHitXlocal_[4]
Definition: EtlSimHitsValidation.cc:73
EtlSimHitsValidation::meHitEvsEta_
MonitorElement * meHitEvsEta_[4]
Definition: EtlSimHitsValidation.cc:87
EtlSimHitsValidation::~EtlSimHitsValidation
~EtlSimHitsValidation() override
Definition: EtlSimHitsValidation.cc:100
ETLDetId
Detector identifier class for the Endcap Timing Layer.
Definition: ETLDetId.h:15
DDAxes::x
EtlSimHitsValidation::meHitEvsPhi_
MonitorElement * meHitEvsPhi_[4]
Definition: EtlSimHitsValidation.cc:86
geant_units::operators
Definition: GeantUnits.h:18
MTDTopologyMode.h
ETLDetId.h
EtlSimHitsValidation::meHitZ_
MonitorElement * meHitZ_[4]
Definition: EtlSimHitsValidation.cc:81
DetId
Definition: DetId.h:17
EtlSimHitsValidation::meOccupancy_
MonitorElement * meOccupancy_[4]
Definition: EtlSimHitsValidation.cc:77
MakerMacros.h
EtlSimHitsValidation::bookHistograms
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: EtlSimHitsValidation.cc:241
PSimHit.h
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
MixCollection.h
EtlSimHitsValidation::meHitPhi_
MonitorElement * meHitPhi_[4]
Definition: EtlSimHitsValidation.cc:82
MixCollection
Definition: MixCollection.h:11
ecaldqm::topology
const CaloTopology * topology(nullptr)
rpcPointValidation_cfi.simHit
simHit
Definition: rpcPointValidation_cfi.py:24
dqm::impl::MonitorElement::Fill
void Fill(long long x)
Definition: MonitorElement.h:290
DDAxes::z
EtlSimHitsValidation::meHitYlocal_
MonitorElement * meHitYlocal_[4]
Definition: EtlSimHitsValidation.cc:74
edm::ESHandle
Definition: DTSurvey.h:22
MTDHit::time
float time
Definition: BtlLocalRecoValidation.cc:46
EtlSimHitsValidation::hitMinEnergy2Dis_
const float hitMinEnergy2Dis_
Definition: EtlSimHitsValidation.cc:61
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
HCALHighEnergyHPDFilter_cfi.energy
energy
Definition: HCALHighEnergyHPDFilter_cfi.py:5
EtlSimHitsValidation::meHitEta_
MonitorElement * meHitEta_[4]
Definition: EtlSimHitsValidation.cc:83
EtlSimHitsValidation::meHitTvsPhi_
MonitorElement * meHitTvsPhi_[4]
Definition: EtlSimHitsValidation.cc:88
ETLDetId::geographicalId
ETLDetId geographicalId() const
Definition: ETLDetId.h:108
Point3DBase< float, LocalTag >
MTDHit::x
float x
Definition: BtlSimHitsValidation.cc:45
MTDHit::y
float y
Definition: BtlSimHitsValidation.cc:46
DQMEDAnalyzer.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
ValidHandle.h
EtlSimHitsValidation::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: EtlSimHitsValidation.cc:538
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
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
MTDHit::energy
float energy
Definition: BtlLocalRecoValidation.cc:45
GeantUnits.h
iEvent
int iEvent
Definition: GenABIO.cc:224
EtlSimHitsValidation::meNtrkPerCell_
MonitorElement * meNtrkPerCell_[4]
Definition: EtlSimHitsValidation.cc:68
EtlSimHitsValidation::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: EtlSimHitsValidation.cc:103
EtlSimHitsValidation::meHitTime_
MonitorElement * meHitTime_[4]
Definition: EtlSimHitsValidation.cc:71
edm::EventSetup
Definition: EventSetup.h:57
edm::makeValid
auto makeValid(const U &iOtherHandleType) noexcept(false)
Definition: ValidHandle.h:52
get
#define get
MTDGeometry
Definition: MTDGeometry.h:14
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
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
EtlSimHitsValidation::meHitEnergy_
MonitorElement * meHitEnergy_[4]
Definition: EtlSimHitsValidation.cc:70
Frameworkfwd.h
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
EtlSimHitsValidation::hitMinEnergy1Dis_
const float hitMinEnergy1Dis_
Definition: EtlSimHitsValidation.cc:60
Exception
Definition: hltDiff.cc:246
MTDHit::z
float z
Definition: BtlSimHitsValidation.cc:47
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
dqm::implementation::IBooker
Definition: DQMStore.h:43
geant_units::operators::convertMmToCm
constexpr NumType convertMmToCm(NumType millimeters)
Definition: GeantUnits.h:62
ParameterSet.h
ntuplemaker.time
time
Definition: ntuplemaker.py:310
edm::Event
Definition: Event.h:73
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
EtlSimHitsValidation
Definition: EtlSimHitsValidation.cc:45
edm::InputTag
Definition: InputTag.h:15
MTDTopology.h
hit
Definition: SiStripHitEffFromCalibTree.cc:88
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
EtlSimHitsValidation::meHitTvsE_
MonitorElement * meHitTvsE_[4]
Definition: EtlSimHitsValidation.cc:85
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
EtlSimHitsValidation::EtlSimHitsValidation
EtlSimHitsValidation(const edm::ParameterSet &)
Definition: EtlSimHitsValidation.cc:93
MTDHit
Definition: BtlLocalRecoValidation.cc:44