Go to the documentation of this file.00001 #ifndef EgammaIsolationProducers_EgammaRecHitExtractor_h
00002 #define EgammaIsolationProducers_EgammaRecHitExtractor_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <vector>
00013 #include <functional>
00014
00015
00016 #include "FWCore/Framework/interface/ESHandle.h"
00017 #include "DataFormats/Candidate/interface/Candidate.h"
00018 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00019 #include "RecoCaloTools/MetaCollections/interface/CaloRecHitMetaCollections.h"
00020
00021 #include "FWCore/Framework/interface/Event.h"
00022 #include "FWCore/Framework/interface/EventSetup.h"
00023 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00024 #include "FWCore/Utilities/interface/InputTag.h"
00025
00026 #include "DataFormats/TrackReco/interface/Track.h"
00027 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00028 #include "PhysicsTools/IsolationAlgos/interface/IsoDepositExtractor.h"
00029 #include "DataFormats/RecoCandidate/interface/IsoDeposit.h"
00030 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
00031 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
00032
00033 #include "CondFormats/EcalObjects/interface/EcalChannelStatus.h"
00034 #include "CondFormats/DataRecord/interface/EcalChannelStatusRcd.h"
00035
00036 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgo.h"
00037 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgoRcd.h"
00038
00039 namespace egammaisolation {
00040
00041 class EgammaRecHitExtractor : public reco::isodeposit::IsoDepositExtractor {
00042 public:
00043 EgammaRecHitExtractor(const edm::ParameterSet& par);
00044 virtual ~EgammaRecHitExtractor() ;
00045 virtual void fillVetos(const edm::Event & ev, const edm::EventSetup & evSetup, const reco::TrackCollection & tracks) { }
00046 virtual reco::IsoDeposit deposit(const edm::Event & ev, const edm::EventSetup & evSetup, const reco::Track & track) const {
00047 throw cms::Exception("Configuration Error") << "This extractor " << (typeid(this).name()) << " is not made for tracks";
00048 }
00049 virtual reco::IsoDeposit deposit(const edm::Event & ev, const edm::EventSetup & evSetup, const reco::Candidate & c) const ;
00050
00051 private:
00052 void collect(reco::IsoDeposit &deposit,
00053 const reco::SuperClusterRef& sc, const CaloSubdetectorGeometry* subdet,
00054 const CaloGeometry* caloGeom,
00055 const EcalRecHitCollection &hits,
00056 const EcalChannelStatus* chStatus,
00057 const EcalSeverityLevelAlgo* sevLevel,
00058 bool barrel) const;
00059
00060 double etMin_ ;
00061 double energyMin_ ;
00062 double extRadius_ ;
00063 double intRadius_ ;
00064 double intStrip_ ;
00065 edm::InputTag barrelEcalHitsTag_;
00066 edm::InputTag endcapEcalHitsTag_;
00067 bool fakeNegativeDeposit_;
00068 bool tryBoth_;
00069 bool useEt_;
00070 bool vetoClustered_;
00071 bool sameTag_;
00072 int severityLevelCut_;
00073
00074
00075
00076
00077 std::vector<int> v_chstatus_;
00078
00079
00080 };
00081 }
00082 #endif