CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/RecoEgamma/PhotonIdentification/interface/PhotonIsolationCalculator.h

Go to the documentation of this file.
00001 #ifndef PhotonIsolationCalculator_H
00002 #define PhotonIsolationCalculator_H
00003 
00004 #include "FWCore/Framework/interface/Event.h"
00005 #include "FWCore/Framework/interface/EventSetup.h"
00006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00007 #include "DataFormats/EgammaCandidates/interface/Photon.h"
00008 
00009 #include "CondFormats/EcalObjects/interface/EcalChannelStatus.h"
00010 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgo.h"
00011 
00012 #include <string>
00013 
00014 #include "FWCore/Utilities/interface/GCC11Compatibility.h"
00015 
00016 
00017 class PhotonIsolationCalculator {
00018 
00019 public:
00020 
00021   PhotonIsolationCalculator(){}
00022 
00023   ~PhotonIsolationCalculator(){}
00024 
00025   void setup(const edm::ParameterSet& conf,
00026              std::vector<int> const & flagsEB_,
00027              std::vector<int> const & flagsEE_,
00028              std::vector<int> const & severitiesEB_,
00029              std::vector<int> const & severitiesEE_);
00030 
00031   void calculate(const reco::Photon*, 
00032                  const edm::Event&, const edm::EventSetup& es,
00033                  reco::Photon::FiducialFlags& phofid, 
00034                  reco::Photon::IsolationVariables& phoisolR03, 
00035                  reco::Photon::IsolationVariables& phoisolR04 ) const;
00036 
00037 
00038 
00039 private:
00040 
00041   static void classify(const reco::Photon* photon, 
00042                 bool &isEBPho,
00043                 bool &isEEPho,
00044                 bool &isEBEtaGap,
00045                 bool &isEBPhiGap,
00046                 bool &isEERingGap,
00047                 bool &isEEDeeGap,
00048                 bool &isEBEEGap) dso_internal;
00049 
00050 
00051 
00052   void calculateTrackIso(const reco::Photon* photon,
00053                          const edm::Event &e,
00054                          double &trkCone,
00055                          int &ntrkCone,
00056                          double pTThresh=0,
00057                          double RCone=.4,
00058                          double RinnerCone=.1,
00059                          double etaSlice=0.015,
00060                          double lip=0.2,
00061                          double d0=0.1) const dso_internal;
00062 
00063 
00064 
00065   double calculateEcalRecHitIso(const reco::Photon* photon,
00066                                 const edm::Event& iEvent,
00067                                 const edm::EventSetup& iSetup,
00068                                 double RCone,
00069                                 double RConeInner,
00070                                 double etaSlice,
00071                                 double eMin,
00072                                 double etMin, 
00073                                 bool vetoClusteredHits, 
00074                                 bool useNumCrystals) const dso_internal;
00075 
00076   double calculateHcalTowerIso(const reco::Photon* photon,
00077                                const edm::Event& iEvent,
00078                                const edm::EventSetup& iSetup,
00079                                double RCone,
00080                                double RConeInner,
00081                                double eMin,
00082                                signed int depth) const dso_internal;
00083 
00084 
00085   double calculateHcalTowerIso(const reco::Photon* photon,
00086                                const edm::Event& iEvent,
00087                                const edm::EventSetup& iSetup,
00088                                double RCone,
00089                                double eMin,
00090                                signed int depth) const dso_internal;
00091 
00092 
00093 
00094   
00095  private:
00096 
00097   edm::InputTag barrelecalCollection_;
00098   edm::InputTag endcapecalCollection_;
00099   edm::InputTag hcalCollection_;
00100 
00101   edm::InputTag trackInputTag_;
00102   edm::InputTag beamSpotProducerTag_;
00103   double modulePhiBoundary_;
00104   std::vector<double> moduleEtaBoundary_;
00105   bool vetoClusteredEcalHits_;
00106   bool useNumCrystals_;
00107 
00108   double trkIsoBarrelRadiusA_[6];
00109   double ecalIsoBarrelRadiusA_[5];
00110   double hcalIsoBarrelRadiusA_[9];
00111   double trkIsoBarrelRadiusB_[6];
00112   double ecalIsoBarrelRadiusB_[5];
00113   double hcalIsoBarrelRadiusB_[9];
00114 
00115   double trkIsoEndcapRadiusA_[6];
00116   double ecalIsoEndcapRadiusA_[5];
00117   double hcalIsoEndcapRadiusA_[9];
00118   double trkIsoEndcapRadiusB_[6];
00119   double ecalIsoEndcapRadiusB_[5];
00120   double hcalIsoEndcapRadiusB_[9];
00121 
00122 
00123   std::vector<int> flagsEB_;
00124   std::vector<int> flagsEE_;
00125   std::vector<int> severityExclEB_;
00126   std::vector<int> severityExclEE_;
00127 
00128 
00129 };
00130 
00131 #endif // PhotonIsolationCalculator_H