CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 found that the ZDC Simulation was unrealistic and needed repair. The aim of this code is to show the user the input and output of a ZDC MinBias simulation.
8 
9  Implementation:
10  First a MinBias simulation should be run, it could be pythia,hijin,or hydjet. This will output a .root file which should have information about recoGenParticles, and g4SimHits_ZDCHits. Use this .root file as the input into the cfg.py which is found in the main directory of this package. This output will be another .root file which is meant to be viewed in a TBrowser.
11 
12 */
13 //
14 // Original Author: Jaime Gomez (U. of Maryland) with SIGNIFICANT assistance of Dr. Jefferey Temple (U. of Maryland)
15 // Adapted from: E. Garcia-Solis' (CSU) original code
16 //
17 // Created: Summer 2012
19 
20 
21 
22 
23 
26 
28 #include "CLHEP/Units/GlobalSystemOfUnits.h"
29 
31 
32  g4Label = ps.getUntrackedParameter<std::string>("moduleLabel","g4SimHits");
33  zdcHits = ps.getUntrackedParameter<std::string>("HitCollection","ZdcHits");
34  outFile_ = ps.getUntrackedParameter<std::string>("outputFile", "zdcHitStudy.root");
35  verbose_ = ps.getUntrackedParameter<bool>("Verbose", false);
36  checkHit_= true;
37 
38  tok_gen_ = consumes<reco::GenParticleCollection>(edm::InputTag("genParticles"));
39  tok_hits_ = consumes<edm::PCaloHitContainer>(edm::InputTag(g4Label,zdcHits));
40 
41  edm::LogInfo("ZdcSimHitStudy")
42  //std::cout
43  << "Module Label: " << g4Label << " Hits: "
44  << zdcHits << " / "<< checkHit_
45  << " Output: " << outFile_;
46 
47 }
48 
50 
52  ib.setCurrentFolder("ZDCValidation");
53  //Histograms for Hits
55 //# Below we are filling the histograms made in the .h file. The syntax is as follows: #
56 //# plot_code_name = ib.TypeofPlot[(1,2,3)-D,(F,I,D)]("Name as it will appear","Title",axis options); #
57 //# They will be stored in the TFile subdirectory set by : ib.setCurrentFolder("FolderIwant") #
58 //# axis options are like (#ofbins,min,max) #
60 
61 
62  if (checkHit_) {
64  ib.setCurrentFolder("ZDCValidation/ZdcSimHits");
65  meAllZdcNHit_ = ib.book1D("ZDC Hits","Number of All Hits in ZDC",100,0.,100.);
66  meAllZdcNHit_->setAxisTitle("Total Hits",1);
67  meAllZdcNHit_->setAxisTitle("Counts",2);
69  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/Debug_Helper");
70  meBadZdcDetHit_= ib.book1D("Hiits with the wrong Det","Hits with wrong Det in ZDC",100,0.,100.);
71  meBadZdcDetHit_->setAxisTitle("Wrong Hits",1);
72  meBadZdcDetHit_->setAxisTitle("Counts",2);
74  meBadZdcSecHit_= ib.book1D("Wrong Section Hits","Hits with wrong Section in ZDC",100,0.,100.);
75  meBadZdcSecHit_->setAxisTitle("Hits in wrong section",1);
76  meBadZdcSecHit_->setAxisTitle("Counts",2);
78  meBadZdcIdHit_ = ib.book1D("Wrong_ID_Hits","Hits with wrong ID in ZDC",100,0.,100.);
79  meBadZdcIdHit_->setAxisTitle("Hits with wrong ID",1);
80  meBadZdcIdHit_->setAxisTitle("Counts",2);
82  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/BasicHitInfo");
83  meZdcNHitEM_ = ib.book1D("Hits in EM","Number of Hits in ZDC EM",100,0.,100.);
84  meZdcNHitEM_->setAxisTitle("EM Hits",1);
85  meZdcNHitEM_->setAxisTitle("Counts",2);
87  meZdcNHitHad_ = ib.book1D("Hits in HAD","Number of Hits in ZDC Had",100,0.,100.);
88  meZdcNHitHad_->setAxisTitle("HAD Hits",1);
89  meZdcNHitHad_->setAxisTitle("Counts",2);
91  meZdcNHitLum_ = ib.book1D("Hits in LUM","Number of Hits in ZDC Lum",100,0.,100.);
92  meZdcNHitLum_->setAxisTitle("LUM Hits",1);
93  meZdcNHitLum_->setAxisTitle("Counts",2);
95  meZdcDetectHit_= ib.book1D("Calo Detector ID","Calo Detector ID",50,0.,50.);
96  meZdcDetectHit_->setAxisTitle("Detector Hits",1);
97  meZdcDetectHit_->setAxisTitle("Counts",2);
99  meZdcSideHit_ = ib.book1D("ZDC Side","Side in ZDC",4,-2,2.);
100  meZdcSideHit_->setAxisTitle("ZDC Side",1);
101  meZdcSideHit_->setAxisTitle("Counts",2);
103  meZdcSectionHit_ = ib.book1D("ZDC Section","Section in ZDC",4,0.,4.);
104  meZdcSectionHit_->setAxisTitle("ZDC Section",1);
105  meZdcSectionHit_->setAxisTitle("Counts",2);
107  meZdcChannelHit_ = ib.book1D("ZDC Channel","Channel in ZDC",10,0.,10.);
108  meZdcChannelHit_->setAxisTitle("ZDC Channel",1);
109  meZdcChannelHit_->setAxisTitle("Counts",2);
111  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/");
112  meZdcEnergyHit_= ib.book1D("Hit Energy","Hits Energy",4000,0.,8000.);
113  meZdcEnergyHit_->setAxisTitle("Counts",2);
114  meZdcEnergyHit_->setAxisTitle("Energy (GeV)",1);
116  meZdcHadEnergyHit_= ib.book1D("Hit Energy HAD","Hits Energy in Had Section",4000,0.,8000.);
117  meZdcHadEnergyHit_->setAxisTitle("Counts",2);
118  meZdcHadEnergyHit_->setAxisTitle("Energy (GeV)",1);
120  meZdcEMEnergyHit_ = ib.book1D("Hit Energy EM","Hits Energy in EM Section",4000,0.,8000.);
121  meZdcEMEnergyHit_->setAxisTitle("Counts",2);
122  meZdcEMEnergyHit_->setAxisTitle("Energy (GeV)",1);
124  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/BasicHitInfo");
125  meZdcTimeHit_ = ib.book1D("Time in ZDC","Time in ZDC",300,0.,600.);
126  meZdcTimeHit_->setAxisTitle("Time (ns)",1);
127  meZdcTimeHit_->setAxisTitle("Counts",2);
129  meZdcTimeWHit_ = ib.book1D("Energy Weighted Time in ZDC","Time in ZDC (E wtd)", 300,0.,600.);
130  meZdcTimeWHit_->setAxisTitle("Time (ns)",1);
131  meZdcTimeWHit_->setAxisTitle("Counts",2);
133  meZdc10Ene_ = ib.book1D("ZDC Log(E)","Log10Energy in ZDC", 140, -20., 20. );
134  meZdc10Ene_->setAxisTitle("Log(E) (GeV)",1);
135  meZdc10Ene_->setAxisTitle("Counts",2);
137  meZdcHadL10EneP_ = ib.bookProfile("Log(EHAD) vs Contribution","Log10Energy in Had ZDC vs Hit contribution", 140, -1., 20., 100, 0., 1. );
138  meZdcHadL10EneP_->setAxisTitle("Log(EHAD) (GeV)",1);
139  meZdcHadL10EneP_->setAxisTitle("Counts",2);
141  meZdcEML10EneP_ = ib.bookProfile("Log(EEM) vs Contribution","Log10Energy in EM ZDC vs Hit contribution", 140, -1., 20., 100, 0., 1. );
142  meZdcEML10EneP_->setAxisTitle("Log(EEM) (GeV)",1);
143  meZdcEML10EneP_->setAxisTitle("Counts",2);
145  ib.setCurrentFolder("ZDCValidation/ZdcSimHits");
146  meZdcEHadCh_ = ib.book2D("ZDC EHAD vs Channel","ZDC Had Section Energy vs Channel", 4000, 0., 8000., 6, 0., 6. );
147  meZdcEHadCh_->setAxisTitle("Hadronic Channel Number",2);
148  meZdcEHadCh_->setAxisTitle("Energy (GeV)",1);
150  meZdcEEMCh_ = ib.book2D("ZDC EEM vs Channel","ZDC EM Section Energy vs Channel", 4000, 0., 8000., 6, 0., 6. );
151  meZdcEEMCh_->setAxisTitle("EM Channel Number",2);
152  meZdcEEMCh_->setAxisTitle("Energy (GeV)",1);
154  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/BasicHitInfo");
155  meZdcETime_ = ib.book2D("E vs T","Hits ZDC Energy vs Time", 4000, 0., 8000., 300, 0., 600. );
156  meZdcETime_->setAxisTitle("Energy (GeV)",1);
157  meZdcETime_->setAxisTitle("Time (ns)",2);
159  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/Individual_Channels/NZDC");
160  meZdcEneEmN1_ = ib.book1D("NZDC EM1 Energy","Energy EM module N1",4000,0.,8000.);
161  meZdcEneEmN1_->setAxisTitle("Energy (GeV)",1);
162  meZdcEneEmN1_->setAxisTitle("Counts",2);
164  meZdcEneEmN2_ = ib.book1D("NZDC EM2 Energy","Energy EM module N2",4000,0.,8000.);
165  meZdcEneEmN2_->setAxisTitle("Energy (GeV)",1);
166  meZdcEneEmN2_->setAxisTitle("Counts",2);
168  meZdcEneEmN3_ = ib.book1D("NZDC EM3 Energy","Energy EM module N3",4000,0.,8000.);
169  meZdcEneEmN3_->setAxisTitle("Energy (GeV)",1);
170  meZdcEneEmN3_->setAxisTitle("Counts",2);
172  meZdcEneEmN4_ = ib.book1D("NZDC EM4 Energy","Energy EM module N4",4000,0.,8000.);
173  meZdcEneEmN4_->setAxisTitle("Energy (GeV)",1);
174  meZdcEneEmN4_->setAxisTitle("Counts",2);
176  meZdcEneEmN5_ = ib.book1D("NZDC EM5 Energy","Energy EM module N5",4000,0.,8000.);
177  meZdcEneEmN5_->setAxisTitle("Energy (GeV)",1);
178  meZdcEneEmN5_->setAxisTitle("Counts",2);
180  meZdcEneHadN1_ = ib.book1D("NZDC HAD1 Energy","Energy HAD module N1",4000,0.,8000.);
181  meZdcEneHadN1_->setAxisTitle("Energy (GeV)",1);
182  meZdcEneHadN1_->setAxisTitle("Counts",2);
184  meZdcEneHadN2_ = ib.book1D("NZDC HAD2 Energy","Energy HAD module N2",4000,0.,8000.);
185  meZdcEneHadN2_->setAxisTitle("Energy (GeV)",1);
186  meZdcEneHadN2_->setAxisTitle("Counts",2);
188  meZdcEneHadN3_ = ib.book1D("NZDC HAD3 Energy","Energy HAD module N3",4000,0.,8000.);
189  meZdcEneHadN3_->setAxisTitle("Energy (GeV)",1);
190  meZdcEneHadN3_->setAxisTitle("Counts",2);
192  meZdcEneHadN4_ = ib.book1D("NZDC HAD4 Energy","Energy HAD module N4",4000,0.,8000.);
193  meZdcEneHadN4_->setAxisTitle("Energy (GeV)",1);
194  meZdcEneHadN4_->setAxisTitle("Counts",2);
196  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/Individual_ChannelvsTime/NZDC");
197  meZdcEneTEmN1_ = ib.book2D("NZDC EM1 Energy vs Time","Energy EM mod N1 vs Time", 4000, 0., 8000., 300, 0., 600. );
198  meZdcEneTEmN1_->setAxisTitle("Energy (GeV)",1);
199  meZdcEneTEmN1_->setAxisTitle("Time (ns)",2);
201  meZdcEneTEmN2_ = ib.book2D("NZDC EM2 Energy vs Time","Energy EM mod N2 vs Time", 4000, 0., 8000., 300, 0., 600. );
202  meZdcEneTEmN2_->setAxisTitle("Energy (GeV)",1);
203  meZdcEneTEmN2_->setAxisTitle("Time (ns)",2);
205  meZdcEneTEmN3_ = ib.book2D("NZDC EM3 Energy vs Time","Energy EM mod N3 vs Time", 4000, 0., 8000., 300, 0., 600. );
206  meZdcEneTEmN3_->setAxisTitle("Energy (GeV)",1);
207  meZdcEneTEmN3_->setAxisTitle("Time (ns)",2);
209  meZdcEneTEmN4_ = ib.book2D("NZDC EM4 Energy vs Time","Energy EM mod N4 vs Time", 4000, 0., 8000., 300, 0., 600. );
210  meZdcEneTEmN4_->setAxisTitle("Energy (GeV)",1);
211  meZdcEneTEmN4_->setAxisTitle("Time (ns)",2);
213  meZdcEneTEmN5_ = ib.book2D("NZDC EM5 Energy vs Time","Energy EM mod N5 vs Time", 4000, 0., 8000., 300, 0., 600. );
214  meZdcEneTEmN5_->setAxisTitle("Energy (GeV)",1);
215  meZdcEneTEmN5_->setAxisTitle("Time (ns)",2);
217  meZdcEneTHadN1_ = ib.book2D("NZDC HAD1 Energy vs Time","Energy HAD mod N1 vs Time", 4000, 0., 8000., 300, 0., 600. );
218  meZdcEneTHadN1_->setAxisTitle("Energy (GeV)",1);
219  meZdcEneTHadN1_->setAxisTitle("Time (ns)",2);
221  meZdcEneTHadN2_ = ib.book2D("NZDC HAD2 Energy vs Time","Energy HAD mod N2 vs Time", 4000, 0., 8000., 300, 0., 600. );
222  meZdcEneTHadN2_->setAxisTitle("Energy (GeV)",1);
223  meZdcEneTHadN2_->setAxisTitle("Time (ns)",2);
225  meZdcEneTHadN3_ = ib.book2D("NZDC HAD3 Energy vs Time","Energy HAD mod N3 vs Time", 4000, 0., 8000., 300, 0., 600. );
226  meZdcEneTHadN3_->setAxisTitle("Energy (GeV)",1);
227  meZdcEneTHadN3_->setAxisTitle("Time (ns)",2);
229  meZdcEneTHadN4_ = ib.book2D("NZDC HAD4 Energy vs Time","Energy HAD mod N4 vs Time", 4000, 0., 8000., 300, 0., 600. );
230  meZdcEneTHadN4_->setAxisTitle("Energy (GeV)",1);
231  meZdcEneTHadN4_->setAxisTitle("Time (ns)",2);
233  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/NZDC");
234  meZdcEneHadNTot_ = ib.book1D("NZDC EHAD","Total N-ZDC HAD Energy",4000,0.,4000.);
235  meZdcEneHadNTot_->setAxisTitle("Counts",2);
236  meZdcEneHadNTot_->setAxisTitle("Energy (GeV)",1);
238  meZdcEneEmNTot_ = ib.book1D("NZDC EEM","Total N-ZDC EM Energy",3000,0.,3000.);
239  meZdcEneEmNTot_->setAxisTitle("Counts",2);
240  meZdcEneEmNTot_->setAxisTitle("Energy (GeV)",1);
242  meZdcEneNTot_ = ib.book1D("NZDC ETOT","Total N-ZDC Energy ",7000,0.,7000.);
243  meZdcEneNTot_->setAxisTitle("Counts",2);
244  meZdcEneNTot_->setAxisTitle("Energy (GeV)",1);
246  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/Individual_Channels/PZDC");
247  meZdcEneEmP1_ = ib.book1D("PZDC EM1 Energy","Energy EM module P1",3000,0.,3000.);
248  meZdcEneEmP1_->setAxisTitle("Energy (GeV)",1);
249  meZdcEneEmP1_->setAxisTitle("Counts",2);
251  meZdcEneEmP2_ = ib.book1D("PZDC EM2 Energy","Energy EM module P2",3000,0.,3000.);
252  meZdcEneEmP2_->setAxisTitle("Energy (GeV)",1);
253  meZdcEneEmP2_->setAxisTitle("Counts",2);
255  meZdcEneEmP3_ = ib.book1D("PZDC EM3 Energy","Energy EM module P3",3000,0.,3000.);
256  meZdcEneEmP3_->setAxisTitle("Energy (GeV)",1);
257  meZdcEneEmP3_->setAxisTitle("Counts",2);
259  meZdcEneEmP4_ = ib.book1D("PZDC EM4 Energy","Energy EM module P4",3000,0.,3000.);
260  meZdcEneEmP4_->setAxisTitle("Energy (GeV)",1);
261  meZdcEneEmP4_->setAxisTitle("Counts",2);
263  meZdcEneEmP5_ = ib.book1D("PZDC EM5 Energy","Energy EM module P5",3000,0.,3000.);
264  meZdcEneEmP5_->setAxisTitle("Energy (GeV)",1);
265  meZdcEneEmP5_->setAxisTitle("Counts",2);
267  meZdcEneHadP1_ = ib.book1D("PZDC HAD1 Energy","Energy HAD module P1",3000,0.,3000.);
268  meZdcEneHadP1_->setAxisTitle("Energy (GeV)",1);
269  meZdcEneHadP1_->setAxisTitle("Counts",2);
271  meZdcEneHadP2_ = ib.book1D("PZDC HAD2 Energy","Energy HAD module P2",3000,0.,3000.);
272  meZdcEneHadP2_->setAxisTitle("Energy (GeV)",1);
273  meZdcEneHadP2_->setAxisTitle("Counts",2);
275  meZdcEneHadP3_ = ib.book1D("PZDC HAD3 Energy","Energy HAD module P3",3000,0.,3000.);
276  meZdcEneHadP3_->setAxisTitle("Energy (GeV)",1);
277  meZdcEneHadP3_->setAxisTitle("Counts",2);
279  meZdcEneHadP4_ = ib.book1D("PZDC HAD4 Energy","Energy HAD module P4",3000,0.,3000.);
280  meZdcEneHadP4_->setAxisTitle("Energy (GeV)",1);
281  meZdcEneHadP4_->setAxisTitle("Counts",2);
283  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/Individual_ChannelvsTime/PZDC");
284  meZdcEneTEmP1_ = ib.book2D("PZDC EM1 Energy vs Time","Energy EM mod P1 vs Time", 4000, 0., 8000., 300, 0., 600. );
285  meZdcEneTEmP1_->setAxisTitle("Energy (GeV)",1);
286  meZdcEneTEmP1_->setAxisTitle("Time (ns)",2);
288  meZdcEneTEmP2_ = ib.book2D("PZDC EM2 Energy vs Time","Energy EM mod P2 vs Time", 4000, 0., 8000., 300, 0., 600. );
289  meZdcEneTEmP2_->setAxisTitle("Energy (GeV)",1);
290  meZdcEneTEmP2_->setAxisTitle("Time (ns)",2);
292  meZdcEneTEmP3_ = ib.book2D("PZDC EM3 Energy vs Time","Energy EM mod P3 vs Time", 4000, 0., 8000., 300, 0., 600. );
293  meZdcEneTEmP3_->setAxisTitle("Energy (GeV)",1);
294  meZdcEneTEmP3_->setAxisTitle("Time (ns)",2);
296  meZdcEneTEmP4_ = ib.book2D("PZDC EM4 Energy vs Time","Energy EM mod P4 vs Time", 4000, 0., 8000., 300, 0., 600. );
297  meZdcEneTEmP4_->setAxisTitle("Energy (GeV)",1);
298  meZdcEneTEmP4_->setAxisTitle("Time (ns)",2);
300  meZdcEneTEmP5_ = ib.book2D("PZDC EM5 Energy vs Time","Energy EM mod P5 vs Time", 4000, 0., 8000., 300, 0., 600. );
301  meZdcEneTEmP5_->setAxisTitle("Energy (GeV)",1);
302  meZdcEneTEmP5_->setAxisTitle("Time (ns)",2);
304  meZdcEneTHadP1_ = ib.book2D("PZDC HAD1 Energy vs Time","Energy HAD mod P1 vs Time", 4000, 0., 8000., 300, 0., 600. );
305  meZdcEneTHadP1_->setAxisTitle("Energy (GeV)",1);
306  meZdcEneTHadP1_->setAxisTitle("Time (ns)",2);
308  meZdcEneTHadP2_ = ib.book2D("PZDC HAD2 Energy vs Time","Energy HAD mod P2 vs Time", 4000, 0., 8000., 300, 0., 600. );
309  meZdcEneTHadP2_->setAxisTitle("Energy (GeV)",1);
310  meZdcEneTHadP2_->setAxisTitle("Time (ns)",2);
312  meZdcEneTHadP3_ = ib.book2D("PZDC HAD3 Energy vs Time","Energy HAD mod P3 vs Time", 4000, 0., 8000., 300, 0., 600. );
313  meZdcEneTHadP3_->setAxisTitle("Energy (GeV)",1);
314  meZdcEneTHadP3_->setAxisTitle("Time (ns)",2);
316  meZdcEneTHadP4_ = ib.book2D("PZDC HAD4 Energy vs Time","Energy HAD mod P4 vs Time", 4000, 0., 8000., 300, 0., 600. );
317  meZdcEneTHadP4_->setAxisTitle("Energy (GeV)",1);
318  meZdcEneTHadP4_->setAxisTitle("Time (ns)",2);
320  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/PZDC");
321  meZdcEneHadPTot_ = ib.book1D("PZDC EHAD","Total P-ZDC HAD Energy",10000,0.,10000.);
322  meZdcEneHadPTot_->setAxisTitle("Energy (GeV)",1);
323  meZdcEneHadPTot_->setAxisTitle("Counts",2);
325  meZdcEneEmPTot_ = ib.book1D("PZDC EEM","Total P-ZDC EM Energy",10000,0.,10000.);
326  meZdcEneEmPTot_->setAxisTitle("Energy (GeV)",1);
327  meZdcEneEmPTot_->setAxisTitle("Counts",2);
329  meZdcEnePTot_ = ib.book1D("PZDC ETOT","Total P-ZDC Energy",10000,0.,10000.);
330  meZdcEnePTot_->setAxisTitle("Energy (GeV)",1);
331  meZdcEnePTot_->setAxisTitle("Counts",2);
333  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/NZDC");
334  meZdcCorEEmNEHadN_= ib.book2D("NZDC EMvHAD","N-ZDC Energy EM vs HAD", 3000, 0., 3000.,3000, 0., 3000.);
335  meZdcCorEEmNEHadN_->setAxisTitle("EM Energy (GeV)",1);
336  meZdcCorEEmNEHadN_->setAxisTitle("HAD Energy (GeV)",2);
338  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/PZDC");
339  meZdcCorEEmPEHadP_= ib.book2D("PZDC EMvHAD","P-ZDC Energy EM vs HAD", 3000, 0., 3000.,3000, 0., 3000.);
340  meZdcCorEEmPEHadP_->setAxisTitle("EM Energy (GeV)",1);
341  meZdcCorEEmPEHadP_->setAxisTitle("HAD Energy (GeV)",2);
343  ib.setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS");
344  meZdcCorEtotNEtotP_ = ib.book2D("PZDC vs NZDC","Energy N-ZDC vs P-ZDC", 3000, 0., 3000.,3000, 0., 3000.);
345  meZdcCorEtotNEtotP_->setAxisTitle("N-ZDC Total Energy (GeV)",1);
346  meZdcCorEtotNEtotP_->setAxisTitle("P-ZDC Total Energy (GeV)",2);
348  meZdcEneTot_ = ib.book1D("ETOT ZDCs","Total Energy ZDCs",3000,0.,3000.);
349  meZdcEneTot_->setAxisTitle("Counts",2);
350  meZdcEneTot_->setAxisTitle("Energy (GeV)",1);
352 
353 
354 
355 
357 
359  ib.setCurrentFolder("ZDCValidation/GenParticles/Forward");
362  genpart_Pi0F = ib.book2D("Pi0_Forward","Forward Generated Pi0s",200,7.5,13,100,-3.15,3.15);
363  // genpart_Pi0F = ib.bookProfile2D("blah","balh",200,4.5,7,100,-3.15,3.15,2000,0,3000,"s");
364  genpart_Pi0F->setAxisTitle("Eta",1);
365  genpart_Pi0F->setAxisTitle("Phi (radians)",2);
366  genpart_Pi0F->setAxisTitle("Energy (GeV)",3);
367  genpart_Pi0F->getTH2F()->SetOption("lego2z,prof");
368  genpart_Pi0F->getTH2F()->SetTitleOffset(1.4,"x");
369  genpart_Pi0F->getTH2F()->SetTitleOffset(1.4,"y");
372  genpart_NeutF = ib.book2D("Neutron_Forward","Forward Generated Neutrons",200,7.5,13,100,-3.15,3.15);
373  genpart_NeutF->setAxisTitle("Eta",1);
374  genpart_NeutF->setAxisTitle("Phi (radians)",2);
375  genpart_NeutF->setAxisTitle("Energy (GeV)",3);
376  genpart_NeutF->getTH2F()->SetOption("lego2z,prof");
377  genpart_NeutF->getTH2F()->SetTitleOffset(1.4,"x");
378  genpart_NeutF->getTH2F()->SetTitleOffset(1.4,"y");
381  genpart_GammaF = ib.book2D("Gamma_Forward","Forward Generated Gammas",200,7.5,13,100,-3.15,3.15);
382  genpart_GammaF->setAxisTitle("Eta",1);
383  genpart_GammaF->setAxisTitle("Phi (radians)",2);
384  genpart_GammaF->setAxisTitle("Energy (GeV)",3);
385  genpart_GammaF->getTH2F()->SetOption("lego2z,prof");
386  genpart_GammaF->getTH2F()->SetTitleOffset(1.4,"x");
387  genpart_GammaF->getTH2F()->SetTitleOffset(1.4,"y");
390 genpart_Pi0F_energydist = ib.book1D("Pi0_Forward_EDistribution","Gen-Level Forward Pi0 Energy",1500,0,1500);
391  genpart_Pi0F_energydist->setAxisTitle("Energy (GeV)",1);
395  genpart_NeutF_energydist = ib.book1D("N_Forward_EDistribution","Gen-Level Forward Neutron Energy",1500,0,1500);
396  genpart_NeutF_energydist->setAxisTitle("Energy (GeV)",1);
400  genpart_GammaF_energydist = ib.book1D("Gamma_Forward_EDistribution","Gen-Level Fowarad Gamma Energy",1500,0,1500);
401  genpart_GammaF_energydist->setAxisTitle("Energy (GeV)",1);
404  ib.setCurrentFolder("ZDCValidation/GenParticles/Backward");
407  genpart_Pi0B = ib.book2D("Pi0_Backward","Backward Generated Pi0s",1000,-13,-7.5,100,-3.15,3.15);
408  genpart_Pi0B->setAxisTitle("Eta",1);
409  genpart_Pi0B->setAxisTitle("Phi (radians)",2);
410  genpart_Pi0B->setAxisTitle("Energy (GeV)",3);
411  genpart_Pi0B->getTH2F()->SetOption("lego2z,prof");
412  genpart_Pi0B->getTH2F()->SetTitleOffset(1.4,"x");
413  genpart_Pi0B->getTH2F()->SetTitleOffset(1.4,"y");
416  genpart_NeutB = ib.book2D("Neutron_Backward","Backward Generated Neutrons",1000,-13,-7.5,100,-3.15,3.15);
417  genpart_NeutB->setAxisTitle("Eta",1);
418  genpart_NeutB->setAxisTitle("Phi (radians)",2);
419  genpart_NeutB->setAxisTitle("Energy (GeV)",3);
420  genpart_NeutB->getTH2F()->SetOption("lego2z,prof");
421  genpart_NeutB->getTH2F()->SetTitleOffset(1.4,"x");
422  genpart_NeutB->getTH2F()->SetTitleOffset(1.4,"y");
425  genpart_GammaB = ib.book2D("Gamma_Backward","Backward Generated Gammas",1000,-13,-7.5,100,-3.15,3.15);
426  genpart_GammaB->setAxisTitle("Eta",1);
427  genpart_GammaB->setAxisTitle("Phi (radians)",2);
428  genpart_GammaB->setAxisTitle("Energy (GeV)",3);
429  genpart_GammaB->getTH2F()->SetOption("lego2z,prof");
430  genpart_GammaB->getTH2F()->SetTitleOffset(1.4,"x");
431  genpart_GammaB->getTH2F()->SetTitleOffset(1.4,"y");
435  genpart_Pi0B_energydist = ib.book1D("Pi0_Backward_EDistribution","Gen-Level Backward Pi0 Energy",1500,0,1500);
436  genpart_Pi0B_energydist->setAxisTitle("Energy (GeV)",1);
440  genpart_NeutB_energydist = ib.book1D("N_Backward_EDistribution","Gen-Level Foward Neutron Energy",1500,0,1500);
441  genpart_NeutB_energydist->setAxisTitle("Energy (GeV)",1);
445  genpart_GammaB_energydist = ib.book1D("Gamma_Backward_EDistribution","Gen-Level Backward Gamma Energy",1500,0,1500);
446  genpart_GammaB_energydist->setAxisTitle("Energy (GeV)",1);
449 
450  }
451 }
452 
453 // let's see if this breaks anything
454 /*void ZdcSimHitStudy::endJob() {
455  if (dbe_ && outFile_.size() > 0) dbe_->save(outFile_);
456 }*/
457 
458 //void ZdcSimHitStudy::analyze(const edm::Event& e, const edm::EventSetup& ) {
461 
462  using namespace edm;
463  bool gotGenParticles=true;
464 
465 
467 
468  if (!(iEvent.getByToken(tok_gen_,genhandle)))
469  {
470  gotGenParticles=false; //this is the same kind of boolean except for the genparticles collection
471  }
472  if (!(genhandle.isValid()))
473  {
474  gotGenParticles=false;
475  }
476 
477 
478  //Handle<edm::PCaloHitContainer> zdcsimhandle;
479 
480 
482 
483 
484  if (gotGenParticles==true){ //if the boolean was able to find the leaf "genparticles" then do this
485  for (reco::GenParticleCollection::const_iterator gen = genhandle->begin();
486  gen!=genhandle->end();
487  ++gen) //here we iterate over all generated particles
488  {
489  // double energy=gen->energy();
490  reco::GenParticle thisParticle = (reco::GenParticle)(*gen); //get the particle "gen" points to
491  double energy_2= thisParticle.energy(); //here I grab some of the attributes of the generated particle....like its energy, its phi and its eta and what kind of particle it is
492  double gen_phi = thisParticle.phi();
493  double gen_eta = thisParticle.eta();
494  int gen_id = thisParticle.pdgId();
495 
496  if (gen_id==111){ //here i require a pi0
497  if (gen_eta>8.3){ //eta requirement
498 
500 //# IMPORTANT IMPORTANT IMPORTANT IMPORTANT #
501 //# The real eta of the ZDC is |eta| > 8.3, I have only changed it here to 3 because#
502 //# in the PG simulation the ZDC is at an eta of about 4.5-7, in the real GEANT the #
503 //# ZDC is in its appropriate place at the very foward region...please edit this if #
504 //# looking at MinBias data or the like #
505 //# #
506 //# IMPORTANT IMPORTANT IMPORTANT IMPORTANT #
508 
509 
510 
511  genpart_Pi0F->Fill(gen_eta,gen_phi,energy_2); //fill the lego plot
512  genpart_Pi0F_energydist->Fill(energy_2); //fill the 1D distribution
513  }
514  if (gen_eta<-8.3){ //neg eta requirement
515  genpart_Pi0B->Fill(gen_eta,gen_phi,energy_2);
516  genpart_Pi0B_energydist->Fill(energy_2);
517  }
518  }
519  if (gen_id==2112){ //require neutron
520  if (gen_eta>8.3){
521  genpart_NeutF->Fill(gen_eta,gen_phi,energy_2);
522  genpart_NeutF_energydist->Fill(energy_2);
523  }
524  if (gen_eta<-8.3){
525  genpart_NeutB->Fill(gen_eta,gen_phi,energy_2);
526  genpart_NeutB_energydist->Fill(energy_2);
527  }
528  }
529 
530  if (gen_id==22){ //require gamma
531  if (gen_eta>8.3){
532  genpart_GammaF->Fill(gen_eta,gen_phi,energy_2);
533  genpart_GammaF_energydist->Fill(energy_2);
534  }
535  if (gen_eta<-8.3){
536  genpart_GammaB->Fill(gen_eta,gen_phi,energy_2);
537  genpart_GammaB_energydist->Fill(energy_2);
538  }
539  }
540 
541  } //end of GEN loop
542  }
543 
544 
545 
547 
548 //Below is the old script which I will comment later
549 
550 
551 
552  LogDebug("ZdcSimHitStudy")
553  //std::cout
554  //std::cout
555  << "Run = " << iEvent.id().run() << " Event = "
556  << iEvent.id().event();
557 /* << "Run = " << e.id().run() << " Event = "
558  << e.id().event();*/
559  //std::cout<<std::endl;
560 
561  std::vector<PCaloHit> caloHits;
563 
564  bool getHits = false;
565  if (checkHit_) {
566  iEvent.getByToken(tok_hits_,hitsZdc);
567  if (hitsZdc.isValid()) getHits = true;
568  }
569 
570  LogDebug("ZdcSim") << "ZdcValidation: Input flags Hits " << getHits;
571 
572  if (getHits) {
573  caloHits.insert(caloHits.end(),hitsZdc->begin(),hitsZdc->end());
574  LogDebug("ZdcSimHitStudy")
575  //std::cout
576  << "ZdcValidation: Hit buffer "
577  << caloHits.size();
578  //<< std::endl;
579  analyzeHits (caloHits);
580  }
581 }
582 
583 void ZdcSimHitStudy::analyzeHits(std::vector<PCaloHit>& hits){
584  int nHit = hits.size();
585  int nZdcEM = 0, nZdcHad = 0, nZdcLum = 0;
586  int nBad1=0, nBad2=0, nBad=0;
587  std::vector<double> encontZdcEM(140, 0.);
588  std::vector<double> encontZdcHad(140, 0.);
589  double entotZdcEM = 0;
590  double entotZdcHad = 0;
591 
592  enetotEmN = 0;
593  enetotHadN = 0.;
594  enetotN = 0;
595  enetotEmP = 0;
596  enetotHadP = 0;
597  enetotP = 0;
598  enetot = 0;
599 
600  for (int i=0; i<nHit; i++) {
601  double energy = hits[i].energy();
602  double log10en = log10(energy);
603  int log10i = int( (log10en+10.)*10. );
604  double time = hits[i].time();
605  unsigned int id_ = hits[i].id();
606  HcalZDCDetId id = HcalZDCDetId(id_);
607  int det = id.det();
608  int side = id.zside();
609  int section = id.section();
610  int channel = id.channel();
611 
612  FillHitValHist(side,section,channel,energy,time);
613 
614 
615  LogDebug("ZdcSimHitStudy")
616  //std::cout
617  << "Hit[" << i << "] ID " << std::hex << id_
618  << std::dec <<" DetID "<<id
619  << " Det "<< det << " side "<< side
620  << " Section " << section
621  << " channel "<< channel
622  << " E " << energy
623  << " time \n" << time;
624  //<<std::endl;
625 
626  if(det == 5) { // Check DetId.h
627  if(section == HcalZDCDetId::EM)nZdcEM++;
628  else if(section == HcalZDCDetId::HAD)nZdcHad++;
629  else if(section == HcalZDCDetId::LUM)nZdcLum++;
630  else { nBad++; nBad2++;}
631  } else { nBad++; nBad1++;}
632 
633  meZdcDetectHit_->Fill(double(det));
634  if (det == 5) {
635  meZdcSideHit_->Fill(double(side));
636  meZdcSectionHit_->Fill(double(section));
637  meZdcChannelHit_->Fill(double(channel));
638  meZdcEnergyHit_->Fill(energy);
639  if(section == HcalZDCDetId::EM){
640  meZdcEMEnergyHit_->Fill(energy);
641  meZdcEEMCh_->Fill(energy,channel);
642  if( log10i >=0 && log10i < 140 )encontZdcEM[log10i] += energy;
643  entotZdcEM += energy;
644  }
645  if(section == HcalZDCDetId::HAD){
646  meZdcHadEnergyHit_->Fill(energy);
647  meZdcEHadCh_->Fill(energy,channel);
648  if( log10i >=0 && log10i < 140 )encontZdcHad[log10i] += energy;
649  entotZdcHad += energy;
650  }
651  meZdcTimeHit_->Fill(time);
652  meZdcTimeWHit_->Fill(double(time),energy);
653  meZdc10Ene_->Fill(log10en);
654  meZdcETime_->Fill(energy, double(time));
655  }
656  }
657 
658  if( entotZdcEM != 0 ) for( int i=0; i<140; i++ ) meZdcEML10EneP_->Fill( -10.+(float(i)+0.5)/10., encontZdcEM[i]/entotZdcEM);
659  if( entotZdcHad != 0 ) for( int i=0; i<140; i++ ) meZdcHadL10EneP_->Fill( -10.+(float(i)+0.5)/10.,encontZdcHad[i]/entotZdcHad);
660 
661  if ( nHit>0) {
662  meAllZdcNHit_->Fill(double(nHit));
663  meBadZdcDetHit_->Fill(double(nBad1));
664  meBadZdcSecHit_->Fill(double(nBad2));
665  meBadZdcIdHit_->Fill(double(nBad));
666  meZdcNHitEM_->Fill(double(nZdcEM));
667  meZdcNHitHad_->Fill(double(nZdcHad));
668  meZdcNHitLum_->Fill(double(nZdcLum));
679  }
680  LogDebug("HcalSimHitStudy")
681  //std::cout
682  <<"HcalSimHitStudy::analyzeHits: Had " << nZdcHad
683  << " EM "<< nZdcEM
684  << " Bad " << nBad << " All " << nHit;
685  //<<std::endl;
686 }
687 
688 int ZdcSimHitStudy::FillHitValHist(int side,int section,int channel,double energy,double time){
689  enetot += enetot;
690  if(side == -1){
691  enetotN += energy;
692  if(section == HcalZDCDetId::EM){
693  enetotEmN += energy;
694  switch(channel){
695  case 1 :
696  meZdcEneEmN1_->Fill(energy);
697  meZdcEneTEmN1_->Fill(energy,time);
698  break;
699  case 2 :
700  meZdcEneEmN2_->Fill(energy);
701  meZdcEneTEmN2_->Fill(energy,time);
702  break;
703  case 3 :
704  meZdcEneEmN3_->Fill(energy);
705  meZdcEneTEmN3_->Fill(energy,time);
706  break;
707  case 4 :
708  meZdcEneEmN4_->Fill(energy);
709  meZdcEneTEmN4_->Fill(energy,time);
710  break;
711  case 5 :
712  meZdcEneEmN4_->Fill(energy);
713  meZdcEneTEmN4_->Fill(energy,time);
714  break;
715  }
716  }
717  if(section == HcalZDCDetId::HAD){
718  enetotHadN += energy;
719  switch(channel){
720  case 1 :
721  meZdcEneHadN1_->Fill(energy);
722  meZdcEneTHadN1_->Fill(energy,time);
723  break;
724  case 2 :
725  meZdcEneHadN2_->Fill(energy);
726  meZdcEneTHadN2_->Fill(energy,time);
727  break;
728  case 3 :
729  meZdcEneHadN3_->Fill(energy);
730  meZdcEneTHadN3_->Fill(energy,time);
731  break;
732  case 4 :
733  meZdcEneHadN4_->Fill(energy);
734  meZdcEneTHadN4_->Fill(energy,time);
735  break;
736  }
737  }
738  }
739  if(side == 1){
740  enetotP += energy;
741  if(section == HcalZDCDetId::EM){
742  enetotEmP += energy;
743  switch(channel){
744  case 1 :
745  meZdcEneEmP1_->Fill(energy);
746  meZdcEneTEmP1_->Fill(energy,time);
747  break;
748  case 2 :
749  meZdcEneEmP2_->Fill(energy);
750  meZdcEneTEmP2_->Fill(energy,time);
751  break;
752  case 3 :
753  meZdcEneEmP3_->Fill(energy);
754  meZdcEneTEmP3_->Fill(energy,time);
755  break;
756  case 4 :
757  meZdcEneEmP4_->Fill(energy);
758  meZdcEneTEmP4_->Fill(energy,time);
759  break;
760  case 5 :
761  meZdcEneEmP4_->Fill(energy);
762  meZdcEneTEmP4_->Fill(energy,time);
763  break;
764  }
765  }
766  if(section == HcalZDCDetId::HAD){
767  enetotHadP += energy;
768  switch(channel){
769  case 1 :
770  meZdcEneHadP1_->Fill(energy);
771  meZdcEneTHadP1_->Fill(energy,time);
772  break;
773  case 2 :
774  meZdcEneHadP2_->Fill(energy);
775  meZdcEneTHadP2_->Fill(energy,time);
776  break;
777  case 3 :
778  meZdcEneHadP3_->Fill(energy);
779  meZdcEneTHadP3_->Fill(energy,time);
780  break;
781  case 4 :
782  meZdcEneHadP4_->Fill(energy);
783  meZdcEneTHadP4_->Fill(energy,time);
784  break;
785  }
786  }
787  }
788  return 0;
789 }
790 
791 
792 
794 {
795 }
796 
797 
798 
799 
800 
801 
802 
803 
804 
805 
806 
807 
#define LogDebug(id)
RunNumber_t run() const
Definition: EventID.h:39
MonitorElement * meZdcEneTHadP3_
MonitorElement * meZdcEnergyHit_
EventNumber_t event() const
Definition: EventID.h:41
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * meZdcEneTEmN1_
int i
Definition: DBlmapReader.cc:9
virtual int pdgId() const
PDG identifier.
MonitorElement * genpart_NeutB
void analyzeHits(std::vector< PCaloHit > &)
int ib
Definition: cuy.py:660
MonitorElement * genpart_Pi0F
MonitorElement * meZdcEneTEmP1_
MonitorElement * meZdcHadL10EneP_
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:157
MonitorElement * meZdcEneEmP3_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:446
MonitorElement * meZdcEneEmPTot_
MonitorElement * meZdcEneEmN1_
virtual float phi() const
momentum azimuthal angle
MonitorElement * meZdcEneTEmP4_
MonitorElement * meZdcEneHadN1_
MonitorElement * meZdcCorEEmNEHadN_
MonitorElement * meZdcEneEmN4_
MonitorElement * meZdcEneTHadN4_
MonitorElement * meZdcEneEmN5_
std::string outFile_
MonitorElement * meAllZdcNHit_
MonitorElement * genpart_Pi0F_energydist
MonitorElement * meZdcEneTEmN2_
MonitorElement * meZdcEneHadN4_
MonitorElement * genpart_NeutF
MonitorElement * meZdcEneTHadN2_
MonitorElement * genpart_Pi0B
void Fill(long long x)
MonitorElement * meZdcEneEmNTot_
MonitorElement * meZdcChannelHit_
MonitorElement * meZdcEneEmP2_
MonitorElement * meZdcEneHadP1_
MonitorElement * meZdcEML10EneP_
MonitorElement * meZdcEneTEmN5_
MonitorElement * meZdcEneEmN3_
MonitorElement * meZdcNHitHad_
MonitorElement * meBadZdcDetHit_
ZdcSimHitStudy(const edm::ParameterSet &ps)
virtual double energy() const
energy
int iEvent
Definition: GenABIO.cc:230
MonitorElement * genpart_GammaB_energydist
MonitorElement * meZdcEneTEmP5_
edm::EDGetTokenT< edm::PCaloHitContainer > tok_hits_
MonitorElement * meZdcEnePTot_
MonitorElement * meZdcEneTEmN4_
MonitorElement * meZdcCorEEmPEHadP_
MonitorElement * meZdcEneTHadP2_
virtual float eta() const
momentum pseudorapidity
MonitorElement * genpart_GammaF_energydist
MonitorElement * meZdcSideHit_
MonitorElement * meZdcEneHadN3_
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
MonitorElement * meZdcEneEmN2_
MonitorElement * meZdcEneTHadN1_
MonitorElement * meZdcEneTEmP3_
MonitorElement * genpart_NeutF_energydist
MonitorElement * meZdcDetectHit_
MonitorElement * meZdc10Ene_
edm::EDGetTokenT< reco::GenParticleCollection > tok_gen_
MonitorElement * meZdcEneHadP4_
std::string zdcHits
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
void analyze(const edm::Event &e, const edm::EventSetup &c)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
MonitorElement * meZdcTimeHit_
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
MonitorElement * meBadZdcIdHit_
MonitorElement * meZdcEneTHadP4_
std::string g4Label
MonitorElement * meZdcEneHadNTot_
MonitorElement * genpart_NeutB_energydist
MonitorElement * meZdcCorEtotNEtotP_
MonitorElement * meZdcEneHadP2_
MonitorElement * meZdcEneEmP4_
MonitorElement * meZdcHadEnergyHit_
MonitorElement * genpart_Pi0B_energydist
MonitorElement * meZdcEneEmP5_
edm::EventID id() const
Definition: EventBase.h:56
void endRun(const edm::Run &run, const edm::EventSetup &c)
MonitorElement * meZdcEneTEmP2_
MonitorElement * meZdcSectionHit_
MonitorElement * meZdcEneNTot_
MonitorElement * meZdcEneHadN2_
MonitorElement * meZdcEneHadPTot_
MonitorElement * meZdcEEMCh_
TH2F * getTH2F(void) const
MonitorElement * meZdcEneEmP1_
virtual void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &)
MonitorElement * meZdcNHitEM_
MonitorElement * meZdcEneTHadN3_
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * meZdcTimeWHit_
MonitorElement * meZdcEHadCh_
MonitorElement * meZdcETime_
Definition: Run.h:41
MonitorElement * meZdcEMEnergyHit_
MonitorElement * meZdcNHitLum_