CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC4_patch1/src/DQMOffline/EGamma/plugins/ZToMuMuGammaAnalyzer.cc

Go to the documentation of this file.
00001 #include <iostream>
00002 #include <iomanip>
00003 //
00004 
00005 #include "DQMOffline/EGamma/plugins/ZToMuMuGammaAnalyzer.h"
00006 #include "CommonTools/UtilAlgos/interface/DeltaR.h"
00007 
00008 
00020 using namespace std;
00021 
00022 
00023 ZToMuMuGammaAnalyzer::ZToMuMuGammaAnalyzer( const edm::ParameterSet& pset )
00024 {
00025 
00026     fName_                  = pset.getUntrackedParameter<string>("Name");
00027     verbosity_              = pset.getUntrackedParameter<int>("Verbosity");
00028     prescaleFactor_         = pset.getUntrackedParameter<int>("prescaleFactor",1);
00029     standAlone_             = pset.getParameter<bool>("standAlone");
00030     outputFileName_         = pset.getParameter<string>("OutputFileName");
00031     isHeavyIon_             = pset.getUntrackedParameter<bool>("isHeavyIon",false);
00032     triggerEvent_           = pset.getParameter<edm::InputTag>("triggerEvent");
00033     useTriggerFiltering_    = pset.getParameter<bool>("useTriggerFiltering");
00034     splitHistosEBEE_        = pset.getParameter<bool>("splitHistosEBEE");
00035     use2DHistos_            = pset.getParameter<bool>("use2DHistos");
00036     
00037     photonProducer_         = pset.getParameter<string>("phoProducer");
00038     photonCollection_       = pset.getParameter<string>("photonCollection");
00039 
00040     barrelRecHitProducer_   = pset.getParameter<string>("barrelRecHitProducer");
00041     barrelRecHitCollection_ = pset.getParameter<string>("barrelRecHitCollection");
00042 
00043     endcapRecHitProducer_   = pset.getParameter<string>("endcapRecHitProducer");
00044     endcapRecHitCollection_ = pset.getParameter<string>("endcapRecHitCollection");
00045 
00046     muonProducer_         = pset.getParameter<string>("muonProducer");
00047     muonCollection_       = pset.getParameter<string>("muonCollection");
00048     // Muon selection
00049     muonMinPt_             = pset.getParameter<double>("muonMinPt");
00050     minPixStripHits_       = pset.getParameter<int>("minPixStripHits");
00051     muonMaxChi2_           = pset.getParameter<double>("muonMaxChi2");
00052     muonMaxDxy_            = pset.getParameter<double>("muonMaxDxy");
00053     muonMatches_           = pset.getParameter<int>("muonMatches");
00054     validPixHits_          = pset.getParameter<int>("validPixHits");
00055     validMuonHits_         = pset.getParameter<int>("validMuonHits");
00056     muonTrackIso_          = pset.getParameter<double>("muonTrackIso");
00057     muonTightEta_          = pset.getParameter<double>("muonTightEta");
00058     // Dimuon selection
00059     minMumuInvMass_       = pset.getParameter<double>("minMumuInvMass");
00060     maxMumuInvMass_       = pset.getParameter<double>("maxMumuInvMass");
00061     // Photon selection
00062     photonMinEt_             = pset.getParameter<double>("photonMinEt");
00063     photonMaxEta_            = pset.getParameter<double>("photonMaxEta");
00064     photonTrackIso_          = pset.getParameter<double>("photonTrackIso");
00065     // mumuGamma selection
00066     nearMuonDr_               = pset.getParameter<double>("nearMuonDr");
00067     nearMuonHcalIso_          = pset.getParameter<double>("nearMuonHcalIso");
00068     farMuonEcalIso_           = pset.getParameter<double>("farMuonEcalIso");
00069     farMuonTrackIso_          = pset.getParameter<double>("farMuonTrackIso");
00070     farMuonMinPt_             = pset.getParameter<double>("farMuonMinPt");
00071     minMumuGammaInvMass_  = pset.getParameter<double>("minMumuGammaInvMass");
00072     maxMumuGammaInvMass_  = pset.getParameter<double>("maxMumuGammaInvMass");
00073     
00074     parameters_ = pset;
00075 
00076 }
00077 
00078 ZToMuMuGammaAnalyzer::~ZToMuMuGammaAnalyzer() {}
00079 
00080 void ZToMuMuGammaAnalyzer::beginJob()
00081 {
00082   nEvt_=0;
00083   nEntry_=0;
00084 
00085   dbe_ = 0;
00086   dbe_ = edm::Service<DQMStore>().operator->();
00087 
00088   double eMin = parameters_.getParameter<double>("eMin");
00089   double eMax = parameters_.getParameter<double>("eMax");
00090   int    eBin = parameters_.getParameter<int>("eBin");
00091 
00092   double etMin = parameters_.getParameter<double>("etMin");
00093   double etMax = parameters_.getParameter<double>("etMax");
00094   int    etBin = parameters_.getParameter<int>("etBin");
00095 
00096   double sumMin = parameters_.getParameter<double>("sumMin");
00097   double sumMax = parameters_.getParameter<double>("sumMax");
00098   int    sumBin = parameters_.getParameter<int>("sumBin");
00099 
00100   double etaMin = parameters_.getParameter<double>("etaMin");
00101   double etaMax = parameters_.getParameter<double>("etaMax");
00102   int    etaBin = parameters_.getParameter<int>("etaBin");
00103 
00104   double phiMin = parameters_.getParameter<double>("phiMin");
00105   double phiMax = parameters_.getParameter<double>("phiMax");
00106   int    phiBin = parameters_.getParameter<int>("phiBin");
00107 
00108   double r9Min = parameters_.getParameter<double>("r9Min");
00109   double r9Max = parameters_.getParameter<double>("r9Max");
00110   int    r9Bin = parameters_.getParameter<int>("r9Bin");
00111 
00112   double hOverEMin = parameters_.getParameter<double>("hOverEMin");
00113   double hOverEMax = parameters_.getParameter<double>("hOverEMax");
00114   int    hOverEBin = parameters_.getParameter<int>("hOverEBin");
00115 
00116 //   double xMin = parameters_.getParameter<double>("xMin");
00117 //   double xMax = parameters_.getParameter<double>("xMax");
00118 //   int    xBin = parameters_.getParameter<int>("xBin");
00119 
00120 //   double yMin = parameters_.getParameter<double>("yMin");
00121 //   double yMax = parameters_.getParameter<double>("yMax");
00122 //   int    yBin = parameters_.getParameter<int>("yBin");
00123 
00124   double numberMin = parameters_.getParameter<double>("numberMin");
00125   double numberMax = parameters_.getParameter<double>("numberMax");
00126   int    numberBin = parameters_.getParameter<int>("numberBin");
00127 
00128 //   double zMin = parameters_.getParameter<double>("zMin");
00129 //   double zMax = parameters_.getParameter<double>("zMax");
00130 //   int    zBin = parameters_.getParameter<int>("zBin");
00131 
00132 //   double rMin = parameters_.getParameter<double>("rMin");
00133 //   double rMax = parameters_.getParameter<double>("rMax");
00134 //   int    rBin = parameters_.getParameter<int>("rBin");
00135 
00136 //   double dPhiTracksMin = parameters_.getParameter<double>("dPhiTracksMin");
00137 //   double dPhiTracksMax = parameters_.getParameter<double>("dPhiTracksMax");
00138 //   int    dPhiTracksBin = parameters_.getParameter<int>("dPhiTracksBin");
00139 
00140 //   double dEtaTracksMin = parameters_.getParameter<double>("dEtaTracksMin");
00141 //   double dEtaTracksMax = parameters_.getParameter<double>("dEtaTracksMax");
00142 //   int    dEtaTracksBin = parameters_.getParameter<int>("dEtaTracksBin");
00143 
00144   double sigmaIetaMin = parameters_.getParameter<double>("sigmaIetaMin");
00145   double sigmaIetaMax = parameters_.getParameter<double>("sigmaIetaMax");
00146   int    sigmaIetaBin = parameters_.getParameter<int>("sigmaIetaBin");
00147 
00148 //   double eOverPMin = parameters_.getParameter<double>("eOverPMin");
00149 //   double eOverPMax = parameters_.getParameter<double>("eOverPMax");
00150 //   int    eOverPBin = parameters_.getParameter<int>("eOverPBin");
00151 
00152 //   double chi2Min = parameters_.getParameter<double>("chi2Min");
00153 //   double chi2Max = parameters_.getParameter<double>("chi2Max");
00154 //   int    chi2Bin = parameters_.getParameter<int>("chi2Bin");
00155 
00156 
00157   int reducedEtBin  = etBin/4;
00158   int reducedEtaBin = etaBin/4;
00159   int reducedSumBin = sumBin/4;
00160   int reducedR9Bin  = r9Bin/4;
00161 
00163 
00164   if (dbe_) {
00165 
00166 
00167     dbe_->setCurrentFolder("Egamma/PhotonAnalyzer/ZToMuMuGamma");
00168     
00169     h1_mumuInvMass_      = dbe_->book1D("mumuInvMass","Two muon invariant mass: M (GeV)",etBin,etMin,etMax);
00170     h1_mumuGammaInvMass_ = dbe_->book1D("mumuGammaInvMass","Two-muon plus gamma invariant mass: M (GeV)",etBin,etMin,etMax);
00171 
00173 
00175     
00176     //ENERGY
00177     h_phoE_  = dbe_->book1D("phoE","Energy;E (GeV)",eBin,eMin,eMax);
00178     h_phoEt_ = dbe_->book1D("phoEt","E_{T};E_{T} (GeV)", etBin,etMin,etMax);
00179 
00180     //NUMBER OF PHOTONS
00181     h_nPho_  = dbe_->book1D("nPho", "Number of Photons per Event;# #gamma", numberBin,numberMin,numberMax);
00182 
00183     //GEOMETRICAL
00184     h_phoEta_ = dbe_->book1D("phoEta", "#eta;#eta",etaBin,etaMin,etaMax);
00185     h_phoPhi_ = dbe_->book1D("phoPhi", "#phi;#phi",phiBin,phiMin,phiMax);
00186 
00187     h_scEta_  = dbe_->book1D("scEta", "SuperCluster #eta;#eta",etaBin,etaMin,etaMax);
00188     h_scPhi_  = dbe_->book1D("scPhi", "SuperCluster #phi;#phi",phiBin,phiMin,phiMax);
00189 
00190     //SHOWER SHAPE
00191     //r9
00192     h_r9_      = dbe_->book1D("r9","R9;R9",r9Bin,r9Min, r9Max);
00193                                                         
00194     //sigmaIetaIeta
00195     h_phoSigmaIetaIeta_   = dbe_->book1D("phoSigmaIetaIeta","#sigma_{i#etai#eta};#sigma_{i#etai#eta}",sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
00196 
00197     //TRACK ISOLATION
00198 
00199     //nTrackIsolSolid
00200     h_nTrackIsolSolid_       = dbe_->book1D("nIsoTracksSolid","Number Of Tracks in the Solid Iso Cone;# tracks",numberBin,numberMin,numberMax);
00201 
00202     //nTrackIsolHollow
00203     h_nTrackIsolHollow_      = dbe_->book1D("nIsoTracksHollow","Number Of Tracks in the Hollow Iso Cone;# tracks",numberBin,numberMin,numberMax);
00204     
00205     //trackPtSumSolid
00206     h_trackPtSumSolid_       = dbe_->book1D("isoPtSumSolid","Track P_{T} Sum in the Solid Iso Cone;P_{T} (GeV)",sumBin,sumMin,sumMax);
00207     
00208     //trackPtSumHollow
00209     h_trackPtSumHollow_      = dbe_->book1D("isoPtSumHollow","Track P_{T} Sum in the Hollow Iso Cone;P_{T} (GeV)",sumBin,sumMin,sumMax);
00210 
00211     //CALORIMETER ISOLATION VARIABLES
00212 
00213     //ecal sum
00214     h_ecalSum_      = dbe_->book1D("ecalSum","Ecal Sum in the Iso Cone;E (GeV)",sumBin,sumMin,sumMax);
00215 
00216     //hcal sum
00217     h_hcalSum_      = dbe_->book1D("hcalSum","Hcal Sum in the Iso Cone;E (GeV)",sumBin,sumMin,sumMax);
00218 
00219     //h over e
00220     h_hOverE_       = dbe_->book1D("hOverE","H/E;H/E",hOverEBin,hOverEMin,hOverEMax);
00221     h_h1OverE_      = dbe_->book1D("h1OverE","H/E for Depth 1;H/E",hOverEBin,hOverEMin,hOverEMax);
00222     h_h2OverE_      = dbe_->book1D("h2OverE","H/E for Depth 2;H/E",hOverEBin,hOverEMin,hOverEMax);
00223 
00224 
00226 
00227     if(use2DHistos_){
00228 
00229       //SHOWER SHAPE
00230       //r9    
00231       h_r9VsEt_  = dbe_->book2D("r9VsEt2D","R9 vs E_{T};E_{T} (GeV);R9",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
00232       p_r9VsEt_  = dbe_->bookProfile("r9VsEt","Avg R9 vs E_{T};E_{T} (GeV);R9",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00233       h_r9VsEta_ = dbe_->book2D("r9VsEta2D","R9 vs #eta;#eta;R9",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
00234       p_r9VsEta_ = dbe_->bookProfile("r9VsEta","Avg R9 vs #eta;#eta;R9",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00235                                                         
00236       //sigmaIetaIeta
00237       h_sigmaIetaIetaVsEta_ = dbe_->book2D("sigmaIetaIetaVsEta2D","#sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",reducedEtaBin,etaMin,etaMax,sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
00238       p_sigmaIetaIetaVsEta_ = dbe_->bookProfile("sigmaIetaIetaVsEta","Avg #sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",etaBin,etaMin,etaMax,sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
00239 
00240       //e1x5
00241       h_e1x5VsEt_  = dbe_->book2D("e1x5VsEt2D","E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",reducedEtBin,etMin,etMax,reducedEtBin,etMin,etMax);
00242       p_e1x5VsEt_  = dbe_->bookProfile("e1x5VsEt","Avg E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",etBin,etMin,etMax,etBin,etMin,etMax);
00243       h_e1x5VsEta_ = dbe_->book2D("e1x5VsEta2D","E1x5 vs #eta;#eta;E1X5 (GeV)",reducedEtaBin,etaMin,etaMax,reducedEtBin,etMin,etMax);
00244       p_e1x5VsEta_ = dbe_->bookProfile("e1x5VsEta","Avg E1x5 vs #eta;#eta;E1X5 (GeV)",etaBin,etaMin,etaMax,etBin,etMin,etMax);
00245 
00246       //e2x5
00247       h_e2x5VsEt_  = dbe_->book2D("e2x5VsEt2D","E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",reducedEtBin,etMin,etMax,reducedEtBin,etMin,etMax);
00248       p_e2x5VsEt_  = dbe_->bookProfile("e2x5VsEt","Avg E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",etBin,etMin,etMax,etBin,etMin,etMax);
00249       h_e2x5VsEta_ = dbe_->book2D("e2x5VsEta2D","E2x5 vs #eta;#eta;E2X5 (GeV)",reducedEtaBin,etaMin,etaMax,reducedEtBin,etMin,etMax);
00250       p_e2x5VsEta_ = dbe_->bookProfile("e2x5VsEta","Avg E2x5 vs #eta;#eta;E2X5 (GeV)",etaBin,etaMin,etaMax,etBin,etMin,etMax);
00251 
00252       //r1x5
00253       h_r1x5VsEt_  = dbe_->book2D("r1x5VsEt2D","R1x5 vs E_{T};E_{T} (GeV);R1X5",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
00254       p_r1x5VsEt_  = dbe_->bookProfile("r1x5VsEt","Avg R1x5 vs E_{T};E_{T} (GeV);R1X5",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00255       h_r1x5VsEta_ = dbe_->book2D("r1x5VsEta2D","R1x5 vs #eta;#eta;R1X5",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
00256       p_r1x5VsEta_ = dbe_->bookProfile("r1x5VsEta","Avg R1x5 vs #eta;#eta;R1X5",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00257 
00258       //r2x5
00259       h_r2x5VsEt_  = dbe_->book2D("r2x5VsEt2D","R2x5 vs E_{T};E_{T} (GeV);R2X5",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
00260       p_r2x5VsEt_  = dbe_->bookProfile("r2x5VsEt","Avg R2x5 vs E_{T};E_{T} (GeV);R2X5",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00261       h_r2x5VsEta_ = dbe_->book2D("r2x5VsEta2D","R2x5 vs #eta;#eta;R2X5",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
00262       p_r2x5VsEta_ = dbe_->bookProfile("r2x5VsEta","Avg R2x5 vs #eta;#eta;R2X5",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00263 
00264       //maxEXtalOver3x3
00265       h_maxEXtalOver3x3VsEt_  = dbe_->book2D("maxEXtalOver3x3VsEt2D","(Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",reducedEtBin,etMin,etMax,r9Bin,r9Min,r9Max);
00266       p_maxEXtalOver3x3VsEt_  = dbe_->bookProfile("maxEXtalOver3x3VsEt","Avg (Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00267       h_maxEXtalOver3x3VsEta_ = dbe_->book2D("maxEXtalOver3x3VsEta2D","(Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",reducedEtaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00268       p_maxEXtalOver3x3VsEta_ = dbe_->bookProfile("maxEXtalOver3x3VsEta","Avg (Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00269 
00270       //TRACK ISOLATION
00271 
00272       //nTrackIsolSolid
00273       h_nTrackIsolSolidVsEt_   = dbe_->book2D("nIsoTracksSolidVsEt2D","Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",reducedEtBin,etMin, etMax,numberBin,numberMin,numberMax);
00274       p_nTrackIsolSolidVsEt_   = dbe_->bookProfile("nIsoTracksSolidVsEt","Avg Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",etBin,etMin,etMax,numberBin,numberMin,numberMax);
00275       h_nTrackIsolSolidVsEta_  = dbe_->book2D("nIsoTracksSolidVsEta2D","Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",reducedEtaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00276       p_nTrackIsolSolidVsEta_  = dbe_->bookProfile("nIsoTracksSolidVsEta","Avg Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",etaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00277 
00278       //nTrackIsolHollow
00279       h_nTrackIsolHollowVsEt_  = dbe_->book2D("nIsoTracksHollowVsEt2D","Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",reducedEtBin,etMin, etMax,numberBin,numberMin,numberMax);
00280       p_nTrackIsolHollowVsEt_  = dbe_->bookProfile("nIsoTracksHollowVsEt","Avg Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",etBin,etMin,etMax,numberBin,numberMin,numberMax);
00281       h_nTrackIsolHollowVsEta_ = dbe_->book2D("nIsoTracksHollowVsEta2D","Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",reducedEtaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00282       p_nTrackIsolHollowVsEta_ = dbe_->bookProfile("nIsoTracksHollowVsEta","Avg Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",etaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00283     
00284       //trackPtSumSolid
00285       h_trackPtSumSolidVsEt_   = dbe_->book2D("isoPtSumSolidVsEt2D","Track P_{T} Sum in the Solid Iso Cone;E_{T} (GeV);P_{T} (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00286       p_trackPtSumSolidVsEt_   = dbe_->bookProfile("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);
00287       h_trackPtSumSolidVsEta_  = dbe_->book2D("isoPtSumSolidVsEta2D","Track P_{T} Sum in the Solid Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00288       p_trackPtSumSolidVsEta_  = dbe_->bookProfile("isoPtSumSolidVsEta","Avg Track P_{T} Sum in the Solid Iso Cone vs #eta;#eta;P_{T} (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00289     
00290       //trackPtSumHollow
00291       h_trackPtSumHollowVsEt_  = dbe_->book2D("isoPtSumHollowVsEt2D","Track P_{T} Sum in the Hollow Iso Cone;E_{T} (GeV);P_{T} (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00292       p_trackPtSumHollowVsEt_  = dbe_->bookProfile("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);
00293       h_trackPtSumHollowVsEta_ = dbe_->book2D("isoPtSumHollowVsEta2D","Track P_{T} Sum in the Hollow Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00294       p_trackPtSumHollowVsEta_ = dbe_->bookProfile("isoPtSumHollowVsEta","Avg Track P_{T} Sum in the Hollow Iso Cone vs #eta;#eta;P_{T} (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00295 
00296       //CALORIMETER ISOLATION VARIABLES
00297 
00298       //ecal sum
00299       h_ecalSumVsEt_  = dbe_->book2D("ecalSumVsEt2D","Ecal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00300       p_ecalSumVsEt_  = dbe_->bookProfile("ecalSumVsEt","Avg Ecal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",etBin,etMin, etMax,sumBin,sumMin,sumMax);
00301       h_ecalSumVsEta_ = dbe_->book2D("ecalSumVsEta2D","Ecal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00302       p_ecalSumVsEta_ = dbe_->bookProfile("ecalSumVsEta","Avg Ecal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00303 
00304       //hcal sum
00305       h_hcalSumVsEt_  = dbe_->book2D("hcalSumVsEt2D","Hcal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00306       p_hcalSumVsEt_  = dbe_->bookProfile("hcalSumVsEt","Avg Hcal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",etBin,etMin, etMax,sumBin,sumMin,sumMax);
00307       h_hcalSumVsEta_ = dbe_->book2D("hcalSumVsEta2D","Hcal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00308       p_hcalSumVsEta_ = dbe_->bookProfile("hcalSumVsEta","Avg Hcal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00309 
00310       //h over e
00311       p_hOverEVsEt_   = dbe_->bookProfile("hOverEVsEt","Avg H/E vs Et;E_{T} (GeV);H/E",etBin,etMin,etMax,hOverEBin,hOverEMin,hOverEMax);
00312       p_hOverEVsEta_  = dbe_->bookProfile("hOverEVsEta","Avg H/E vs #eta;#eta;H/E",etaBin,etaMin,etaMax,hOverEBin,hOverEMin,hOverEMax);
00313 
00314     }
00315 
00317 
00318     if(splitHistosEBEE_){  
00319 
00320       //EB ENERGY
00321       h_phoEBarrel_  = dbe_->book1D("phoEBarrel","Energy for Barrel;E (GeV)",eBin,eMin,eMax);
00322       h_phoEtBarrel_ = dbe_->book1D("phoEtBarrel","E_{T};E_{T} (GeV)", etBin,etMin,etMax);
00323     
00324       //EB NUMBER OF PHOTONS
00325       h_nPhoBarrel_  = dbe_->book1D("nPhoBarrel","Number of Photons per Event;# #gamma", numberBin,numberMin,numberMax);
00326       
00327       //EB GEOMETRICAL
00328       h_phoEtaBarrel_ = dbe_->book1D("phoEtaBarrel","#eta;#eta",etaBin,etaMin,etaMax);
00329       h_phoPhiBarrel_ = dbe_->book1D("phoPhiBarrel","#phi;#phi",phiBin,phiMin,phiMax);
00330     
00331       h_scEtaBarrel_  = dbe_->book1D("scEtaBarrel","SuperCluster #eta;#eta",etaBin,etaMin,etaMax);
00332       h_scPhiBarrel_  = dbe_->book1D("scPhiBarrel","SuperCluster #phi;#phi",phiBin,phiMin,phiMax);
00333     
00334       //EB SHOWER SHAPE
00335       //EB r9
00336       h_r9Barrel_      = dbe_->book1D("r9Barrel","R9;R9",r9Bin,r9Min, r9Max);
00337       h_r9VsEtBarrel_  = dbe_->book2D("r9VsEt2DBarrel","R9 vs E_{T};E_{T} (GeV);R9",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
00338       p_r9VsEtBarrel_  = dbe_->bookProfile("r9VsEtBarrel","Avg R9 vs E_{T};E_{T} (GeV);R9",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00339       h_r9VsEtaBarrel_ = dbe_->book2D("r9VsEta2DBarrel","R9 vs #eta;#eta;R9",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
00340       p_r9VsEtaBarrel_ = dbe_->bookProfile("r9VsEtaBarrel","Avg R9 vs #eta;#eta;R9",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00341       
00342       //EB sigmaIetaIeta
00343       h_phoSigmaIetaIetaBarrel_   = dbe_->book1D("phoSigmaIetaIetaBarrel","#sigma_{i#etai#eta};#sigma_{i#etai#eta}",sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
00344       h_sigmaIetaIetaVsEtaBarrel_ = dbe_->book2D("sigmaIetaIetaVsEta2DBarrel","#sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",reducedEtaBin,etaMin,etaMax,sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
00345       p_sigmaIetaIetaVsEtaBarrel_ = dbe_->bookProfile("sigmaIetaIetaVsEtaBarrel","Avg #sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",etaBin,etaMin,etaMax,sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
00346       
00347       //EB e1x5
00348       h_e1x5VsEtBarrel_  = dbe_->book2D("e1x5VsEt2DBarrel","E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",reducedEtBin,etMin,etMax,reducedEtBin,etMin,etMax);
00349       p_e1x5VsEtBarrel_  = dbe_->bookProfile("e1x5VsEtBarrel","Avg E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",etBin,etMin,etMax,etBin,etMin,etMax);
00350       h_e1x5VsEtaBarrel_ = dbe_->book2D("e1x5VsEta2DBarrel","E1x5 vs #eta;#eta;E1X5 (GeV)",reducedEtaBin,etaMin,etaMax,reducedEtBin,etMin,etMax);
00351       p_e1x5VsEtaBarrel_ = dbe_->bookProfile("e1x5VsEtaBarrel","Avg E1x5 vs #eta;#eta;E1X5 (GeV)",etaBin,etaMin,etaMax,etBin,etMin,etMax);
00352       
00353       //EB e2x5
00354       h_e2x5VsEtBarrel_  = dbe_->book2D("e2x5VsEt2DBarrel","E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",reducedEtBin,etMin,etMax,reducedEtBin,etMin,etMax);
00355       p_e2x5VsEtBarrel_  = dbe_->bookProfile("e2x5VsEtBarrel","Avg E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",etBin,etMin,etMax,etBin,etMin,etMax);
00356       h_e2x5VsEtaBarrel_ = dbe_->book2D("e2x5VsEta2DBarrel","E2x5 vs #eta;#eta;E2X5 (GeV)",reducedEtaBin,etaMin,etaMax,reducedEtBin,etMin,etMax);
00357       p_e2x5VsEtaBarrel_ = dbe_->bookProfile("e2x5VsEtaBarrel","Avg E2x5 vs #eta;#eta;E2X5 (GeV)",etaBin,etaMin,etaMax,etBin,etMin,etMax);
00358       
00359       //EB r1x5
00360       h_r1x5VsEtBarrel_  = dbe_->book2D("r1x5VsEt2DBarrel","R1x5 vs E_{T};E_{T} (GeV);R1X5",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
00361       p_r1x5VsEtBarrel_  = dbe_->bookProfile("r1x5VsEtBarrel","Avg R1x5 vs E_{T};E_{T} (GeV);R1X5",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00362       h_r1x5VsEtaBarrel_ = dbe_->book2D("r1x5VsEta2DBarrel","R1x5 vs #eta;#eta;R1X5",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
00363       p_r1x5VsEtaBarrel_ = dbe_->bookProfile("r1x5VsEtaBarrel","Avg R1x5 vs #eta;#eta;R1X5",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00364       
00365       //EB r2x5
00366       h_r2x5VsEtBarrel_  = dbe_->book2D("r2x5VsEt2DBarrel","R2x5 vs E_{T};E_{T} (GeV);R2X5",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
00367       p_r2x5VsEtBarrel_  = dbe_->bookProfile("r2x5VsEtBarrel","Avg R2x5 vs E_{T};E_{T} (GeV);R2X5",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00368       h_r2x5VsEtaBarrel_ = dbe_->book2D("r2x5VsEta2DBarrel","R2x5 vs #eta;#eta;R2X5",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
00369       p_r2x5VsEtaBarrel_ = dbe_->bookProfile("r2x5VsEtaBarrel","Avg R2x5 vs #eta;#eta;R2X5",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00370       
00371       //EB maxEXtalOver3x3
00372       h_maxEXtalOver3x3VsEtBarrel_  = dbe_->book2D("maxEXtalOver3x3VsEt2DBarrel","(Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",reducedEtBin,etMin,etMax,r9Bin,r9Min,r9Max);
00373       p_maxEXtalOver3x3VsEtBarrel_  = dbe_->bookProfile("maxEXtalOver3x3VsEtBarrel","Avg (Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00374       h_maxEXtalOver3x3VsEtaBarrel_ = dbe_->book2D("maxEXtalOver3x3VsEta2DBarrel","(Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",reducedEtaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00375       p_maxEXtalOver3x3VsEtaBarrel_ = dbe_->bookProfile("maxEXtalOver3x3VsEtaBarrel","Avg (Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00376       
00377       //EB TRACK ISOLATION
00378       
00379       //EB nTrackIsolSolid
00380       h_nTrackIsolSolidBarrel_       = dbe_->book1D("nIsoTracksSolidBarrel","Number Of Tracks in the Solid Iso Cone;# tracks",numberBin,numberMin,numberMax);
00381       h_nTrackIsolSolidVsEtBarrel_   = dbe_->book2D("nIsoTracksSolidVsEt2DBarrel","Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",reducedEtBin,etMin, etMax,numberBin,numberMin,numberMax);
00382       p_nTrackIsolSolidVsEtBarrel_   = dbe_->bookProfile("nIsoTracksSolidVsEtBarrel","Avg Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",etBin,etMin,etMax,numberBin,numberMin,numberMax);
00383       h_nTrackIsolSolidVsEtaBarrel_  = dbe_->book2D("nIsoTracksSolidVsEta2DBarrel","Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",reducedEtaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00384       p_nTrackIsolSolidVsEtaBarrel_  = dbe_->bookProfile("nIsoTracksSolidVsEtaBarrel","Avg Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",etaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00385       
00386       //EB nTrackIsolHollow
00387       h_nTrackIsolHollowBarrel_      = dbe_->book1D("nIsoTracksHollowBarrel","Number Of Tracks in the Hollow Iso Cone;# tracks",numberBin,numberMin,numberMax);
00388       h_nTrackIsolHollowVsEtBarrel_  = dbe_->book2D("nIsoTracksHollowVsEt2DBarrel","Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",reducedEtBin,etMin, etMax,numberBin,numberMin,numberMax);
00389       p_nTrackIsolHollowVsEtBarrel_  = dbe_->bookProfile("nIsoTracksHollowVsEtBarrel","Avg Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",etBin,etMin,etMax,numberBin,numberMin,numberMax);
00390       h_nTrackIsolHollowVsEtaBarrel_ = dbe_->book2D("nIsoTracksHollowVsEta2DBarrel","Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",reducedEtaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00391       p_nTrackIsolHollowVsEtaBarrel_ = dbe_->bookProfile("nIsoTracksHollowVsEtaBarrel","Avg Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",etaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00392       
00393       //EB trackPtSumSolid
00394       h_trackPtSumSolidBarrel_       = dbe_->book1D("isoPtSumSolidBarrel","Track P_{T} Sum in the Solid Iso Cone;P_{T} (GeV)",sumBin,sumMin,sumMax);
00395       h_trackPtSumSolidVsEtBarrel_   = dbe_->book2D("isoPtSumSolidVsEt2DBarrel","Track P_{T} Sum in the Solid Iso Cone;E_{T} (GeV);P_{T} (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00396       p_trackPtSumSolidVsEtBarrel_   = dbe_->bookProfile("isoPtSumSolidVsEtBarrel","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);
00397       h_trackPtSumSolidVsEtaBarrel_  = dbe_->book2D("isoPtSumSolidVsEta2DBarrel","Track P_{T} Sum in the Solid Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00398       p_trackPtSumSolidVsEtaBarrel_  = dbe_->bookProfile("isoPtSumSolidVsEtaBarrel","Avg Track P_{T} Sum in the Solid Iso Cone vs #eta;#eta;P_{T} (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00399       
00400       //EB trackPtSumHollow
00401       h_trackPtSumHollowBarrel_      = dbe_->book1D("isoPtSumHollowBarrel","Track P_{T} Sum in the Hollow Iso Cone;P_{T} (GeV)",sumBin,sumMin,sumMax);
00402       h_trackPtSumHollowVsEtBarrel_  = dbe_->book2D("isoPtSumHollowVsEt2DBarrel","Track P_{T} Sum in the Hollow Iso Cone;E_{T} (GeV);P_{T} (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00403       p_trackPtSumHollowVsEtBarrel_  = dbe_->bookProfile("isoPtSumHollowVsEtBarrel","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);
00404       h_trackPtSumHollowVsEtaBarrel_ = dbe_->book2D("isoPtSumHollowVsEta2DBarrel","Track P_{T} Sum in the Hollow Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00405       p_trackPtSumHollowVsEtaBarrel_ = dbe_->bookProfile("isoPtSumHollowVsEtaBarrel","Avg Track P_{T} Sum in the Hollow Iso Cone vs #eta;#eta;P_{T} (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00406       
00407       //EB CALORIMETER ISOLATION VARIABLES
00408       
00409       //EB ecal sum
00410       h_ecalSumBarrel_      = dbe_->book1D("ecalSumBarrel","Ecal Sum in the Iso Cone;E (GeV)",sumBin,sumMin,sumMax);
00411       h_ecalSumVsEtBarrel_  = dbe_->book2D("ecalSumVsEt2DBarrel","Ecal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00412       p_ecalSumVsEtBarrel_  = dbe_->bookProfile("ecalSumVsEtBarrel","Avg Ecal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",etBin,etMin, etMax,sumBin,sumMin,sumMax);
00413       h_ecalSumVsEtaBarrel_ = dbe_->book2D("ecalSumVsEta2DBarrel","Ecal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00414       p_ecalSumVsEtaBarrel_ = dbe_->bookProfile("ecalSumVsEtaBarrel","Avg Ecal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00415       
00416       //EB hcal sum
00417       h_hcalSumBarrel_      = dbe_->book1D("hcalSumBarrel","Hcal Sum in the Iso Cone;E (GeV)",sumBin,sumMin,sumMax);
00418       h_hcalSumVsEtBarrel_  = dbe_->book2D("hcalSumVsEt2DBarrel","Hcal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00419       p_hcalSumVsEtBarrel_  = dbe_->bookProfile("hcalSumVsEtBarrel","Avg Hcal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",etBin,etMin, etMax,sumBin,sumMin,sumMax);
00420       h_hcalSumVsEtaBarrel_ = dbe_->book2D("hcalSumVsEta2DBarrel","Hcal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00421       p_hcalSumVsEtaBarrel_ = dbe_->bookProfile("hcalSumVsEtaBarrel","Avg Hcal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00422       
00423       //EB h over e
00424       h_hOverEBarrel_       = dbe_->book1D("hOverEBarrel","H/E;H/E",hOverEBin,hOverEMin,hOverEMax);
00425       p_hOverEVsEtBarrel_   = dbe_->bookProfile("hOverEVsEtBarrel","Avg H/E vs Et;E_{T} (GeV);H/E",etBin,etMin,etMax,hOverEBin,hOverEMin,hOverEMax);
00426       p_hOverEVsEtaBarrel_  = dbe_->bookProfile("hOverEVsEtaBarrel","Avg H/E vs #eta;#eta;H/E",etaBin,etaMin,etaMax,hOverEBin,hOverEMin,hOverEMax);
00427       h_h1OverEBarrel_      = dbe_->book1D("h1OverEBarrel","H/E for Depth 1;H/E",hOverEBin,hOverEMin,hOverEMax);
00428       h_h2OverEBarrel_      = dbe_->book1D("h2OverEBarrel","H/E for Depth 2;H/E",hOverEBin,hOverEMin,hOverEMax);
00429 
00430     
00432       
00433       //EE ENERGY
00434       h_phoEtEndcap_ = dbe_->book1D("phoEtEndcap","E_{T};E_{T} (GeV)", etBin,etMin,etMax);
00435       h_phoEEndcap_  = dbe_->book1D("phoEEndcap","Energy for Endcap;E (GeV)",eBin,eMin,eMax);
00436       
00437       //EE NUMBER OF PHOTONS
00438       h_nPhoEndcap_  = dbe_->book1D("nPhoEndcap","Number of Photons per Event;# #gamma", numberBin,numberMin,numberMax);
00439       
00440       //EE GEOMETRICAL
00441       h_phoEtaEndcap_ = dbe_->book1D("phoEtaEndcap","#eta;#eta",etaBin,etaMin,etaMax);
00442       h_phoPhiEndcap_ = dbe_->book1D("phoPhiEndcap","#phi;#phi",phiBin,phiMin,phiMax);
00443       
00444       h_scEtaEndcap_  = dbe_->book1D("scEtaEndcap","SuperCluster #eta;#eta",etaBin,etaMin,etaMax);
00445       h_scPhiEndcap_  = dbe_->book1D("scPhiEndcap","SuperCluster #phi;#phi",phiBin,phiMin,phiMax);
00446       
00447       //EE SHOWER SHAPE
00448       //EE r9
00449       h_r9Endcap_      = dbe_->book1D("r9Endcap","R9;R9",r9Bin,r9Min, r9Max);
00450       h_r9VsEtEndcap_  = dbe_->book2D("r9VsEt2DEndcap","R9 vs E_{T};E_{T} (GeV);R9",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
00451       p_r9VsEtEndcap_  = dbe_->bookProfile("r9VsEtEndcap","Avg R9 vs E_{T};E_{T} (GeV);R9",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00452       h_r9VsEtaEndcap_ = dbe_->book2D("r9VsEta2DEndcap","R9 vs #eta;#eta;R9",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
00453       p_r9VsEtaEndcap_ = dbe_->bookProfile("r9VsEtaEndcap","Avg R9 vs #eta;#eta;R9",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00454       
00455       //EE sigmaIetaIeta
00456       h_phoSigmaIetaIetaEndcap_   = dbe_->book1D("phoSigmaIetaIetaEndcap","#sigma_{i#etai#eta};#sigma_{i#etai#eta}",sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
00457       h_sigmaIetaIetaVsEtaEndcap_ = dbe_->book2D("sigmaIetaIetaVsEta2DEndcap","#sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",reducedEtaBin,etaMin,etaMax,sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
00458       p_sigmaIetaIetaVsEtaEndcap_ = dbe_->bookProfile("sigmaIetaIetaVsEtaEndcap","Avg #sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",etaBin,etaMin,etaMax,sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
00459       
00460       //EE e1x5
00461       h_e1x5VsEtEndcap_  = dbe_->book2D("e1x5VsEt2DEndcap","E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",reducedEtBin,etMin,etMax,reducedEtBin,etMin,etMax);
00462       p_e1x5VsEtEndcap_  = dbe_->bookProfile("e1x5VsEtEndcap","Avg E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",etBin,etMin,etMax,etBin,etMin,etMax);
00463       h_e1x5VsEtaEndcap_ = dbe_->book2D("e1x5VsEta2DEndcap","E1x5 vs #eta;#eta;E1X5 (GeV)",reducedEtaBin,etaMin,etaMax,reducedEtBin,etMin,etMax);
00464       p_e1x5VsEtaEndcap_ = dbe_->bookProfile("e1x5VsEtaEndcap","Avg E1x5 vs #eta;#eta;E1X5 (GeV)",etaBin,etaMin,etaMax,etBin,etMin,etMax);
00465       
00466       //EE e2x5
00467       h_e2x5VsEtEndcap_  = dbe_->book2D("e2x5VsEt2DEndcap","E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",reducedEtBin,etMin,etMax,reducedEtBin,etMin,etMax);
00468       p_e2x5VsEtEndcap_  = dbe_->bookProfile("e2x5VsEtEndcap","Avg E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",etBin,etMin,etMax,etBin,etMin,etMax);
00469       h_e2x5VsEtaEndcap_ = dbe_->book2D("e2x5VsEta2DEndcap","E2x5 vs #eta;#eta;E2X5 (GeV)",reducedEtaBin,etaMin,etaMax,reducedEtBin,etMin,etMax);
00470       p_e2x5VsEtaEndcap_ = dbe_->bookProfile("e2x5VsEtaEndcap","Avg E2x5 vs #eta;#eta;E2X5 (GeV)",etaBin,etaMin,etaMax,etBin,etMin,etMax);
00471       
00472       //EE r1x5
00473       h_r1x5VsEtEndcap_  = dbe_->book2D("r1x5VsEt2DEndcap","R1x5 vs E_{T};E_{T} (GeV);R1X5",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
00474       p_r1x5VsEtEndcap_  = dbe_->bookProfile("r1x5VsEtEndcap","Avg R1x5 vs E_{T};E_{T} (GeV);R1X5",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00475       h_r1x5VsEtaEndcap_ = dbe_->book2D("r1x5VsEta2DEndcap","R1x5 vs #eta;#eta;R1X5",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
00476       p_r1x5VsEtaEndcap_ = dbe_->bookProfile("r1x5VsEtaEndcap","Avg R1x5 vs #eta;#eta;R1X5",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00477       
00478       //EE r2x5
00479       h_r2x5VsEtEndcap_  = dbe_->book2D("r2x5VsEt2DEndcap","R2x5 vs E_{T};E_{T} (GeV);R2X5",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
00480       p_r2x5VsEtEndcap_  = dbe_->bookProfile("r2x5VsEtEndcap","Avg R2x5 vs E_{T};E_{T} (GeV);R2X5",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00481       h_r2x5VsEtaEndcap_ = dbe_->book2D("r2x5VsEta2DEndcap","R2x5 vs #eta;#eta;R2X5",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
00482       p_r2x5VsEtaEndcap_ = dbe_->bookProfile("r2x5VsEtaEndcap","Avg R2x5 vs #eta;#eta;R2X5",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00483       
00484       //EE maxEXtalOver3x3
00485       h_maxEXtalOver3x3VsEtEndcap_  = dbe_->book2D("maxEXtalOver3x3VsEt2DEndcap","(Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",reducedEtBin,etMin,etMax,r9Bin,r9Min,r9Max);
00486       p_maxEXtalOver3x3VsEtEndcap_  = dbe_->bookProfile("maxEXtalOver3x3VsEtEndcap","Avg (Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
00487       h_maxEXtalOver3x3VsEtaEndcap_ = dbe_->book2D("maxEXtalOver3x3VsEta2DEndcap","(Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",reducedEtaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00488       p_maxEXtalOver3x3VsEtaEndcap_ = dbe_->bookProfile("maxEXtalOver3x3VsEtaEndcap","Avg (Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
00489       
00490       //EE TRACK ISOLATION
00491       
00492       //EE nTrackIsolSolid
00493       h_nTrackIsolSolidEndcap_       = dbe_->book1D("nIsoTracksSolidEndcap","Number Of Tracks in the Solid Iso Cone;# tracks",numberBin,numberMin,numberMax);
00494       h_nTrackIsolSolidVsEtEndcap_   = dbe_->book2D("nIsoTracksSolidVsEt2DEndcap","Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",reducedEtBin,etMin, etMax,numberBin,numberMin,numberMax);
00495       p_nTrackIsolSolidVsEtEndcap_   = dbe_->bookProfile("nIsoTracksSolidVsEtEndcap","Avg Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",etBin,etMin,etMax,numberBin,numberMin,numberMax);
00496       h_nTrackIsolSolidVsEtaEndcap_  = dbe_->book2D("nIsoTracksSolidVsEta2DEndcap","Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",reducedEtaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00497       p_nTrackIsolSolidVsEtaEndcap_  = dbe_->bookProfile("nIsoTracksSolidVsEtaEndcap","Avg Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",etaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00498       
00499       //EE nTrackIsolHollow
00500       h_nTrackIsolHollowEndcap_      = dbe_->book1D("nIsoTracksHollowEndcap","Number Of Tracks in the Hollow Iso Cone;# tracks",numberBin,numberMin,numberMax);
00501       h_nTrackIsolHollowVsEtEndcap_  = dbe_->book2D("nIsoTracksHollowVsEt2DEndcap","Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",reducedEtBin,etMin, etMax,numberBin,numberMin,numberMax);
00502       p_nTrackIsolHollowVsEtEndcap_  = dbe_->bookProfile("nIsoTracksHollowVsEtEndcap","Avg Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",etBin,etMin,etMax,numberBin,numberMin,numberMax);
00503       h_nTrackIsolHollowVsEtaEndcap_ = dbe_->book2D("nIsoTracksHollowVsEta2DEndcap","Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",reducedEtaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00504       p_nTrackIsolHollowVsEtaEndcap_ = dbe_->bookProfile("nIsoTracksHollowVsEtaEndcap","Avg Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",etaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
00505       
00506       //EE trackPtSumSolid
00507       h_trackPtSumSolidEndcap_       = dbe_->book1D("isoPtSumSolidEndcap","Track P_{T} Sum in the Solid Iso Cone;P_{T} (GeV)",sumBin,sumMin,sumMax);
00508       h_trackPtSumSolidVsEtEndcap_   = dbe_->book2D("isoPtSumSolidVsEt2DEndcap","Track P_{T} Sum in the Solid Iso Cone;E_{T} (GeV);P_{T} (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00509       p_trackPtSumSolidVsEtEndcap_   = dbe_->bookProfile("isoPtSumSolidVsEtEndcap","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);
00510       h_trackPtSumSolidVsEtaEndcap_  = dbe_->book2D("isoPtSumSolidVsEta2DEndcap","Track P_{T} Sum in the Solid Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00511       p_trackPtSumSolidVsEtaEndcap_  = dbe_->bookProfile("isoPtSumSolidVsEtaEndcap","Avg Track P_{T} Sum in the Solid Iso Cone vs #eta;#eta;P_{T} (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00512       
00513       //EE trackPtSumHollow
00514       h_trackPtSumHollowEndcap_      = dbe_->book1D("isoPtSumHollowEndcap","Track P_{T} Sum in the Hollow Iso Cone;P_{T} (GeV)",sumBin,sumMin,sumMax);
00515       h_trackPtSumHollowVsEtEndcap_  = dbe_->book2D("isoPtSumHollowVsEt2DEndcap","Track P_{T} Sum in the Hollow Iso Cone;E_{T} (GeV);P_{T} (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00516       p_trackPtSumHollowVsEtEndcap_  = dbe_->bookProfile("isoPtSumHollowVsEtEndcap","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);
00517       h_trackPtSumHollowVsEtaEndcap_ = dbe_->book2D("isoPtSumHollowVsEta2DEndcap","Track P_{T} Sum in the Hollow Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00518       p_trackPtSumHollowVsEtaEndcap_ = dbe_->bookProfile("isoPtSumHollowVsEtaEndcap","Avg Track P_{T} Sum in the Hollow Iso Cone vs #eta;#eta;P_{T} (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00519       
00520       //EE CALORIMETER ISOLATION VARIABLES
00521       
00522       //EE ecal sum
00523       h_ecalSumEndcap_      = dbe_->book1D("ecalSumEndcap","Ecal Sum in the Iso Cone;E (GeV)",sumBin,sumMin,sumMax);
00524       h_ecalSumVsEtEndcap_  = dbe_->book2D("ecalSumVsEt2DEndcap","Ecal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00525       p_ecalSumVsEtEndcap_  = dbe_->bookProfile("ecalSumVsEtEndcap","Avg Ecal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",etBin,etMin, etMax,sumBin,sumMin,sumMax);
00526       h_ecalSumVsEtaEndcap_ = dbe_->book2D("ecalSumVsEta2DEndcap","Ecal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00527       p_ecalSumVsEtaEndcap_ = dbe_->bookProfile("ecalSumVsEtaEndcap","Avg Ecal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00528       
00529       //EE hcal sum
00530       h_hcalSumEndcap_      = dbe_->book1D("hcalSumEndcap","Hcal Sum in the Iso Cone;E (GeV)",sumBin,sumMin,sumMax);
00531       h_hcalSumVsEtEndcap_  = dbe_->book2D("hcalSumVsEt2DEndcap","Hcal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
00532       p_hcalSumVsEtEndcap_  = dbe_->bookProfile("hcalSumVsEtEndcap","Avg Hcal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",etBin,etMin, etMax,sumBin,sumMin,sumMax);
00533       h_hcalSumVsEtaEndcap_ = dbe_->book2D("hcalSumVsEta2DEndcap","Hcal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
00534       p_hcalSumVsEtaEndcap_ = dbe_->bookProfile("hcalSumVsEtaEndcap","Avg Hcal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
00535       
00536       //EE h over e
00537       h_hOverEEndcap_       = dbe_->book1D("hOverEEndcap","H/E;H/E",hOverEBin,hOverEMin,hOverEMax);
00538       p_hOverEVsEtEndcap_   = dbe_->bookProfile("hOverEVsEtEndcap","Avg H/E vs Et;E_{T} (GeV);H/E",etBin,etMin,etMax,hOverEBin,hOverEMin,hOverEMax);
00539       p_hOverEVsEtaEndcap_  = dbe_->bookProfile("hOverEVsEtaEndcap","Avg H/E vs #eta;#eta;H/E",etaBin,etaMin,etaMax,hOverEBin,hOverEMin,hOverEMax);
00540       h_h1OverEEndcap_      = dbe_->book1D("h1OverEEndcap","H/E for Depth 1;H/E",hOverEBin,hOverEMin,hOverEMax);
00541       h_h2OverEEndcap_      = dbe_->book1D("h2OverEEndcap","H/E for Depth 2;H/E",hOverEBin,hOverEMin,hOverEMax);
00542       
00543     }//end if(splitHistosEBEE)
00544     
00545   }//end if(dbe_)
00546 
00547 }//end BeginJob
00548 
00549 void ZToMuMuGammaAnalyzer::analyze( const edm::Event& e, const edm::EventSetup& esup )
00550 {
00551   using namespace edm;
00552 
00553   if (nEvt_% prescaleFactor_ ) return;
00554   nEvt_++;
00555   LogInfo("ZToMuMuGammaAnalyzer") << "ZToMuMuGammaAnalyzer Analyzing event number: " << e.id() << " Global Counter " << nEvt_ <<"\n";
00556 
00557   // Get the trigger results
00558   bool validTriggerEvent=true;
00559   edm::Handle<trigger::TriggerEvent> triggerEventHandle;
00560   trigger::TriggerEvent triggerEvent;
00561   e.getByLabel(triggerEvent_,triggerEventHandle);
00562   if(!triggerEventHandle.isValid()) {
00563     edm::LogInfo("PhotonAnalyzer") << "Error! Can't get the product "<< triggerEvent_.label() << endl;
00564     validTriggerEvent=false;
00565   }
00566   if(validTriggerEvent) triggerEvent = *(triggerEventHandle.product());
00567 
00568   // Get the reconstructed photons
00569   bool validPhotons=true;
00570   Handle<reco::PhotonCollection> photonHandle;
00571   reco::PhotonCollection photonCollection;
00572   e.getByLabel(photonProducer_, photonCollection_ , photonHandle);
00573   if ( !photonHandle.isValid()) {
00574     edm::LogInfo("ZToMuMuGammaAnalyzer") << "Error! Can't get the product "<< photonCollection_ << endl;
00575     validPhotons=false;
00576   }
00577   if(validPhotons) photonCollection = *(photonHandle.product());
00578 
00579   // Get the PhotonId objects
00580   bool validloosePhotonID=true;
00581   Handle<edm::ValueMap<bool> > loosePhotonFlag;
00582   edm::ValueMap<bool> loosePhotonID;
00583   e.getByLabel("PhotonIDProd", "PhotonCutBasedIDLoose", loosePhotonFlag);
00584   if ( !loosePhotonFlag.isValid()) {
00585     edm::LogInfo("ZToMuMuGammaAnalyzer") << "Error! Can't get the product "<< "PhotonCutBasedIDLoose" << endl;
00586     validloosePhotonID=false;
00587   }
00588   if (validloosePhotonID) loosePhotonID = *(loosePhotonFlag.product());
00589 
00590   bool validtightPhotonID=true;
00591   Handle<edm::ValueMap<bool> > tightPhotonFlag;
00592   edm::ValueMap<bool> tightPhotonID;
00593   e.getByLabel("PhotonIDProd", "PhotonCutBasedIDTight", tightPhotonFlag);
00594   if ( !tightPhotonFlag.isValid()) {
00595     edm::LogInfo("ZToMuMuGammaAnalyzer") << "Error! Can't get the product "<< "PhotonCutBasedIDTight" << endl;
00596     validtightPhotonID=false;
00597   }
00598   if (validtightPhotonID) tightPhotonID = *(tightPhotonFlag.product());
00599 
00600   // Get the reconstructed muons
00601   bool validMuons=true;
00602   Handle<reco::MuonCollection> muonHandle;
00603   reco::MuonCollection muonCollection;
00604   e.getByLabel(muonProducer_, muonCollection_ , muonHandle);
00605   if ( !muonHandle.isValid()) {
00606     edm::LogInfo("ZToMuMuGammaAnalyzer") << "Error! Can't get the product "<< muonCollection_ << endl;
00607     validMuons=false;
00608   }
00609   if(validMuons) muonCollection = *(muonHandle.product());
00610 
00611   // Get the beam spot
00612   edm::Handle<reco::BeamSpot> bsHandle;
00613   e.getByLabel("offlineBeamSpot", bsHandle);
00614   if (!bsHandle.isValid()) {
00615       edm::LogError("TrackerOnlyConversionProducer") << "Error! Can't get the product primary Vertex Collection "<< "\n";
00616       return;
00617   }
00618   const reco::BeamSpot &thebs = *bsHandle.product();
00619 
00620   //Prepare list of photon-related HLT filter names
00621   vector<int> Keys;
00622   for(uint filterIndex=0;filterIndex<triggerEvent.sizeFilters();++filterIndex){  //loop over all trigger filters in event (i.e. filters passed)
00623     string label = triggerEvent.filterTag(filterIndex).label();
00624     if(label.find( "Photon" ) != string::npos ) {  //get photon-related filters
00625       for(uint filterKeyIndex=0;filterKeyIndex<triggerEvent.filterKeys(filterIndex).size();++filterKeyIndex){  //loop over keys to objects passing this filter
00626         Keys.push_back(triggerEvent.filterKeys(filterIndex)[filterKeyIndex]);  //add keys to a vector for later reference
00627       }
00628     }
00629   }
00630   
00631   // sort Keys vector in ascending order
00632   // and erases duplicate entries from the vector
00633   sort(Keys.begin(),Keys.end());
00634   for ( uint i=0 ; i<Keys.size() ; )
00635     {
00636       if (i!=(Keys.size()-1))
00637         {
00638           if (Keys[i]==Keys[i+1]) Keys.erase(Keys.begin()+i+1) ;
00639           else ++i ;
00640         }
00641       else ++i ;
00642     }
00643 
00644   //photon counters
00645   int nPho = 0;
00646   int nPhoBarrel = 0;
00647   int nPhoEndcap = 0;
00648 
00650   if ( muonCollection.size() < 2 ) return;
00651 
00652   for( reco::MuonCollection::const_iterator  iMu = muonCollection.begin(); iMu != muonCollection.end(); iMu++) {
00653     if ( !basicMuonSelection (*iMu) ) continue;
00654  
00655     for( reco::MuonCollection::const_iterator  iMu2 = iMu+1; iMu2 != muonCollection.end(); iMu2++) {
00656       if ( !basicMuonSelection (*iMu2) ) continue;
00657       if ( iMu->charge()*iMu2->charge() > 0) continue;
00658 
00659       if ( !muonSelection(*iMu,thebs) && !muonSelection(*iMu2,thebs) ) continue;
00660     
00661       float mumuMass = mumuInvMass(*iMu,*iMu2) ;
00662       if ( mumuMass <  minMumuInvMass_  ||  mumuMass >  maxMumuInvMass_ ) continue;
00663 
00664       h1_mumuInvMass_ -> Fill (mumuMass);      
00665 
00666       if (  photonCollection.size() < 1 ) continue;
00667 
00668       reco::Muon nearMuon;
00669       reco::Muon farMuon;
00670       for( reco::PhotonCollection::const_iterator  iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
00671         if ( !photonSelection (*iPho) ) continue;
00672 
00673         DeltaR<reco::Muon, reco::Photon> deltaR;
00674         double dr1 = deltaR(*iMu, *iPho);
00675         double dr2 = deltaR(*iMu2,*iPho);
00676         double drNear = dr1;
00677         if (dr1 < dr2) {
00678           nearMuon =*iMu ; farMuon  = *iMu2; drNear = dr1;
00679         } else {
00680           nearMuon = *iMu2; farMuon  = *iMu; drNear = dr2;
00681         }
00682         
00683         if ( nearMuon.isolationR03().hadEt > nearMuonHcalIso_ )  continue;
00684         if ( farMuon.isolationR03().sumPt > farMuonTrackIso_ )  continue;
00685         if ( farMuon.isolationR03().emEt  > farMuonEcalIso_ )  continue;
00686         if ( farMuon.pt() < farMuonMinPt_ )       continue;
00687         if ( drNear > nearMuonDr_)                continue;
00688         
00689         float mumuGammaMass = mumuGammaInvMass(*iMu,*iMu2,*iPho) ;
00690         if ( mumuGammaMass < minMumuGammaInvMass_ || mumuGammaMass > maxMumuGammaInvMass_ ) continue;
00691 
00692         //counter: number of photons
00693         nPho++;
00694         
00695         //PHOTON RELATED HISTOGRAMS
00696         h1_mumuGammaInvMass_ ->Fill (mumuGammaMass);
00697         
00698         //ENERGY        
00699         h_phoE_  ->Fill ((*iPho).energy());
00700         h_phoEt_ ->Fill ((*iPho).et());
00701         
00702         //GEOMETRICAL
00703         h_phoEta_ ->Fill ((*iPho).eta());
00704         h_phoPhi_ ->Fill ((*iPho).phi());
00705         
00706         h_scEta_  ->Fill ((*iPho).superCluster()->eta());
00707         h_scPhi_  ->Fill ((*iPho).superCluster()->phi());
00708 
00709         //SHOWER SHAPE
00710         h_r9_     ->Fill ((*iPho).r9());
00711 
00712         h_phoSigmaIetaIeta_    ->Fill((*iPho).sigmaIetaIeta());
00713 
00714         //TRACK ISOLATION
00715         
00716         h_nTrackIsolSolid_      ->Fill((*iPho).nTrkSolidConeDR04());
00717        
00718         h_nTrackIsolHollow_      ->Fill((*iPho).nTrkHollowConeDR04());    
00719         
00720         h_trackPtSumSolid_       ->Fill((*iPho).trkSumPtSolidConeDR04());        
00721  
00722         h_trackPtSumHollow_      ->Fill((*iPho).trkSumPtSolidConeDR04());
00723 
00724         //CALORIMETER ISOLATION
00725         
00726         h_ecalSum_      ->Fill((*iPho).ecalRecHitSumEtConeDR04());
00727         
00728         h_hcalSum_      ->Fill((*iPho).hcalTowerSumEtConeDR04());
00729        
00730         h_hOverE_       ->Fill((*iPho).hadTowOverEm());
00731         h_h1OverE_      ->Fill((*iPho).hadTowDepth1OverEm());
00732         h_h2OverE_      ->Fill((*iPho).hadTowDepth2OverEm());
00733 
00734         
00736 
00737         if(use2DHistos_){
00738 
00739           //SHOWER SHAPE
00740           h_r9VsEt_ ->Fill ((*iPho).et(),(*iPho).r9());
00741           p_r9VsEt_ ->Fill ((*iPho).et(),(*iPho).r9());
00742           h_r9VsEta_->Fill ((*iPho).eta(),(*iPho).r9());
00743           p_r9VsEta_->Fill ((*iPho).eta(),(*iPho).r9());
00744           
00745           h_e1x5VsEta_->Fill((*iPho).eta(),(*iPho).e1x5());
00746           p_e1x5VsEta_->Fill((*iPho).eta(),(*iPho).e1x5());
00747           h_e1x5VsEt_ ->Fill((*iPho).et(), (*iPho).e1x5());
00748           p_e1x5VsEt_ ->Fill((*iPho).et(), (*iPho).e1x5());
00749           
00750           h_e2x5VsEta_->Fill((*iPho).eta(),(*iPho).e2x5());
00751           p_e2x5VsEta_->Fill((*iPho).eta(),(*iPho).e2x5());
00752           h_e2x5VsEt_ ->Fill((*iPho).et(), (*iPho).e2x5());
00753           p_e2x5VsEt_ ->Fill((*iPho).et(), (*iPho).e2x5());
00754           
00755           h_r1x5VsEta_->Fill((*iPho).eta(),(*iPho).r1x5());
00756           p_r1x5VsEta_->Fill((*iPho).eta(),(*iPho).r1x5());
00757           h_r1x5VsEt_ ->Fill((*iPho).et(), (*iPho).r1x5());
00758           p_r1x5VsEt_ ->Fill((*iPho).et(), (*iPho).r1x5());
00759           
00760           h_r2x5VsEta_->Fill((*iPho).eta(),(*iPho).r2x5());
00761           p_r2x5VsEta_->Fill((*iPho).eta(),(*iPho).r2x5());
00762           h_r2x5VsEt_ ->Fill((*iPho).et(), (*iPho).r2x5());
00763           p_r2x5VsEt_ ->Fill((*iPho).et(), (*iPho).r2x5());
00764           
00765           h_maxEXtalOver3x3VsEta_->Fill((*iPho).eta(),(*iPho).maxEnergyXtal()/(*iPho).e3x3());
00766           p_maxEXtalOver3x3VsEta_->Fill((*iPho).eta(),(*iPho).maxEnergyXtal()/(*iPho).e3x3());
00767           h_maxEXtalOver3x3VsEt_ ->Fill((*iPho).et(), (*iPho).maxEnergyXtal()/(*iPho).e3x3());
00768           p_maxEXtalOver3x3VsEt_ ->Fill((*iPho).et(), (*iPho).maxEnergyXtal()/(*iPho).e3x3());
00769           
00770           h_sigmaIetaIetaVsEta_  ->Fill((*iPho).eta(),(*iPho).sigmaIetaIeta());
00771           p_sigmaIetaIetaVsEta_  ->Fill((*iPho).eta(),(*iPho).sigmaIetaIeta());
00772           
00773           //TRACK ISOLATION
00774           h_nTrackIsolSolidVsEt_  ->Fill((*iPho).et(), (*iPho).nTrkSolidConeDR04());
00775           p_nTrackIsolSolidVsEt_  ->Fill((*iPho).et(), (*iPho).nTrkSolidConeDR04());
00776           h_nTrackIsolSolidVsEta_ ->Fill((*iPho).eta(),(*iPho).nTrkSolidConeDR04());
00777           p_nTrackIsolSolidVsEta_ ->Fill((*iPho).eta(),(*iPho).nTrkSolidConeDR04());
00778           
00779           h_nTrackIsolHollowVsEt_  ->Fill((*iPho).et(), (*iPho).nTrkHollowConeDR04());
00780           p_nTrackIsolHollowVsEt_  ->Fill((*iPho).et(), (*iPho).nTrkHollowConeDR04());
00781           h_nTrackIsolHollowVsEta_ ->Fill((*iPho).eta(),(*iPho).nTrkHollowConeDR04());
00782           p_nTrackIsolHollowVsEta_ ->Fill((*iPho).eta(),(*iPho).nTrkHollowConeDR04());
00783           
00784           h_trackPtSumSolidVsEt_   ->Fill((*iPho).et(), (*iPho).trkSumPtSolidConeDR04());
00785           p_trackPtSumSolidVsEt_   ->Fill((*iPho).et(), (*iPho).trkSumPtSolidConeDR04());
00786           h_trackPtSumSolidVsEta_  ->Fill((*iPho).eta(),(*iPho).trkSumPtSolidConeDR04());
00787           p_trackPtSumSolidVsEta_  ->Fill((*iPho).eta(),(*iPho).trkSumPtSolidConeDR04());
00788           
00789           h_trackPtSumHollowVsEt_  ->Fill((*iPho).et(), (*iPho).trkSumPtHollowConeDR04());
00790           p_trackPtSumHollowVsEt_  ->Fill((*iPho).et(), (*iPho).trkSumPtHollowConeDR04());
00791           h_trackPtSumHollowVsEta_ ->Fill((*iPho).eta(),(*iPho).trkSumPtHollowConeDR04());
00792           p_trackPtSumHollowVsEta_ ->Fill((*iPho).eta(),(*iPho).trkSumPtHollowConeDR04());
00793           
00794           //CALORIMETER ISOLATION
00795           h_ecalSumVsEt_  ->Fill((*iPho).et(), (*iPho).ecalRecHitSumEtConeDR04());
00796           p_ecalSumVsEt_  ->Fill((*iPho).et(), (*iPho).ecalRecHitSumEtConeDR04());
00797           h_ecalSumVsEta_ ->Fill((*iPho).eta(),(*iPho).ecalRecHitSumEtConeDR04());
00798           p_ecalSumVsEta_ ->Fill((*iPho).eta(),(*iPho).ecalRecHitSumEtConeDR04());
00799           
00800           h_hcalSumVsEt_  ->Fill((*iPho).et(), (*iPho).hcalTowerSumEtConeDR04());
00801           p_hcalSumVsEt_  ->Fill((*iPho).et(), (*iPho).hcalTowerSumEtConeDR04());
00802           h_hcalSumVsEta_ ->Fill((*iPho).eta(),(*iPho).hcalTowerSumEtConeDR04());
00803           p_hcalSumVsEta_ ->Fill((*iPho).eta(),(*iPho).hcalTowerSumEtConeDR04());
00804           
00805           p_hOverEVsEt_   ->Fill((*iPho).et(), (*iPho).hadTowOverEm());    
00806           p_hOverEVsEta_  ->Fill((*iPho).eta(),(*iPho).hadTowOverEm());
00807           
00808         }
00809 
00810         
00812 
00813         if(iPho->isEB() && splitHistosEBEE_){
00814           //EB photon counter
00815           nPhoBarrel++;
00816 
00817           //EB ENERGY        
00818           h_phoEBarrel_  ->Fill ((*iPho).energy());
00819           h_phoEtBarrel_ ->Fill ((*iPho).et());
00820 
00821           //EB GEOMETRICAL
00822           h_phoEtaBarrel_ ->Fill ((*iPho).eta());
00823           h_phoPhiBarrel_ ->Fill ((*iPho).phi());
00824           
00825           h_scEtaBarrel_  ->Fill ((*iPho).superCluster()->eta());
00826           h_scPhiBarrel_  ->Fill ((*iPho).superCluster()->phi());
00827           
00828           //EB SHOWER SHAPE
00829           h_r9Barrel_     ->Fill ((*iPho).r9());
00830           h_r9VsEtBarrel_ ->Fill ((*iPho).et(),(*iPho).r9());
00831           p_r9VsEtBarrel_ ->Fill ((*iPho).et(),(*iPho).r9());
00832           h_r9VsEtaBarrel_ ->Fill ((*iPho).eta(),(*iPho).r9());
00833           p_r9VsEtaBarrel_ ->Fill ((*iPho).eta(),(*iPho).r9());
00834           
00835           h_e1x5VsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).e1x5());
00836           p_e1x5VsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).e1x5());
00837           h_e1x5VsEtBarrel_ ->Fill((*iPho).et(), (*iPho).e1x5());
00838           p_e1x5VsEtBarrel_ ->Fill((*iPho).et(), (*iPho).e1x5());
00839         
00840           h_e2x5VsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).e2x5());
00841           p_e2x5VsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).e2x5());
00842           h_e2x5VsEtBarrel_ ->Fill((*iPho).et(), (*iPho).e2x5());
00843           p_e2x5VsEtBarrel_ ->Fill((*iPho).et(), (*iPho).e2x5());
00844           
00845           h_r1x5VsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).r1x5());
00846           p_r1x5VsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).r1x5());
00847           h_r1x5VsEtBarrel_ ->Fill((*iPho).et(), (*iPho).r1x5());
00848           p_r1x5VsEtBarrel_ ->Fill((*iPho).et(), (*iPho).r1x5());
00849           
00850           h_r2x5VsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).r2x5());
00851           p_r2x5VsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).r2x5());
00852           h_r2x5VsEtBarrel_ ->Fill((*iPho).et(), (*iPho).r2x5());
00853           p_r2x5VsEtBarrel_ ->Fill((*iPho).et(), (*iPho).r2x5());
00854           
00855           h_maxEXtalOver3x3VsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).maxEnergyXtal()/(*iPho).e3x3());
00856           p_maxEXtalOver3x3VsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).maxEnergyXtal()/(*iPho).e3x3());
00857           h_maxEXtalOver3x3VsEtBarrel_ ->Fill((*iPho).et(), (*iPho).maxEnergyXtal()/(*iPho).e3x3());
00858           p_maxEXtalOver3x3VsEtBarrel_ ->Fill((*iPho).et(), (*iPho).maxEnergyXtal()/(*iPho).e3x3());
00859 
00860           h_phoSigmaIetaIetaBarrel_    ->Fill((*iPho).sigmaIetaIeta());
00861           h_sigmaIetaIetaVsEtaBarrel_  ->Fill((*iPho).eta(),(*iPho).sigmaIetaIeta());
00862           p_sigmaIetaIetaVsEtaBarrel_  ->Fill((*iPho).eta(),(*iPho).sigmaIetaIeta());
00863           
00864           //EB TRACK ISOLATION
00865           
00866           h_nTrackIsolSolidBarrel_      ->Fill((*iPho).nTrkSolidConeDR04());
00867           h_nTrackIsolSolidVsEtBarrel_  ->Fill((*iPho).et(), (*iPho).nTrkSolidConeDR04());
00868           p_nTrackIsolSolidVsEtBarrel_  ->Fill((*iPho).et(), (*iPho).nTrkSolidConeDR04());
00869           h_nTrackIsolSolidVsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).nTrkSolidConeDR04());
00870           p_nTrackIsolSolidVsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).nTrkSolidConeDR04());
00871           
00872           h_nTrackIsolHollowBarrel_      ->Fill((*iPho).nTrkHollowConeDR04());    
00873           h_nTrackIsolHollowVsEtBarrel_  ->Fill((*iPho).et(), (*iPho).nTrkHollowConeDR04());
00874           p_nTrackIsolHollowVsEtBarrel_  ->Fill((*iPho).et(), (*iPho).nTrkHollowConeDR04());
00875           h_nTrackIsolHollowVsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).nTrkHollowConeDR04());
00876           p_nTrackIsolHollowVsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).nTrkHollowConeDR04());
00877         
00878           h_trackPtSumSolidBarrel_       ->Fill((*iPho).trkSumPtSolidConeDR04());        
00879           h_trackPtSumSolidVsEtBarrel_   ->Fill((*iPho).et(), (*iPho).trkSumPtSolidConeDR04());
00880           p_trackPtSumSolidVsEtBarrel_   ->Fill((*iPho).et(), (*iPho).trkSumPtSolidConeDR04());
00881           h_trackPtSumSolidVsEtaBarrel_  ->Fill((*iPho).eta(),(*iPho).trkSumPtSolidConeDR04());
00882           p_trackPtSumSolidVsEtaBarrel_  ->Fill((*iPho).eta(),(*iPho).trkSumPtSolidConeDR04());
00883           
00884           h_trackPtSumHollowBarrel_      ->Fill((*iPho).trkSumPtSolidConeDR04());
00885           h_trackPtSumHollowVsEtBarrel_  ->Fill((*iPho).et(), (*iPho).trkSumPtHollowConeDR04());
00886           p_trackPtSumHollowVsEtBarrel_  ->Fill((*iPho).et(), (*iPho).trkSumPtHollowConeDR04());
00887           h_trackPtSumHollowVsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).trkSumPtHollowConeDR04());
00888           p_trackPtSumHollowVsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).trkSumPtHollowConeDR04());
00889           
00890           //EB CALORIMETER ISOLATION
00891           
00892           h_ecalSumBarrel_      ->Fill((*iPho).ecalRecHitSumEtConeDR04());
00893           h_ecalSumVsEtBarrel_  ->Fill((*iPho).et(), (*iPho).ecalRecHitSumEtConeDR04());
00894           p_ecalSumVsEtBarrel_  ->Fill((*iPho).et(), (*iPho).ecalRecHitSumEtConeDR04());
00895           h_ecalSumVsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).ecalRecHitSumEtConeDR04());
00896           p_ecalSumVsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).ecalRecHitSumEtConeDR04());
00897         
00898           h_hcalSumBarrel_      ->Fill((*iPho).hcalTowerSumEtConeDR04());
00899           h_hcalSumVsEtBarrel_  ->Fill((*iPho).et(), (*iPho).hcalTowerSumEtConeDR04());
00900           p_hcalSumVsEtBarrel_  ->Fill((*iPho).et(), (*iPho).hcalTowerSumEtConeDR04());
00901           h_hcalSumVsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).hcalTowerSumEtConeDR04());
00902           p_hcalSumVsEtaBarrel_ ->Fill((*iPho).eta(),(*iPho).hcalTowerSumEtConeDR04());
00903           
00904           h_hOverEBarrel_       ->Fill((*iPho).hadTowOverEm());
00905           p_hOverEVsEtBarrel_   ->Fill((*iPho).et(), (*iPho).hadTowOverEm());    
00906           p_hOverEVsEtaBarrel_  ->Fill((*iPho).eta(),(*iPho).hadTowOverEm());
00907           h_h1OverEBarrel_      ->Fill((*iPho).hadTowDepth1OverEm());
00908           h_h2OverEBarrel_      ->Fill((*iPho).hadTowDepth2OverEm());
00909           
00910         }
00911 
00913 
00914         if(iPho->isEE() && splitHistosEBEE_){
00915           //EE photon counter
00916           nPhoEndcap++;
00917 
00918           //EE ENERGY        
00919           h_phoEEndcap_  ->Fill ((*iPho).energy());
00920           h_phoEtEndcap_ ->Fill ((*iPho).et());
00921 
00922           //EE GEOMETRICAL
00923           h_phoEtaEndcap_ ->Fill ((*iPho).eta());
00924           h_phoPhiEndcap_ ->Fill ((*iPho).phi());
00925           
00926           h_scEtaEndcap_  ->Fill ((*iPho).superCluster()->eta());
00927           h_scPhiEndcap_  ->Fill ((*iPho).superCluster()->phi());
00928           
00929           //EE SHOWER SHAPE
00930           h_r9Endcap_     ->Fill ((*iPho).r9());
00931           h_r9VsEtEndcap_ ->Fill ((*iPho).et(),(*iPho).r9());
00932           p_r9VsEtEndcap_ ->Fill ((*iPho).et(),(*iPho).r9());
00933           h_r9VsEtaEndcap_ ->Fill ((*iPho).eta(),(*iPho).r9());
00934           p_r9VsEtaEndcap_ ->Fill ((*iPho).eta(),(*iPho).r9());
00935           
00936           h_e1x5VsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).e1x5());
00937           p_e1x5VsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).e1x5());
00938           h_e1x5VsEtEndcap_ ->Fill((*iPho).et(), (*iPho).e1x5());
00939           p_e1x5VsEtEndcap_ ->Fill((*iPho).et(), (*iPho).e1x5());
00940         
00941           h_e2x5VsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).e2x5());
00942           p_e2x5VsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).e2x5());
00943           h_e2x5VsEtEndcap_ ->Fill((*iPho).et(), (*iPho).e2x5());
00944           p_e2x5VsEtEndcap_ ->Fill((*iPho).et(), (*iPho).e2x5());
00945           
00946           h_r1x5VsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).r1x5());
00947           p_r1x5VsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).r1x5());
00948           h_r1x5VsEtEndcap_ ->Fill((*iPho).et(), (*iPho).r1x5());
00949           p_r1x5VsEtEndcap_ ->Fill((*iPho).et(), (*iPho).r1x5());
00950           
00951           h_r2x5VsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).r2x5());
00952           p_r2x5VsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).r2x5());
00953           h_r2x5VsEtEndcap_ ->Fill((*iPho).et(), (*iPho).r2x5());
00954           p_r2x5VsEtEndcap_ ->Fill((*iPho).et(), (*iPho).r2x5());
00955           
00956           h_maxEXtalOver3x3VsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).maxEnergyXtal()/(*iPho).e3x3());
00957           p_maxEXtalOver3x3VsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).maxEnergyXtal()/(*iPho).e3x3());
00958           h_maxEXtalOver3x3VsEtEndcap_ ->Fill((*iPho).et(), (*iPho).maxEnergyXtal()/(*iPho).e3x3());
00959           p_maxEXtalOver3x3VsEtEndcap_ ->Fill((*iPho).et(), (*iPho).maxEnergyXtal()/(*iPho).e3x3());
00960 
00961           h_phoSigmaIetaIetaEndcap_    ->Fill((*iPho).sigmaIetaIeta());
00962           h_sigmaIetaIetaVsEtaEndcap_  ->Fill((*iPho).eta(),(*iPho).sigmaIetaIeta());
00963           p_sigmaIetaIetaVsEtaEndcap_  ->Fill((*iPho).eta(),(*iPho).sigmaIetaIeta());
00964           
00965           //EE TRACK ISOLATION
00966           
00967           h_nTrackIsolSolidEndcap_      ->Fill((*iPho).nTrkSolidConeDR04());
00968           h_nTrackIsolSolidVsEtEndcap_  ->Fill((*iPho).et(), (*iPho).nTrkSolidConeDR04());
00969           p_nTrackIsolSolidVsEtEndcap_  ->Fill((*iPho).et(), (*iPho).nTrkSolidConeDR04());
00970           h_nTrackIsolSolidVsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).nTrkSolidConeDR04());
00971           p_nTrackIsolSolidVsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).nTrkSolidConeDR04());
00972           
00973           h_nTrackIsolHollowEndcap_      ->Fill((*iPho).nTrkHollowConeDR04());    
00974           h_nTrackIsolHollowVsEtEndcap_  ->Fill((*iPho).et(), (*iPho).nTrkHollowConeDR04());
00975           p_nTrackIsolHollowVsEtEndcap_  ->Fill((*iPho).et(), (*iPho).nTrkHollowConeDR04());
00976           h_nTrackIsolHollowVsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).nTrkHollowConeDR04());
00977           p_nTrackIsolHollowVsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).nTrkHollowConeDR04());
00978         
00979           h_trackPtSumSolidEndcap_       ->Fill((*iPho).trkSumPtSolidConeDR04());        
00980           h_trackPtSumSolidVsEtEndcap_   ->Fill((*iPho).et(), (*iPho).trkSumPtSolidConeDR04());
00981           p_trackPtSumSolidVsEtEndcap_   ->Fill((*iPho).et(), (*iPho).trkSumPtSolidConeDR04());
00982           h_trackPtSumSolidVsEtaEndcap_  ->Fill((*iPho).eta(),(*iPho).trkSumPtSolidConeDR04());
00983           p_trackPtSumSolidVsEtaEndcap_  ->Fill((*iPho).eta(),(*iPho).trkSumPtSolidConeDR04());
00984           
00985           h_trackPtSumHollowEndcap_      ->Fill((*iPho).trkSumPtSolidConeDR04());
00986           h_trackPtSumHollowVsEtEndcap_  ->Fill((*iPho).et(), (*iPho).trkSumPtHollowConeDR04());
00987           p_trackPtSumHollowVsEtEndcap_  ->Fill((*iPho).et(), (*iPho).trkSumPtHollowConeDR04());
00988           h_trackPtSumHollowVsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).trkSumPtHollowConeDR04());
00989           p_trackPtSumHollowVsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).trkSumPtHollowConeDR04());
00990           
00991           //EE CALORIMETER ISOLATION
00992           
00993           h_ecalSumEndcap_      ->Fill((*iPho).ecalRecHitSumEtConeDR04());
00994           h_ecalSumVsEtEndcap_  ->Fill((*iPho).et(), (*iPho).ecalRecHitSumEtConeDR04());
00995           p_ecalSumVsEtEndcap_  ->Fill((*iPho).et(), (*iPho).ecalRecHitSumEtConeDR04());
00996           h_ecalSumVsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).ecalRecHitSumEtConeDR04());
00997           p_ecalSumVsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).ecalRecHitSumEtConeDR04());
00998         
00999           h_hcalSumEndcap_      ->Fill((*iPho).hcalTowerSumEtConeDR04());
01000           h_hcalSumVsEtEndcap_  ->Fill((*iPho).et(), (*iPho).hcalTowerSumEtConeDR04());
01001           p_hcalSumVsEtEndcap_  ->Fill((*iPho).et(), (*iPho).hcalTowerSumEtConeDR04());
01002           h_hcalSumVsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).hcalTowerSumEtConeDR04());
01003           p_hcalSumVsEtaEndcap_ ->Fill((*iPho).eta(),(*iPho).hcalTowerSumEtConeDR04());
01004           
01005           h_hOverEEndcap_       ->Fill((*iPho).hadTowOverEm());
01006           p_hOverEVsEtEndcap_   ->Fill((*iPho).et(), (*iPho).hadTowOverEm());    
01007           p_hOverEVsEtaEndcap_  ->Fill((*iPho).eta(),(*iPho).hadTowOverEm());
01008           h_h1OverEEndcap_      ->Fill((*iPho).hadTowDepth1OverEm());
01009           h_h2OverEEndcap_      ->Fill((*iPho).hadTowDepth2OverEm());
01010           
01011         }
01012 
01013         
01014       } //end photon loop
01015 
01016       h_nPho_ ->Fill (float(nPho));
01017 
01018       if(splitHistosEBEE_){
01019         h_nPhoBarrel_ ->Fill (float(nPhoBarrel));
01020         h_nPhoEndcap_ ->Fill (float(nPhoEndcap));
01021       }
01022     } //end inner muon loop
01023 
01024   } //end outer muon loop
01025 
01026 }//End of Analyze method
01027 
01028 void ZToMuMuGammaAnalyzer::endRun(const edm::Run& run, const edm::EventSetup& setup)
01029 {
01030   if(!standAlone_){dbe_->setCurrentFolder("Egamma/PhotonAnalyzer/ZToMuMuGamma");}
01031 }
01032 
01033 void ZToMuMuGammaAnalyzer::endJob()
01034 {
01035   //dbe_->showDirStructure();
01036   if(standAlone_){
01037     dbe_->setCurrentFolder("Egamma/PhotonAnalyzer/ZToMuMuGamma");
01038     dbe_->save(outputFileName_);
01039   }
01040 }
01041 
01042 bool ZToMuMuGammaAnalyzer::basicMuonSelection ( const reco::Muon & mu) {
01043   bool result=true;
01044   if (!mu.innerTrack().isNonnull())    result=false;
01045   if (!mu.globalTrack().isNonnull())   result=false;
01046   if ( !mu.isGlobalMuon() )            result=false; 
01047   if ( mu.pt() < muonMinPt_ )                  result=false;
01048   if ( fabs(mu.eta())>2.4 )            result=false;
01049 
01050   int pixHits=0;
01051   int tkHits=0;
01052   if ( mu.innerTrack().isNonnull() ) {
01053     pixHits=mu.innerTrack()->hitPattern().numberOfValidPixelHits();
01054     tkHits=mu.innerTrack()->hitPattern().numberOfValidStripHits();
01055   }
01056 
01057   if ( pixHits+tkHits < minPixStripHits_ ) result=false;
01058   
01059   return result;  
01060 }
01061 
01062 bool ZToMuMuGammaAnalyzer::muonSelection ( const reco::Muon & mu,  const reco::BeamSpot& beamSpot) {
01063   bool result=true;
01064   if ( mu.globalTrack()->normalizedChi2() > muonMaxChi2_ )          result=false;
01065   if ( fabs( mu.globalTrack()->dxy(beamSpot)) > muonMaxDxy_ )       result=false;
01066   if ( mu.numberOfMatches() < muonMatches_ )                                   result=false;
01067 
01068   if ( mu.track()-> hitPattern().numberOfValidPixelHits() <  validPixHits_ )     result=false;
01069   if ( mu.globalTrack()->hitPattern().numberOfValidMuonHits() < validMuonHits_ ) result=false;
01070   if ( !mu.isTrackerMuon() )                                        result=false;
01071   // track isolation 
01072   if ( mu.isolationR03().sumPt > muonTrackIso_ )                                result=false;
01073   if ( fabs(mu.eta())>  muonTightEta_ )                                         result=false;
01074  
01075   return result;  
01076 }
01077 
01078 bool ZToMuMuGammaAnalyzer::photonSelection ( const reco::Photon & pho) {
01079   bool result=true;
01080   if ( pho.pt() < photonMinEt_ )          result=false;
01081   if ( fabs(pho.eta())> photonMaxEta_ )   result=false;
01082   if ( pho.isEBEEGap() )       result=false;
01083   //  if ( pho.trkSumPtHollowConeDR04() >   photonTrackIso_ )   result=false; // check how to exclude the muon track (which muon track).
01084 
01085   return result;  
01086 }
01087 
01088 float ZToMuMuGammaAnalyzer::mumuInvMass(const reco::Muon & mu1,const reco::Muon & mu2 )
01089  {
01090   math::XYZTLorentzVector p12 = mu1.p4()+mu2.p4() ;
01091   float mumuMass2 = p12.Dot(p12) ;
01092   float invMass = sqrt(mumuMass2) ;
01093   return invMass ;
01094  }
01095 
01096 float ZToMuMuGammaAnalyzer::mumuGammaInvMass(const reco::Muon & mu1,const reco::Muon & mu2, const reco::Photon& pho )
01097  {
01098    math::XYZTLorentzVector p12 = mu1.p4()+mu2.p4()+pho.p4() ;
01099    float Mass2 = p12.Dot(p12) ;
01100    float invMass = sqrt(Mass2) ;
01101    return invMass ;
01102  }
01103