CMS 3D CMS Logo

ZdcSimHitStudy.cc
Go to the documentation of this file.
1 // Package: ZdcSimHitStudy
3 // Class: ZdcSimHitStudy
4 //
5 /*
6  Description:
7  This code has been developed to be a check for the ZDC sim. In 2009, it was
8  found that the ZDC Simulation was unrealistic and needed repair. The aim of
9  this code is to show the user the input and output of a ZDC MinBias
10  simulation.
11 
12  Implementation:
13  First a MinBias simulation should be run, it could be pythia,hijin,or hydjet.
14  This will output a .root file which should have information about
15  recoGenParticles, and g4SimHits_ZDCHits. Use this .root file as the input into
16  the cfg.py which is found in the main directory of this package. This output
17  will be another .root file which is meant to be viewed in a TBrowser.
18 
19 */
20 //
21 // Original Author: Jaime Gomez (U. of Maryland) with SIGNIFICANT assistance of
22 // Dr. Jefferey Temple (U. of Maryland) Adapted from: E. Garcia-Solis' (CSU)
23 // original code
24 //
25 // Created: Summer 2012
27 
35 
38 
41 
45 
46 #include <fstream>
47 #include <iostream>
48 #include <map>
49 #include <memory>
50 #include <string>
51 #include <vector>
52 
53 class ZdcSimHitStudy : public DQMEDAnalyzer {
54 public:
56  ~ZdcSimHitStudy() override = default;
57 
58 protected:
59  void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
60 
61  void analyze(const edm::Event &e, const edm::EventSetup &c) override;
62  void analyzeHits(std::vector<PCaloHit> &);
63  int FillHitValHist(int side, int section, int channel, double energy, double time);
64 
65 private:
68  double enetot;
69 
71  //# Below all the monitoring elements #
72  //# are simply the plots "code names" #
73  //# they will be filled in the .cc file #
75 
77  const bool verbose_, checkHit_;
80 
99 
101 
116 
117  // N counts plots
124 };
125 
127  : g4Label(ps.getUntrackedParameter<std::string>("moduleLabel", "g4SimHits")),
128  zdcHits(ps.getUntrackedParameter<std::string>("HitCollection", "ZdcHits")),
129  outFile_(ps.getUntrackedParameter<std::string>("outputFile", "zdcHitStudy.root")),
130  verbose_(ps.getUntrackedParameter<bool>("Verbose", false)),
131  checkHit_(true),
132  tok_gen_(consumes<reco::GenParticleCollection>(edm::InputTag("genParticles"))),
133  tok_hits_(consumes<edm::PCaloHitContainer>(edm::InputTag(g4Label, zdcHits))) {
134  edm::LogVerbatim("ZdcSimHitStudy") << "Module Label: " << g4Label << " Hits: " << zdcHits << " / " << checkHit_
135  << " Output: " << outFile_;
136 }
137 
139  ib.setCurrentFolder("ZDCValidation");
140  // Histograms for Hits
142  //# Below we are filling the histograms made in the .h file. The syntax is as
143  // follows: # # plot_code_name =
144  // ib.TypeofPlot[(1,2,3)-D,(F,I,D)]("Name as it will appear","Title",axis
145  // options); # # They will be stored in the TFile
146  // subdirectory set by : ib.setCurrentFolder("FolderIwant") # # axis
147  // options are like (#ofbins,min,max) #
149 
150  if (checkHit_) {
152  ib.setCurrentFolder("ZDCValidation/ZdcSimHits");
153  meAllZdcNHit_ = ib.book1D("ZDC Hits", "Number of All Hits in ZDC", 100, 0., 100.);
154  meAllZdcNHit_->setAxisTitle("Total Hits", 1);
155  meAllZdcNHit_->setAxisTitle("Counts", 2);
157  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/Debug_Helper");
158  meBadZdcDetHit_ = ib.book1D("Hiits with the wrong Det", "Hits with wrong Det in ZDC", 100, 0., 100.);
159  meBadZdcDetHit_->setAxisTitle("Wrong Hits", 1);
160  meBadZdcDetHit_->setAxisTitle("Counts", 2);
162  meBadZdcSecHit_ = ib.book1D("Wrong Section Hits", "Hits with wrong Section in ZDC", 100, 0., 100.);
163  meBadZdcSecHit_->setAxisTitle("Hits in wrong section", 1);
164  meBadZdcSecHit_->setAxisTitle("Counts", 2);
166  meBadZdcIdHit_ = ib.book1D("Wrong_ID_Hits", "Hits with wrong ID in ZDC", 100, 0., 100.);
167  meBadZdcIdHit_->setAxisTitle("Hits with wrong ID", 1);
168  meBadZdcIdHit_->setAxisTitle("Counts", 2);
170  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/BasicHitInfo");
171  meZdcNHitEM_ = ib.book1D("Hits in EM", "Number of Hits in ZDC EM", 100, 0., 100.);
172  meZdcNHitEM_->setAxisTitle("EM Hits", 1);
173  meZdcNHitEM_->setAxisTitle("Counts", 2);
175  meZdcNHitHad_ = ib.book1D("Hits in HAD", "Number of Hits in ZDC Had", 100, 0., 100.);
176  meZdcNHitHad_->setAxisTitle("HAD Hits", 1);
177  meZdcNHitHad_->setAxisTitle("Counts", 2);
179  meZdcNHitLum_ = ib.book1D("Hits in LUM", "Number of Hits in ZDC Lum", 100, 0., 100.);
180  meZdcNHitLum_->setAxisTitle("LUM Hits", 1);
181  meZdcNHitLum_->setAxisTitle("Counts", 2);
183  meZdcDetectHit_ = ib.book1D("Calo Detector ID", "Calo Detector ID", 50, 0., 50.);
184  meZdcDetectHit_->setAxisTitle("Detector Hits", 1);
185  meZdcDetectHit_->setAxisTitle("Counts", 2);
187  meZdcSideHit_ = ib.book1D("ZDC Side", "Side in ZDC", 4, -2, 2.);
188  meZdcSideHit_->setAxisTitle("ZDC Side", 1);
189  meZdcSideHit_->setAxisTitle("Counts", 2);
191  meZdcSectionHit_ = ib.book1D("ZDC Section", "Section in ZDC", 4, 0., 4.);
192  meZdcSectionHit_->setAxisTitle("ZDC Section", 1);
193  meZdcSectionHit_->setAxisTitle("Counts", 2);
195  meZdcChannelHit_ = ib.book1D("ZDC Channel", "Channel in ZDC", 10, 0., 10.);
196  meZdcChannelHit_->setAxisTitle("ZDC Channel", 1);
197  meZdcChannelHit_->setAxisTitle("Counts", 2);
199  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/");
200  meZdcEnergyHit_ = ib.book1D("Hit Energy", "Hits Energy", 4000, 0., 8000.);
201  meZdcEnergyHit_->setAxisTitle("Counts", 2);
202  meZdcEnergyHit_->setAxisTitle("Energy (GeV)", 1);
204  meZdcHadEnergyHit_ = ib.book1D("Hit Energy HAD", "Hits Energy in Had Section", 4000, 0., 8000.);
205  meZdcHadEnergyHit_->setAxisTitle("Counts", 2);
206  meZdcHadEnergyHit_->setAxisTitle("Energy (GeV)", 1);
208  meZdcEMEnergyHit_ = ib.book1D("Hit Energy EM", "Hits Energy in EM Section", 4000, 0., 8000.);
209  meZdcEMEnergyHit_->setAxisTitle("Counts", 2);
210  meZdcEMEnergyHit_->setAxisTitle("Energy (GeV)", 1);
212  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/BasicHitInfo");
213  meZdcTimeHit_ = ib.book1D("Time in ZDC", "Time in ZDC", 300, 0., 600.);
214  meZdcTimeHit_->setAxisTitle("Time (ns)", 1);
215  meZdcTimeHit_->setAxisTitle("Counts", 2);
217  meZdcTimeWHit_ = ib.book1D("Energy Weighted Time in ZDC", "Time in ZDC (E wtd)", 300, 0., 600.);
218  meZdcTimeWHit_->setAxisTitle("Time (ns)", 1);
219  meZdcTimeWHit_->setAxisTitle("Counts", 2);
221  meZdc10Ene_ = ib.book1D("ZDC Log(E)", "Log10Energy in ZDC", 140, -20., 20.);
222  meZdc10Ene_->setAxisTitle("Log(E) (GeV)", 1);
223  meZdc10Ene_->setAxisTitle("Counts", 2);
225  meZdcHadL10EneP_ = ib.bookProfile(
226  "Log(EHAD) vs Contribution", "Log10Energy in Had ZDC vs Hit contribution", 140, -1., 20., 100, 0., 1.);
227  meZdcHadL10EneP_->setAxisTitle("Log(EHAD) (GeV)", 1);
228  meZdcHadL10EneP_->setAxisTitle("Counts", 2);
230  meZdcEML10EneP_ = ib.bookProfile(
231  "Log(EEM) vs Contribution", "Log10Energy in EM ZDC vs Hit contribution", 140, -1., 20., 100, 0., 1.);
232  meZdcEML10EneP_->setAxisTitle("Log(EEM) (GeV)", 1);
233  meZdcEML10EneP_->setAxisTitle("Counts", 2);
235  ib.setCurrentFolder("ZDCValidation/ZdcSimHits");
236  meZdcEHadCh_ = ib.book2D("ZDC EHAD vs Channel", "ZDC Had Section Energy vs Channel", 4000, 0., 8000., 6, 0., 6.);
237  meZdcEHadCh_->setAxisTitle("Hadronic Channel Number", 2);
238  meZdcEHadCh_->setAxisTitle("Energy (GeV)", 1);
240  meZdcEEMCh_ = ib.book2D("ZDC EEM vs Channel", "ZDC EM Section Energy vs Channel", 4000, 0., 8000., 6, 0., 6.);
241  meZdcEEMCh_->setAxisTitle("EM Channel Number", 2);
242  meZdcEEMCh_->setAxisTitle("Energy (GeV)", 1);
244  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/BasicHitInfo");
245  meZdcETime_ = ib.book2D("E vs T", "Hits ZDC Energy vs Time", 4000, 0., 8000., 300, 0., 600.);
246  meZdcETime_->setAxisTitle("Energy (GeV)", 1);
247  meZdcETime_->setAxisTitle("Time (ns)", 2);
249  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/Individual_Channels/NZDC");
250  meZdcEneEmN1_ = ib.book1D("NZDC EM1 Energy", "Energy EM module N1", 4000, 0., 8000.);
251  meZdcEneEmN1_->setAxisTitle("Energy (GeV)", 1);
252  meZdcEneEmN1_->setAxisTitle("Counts", 2);
254  meZdcEneEmN2_ = ib.book1D("NZDC EM2 Energy", "Energy EM module N2", 4000, 0., 8000.);
255  meZdcEneEmN2_->setAxisTitle("Energy (GeV)", 1);
256  meZdcEneEmN2_->setAxisTitle("Counts", 2);
258  meZdcEneEmN3_ = ib.book1D("NZDC EM3 Energy", "Energy EM module N3", 4000, 0., 8000.);
259  meZdcEneEmN3_->setAxisTitle("Energy (GeV)", 1);
260  meZdcEneEmN3_->setAxisTitle("Counts", 2);
262  meZdcEneEmN4_ = ib.book1D("NZDC EM4 Energy", "Energy EM module N4", 4000, 0., 8000.);
263  meZdcEneEmN4_->setAxisTitle("Energy (GeV)", 1);
264  meZdcEneEmN4_->setAxisTitle("Counts", 2);
266  meZdcEneEmN5_ = ib.book1D("NZDC EM5 Energy", "Energy EM module N5", 4000, 0., 8000.);
267  meZdcEneEmN5_->setAxisTitle("Energy (GeV)", 1);
268  meZdcEneEmN5_->setAxisTitle("Counts", 2);
270  meZdcEneHadN1_ = ib.book1D("NZDC HAD1 Energy", "Energy HAD module N1", 4000, 0., 8000.);
271  meZdcEneHadN1_->setAxisTitle("Energy (GeV)", 1);
272  meZdcEneHadN1_->setAxisTitle("Counts", 2);
274  meZdcEneHadN2_ = ib.book1D("NZDC HAD2 Energy", "Energy HAD module N2", 4000, 0., 8000.);
275  meZdcEneHadN2_->setAxisTitle("Energy (GeV)", 1);
276  meZdcEneHadN2_->setAxisTitle("Counts", 2);
278  meZdcEneHadN3_ = ib.book1D("NZDC HAD3 Energy", "Energy HAD module N3", 4000, 0., 8000.);
279  meZdcEneHadN3_->setAxisTitle("Energy (GeV)", 1);
280  meZdcEneHadN3_->setAxisTitle("Counts", 2);
282  meZdcEneHadN4_ = ib.book1D("NZDC HAD4 Energy", "Energy HAD module N4", 4000, 0., 8000.);
283  meZdcEneHadN4_->setAxisTitle("Energy (GeV)", 1);
284  meZdcEneHadN4_->setAxisTitle("Counts", 2);
286  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/Individual_ChannelvsTime/NZDC");
287  meZdcEneTEmN1_ = ib.book2D("NZDC EM1 Energy vs Time", "Energy EM mod N1 vs Time", 4000, 0., 8000., 300, 0., 600.);
288  meZdcEneTEmN1_->setAxisTitle("Energy (GeV)", 1);
289  meZdcEneTEmN1_->setAxisTitle("Time (ns)", 2);
291  meZdcEneTEmN2_ = ib.book2D("NZDC EM2 Energy vs Time", "Energy EM mod N2 vs Time", 4000, 0., 8000., 300, 0., 600.);
292  meZdcEneTEmN2_->setAxisTitle("Energy (GeV)", 1);
293  meZdcEneTEmN2_->setAxisTitle("Time (ns)", 2);
295  meZdcEneTEmN3_ = ib.book2D("NZDC EM3 Energy vs Time", "Energy EM mod N3 vs Time", 4000, 0., 8000., 300, 0., 600.);
296  meZdcEneTEmN3_->setAxisTitle("Energy (GeV)", 1);
297  meZdcEneTEmN3_->setAxisTitle("Time (ns)", 2);
299  meZdcEneTEmN4_ = ib.book2D("NZDC EM4 Energy vs Time", "Energy EM mod N4 vs Time", 4000, 0., 8000., 300, 0., 600.);
300  meZdcEneTEmN4_->setAxisTitle("Energy (GeV)", 1);
301  meZdcEneTEmN4_->setAxisTitle("Time (ns)", 2);
303  meZdcEneTEmN5_ = ib.book2D("NZDC EM5 Energy vs Time", "Energy EM mod N5 vs Time", 4000, 0., 8000., 300, 0., 600.);
304  meZdcEneTEmN5_->setAxisTitle("Energy (GeV)", 1);
305  meZdcEneTEmN5_->setAxisTitle("Time (ns)", 2);
308  ib.book2D("NZDC HAD1 Energy vs Time", "Energy HAD mod N1 vs Time", 4000, 0., 8000., 300, 0., 600.);
309  meZdcEneTHadN1_->setAxisTitle("Energy (GeV)", 1);
310  meZdcEneTHadN1_->setAxisTitle("Time (ns)", 2);
313  ib.book2D("NZDC HAD2 Energy vs Time", "Energy HAD mod N2 vs Time", 4000, 0., 8000., 300, 0., 600.);
314  meZdcEneTHadN2_->setAxisTitle("Energy (GeV)", 1);
315  meZdcEneTHadN2_->setAxisTitle("Time (ns)", 2);
318  ib.book2D("NZDC HAD3 Energy vs Time", "Energy HAD mod N3 vs Time", 4000, 0., 8000., 300, 0., 600.);
319  meZdcEneTHadN3_->setAxisTitle("Energy (GeV)", 1);
320  meZdcEneTHadN3_->setAxisTitle("Time (ns)", 2);
323  ib.book2D("NZDC HAD4 Energy vs Time", "Energy HAD mod N4 vs Time", 4000, 0., 8000., 300, 0., 600.);
324  meZdcEneTHadN4_->setAxisTitle("Energy (GeV)", 1);
325  meZdcEneTHadN4_->setAxisTitle("Time (ns)", 2);
327  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/NZDC");
328  meZdcEneHadNTot_ = ib.book1D("NZDC EHAD", "Total N-ZDC HAD Energy", 4000, 0., 4000.);
329  meZdcEneHadNTot_->setAxisTitle("Counts", 2);
330  meZdcEneHadNTot_->setAxisTitle("Energy (GeV)", 1);
332  meZdcEneEmNTot_ = ib.book1D("NZDC EEM", "Total N-ZDC EM Energy", 3000, 0., 3000.);
333  meZdcEneEmNTot_->setAxisTitle("Counts", 2);
334  meZdcEneEmNTot_->setAxisTitle("Energy (GeV)", 1);
336  meZdcEneNTot_ = ib.book1D("NZDC ETOT", "Total N-ZDC Energy ", 7000, 0., 7000.);
337  meZdcEneNTot_->setAxisTitle("Counts", 2);
338  meZdcEneNTot_->setAxisTitle("Energy (GeV)", 1);
340  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/Individual_Channels/PZDC");
341  meZdcEneEmP1_ = ib.book1D("PZDC EM1 Energy", "Energy EM module P1", 3000, 0., 3000.);
342  meZdcEneEmP1_->setAxisTitle("Energy (GeV)", 1);
343  meZdcEneEmP1_->setAxisTitle("Counts", 2);
345  meZdcEneEmP2_ = ib.book1D("PZDC EM2 Energy", "Energy EM module P2", 3000, 0., 3000.);
346  meZdcEneEmP2_->setAxisTitle("Energy (GeV)", 1);
347  meZdcEneEmP2_->setAxisTitle("Counts", 2);
349  meZdcEneEmP3_ = ib.book1D("PZDC EM3 Energy", "Energy EM module P3", 3000, 0., 3000.);
350  meZdcEneEmP3_->setAxisTitle("Energy (GeV)", 1);
351  meZdcEneEmP3_->setAxisTitle("Counts", 2);
353  meZdcEneEmP4_ = ib.book1D("PZDC EM4 Energy", "Energy EM module P4", 3000, 0., 3000.);
354  meZdcEneEmP4_->setAxisTitle("Energy (GeV)", 1);
355  meZdcEneEmP4_->setAxisTitle("Counts", 2);
357  meZdcEneEmP5_ = ib.book1D("PZDC EM5 Energy", "Energy EM module P5", 3000, 0., 3000.);
358  meZdcEneEmP5_->setAxisTitle("Energy (GeV)", 1);
359  meZdcEneEmP5_->setAxisTitle("Counts", 2);
361  meZdcEneHadP1_ = ib.book1D("PZDC HAD1 Energy", "Energy HAD module P1", 3000, 0., 3000.);
362  meZdcEneHadP1_->setAxisTitle("Energy (GeV)", 1);
363  meZdcEneHadP1_->setAxisTitle("Counts", 2);
365  meZdcEneHadP2_ = ib.book1D("PZDC HAD2 Energy", "Energy HAD module P2", 3000, 0., 3000.);
366  meZdcEneHadP2_->setAxisTitle("Energy (GeV)", 1);
367  meZdcEneHadP2_->setAxisTitle("Counts", 2);
369  meZdcEneHadP3_ = ib.book1D("PZDC HAD3 Energy", "Energy HAD module P3", 3000, 0., 3000.);
370  meZdcEneHadP3_->setAxisTitle("Energy (GeV)", 1);
371  meZdcEneHadP3_->setAxisTitle("Counts", 2);
373  meZdcEneHadP4_ = ib.book1D("PZDC HAD4 Energy", "Energy HAD module P4", 3000, 0., 3000.);
374  meZdcEneHadP4_->setAxisTitle("Energy (GeV)", 1);
375  meZdcEneHadP4_->setAxisTitle("Counts", 2);
377  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/Individual_ChannelvsTime/PZDC");
378  meZdcEneTEmP1_ = ib.book2D("PZDC EM1 Energy vs Time", "Energy EM mod P1 vs Time", 4000, 0., 8000., 300, 0., 600.);
379  meZdcEneTEmP1_->setAxisTitle("Energy (GeV)", 1);
380  meZdcEneTEmP1_->setAxisTitle("Time (ns)", 2);
382  meZdcEneTEmP2_ = ib.book2D("PZDC EM2 Energy vs Time", "Energy EM mod P2 vs Time", 4000, 0., 8000., 300, 0., 600.);
383  meZdcEneTEmP2_->setAxisTitle("Energy (GeV)", 1);
384  meZdcEneTEmP2_->setAxisTitle("Time (ns)", 2);
386  meZdcEneTEmP3_ = ib.book2D("PZDC EM3 Energy vs Time", "Energy EM mod P3 vs Time", 4000, 0., 8000., 300, 0., 600.);
387  meZdcEneTEmP3_->setAxisTitle("Energy (GeV)", 1);
388  meZdcEneTEmP3_->setAxisTitle("Time (ns)", 2);
390  meZdcEneTEmP4_ = ib.book2D("PZDC EM4 Energy vs Time", "Energy EM mod P4 vs Time", 4000, 0., 8000., 300, 0., 600.);
391  meZdcEneTEmP4_->setAxisTitle("Energy (GeV)", 1);
392  meZdcEneTEmP4_->setAxisTitle("Time (ns)", 2);
394  meZdcEneTEmP5_ = ib.book2D("PZDC EM5 Energy vs Time", "Energy EM mod P5 vs Time", 4000, 0., 8000., 300, 0., 600.);
395  meZdcEneTEmP5_->setAxisTitle("Energy (GeV)", 1);
396  meZdcEneTEmP5_->setAxisTitle("Time (ns)", 2);
399  ib.book2D("PZDC HAD1 Energy vs Time", "Energy HAD mod P1 vs Time", 4000, 0., 8000., 300, 0., 600.);
400  meZdcEneTHadP1_->setAxisTitle("Energy (GeV)", 1);
401  meZdcEneTHadP1_->setAxisTitle("Time (ns)", 2);
404  ib.book2D("PZDC HAD2 Energy vs Time", "Energy HAD mod P2 vs Time", 4000, 0., 8000., 300, 0., 600.);
405  meZdcEneTHadP2_->setAxisTitle("Energy (GeV)", 1);
406  meZdcEneTHadP2_->setAxisTitle("Time (ns)", 2);
409  ib.book2D("PZDC HAD3 Energy vs Time", "Energy HAD mod P3 vs Time", 4000, 0., 8000., 300, 0., 600.);
410  meZdcEneTHadP3_->setAxisTitle("Energy (GeV)", 1);
411  meZdcEneTHadP3_->setAxisTitle("Time (ns)", 2);
414  ib.book2D("PZDC HAD4 Energy vs Time", "Energy HAD mod P4 vs Time", 4000, 0., 8000., 300, 0., 600.);
415  meZdcEneTHadP4_->setAxisTitle("Energy (GeV)", 1);
416  meZdcEneTHadP4_->setAxisTitle("Time (ns)", 2);
418  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/PZDC");
419  meZdcEneHadPTot_ = ib.book1D("PZDC EHAD", "Total P-ZDC HAD Energy", 10000, 0., 10000.);
420  meZdcEneHadPTot_->setAxisTitle("Energy (GeV)", 1);
421  meZdcEneHadPTot_->setAxisTitle("Counts", 2);
423  meZdcEneEmPTot_ = ib.book1D("PZDC EEM", "Total P-ZDC EM Energy", 10000, 0., 10000.);
424  meZdcEneEmPTot_->setAxisTitle("Energy (GeV)", 1);
425  meZdcEneEmPTot_->setAxisTitle("Counts", 2);
427  meZdcEnePTot_ = ib.book1D("PZDC ETOT", "Total P-ZDC Energy", 10000, 0., 10000.);
428  meZdcEnePTot_->setAxisTitle("Energy (GeV)", 1);
429  meZdcEnePTot_->setAxisTitle("Counts", 2);
431  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/NZDC");
432  meZdcCorEEmNEHadN_ = ib.book2D("NZDC EMvHAD", "N-ZDC Energy EM vs HAD", 3000, 0., 3000., 3000, 0., 3000.);
433  meZdcCorEEmNEHadN_->setAxisTitle("EM Energy (GeV)", 1);
434  meZdcCorEEmNEHadN_->setAxisTitle("HAD Energy (GeV)", 2);
436  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/PZDC");
437  meZdcCorEEmPEHadP_ = ib.book2D("PZDC EMvHAD", "P-ZDC Energy EM vs HAD", 3000, 0., 3000., 3000, 0., 3000.);
438  meZdcCorEEmPEHadP_->setAxisTitle("EM Energy (GeV)", 1);
439  meZdcCorEEmPEHadP_->setAxisTitle("HAD Energy (GeV)", 2);
441  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS");
442  meZdcCorEtotNEtotP_ = ib.book2D("PZDC vs NZDC", "Energy N-ZDC vs P-ZDC", 3000, 0., 3000., 3000, 0., 3000.);
443  meZdcCorEtotNEtotP_->setAxisTitle("N-ZDC Total Energy (GeV)", 1);
444  meZdcCorEtotNEtotP_->setAxisTitle("P-ZDC Total Energy (GeV)", 2);
446  meZdcEneTot_ = ib.book1D("ETOT ZDCs", "Total Energy ZDCs", 3000, 0., 3000.);
447  meZdcEneTot_->setAxisTitle("Counts", 2);
448  meZdcEneTot_->setAxisTitle("Energy (GeV)", 1);
450 
452 
455  ib.setCurrentFolder("ZDCValidation/GenParticles/Forward");
458  genpart_Pi0F = ib.book2D("Pi0_Forward", "Forward Generated Pi0s", 200, 7.5, 13, 100, -3.15, 3.15);
459  genpart_Pi0F->setAxisTitle("Eta", 1);
460  genpart_Pi0F->setAxisTitle("Phi (radians)", 2);
461  genpart_Pi0F->setAxisTitle("Energy (GeV)", 3);
462  genpart_Pi0F->setOption("lego2z,prof");
463  genpart_Pi0F->getTH2F()->SetTitleOffset(1.4, "x");
464  genpart_Pi0F->getTH2F()->SetTitleOffset(1.4, "y");
465 
467  ib.book2D("Pi0_Forward_Counts", "Number of Forward Generated Pi0s", 200, 7.5, 13, 100, -3.15, 3.15);
468  genpart_Pi0F_counts->setAxisTitle("#eta", 1);
469  genpart_Pi0F_counts->setAxisTitle("#phi (radians)", 2);
470  genpart_Pi0F_counts->setAxisTitle("Energy (GeV)", 3);
471  genpart_Pi0F_counts->setOption("lego2z,prof");
472  genpart_Pi0F_counts->getTH2F()->SetTitleOffset(1.4, "x");
473  genpart_Pi0F_counts->getTH2F()->SetTitleOffset(1.4, "y");
474 
477  genpart_NeutF = ib.book2D("Neutron_Forward", "Forward Generated Neutrons", 200, 7.5, 13, 100, -3.15, 3.15);
478  genpart_NeutF->setAxisTitle("Eta", 1);
479  genpart_NeutF->setAxisTitle("Phi (radians)", 2);
480  genpart_NeutF->setAxisTitle("Energy (GeV)", 3);
481  genpart_NeutF->setOption("lego2z,prof");
482  genpart_NeutF->getTH2F()->SetTitleOffset(1.4, "x");
483  genpart_NeutF->getTH2F()->SetTitleOffset(1.4, "y");
484 
486  ib.book2D("Neutron_Forward_Counts", "Number of Forward Generated Neutrons", 200, 7.5, 13, 100, -3.15, 3.15);
488  genpart_NeutF_counts->setAxisTitle("#phi (radians)", 2);
489  genpart_NeutF_counts->setAxisTitle("Energy (GeV)", 3);
490  genpart_NeutF_counts->setOption("lego2z,prof");
491  genpart_NeutF_counts->getTH2F()->SetTitleOffset(1.4, "x");
492  genpart_NeutF_counts->getTH2F()->SetTitleOffset(1.4, "y");
493 
496  genpart_GammaF = ib.book2D("Gamma_Forward", "Forward Generated Gammas", 200, 7.5, 13, 100, -3.15, 3.15);
497  genpart_GammaF->setAxisTitle("Eta", 1);
498  genpart_GammaF->setAxisTitle("Phi (radians)", 2);
499  genpart_GammaF->setAxisTitle("Energy (GeV)", 3);
500  genpart_GammaF->setOption("lego2z,prof");
501  genpart_GammaF->getTH2F()->SetTitleOffset(1.4, "x");
502  genpart_GammaF->getTH2F()->SetTitleOffset(1.4, "y");
503 
505  ib.book2D("Gamma_Forward_Counts", "Number of Forward Generated Gammas", 200, 7.5, 13, 100, -3.15, 3.15);
507  genpart_GammaF_counts->setAxisTitle("#phi (radians)", 2);
508  genpart_GammaF_counts->setAxisTitle("Energy (GeV)", 3);
509  genpart_GammaF_counts->setOption("lego2z,prof");
510  genpart_GammaF_counts->getTH2F()->SetTitleOffset(1.4, "x");
511  genpart_GammaF_counts->getTH2F()->SetTitleOffset(1.4, "y");
512 
515  genpart_Pi0F_energydist = ib.book1D("Pi0_Forward_EDistribution", "Gen-Level Forward Pi0 Energy", 1500, 0, 1500);
516  genpart_Pi0F_energydist->setAxisTitle("Energy (GeV)", 1);
520  genpart_NeutF_energydist = ib.book1D("N_Forward_EDistribution", "Gen-Level Forward Neutron Energy", 1500, 0, 1500);
521  genpart_NeutF_energydist->setAxisTitle("Energy (GeV)", 1);
526  ib.book1D("Gamma_Forward_EDistribution", "Gen-Level Fowarad Gamma Energy", 1500, 0, 1500);
527  genpart_GammaF_energydist->setAxisTitle("Energy (GeV)", 1);
530  ib.setCurrentFolder("ZDCValidation/GenParticles/Backward");
533  genpart_Pi0B = ib.book2D("Pi0_Backward", "Backward Generated Pi0s", 1000, -13, -7.5, 100, -3.15, 3.15);
534  genpart_Pi0B->setAxisTitle("Eta", 1);
535  genpart_Pi0B->setAxisTitle("Phi (radians)", 2);
536  genpart_Pi0B->setAxisTitle("Energy (GeV)", 3);
537  genpart_Pi0B->setOption("lego2z,prof");
538  genpart_Pi0B->getTH2F()->SetTitleOffset(1.4, "x");
539  genpart_Pi0B->getTH2F()->SetTitleOffset(1.4, "y");
540 
542  ib.book2D("Pi0_Backwards_Counts", "Number of Backward Generated Pi0s", 200, -13, -7.5, 100, -3.15, 3.15);
543  genpart_Pi0B_counts->setAxisTitle("#eta", 1);
544  genpart_Pi0B_counts->setAxisTitle("#phi (radians)", 2);
545  genpart_Pi0B_counts->setAxisTitle("Energy (GeV)", 3);
546  genpart_Pi0B_counts->setOption("lego2z,prof");
547  genpart_Pi0B_counts->getTH2F()->SetTitleOffset(1.4, "x");
548  genpart_Pi0B_counts->getTH2F()->SetTitleOffset(1.4, "y");
549 
552  genpart_NeutB = ib.book2D("Neutron_Backward", "Backward Generated Neutrons", 1000, -13, -7.5, 100, -3.15, 3.15);
553  genpart_NeutB->setAxisTitle("Eta", 1);
554  genpart_NeutB->setAxisTitle("Phi (radians)", 2);
555  genpart_NeutB->setAxisTitle("Energy (GeV)", 3);
556  genpart_NeutB->setOption("lego2z,prof");
557  genpart_NeutB->getTH2F()->SetTitleOffset(1.4, "x");
558  genpart_NeutB->getTH2F()->SetTitleOffset(1.4, "y");
559 
560  genpart_NeutB_counts = ib.book2D(
561  "Neutron_Backwards_Counts", "Number of Backward Generated Neutrons", 200, -13, -7.5, 100, -3.15, 3.15);
563  genpart_NeutB_counts->setAxisTitle("#phi (radians)", 2);
564  genpart_NeutB_counts->setAxisTitle("Energy (GeV)", 3);
565  genpart_NeutB_counts->setOption("lego2z,prof");
566  genpart_NeutB_counts->getTH2F()->SetTitleOffset(1.4, "x");
567  genpart_NeutB_counts->getTH2F()->SetTitleOffset(1.4, "y");
568 
570  genpart_GammaB = ib.book2D("Gamma_Backward", "Backward Generated Gammas", 1000, -13, -7.5, 100, -3.15, 3.15);
571  genpart_GammaB->setAxisTitle("Eta", 1);
572  genpart_GammaB->setAxisTitle("Phi (radians)", 2);
573  genpart_GammaB->setAxisTitle("Energy (GeV)", 3);
574  genpart_GammaB->setOption("lego2z,prof");
575  genpart_GammaB->getTH2F()->SetTitleOffset(1.4, "x");
576  genpart_GammaB->getTH2F()->SetTitleOffset(1.4, "y");
577 
579  ib.book2D("Gamma_Backwards_Counts", "Number of Backward Generated Gammas", 200, -13, -7.5, 100, -3.15, 3.15);
581  genpart_GammaB_counts->setAxisTitle("#phi (radians)", 2);
582  genpart_GammaB_counts->setAxisTitle("Energy (GeV)", 3);
583  genpart_GammaB_counts->setOption("lego2z,prof");
584  genpart_GammaB_counts->getTH2F()->SetTitleOffset(1.4, "x");
585  genpart_GammaB_counts->getTH2F()->SetTitleOffset(1.4, "y");
586 
591  genpart_Pi0B_energydist = ib.book1D("Pi0_Backward_EDistribution", "Gen-Level Backward Pi0 Energy", 1500, 0, 1500);
592  genpart_Pi0B_energydist->setAxisTitle("Energy (GeV)", 1);
596  genpart_NeutB_energydist = ib.book1D("N_Backward_EDistribution", "Gen-Level Foward Neutron Energy", 1500, 0, 1500);
597  genpart_NeutB_energydist->setAxisTitle("Energy (GeV)", 1);
602  ib.book1D("Gamma_Backward_EDistribution", "Gen-Level Backward Gamma Energy", 1500, 0, 1500);
603  genpart_GammaB_energydist->setAxisTitle("Energy (GeV)", 1);
606  }
607 }
608 
609 // let's see if this breaks anything
610 /*void ZdcSimHitStudy::endJob() {
611  if (dbe_ && outFile_.size() > 0) dbe_->save(outFile_);
612  }*/
613 
614 // void ZdcSimHitStudy::analyze(const edm::Event& e, const edm::EventSetup& ) {
617 
618  using namespace edm;
619  bool gotGenParticles = true;
620 
621  const edm::Handle<reco::GenParticleCollection> &genhandle = iEvent.getHandle(tok_gen_);
622 
623  if (!(genhandle.isValid())) {
624  gotGenParticles = false; // this is the same kind of boolean except for the
625  }
626 
627  // Handle<edm::PCaloHitContainer> zdcsimhandle;
628 
631 
632  if (gotGenParticles) { // if the boolean was able to find the leaf
633  // "genparticles" then do this
634  for (reco::GenParticleCollection::const_iterator gen = genhandle->begin(); gen != genhandle->end();
635  ++gen) // here we iterate over all generated particles
636  {
637  // double energy=gen->energy();
638  reco::GenParticle thisParticle = (reco::GenParticle)(*gen); // get the particle "gen" points to
639  double energy_2 = thisParticle.energy(); // here I grab some of the attributes of the generated
640  // particle....like its energy, its phi and its eta and
641  // what kind of particle it is
642  double gen_phi = thisParticle.phi();
643  double gen_eta = thisParticle.eta();
644  int gen_id = thisParticle.pdgId();
645 
646  if (gen_id == 111) { // here i require a pi0
647  if (gen_eta > 8.3) { // eta requirement
648 
650  //# IMPORTANT IMPORTANT IMPORTANT IMPORTANT #
651  //# The real eta of the ZDC is |eta| > 8.3, I have only changed it
652  // here to 3 because# # in the PG simulation the ZDC is at an eta of
653  // about 4.5-7, in the real GEANT the # # ZDC is in its appropriate
654  // place at the very foward region...please edit this if # # looking
655  // at MinBias data or the like # # # # IMPORTANT IMPORTANT
656  // IMPORTANT IMPORTANT #
658 
659  genpart_Pi0F->Fill(gen_eta, gen_phi, energy_2); // fill the lego plot
660  genpart_Pi0F_counts->Fill(gen_eta, gen_phi, 1);
661  // genpart_Pi0F_profile->Fill(gen_eta,gen_phi,energy_2);
662  genpart_Pi0F_energydist->Fill(energy_2); // fill the 1D distribution
663  }
664  if (gen_eta < -8.3) { // neg eta requirement
665  genpart_Pi0B->Fill(gen_eta, gen_phi, energy_2);
666  // genpart_Pi0B_profile->Fill(gen_eta,gen_phi,energy_2);
667  genpart_Pi0B_counts->Fill(gen_eta, gen_phi, 1);
668  genpart_Pi0B_energydist->Fill(energy_2);
669  }
670  }
671  if (gen_id == 2112) { // require neutron
672  if (gen_eta > 8.3) {
673  genpart_NeutF->Fill(gen_eta, gen_phi, energy_2);
674  // genpart_NeutF_profile->Fill(gen_eta,gen_phi,energy_2);
675  genpart_NeutF_counts->Fill(gen_eta, gen_phi, 1);
676  genpart_NeutF_energydist->Fill(energy_2);
677  }
678  if (gen_eta < -8.3) {
679  genpart_NeutB->Fill(gen_eta, gen_phi, energy_2);
680  // genpart_NeutB_profile->Fill(gen_eta,gen_phi,energy_2);
681  genpart_NeutB_counts->Fill(gen_eta, gen_phi, 1);
682  genpart_NeutB_energydist->Fill(energy_2);
683  }
684  }
685 
686  if (gen_id == 22) { // require gamma
687  if (gen_eta > 8.3) {
688  genpart_GammaF->Fill(gen_eta, gen_phi, energy_2);
689  // genpart_GammaF_profile->Fill(gen_eta,gen_phi,energy_2);
690  genpart_GammaF_counts->Fill(gen_eta, gen_phi, 1);
691  genpart_GammaF_energydist->Fill(energy_2);
692  }
693  if (gen_eta < -8.3) {
694  genpart_GammaB->Fill(gen_eta, gen_phi, energy_2);
695  // genpart_GammaB_profile->Fill(gen_eta,gen_phi,energy_2);
696  genpart_GammaB_counts->Fill(gen_eta, gen_phi, 1);
697  genpart_GammaB_energydist->Fill(energy_2);
698  }
699  }
700 
701  } // end of GEN loop
702  }
703 
705 
706  // Below is the old script which I will comment later
707 
708  edm::LogVerbatim("ZdcSimHitStudy") << "Run = " << iEvent.id().run() << " Event = " << iEvent.id().event();
709 
710  bool getHits = false;
711  if (checkHit_) {
712  const edm::Handle<edm::PCaloHitContainer> &hitsZdc = iEvent.getHandle(tok_hits_);
713  if (hitsZdc.isValid()) {
714  getHits = true;
715  std::vector<PCaloHit> caloHits;
716  caloHits.insert(caloHits.end(), hitsZdc->begin(), hitsZdc->end());
717  edm::LogVerbatim("ZdcSimHitStudy") << "ZdcValidation: Hit buffer " << caloHits.size();
718  analyzeHits(caloHits);
719  }
720  }
721 
722  edm::LogVerbatim("ZdcSim") << "ZdcValidation: Input flags Hits " << getHits;
723 }
724 
725 void ZdcSimHitStudy::analyzeHits(std::vector<PCaloHit> &hits) {
726  int nHit = hits.size();
727  int nZdcEM = 0, nZdcHad = 0, nZdcLum = 0;
728  int nBad1 = 0, nBad2 = 0, nBad = 0;
729  std::vector<double> encontZdcEM(140, 0.);
730  std::vector<double> encontZdcHad(140, 0.);
731  double entotZdcEM = 0;
732  double entotZdcHad = 0;
733 
734  enetotEmN = 0;
735  enetotHadN = 0.;
736  enetotN = 0;
737  enetotEmP = 0;
738  enetotHadP = 0;
739  enetotP = 0;
740  enetot = 0;
741 
742  for (int i = 0; i < nHit; i++) {
743  double energy = hits[i].energy();
744  double log10en = log10(energy);
745  int log10i = int((log10en + 10.) * 10.);
746  double time = hits[i].time();
747  unsigned int id_ = hits[i].id();
748  HcalZDCDetId id = HcalZDCDetId(id_);
749  int det = id.det();
750  int side = id.zside();
751  int section = id.section();
752  int channel = id.channel();
753 
754  FillHitValHist(side, section, channel, energy, time);
755 
756  edm::LogVerbatim("ZdcSimHitStudy") << "Hit[" << i << "] ID " << std::hex << id_ << std::dec << " DetID " << id
757  << " Det " << det << " side " << side << " Section " << section << " channel "
758  << channel << " E " << energy << " time \n"
759  << time;
760 
761  if (det == 5) { // Check DetId.h
762  if (section == HcalZDCDetId::EM)
763  nZdcEM++;
764  else if (section == HcalZDCDetId::HAD)
765  nZdcHad++;
766  else if (section == HcalZDCDetId::LUM)
767  nZdcLum++;
768  else {
769  nBad++;
770  nBad2++;
771  }
772  } else {
773  nBad++;
774  nBad1++;
775  }
776 
777  meZdcDetectHit_->Fill(double(det));
778  if (det == 5) {
779  meZdcSideHit_->Fill(double(side));
780  meZdcSectionHit_->Fill(double(section));
781  meZdcChannelHit_->Fill(double(channel));
783  if (section == HcalZDCDetId::EM) {
785  meZdcEEMCh_->Fill(energy, channel);
786  if (log10i >= 0 && log10i < 140)
787  encontZdcEM[log10i] += energy;
788  entotZdcEM += energy;
789  }
790  if (section == HcalZDCDetId::HAD) {
792  meZdcEHadCh_->Fill(energy, channel);
793  if (log10i >= 0 && log10i < 140)
794  encontZdcHad[log10i] += energy;
795  entotZdcHad += energy;
796  }
798  meZdcTimeWHit_->Fill(double(time), energy);
799  meZdc10Ene_->Fill(log10en);
800  meZdcETime_->Fill(energy, double(time));
801  }
802  }
803 
804  if (entotZdcEM != 0)
805  for (int i = 0; i < 140; i++)
806  meZdcEML10EneP_->Fill(-10. + (float(i) + 0.5) / 10., encontZdcEM[i] / entotZdcEM);
807  if (entotZdcHad != 0)
808  for (int i = 0; i < 140; i++)
809  meZdcHadL10EneP_->Fill(-10. + (float(i) + 0.5) / 10., encontZdcHad[i] / entotZdcHad);
810 
811  if (nHit > 0) {
812  meAllZdcNHit_->Fill(double(nHit));
813  meBadZdcDetHit_->Fill(double(nBad1));
814  meBadZdcSecHit_->Fill(double(nBad2));
815  meBadZdcIdHit_->Fill(double(nBad));
816  meZdcNHitEM_->Fill(double(nZdcEM));
817  meZdcNHitHad_->Fill(double(nZdcHad));
818  meZdcNHitLum_->Fill(double(nZdcLum));
829  }
830  edm::LogVerbatim("HcalSimHitStudy") << "HcalSimHitStudy::analyzeHits: Had " << nZdcHad << " EM " << nZdcEM << " Bad "
831  << nBad << " All " << nHit;
832 }
833 
834 int ZdcSimHitStudy::FillHitValHist(int side, int section, int channel, double energy, double time) {
835  enetot += enetot;
836  if (side == -1) {
837  enetotN += energy;
838  if (section == HcalZDCDetId::EM) {
839  enetotEmN += energy;
840  switch (channel) {
841  case 1:
844  break;
845  case 2:
848  break;
849  case 3:
852  break;
853  case 4:
856  break;
857  case 5:
860  break;
861  }
862  }
863  if (section == HcalZDCDetId::HAD) {
864  enetotHadN += energy;
865  switch (channel) {
866  case 1:
869  break;
870  case 2:
873  break;
874  case 3:
877  break;
878  case 4:
881  break;
882  }
883  }
884  }
885  if (side == 1) {
886  enetotP += energy;
887  if (section == HcalZDCDetId::EM) {
888  enetotEmP += energy;
889  switch (channel) {
890  case 1:
893  break;
894  case 2:
897  break;
898  case 3:
901  break;
902  case 4:
905  break;
906  case 5:
909  break;
910  }
911  }
912  if (section == HcalZDCDetId::HAD) {
913  enetotHadP += energy;
914  switch (channel) {
915  case 1:
918  break;
919  case 2:
922  break;
923  case 3:
926  break;
927  case 4:
930  break;
931  }
932  }
933  }
934  return 0;
935 }
936 
939 
MonitorElement * meZdcEneTHadP3_
Log< level::Info, true > LogVerbatim
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
MonitorElement * meZdcEnergyHit_
MonitorElement * meZdcEneTEmN1_
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
std::vector< PCaloHit > PCaloHitContainer
MonitorElement * genpart_NeutB
void analyzeHits(std::vector< PCaloHit > &)
MonitorElement * genpart_Pi0F
MonitorElement * meZdcEneTEmP1_
MonitorElement * meZdcHadL10EneP_
MonitorElement * meZdcEneEmP3_
MonitorElement * meZdcEneEmPTot_
MonitorElement * meZdcEneEmN1_
virtual void setOption(const char *option)
MonitorElement * meZdcEneTEmP4_
MonitorElement * meZdcEneHadN1_
MonitorElement * meZdcCorEEmNEHadN_
MonitorElement * meZdcEneEmN4_
MonitorElement * meZdcEneTHadN4_
MonitorElement * meZdcEneEmN5_
MonitorElement * meAllZdcNHit_
MonitorElement * genpart_Pi0F_energydist
MonitorElement * meZdcEneTEmN2_
MonitorElement * meZdcEneHadN4_
MonitorElement * genpart_GammaF_counts
MonitorElement * genpart_NeutF
MonitorElement * meZdcEneTHadN2_
const std::string g4Label
MonitorElement * genpart_Pi0B
int pdgId() const final
PDG identifier.
MonitorElement * meZdcEneEmNTot_
void Fill(long long x)
MonitorElement * meZdcChannelHit_
MonitorElement * meZdcEneEmP2_
MonitorElement * meZdcEneHadP1_
MonitorElement * meZdcEML10EneP_
MonitorElement * meZdcEneTEmN5_
MonitorElement * meZdcEneEmN3_
MonitorElement * meZdcNHitHad_
MonitorElement * genpart_Pi0B_counts
MonitorElement * meBadZdcDetHit_
ZdcSimHitStudy(const edm::ParameterSet &ps)
int iEvent
Definition: GenABIO.cc:224
MonitorElement * genpart_GammaB_energydist
MonitorElement * meZdcEneTEmP5_
MonitorElement * genpart_Pi0F_counts
const bool verbose_
const bool checkHit_
MonitorElement * meZdcEnePTot_
MonitorElement * meZdcEneTEmN4_
MonitorElement * meZdcCorEEmPEHadP_
MonitorElement * meZdcEneTHadP2_
MonitorElement * genpart_GammaF_energydist
MonitorElement * meZdcSideHit_
MonitorElement * meZdcEneHadN3_
MonitorElement * meZdcEneEmN2_
MonitorElement * meZdcEneTHadN1_
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
MonitorElement * meZdcEneTEmP3_
MonitorElement * genpart_NeutF_energydist
MonitorElement * meZdcDetectHit_
MonitorElement * meZdc10Ene_
def gen(fragment, howMuch)
Event to runs.
MonitorElement * meZdcEneHadP4_
int FillHitValHist(int side, int section, int channel, double energy, double time)
MonitorElement * meZdcEneTot_
MonitorElement * meZdcEneHadP3_
MonitorElement * genpart_GammaF
MonitorElement * meZdcEneTEmN3_
MonitorElement * meBadZdcSecHit_
MonitorElement * meZdcEneTHadP1_
MonitorElement * genpart_GammaB
MonitorElement * meZdcNHit_
MonitorElement * meZdcTimeHit_
MonitorElement * meBadZdcIdHit_
MonitorElement * meZdcEneTHadP4_
const edm::EDGetTokenT< edm::PCaloHitContainer > tok_hits_
MonitorElement * meZdcEneHadNTot_
MonitorElement * genpart_NeutB_energydist
MonitorElement * meZdcCorEtotNEtotP_
MonitorElement * genpart_NeutF_counts
const edm::EDGetTokenT< reco::GenParticleCollection > tok_gen_
MonitorElement * meZdcEneHadP2_
const std::string zdcHits
MonitorElement * meZdcEneEmP4_
MonitorElement * meZdcHadEnergyHit_
bool isValid() const
Definition: HandleBase.h:70
MonitorElement * genpart_Pi0B_energydist
MonitorElement * meZdcEneEmP5_
void analyze(const edm::Event &e, const edm::EventSetup &c) override
fixed size matrix
HLT enums.
MonitorElement * meZdcEneTEmP2_
MonitorElement * genpart_GammaB_counts
MonitorElement * meZdcSectionHit_
MonitorElement * meZdcEneNTot_
MonitorElement * meZdcEneHadN2_
MonitorElement * meZdcEneHadPTot_
MonitorElement * meZdcEEMCh_
~ZdcSimHitStudy() override=default
MonitorElement * genpart_NeutB_counts
MonitorElement * meZdcEneEmP1_
MonitorElement * meZdc10EneP_
MonitorElement * meZdcNHitEM_
double phi() const final
momentum azimuthal angle
MonitorElement * meZdcEneTHadN3_
MonitorElement * meZdcTimeWHit_
const std::string outFile_
MonitorElement * meZdcEHadCh_
MonitorElement * meZdcETime_
Definition: Run.h:45
MonitorElement * meZdcEMEnergyHit_
ib
Definition: cuy.py:661
MonitorElement * meZdcNHitLum_
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
double energy() const final
energy
double eta() const final
momentum pseudorapidity