CMS 3D CMS Logo

Public Member Functions | Private Attributes

reco::tau::RecoTauTwoProngFilter Class Reference

Inheritance diagram for reco::tau::RecoTauTwoProngFilter:
reco::tau::RecoTauModifierPlugin reco::tau::RecoTauEventHolderPlugin reco::tau::RecoTauNamedPlugin

List of all members.

Public Member Functions

void operator() (PFTau &) const
 RecoTauTwoProngFilter (const edm::ParameterSet &pset)
virtual ~RecoTauTwoProngFilter ()

Private Attributes

double minPtFractionForSecondProng_

Detailed Description

Definition at line 34 of file RecoTauTwoProngFilter.cc.


Constructor & Destructor Documentation

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.

{}

Member Function Documentation

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);
    }
  }
}

Member Data Documentation

Definition at line 40 of file RecoTauTwoProngFilter.cc.

Referenced by operator()(), and RecoTauTwoProngFilter().