00001 #ifndef PhysicsTools_IsolationAlgos_PFTauExtractor_H 00002 #define PhysicsTools_IsolationAlgos_PFTauExtractor_H 00003 00004 #include "FWCore/Framework/interface/Event.h" 00005 #include "FWCore/Framework/interface/EventSetup.h" 00006 #include "FWCore/ParameterSet/interface/InputTag.h" 00007 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00008 00009 #include "PhysicsTools/IsolationAlgos/interface/IsoDepositExtractor.h" 00010 00011 #include "DataFormats/TrackReco/interface/Track.h" 00012 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00013 #include "DataFormats/Candidate/interface/Candidate.h" 00014 #include "DataFormats/Candidate/interface/CandidateFwd.h" 00015 #include "DataFormats/RecoCandidate/interface/IsoDeposit.h" 00016 00017 class PFTauExtractor : public reco::isodeposit::IsoDepositExtractor 00018 { 00019 public: 00020 00021 explicit PFTauExtractor(const edm::ParameterSet&); 00022 virtual ~PFTauExtractor(){} 00023 00025 virtual void fillVetos(const edm::Event&, const edm::EventSetup&, const reco::TrackCollection&) { } 00026 virtual reco::IsoDeposit deposit(const edm::Event& evt, const edm::EventSetup& es, const reco::Track& track) const { 00027 return depositFromObject(evt, es, track); 00028 } 00029 virtual reco::IsoDeposit deposit(const edm::Event& evt, const edm::EventSetup& es, const reco::Candidate& candidate) const { 00030 return depositFromObject(evt, es, candidate); 00031 } 00032 00033 private: 00034 00036 edm::InputTag tauSource_; 00037 edm::InputTag candidateSource_; 00038 double maxDxyTrack_; 00039 double maxDzTrack_; 00040 double dRmatchPFTau_; 00041 double dRVetoCone_; 00042 double dRIsoCone_; 00043 double dRvetoPFTauSignalConeConstituents_; 00044 00047 template<typename T> 00048 reco::IsoDeposit depositFromObject(const edm::Event&, const edm::EventSetup&, const T&) const; 00049 00050 }; 00051 00052 #endif