![]() |
![]() |
00001 #ifndef EgammaIsolationAlgos_EgammaTrackSelector_H 00002 #define EgammaIsolationAlgos_EgammaTrackSelector_H 00003 00004 #include "RecoEgamma/EgammaIsolationAlgos/plugins/EgammaRange.h" 00005 #include "DataFormats/RecoCandidate/interface/IsoDepositDirection.h" 00006 #include "DataFormats/TrackReco/interface/Track.h" 00007 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00008 #include "DataFormats/Common/interface/View.h" 00009 #include <list> 00010 00011 namespace egammaisolation { 00012 00013 class EgammaTrackSelector { 00014 public: 00015 00016 typedef egammaisolation::EgammaRange<float> Range; 00017 typedef std::list<const reco::Track*> result_type; 00018 typedef edm::View<reco::Track> input_type; 00019 typedef reco::TrackBase::Point BeamPoint; 00020 00022 struct Parameters { 00023 Parameters() 00024 : zRange(-1e6,1e6), rRange(-1e6,1e6), dir(0,0), drMax(1e3), beamPoint(0,0,0), 00025 nHitsMin(0), chi2NdofMax(1e64), chi2ProbMin(-1.), ptMin(-1) {} 00026 Parameters(const Range& dz, const double d0Max, const reco::isodeposit::Direction& dirC, double rMax, 00027 const BeamPoint& point = BeamPoint(0,0,0)) 00028 : zRange(dz), rRange(Range(0,d0Max)), dir(dirC), drMax(rMax), beamPoint(point), 00029 nHitsMin(0), chi2NdofMax(1e64), chi2ProbMin(-1.), ptMin(-1) {} 00030 Range zRange; 00031 Range rRange; 00032 reco::isodeposit::Direction dir; 00033 double drMax; 00034 BeamPoint beamPoint; 00035 uint nHitsMin; 00036 double chi2NdofMax; 00037 double chi2ProbMin; 00038 double ptMin; 00039 }; 00040 00041 00042 EgammaTrackSelector(const Parameters& pars) : thePars(pars) { } 00043 00044 result_type operator()(const input_type & tracks) const; 00045 00046 00047 private: 00048 Parameters thePars; 00049 }; 00050 00051 } 00052 00053 #endif