00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00019
00020
00021
00022
00023
00024 #include "Validation/HcalHits/interface/ZdcSimHitStudy.h"
00025 #include "DataFormats/HcalDetId/interface/HcalZDCDetId.h"
00026
00027 #include "FWCore/Utilities/interface/Exception.h"
00028 #include "CLHEP/Units/GlobalSystemOfUnits.h"
00029
00030 ZdcSimHitStudy::ZdcSimHitStudy(const edm::ParameterSet& ps) {
00031
00032 g4Label = ps.getUntrackedParameter<std::string>("moduleLabel","g4SimHits");
00033 zdcHits = ps.getUntrackedParameter<std::string>("HitCollection","ZdcHits");
00034 outFile_ = ps.getUntrackedParameter<std::string>("outputFile", "zdcHitStudy.root");
00035 verbose_ = ps.getUntrackedParameter<bool>("Verbose", false);
00036 checkHit_= true;
00037
00038 edm::LogInfo("ZdcSimHitStudy")
00039
00040 << "Module Label: " << g4Label << " Hits: "
00041 << zdcHits << " / "<< checkHit_
00042 << " Output: " << outFile_;
00043
00044 dbe_ = edm::Service<DQMStore>().operator->();
00045 if (dbe_) {
00046 if (verbose_) {
00047 dbe_->setVerbose(1);
00048 sleep (3);
00049 dbe_->showDirStructure();
00050 } else {
00051 dbe_->setVerbose(0);
00052 }
00053 }
00054 }
00055
00056 ZdcSimHitStudy::~ZdcSimHitStudy() {}
00057
00058 void ZdcSimHitStudy::beginJob() {
00059 if (dbe_) {
00060 dbe_->setCurrentFolder("ZDCValidation");
00061
00063
00064
00065
00066
00068
00069
00070 if (checkHit_) {
00072 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits");
00073 meAllZdcNHit_ = dbe_->book1D("ZDC Hits","Number of All Hits in ZDC",100,0.,100.);
00074 meAllZdcNHit_->setAxisTitle("Total Hits",1);
00075 meAllZdcNHit_->setAxisTitle("Counts",2);
00077 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/Debug_Helper");
00078 meBadZdcDetHit_= dbe_->book1D("Hiits with the wrong Det","Hits with wrong Det in ZDC",100,0.,100.);
00079 meBadZdcDetHit_->setAxisTitle("Wrong Hits",1);
00080 meBadZdcDetHit_->setAxisTitle("Counts",2);
00082 meBadZdcSecHit_= dbe_->book1D("Wrong Section Hits","Hits with wrong Section in ZDC",100,0.,100.);
00083 meBadZdcSecHit_->setAxisTitle("Hits in wrong section",1);
00084 meBadZdcSecHit_->setAxisTitle("Counts",2);
00086 meBadZdcIdHit_ = dbe_->book1D("Wrong_ID_Hits","Hits with wrong ID in ZDC",100,0.,100.);
00087 meBadZdcIdHit_->setAxisTitle("Hits with wrong ID",1);
00088 meBadZdcIdHit_->setAxisTitle("Counts",2);
00090 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/BasicHitInfo");
00091 meZdcNHitEM_ = dbe_->book1D("Hits in EM","Number of Hits in ZDC EM",100,0.,100.);
00092 meZdcNHitEM_->setAxisTitle("EM Hits",1);
00093 meZdcNHitEM_->setAxisTitle("Counts",2);
00095 meZdcNHitHad_ = dbe_->book1D("Hits in HAD","Number of Hits in ZDC Had",100,0.,100.);
00096 meZdcNHitHad_->setAxisTitle("HAD Hits",1);
00097 meZdcNHitHad_->setAxisTitle("Counts",2);
00099 meZdcNHitLum_ = dbe_->book1D("Hits in LUM","Number of Hits in ZDC Lum",100,0.,100.);
00100 meZdcNHitLum_->setAxisTitle("LUM Hits",1);
00101 meZdcNHitLum_->setAxisTitle("Counts",2);
00103 meZdcDetectHit_= dbe_->book1D("Calo Detector ID","Calo Detector ID",50,0.,50.);
00104 meZdcDetectHit_->setAxisTitle("Detector Hits",1);
00105 meZdcDetectHit_->setAxisTitle("Counts",2);
00107 meZdcSideHit_ = dbe_->book1D("ZDC Side","Side in ZDC",4,-2,2.);
00108 meZdcSideHit_->setAxisTitle("ZDC Side",1);
00109 meZdcSideHit_->setAxisTitle("Counts",2);
00111 meZdcSectionHit_ = dbe_->book1D("ZDC Section","Section in ZDC",4,0.,4.);
00112 meZdcSectionHit_->setAxisTitle("ZDC Section",1);
00113 meZdcSectionHit_->setAxisTitle("Counts",2);
00115 meZdcChannelHit_ = dbe_->book1D("ZDC Channel","Channel in ZDC",10,0.,10.);
00116 meZdcChannelHit_->setAxisTitle("ZDC Channel",1);
00117 meZdcChannelHit_->setAxisTitle("Counts",2);
00119 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits/");
00120 meZdcEnergyHit_= dbe_->book1D("Hit Energy","Hits Energy",4000,0.,8000.);
00121 meZdcEnergyHit_->setAxisTitle("Counts",2);
00122 meZdcEnergyHit_->setAxisTitle("Energy (GeV)",1);
00124 meZdcHadEnergyHit_= dbe_->book1D("Hit Energy HAD","Hits Energy in Had Section",4000,0.,8000.);
00125 meZdcHadEnergyHit_->setAxisTitle("Counts",2);
00126 meZdcHadEnergyHit_->setAxisTitle("Energy (GeV)",1);
00128 meZdcEMEnergyHit_ = dbe_->book1D("Hit Energy EM","Hits Energy in EM Section",4000,0.,8000.);
00129 meZdcEMEnergyHit_->setAxisTitle("Counts",2);
00130 meZdcEMEnergyHit_->setAxisTitle("Energy (GeV)",1);
00132 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/BasicHitInfo");
00133 meZdcTimeHit_ = dbe_->book1D("Time in ZDC","Time in ZDC",300,0.,600.);
00134 meZdcTimeHit_->setAxisTitle("Time (ns)",1);
00135 meZdcTimeHit_->setAxisTitle("Counts",2);
00137 meZdcTimeWHit_ = dbe_->book1D("Energy Weighted Time in ZDC","Time in ZDC (E wtd)", 300,0.,600.);
00138 meZdcTimeWHit_->setAxisTitle("Time (ns)",1);
00139 meZdcTimeWHit_->setAxisTitle("Counts",2);
00141 meZdc10Ene_ = dbe_->book1D("ZDC Log(E)","Log10Energy in ZDC", 140, -20., 20. );
00142 meZdc10Ene_->setAxisTitle("Log(E) (GeV)",1);
00143 meZdc10Ene_->setAxisTitle("Counts",2);
00145 meZdcHadL10EneP_ = dbe_->bookProfile("Log(EHAD) vs Contribution","Log10Energy in Had ZDC vs Hit contribution", 140, -1., 20., 100, 0., 1. );
00146 meZdcHadL10EneP_->setAxisTitle("Log(EHAD) (GeV)",1);
00147 meZdcHadL10EneP_->setAxisTitle("Counts",2);
00149 meZdcEML10EneP_ = dbe_->bookProfile("Log(EEM) vs Contribution","Log10Energy in EM ZDC vs Hit contribution", 140, -1., 20., 100, 0., 1. );
00150 meZdcEML10EneP_->setAxisTitle("Log(EEM) (GeV)",1);
00151 meZdcEML10EneP_->setAxisTitle("Counts",2);
00153 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits");
00154 meZdcEHadCh_ = dbe_->book2D("ZDC EHAD vs Channel","ZDC Had Section Energy vs Channel", 4000, 0., 8000., 6, 0., 6. );
00155 meZdcEHadCh_->setAxisTitle("Hadronic Channel Number",2);
00156 meZdcEHadCh_->setAxisTitle("Energy (GeV)",1);
00158 meZdcEEMCh_ = dbe_->book2D("ZDC EEM vs Channel","ZDC EM Section Energy vs Channel", 4000, 0., 8000., 6, 0., 6. );
00159 meZdcEEMCh_->setAxisTitle("EM Channel Number",2);
00160 meZdcEEMCh_->setAxisTitle("Energy (GeV)",1);
00162 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/BasicHitInfo");
00163 meZdcETime_ = dbe_->book2D("E vs T","Hits ZDC Energy vs Time", 4000, 0., 8000., 300, 0., 600. );
00164 meZdcETime_->setAxisTitle("Energy (GeV)",1);
00165 meZdcETime_->setAxisTitle("Time (ns)",2);
00167 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/Individual_Channels/NZDC");
00168 meZdcEneEmN1_ = dbe_->book1D("NZDC EM1 Energy","Energy EM module N1",4000,0.,8000.);
00169 meZdcEneEmN1_->setAxisTitle("Energy (GeV)",1);
00170 meZdcEneEmN1_->setAxisTitle("Counts",2);
00172 meZdcEneEmN2_ = dbe_->book1D("NZDC EM2 Energy","Energy EM module N2",4000,0.,8000.);
00173 meZdcEneEmN2_->setAxisTitle("Energy (GeV)",1);
00174 meZdcEneEmN2_->setAxisTitle("Counts",2);
00176 meZdcEneEmN3_ = dbe_->book1D("NZDC EM3 Energy","Energy EM module N3",4000,0.,8000.);
00177 meZdcEneEmN3_->setAxisTitle("Energy (GeV)",1);
00178 meZdcEneEmN3_->setAxisTitle("Counts",2);
00180 meZdcEneEmN4_ = dbe_->book1D("NZDC EM4 Energy","Energy EM module N4",4000,0.,8000.);
00181 meZdcEneEmN4_->setAxisTitle("Energy (GeV)",1);
00182 meZdcEneEmN4_->setAxisTitle("Counts",2);
00184 meZdcEneEmN5_ = dbe_->book1D("NZDC EM5 Energy","Energy EM module N5",4000,0.,8000.);
00185 meZdcEneEmN5_->setAxisTitle("Energy (GeV)",1);
00186 meZdcEneEmN5_->setAxisTitle("Counts",2);
00188 meZdcEneHadN1_ = dbe_->book1D("NZDC HAD1 Energy","Energy HAD module N1",4000,0.,8000.);
00189 meZdcEneHadN1_->setAxisTitle("Energy (GeV)",1);
00190 meZdcEneHadN1_->setAxisTitle("Counts",2);
00192 meZdcEneHadN2_ = dbe_->book1D("NZDC HAD2 Energy","Energy HAD module N2",4000,0.,8000.);
00193 meZdcEneHadN2_->setAxisTitle("Energy (GeV)",1);
00194 meZdcEneHadN2_->setAxisTitle("Counts",2);
00196 meZdcEneHadN3_ = dbe_->book1D("NZDC HAD3 Energy","Energy HAD module N3",4000,0.,8000.);
00197 meZdcEneHadN3_->setAxisTitle("Energy (GeV)",1);
00198 meZdcEneHadN3_->setAxisTitle("Counts",2);
00200 meZdcEneHadN4_ = dbe_->book1D("NZDC HAD4 Energy","Energy HAD module N4",4000,0.,8000.);
00201 meZdcEneHadN4_->setAxisTitle("Energy (GeV)",1);
00202 meZdcEneHadN4_->setAxisTitle("Counts",2);
00204 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/Individual_ChannelvsTime/NZDC");
00205 meZdcEneTEmN1_ = dbe_->book2D("NZDC EM1 Energy vs Time","Energy EM mod N1 vs Time", 4000, 0., 8000., 300, 0., 600. );
00206 meZdcEneTEmN1_->setAxisTitle("Energy (GeV)",1);
00207 meZdcEneTEmN1_->setAxisTitle("Time (ns)",2);
00209 meZdcEneTEmN2_ = dbe_->book2D("NZDC EM2 Energy vs Time","Energy EM mod N2 vs Time", 4000, 0., 8000., 300, 0., 600. );
00210 meZdcEneTEmN2_->setAxisTitle("Energy (GeV)",1);
00211 meZdcEneTEmN2_->setAxisTitle("Time (ns)",2);
00213 meZdcEneTEmN3_ = dbe_->book2D("NZDC EM3 Energy vs Time","Energy EM mod N3 vs Time", 4000, 0., 8000., 300, 0., 600. );
00214 meZdcEneTEmN3_->setAxisTitle("Energy (GeV)",1);
00215 meZdcEneTEmN3_->setAxisTitle("Time (ns)",2);
00217 meZdcEneTEmN4_ = dbe_->book2D("NZDC EM4 Energy vs Time","Energy EM mod N4 vs Time", 4000, 0., 8000., 300, 0., 600. );
00218 meZdcEneTEmN4_->setAxisTitle("Energy (GeV)",1);
00219 meZdcEneTEmN4_->setAxisTitle("Time (ns)",2);
00221 meZdcEneTEmN5_ = dbe_->book2D("NZDC EM5 Energy vs Time","Energy EM mod N5 vs Time", 4000, 0., 8000., 300, 0., 600. );
00222 meZdcEneTEmN5_->setAxisTitle("Energy (GeV)",1);
00223 meZdcEneTEmN5_->setAxisTitle("Time (ns)",2);
00225 meZdcEneTHadN1_ = dbe_->book2D("NZDC HAD1 Energy vs Time","Energy HAD mod N1 vs Time", 4000, 0., 8000., 300, 0., 600. );
00226 meZdcEneTHadN1_->setAxisTitle("Energy (GeV)",1);
00227 meZdcEneTHadN1_->setAxisTitle("Time (ns)",2);
00229 meZdcEneTHadN2_ = dbe_->book2D("NZDC HAD2 Energy vs Time","Energy HAD mod N2 vs Time", 4000, 0., 8000., 300, 0., 600. );
00230 meZdcEneTHadN2_->setAxisTitle("Energy (GeV)",1);
00231 meZdcEneTHadN2_->setAxisTitle("Time (ns)",2);
00233 meZdcEneTHadN3_ = dbe_->book2D("NZDC HAD3 Energy vs Time","Energy HAD mod N3 vs Time", 4000, 0., 8000., 300, 0., 600. );
00234 meZdcEneTHadN3_->setAxisTitle("Energy (GeV)",1);
00235 meZdcEneTHadN3_->setAxisTitle("Time (ns)",2);
00237 meZdcEneTHadN4_ = dbe_->book2D("NZDC HAD4 Energy vs Time","Energy HAD mod N4 vs Time", 4000, 0., 8000., 300, 0., 600. );
00238 meZdcEneTHadN4_->setAxisTitle("Energy (GeV)",1);
00239 meZdcEneTHadN4_->setAxisTitle("Time (ns)",2);
00241 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/NZDC");
00242 meZdcEneHadNTot_ = dbe_->book1D("NZDC EHAD","Total N-ZDC HAD Energy",4000,0.,4000.);
00243 meZdcEneHadNTot_->setAxisTitle("Counts",2);
00244 meZdcEneHadNTot_->setAxisTitle("Energy (GeV)",1);
00246 meZdcEneEmNTot_ = dbe_->book1D("NZDC EEM","Total N-ZDC EM Energy",3000,0.,3000.);
00247 meZdcEneEmNTot_->setAxisTitle("Counts",2);
00248 meZdcEneEmNTot_->setAxisTitle("Energy (GeV)",1);
00250 meZdcEneNTot_ = dbe_->book1D("NZDC ETOT","Total N-ZDC Energy ",7000,0.,7000.);
00251 meZdcEneNTot_->setAxisTitle("Counts",2);
00252 meZdcEneNTot_->setAxisTitle("Energy (GeV)",1);
00254 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/Individual_Channels/PZDC");
00255 meZdcEneEmP1_ = dbe_->book1D("PZDC EM1 Energy","Energy EM module P1",3000,0.,3000.);
00256 meZdcEneEmP1_->setAxisTitle("Energy (GeV)",1);
00257 meZdcEneEmP1_->setAxisTitle("Counts",2);
00259 meZdcEneEmP2_ = dbe_->book1D("PZDC EM2 Energy","Energy EM module P2",3000,0.,3000.);
00260 meZdcEneEmP2_->setAxisTitle("Energy (GeV)",1);
00261 meZdcEneEmP2_->setAxisTitle("Counts",2);
00263 meZdcEneEmP3_ = dbe_->book1D("PZDC EM3 Energy","Energy EM module P3",3000,0.,3000.);
00264 meZdcEneEmP3_->setAxisTitle("Energy (GeV)",1);
00265 meZdcEneEmP3_->setAxisTitle("Counts",2);
00267 meZdcEneEmP4_ = dbe_->book1D("PZDC EM4 Energy","Energy EM module P4",3000,0.,3000.);
00268 meZdcEneEmP4_->setAxisTitle("Energy (GeV)",1);
00269 meZdcEneEmP4_->setAxisTitle("Counts",2);
00271 meZdcEneEmP5_ = dbe_->book1D("PZDC EM5 Energy","Energy EM module P5",3000,0.,3000.);
00272 meZdcEneEmP5_->setAxisTitle("Energy (GeV)",1);
00273 meZdcEneEmP5_->setAxisTitle("Counts",2);
00275 meZdcEneHadP1_ = dbe_->book1D("PZDC HAD1 Energy","Energy HAD module P1",3000,0.,3000.);
00276 meZdcEneHadP1_->setAxisTitle("Energy (GeV)",1);
00277 meZdcEneHadP1_->setAxisTitle("Counts",2);
00279 meZdcEneHadP2_ = dbe_->book1D("PZDC HAD2 Energy","Energy HAD module P2",3000,0.,3000.);
00280 meZdcEneHadP2_->setAxisTitle("Energy (GeV)",1);
00281 meZdcEneHadP2_->setAxisTitle("Counts",2);
00283 meZdcEneHadP3_ = dbe_->book1D("PZDC HAD3 Energy","Energy HAD module P3",3000,0.,3000.);
00284 meZdcEneHadP3_->setAxisTitle("Energy (GeV)",1);
00285 meZdcEneHadP3_->setAxisTitle("Counts",2);
00287 meZdcEneHadP4_ = dbe_->book1D("PZDC HAD4 Energy","Energy HAD module P4",3000,0.,3000.);
00288 meZdcEneHadP4_->setAxisTitle("Energy (GeV)",1);
00289 meZdcEneHadP4_->setAxisTitle("Counts",2);
00291 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits/Excess_Info/Individual_ChannelvsTime/PZDC");
00292 meZdcEneTEmP1_ = dbe_->book2D("PZDC EM1 Energy vs Time","Energy EM mod P1 vs Time", 4000, 0., 8000., 300, 0., 600. );
00293 meZdcEneTEmP1_->setAxisTitle("Energy (GeV)",1);
00294 meZdcEneTEmP1_->setAxisTitle("Time (ns)",2);
00296 meZdcEneTEmP2_ = dbe_->book2D("PZDC EM2 Energy vs Time","Energy EM mod P2 vs Time", 4000, 0., 8000., 300, 0., 600. );
00297 meZdcEneTEmP2_->setAxisTitle("Energy (GeV)",1);
00298 meZdcEneTEmP2_->setAxisTitle("Time (ns)",2);
00300 meZdcEneTEmP3_ = dbe_->book2D("PZDC EM3 Energy vs Time","Energy EM mod P3 vs Time", 4000, 0., 8000., 300, 0., 600. );
00301 meZdcEneTEmP3_->setAxisTitle("Energy (GeV)",1);
00302 meZdcEneTEmP3_->setAxisTitle("Time (ns)",2);
00304 meZdcEneTEmP4_ = dbe_->book2D("PZDC EM4 Energy vs Time","Energy EM mod P4 vs Time", 4000, 0., 8000., 300, 0., 600. );
00305 meZdcEneTEmP4_->setAxisTitle("Energy (GeV)",1);
00306 meZdcEneTEmP4_->setAxisTitle("Time (ns)",2);
00308 meZdcEneTEmP5_ = dbe_->book2D("PZDC EM5 Energy vs Time","Energy EM mod P5 vs Time", 4000, 0., 8000., 300, 0., 600. );
00309 meZdcEneTEmP5_->setAxisTitle("Energy (GeV)",1);
00310 meZdcEneTEmP5_->setAxisTitle("Time (ns)",2);
00312 meZdcEneTHadP1_ = dbe_->book2D("PZDC HAD1 Energy vs Time","Energy HAD mod P1 vs Time", 4000, 0., 8000., 300, 0., 600. );
00313 meZdcEneTHadP1_->setAxisTitle("Energy (GeV)",1);
00314 meZdcEneTHadP1_->setAxisTitle("Time (ns)",2);
00316 meZdcEneTHadP2_ = dbe_->book2D("PZDC HAD2 Energy vs Time","Energy HAD mod P2 vs Time", 4000, 0., 8000., 300, 0., 600. );
00317 meZdcEneTHadP2_->setAxisTitle("Energy (GeV)",1);
00318 meZdcEneTHadP2_->setAxisTitle("Time (ns)",2);
00320 meZdcEneTHadP3_ = dbe_->book2D("PZDC HAD3 Energy vs Time","Energy HAD mod P3 vs Time", 4000, 0., 8000., 300, 0., 600. );
00321 meZdcEneTHadP3_->setAxisTitle("Energy (GeV)",1);
00322 meZdcEneTHadP3_->setAxisTitle("Time (ns)",2);
00324 meZdcEneTHadP4_ = dbe_->book2D("PZDC HAD4 Energy vs Time","Energy HAD mod P4 vs Time", 4000, 0., 8000., 300, 0., 600. );
00325 meZdcEneTHadP4_->setAxisTitle("Energy (GeV)",1);
00326 meZdcEneTHadP4_->setAxisTitle("Time (ns)",2);
00328 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/PZDC");
00329 meZdcEneHadPTot_ = dbe_->book1D("PZDC EHAD","Total P-ZDC HAD Energy",10000,0.,10000.);
00330 meZdcEneHadPTot_->setAxisTitle("Energy (GeV)",1);
00331 meZdcEneHadPTot_->setAxisTitle("Counts",2);
00333 meZdcEneEmPTot_ = dbe_->book1D("PZDC EEM","Total P-ZDC EM Energy",10000,0.,10000.);
00334 meZdcEneEmPTot_->setAxisTitle("Energy (GeV)",1);
00335 meZdcEneEmPTot_->setAxisTitle("Counts",2);
00337 meZdcEnePTot_ = dbe_->book1D("PZDC ETOT","Total P-ZDC Energy",10000,0.,10000.);
00338 meZdcEnePTot_->setAxisTitle("Energy (GeV)",1);
00339 meZdcEnePTot_->setAxisTitle("Counts",2);
00341 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/NZDC");
00342 meZdcCorEEmNEHadN_= dbe_->book2D("NZDC EMvHAD","N-ZDC Energy EM vs HAD", 3000, 0., 3000.,3000, 0., 3000.);
00343 meZdcCorEEmNEHadN_->setAxisTitle("EM Energy (GeV)",1);
00344 meZdcCorEEmNEHadN_->setAxisTitle("HAD Energy (GeV)",2);
00346 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS/PZDC");
00347 meZdcCorEEmPEHadP_= dbe_->book2D("PZDC EMvHAD","P-ZDC Energy EM vs HAD", 3000, 0., 3000.,3000, 0., 3000.);
00348 meZdcCorEEmPEHadP_->setAxisTitle("EM Energy (GeV)",1);
00349 meZdcCorEEmPEHadP_->setAxisTitle("HAD Energy (GeV)",2);
00351 dbe_->setCurrentFolder("ZDCValidation/ZdcSimHits/ENERGY_SUMS");
00352 meZdcCorEtotNEtotP_ = dbe_->book2D("PZDC vs NZDC","Energy N-ZDC vs P-ZDC", 3000, 0., 3000.,3000, 0., 3000.);
00353 meZdcCorEtotNEtotP_->setAxisTitle("N-ZDC Total Energy (GeV)",1);
00354 meZdcCorEtotNEtotP_->setAxisTitle("P-ZDC Total Energy (GeV)",2);
00356 meZdcEneTot_ = dbe_->book1D("ETOT ZDCs","Total Energy ZDCs",3000,0.,3000.);
00357 meZdcEneTot_->setAxisTitle("Counts",2);
00358 meZdcEneTot_->setAxisTitle("Energy (GeV)",1);
00360
00361
00362
00363
00365
00367 dbe_->setCurrentFolder("ZDCValidation/GenParticles/Forward");
00370 genpart_Pi0F = dbe_->book2D("Pi0_Forward","Forward Generated Pi0s",200,7.5,13,100,-3.15,3.15);
00371
00372 genpart_Pi0F->setAxisTitle("Eta",1);
00373 genpart_Pi0F->setAxisTitle("Phi (radians)",2);
00374 genpart_Pi0F->setAxisTitle("Energy (GeV)",3);
00375 genpart_Pi0F->getTH2F()->SetOption("lego2z,prof");
00376 genpart_Pi0F->getTH2F()->SetTitleOffset(1.4,"x");
00377 genpart_Pi0F->getTH2F()->SetTitleOffset(1.4,"y");
00380 genpart_NeutF = dbe_->book2D("Neutron_Forward","Forward Generated Neutrons",200,7.5,13,100,-3.15,3.15);
00381 genpart_NeutF->setAxisTitle("Eta",1);
00382 genpart_NeutF->setAxisTitle("Phi (radians)",2);
00383 genpart_NeutF->setAxisTitle("Energy (GeV)",3);
00384 genpart_NeutF->getTH2F()->SetOption("lego2z,prof");
00385 genpart_NeutF->getTH2F()->SetTitleOffset(1.4,"x");
00386 genpart_NeutF->getTH2F()->SetTitleOffset(1.4,"y");
00389 genpart_GammaF = dbe_->book2D("Gamma_Forward","Forward Generated Gammas",200,7.5,13,100,-3.15,3.15);
00390 genpart_GammaF->setAxisTitle("Eta",1);
00391 genpart_GammaF->setAxisTitle("Phi (radians)",2);
00392 genpart_GammaF->setAxisTitle("Energy (GeV)",3);
00393 genpart_GammaF->getTH2F()->SetOption("lego2z,prof");
00394 genpart_GammaF->getTH2F()->SetTitleOffset(1.4,"x");
00395 genpart_GammaF->getTH2F()->SetTitleOffset(1.4,"y");
00398 genpart_Pi0F_energydist = dbe_->book1D("Pi0_Forward_EDistribution","Gen-Level Forward Pi0 Energy",1500,0,1500);
00399 genpart_Pi0F_energydist->setAxisTitle("Energy (GeV)",1);
00400 genpart_Pi0F_energydist->setAxisTitle("Counts",2);
00403 genpart_NeutF_energydist = dbe_->book1D("N_Forward_EDistribution","Gen-Level Forward Neutron Energy",1500,0,1500);
00404 genpart_NeutF_energydist->setAxisTitle("Energy (GeV)",1);
00405 genpart_NeutF_energydist->setAxisTitle("Counts",2);
00408 genpart_GammaF_energydist = dbe_->book1D("Gamma_Forward_EDistribution","Gen-Level Fowarad Gamma Energy",1500,0,1500);
00409 genpart_GammaF_energydist->setAxisTitle("Energy (GeV)",1);
00410 genpart_GammaF_energydist->setAxisTitle("Counts",2);
00412 dbe_->setCurrentFolder("ZDCValidation/GenParticles/Backward");
00415 genpart_Pi0B = dbe_->book2D("Pi0_Backward","Backward Generated Pi0s",1000,-13,-7.5,100,-3.15,3.15);
00416 genpart_Pi0B->setAxisTitle("Eta",1);
00417 genpart_Pi0B->setAxisTitle("Phi (radians)",2);
00418 genpart_Pi0B->setAxisTitle("Energy (GeV)",3);
00419 genpart_Pi0B->getTH2F()->SetOption("lego2z,prof");
00420 genpart_Pi0B->getTH2F()->SetTitleOffset(1.4,"x");
00421 genpart_Pi0B->getTH2F()->SetTitleOffset(1.4,"y");
00424 genpart_NeutB = dbe_->book2D("Neutron_Backward","Backward Generated Neutrons",1000,-13,-7.5,100,-3.15,3.15);
00425 genpart_NeutB->setAxisTitle("Eta",1);
00426 genpart_NeutB->setAxisTitle("Phi (radians)",2);
00427 genpart_NeutB->setAxisTitle("Energy (GeV)",3);
00428 genpart_NeutB->getTH2F()->SetOption("lego2z,prof");
00429 genpart_NeutB->getTH2F()->SetTitleOffset(1.4,"x");
00430 genpart_NeutB->getTH2F()->SetTitleOffset(1.4,"y");
00433 genpart_GammaB = dbe_->book2D("Gamma_Backward","Backward Generated Gammas",1000,-13,-7.5,100,-3.15,3.15);
00434 genpart_GammaB->setAxisTitle("Eta",1);
00435 genpart_GammaB->setAxisTitle("Phi (radians)",2);
00436 genpart_GammaB->setAxisTitle("Energy (GeV)",3);
00437 genpart_GammaB->getTH2F()->SetOption("lego2z,prof");
00438 genpart_GammaB->getTH2F()->SetTitleOffset(1.4,"x");
00439 genpart_GammaB->getTH2F()->SetTitleOffset(1.4,"y");
00443 genpart_Pi0B_energydist = dbe_->book1D("Pi0_Backward_EDistribution","Gen-Level Backward Pi0 Energy",1500,0,1500);
00444 genpart_Pi0B_energydist->setAxisTitle("Energy (GeV)",1);
00445 genpart_Pi0B_energydist->setAxisTitle("Counts",2);
00448 genpart_NeutB_energydist = dbe_->book1D("N_Backward_EDistribution","Gen-Level Foward Neutron Energy",1500,0,1500);
00449 genpart_NeutB_energydist->setAxisTitle("Energy (GeV)",1);
00450 genpart_NeutB_energydist->setAxisTitle("Counts",2);
00453 genpart_GammaB_energydist = dbe_->book1D("Gamma_Backward_EDistribution","Gen-Level Backward Gamma Energy",1500,0,1500);
00454 genpart_GammaB_energydist->setAxisTitle("Energy (GeV)",1);
00455 genpart_GammaB_energydist->setAxisTitle("Counts",2);
00457
00458
00459
00460
00461
00462 }
00463 }
00464 }
00465
00466 void ZdcSimHitStudy::endJob() {
00467 if (dbe_ && outFile_.size() > 0) dbe_->save(outFile_);
00468 }
00469
00470
00471 void ZdcSimHitStudy::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup ) {
00473
00474 using namespace edm;
00475 bool gotGenParticles=true;
00476
00477
00478 Handle<reco::GenParticleCollection> genhandle;
00479
00480 if (!(iEvent.getByLabel("genParticles",genhandle)))
00481 {
00482 gotGenParticles=false;
00483 }
00484 if (!(genhandle.isValid()))
00485 {
00486 gotGenParticles=false;
00487 }
00488
00489
00490
00491
00492
00493
00494
00495
00496
00498
00499
00500 if (gotGenParticles==true){
00501 for (reco::GenParticleCollection::const_iterator gen = genhandle->begin();
00502 gen!=genhandle->end();
00503 ++gen)
00504 {
00505
00506 reco::GenParticle thisParticle = (reco::GenParticle)(*gen);
00507 double energy_2= thisParticle.energy();
00508 double gen_phi = thisParticle.phi();
00509 double gen_eta = thisParticle.eta();
00510 int gen_id = thisParticle.pdgId();
00511
00512 if (gen_id==111){
00513 if (gen_eta>8.3){
00514
00516
00517
00518
00519
00520
00521
00522
00524
00525
00526
00527 genpart_Pi0F->Fill(gen_eta,gen_phi,energy_2);
00528 genpart_Pi0F_energydist->Fill(energy_2);
00529 }
00530 if (gen_eta<-8.3){
00531 genpart_Pi0B->Fill(gen_eta,gen_phi,energy_2);
00532 genpart_Pi0B_energydist->Fill(energy_2);
00533 }
00534 }
00535 if (gen_id==2112){
00536 if (gen_eta>8.3){
00537 genpart_NeutF->Fill(gen_eta,gen_phi,energy_2);
00538 genpart_NeutF_energydist->Fill(energy_2);
00539 }
00540 if (gen_eta<-8.3){
00541 genpart_NeutB->Fill(gen_eta,gen_phi,energy_2);
00542 genpart_NeutB_energydist->Fill(energy_2);
00543 }
00544 }
00545
00546 if (gen_id==22){
00547 if (gen_eta>8.3){
00548 genpart_GammaF->Fill(gen_eta,gen_phi,energy_2);
00549 genpart_GammaF_energydist->Fill(energy_2);
00550 }
00551 if (gen_eta<-8.3){
00552 genpart_GammaB->Fill(gen_eta,gen_phi,energy_2);
00553 genpart_GammaB_energydist->Fill(energy_2);
00554 }
00555 }
00556
00557 }
00558 }
00559
00560
00561
00563
00564
00565
00566
00567
00568 LogDebug("ZdcSimHitStudy")
00569
00570
00571 << "Run = " << iEvent.id().run() << " Event = "
00572 << iEvent.id().event();
00573
00574
00575
00576
00577 std::vector<PCaloHit> caloHits;
00578 edm::Handle<edm::PCaloHitContainer> hitsZdc;
00579
00580 bool getHits = false;
00581 if (checkHit_) {
00582 iEvent.getByLabel(g4Label,zdcHits,hitsZdc);
00583
00584 if (hitsZdc.isValid()) getHits = true;
00585 }
00586
00587 LogDebug("ZdcSim") << "ZdcValidation: Input flags Hits " << getHits;
00588
00589 if (getHits) {
00590 caloHits.insert(caloHits.end(),hitsZdc->begin(),hitsZdc->end());
00591 LogDebug("ZdcSimHitStudy")
00592
00593 << "ZdcValidation: Hit buffer "
00594 << caloHits.size();
00595
00596 analyzeHits (caloHits);
00597 }
00598 }
00599
00600 void ZdcSimHitStudy::analyzeHits(std::vector<PCaloHit>& hits){
00601 int nHit = hits.size();
00602 int nZdcEM = 0, nZdcHad = 0, nZdcLum = 0;
00603 int nBad1=0, nBad2=0, nBad=0;
00604 std::vector<double> encontZdcEM(140, 0.);
00605 std::vector<double> encontZdcHad(140, 0.);
00606 double entotZdcEM = 0;
00607 double entotZdcHad = 0;
00608
00609 enetotEmN = 0;
00610 enetotHadN = 0.;
00611 enetotN = 0;
00612 enetotEmP = 0;
00613 enetotHadP = 0;
00614 enetotP = 0;
00615 enetot = 0;
00616
00617 for (int i=0; i<nHit; i++) {
00618 double energy = hits[i].energy();
00619 double log10en = log10(energy);
00620 int log10i = int( (log10en+10.)*10. );
00621 double time = hits[i].time();
00622 unsigned int id_ = hits[i].id();
00623 HcalZDCDetId id = HcalZDCDetId(id_);
00624 int det = id.det();
00625 int side = id.zside();
00626 int section = id.section();
00627 int channel = id.channel();
00628
00629 FillHitValHist(side,section,channel,energy,time);
00630
00631
00632 LogDebug("ZdcSimHitStudy")
00633
00634 << "Hit[" << i << "] ID " << std::hex << id_
00635 << std::dec <<" DetID "<<id
00636 << " Det "<< det << " side "<< side
00637 << " Section " << section
00638 << " channel "<< channel
00639 << " E " << energy
00640 << " time \n" << time;
00641
00642
00643 if(det == 5) {
00644 if(section == HcalZDCDetId::EM)nZdcEM++;
00645 else if(section == HcalZDCDetId::HAD)nZdcHad++;
00646 else if(section == HcalZDCDetId::LUM)nZdcLum++;
00647 else { nBad++; nBad2++;}
00648 } else { nBad++; nBad1++;}
00649 if (dbe_) {
00650 meZdcDetectHit_->Fill(double(det));
00651 if (det == 5) {
00652 meZdcSideHit_->Fill(double(side));
00653 meZdcSectionHit_->Fill(double(section));
00654 meZdcChannelHit_->Fill(double(channel));
00655 meZdcEnergyHit_->Fill(energy);
00656 if(section == HcalZDCDetId::EM){
00657 meZdcEMEnergyHit_->Fill(energy);
00658 meZdcEEMCh_->Fill(energy,channel);
00659 if( log10i >=0 && log10i < 140 )encontZdcEM[log10i] += energy;
00660 entotZdcEM += energy;
00661 }
00662 if(section == HcalZDCDetId::HAD){
00663 meZdcHadEnergyHit_->Fill(energy);
00664 meZdcEHadCh_->Fill(energy,channel);
00665 if( log10i >=0 && log10i < 140 )encontZdcHad[log10i] += energy;
00666 entotZdcHad += energy;
00667 }
00668 meZdcTimeHit_->Fill(time);
00669 meZdcTimeWHit_->Fill(double(time),energy);
00670 meZdc10Ene_->Fill(log10en);
00671 meZdcETime_->Fill(energy, double(time));
00672 }
00673 }
00674 }
00675
00676 if( entotZdcEM != 0 ) for( int i=0; i<140; i++ ) meZdcEML10EneP_->Fill( -10.+(float(i)+0.5)/10., encontZdcEM[i]/entotZdcEM);
00677 if( entotZdcHad != 0 ) for( int i=0; i<140; i++ ) meZdcHadL10EneP_->Fill( -10.+(float(i)+0.5)/10.,encontZdcHad[i]/entotZdcHad);
00678
00679 if (dbe_ && nHit>0) {
00680 meAllZdcNHit_->Fill(double(nHit));
00681 meBadZdcDetHit_->Fill(double(nBad1));
00682 meBadZdcSecHit_->Fill(double(nBad2));
00683 meBadZdcIdHit_->Fill(double(nBad));
00684 meZdcNHitEM_->Fill(double(nZdcEM));
00685 meZdcNHitHad_->Fill(double(nZdcHad));
00686 meZdcNHitLum_->Fill(double(nZdcLum));
00687 meZdcEnePTot_->Fill(enetotP);
00688 meZdcEneNTot_->Fill(enetotN);
00689 meZdcEneHadNTot_->Fill(enetotHadN);
00690 meZdcEneHadPTot_->Fill(enetotHadP);
00691 meZdcEneEmNTot_->Fill(enetotEmN);
00692 meZdcEneEmPTot_->Fill(enetotEmP);
00693 meZdcCorEEmNEHadN_->Fill(enetotEmN,enetotHadN);
00694 meZdcCorEEmPEHadP_->Fill(enetotEmP,enetotHadP);
00695 meZdcCorEtotNEtotP_->Fill(enetotN,enetotP);
00696 meZdcEneTot_->Fill(enetot);
00697 }
00698 LogDebug("HcalSimHitStudy")
00699
00700 <<"HcalSimHitStudy::analyzeHits: Had " << nZdcHad
00701 << " EM "<< nZdcEM
00702 << " Bad " << nBad << " All " << nHit;
00703
00704 }
00705
00706 int ZdcSimHitStudy::FillHitValHist(int side,int section,int channel,double energy,double time){
00707 enetot += enetot;
00708 if(side == -1){
00709 enetotN += energy;
00710 if(section == HcalZDCDetId::EM){
00711 enetotEmN += energy;
00712 switch(channel){
00713 case 1 :
00714 meZdcEneEmN1_->Fill(energy);
00715 meZdcEneTEmN1_->Fill(energy,time);
00716 break;
00717 case 2 :
00718 meZdcEneEmN2_->Fill(energy);
00719 meZdcEneTEmN2_->Fill(energy,time);
00720 break;
00721 case 3 :
00722 meZdcEneEmN3_->Fill(energy);
00723 meZdcEneTEmN3_->Fill(energy,time);
00724 break;
00725 case 4 :
00726 meZdcEneEmN4_->Fill(energy);
00727 meZdcEneTEmN4_->Fill(energy,time);
00728 break;
00729 case 5 :
00730 meZdcEneEmN4_->Fill(energy);
00731 meZdcEneTEmN4_->Fill(energy,time);
00732 break;
00733 }
00734 }
00735 if(section == HcalZDCDetId::HAD){
00736 enetotHadN += energy;
00737 switch(channel){
00738 case 1 :
00739 meZdcEneHadN1_->Fill(energy);
00740 meZdcEneTHadN1_->Fill(energy,time);
00741 break;
00742 case 2 :
00743 meZdcEneHadN2_->Fill(energy);
00744 meZdcEneTHadN2_->Fill(energy,time);
00745 break;
00746 case 3 :
00747 meZdcEneHadN3_->Fill(energy);
00748 meZdcEneTHadN3_->Fill(energy,time);
00749 break;
00750 case 4 :
00751 meZdcEneHadN4_->Fill(energy);
00752 meZdcEneTHadN4_->Fill(energy,time);
00753 break;
00754 }
00755 }
00756 }
00757 if(side == 1){
00758 enetotP += energy;
00759 if(section == HcalZDCDetId::EM){
00760 enetotEmP += energy;
00761 switch(channel){
00762 case 1 :
00763 meZdcEneEmP1_->Fill(energy);
00764 meZdcEneTEmP1_->Fill(energy,time);
00765 break;
00766 case 2 :
00767 meZdcEneEmP2_->Fill(energy);
00768 meZdcEneTEmP2_->Fill(energy,time);
00769 break;
00770 case 3 :
00771 meZdcEneEmP3_->Fill(energy);
00772 meZdcEneTEmP3_->Fill(energy,time);
00773 break;
00774 case 4 :
00775 meZdcEneEmP4_->Fill(energy);
00776 meZdcEneTEmP4_->Fill(energy,time);
00777 break;
00778 case 5 :
00779 meZdcEneEmP4_->Fill(energy);
00780 meZdcEneTEmP4_->Fill(energy,time);
00781 break;
00782 }
00783 }
00784 if(section == HcalZDCDetId::HAD){
00785 enetotHadP += energy;
00786 switch(channel){
00787 case 1 :
00788 meZdcEneHadP1_->Fill(energy);
00789 meZdcEneTHadP1_->Fill(energy,time);
00790 break;
00791 case 2 :
00792 meZdcEneHadP2_->Fill(energy);
00793 meZdcEneTHadP2_->Fill(energy,time);
00794 break;
00795 case 3 :
00796 meZdcEneHadP3_->Fill(energy);
00797 meZdcEneTHadP3_->Fill(energy,time);
00798 break;
00799 case 4 :
00800 meZdcEneHadP4_->Fill(energy);
00801 meZdcEneTHadP4_->Fill(energy,time);
00802 break;
00803 }
00804 }
00805 }
00806 return 0;
00807 }
00808
00809
00810
00811 void ZdcSimHitStudy::endRun(const edm::Run& run, const edm::EventSetup& c)
00812 {
00813 }
00814
00815
00816
00817
00818
00819
00820
00821
00822
00823
00824
00825