File indexing completed on 2024-09-07 04:37:18
0001 #ifndef IsolationAlgos_IsoDepositExtractor_H
0002 #define IsolationAlgos_IsoDepositExtractor_H
0003
0004
0005
0006
0007
0008 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0009
0010 #include "FWCore/Framework/interface/Event.h"
0011 #include "FWCore/Framework/interface/EventSetup.h"
0012
0013 #include "DataFormats/TrackReco/interface/Track.h"
0014 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0015
0016 #include "DataFormats/Candidate/interface/Candidate.h"
0017 #include "DataFormats/Candidate/interface/CandidateFwd.h"
0018
0019 #include "DataFormats/RecoCandidate/interface/IsoDeposit.h"
0020
0021 namespace reco {
0022 namespace isodeposit {
0023
0024 class IsoDepositExtractor {
0025 public:
0026
0027 virtual ~IsoDepositExtractor() {}
0028
0029
0030
0031 virtual void fillVetos(const edm::Event& ev,
0032 const edm::EventSetup& evSetup,
0033 const reco::TrackCollection& tracks) = 0;
0034
0035
0036 virtual void initEvent(const edm::Event&, const edm::EventSetup&) {}
0037
0038
0039
0040 virtual reco::IsoDeposit deposit(const edm::Event& ev,
0041 const edm::EventSetup& evSetup,
0042 const reco::Track& track) const = 0;
0043
0044
0045 virtual reco::IsoDeposit deposit(const edm::Event& ev,
0046 const edm::EventSetup& evSetup,
0047 const reco::TrackBaseRef& track) const {
0048 return deposit(ev, evSetup, *track);
0049 }
0050
0051
0052
0053 virtual reco::IsoDeposit deposit(const edm::Event& ev,
0054 const edm::EventSetup& evSetup,
0055 const reco::Candidate& track) const {
0056
0057 return deposit(
0058 ev,
0059 evSetup,
0060 reco::Track(10, 10, track.vertex(), track.momentum(), track.charge(), reco::Track::CovarianceMatrix()));
0061 }
0062
0063
0064 virtual reco::IsoDeposit deposit(const edm::Event& ev,
0065 const edm::EventSetup& evSetup,
0066 const reco::CandidateBaseRef& track) const {
0067 return deposit(ev, evSetup, *track);
0068 }
0069
0070
0071
0072
0073 virtual std::vector<reco::IsoDeposit> deposits(const edm::Event& ev,
0074 const edm::EventSetup& evSetup,
0075 const reco::Track& track) const {
0076 return std::vector<reco::IsoDeposit>(1, deposit(ev, evSetup, track));
0077 }
0078
0079
0080
0081 virtual std::vector<reco::IsoDeposit> deposits(const edm::Event& ev,
0082 const edm::EventSetup& evSetup,
0083 const reco::TrackBaseRef& track) const {
0084 return deposits(ev, evSetup, *track);
0085 }
0086
0087
0088
0089 virtual std::vector<reco::IsoDeposit> deposits(const edm::Event& ev,
0090 const edm::EventSetup& evSetup,
0091 const reco::Candidate& track) const {
0092 return deposits(
0093 ev,
0094 evSetup,
0095 reco::Track(10, 10, track.vertex(), track.momentum(), track.charge(), reco::Track::CovarianceMatrix()));
0096 }
0097
0098
0099
0100 virtual std::vector<reco::IsoDeposit> deposits(const edm::Event& ev,
0101 const edm::EventSetup& evSetup,
0102 const reco::CandidateBaseRef& track) const {
0103 return deposits(ev, evSetup, *track);
0104 }
0105 };
0106 }
0107 }
0108 #endif