Public Member Functions | |
void | beginEvent (const edm::Event &, const edm::EventSetup &) |
double | discriminate (const reco::PFTauRef &) |
PFRecoTauDiscriminationByFlightPathSignificance (const ParameterSet &iConfig) | |
~PFRecoTauDiscriminationByFlightPathSignificance () | |
Private Member Functions | |
double | threeProngFlightPathSig (const PFTauRef &) |
double | vertexSignificance (reco::Vertex &, reco::Vertex &, GlobalVector &) |
Private Attributes | |
bool | booleanOutput |
double | flightPathSig |
reco::Vertex | primaryVertex |
edm::InputTag | PVProducer |
PFTauQualityCutWrapper | qualityCuts_ |
const TransientTrackBuilder * | transientTrackBuilder |
bool | withPVError |
Definition at line 24 of file PFRecoTauDiscriminationByFlightPathSignificance.cc.
PFRecoTauDiscriminationByFlightPathSignificance::PFRecoTauDiscriminationByFlightPathSignificance | ( | const ParameterSet & | iConfig | ) | [inline, explicit] |
Definition at line 26 of file PFRecoTauDiscriminationByFlightPathSignificance.cc.
References edm::ParameterSet::getParameter(), and PFRecoTauDiscriminationByECALIsolation_cfi::PVProducer.
:PFTauDiscriminationProducerBase(iConfig), qualityCuts_(iConfig.getParameter<ParameterSet>("qualityCuts")){ // retrieve quality cuts flightPathSig = iConfig.getParameter<double>("flightPathSig"); withPVError = iConfig.getParameter<bool>("UsePVerror"); PVProducer = iConfig.getParameter<edm::InputTag>("PVProducer"); booleanOutput = iConfig.getParameter<bool>("BooleanOutput"); }
PFRecoTauDiscriminationByFlightPathSignificance::~PFRecoTauDiscriminationByFlightPathSignificance | ( | ) | [inline] |
Definition at line 36 of file PFRecoTauDiscriminationByFlightPathSignificance.cc.
{}
void PFRecoTauDiscriminationByFlightPathSignificance::beginEvent | ( | const edm::Event & | iEvent, |
const edm::EventSetup & | iSetup | ||
) | [virtual] |
Reimplemented from TauDiscriminationProducerBase< TauType, TauDiscriminator >.
Definition at line 57 of file PFRecoTauDiscriminationByFlightPathSignificance.cc.
References edm::View< T >::begin(), edm::EventSetup::get(), edm::Event::getByLabel(), edm::ESHandle< T >::product(), PFRecoTauDiscriminationByECALIsolation_cfi::PVProducer, and ExpressReco_HICollisions_FallBack::vertexCollection.
{ //Primary vertex edm::Handle<edm::View<reco::Vertex> > vertexHandle; iEvent.getByLabel(PVProducer, vertexHandle); const edm::View<reco::Vertex>& vertexCollection(*vertexHandle); primaryVertex = *(vertexCollection.begin()); // Transient Tracks edm::ESHandle<TransientTrackBuilder> builder; iSetup.get<TransientTrackRecord>().get("TransientTrackBuilder",builder); transientTrackBuilder = builder.product(); }
double PFRecoTauDiscriminationByFlightPathSignificance::discriminate | ( | const reco::PFTauRef & | tau | ) |
Definition at line 73 of file PFRecoTauDiscriminationByFlightPathSignificance.cc.
{ if(booleanOutput) return ( threeProngFlightPathSig(tau) > flightPathSig ? 1. : 0. ); return threeProngFlightPathSig(tau); }
double PFRecoTauDiscriminationByFlightPathSignificance::threeProngFlightPathSig | ( | const PFTauRef & | tau | ) | [private] |
Definition at line 79 of file PFRecoTauDiscriminationByFlightPathSignificance.cc.
References edm::RefVector< C, T, F >::begin(), edm::RefVector< C, T, F >::end(), edm::Ref< C, T, F >::isNonnull(), TransientVertex::isValid(), reco::PFCandidate::trackRef(), and KalmanVertexFitter::vertex().
{ double flightPathSignificance = 0; //Secondary vertex const PFCandidateRefVector pfSignalCandidates = tau->signalPFChargedHadrCands(); vector<TransientTrack> transientTracks; RefVector<PFCandidateCollection>::const_iterator iTrack; for(iTrack = pfSignalCandidates.begin(); iTrack!= pfSignalCandidates.end(); iTrack++){ const PFCandidate& pfCand = *(iTrack->get()); if(pfCand.trackRef().isNonnull()){ const TransientTrack transientTrack = transientTrackBuilder->build(pfCand.trackRef()); transientTracks.push_back(transientTrack); } } if(transientTracks.size() > 1){ KalmanVertexFitter kvf(true); TransientVertex tv = kvf.vertex(transientTracks); if(tv.isValid()){ GlobalVector tauDir(tau->px(), tau->py(), tau->pz()); Vertex secVer = tv; flightPathSignificance = vertexSignificance(primaryVertex,secVer,tauDir); } } return flightPathSignificance; }
double PFRecoTauDiscriminationByFlightPathSignificance::vertexSignificance | ( | reco::Vertex & | pv, |
reco::Vertex & | sv, | ||
GlobalVector & | direction | ||
) | [private] |
Definition at line 108 of file PFRecoTauDiscriminationByFlightPathSignificance.cc.
References reco::SecondaryVertex::computeDist3d(), and Measurement1D::significance().
{ return SecondaryVertex::computeDist3d(pv,sv,direction,withPVError).significance(); }
Definition at line 54 of file PFRecoTauDiscriminationByFlightPathSignificance.cc.
double PFRecoTauDiscriminationByFlightPathSignificance::flightPathSig [private] |
Definition at line 47 of file PFRecoTauDiscriminationByFlightPathSignificance.cc.
Definition at line 50 of file PFRecoTauDiscriminationByFlightPathSignificance.cc.
Definition at line 52 of file PFRecoTauDiscriminationByFlightPathSignificance.cc.
Definition at line 45 of file PFRecoTauDiscriminationByFlightPathSignificance.cc.
const TransientTrackBuilder* PFRecoTauDiscriminationByFlightPathSignificance::transientTrackBuilder [private] |
Definition at line 51 of file PFRecoTauDiscriminationByFlightPathSignificance.cc.
bool PFRecoTauDiscriminationByFlightPathSignificance::withPVError [private] |
Definition at line 48 of file PFRecoTauDiscriminationByFlightPathSignificance.cc.