![]() |
![]() |
#include <RecoEgamma/EgammaIsolationAlgos/plugins/EgammaTrackExtractor.h>
Public Member Functions | |
virtual reco::IsoDeposit | deposit (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::Candidate &muon) const |
make single IsoDeposit based on a candidate as input purely virtual: have to implement in concrete implementations | |
virtual reco::IsoDeposit | deposit (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::Track &muon) const |
make single IsoDeposit based on track as input purely virtual: have to implement in concrete implementations | |
EgammaTrackExtractor (const edm::ParameterSet &par) | |
EgammaTrackExtractor () | |
virtual void | fillVetos (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::TrackCollection &track) |
fill vetoes: to exclude deposits at IsoDeposit creation stage check concrete extractors if it's no-op ! | |
virtual reco::IsoDeposit::Vetos | vetos (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::Track &track) const |
virtual | ~EgammaTrackExtractor () |
Private Member Functions | |
reco::IsoDeposit::Veto | veto (const reco::IsoDeposit::Direction &dir) const |
Private Attributes | |
edm::InputTag | barrelEcalHitsTag_ |
"NONE", "BeamSpotFromEvent" | |
edm::InputTag | endcapEcalHitsTag_ |
double | minCandEt_ |
name for deposit | |
std::vector< double > | paramForIsolBarrel_ |
min track pt to include into iso deposit | |
std::vector< double > | paramForIsolEndcap_ |
Barrel requirements to determine if isolated for selective filling. | |
std::string | theBeamlineOption |
Veto cone angle. | |
edm::InputTag | theBeamSpotLabel |
double | theChi2Ndof_Max |
trk.numberOfValidHits >= theNHits_Min | |
double | theChi2Prob_Min |
trk.normalizedChi2 < theChi2Ndof_Max | |
std::string | theDepositLabel |
Track Collection Label. | |
double | theDiff_r |
minimum candidate et | |
double | theDiff_z |
transverse distance to vertex | |
double | theDR_Max |
z distance to vertex | |
double | theDR_Veto |
Maximum cone angle for deposits. | |
uint | theNHits_Min |
BeamSpot name. | |
double | thePt_Min |
ChiSquaredProbability(trk.chi2,trk.ndof) > theChi2Prob_Min. | |
edm::InputTag | theTrackCollectionTag |
Definition at line 17 of file EgammaTrackExtractor.h.
egammaisolation::EgammaTrackExtractor::EgammaTrackExtractor | ( | ) | [inline] |
EgammaTrackExtractor::EgammaTrackExtractor | ( | const edm::ParameterSet & | par | ) |
Definition at line 29 of file EgammaTrackExtractor.cc.
References edm::ParameterSet::getParameter(), paramForIsolBarrel_, and paramForIsolEndcap_.
00029 : 00030 theTrackCollectionTag(par.getParameter<edm::InputTag>("inputTrackCollection")), 00031 theDepositLabel(par.getUntrackedParameter<string>("DepositLabel")), 00032 minCandEt_(par.getParameter<double>("minCandEt")), 00033 theDiff_r(par.getParameter<double>("Diff_r")), 00034 theDiff_z(par.getParameter<double>("Diff_z")), 00035 theDR_Max(par.getParameter<double>("DR_Max")), 00036 theDR_Veto(par.getParameter<double>("DR_Veto")), 00037 theBeamlineOption(par.getParameter<string>("BeamlineOption")), 00038 barrelEcalHitsTag_(par.getParameter<edm::InputTag>("barrelEcalHits")), 00039 endcapEcalHitsTag_(par.getParameter<edm::InputTag>("endcapEcalHits")), 00040 theBeamSpotLabel(par.getParameter<edm::InputTag>("BeamSpotLabel")), 00041 theNHits_Min(par.getParameter<uint>("NHits_Min")), 00042 theChi2Ndof_Max(par.getParameter<double>("Chi2Ndof_Max")), 00043 theChi2Prob_Min(par.getParameter<double>("Chi2Prob_Min")), 00044 thePt_Min(par.getParameter<double>("Pt_Min")) 00045 { 00046 paramForIsolBarrel_.push_back(par.getParameter<double>("checkIsoExtRBarrel")); 00047 paramForIsolBarrel_.push_back(par.getParameter<double>("checkIsoInnRBarrel")); 00048 paramForIsolBarrel_.push_back(par.getParameter<double>("checkIsoEtaStripBarrel")); 00049 paramForIsolBarrel_.push_back(par.getParameter<double>("checkIsoEtRecHitBarrel")); 00050 paramForIsolBarrel_.push_back(par.getParameter<double>("checkIsoEtCutBarrel")); 00051 00052 paramForIsolEndcap_.push_back(par.getParameter<double>("checkIsoExtREndcap")); 00053 paramForIsolEndcap_.push_back(par.getParameter<double>("checkIsoInnREndcap")); 00054 paramForIsolEndcap_.push_back(par.getParameter<double>("checkIsoEtaStripEndcap")); 00055 paramForIsolEndcap_.push_back(par.getParameter<double>("checkIsoEtRecHitEndcap")); 00056 paramForIsolEndcap_.push_back(par.getParameter<double>("checkIsoEtCutEndcap")); 00057 }
virtual egammaisolation::EgammaTrackExtractor::~EgammaTrackExtractor | ( | ) | [inline, virtual] |
IsoDeposit EgammaTrackExtractor::deposit | ( | const edm::Event & | ev, | |
const edm::EventSetup & | evSetup, | |||
const reco::Candidate & | track | |||
) | const [virtual] |
make single IsoDeposit based on a candidate as input purely virtual: have to implement in concrete implementations
Reimplemented from reco::isodeposit::IsoDepositExtractor.
Definition at line 74 of file EgammaTrackExtractor.cc.
References funct::abs(), barrelEcalHitsTag_, egammaisolation::EgammaTrackSelector::Parameters::chi2NdofMax, egammaisolation::EgammaTrackSelector::Parameters::chi2ProbMin, deposit(), DetId::Ecal, endcapEcalHitsTag_, lat::endl(), reco::Particle::et(), reco::Particle::eta(), reco::TrackBase::eta(), edm::EventSetup::get(), EgammaRecHitIsolation::getEtSum(), edm::Handle< T >::isValid(), LogTrace, minCandEt_, egammaisolation::EgammaTrackSelector::Parameters::nHitsMin, paramForIsolBarrel_, paramForIsolEndcap_, pars, reco::Particle::phi(), reco::TrackBase::phi(), reco::TrackBase::pt(), egammaisolation::EgammaTrackSelector::Parameters::ptMin, theBeamlineOption, theBeamSpotLabel, theChi2Ndof_Max, theChi2Prob_Min, theDiff_r, theDiff_z, theDR_Max, theNHits_Min, thePt_Min, theTrackCollectionTag, reco::Particle::vertex(), and veto().
00075 { 00076 static std::string metname = "EgammaIsolationAlgos|EgammaTrackExtractor"; 00077 00078 reco::isodeposit::Direction muonDir(candTk.eta(), candTk.phi()); 00079 00080 IsoDeposit deposit(muonDir ); 00081 deposit.setVeto( veto(muonDir) ); 00082 deposit.addCandEnergy(candTk.et()); 00083 00084 Handle<View<Track> > tracksH; 00085 event.getByLabel(theTrackCollectionTag, tracksH); 00086 // const TrackCollection tracks = *(tracksH.product()); 00087 LogTrace(metname)<<"***** TRACK COLLECTION SIZE: "<<tracksH->size(); 00088 00089 double vtx_z = candTk.vertex().z(); 00090 LogTrace(metname)<<"***** Muon vz: "<<vtx_z; 00091 reco::TrackBase::Point beamPoint(0,0, 0); 00092 00093 if (theBeamlineOption.compare("BeamSpotFromEvent") == 0){ 00094 //pick beamSpot 00095 reco::BeamSpot beamSpot; 00096 edm::Handle<reco::BeamSpot> beamSpotH; 00097 00098 event.getByLabel(theBeamSpotLabel,beamSpotH); 00099 00100 if (beamSpotH.isValid()){ 00101 beamPoint = beamSpotH->position(); 00102 LogTrace(metname)<<"Extracted beam point at "<<beamPoint<<std::endl; 00103 } 00104 } 00105 00106 LogTrace(metname)<<"Using beam point at "<<beamPoint<<std::endl; 00107 00108 //Get barrel ECAL RecHits for Iso checking 00109 edm::Handle<EcalRecHitCollection> barrelEcalRecHitsH; 00110 event.getByLabel(barrelEcalHitsTag_, barrelEcalRecHitsH); 00111 00112 //Get endcap ECAL RecHits for Iso checking 00113 edm::Handle<EcalRecHitCollection> endcapEcalRecHitsH; 00114 event.getByLabel(endcapEcalHitsTag_, endcapEcalRecHitsH); 00115 00116 edm::ESHandle<CaloGeometry> pG; 00117 eventSetup.get<CaloGeometryRecord>().get(pG); 00118 00119 std::auto_ptr<CaloRecHitMetaCollectionV> ecalRecHits(0); 00120 double extRadius, innRadius, etaStrip, minEtRecHit, isolEtCut; 00121 if( abs(candTk.eta()) < 1.5 ) { 00122 extRadius = paramForIsolBarrel_[0]; 00123 innRadius = paramForIsolBarrel_[1]; 00124 etaStrip = paramForIsolBarrel_[2]; 00125 minEtRecHit = paramForIsolBarrel_[3]; 00126 isolEtCut = paramForIsolBarrel_[4]; 00127 ecalRecHits = std::auto_ptr<CaloRecHitMetaCollectionV>(new EcalRecHitMetaCollection(*barrelEcalRecHitsH)); 00128 } else { 00129 extRadius = paramForIsolEndcap_[0]; 00130 innRadius = paramForIsolEndcap_[1]; 00131 etaStrip = paramForIsolEndcap_[2]; 00132 minEtRecHit = paramForIsolEndcap_[3]; 00133 isolEtCut = paramForIsolEndcap_[4]; 00134 ecalRecHits = std::auto_ptr<CaloRecHitMetaCollectionV>(new EcalRecHitMetaCollection(*endcapEcalRecHitsH)); 00135 } 00136 00137 EgammaRecHitIsolation candIso(extRadius,innRadius,etaStrip,minEtRecHit,pG,&(*ecalRecHits),DetId::Ecal); 00138 if ( candTk.et() < minCandEt_ || candIso.getEtSum(&candTk) > isolEtCut ) { 00139 deposit.addDeposit( Direction(candTk.eta(), candTk.phi()+0.15), 10000 ); 00140 deposit.addDeposit( Direction(candTk.eta(), candTk.phi()+0.25), 100000 ); 00141 } else { 00142 EgammaTrackSelector::Parameters pars(EgammaTrackSelector::Range(vtx_z-theDiff_z, vtx_z+theDiff_z), 00143 theDiff_r, muonDir, theDR_Max, beamPoint); 00144 00145 pars.nHitsMin = theNHits_Min; 00146 pars.chi2NdofMax = theChi2Ndof_Max; 00147 pars.chi2ProbMin = theChi2Prob_Min; 00148 pars.ptMin = thePt_Min; 00149 00150 EgammaTrackSelector selection(pars); 00151 EgammaTrackSelector::result_type sel_tracks = selection(*tracksH); 00152 LogTrace(metname)<<"all tracks: "<<tracksH->size()<<" selected: "<<sel_tracks.size(); 00153 00154 00155 EgammaTrackSelector::result_type::const_iterator tkI = sel_tracks.begin(); 00156 for (; tkI != sel_tracks.end(); ++tkI) { 00157 const reco::Track* tk = *tkI; 00158 LogTrace(metname) << "This track has: pt= " << tk->pt() << ", eta= " 00159 << tk->eta() <<", phi= "<<tk->phi(); 00160 reco::isodeposit::Direction dirTrk(tk->eta(), tk->phi()); 00161 deposit.addDeposit(dirTrk, tk->pt()); 00162 } 00163 00164 } 00165 return deposit; 00166 }
virtual reco::IsoDeposit egammaisolation::EgammaTrackExtractor::deposit | ( | const edm::Event & | ev, | |
const edm::EventSetup & | evSetup, | |||
const reco::Track & | track | |||
) | const [inline, virtual] |
make single IsoDeposit based on track as input purely virtual: have to implement in concrete implementations
Implements reco::isodeposit::IsoDepositExtractor.
Definition at line 32 of file EgammaTrackExtractor.h.
Referenced by deposit().
00033 { 00034 edm::LogWarning("EgammaIsolationAlgos|EgammaTrackExtractor") 00035 << "This Function is not implemented, bad IsoDeposit Returned"; 00036 return reco::IsoDeposit( reco::isodeposit::Direction(1,1) ); 00037 }
virtual void egammaisolation::EgammaTrackExtractor::fillVetos | ( | const edm::Event & | ev, | |
const edm::EventSetup & | evSetup, | |||
const reco::TrackCollection & | tracks | |||
) | [inline, virtual] |
fill vetoes: to exclude deposits at IsoDeposit creation stage check concrete extractors if it's no-op !
Implements reco::isodeposit::IsoDepositExtractor.
Definition at line 26 of file EgammaTrackExtractor.h.
reco::IsoDeposit::Veto EgammaTrackExtractor::veto | ( | const reco::IsoDeposit::Direction & | dir | ) | const [private] |
Definition at line 66 of file EgammaTrackExtractor.cc.
References reco::IsoDeposit::Veto::dR, HLT_VtxMuL3::result, theDR_Veto, and reco::IsoDeposit::Veto::vetoDir.
Referenced by deposit(), and vetos().
00067 { 00068 reco::IsoDeposit::Veto result; 00069 result.vetoDir = dir; 00070 result.dR = theDR_Veto; 00071 return result; 00072 }
reco::IsoDeposit::Vetos EgammaTrackExtractor::vetos | ( | const edm::Event & | ev, | |
const edm::EventSetup & | evSetup, | |||
const reco::Track & | track | |||
) | const [virtual] |
Definition at line 59 of file EgammaTrackExtractor.cc.
References dir, reco::TrackBase::eta(), reco::TrackBase::phi(), and veto().
00061 { 00062 reco::isodeposit::Direction dir(track.eta(),track.phi()); 00063 return reco::IsoDeposit::Vetos(1,veto(dir)); 00064 }
"NONE", "BeamSpotFromEvent"
Definition at line 54 of file EgammaTrackExtractor.h.
Referenced by deposit().
double egammaisolation::EgammaTrackExtractor::minCandEt_ [private] |
std::vector<double> egammaisolation::EgammaTrackExtractor::paramForIsolBarrel_ [private] |
min track pt to include into iso deposit
Definition at line 61 of file EgammaTrackExtractor.h.
Referenced by deposit(), and EgammaTrackExtractor().
std::vector<double> egammaisolation::EgammaTrackExtractor::paramForIsolEndcap_ [private] |
Barrel requirements to determine if isolated for selective filling.
Definition at line 62 of file EgammaTrackExtractor.h.
Referenced by deposit(), and EgammaTrackExtractor().
std::string egammaisolation::EgammaTrackExtractor::theBeamlineOption [private] |
double egammaisolation::EgammaTrackExtractor::theChi2Ndof_Max [private] |
trk.numberOfValidHits >= theNHits_Min
Definition at line 58 of file EgammaTrackExtractor.h.
Referenced by deposit().
double egammaisolation::EgammaTrackExtractor::theChi2Prob_Min [private] |
trk.normalizedChi2 < theChi2Ndof_Max
Definition at line 59 of file EgammaTrackExtractor.h.
Referenced by deposit().
std::string egammaisolation::EgammaTrackExtractor::theDepositLabel [private] |
double egammaisolation::EgammaTrackExtractor::theDiff_r [private] |
double egammaisolation::EgammaTrackExtractor::theDiff_z [private] |
transverse distance to vertex
Definition at line 50 of file EgammaTrackExtractor.h.
Referenced by deposit().
double egammaisolation::EgammaTrackExtractor::theDR_Max [private] |
double egammaisolation::EgammaTrackExtractor::theDR_Veto [private] |
Maximum cone angle for deposits.
Definition at line 52 of file EgammaTrackExtractor.h.
Referenced by veto().
uint egammaisolation::EgammaTrackExtractor::theNHits_Min [private] |
double egammaisolation::EgammaTrackExtractor::thePt_Min [private] |
ChiSquaredProbability(trk.chi2,trk.ndof) > theChi2Prob_Min.
Definition at line 60 of file EgammaTrackExtractor.h.
Referenced by deposit().