CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PFIsolatedTauTagInfo.h
Go to the documentation of this file.
1 #ifndef DataFormats_BTauReco_PFIsolatedTauTagInfo_h
2 #define DataFormats_BTauReco_PFIsolatedTauTagInfo_h
3 
4 /* class PFIsolatedTauTagInfo
5  * Extended object for the Particle Flow Tau Isolation algorithm,
6  * contains the result and the methods used in the PFConeIsolation Algorithm
7  * created: Apr 21 2007,
8  * revised: Jun 23 2007,
9  * authors: Simone Gennai, Ludovic Houchu
10  */
11 
12 #include <math.h>
13 
15 
16 #include "Math/GenVector/PxPyPzE4D.h"
21 
22 
23 
24 
25 
26 
30 
34 
35 namespace reco{
37  public:
42  for(PFCandidateRefVector::const_iterator iPFCand=PFCands_.begin();iPFCand!=PFCands_.end();iPFCand++){
43  if ((**iPFCand).particleId()==PFChargedHadrCand_codenumber) initialPFChargedHadrCands_.push_back(*iPFCand);
44  if ((**iPFCand).particleId()==PFNeutrHadrCand_codenumber) initialPFNeutrHadrCands_.push_back(*iPFCand);
45  if ((**iPFCand).particleId()==PFGammaCand_codenumber) initialPFGammaCands_.push_back(*iPFCand);
46  }
50  alternatLorentzVect_.SetPx(NAN);
51  alternatLorentzVect_.SetPy(NAN);
52  alternatLorentzVect_.SetPz(NAN);
53  alternatLorentzVect_.SetE(NAN);
56  }
57  virtual ~PFIsolatedTauTagInfo(){};
58  virtual PFIsolatedTauTagInfo* clone()const{return new PFIsolatedTauTagInfo(*this);}
59 
60  //get the PFCandidates's which compose the PF jet and may be have been filtered by filterPFChargedHadrCands(.,.,.,.,.,.), filterPFNeutrHadrCands(.), filterPFGammaCands(.) member functions
61  const PFCandidateRefVector& PFCands() const {return PFCands_;}
65 
66  // rec. jet Lorentz-vector combining charged hadr. PFCandidate's and gamma PFCandidate's
69 
70  //the reference to the PFJet
71  const PFJetRef& pfjetRef()const{return PFJetRef_;}
73 
74  //JetTag::discriminator() computed with the parameters taken from the RecoTauTag/PFConeIsolation/data/pfConeIsolation.cfi file
75 
76  // true if a lead. PFCandidate exists and no charged hadron PFCandidate was found in an DR isolation ring around it (DR isolation ring limits defined in the RecoTauTag/PFConeIsolation/data/pfConeIsolation.cfi file
79 
80  // true if a lead. PFCandidate exists and no gamma PFCandidate was found in an DR isolation ring around it (DR isolation ring limits defined in the RecoTauTag/PFConeIsolation/data/pfConeIsolation.cfi file
83 
84  //methods to be used to recompute the isolation with a new set of parameters
85  double discriminatorByIsolPFCandsN(float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,int IsolPFCands_maxN=0)const;
86  double discriminatorByIsolPFCandsN(math::XYZVector myVector,float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,int IsolPFCands_maxN=0)const;
87  double discriminatorByIsolPFChargedHadrCandsN(float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,int IsolPFCands_maxN=0)const;
88  double discriminatorByIsolPFChargedHadrCandsN(math::XYZVector myVector,float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,int IsolPFCands_maxN=0)const;
89  double discriminatorByIsolPFNeutrHadrCandsN(float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,int IsolPFCands_maxN=0)const;
90  double discriminatorByIsolPFNeutrHadrCandsN(math::XYZVector myVector,float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,int IsolPFCands_maxN=0)const;
91  double discriminatorByIsolPFGammaCandsN(float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,int IsolPFCands_maxN=0)const;
92  double discriminatorByIsolPFGammaCandsN(math::XYZVector myVector,float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,int IsolPFCands_maxN=0)const;
93  double discriminatorByIsolPFCandsEtSum(float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,float IsolPFCands_maxEtSum=0)const;
94  double discriminatorByIsolPFCandsEtSum(math::XYZVector myVector,float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,float IsolPFCands_maxEtSum=0)const;
95  double discriminatorByIsolPFChargedHadrCandsEtSum(float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,float IsolPFCands_maxEtSum=0)const;
96  double discriminatorByIsolPFChargedHadrCandsEtSum(math::XYZVector myVector,float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,float IsolPFCands_maxEtSum=0)const;
97  double discriminatorByIsolPFNeutrHadrCandsEtSum(float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,float IsolPFCands_maxEtSum=0)const;
98  double discriminatorByIsolPFNeutrHadrCandsEtSum(math::XYZVector myVector,float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,float IsolPFCands_maxEtSum=0)const;
99  double discriminatorByIsolPFGammaCandsEtSum(float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,float IsolPFCands_maxEtSum=0)const;
100  double discriminatorByIsolPFGammaCandsEtSum(math::XYZVector myVector,float matchingcone_size,float signalcone_size,float isolcone_size,bool useOnlyChargedHadrforleadPFCand,float minPt_leadPFCand,float minPt_PFCand,float IsolPFCands_maxEtSum=0)const;
101 
102  // return all PFCandidate's in a cone of size "conesize" around a direction "myVector"
103  const PFCandidateRefVector PFCandsInCone(const math::XYZVector myVector,const float conesize,const float minPt)const;
104  const PFCandidateRefVector PFChargedHadrCandsInCone(const math::XYZVector myVector,const float conesize,const float minPt)const;
105  const PFCandidateRefVector PFNeutrHadrCandsInCone(const math::XYZVector myVector,const float conesize,const float minPt)const;
106  const PFCandidateRefVector PFGammaCandsInCone(const math::XYZVector myVector,const float conesize,const float minPt)const;
107 
108  // return all PFCandidate's in a band defined by inner(size "innercone_size") and outer(size "outercone_size") cones around a direction "myVector"
109  const PFCandidateRefVector PFCandsInBand(const math::XYZVector myVector,const float innercone_size,const float outercone_size,const float minPt)const;
110  const PFCandidateRefVector PFChargedHadrCandsInBand(const math::XYZVector myVector,const float innercone_size,const float outercone_size,const float minPt)const;
111  const PFCandidateRefVector PFNeutrHadrCandsInBand(const math::XYZVector myVector,const float innercone_size,const float outercone_size,const float minPt)const;
112  const PFCandidateRefVector PFGammaCandsInBand(const math::XYZVector myVector,const float innercone_size,const float outercone_size,const float minPt)const;
113 
114  //return the leading PFCandidate in a given cone around the jet axis or a given direction
115  const PFCandidateRef leadPFCand(const float matchingcone_size, const float minPt)const;
116  const PFCandidateRef leadPFCand(const math::XYZVector myVector,const float matchingcone_size, const float minPt)const;
117  const PFCandidateRef leadPFChargedHadrCand(const float matchingcone_size, const float minPt)const;
118  const PFCandidateRef leadPFChargedHadrCand(const math::XYZVector myVector,const float matchingcone_size, const float minPt)const;
119  const PFCandidateRef leadPFNeutrHadrCand(const float matchingcone_size, const float minPt)const;
120  const PFCandidateRef leadPFNeutrHadrCand(const math::XYZVector myVector,const float matchingcone_size, const float minPt)const;
121  const PFCandidateRef leadPFGammaCand(const float matchingcone_size, const float minPt)const;
122  const PFCandidateRef leadPFGammaCand(const math::XYZVector myVector,const float matchingcone_size, const float minPt)const;
123 
124  void filterPFChargedHadrCands(double ChargedHadrCand_tkminPt,int ChargedHadrCand_tkminPixelHitsn,int ChargedHadrCand_tkminTrackerHitsn,double ChargedHadrCand_tkmaxipt,double ChargedHadrCand_tkmaxChi2,double ChargedHadrCand_tktorefpointDZ,bool UsePVconstraint,double PVtx_Z,bool UseOnlyChargedHadr_for_LeadCand,double LeadChargedHadrCandtoJet_MatchingConeSize,double LeadChargedHadrCand_minPt);
125  void filterPFNeutrHadrCands(double NeutrHadrCand_HcalclusminEt);
126  void filterPFGammaCands(double GammaCand_EcalclusminEt);
127  void removefilters();
128  private:
141  };
142 
144 
145 }
146 
147 #endif // DataFormats_BTauReco_PFIsolatedTauTagInfo_h
const PFCandidateRefVector PFGammaCandsInCone(const math::XYZVector myVector, const float conesize, const float minPt) const
const int PFRecHCALClus_codenumber
const PFCandidateRefVector PFChargedHadrCandsInBand(const math::XYZVector myVector, const float innercone_size, const float outercone_size, const float minPt) const
double discriminatorByIsolPFGammaCandsN(float matchingcone_size, float signalcone_size, float isolcone_size, bool useOnlyChargedHadrforleadPFCand, float minPt_leadPFCand, float minPt_PFCand, int IsolPFCands_maxN=0) const
math::XYZTLorentzVector alternatLorentzVect_
const PFCandidateRefVector & PFGammaCands() const
double discriminatorByIsolPFNeutrHadrCandsN(float matchingcone_size, float signalcone_size, float isolcone_size, bool useOnlyChargedHadrforleadPFCand, float minPt_leadPFCand, float minPt_PFCand, int IsolPFCands_maxN=0) const
const PFCandidateRefVector PFNeutrHadrCandsInCone(const math::XYZVector myVector, const float conesize, const float minPt) const
double discriminatorByIsolPFCandsEtSum(float matchingcone_size, float signalcone_size, float isolcone_size, bool useOnlyChargedHadrforleadPFCand, float minPt_leadPFCand, float minPt_PFCand, float IsolPFCands_maxEtSum=0) const
void setpfjetRef(const PFJetRef x)
PFCandidateRefVector initialPFCands_
const int PFNeutrHadrCand_codenumber
const PFCandidateRefVector PFCandsInBand(const math::XYZVector myVector, const float innercone_size, const float outercone_size, const float minPt) const
const PFCandidateRefVector & PFChargedHadrCands() const
void filterPFChargedHadrCands(double ChargedHadrCand_tkminPt, int ChargedHadrCand_tkminPixelHitsn, int ChargedHadrCand_tkminTrackerHitsn, double ChargedHadrCand_tkmaxipt, double ChargedHadrCand_tkmaxChi2, double ChargedHadrCand_tktorefpointDZ, bool UsePVconstraint, double PVtx_Z, bool UseOnlyChargedHadr_for_LeadCand, double LeadChargedHadrCandtoJet_MatchingConeSize, double LeadChargedHadrCand_minPt)
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:249
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:244
const PFCandidateRefVector PFGammaCandsInBand(const math::XYZVector myVector, const float innercone_size, const float outercone_size, const float minPt) const
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:30
double discriminatorByIsolPFGammaCandsEtSum(float matchingcone_size, float signalcone_size, float isolcone_size, bool useOnlyChargedHadrforleadPFCand, float minPt_leadPFCand, float minPt_PFCand, float IsolPFCands_maxEtSum=0) const
double discriminatorByIsolPFCandsN(float matchingcone_size, float signalcone_size, float isolcone_size, bool useOnlyChargedHadrforleadPFCand, float minPt_leadPFCand, float minPt_PFCand, int IsolPFCands_maxN=0) const
const PFCandidateRef leadPFNeutrHadrCand(const float matchingcone_size, const float minPt) const
void setalternatLorentzVect(math::XYZTLorentzVector x)
const PFCandidateRefVector PFChargedHadrCandsInCone(const math::XYZVector myVector, const float conesize, const float minPt) const
PFIsolatedTauTagInfo(PFCandidateRefVector PFCands)
const PFCandidateRefVector & PFCands() const
PFCandidateRefVector initialPFGammaCands_
PFCandidateRefVector PFGammaCands_
const int PFRecTrack_codenumber
PFCandidateRefVector initialPFNeutrHadrCands_
const PFJetRef & pfjetRef() const
void filterPFNeutrHadrCands(double NeutrHadrCand_HcalclusminEt)
math::XYZTLorentzVector alternatLorentzVect() const
virtual PFIsolatedTauTagInfo * clone() const
clone
PFCandidateRefVector PFNeutrHadrCands_
#define DECLARE_EDM_REFS(class_name)
Definition: RefMacros.h:10
double discriminatorByIsolPFNeutrHadrCandsEtSum(float matchingcone_size, float signalcone_size, float isolcone_size, bool useOnlyChargedHadrforleadPFCand, float minPt_leadPFCand, float minPt_PFCand, float IsolPFCands_maxEtSum=0) const
double discriminatorByIsolPFChargedHadrCandsN(float matchingcone_size, float signalcone_size, float isolcone_size, bool useOnlyChargedHadrforleadPFCand, float minPt_leadPFCand, float minPt_PFCand, int IsolPFCands_maxN=0) const
const PFCandidateRefVector & PFNeutrHadrCands() const
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
const PFCandidateRefVector PFCandsInCone(const math::XYZVector myVector, const float conesize, const float minPt) const
double discriminatorByIsolPFChargedHadrCandsEtSum(float matchingcone_size, float signalcone_size, float isolcone_size, bool useOnlyChargedHadrforleadPFCand, float minPt_leadPFCand, float minPt_PFCand, float IsolPFCands_maxEtSum=0) const
PFCandidateRefVector PFChargedHadrCands_
void push_back(value_type const &ref)
Add a Ref&lt;C, T&gt; to the RefVector.
Definition: RefVector.h:64
PFCandidateRefVector initialPFChargedHadrCands_
const PFCandidateRef leadPFGammaCand(const float matchingcone_size, const float minPt) const
const PFCandidateRef leadPFChargedHadrCand(const float matchingcone_size, const float minPt) const
x
Definition: VDTMath.h:216
const int PFRecECALClus_codenumber
void filterPFGammaCands(double GammaCand_EcalclusminEt)
const PFCandidateRefVector PFNeutrHadrCandsInBand(const math::XYZVector myVector, const float innercone_size, const float outercone_size, const float minPt) const
const int PFGammaCand_codenumber
const PFCandidateRef leadPFCand(const float matchingcone_size, const float minPt) const
const int PFChargedHadrCand_codenumber