00001 #include <iostream>
00002 #include <iomanip>
00003
00004
00005 #include "DQMOffline/EGamma/plugins/PhotonAnalyzer.h"
00006
00007
00019 using namespace std;
00020
00021
00022 PhotonAnalyzer::PhotonAnalyzer( const edm::ParameterSet& pset )
00023 {
00024
00025 fName_ = pset.getUntrackedParameter<string>("Name");
00026 verbosity_ = pset.getUntrackedParameter<int>("Verbosity");
00027
00028 prescaleFactor_ = pset.getUntrackedParameter<int>("prescaleFactor",1);
00029
00030 photonProducer_ = pset.getParameter<string>("phoProducer");
00031 photonCollection_ = pset.getParameter<string>("photonCollection");
00032
00033 barrelRecHitProducer_ = pset.getParameter<string>("barrelRecHitProducer");
00034 barrelRecHitCollection_ = pset.getParameter<string>("barrelRecHitCollection");
00035
00036 endcapRecHitProducer_ = pset.getParameter<string>("endcapRecHitProducer");
00037 endcapRecHitCollection_ = pset.getParameter<string>("endcapRecHitCollection");
00038
00039 triggerEvent_ = pset.getParameter<edm::InputTag>("triggerEvent");
00040
00041 minPhoEtCut_ = pset.getParameter<double>("minPhoEtCut");
00042 invMassEtCut_ = pset.getParameter<double>("invMassEtCut");
00043
00044 cutStep_ = pset.getParameter<double>("cutStep");
00045 numberOfSteps_ = pset.getParameter<int>("numberOfSteps");
00046
00047 useBinning_ = pset.getParameter<bool>("useBinning");
00048 useTriggerFiltering_ = pset.getParameter<bool>("useTriggerFiltering");
00049
00050 minimalSetOfHistos_ = pset.getParameter<bool>("minimalSetOfHistos");
00051 excludeBkgHistos_ = pset.getParameter<bool>("excludeBkgHistos");
00052
00053 standAlone_ = pset.getParameter<bool>("standAlone");
00054 outputFileName_ = pset.getParameter<string>("OutputFileName");
00055
00056 isolationStrength_ = pset.getParameter<int>("isolationStrength");
00057
00058 isHeavyIon_ = pset.getUntrackedParameter<bool>("isHeavyIon",false);
00059
00060 parameters_ = pset;
00061
00062 histo_index_photons_ = 0;
00063 histo_index_conversions_ = 0;
00064 histo_index_efficiency_ = 0;
00065 histo_index_invMass_ = 0;
00066 }
00067
00068
00069
00070 PhotonAnalyzer::~PhotonAnalyzer() {}
00071
00072
00073 void PhotonAnalyzer::beginJob()
00074 {
00075
00076 nEvt_=0;
00077 nEntry_=0;
00078
00079 dbe_ = 0;
00080 dbe_ = edm::Service<DQMStore>().operator->();
00081
00082
00083
00084 double eMin = parameters_.getParameter<double>("eMin");
00085 double eMax = parameters_.getParameter<double>("eMax");
00086 int eBin = parameters_.getParameter<int>("eBin");
00087
00088 double etMin = parameters_.getParameter<double>("etMin");
00089 double etMax = parameters_.getParameter<double>("etMax");
00090 int etBin = parameters_.getParameter<int>("etBin");
00091
00092 double sumMin = parameters_.getParameter<double>("sumMin");
00093 double sumMax = parameters_.getParameter<double>("sumMax");
00094 int sumBin = parameters_.getParameter<int>("sumBin");
00095
00096 double etaMin = parameters_.getParameter<double>("etaMin");
00097 double etaMax = parameters_.getParameter<double>("etaMax");
00098 int etaBin = parameters_.getParameter<int>("etaBin");
00099
00100 double phiMin = parameters_.getParameter<double>("phiMin");
00101 double phiMax = parameters_.getParameter<double>("phiMax");
00102 int phiBin = parameters_.getParameter<int>("phiBin");
00103
00104 double r9Min = parameters_.getParameter<double>("r9Min");
00105 double r9Max = parameters_.getParameter<double>("r9Max");
00106 int r9Bin = parameters_.getParameter<int>("r9Bin");
00107
00108 double hOverEMin = parameters_.getParameter<double>("hOverEMin");
00109 double hOverEMax = parameters_.getParameter<double>("hOverEMax");
00110 int hOverEBin = parameters_.getParameter<int>("hOverEBin");
00111
00112 double xMin = parameters_.getParameter<double>("xMin");
00113 double xMax = parameters_.getParameter<double>("xMax");
00114 int xBin = parameters_.getParameter<int>("xBin");
00115
00116 double yMin = parameters_.getParameter<double>("yMin");
00117 double yMax = parameters_.getParameter<double>("yMax");
00118 int yBin = parameters_.getParameter<int>("yBin");
00119
00120 double numberMin = parameters_.getParameter<double>("numberMin");
00121 double numberMax = parameters_.getParameter<double>("numberMax");
00122 int numberBin = parameters_.getParameter<int>("numberBin");
00123
00124 double zMin = parameters_.getParameter<double>("zMin");
00125 double zMax = parameters_.getParameter<double>("zMax");
00126 int zBin = parameters_.getParameter<int>("zBin");
00127
00128 double rMin = parameters_.getParameter<double>("rMin");
00129 double rMax = parameters_.getParameter<double>("rMax");
00130 int rBin = parameters_.getParameter<int>("rBin");
00131
00132 double dPhiTracksMin = parameters_.getParameter<double>("dPhiTracksMin");
00133 double dPhiTracksMax = parameters_.getParameter<double>("dPhiTracksMax");
00134 int dPhiTracksBin = parameters_.getParameter<int>("dPhiTracksBin");
00135
00136 double dEtaTracksMin = parameters_.getParameter<double>("dEtaTracksMin");
00137 double dEtaTracksMax = parameters_.getParameter<double>("dEtaTracksMax");
00138 int dEtaTracksBin = parameters_.getParameter<int>("dEtaTracksBin");
00139
00140 double sigmaIetaMin = parameters_.getParameter<double>("sigmaIetaMin");
00141 double sigmaIetaMax = parameters_.getParameter<double>("sigmaIetaMax");
00142 int sigmaIetaBin = parameters_.getParameter<int>("sigmaIetaBin");
00143
00144 double eOverPMin = parameters_.getParameter<double>("eOverPMin");
00145 double eOverPMax = parameters_.getParameter<double>("eOverPMax");
00146 int eOverPBin = parameters_.getParameter<int>("eOverPBin");
00147
00148 double chi2Min = parameters_.getParameter<double>("chi2Min");
00149 double chi2Max = parameters_.getParameter<double>("chi2Max");
00150 int chi2Bin = parameters_.getParameter<int>("chi2Bin");
00151
00152
00153 int reducedEtBin = etBin/4;
00154 int reducedEtaBin = etaBin/4;
00155 int reducedSumBin = sumBin/4;
00156 int reducedR9Bin = r9Bin/4;
00157
00158
00159 parts_.push_back("AllEcal");
00160 parts_.push_back("Barrel");
00161 parts_.push_back("Endcaps");
00162
00163 types_.push_back("All");
00164 types_.push_back("GoodCandidate");
00165 if (!excludeBkgHistos_) types_.push_back("Background");
00166
00167
00168
00170
00171 if (dbe_) {
00172
00173 dbe_->setCurrentFolder("Egamma/PhotonAnalyzer");
00174
00175
00176 totalNumberOfHistos_efficiencyFolder = dbe_->bookInt("numberOfHistogramsInEfficiencyFolder");
00177 totalNumberOfHistos_photonsFolder = dbe_->bookInt("numberOfHistogramsInPhotonsFolder");
00178 totalNumberOfHistos_conversionsFolder = dbe_->bookInt("numberOfHistogramsInConversionsFolder");
00179 totalNumberOfHistos_invMassFolder = dbe_->bookInt("numberOfHistogramsInInvMassFolder");
00180
00181
00182
00183
00184 dbe_->setCurrentFolder("Egamma/PhotonAnalyzer/Efficiencies");
00185
00186
00187 h_phoEta_Loose_ = dbe_->book1D("phoEtaLoose","Loose Photon #eta",etaBin,etaMin,etaMax);
00188 h_phoEta_Tight_ = dbe_->book1D("phoEtaTight","Tight Photon #eta",etaBin,etaMin,etaMax);
00189 h_phoEt_Loose_ = dbe_->book1D("phoEtLoose", "Loose Photon E_{T}",etBin,etMin,etMax);
00190 h_phoEt_Tight_ = dbe_->book1D("phoEtTight", "Tight Photon E_{T}",etBin,etMin,etMax);
00191
00192
00193 h_phoEta_preHLT_ = dbe_->book1D("phoEtaPreHLT", "Photon #eta: before HLT",etaBin,etaMin,etaMax);
00194 h_phoEta_postHLT_ = dbe_->book1D("phoEtaPostHLT","Photon #eta: after HLT",etaBin,etaMin,etaMax);
00195 h_phoEt_preHLT_ = dbe_->book1D("phoEtPreHLT", "Photon E_{T}: before HLT",etBin,etMin,etMax);
00196 h_phoEt_postHLT_ = dbe_->book1D("phoEtPostHLT", "Photon E_{T}: after HLT",etBin,etMin,etMax);
00197
00198 h_convEta_Loose_ = dbe_->book1D("convEtaLoose","Converted Loose Photon #eta",etaBin,etaMin,etaMax);
00199 h_convEta_Tight_ = dbe_->book1D("convEtaTight","Converted Tight Photon #eta",etaBin,etaMin,etaMax);
00200 h_convEt_Loose_ = dbe_->book1D("convEtLoose", "Converted Loose Photon E_{T}",etBin,etMin,etMax);
00201 h_convEt_Tight_ = dbe_->book1D("convEtTight", "Converted Tight Photon E_{T}",etBin,etMin,etMax);
00202
00203 h_phoEta_Vertex_ = dbe_->book1D("phoEtaVertex","Converted Photons before valid vertex cut: #eta",etaBin,etaMin,etaMax);
00204
00205
00206 vector<MonitorElement*> temp1DVectorEta;
00207 vector<MonitorElement*> temp1DVectorPhi;
00208 vector<vector<MonitorElement*> > temp2DVectorPhi;
00209
00210
00211 for(int cut = 0; cut != numberOfSteps_; ++cut){
00212 for(uint type=0;type!=types_.size();++type){
00213 currentFolder_.str("");
00214 currentFolder_ << "Egamma/PhotonAnalyzer/" << types_[type] << "Photons/Et above " << (cut+1)*cutStep_ << " GeV/Conversions";
00215 dbe_->setCurrentFolder(currentFolder_.str());
00216
00217 temp1DVectorEta.push_back(dbe_->book1D("phoConvEtaForEfficiency","Converted Photon #eta;#eta",etaBin,etaMin,etaMax));
00218 for(uint part=0;part!=parts_.size();++part){
00219 temp1DVectorPhi.push_back(dbe_->book1D("phoConvPhiForEfficiency"+parts_[part],"Converted Photon #phi;#phi",phiBin,phiMin,phiMax));
00220 }
00221 temp2DVectorPhi.push_back(temp1DVectorPhi);
00222 temp1DVectorPhi.clear();
00223 }
00224 h_phoConvEtaForEfficiency_.push_back(temp1DVectorEta);
00225 temp1DVectorEta.clear();
00226 h_phoConvPhiForEfficiency_.push_back(temp2DVectorPhi);
00227 temp2DVectorPhi.clear();
00228 }
00229
00230
00231
00232
00233
00234
00235 dbe_->setCurrentFolder("Egamma/PhotonAnalyzer/InvMass");
00236
00237 h_invMassAllPhotons_ = bookHisto("invMassAllIsolatedPhotons","Two photon invariant mass: All isolated photons;M (GeV)",etBin,etMin,etMax);
00238 h_invMassPhotonsEBarrel_ = bookHisto("invMassIsoPhotonsEBarrel", "Two photon invariant mass: isolated photons in barrel; M (GeV)",etBin,etMin,etMax);
00239 h_invMassPhotonsEEndcap_ = bookHisto("invMassIsoPhotonsEEndcap", "Two photon invariant mass: isolated photons in endcap; M (GeV)",etBin,etMin,etMax);
00240
00241 h_invMassZeroWithTracks_= bookHisto("invMassZeroWithTracks", "Two photon invariant mass: Neither has tracks;M (GeV)", etBin,etMin,etMax);
00242 h_invMassOneWithTracks_ = bookHisto("invMassOneWithTracks", "Two photon invariant mass: Only one has tracks;M (GeV)", etBin,etMin,etMax);
00243 h_invMassTwoWithTracks_ = bookHisto("invMassTwoWithTracks", "Two photon invariant mass: Both have tracks;M (GeV)", etBin,etMin,etMax);
00244
00245
00247
00248
00249
00250 book3DHistoVector(h_phoE_, "1D","phoE","Energy;E (GeV)",eBin,eMin,eMax);
00251 book3DHistoVector(h_phoEt_, "1D","phoEt","E_{T};E_{T} (GeV)", etBin,etMin,etMax);
00252
00253
00254
00255 book3DHistoVector(h_nPho_, "1D","nPho","Number of Photons per Event;# #gamma",numberBin,numberMin,numberMax);
00256
00257
00258
00259
00260 book2DHistoVector(h_phoEta_, "1D","phoEta","#eta;#eta",etaBin,etaMin,etaMax) ;
00261 book3DHistoVector(h_phoPhi_, "1D","phoPhi","#phi;#phi",phiBin,phiMin,phiMax) ;
00262
00263
00264 book2DHistoVector(h_scEta_, "1D","scEta","SuperCluster #eta;#eta",etaBin,etaMin,etaMax) ;
00265 book3DHistoVector(h_scPhi_, "1D","scPhi","SuperCluster #phi;#phi",phiBin,phiMin,phiMax) ;
00266
00267
00268
00269
00270 book3DHistoVector(h_r9_, "1D","r9","R9;R9",r9Bin,r9Min, r9Max);
00271 book2DHistoVector(h_r9VsEt_, "2D","r9VsEt2D","R9 vs E_{T};E_{T} (GeV);R9",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
00272 book2DHistoVector(p_r9VsEt_, "Profile","r9VsEt","Avg R9 vs E_{T};E_{T} (GeV);R9",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00273 book2DHistoVector(h_r9VsEta_, "2D","r9VsEta2D","R9 vs #eta;#eta;R9",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
00274 book2DHistoVector(p_r9VsEta_, "Profile","r9VsEta","Avg R9 vs #eta;#eta;R9",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00275
00276
00277 book3DHistoVector(h_phoSigmaIetaIeta_, "1D","phoSigmaIetaIeta","#sigma_{i#etai#eta};#sigma_{i#etai#eta}",sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
00278 book2DHistoVector(h_sigmaIetaIetaVsEta_, "2D","sigmaIetaIetaVsEta2D","#sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",reducedEtaBin,etaMin,etaMax,sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
00279 book2DHistoVector(p_sigmaIetaIetaVsEta_, "Profile","sigmaIetaIetaVsEta","Avg #sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",etaBin,etaMin,etaMax,sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
00280
00281
00282 book2DHistoVector(h_e1x5VsEt_, "2D","e1x5VsEt2D","E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",reducedEtBin,etMin,etMax,reducedEtBin,etMin,etMax);
00283 book2DHistoVector(p_e1x5VsEt_, "Profile","e1x5VsEt","Avg E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",etBin,etMin,etMax,etBin,etMin,etMax);
00284 book2DHistoVector(h_e1x5VsEta_, "2D","e1x5VsEta2D","E1x5 vs #eta;#eta;E1X5 (GeV)",reducedEtaBin,etaMin,etaMax,reducedEtBin,etMin,etMax);
00285 book2DHistoVector(p_e1x5VsEta_, "Profile","e1x5VsEta","Avg E1x5 vs #eta;#eta;E1X5 (GeV)",etaBin,etaMin,etaMax,etBin,etMin,etMax);
00286
00287
00288 book2DHistoVector(h_e2x5VsEt_, "2D","e2x5VsEt2D","E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",reducedEtBin,etMin,etMax,reducedEtBin,etMin,etMax);
00289 book2DHistoVector(p_e2x5VsEt_, "Profile","e2x5VsEt","Avg E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",etBin,etMin,etMax,etBin,etMin,etMax);
00290 book2DHistoVector(h_e2x5VsEta_, "2D","e2x5VsEta2D","E2x5 vs #eta;#eta;E2X5 (GeV)",reducedEtaBin,etaMin,etaMax,reducedEtBin,etMin,etMax);
00291 book2DHistoVector(p_e2x5VsEta_, "Profile","e2x5VsEta","Avg E2x5 vs #eta;#eta;E2X5 (GeV)",etaBin,etaMin,etaMax,etBin,etMin,etMax);
00292
00293
00294 book2DHistoVector(h_r1x5VsEt_, "2D","r1x5VsEt2D","R1x5 vs E_{T};E_{T} (GeV);R1X5",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
00295 book2DHistoVector(p_r1x5VsEt_, "Profile","r1x5VsEt","Avg R1x5 vs E_{T};E_{T} (GeV);R1X5",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00296 book2DHistoVector(h_r1x5VsEta_, "2D","r1x5VsEta2D","R1x5 vs #eta;#eta;R1X5",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
00297 book2DHistoVector(p_r1x5VsEta_, "Profile","r1x5VsEta","Avg R1x5 vs #eta;#eta;R1X5",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00298
00299
00300 book2DHistoVector( h_r2x5VsEt_ ,"2D","r2x5VsEt2D","R2x5 vs E_{T};E_{T} (GeV);R2X5",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
00301 book2DHistoVector( p_r2x5VsEt_ ,"Profile","r2x5VsEt","Avg R2x5 vs E_{T};E_{T} (GeV);R2X5",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00302 book2DHistoVector( h_r2x5VsEta_ ,"2D","r2x5VsEta2D","R2x5 vs #eta;#eta;R2X5",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
00303 book2DHistoVector( p_r2x5VsEta_ ,"Profile","r2x5VsEta","Avg R2x5 vs #eta;#eta;R2X5",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00304
00305
00306 book2DHistoVector( h_maxEXtalOver3x3VsEt_ ,"2D","maxEXtalOver3x3VsEt2D","(Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",reducedEtBin,etMin,etMax,r9Bin,r9Min,r9Max);
00307 book2DHistoVector( p_maxEXtalOver3x3VsEt_ ,"Profile","maxEXtalOver3x3VsEt","Avg (Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00308 book2DHistoVector( h_maxEXtalOver3x3VsEta_ ,"2D","maxEXtalOver3x3VsEta2D","(Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",reducedEtaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00309 book2DHistoVector( p_maxEXtalOver3x3VsEta_ ,"Profile","maxEXtalOver3x3VsEta","Avg (Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00310
00311
00312
00313
00314
00315 book2DHistoVector( h_nTrackIsolSolid_ ,"1D","nIsoTracksSolid","Number Of Tracks in the Solid Iso Cone;# tracks",numberBin,numberMin,numberMax);
00316 book2DHistoVector( h_nTrackIsolSolidVsEt_ ,"2D","nIsoTracksSolidVsEt2D","Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",reducedEtBin,etMin, etMax,numberBin,numberMin,numberMax);
00317 book2DHistoVector( p_nTrackIsolSolidVsEt_ ,"Profile","nIsoTracksSolidVsEt","Avg Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",etBin,etMin,etMax,numberBin,numberMin,numberMax);
00318 book2DHistoVector( h_nTrackIsolSolidVsEta_ ,"2D","nIsoTracksSolidVsEta2D","Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",reducedEtaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00319 book2DHistoVector( p_nTrackIsolSolidVsEta_ ,"Profile","nIsoTracksSolidVsEta","Avg Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",etaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00320
00321
00322 book2DHistoVector( h_nTrackIsolHollow_ ,"1D","nIsoTracksHollow","Number Of Tracks in the Hollow Iso Cone;# tracks",numberBin,numberMin,numberMax);
00323 book2DHistoVector( h_nTrackIsolHollowVsEt_ ,"2D","nIsoTracksHollowVsEt2D","Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",reducedEtBin,etMin, etMax,numberBin,numberMin,numberMax);
00324 book2DHistoVector( p_nTrackIsolHollowVsEt_ ,"Profile","nIsoTracksHollowVsEt","Avg Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",etBin,etMin,etMax,numberBin,numberMin,numberMax);
00325 book2DHistoVector( h_nTrackIsolHollowVsEta_ ,"2D","nIsoTracksHollowVsEta2D","Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",reducedEtaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00326 book2DHistoVector( p_nTrackIsolHollowVsEta_ ,"Profile","nIsoTracksHollowVsEta","Avg Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",etaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00327
00328
00329 book2DHistoVector( h_trackPtSumSolid_ ,"1D","isoPtSumSolid","Track P_{T} Sum in the Solid Iso Cone;P_{T} (GeV)",sumBin,sumMin,sumMax);
00330 book2DHistoVector( h_trackPtSumSolidVsEt_ ,"2D","isoPtSumSolidVsEt2D","Track P_{T} Sum in the Solid Iso Cone;E_{T} (GeV);P_{T} (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00331 book2DHistoVector( p_trackPtSumSolidVsEt_ ,"Profile","isoPtSumSolidVsEt","Avg Track P_{T} Sum in the Solid Iso Cone vs E_{T};E_{T} (GeV);P_{T} (GeV)",etBin,etMin,etMax,sumBin,sumMin,sumMax);
00332 book2DHistoVector( h_trackPtSumSolidVsEta_ ,"2D","isoPtSumSolidVsEta2D","Track P_{T} Sum in the Solid Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00333 book2DHistoVector( p_trackPtSumSolidVsEta_ ,"Profile","isoPtSumSolidVsEta","Avg Track P_{T} Sum in the Solid Iso Cone vs #eta;#eta;P_{T} (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00334
00335
00336 book2DHistoVector( h_trackPtSumHollow_ ,"1D","isoPtSumHollow","Track P_{T} Sum in the Hollow Iso Cone;P_{T} (GeV)",sumBin,sumMin,sumMax);
00337 book2DHistoVector( h_trackPtSumHollowVsEt_ ,"2D","isoPtSumHollowVsEt2D","Track P_{T} Sum in the Hollow Iso Cone;E_{T} (GeV);P_{T} (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00338 book2DHistoVector( p_trackPtSumHollowVsEt_ ,"Profile","isoPtSumHollowVsEt","Avg Track P_{T} Sum in the Hollow Iso Cone vs E_{T};E_{T} (GeV);P_{T} (GeV)",etBin,etMin,etMax,sumBin,sumMin,sumMax);
00339 book2DHistoVector( h_trackPtSumHollowVsEta_ ,"2D","isoPtSumHollowVsEta2D","Track P_{T} Sum in the Hollow Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00340 book2DHistoVector( p_trackPtSumHollowVsEta_ ,"Profile","isoPtSumHollowVsEta","Avg Track P_{T} Sum in the Hollow Iso Cone vs #eta;#eta;P_{T} (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00341
00342
00343
00344
00345
00346 book2DHistoVector( h_ecalSum_ ,"1D","ecalSum","Ecal Sum in the Iso Cone;E (GeV)",sumBin,sumMin,sumMax);
00347 book2DHistoVector( h_ecalSumEBarrel_,"1D","ecalSumEBarrel","Ecal Sum in the IsoCone for Barrel;E (GeV)",sumBin,sumMin,sumMax);
00348 book2DHistoVector( h_ecalSumEEndcap_,"1D","ecalSumEEndcap","Ecal Sum in the IsoCone for Endcap;E (GeV)",sumBin,sumMin,sumMax);
00349 book2DHistoVector( h_ecalSumVsEt_ ,"2D","ecalSumVsEt2D","Ecal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00350 book3DHistoVector( p_ecalSumVsEt_ ,"Profile","ecalSumVsEt","Avg Ecal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",etBin,etMin, etMax,sumBin,sumMin,sumMax);
00351 book2DHistoVector( h_ecalSumVsEta_ ,"2D","ecalSumVsEta2D","Ecal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00352 book2DHistoVector( p_ecalSumVsEta_ ,"Profile","ecalSumVsEta","Avg Ecal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00353
00354
00355 book2DHistoVector( h_hcalSum_ ,"1D","hcalSum","Hcal Sum in the Iso Cone;E (GeV)",sumBin,sumMin,sumMax);
00356 book2DHistoVector( h_hcalSumEBarrel_,"1D","hcalSumEBarrel","Hcal Sum in the IsoCone for Barrel;E (GeV)",sumBin,sumMin,sumMax);
00357 book2DHistoVector( h_hcalSumEEndcap_,"1D","hcalSumEEndcap","Hcal Sum in the IsoCone for Endcap;E (GeV)",sumBin,sumMin,sumMax);
00358 book2DHistoVector( h_hcalSumVsEt_ ,"2D","hcalSumVsEt2D","Hcal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00359 book3DHistoVector( p_hcalSumVsEt_ ,"Profile","hcalSumVsEt","Avg Hcal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",etBin,etMin, etMax,sumBin,sumMin,sumMax);
00360 book2DHistoVector( h_hcalSumVsEta_ ,"2D","hcalSumVsEta2D","Hcal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00361 book2DHistoVector( p_hcalSumVsEta_ ,"Profile","hcalSumVsEta","Avg Hcal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00362
00363
00364 book3DHistoVector( h_hOverE_ ,"1D","hOverE","H/E;H/E",hOverEBin,hOverEMin,hOverEMax);
00365 book2DHistoVector( p_hOverEVsEt_ ,"Profile","hOverEVsEt","Avg H/E vs Et;E_{T} (GeV);H/E",etBin,etMin,etMax,hOverEBin,hOverEMin,hOverEMax);
00366 book2DHistoVector( p_hOverEVsEta_ ,"Profile","hOverEVsEta","Avg H/E vs #eta;#eta;H/E",etaBin,etaMin,etaMax,hOverEBin,hOverEMin,hOverEMax);
00367 book3DHistoVector( h_h1OverE_ ,"1D","h1OverE","H/E for Depth 1;H/E",hOverEBin,hOverEMin,hOverEMax);
00368 book3DHistoVector( h_h2OverE_ ,"1D","h2OverE","H/E for Depth 2;H/E",hOverEBin,hOverEMin,hOverEMax);
00369
00370
00371
00372
00373
00374 book2DHistoVector( h_phoEt_BadChannels_ ,"1D","phoEtBadChannels", "Fraction Containing Bad Channels: E_{T};E_{T} (GeV)",etBin,etMin,etMax);
00375 book2DHistoVector( h_phoEta_BadChannels_ ,"1D","phoEtaBadChannels","Fraction Containing Bad Channels: #eta;#eta",etaBin,etaMin,etaMax);
00376 book2DHistoVector( h_phoPhi_BadChannels_ ,"1D","phoPhiBadChannels","Fraction Containing Bad Channels: #phi;#phi",phiBin,phiMin,phiMax);
00377
00378
00380
00381 dbe_->setCurrentFolder("Egamma/PhotonAnalyzer/AllPhotons/Et Above 0 GeV/Conversions");
00382
00383
00384
00385 book3DHistoVector( h_phoConvE_ ,"1D","phoConvE","E;E (GeV)",eBin,eMin,eMax);
00386 book3DHistoVector( h_phoConvEt_ ,"1D","phoConvEt","E_{T};E_{T} (GeV)",etBin,etMin,etMax);
00387
00388
00389
00390 book2DHistoVector( h_phoConvEta_ ,"1D","phoConvEta","#eta;#eta",etaBin,etaMin,etaMax);
00391 book3DHistoVector( h_phoConvPhi_ ,"1D","phoConvPhi","#phi;#phi",phiBin,phiMin,phiMax);
00392
00393
00394
00395 book3DHistoVector( h_nConv_ ,"1D","nConv","Number Of Conversions per Event ;# conversions",numberBin,numberMin,numberMax);
00396
00397
00398
00399 book3DHistoVector( h_phoConvR9_ ,"1D","phoConvR9","R9;R9",r9Bin,r9Min,r9Max);
00400
00401
00402
00403 book3DHistoVector( h_eOverPTracks_ ,"1D","eOverPTracks","E/P;E/P",eOverPBin,eOverPMin,eOverPMax);
00404 book3DHistoVector( h_pOverETracks_ ,"1D","pOverETracks","P/E;P/E",eOverPBin,eOverPMin,eOverPMax);
00405
00406 book3DHistoVector( h_dPhiTracksAtVtx_ ,"1D","dPhiTracksAtVtx", "#Delta#phi of Tracks at Vertex;#Delta#phi",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
00407 book3DHistoVector( h_dPhiTracksAtEcal_ ,"1D","dPhiTracksAtEcal", "Abs(#Delta#phi) of Tracks at Ecal;#Delta#phi",dPhiTracksBin,0.,dPhiTracksMax);
00408 book3DHistoVector( h_dEtaTracksAtEcal_ ,"1D","dEtaTracksAtEcal", "#Delta#eta of Tracks at Ecal;#Delta#eta",dEtaTracksBin,dEtaTracksMin,dEtaTracksMax);
00409
00410 book3DHistoVector( h_dCotTracks_ ,"1D","dCotTracks","#Deltacot(#theta) of Tracks;#Deltacot(#theta)",dEtaTracksBin,dEtaTracksMin,dEtaTracksMax);
00411 book2DHistoVector( p_dCotTracksVsEta_ ,"Profile","dCotTracksVsEta","Avg #Deltacot(#theta) of Tracks vs #eta;#eta;#Deltacot(#theta)",etaBin,etaMin,etaMax,dEtaTracksBin,dEtaTracksMin,dEtaTracksMax);
00412
00413 book2DHistoVector( p_nHitsVsEta_ ,"Profile","nHitsVsEta","Avg Number of Hits per Track vs #eta;#eta;# hits",etaBin,etaMin,etaMax,etaBin,0,16);
00414
00415 book2DHistoVector( h_tkChi2_ ,"1D","tkChi2","#chi^{2} of Track Fitting;#chi^{2}",chi2Bin,chi2Min,chi2Max);
00416 book2DHistoVector( p_tkChi2VsEta_ ,"Profile","tkChi2VsEta","Avg #chi^{2} of Track Fitting vs #eta;#eta;#chi^{2}",etaBin,etaMin,etaMax,chi2Bin,chi2Min,chi2Max);
00417
00418
00419
00420 book2DHistoVector( h_convVtxRvsZ_ ,"2D","convVtxRvsZ","Vertex Position;Z (cm);R (cm)",500,zMin,zMax,rBin,rMin,rMax);
00421 book2DHistoVector( h_convVtxZEndcap_ ,"1D","convVtxZEndcap", "Vertex Position: #eta > 1.5;Z (cm)",zBin,zMin,zMax);
00422 book2DHistoVector( h_convVtxZ_ ,"1D","convVtxZ", "Vertex Position;Z (cm)",zBin,zMin,zMax);
00423 book2DHistoVector( h_convVtxR_ ,"1D","convVtxR", "Vertex Position: #eta < 1;R (cm)",rBin,rMin,rMax);
00424 book2DHistoVector( h_convVtxYvsX_ ,"2D","convVtxYvsX","Vertex Position: #eta < 1;X (cm);Y (cm)",xBin,xMin,xMax,yBin,yMin,yMax);
00425
00426
00427
00428 book2DHistoVector( h_vertexChi2Prob_ ,"1D","vertexChi2Prob","#chi^{2} Probability of Vertex Fitting;#chi^{2}",100,0.,1.0);
00429
00430
00431 }
00432
00433
00434 }
00435
00436
00437
00438 void PhotonAnalyzer::analyze( const edm::Event& e, const edm::EventSetup& esup )
00439 {
00440 using namespace edm;
00441
00442 if (nEvt_% prescaleFactor_ ) return;
00443 nEvt_++;
00444 LogInfo("PhotonAnalyzer") << "PhotonAnalyzer Analyzing event number: " << e.id() << " Global Counter " << nEvt_ <<"\n";
00445
00446
00447 bool validTriggerEvent=true;
00448 edm::Handle<trigger::TriggerEvent> triggerEventHandle;
00449 trigger::TriggerEvent triggerEvent;
00450 e.getByLabel(triggerEvent_,triggerEventHandle);
00451 if(!triggerEventHandle.isValid()) {
00452 edm::LogInfo("PhotonAnalyzer") << "Error! Can't get the product "<< triggerEvent_.label() << endl;
00453 validTriggerEvent=false;
00454 }
00455 if(validTriggerEvent) triggerEvent = *(triggerEventHandle.product());
00456
00457
00458 bool validPhotons=true;
00459 Handle<reco::PhotonCollection> photonHandle;
00460 reco::PhotonCollection photonCollection;
00461 e.getByLabel(photonProducer_, photonCollection_ , photonHandle);
00462 if ( !photonHandle.isValid()) {
00463 edm::LogInfo("PhotonAnalyzer") << "Error! Can't get the product "<< photonCollection_ << endl;
00464 validPhotons=false;
00465 }
00466 if(validPhotons) photonCollection = *(photonHandle.product());
00467
00468
00469 bool validloosePhotonID=true;
00470 Handle<edm::ValueMap<bool> > loosePhotonFlag;
00471 edm::ValueMap<bool> loosePhotonID;
00472 e.getByLabel("PhotonIDProd", "PhotonCutBasedIDLoose", loosePhotonFlag);
00473 if ( !loosePhotonFlag.isValid()) {
00474 edm::LogInfo("PhotonAnalyzer") << "Error! Can't get the product "<< "PhotonCutBasedIDLoose" << endl;
00475 validloosePhotonID=false;
00476 }
00477 if (validloosePhotonID) loosePhotonID = *(loosePhotonFlag.product());
00478
00479 bool validtightPhotonID=true;
00480 Handle<edm::ValueMap<bool> > tightPhotonFlag;
00481 edm::ValueMap<bool> tightPhotonID;
00482 e.getByLabel("PhotonIDProd", "PhotonCutBasedIDTight", tightPhotonFlag);
00483 if ( !tightPhotonFlag.isValid()) {
00484 edm::LogInfo("PhotonAnalyzer") << "Error! Can't get the product "<< "PhotonCutBasedIDTight" << endl;
00485 validtightPhotonID=false;
00486 }
00487 if (validtightPhotonID) tightPhotonID = *(tightPhotonFlag.product());
00488
00489
00490
00491
00492 int nPho[100][3][3];
00493
00494 for (int cut=0; cut!=100; ++cut){
00495 for (unsigned int type=0; type!=types_.size(); ++type){
00496 for (unsigned int part=0; part!=parts_.size(); ++part){
00497 nPho[cut][type][part] = 0;
00498 }
00499 }
00500 }
00501
00502 int nConv[100][3][3];
00503
00504 for (int cut=0; cut!=100; ++cut){
00505 for (unsigned int type=0; type!=types_.size(); ++type){
00506 for (unsigned int part=0; part!=parts_.size(); ++part){
00507 nConv[cut][type][part] = 0;
00508 }
00509 }
00510 }
00511
00512
00513
00514
00515
00516 vector<int> Keys;
00517
00518 for(uint filterIndex=0;filterIndex<triggerEvent.sizeFilters();++filterIndex){
00519
00520 string label = triggerEvent.filterTag(filterIndex).label();
00521
00522 if(label.find( "Photon" ) != string::npos ) {
00523
00524 for(uint filterKeyIndex=0;filterKeyIndex<triggerEvent.filterKeys(filterIndex).size();++filterKeyIndex){
00525 Keys.push_back(triggerEvent.filterKeys(filterIndex)[filterKeyIndex]);
00526 }
00527
00528 }
00529
00530 }
00531
00532
00533
00534 sort(Keys.begin(),Keys.end());
00535 for ( uint i=0 ; i<Keys.size() ; )
00536 {
00537 if (i!=(Keys.size()-1))
00538 {
00539 if (Keys[i]==Keys[i+1]) Keys.erase(Keys.begin()+i+1) ;
00540 else ++i ;
00541 }
00542 else ++i ;
00543 }
00544
00545
00546
00547 int photonCounter = 0;
00548
00550
00551 for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
00552
00553
00554
00555
00556 h_phoEta_preHLT_->Fill((*iPho).eta());
00557 h_phoEt_preHLT_->Fill( (*iPho).et());
00558
00559
00560 double deltaR=1000.;
00561 double deltaRMin=1000.;
00562 double deltaRMax=0.05;
00563
00564
00565 for (vector<int>::const_iterator objectKey=Keys.begin();objectKey!=Keys.end();objectKey++){
00566
00567 deltaR = reco::deltaR(triggerEvent.getObjects()[(*objectKey)].eta(),triggerEvent.getObjects()[(*objectKey)].phi(),(*iPho).superCluster()->eta(),(*iPho).superCluster()->phi());
00568 if(deltaR < deltaRMin) deltaRMin = deltaR;
00569
00570 }
00571
00572 if(deltaRMin > deltaRMax) {
00573 if(useTriggerFiltering_) continue;
00574 }
00575
00576 if(deltaRMin <= deltaRMax) {
00577 h_phoEta_postHLT_->Fill((*iPho).eta() );
00578 h_phoEt_postHLT_->Fill( (*iPho).et() );
00579 }
00580
00581 if ((*iPho).et() < minPhoEtCut_) continue;
00582
00583 nEntry_++;
00584
00585 edm::Ref<reco::PhotonCollection> photonref(photonHandle, photonCounter);
00586 photonCounter++;
00587
00588 bool isLoosePhoton(false), isTightPhoton(false);
00589 if ( !isHeavyIon_ ) {
00590 isLoosePhoton = (loosePhotonID)[photonref];
00591 isTightPhoton = (tightPhotonID)[photonref];
00592 }
00593
00594
00595
00596
00597 bool phoIsInBarrel=false;
00598 bool phoIsInEndcap=false;
00599 float etaPho = (*iPho).superCluster()->eta();
00600 if ( fabs(etaPho) < 1.479 )
00601 phoIsInBarrel=true;
00602 else {
00603 phoIsInEndcap=true;
00604 }
00605
00606 int part = 0;
00607 if ( phoIsInBarrel ) part = 1;
00608 if ( phoIsInEndcap ) part = 2;
00609
00611 bool isIsolated=false;
00612 if ( isolationStrength_ == 0) isIsolated = isLoosePhoton;
00613 if ( isolationStrength_ == 1) isIsolated = isTightPhoton;
00614
00615 int type=0;
00616 if ( isIsolated ) type=1;
00617 if ( !excludeBkgHistos_ && !isIsolated ) type=2;
00618
00619
00620
00621 bool validEcalRecHits=true;
00622 edm::Handle<EcalRecHitCollection> ecalRecHitHandle;
00623 EcalRecHitCollection ecalRecHitCollection;
00624 if ( phoIsInBarrel ) {
00625
00626 e.getByLabel(barrelRecHitProducer_, barrelRecHitCollection_, ecalRecHitHandle);
00627 if (!ecalRecHitHandle.isValid()) {
00628 edm::LogError("PhotonAnalyzer") << "Error! Can't get the product "<<barrelRecHitProducer_;
00629 validEcalRecHits=false;
00630 }
00631 }
00632 else if ( phoIsInEndcap ) {
00633
00634 e.getByLabel(endcapRecHitProducer_, endcapRecHitCollection_, ecalRecHitHandle);
00635 if (!ecalRecHitHandle.isValid()) {
00636 edm::LogError("PhotonAnalyzer") << "Error! Can't get the product "<<endcapRecHitProducer_;
00637 validEcalRecHits=false;
00638 }
00639 }
00640 if (validEcalRecHits) ecalRecHitCollection = *(ecalRecHitHandle.product());
00641
00642
00643
00644
00645
00646
00647 if(isLoosePhoton){
00648 h_phoEta_Loose_->Fill((*iPho).eta());
00649 h_phoEt_Loose_->Fill( (*iPho).et() );
00650 }
00651 if(isTightPhoton){
00652 h_phoEta_Tight_->Fill((*iPho).eta());
00653 h_phoEt_Tight_->Fill( (*iPho).et() );
00654 }
00655
00656
00657
00658 for (int cut = 0; cut !=numberOfSteps_; ++cut) {
00659 double Et = (*iPho).et();
00660 bool passesCuts = false;
00661
00662
00663 if ( useBinning_ && Et > (cut+1)*cutStep_ && ( (Et < (cut+2)*cutStep_) | (cut == numberOfSteps_-1) ) ){
00664 passesCuts = true;
00665 }
00666 else if ( !useBinning_ && Et > (cut+1)*cutStep_ ){
00667 passesCuts = true;
00668 }
00669
00670 if (passesCuts){
00671
00672
00673
00674
00675 fill2DHistoVector(h_nTrackIsolSolid_, (*iPho).nTrkSolidConeDR04(), cut,type);
00676 fill2DHistoVector(h_nTrackIsolHollow_,(*iPho).nTrkHollowConeDR04(),cut,type);
00677
00678 fill2DHistoVector(h_nTrackIsolSolidVsEta_, (*iPho).eta(),(*iPho).nTrkSolidConeDR04(), cut,type);
00679 fill2DHistoVector(p_nTrackIsolSolidVsEta_, (*iPho).eta(),(*iPho).nTrkSolidConeDR04(), cut,type);
00680 fill2DHistoVector(h_nTrackIsolHollowVsEta_,(*iPho).eta(),(*iPho).nTrkHollowConeDR04(),cut,type);
00681 fill2DHistoVector(p_nTrackIsolHollowVsEta_,(*iPho).eta(),(*iPho).nTrkHollowConeDR04(),cut,type);
00682
00683 fill2DHistoVector(h_nTrackIsolSolidVsEt_, (*iPho).et(), (*iPho).nTrkSolidConeDR04(), cut,type);
00684 fill2DHistoVector(p_nTrackIsolSolidVsEt_, (*iPho).et(), (*iPho).nTrkSolidConeDR04(), cut,type);
00685 fill2DHistoVector(h_nTrackIsolHollowVsEt_, (*iPho).et(), (*iPho).nTrkHollowConeDR04(),cut,type);
00686 fill2DHistoVector(p_nTrackIsolHollowVsEt_, (*iPho).et(), (*iPho).nTrkHollowConeDR04(),cut,type);
00687
00689 fill2DHistoVector(h_trackPtSumSolid_, (*iPho).trkSumPtSolidConeDR04(),cut,type);
00690 fill2DHistoVector(h_trackPtSumHollow_,(*iPho).trkSumPtSolidConeDR04(),cut,type);
00691
00692 fill2DHistoVector(h_trackPtSumSolidVsEta_, (*iPho).eta(),(*iPho).trkSumPtSolidConeDR04(), cut,type);
00693 fill2DHistoVector(p_trackPtSumSolidVsEta_, (*iPho).eta(),(*iPho).trkSumPtSolidConeDR04(), cut,type);
00694 fill2DHistoVector(h_trackPtSumHollowVsEta_,(*iPho).eta(),(*iPho).trkSumPtHollowConeDR04(),cut,type);
00695 fill2DHistoVector(p_trackPtSumHollowVsEta_,(*iPho).eta(),(*iPho).trkSumPtHollowConeDR04(),cut,type);
00696
00697 fill2DHistoVector(h_trackPtSumSolidVsEt_, (*iPho).et(), (*iPho).trkSumPtSolidConeDR04(), cut,type);
00698 fill2DHistoVector(p_trackPtSumSolidVsEt_, (*iPho).et(), (*iPho).trkSumPtSolidConeDR04(), cut,type);
00699 fill2DHistoVector(h_trackPtSumHollowVsEt_, (*iPho).et(), (*iPho).trkSumPtHollowConeDR04(),cut,type);
00700 fill2DHistoVector(p_trackPtSumHollowVsEt_, (*iPho).et(), (*iPho).trkSumPtHollowConeDR04(),cut,type);
00701
00702
00703 fill2DHistoVector(h_ecalSum_,(*iPho).ecalRecHitSumEtConeDR04(),cut,type);
00704 if(iPho->isEB()){fill2DHistoVector(h_ecalSumEBarrel_,(*iPho).ecalRecHitSumEtConeDR04(),cut,type);}
00705 if(iPho->isEE()){fill2DHistoVector(h_ecalSumEEndcap_,(*iPho).ecalRecHitSumEtConeDR04(),cut,type);}
00706 fill2DHistoVector(h_ecalSumVsEta_,(*iPho).eta(),(*iPho).ecalRecHitSumEtConeDR04(),cut,type);
00707 fill2DHistoVector(p_ecalSumVsEta_,(*iPho).eta(),(*iPho).ecalRecHitSumEtConeDR04(),cut,type);
00708 fill2DHistoVector(h_ecalSumVsEt_, (*iPho).et(), (*iPho).ecalRecHitSumEtConeDR04(),cut,type);
00709 fill3DHistoVector(p_ecalSumVsEt_, (*iPho).et(), (*iPho).ecalRecHitSumEtConeDR04(),cut,type,part);
00710
00712
00713 fill2DHistoVector(h_hcalSum_,(*iPho).hcalTowerSumEtConeDR04(),cut,type);
00714 if(iPho->isEB()){fill2DHistoVector(h_hcalSumEBarrel_,(*iPho).hcalTowerSumEtConeDR04(),cut,type);}
00715 if(iPho->isEE()){fill2DHistoVector(h_hcalSumEEndcap_,(*iPho).hcalTowerSumEtConeDR04(),cut,type);}
00716 fill2DHistoVector(h_hcalSumVsEta_,(*iPho).eta(),(*iPho).hcalTowerSumEtConeDR04(),cut,type);
00717 fill2DHistoVector(p_hcalSumVsEta_,(*iPho).eta(),(*iPho).hcalTowerSumEtConeDR04(),cut,type);
00718 fill2DHistoVector(h_hcalSumVsEt_, (*iPho).et(), (*iPho).hcalTowerSumEtConeDR04(),cut,type);
00719 fill3DHistoVector(p_hcalSumVsEt_, (*iPho).et(), (*iPho).hcalTowerSumEtConeDR04(),cut,type,part);
00720
00721 fill3DHistoVector(h_hOverE_,(*iPho).hadronicOverEm(),cut,type,part);
00722 fill2DHistoVector(p_hOverEVsEta_,(*iPho).eta(),(*iPho).hadronicOverEm(),cut,type);
00723 fill2DHistoVector(p_hOverEVsEt_, (*iPho).et(), (*iPho).hadronicOverEm(),cut,type);
00724
00725 fill3DHistoVector(h_h1OverE_,(*iPho).hadronicDepth1OverEm(),cut,type,part);
00726 fill3DHistoVector(h_h2OverE_,(*iPho).hadronicDepth2OverEm(),cut,type,part);
00727
00728
00729
00730 nPho[cut][0][0]++;
00731 nPho[cut][0][part]++;
00732 nPho[cut][type][0]++;
00733 nPho[cut][type][part]++;
00734
00735
00736
00737 fill3DHistoVector(h_phoE_, (*iPho).energy(),cut,type,part);
00738 fill3DHistoVector(h_phoEt_,(*iPho).et(), cut,type,part);
00739
00740
00741
00742 fill2DHistoVector(h_phoEta_,(*iPho).eta(),cut,type);
00743 fill2DHistoVector(h_scEta_, (*iPho).superCluster()->eta(),cut,type);
00744
00745 fill3DHistoVector(h_phoPhi_,(*iPho).phi(),cut,type,part);
00746 fill3DHistoVector(h_scPhi_, (*iPho).superCluster()->phi(),cut,type,part);
00747
00748
00749
00750 fill3DHistoVector(h_r9_,(*iPho).r9(),cut,type,part);
00751 fill2DHistoVector(h_r9VsEta_,(*iPho).eta(),(*iPho).r9(),cut,type);
00752 fill2DHistoVector(p_r9VsEta_,(*iPho).eta(),(*iPho).r9(),cut,type);
00753 fill2DHistoVector(h_r9VsEt_, (*iPho).et(), (*iPho).r9(),cut,type);
00754 fill2DHistoVector(p_r9VsEt_, (*iPho).et(), (*iPho).r9(),cut,type);
00755
00756 fill2DHistoVector(h_e1x5VsEta_,(*iPho).eta(),(*iPho).e1x5(),cut,type);
00757 fill2DHistoVector(p_e1x5VsEta_,(*iPho).eta(),(*iPho).e1x5(),cut,type);
00758 fill2DHistoVector(h_e1x5VsEt_, (*iPho).et(), (*iPho).e1x5(),cut,type);
00759 fill2DHistoVector(p_e1x5VsEt_, (*iPho).et(), (*iPho).e1x5(),cut,type);
00760
00761 fill2DHistoVector(h_e2x5VsEta_,(*iPho).eta(),(*iPho).e2x5(),cut,type);
00762 fill2DHistoVector(p_e2x5VsEta_,(*iPho).eta(),(*iPho).e2x5(),cut,type);
00763 fill2DHistoVector(h_e2x5VsEt_, (*iPho).et(), (*iPho).e2x5(),cut,type);
00764 fill2DHistoVector(p_e2x5VsEt_, (*iPho).et(), (*iPho).e2x5(),cut,type);
00765
00766 fill2DHistoVector(h_maxEXtalOver3x3VsEta_,(*iPho).eta(),(*iPho).maxEnergyXtal()/(*iPho).e3x3(),cut,type);
00767 fill2DHistoVector(p_maxEXtalOver3x3VsEta_,(*iPho).eta(),(*iPho).maxEnergyXtal()/(*iPho).e3x3(),cut,type);
00768 fill2DHistoVector(h_maxEXtalOver3x3VsEt_, (*iPho).et(), (*iPho).maxEnergyXtal()/(*iPho).e3x3(),cut,type);
00769 fill2DHistoVector(p_maxEXtalOver3x3VsEt_, (*iPho).et(), (*iPho).maxEnergyXtal()/(*iPho).e3x3(),cut,type);
00770
00771
00772 fill2DHistoVector(h_r1x5VsEta_,(*iPho).eta(),(*iPho).r1x5(),cut,type);
00773 fill2DHistoVector(p_r1x5VsEta_,(*iPho).eta(),(*iPho).r1x5(),cut,type);
00774 fill2DHistoVector(h_r1x5VsEt_, (*iPho).et(), (*iPho).r1x5(),cut,type);
00775 fill2DHistoVector(p_r1x5VsEt_, (*iPho).et(), (*iPho).r1x5(),cut,type);
00776
00777 fill2DHistoVector(h_r2x5VsEta_,(*iPho).eta(),(*iPho).r2x5(),cut,type);
00778 fill2DHistoVector(p_r2x5VsEta_,(*iPho).eta(),(*iPho).r2x5(),cut,type);
00779 fill2DHistoVector(h_r2x5VsEt_, (*iPho).et(), (*iPho).r2x5(),cut,type);
00780 fill2DHistoVector(p_r2x5VsEt_, (*iPho).et(), (*iPho).r2x5(),cut,type);
00781
00782 fill3DHistoVector(h_phoSigmaIetaIeta_,(*iPho).sigmaIetaIeta(),cut,type,part);
00783 fill2DHistoVector(h_sigmaIetaIetaVsEta_,(*iPho).eta(),(*iPho).sigmaIetaIeta(),cut,type);
00784 fill2DHistoVector(p_sigmaIetaIetaVsEta_,(*iPho).eta(),(*iPho).sigmaIetaIeta(),cut,type);
00785
00786
00787
00788
00789
00790 bool atLeastOneDeadChannel=false;
00791 for(reco::CaloCluster_iterator bcIt = (*iPho).superCluster()->clustersBegin();bcIt != (*iPho).superCluster()->clustersEnd(); ++bcIt) {
00792 for(vector< pair<DetId, float> >::const_iterator rhIt = (*bcIt)->hitsAndFractions().begin();rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
00793
00794 for(EcalRecHitCollection::const_iterator it = ecalRecHitCollection.begin(); it != ecalRecHitCollection.end(); ++it) {
00795 if (rhIt->first == (*it).id() ) {
00796 if ( (*it).recoFlag() == 9 ) {
00797 atLeastOneDeadChannel=true;
00798 break;
00799 }
00800 }
00801 }
00802 }
00803 }
00804 if ( atLeastOneDeadChannel ) {
00805 fill2DHistoVector(h_phoPhi_BadChannels_,(*iPho).phi(),cut,type);
00806 fill2DHistoVector(h_phoEta_BadChannels_,(*iPho).eta(),cut,type);
00807 fill2DHistoVector(h_phoEt_BadChannels_, (*iPho).et(), cut,type);
00808 }
00809
00810
00811
00812 if((*iPho).hasConversionTracks()){
00813 nConv[cut][0][0]++;
00814 nConv[cut][0][part]++;
00815 nConv[cut][type][0]++;
00816 nConv[cut][type][part]++;
00817 }
00818
00819
00820
00821 reco::ConversionRefVector conversions = (*iPho).conversions();
00822 for (unsigned int iConv=0; iConv<conversions.size(); iConv++) {
00823
00824 reco::ConversionRef aConv=conversions[iConv];
00825
00826 if ( aConv->nTracks() <2 ) continue;
00827
00828
00829 if(cut==0) h_phoEta_Vertex_->Fill(aConv->refittedPairMomentum().eta());
00830
00831 if ( !(aConv->conversionVertex().isValid()) ) continue;
00832
00833 float chi2Prob = ChiSquaredProbability( aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof() );
00834
00835 if(chi2Prob<0.0005) continue;
00836
00837 fill2DHistoVector(h_vertexChi2Prob_,chi2Prob,cut,type);
00838
00839
00840
00841 fill3DHistoVector(h_phoConvE_, (*iPho).energy(),cut,type,part);
00842 fill3DHistoVector(h_phoConvEt_,(*iPho).et(),cut,type,part);
00843 fill3DHistoVector(h_phoConvR9_,(*iPho).r9(),cut,type,part);
00844
00845 if (cut==0 && isLoosePhoton){
00846 h_convEta_Loose_->Fill((*iPho).eta());
00847 h_convEt_Loose_->Fill( (*iPho).et() );
00848 }
00849 if (cut==0 && isTightPhoton){
00850 h_convEta_Tight_->Fill((*iPho).eta());
00851 h_convEt_Tight_->Fill( (*iPho).et() );
00852 }
00853
00854 fill2DHistoVector(h_phoConvEta_,aConv->refittedPairMomentum().eta(),cut,type);
00855 fill3DHistoVector(h_phoConvPhi_,aConv->refittedPairMomentum().phi(),cut,type,part);
00856
00857
00858
00859 fill2DHistoVector(h_phoConvEtaForEfficiency_,(*iPho).eta(),cut,type);
00860 fill3DHistoVector(h_phoConvPhiForEfficiency_,(*iPho).phi(),cut,type,part);
00861
00862
00863
00864 double convR= sqrt(aConv->conversionVertex().position().perp2());
00865 double scalar = aConv->conversionVertex().position().x()*aConv->refittedPairMomentum().x() + aConv->conversionVertex().position().y()*aConv->refittedPairMomentum().y();
00866 if ( scalar < 0 ) convR= -convR;
00867
00868 fill2DHistoVector(h_convVtxRvsZ_,aConv->conversionVertex().position().z(), convR,cut,type);
00869 fill2DHistoVector(h_convVtxZ_,aConv->conversionVertex().position().z(), cut,type);
00870
00871 if(fabs(aConv->caloCluster()[0]->eta()) > 1.5){
00872 fill2DHistoVector(h_convVtxZEndcap_,aConv->conversionVertex().position().z(), cut,type);
00873 }
00874 else if(fabs(aConv->caloCluster()[0]->eta()) < 1){
00875 fill2DHistoVector(h_convVtxR_,convR,cut,type);
00876 fill2DHistoVector(h_convVtxYvsX_,aConv->conversionVertex().position().x(),aConv->conversionVertex().position().y(),cut,type);
00877 }
00878
00879 const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
00880
00881
00882 for (unsigned int i=0; i<tracks.size(); i++) {
00883 fill2DHistoVector(h_tkChi2_,tracks[i]->normalizedChi2(),cut,type);
00884 fill2DHistoVector(p_tkChi2VsEta_,aConv->caloCluster()[0]->eta(),tracks[i]->normalizedChi2(),cut,type);
00885 fill2DHistoVector(p_dCotTracksVsEta_,aConv->caloCluster()[0]->eta(),aConv->pairCotThetaSeparation(),cut,type);
00886 fill2DHistoVector(p_nHitsVsEta_,aConv->caloCluster()[0]->eta(),float(tracks[i]->numberOfValidHits()),cut,type);
00887 }
00888
00889
00890
00891 float DPhiTracksAtVtx = -99;
00892 float dPhiTracksAtEcal= -99;
00893 float dEtaTracksAtEcal= -99;
00894
00895 float phiTk1= aConv->tracksPin()[0].phi();
00896 float phiTk2= aConv->tracksPin()[1].phi();
00897 DPhiTracksAtVtx = phiTk1-phiTk2;
00898 DPhiTracksAtVtx = phiNormalization( DPhiTracksAtVtx );
00899
00900 if (aConv->bcMatchingWithTracks()[0].isNonnull() && aConv->bcMatchingWithTracks()[1].isNonnull() ) {
00901 float recoPhi1 = aConv->ecalImpactPosition()[0].phi();
00902 float recoPhi2 = aConv->ecalImpactPosition()[1].phi();
00903 float recoEta1 = aConv->ecalImpactPosition()[0].eta();
00904 float recoEta2 = aConv->ecalImpactPosition()[1].eta();
00905
00906 recoPhi1 = phiNormalization(recoPhi1);
00907 recoPhi2 = phiNormalization(recoPhi2);
00908
00909 dPhiTracksAtEcal = recoPhi1 -recoPhi2;
00910 dPhiTracksAtEcal = phiNormalization( dPhiTracksAtEcal );
00911 dEtaTracksAtEcal = recoEta1 -recoEta2;
00912
00913 }
00914
00915
00916 fill3DHistoVector(h_dPhiTracksAtVtx_,DPhiTracksAtVtx,cut,type,part);
00917 fill3DHistoVector(h_dPhiTracksAtEcal_,fabs(dPhiTracksAtEcal),cut,type,part);
00918 fill3DHistoVector(h_dEtaTracksAtEcal_, dEtaTracksAtEcal,cut,type,part);
00919 fill3DHistoVector(h_eOverPTracks_,aConv->EoverPrefittedTracks(),cut,type,part);
00920 fill3DHistoVector(h_pOverETracks_,1./aConv->EoverPrefittedTracks(),cut,type,part);
00921 fill3DHistoVector(h_dCotTracks_,aConv->pairCotThetaSeparation(),cut,type,part);
00922
00923
00924 }
00925
00926 }
00927 }
00928
00929
00930
00931
00932
00933
00934
00935 if (isIsolated && iPho->et()>=invMassEtCut_){
00936
00937 for (reco::PhotonCollection::const_iterator iPho2=iPho+1; iPho2!=photonCollection.end(); iPho2++){
00938
00939 edm::Ref<reco::PhotonCollection> photonref2(photonHandle, photonCounter);
00940
00941
00942 bool isTightPhoton2(false), isLoosePhoton2(false);
00943
00944 if ( !isHeavyIon_ ) {
00945 isTightPhoton2 = (tightPhotonID)[photonref2];
00946 isLoosePhoton2 = (loosePhotonID)[photonref2];
00947 }
00948
00949 bool isIsolated2=false;
00950 if ( isolationStrength_ == 0) isIsolated2 = isLoosePhoton2;
00951 if ( isolationStrength_ == 1) isIsolated2 = isTightPhoton2;
00952
00953 reco::ConversionRefVector conversions = (*iPho).conversions();
00954 reco::ConversionRefVector conversions2 = (*iPho2).conversions();
00955
00956 if(isIsolated2 && iPho2->et()>=invMassEtCut_){
00957
00958 math::XYZTLorentzVector p12 = iPho->p4()+iPho2->p4();
00959 float gamgamMass2 = p12.Dot(p12);
00960
00961
00962 h_invMassAllPhotons_ -> Fill(sqrt( gamgamMass2 ));
00963 if(iPho->isEB() && iPho2->isEB()){h_invMassPhotonsEBarrel_ -> Fill(sqrt( gamgamMass2 ));}
00964 if(iPho->isEE() || iPho2->isEE()){h_invMassPhotonsEEndcap_ -> Fill(sqrt( gamgamMass2 ));}
00965
00966 if(conversions.size()!=0 && conversions[0]->nTracks() >= 2){
00967 if(conversions2.size()!=0 && conversions2[0]->nTracks() >= 2) h_invMassTwoWithTracks_ -> Fill(sqrt( gamgamMass2 ));
00968 else h_invMassOneWithTracks_ -> Fill(sqrt( gamgamMass2 ));
00969 }
00970 else if(conversions2.size()!=0 && conversions2[0]->nTracks() >= 2) h_invMassOneWithTracks_ -> Fill(sqrt( gamgamMass2 ));
00971 else h_invMassZeroWithTracks_ -> Fill(sqrt( gamgamMass2 ));
00972 }
00973
00974 }
00975
00976 }
00977
00978
00979
00980 }
00981
00982
00983
00984 for (int cut = 0; cut !=numberOfSteps_; ++cut) {
00985 for(uint type=0;type!=types_.size();++type){
00986 for(uint part=0;part!=parts_.size();++part){
00987 h_nPho_[cut][type][part]-> Fill (float(nPho[cut][type][part]));
00988 h_nConv_[cut][type][part]-> Fill (float(nConv[cut][type][part]));
00989 }
00990 }
00991 }
00992
00993 }
00994
00995 void PhotonAnalyzer::endRun(const edm::Run& run, const edm::EventSetup& setup)
00996 {
00997 if(!standAlone_){
00998
00999 dbe_->setCurrentFolder("Egamma/PhotonAnalyzer");
01000
01001
01002 totalNumberOfHistos_efficiencyFolder->Fill(histo_index_efficiency_);
01003 totalNumberOfHistos_invMassFolder->Fill(histo_index_invMass_);
01004 totalNumberOfHistos_photonsFolder->Fill(histo_index_photons_);
01005 totalNumberOfHistos_conversionsFolder->Fill(histo_index_conversions_);
01006
01007 }
01008
01009 }
01010
01011
01012 void PhotonAnalyzer::endJob()
01013 {
01014
01015 if(standAlone_){
01016 dbe_->setCurrentFolder("Egamma/PhotonAnalyzer");
01017
01018
01019 totalNumberOfHistos_efficiencyFolder->Fill(histo_index_efficiency_);
01020 totalNumberOfHistos_invMassFolder->Fill(histo_index_invMass_);
01021 totalNumberOfHistos_photonsFolder->Fill(histo_index_photons_);
01022 totalNumberOfHistos_conversionsFolder->Fill(histo_index_conversions_);
01023
01024
01025 dbe_->save(outputFileName_);
01026 }
01027
01028
01029 }
01030
01032
01033
01034
01035 float PhotonAnalyzer::phiNormalization(float & phi)
01036 {
01037 const float PI = 3.1415927;
01038 const float TWOPI = 2.0*PI;
01039
01040 if(phi > PI) {phi = phi - TWOPI;}
01041 if(phi < -PI) {phi = phi + TWOPI;}
01042
01043 return phi;
01044 }
01045
01046
01047 void PhotonAnalyzer::fill2DHistoVector(vector<vector<MonitorElement*> >& histoVector,double x, double y, int cut, int type){
01048
01049 histoVector[cut][0]->Fill(x,y);
01050 if(histoVector[cut].size()>1) histoVector[cut][type]->Fill(x,y);
01051
01052 }
01053
01054 void PhotonAnalyzer::fill2DHistoVector(vector<vector<MonitorElement*> >& histoVector, double x, int cut, int type){
01055
01056 histoVector[cut][0]->Fill(x);
01057 histoVector[cut][type]->Fill(x);
01058
01059 }
01060
01061 void PhotonAnalyzer::fill3DHistoVector(vector<vector<vector<MonitorElement*> > >& histoVector,double x, int cut, int type, int part){
01062
01063 histoVector[cut][0][0]->Fill(x);
01064 histoVector[cut][0][part]->Fill(x);
01065 histoVector[cut][type][0]->Fill(x);
01066 histoVector[cut][type][part]->Fill(x);
01067
01068 }
01069
01070 void PhotonAnalyzer::fill3DHistoVector(vector<vector<vector<MonitorElement*> > >& histoVector,double x, double y, int cut, int type, int part){
01071
01072 histoVector[cut][0][0]->Fill(x,y);
01073 histoVector[cut][0][part]->Fill(x,y);
01074 histoVector[cut][type][0]->Fill(x,y);
01075 histoVector[cut][type][part]->Fill(x,y);
01076
01077 }
01078
01079
01080 MonitorElement* PhotonAnalyzer::bookHisto(string histoName, string title, int bin, double min, double max)
01081 {
01082
01083 int histo_index = 0;
01084 stringstream histo_number_stream;
01085
01086
01087 if(dbe_->pwd().find( "InvMass" ) != string::npos){
01088 histo_index_invMass_++;
01089 histo_index = histo_index_invMass_;
01090 }
01091 if(dbe_->pwd().find( "Efficiencies" ) != string::npos){
01092 histo_index_efficiency_++;
01093 histo_index = histo_index_efficiency_;
01094 }
01095
01096 histo_number_stream << "h_";
01097 if(histo_index<10) histo_number_stream << "0";
01098 histo_number_stream << histo_index;
01099
01100 return dbe_->book1D(histo_number_stream.str()+"_"+histoName,title,bin,min,max);
01101
01102 }
01103
01104
01105 void PhotonAnalyzer::book2DHistoVector(vector<vector<MonitorElement*> > &temp2DVector,
01106 string histoType, string histoName, string title,
01107 int xbin, double xmin,double xmax,
01108 int ybin, double ymin, double ymax)
01109 {
01110 int histo_index = 0;
01111
01112 vector<MonitorElement*> temp1DVector;
01113
01114
01115
01116 bool conversionPlot = false;
01117 if(dbe_->pwd().find( "Conversions" ) != string::npos) conversionPlot = true;
01118 bool TwoDPlot = false;
01119 if(histoName.find( "2D" ) != string::npos) TwoDPlot = true;
01120
01121 if(conversionPlot){
01122 histo_index_conversions_++;
01123 histo_index = histo_index_conversions_;
01124 }
01125 else{
01126 histo_index_photons_++;
01127 histo_index = histo_index_photons_;
01128 }
01129
01130 stringstream histo_number_stream;
01131 histo_number_stream << "h_";
01132 if(histo_index<10) histo_number_stream << "0";
01133 histo_number_stream << histo_index << "_";
01134
01135
01136
01137 for(int cut = 0; cut != numberOfSteps_; ++cut){
01138
01139 for(uint type=0;type!=types_.size();++type){
01140
01141 currentFolder_.str("");
01142 currentFolder_ << "Egamma/PhotonAnalyzer/" << types_[type] << "Photons/Et above " << (cut+1)*cutStep_ << " GeV";
01143 if(conversionPlot) currentFolder_ << "/Conversions";
01144
01145 dbe_->setCurrentFolder(currentFolder_.str());
01146
01147 string kind;
01148 if(conversionPlot) kind = " Conversions: ";
01149 else kind = " Photons: ";
01150
01151 if(histoType=="1D") temp1DVector.push_back(dbe_->book1D( histo_number_stream.str()+histoName,types_[type]+kind+title,xbin,xmin,xmax));
01152 else if(histoType=="2D"){
01153 if((TwoDPlot && type==0) || !TwoDPlot){
01154 temp1DVector.push_back(dbe_->book2D( histo_number_stream.str()+histoName,types_[type]+kind+title,xbin,xmin,xmax,ybin,ymin,ymax));
01155 }
01156 }
01157 else if(histoType=="Profile") temp1DVector.push_back(dbe_->bookProfile( histo_number_stream.str()+histoName,types_[type]+kind+title,xbin,xmin,xmax,ybin,ymin,ymax,""));
01158 else cout << "bad histoType\n";
01159 }
01160
01161 temp2DVector.push_back(temp1DVector);
01162 temp1DVector.clear();
01163 }
01164
01165
01166
01167 }
01168
01169
01170 void PhotonAnalyzer::book3DHistoVector(vector<vector<vector<MonitorElement*> > > &temp3DVector,
01171 string histoType, string histoName, string title,
01172 int xbin, double xmin,double xmax,
01173 int ybin, double ymin, double ymax)
01174 {
01175
01176
01177 int histo_index = 0;
01178
01179 vector<MonitorElement*> temp1DVector;
01180 vector<vector<MonitorElement*> > temp2DVector;
01181
01182
01183
01184
01185 bool conversionPlot = false;
01186 if(dbe_->pwd().find( "Conversions" ) != string::npos) conversionPlot = true;
01187
01188
01189 if(conversionPlot){
01190 histo_index_conversions_++;
01191 histo_index = histo_index_conversions_;
01192 }
01193 else{
01194 histo_index_photons_++;
01195 histo_index = histo_index_photons_;
01196 }
01197
01198
01199
01200 stringstream histo_number_stream;
01201 histo_number_stream << "h_";
01202 if(histo_index<10) histo_number_stream << "0";
01203 histo_number_stream << histo_index << "_";
01204
01205 for(int cut = 0; cut != numberOfSteps_; ++cut){
01206
01207 for(uint type=0;type!=types_.size();++type){
01208
01209 for(uint part=0;part!=parts_.size();++part){
01210
01211 currentFolder_.str("");
01212 currentFolder_ << "Egamma/PhotonAnalyzer/" << types_[type] << "Photons/Et above " << (cut+1)*cutStep_ << " GeV";
01213 if(conversionPlot) currentFolder_ << "/Conversions";
01214
01215 dbe_->setCurrentFolder(currentFolder_.str());
01216
01217 string kind;
01218 if(conversionPlot) kind = " Conversions: ";
01219 else kind = " Photons: ";
01220
01221 if(histoType=="1D") temp1DVector.push_back(dbe_->book1D( histo_number_stream.str()+histoName+parts_[part],types_[type]+kind+parts_[part]+": "+title,xbin,xmin,xmax));
01222 else if(histoType=="2D") temp1DVector.push_back(dbe_->book2D( histo_number_stream.str()+histoName+parts_[part],types_[type]+kind+parts_[part]+": "+title,xbin,xmin,xmax,ybin,ymin,ymax));
01223 else if(histoType=="Profile") temp1DVector.push_back(dbe_->bookProfile( histo_number_stream.str()+histoName+parts_[part],types_[type]+kind+parts_[part]+": "+title,xbin,xmin,xmax,ybin,ymin,ymax,""));
01224 else cout << "bad histoType\n";
01225
01226
01227 }
01228
01229 temp2DVector.push_back(temp1DVector);
01230 temp1DVector.clear();
01231 }
01232
01233 temp3DVector.push_back(temp2DVector);
01234 temp2DVector.clear();
01235 }
01236
01237
01238 }