CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/RecoTauTag/RecoTau/src/PFRecoTauTagInfoAlgorithm.cc

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   // parameters of the considered charged hadr. PFCandidates, based on their rec. tk properties :
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   // parameters of the considered neutral hadr. PFCandidates, based on their rec. HCAL clus. properties :
00014   NeutrHadrCand_HcalclusMinEt_         = parameters.getParameter<double>("NeutrHadrCand_HcalclusMinEt");
00015   // parameters of the considered gamma PFCandidates, based on their rec. ECAL clus. properties :
00016   GammaCand_EcalclusMinEt_             = parameters.getParameter<double>("GammaCand_EcalclusMinEt");
00017   // parameters of the considered rec. Tracks (these ones catched through a JetTracksAssociation object, not through the charged hadr. PFCandidates inside the PFJet ; the motivation for considering them is the need for checking that a selection by the charged hadr. PFCandidates is equivalent to a selection by the rec. Tracks.) :
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