From 895aafd8461dedd0598c4ea22dd5c38278f24a44 Mon Sep 17 00:00:00 2001 From: Christian Date: Thu, 5 Mar 2015 16:02:56 +0100 Subject: [PATCH] added cut that each tau has at least one pixel hits (for at least one of the signal tracks), in order to reduce increase of jet -> tau fake-rate observed for high pT jets in the Phys14 samples --- .../PFRecoTauDiscriminationByHPSSelection.cc | 23 +++++++++++++++++++ ...RecoTauDiscriminationByHPSSelection_cfi.py | 4 +++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByHPSSelection.cc b/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByHPSSelection.cc index 7b147717f4d67..eed957de77242 100644 --- a/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByHPSSelection.cc +++ b/RecoTauTag/RecoTau/plugins/PFRecoTauDiscriminationByHPSSelection.cc @@ -54,6 +54,8 @@ class PFRecoTauDiscriminationByHPSSelection : public PFTauDiscriminationProducer bool requireTauChargedHadronsToBeChargedPFCands_; + int minPixelHits_; + int verbosity_; }; @@ -103,6 +105,7 @@ PFRecoTauDiscriminationByHPSSelection::PFRecoTauDiscriminationByHPSSelection(con )); } requireTauChargedHadronsToBeChargedPFCands_ = pset.getParameter("requireTauChargedHadronsToBeChargedPFCands"); + minPixelHits_ = pset.getParameter("minPixelHits"); verbosity_ = pset.exists("verbosity") ? pset.getParameter("verbosity") : 0; } @@ -284,6 +287,26 @@ PFRecoTauDiscriminationByHPSSelection::discriminate(const reco::PFTauRef& tau) c } } } + + if ( minPixelHits_ > 0 ) { + int numPixelHits = 0; + const std::vector& chargedHadrCands = tau->signalPFChargedHadrCands(); + for ( std::vector::const_iterator chargedHadrCand = chargedHadrCands.begin(); + chargedHadrCand != chargedHadrCands.end(); ++chargedHadrCand ) { + const reco::Track* track = 0; + if ( (*chargedHadrCand)->trackRef().isNonnull() ) track = (*chargedHadrCand)->trackRef().get(); + else if ( (*chargedHadrCand)->gsfTrackRef().isNonnull() ) track = (*chargedHadrCand)->gsfTrackRef().get(); + if ( track ) { + numPixelHits += track->hitPattern().numberOfValidPixelHits(); + } + } + if ( !(numPixelHits >= minPixelHits_) ) { + if ( verbosity_ ) { + edm::LogPrint("PFTauByHPSSelect") << " fails cut on sum of pixel hits." ; + } + return 0.0; + } + } // Otherwise, we pass! if ( verbosity_ ) { diff --git a/RecoTauTag/RecoTau/python/PFRecoTauDiscriminationByHPSSelection_cfi.py b/RecoTauTag/RecoTau/python/PFRecoTauDiscriminationByHPSSelection_cfi.py index ee0b64a68ec57..b696df359b875 100644 --- a/RecoTauTag/RecoTau/python/PFRecoTauDiscriminationByHPSSelection_cfi.py +++ b/RecoTauTag/RecoTau/python/PFRecoTauDiscriminationByHPSSelection_cfi.py @@ -75,7 +75,9 @@ decayMode_2Prong1Pi0, decayMode_3Prong0Pi0 ), - requireTauChargedHadronsToBeChargedPFCands = cms.bool(False) + requireTauChargedHadronsToBeChargedPFCands = cms.bool(False), + # CV: require at least one pixel hit for the sum of all tracks + minPixelHits = cms.int32(1) )