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 class PhotonIsolationCalculator {
00015
00016 public:
00017
00018 PhotonIsolationCalculator(){};
00019
00020 virtual ~PhotonIsolationCalculator(){};
00021
00022 void setup(const edm::ParameterSet& conf);
00023
00024 void calculate(const reco::Photon*,
00025 const edm::Event&, const edm::EventSetup& es,
00026 reco::Photon::FiducialFlags& phofid,
00027 reco::Photon::IsolationVariables& phoisolR03,
00028 reco::Photon::IsolationVariables& phoisolR04 );
00029
00030 void classify(const reco::Photon* photon,
00031 bool &isEBPho,
00032 bool &isEEPho,
00033 bool &isEBEtaGap,
00034 bool &isEBPhiGap,
00035 bool &isEERingGap,
00036 bool &isEEDeeGap,
00037 bool &isEBEEGap);
00038 void calculateTrackIso(const reco::Photon* photon,
00039 const edm::Event &e,
00040 double &trkCone,
00041 int &ntrkCone,
00042 double pTThresh=0,
00043 double RCone=.4,
00044 double RinnerCone=.1,
00045 double etaSlice=0.015,
00046 double lip=0.2,
00047 double d0=0.1);
00048
00049
00050
00051 double calculateEcalRecHitIso(const reco::Photon* photon,
00052 const edm::Event& iEvent,
00053 const edm::EventSetup& iSetup,
00054 double RCone,
00055 double RConeInner,
00056 double etaSlice,
00057 double eMin,
00058 double etMin,
00059 bool vetoClusteredHits,
00060 bool useNumCrystals);
00061
00062 double calculateHcalTowerIso(const reco::Photon* photon,
00063 const edm::Event& iEvent,
00064 const edm::EventSetup& iSetup,
00065 double RCone,
00066 double RConeInner,
00067 double eMin,
00068 signed int depth);
00069
00070
00071
00072 protected:
00073
00074 edm::InputTag barrelecalCollection_;
00075 edm::InputTag endcapecalCollection_;
00076 edm::InputTag hcalCollection_;
00077
00078 edm::InputTag trackInputTag_;
00079 edm::InputTag beamSpotProducerTag_;
00080 double modulePhiBoundary_;
00081 std::vector<double> moduleEtaBoundary_;
00082 bool vetoClusteredEcalHits_;
00083 bool useNumCrystals_;
00084
00085 std::vector<double> trkIsoBarrelRadiusA_;
00086 std::vector<double> ecalIsoBarrelRadiusA_;
00087 std::vector<double> hcalIsoBarrelRadiusA_;
00088 std::vector<double> trkIsoBarrelRadiusB_;
00089 std::vector<double> ecalIsoBarrelRadiusB_;
00090 std::vector<double> hcalIsoBarrelRadiusB_;
00091
00092 std::vector<double> trkIsoEndcapRadiusA_;
00093 std::vector<double> ecalIsoEndcapRadiusA_;
00094 std::vector<double> hcalIsoEndcapRadiusA_;
00095 std::vector<double> trkIsoEndcapRadiusB_;
00096 std::vector<double> ecalIsoEndcapRadiusB_;
00097 std::vector<double> hcalIsoEndcapRadiusB_;
00098
00099
00100 double photonEcalRecHitConeInnerRadiusA_;
00101 double photonEcalRecHitConeOuterRadiusA_;
00102 double photonEcalRecHitEtaSliceA_;
00103 double photonEcalRecHitThreshEA_;
00104 double photonEcalRecHitThreshEtA_;
00105 double photonHcalTowerConeInnerRadiusA_;
00106 double photonHcalTowerConeOuterRadiusA_;
00107 double photonHcalTowerThreshEA_;
00108 double photonHcalDepth1TowerConeInnerRadiusA_;
00109 double photonHcalDepth1TowerConeOuterRadiusA_;
00110 double photonHcalDepth1TowerThreshEA_;
00111 double photonHcalDepth2TowerConeInnerRadiusA_;
00112 double photonHcalDepth2TowerConeOuterRadiusA_;
00113 double photonHcalDepth2TowerThreshEA_;
00114 double trackConeOuterRadiusA_;
00115 double trackConeInnerRadiusA_;
00116 double isolationtrackThresholdA_;
00117 double isolationtrackEtaSliceA_;
00118 double trackLipRadiusA_;
00119 double trackD0RadiusA_;
00120
00121 int severityLevelCut_;
00122
00123
00124
00125 std::vector<int> v_chstatus_;
00126
00127
00128
00129 double photonEcalRecHitConeInnerRadiusB_;
00130 double photonEcalRecHitConeOuterRadiusB_;
00131 double photonEcalRecHitEtaSliceB_;
00132 double photonEcalRecHitThreshEB_;
00133 double photonEcalRecHitThreshEtB_;
00134 double photonHcalTowerConeInnerRadiusB_;
00135 double photonHcalTowerConeOuterRadiusB_;
00136 double photonHcalTowerThreshEB_;
00137 double photonHcalDepth1TowerConeInnerRadiusB_;
00138 double photonHcalDepth1TowerConeOuterRadiusB_;
00139 double photonHcalDepth1TowerThreshEB_;
00140 double photonHcalDepth2TowerConeInnerRadiusB_;
00141 double photonHcalDepth2TowerConeOuterRadiusB_;
00142 double photonHcalDepth2TowerThreshEB_;
00143 double trackConeOuterRadiusB_;
00144 double trackConeInnerRadiusB_;
00145 double isolationtrackThresholdB_;
00146 double isolationtrackEtaSliceB_;
00147 double trackLipRadiusB_;
00148 double trackD0RadiusB_;
00149
00150
00151
00152 };
00153
00154 #endif // PhotonIsolationCalculator_H