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