Go to the documentation of this file.00001 #include "RecoTauTag/RecoTau/interface/PFRecoTauTagInfoAlgorithm.h"
00002
00003 using namespace reco;
00004
00005 PFRecoTauTagInfoAlgorithm::PFRecoTauTagInfoAlgorithm(const edm::ParameterSet& parameters){
00006
00007 ChargedHadronsAssociationCone_ = parameters.getParameter<double>("ChargedHadrCand_AssociationCone");
00008 ChargedHadrCand_tkminPt_ = parameters.getParameter<double>("ChargedHadrCand_tkminPt");
00009 ChargedHadrCand_tkminPixelHitsn_ = parameters.getParameter<int>("ChargedHadrCand_tkminPixelHitsn");
00010 ChargedHadrCand_tkminTrackerHitsn_ = parameters.getParameter<int>("ChargedHadrCand_tkminTrackerHitsn");
00011 ChargedHadrCand_tkmaxipt_ = parameters.getParameter<double>("ChargedHadrCand_tkmaxipt");
00012 ChargedHadrCand_tkmaxChi2_ = parameters.getParameter<double>("ChargedHadrCand_tkmaxChi2");
00013
00014 NeutrHadrCand_HcalclusMinEt_ = parameters.getParameter<double>("NeutrHadrCand_HcalclusMinEt");
00015
00016 GammaCand_EcalclusMinEt_ = parameters.getParameter<double>("GammaCand_EcalclusMinEt");
00017
00018 tkminPt_ = parameters.getParameter<double>("tkminPt");
00019 tkminPixelHitsn_ = parameters.getParameter<int>("tkminPixelHitsn");
00020 tkminTrackerHitsn_ = parameters.getParameter<int>("tkminTrackerHitsn");
00021 tkmaxipt_ = parameters.getParameter<double>("tkmaxipt");
00022 tkmaxChi2_ = parameters.getParameter<double>("tkmaxChi2");
00023
00024 UsePVconstraint_ = parameters.getParameter<bool>("UsePVconstraint");
00025 ChargedHadrCand_tkPVmaxDZ_ = parameters.getParameter<double>("ChargedHadrCand_tkPVmaxDZ");
00026 tkPVmaxDZ_ = parameters.getParameter<double>("tkPVmaxDZ");
00027 }
00028
00029 PFTauTagInfo PFRecoTauTagInfoAlgorithm::buildPFTauTagInfo(const PFJetRef& thePFJet,const PFCandidateRefVector& thePFCandsInEvent, const TrackRefVector& theTracks,const Vertex& thePV){
00030 PFTauTagInfo resultExtended;
00031 resultExtended.setpfjetRef(thePFJet);
00032
00033 PFCandidateRefVector thePFCands;
00034 for (PFCandidateRefVector::const_iterator iPFCand=thePFCandsInEvent.begin();iPFCand!=thePFCandsInEvent.end();iPFCand++){
00035 double delta = ROOT::Math::VectorUtil::DeltaR((*thePFJet).p4().Vect(), (*iPFCand)->p4().Vect());
00036 if (delta < ChargedHadronsAssociationCone_) thePFCands.push_back(*iPFCand);
00037 }
00038 bool pvIsFake = (thePV.z() < -500.);
00039
00040 PFCandidateRefVector theFilteredPFChargedHadrCands;
00041 if (UsePVconstraint_ && !pvIsFake) theFilteredPFChargedHadrCands=TauTagTools::filteredPFChargedHadrCands(thePFCands,ChargedHadrCand_tkminPt_,ChargedHadrCand_tkminPixelHitsn_,ChargedHadrCand_tkminTrackerHitsn_,ChargedHadrCand_tkmaxipt_,ChargedHadrCand_tkmaxChi2_,ChargedHadrCand_tkPVmaxDZ_, thePV, thePV.z());
00042 else theFilteredPFChargedHadrCands=TauTagTools::filteredPFChargedHadrCands(thePFCands,ChargedHadrCand_tkminPt_,ChargedHadrCand_tkminPixelHitsn_,ChargedHadrCand_tkminTrackerHitsn_,ChargedHadrCand_tkmaxipt_,ChargedHadrCand_tkmaxChi2_, thePV);
00043 resultExtended.setPFChargedHadrCands(theFilteredPFChargedHadrCands);
00044 resultExtended.setPFNeutrHadrCands(TauTagTools::filteredPFNeutrHadrCands(thePFCands,NeutrHadrCand_HcalclusMinEt_));
00045 resultExtended.setPFGammaCands(TauTagTools::filteredPFGammaCands(thePFCands,GammaCand_EcalclusMinEt_));
00046
00047 TrackRefVector theFilteredTracks;
00048 if (UsePVconstraint_ && !pvIsFake) theFilteredTracks=TauTagTools::filteredTracks(theTracks,tkminPt_,tkminPixelHitsn_,tkminTrackerHitsn_,tkmaxipt_,tkmaxChi2_,tkPVmaxDZ_,thePV, thePV.z());
00049 else theFilteredTracks=TauTagTools::filteredTracks(theTracks,tkminPt_,tkminPixelHitsn_,tkminTrackerHitsn_,tkmaxipt_,tkmaxChi2_,thePV);
00050 resultExtended.setTracks(theFilteredTracks);
00051
00052 return resultExtended;
00053 }
00054