#include <RecoEgamma/EgammaIsolationAlgos/plugins/EgammaTrackSelector.h>
Public Types | |
typedef reco::TrackBase::Point | BeamPoint |
typedef edm::View< reco::Track > | input_type |
typedef egammaisolation::EgammaRange < float > | Range |
typedef std::list< const reco::Track * > | result_type |
Public Member Functions | |
EgammaTrackSelector (const Parameters &pars) | |
result_type | operator() (const input_type &tracks) const |
Private Attributes | |
Parameters | thePars |
Classes | |
struct | Parameters |
config parameters More... |
Definition at line 13 of file EgammaTrackSelector.h.
Definition at line 19 of file EgammaTrackSelector.h.
Definition at line 18 of file EgammaTrackSelector.h.
Definition at line 16 of file EgammaTrackSelector.h.
typedef std::list<const reco::Track*> egammaisolation::EgammaTrackSelector::result_type |
Definition at line 17 of file EgammaTrackSelector.h.
egammaisolation::EgammaTrackSelector::EgammaTrackSelector | ( | const Parameters & | pars | ) | [inline] |
EgammaTrackSelector::result_type EgammaTrackSelector::operator() | ( | const input_type & | tracks | ) | const |
pick/read variables in order to cut down on unnecessary calls someone will have some fun reading the log if Debug is on the biggest reason is the numberOfValidHits call (the rest are not as costly)
access to the remaining vars is slow
skip if min Hits == 0; assumes any track has at least one valid hit
similarly here
Definition at line 8 of file EgammaTrackSelector.cc.
References egammaisolation::EgammaTrackSelector::Parameters::beamPoint, edm::View< T >::begin(), egammaisolation::EgammaTrackSelector::Parameters::chi2NdofMax, egammaisolation::EgammaTrackSelector::Parameters::chi2ProbMin, ChiSquaredProbability(), reco::isodeposit::Direction::deltaR(), egammaisolation::EgammaTrackSelector::Parameters::dir, egammaisolation::EgammaTrackSelector::Parameters::drMax, edm::View< T >::end(), lat::endl(), egammaisolation::EgammaRange< T >::inside(), it, LogTrace, egammaisolation::EgammaTrackSelector::Parameters::nHitsMin, egammaisolation::EgammaTrackSelector::Parameters::ptMin, HLT_VtxMuL3::result, egammaisolation::EgammaTrackSelector::Parameters::rRange, thePars, and egammaisolation::EgammaTrackSelector::Parameters::zRange.
00009 { 00010 static std::string metname = "EgammaIsolationAlgos|EgammaTrackSelector"; 00011 result_type result; 00012 for (input_type::const_iterator it = tracks.begin(); it != tracks.end(); it++) { 00013 00014 // float tZ = it->vz(); 00015 // float tD0 = fabs(it->d0()); 00016 // float tD0Cor = fabs(it->dxy(thePars.beamPoint)); 00017 // float tEta = it->eta(); 00018 // float tPhi = it->phi(); 00019 // uint tHits = it->numberOfValidHits(); 00020 // float tChi2Ndof = it->normalizedChi2(); 00021 // float tChi2Prob = ChiSquaredProbability(it->chi2(), it->ndof()); 00022 // float tPt = it->pt(); 00023 00024 // LogTrace(metname)<<"Tk vz: "<<tZ 00025 // <<", d0: "<<tD0 00026 // <<", d0wrtBeam: "<<tD0Cor 00027 // <<", eta: "<<tEta 00028 // <<", phi: "<<tPhi 00029 // <<", nHits: "<<tHits 00030 // <<", chi2Norm: "<<tChi2Ndof 00031 // <<", chi2Prob: "<<tChi2Prob 00032 // <<std::endl; 00033 00037 00038 float tZ = it->vz(); 00039 float tPt = it->pt(); 00040 float tD0 = fabs(it->d0()); 00041 float tD0Cor = fabs(it->dxy(thePars.beamPoint)); 00042 float tEta = it->eta(); 00043 float tPhi = it->phi(); 00044 float tChi2Ndof = it->normalizedChi2(); 00045 LogTrace(metname)<<"Tk vz: "<<tZ 00046 <<", pt: "<<tPt 00047 <<", d0: "<<tD0 00048 <<", d0wrtBeam: "<<tD0Cor 00049 <<", eta: "<<tEta 00050 <<", phi: "<<tPhi 00051 <<", chi2Norm: "<<tChi2Ndof; 00053 00054 if ( !thePars.zRange.inside( tZ ) ) continue; 00055 if ( tPt < thePars.ptMin ) continue; 00056 if ( !thePars.rRange.inside( tD0Cor) ) continue; 00057 if ( thePars.dir.deltaR( reco::isodeposit::Direction(tEta, tPhi) ) > thePars.drMax ) continue; 00058 if ( tChi2Ndof > thePars.chi2NdofMax ) continue; 00059 00061 if (thePars.nHitsMin > 0 ){ 00062 uint tHits = it->numberOfValidHits(); 00063 LogTrace(metname)<<", nHits: "<<tHits; 00064 if ( tHits < thePars.nHitsMin ) continue; 00065 } 00066 00068 if(thePars.chi2ProbMin > 0){ 00069 float tChi2Prob = ChiSquaredProbability(it->chi2(), it->ndof()); 00070 LogTrace(metname)<<", chi2Prob: "<<tChi2Prob<<std::endl; 00071 if ( tChi2Prob < thePars.chi2ProbMin ) continue; 00072 } 00073 00074 LogTrace(metname)<<" ..... accepted"<<std::endl; 00075 result.push_back(&*it); 00076 } 00077 return result; 00078 }