![]() |
![]() |
Public Member Functions | |
void | operator() (PFTau &) const |
RecoTauTwoProngFilter (const edm::ParameterSet &pset) | |
virtual | ~RecoTauTwoProngFilter () |
Private Attributes | |
double | minPtFractionForSecondProng_ |
Definition at line 34 of file RecoTauTwoProngFilter.cc.
reco::tau::RecoTauTwoProngFilter::RecoTauTwoProngFilter | ( | const edm::ParameterSet & | pset | ) | [explicit] |
Definition at line 43 of file RecoTauTwoProngFilter.cc.
References edm::ParameterSet::getParameter(), and minPtFractionForSecondProng_.
:RecoTauModifierPlugin(pset) { minPtFractionForSecondProng_ = pset.getParameter<double>("minPtFractionForSecondProng"); }
virtual reco::tau::RecoTauTwoProngFilter::~RecoTauTwoProngFilter | ( | ) | [inline, virtual] |
Definition at line 37 of file RecoTauTwoProngFilter.cc.
{}
void reco::tau::RecoTauTwoProngFilter::operator() | ( | PFTau & | tau | ) | const [virtual] |
Implements reco::tau::RecoTauModifierPlugin.
Definition at line 47 of file RecoTauTwoProngFilter.cc.
References reco::LeafCandidate::charge(), align_tpl::filter, reco::PFTau::isolationPFCands(), reco::PFTau::isolationPFChargedHadrCands(), reco::PFTau::isolationPFChargedHadrCandsPtSum(), keep, minPtFractionForSecondProng_, reco::LeafCandidate::p4(), edm::RefVector< C, T, F >::push_back(), reco::LeafCandidate::setCharge(), reco::PFTau::setisolationPFCands(), reco::PFTau::setisolationPFChargedHadrCands(), reco::PFTau::setisolationPFChargedHadrCandsPtSum(), reco::LeafCandidate::setP4(), reco::PFTau::setsignalPFCands(), reco::PFTau::setsignalPFChargedHadrCands(), reco::PFTau::signalPFCands(), reco::PFTau::signalPFChargedHadrCands(), and edm::RefVector< C, T, F >::size().
{ if (tau.signalPFChargedHadrCands().size() == 2) { const PFCandidateRefVector &signalCharged = tau.signalPFChargedHadrCands(); size_t indexOfHighestPt = (signalCharged[0]->pt() > signalCharged[1]->pt()) ? 0 : 1; size_t indexOfLowerPt = ( indexOfHighestPt ) ? 0 : 1; double ratio = signalCharged[indexOfLowerPt]->pt()/ signalCharged[indexOfHighestPt]->pt(); if (ratio < minPtFractionForSecondProng_) { PFCandidateRef keep = signalCharged[indexOfHighestPt]; PFCandidateRef filter = signalCharged[indexOfLowerPt]; // Make our new signal charged candidate collection PFCandidateRefVector newSignalCharged; newSignalCharged.push_back(keep); PFCandidateRefVector newSignal = tau.signalPFCands(); deleteFrom(filter, &newSignal); // Copy our filtered cand to isolation PFCandidateRefVector newIsolationCharged = tau.isolationPFChargedHadrCands(); newIsolationCharged.push_back(filter); PFCandidateRefVector newIsolation = tau.isolationPFCands(); newIsolation.push_back(filter); // Update tau members tau.setP4(tau.p4() - filter->p4()); tau.setisolationPFChargedHadrCandsPtSum( tau.isolationPFChargedHadrCandsPtSum() - filter->pt()); tau.setCharge(tau.charge() - filter->charge()); // Update tau constituents tau.setsignalPFChargedHadrCands(newSignalCharged); tau.setsignalPFCands(newSignal); tau.setisolationPFChargedHadrCands(newIsolationCharged); tau.setisolationPFCands(newIsolation); } } }
double reco::tau::RecoTauTwoProngFilter::minPtFractionForSecondProng_ [private] |
Definition at line 40 of file RecoTauTwoProngFilter.cc.
Referenced by operator()(), and RecoTauTwoProngFilter().