CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TauTagTools.h
Go to the documentation of this file.
1 #ifndef RecoTauTag_TauTagTools_TauTagTools_h
2 #define RecoTauTag_TauTagTools_TauTagTools_h
3 
15 
16 #include "Math/GenVector/VectorUtil.h"
17 
19 
21 
22 #include "TFormula.h"
23 
24 namespace TauTagTools{
25  template <class T> class sortByOpeningDistance;
26  reco::TrackRefVector filteredTracksByNumTrkHits(reco::TrackRefVector theInitialTracks, int tkminTrackerHitsn);
27  reco::TrackRefVector filteredTracks(reco::TrackRefVector theInitialTracks,double tkminPt,int tkminPixelHitsn,int tkminTrackerHitsn,double tkmaxipt,double tkmaxChi2, reco::Vertex pV);
28  reco::TrackRefVector filteredTracks(reco::TrackRefVector theInitialTracks,double tkminPt,int tkminPixelHitsn,int tkminTrackerHitsn,double tkmaxipt,double tkmaxChi2,double tktorefpointmaxDZ,reco::Vertex pV,double refpoint_Z);
29 
30  reco::PFCandidateRefVector filteredPFChargedHadrCandsByNumTrkHits(reco::PFCandidateRefVector theInitialPFCands, int ChargedHadrCand_tkminTrackerHitsn);
31  reco::PFCandidateRefVector filteredPFChargedHadrCands(reco::PFCandidateRefVector theInitialPFCands,double ChargedHadrCand_tkminPt,int ChargedHadrCand_tkminPixelHitsn,int ChargedHadrCand_tkminTrackerHitsn,double ChargedHadrCand_tkmaxipt,double ChargedHadrCand_tkmaxChi2, reco::Vertex pV);
32  reco::PFCandidateRefVector filteredPFChargedHadrCands(reco::PFCandidateRefVector theInitialPFCands,double ChargedHadrCand_tkminPt,int ChargedHadrCand_tkminPixelHitsn,int ChargedHadrCand_tkminTrackerHitsn,double ChargedHadrCand_tkmaxipt,double ChargedHadrCand_tkmaxChi2,double ChargedHadrCand_tktorefpointmaxDZ,reco::Vertex pV, double refpoint_Z);
33  reco::PFCandidateRefVector filteredPFNeutrHadrCands(reco::PFCandidateRefVector theInitialPFCands,double NeutrHadrCand_HcalclusMinEt);
34  reco::PFCandidateRefVector filteredPFGammaCands(reco::PFCandidateRefVector theInitialPFCands,double GammaCand_EcalclusMinEt);
36 
37  TFormula computeConeSizeTFormula(const std::string& ConeSizeFormula,const char* errorMessage);
38  void replaceSubStr(std::string& s,const std::string& oldSubStr,const std::string& newSubStr);
39 
40  double computeDeltaR(const math::XYZVector& vec1, const math::XYZVector& vec2);
41  double computeAngle(const math::XYZVector& vec1, const math::XYZVector& vec2);
42 
43  //MIKE: Sort a reference vector
45 
46 
47  //binary predicate classes for sorting a list of indexes corresponding to PFRefVectors...(as they can't use STL??)
49  {
50  public:
51  sortRefsByOpeningDistance(const math::XYZVector& theAxis, double (*ptrToMetricFunction)(const math::XYZVector&, const math::XYZVector&), const reco::PFCandidateRefVector& myInputVector):myMetricFunction(ptrToMetricFunction),axis(theAxis),myVector(myInputVector){};
52  bool operator()(uint32_t indexA, uint32_t indexB)
53  {
54  const reco::PFCandidateRef candA = myVector.at(indexA);
55  const reco::PFCandidateRef candB = myVector.at(indexB);
56  return (myMetricFunction(axis, candA->momentum()) < myMetricFunction(axis, candB->momentum()));
57  }
58  private:
60  math::XYZVector axis; //axis about which candidates are sorted
62  };
64  {
65  public:
66  filterChargedAndNeutralsByPt(double minNeutralPt, double minChargedPt, const reco::PFCandidateRefVector& myInputVector):minNeutralPt_(minNeutralPt),minChargedPt_(minChargedPt),myVector(myInputVector){};
67  bool operator()(uint32_t candIndex)
68  {
69  const reco::PFCandidateRef cand = myVector.at(candIndex);
70  bool output = true;
71  unsigned char charge = std::abs(cand->charge());
72  double thePt = cand->pt();
73  if (charge && thePt < minChargedPt_)
74  output = false;
75  else if (!charge && thePt < minNeutralPt_)
76  output = false;
77  return output;
78  }
79  private:
80  double minNeutralPt_;
81  double minChargedPt_;
83  };
84 
86  public:
88  {
89  vec_ = vec;
90  }
91 
93  {
94  }
95 
96 
98  {}
99 
100  bool operator()(size_t a , size_t b) {
101  return (vec_.at(a)->pt() > vec_.at(b)->pt());
102  }
103 
104  private:
106  };
107 
108 
109  //binary predicate classes for sorting vectors of candidates
110  template <class T>
112  {
113  public:
114  bool operator()(const T& candA, const T& candB)
115  {
116  return (candA.pt() > candB.pt());
117  }
118  bool operator()(const T* candA, const T* candB)
119  {
120  return (candA->pt() > candB->pt());
121  }
122  };
123 
124  template <class T>
126  {
127  public:
128  bool operator()(const T& candA, const T& candB)
129  {
130  return (candA.pt() < candB.pt());
131  }
132  bool operator()(const T* candA, const T* candB)
133  {
134  return (candA->pt() < candB->pt());
135  }
136  };
137 
138  template <class T>
140  {
141  public:
142  sortByOpeningAngleAscending(const math::XYZVector& theAxis, double (*ptrToMetricFunction)(const math::XYZVector&, const math::XYZVector&)):axis(theAxis),myMetricFunction(ptrToMetricFunction){};
143  bool operator()(const T& candA, const T& candB)
144  {
145  return ( myMetricFunction(axis, candA.momentum()) > myMetricFunction(axis, candB.momentum()) );
146  }
147  bool operator()(const T* candA, const T* candB)
148  {
149  return ( myMetricFunction(axis, candA->momentum()) > myMetricFunction(axis, candB->momentum()) );
150  }
151  private:
154  };
155 
156  template <class T>
158  {
159  public:
160  sortByOpeningAngleDescending(const math::XYZVector& theAxis, double (*ptrToMetricFunction)(const math::XYZVector&, const math::XYZVector&)):axis(theAxis),myMetricFunction(ptrToMetricFunction){};
161  bool operator()(const T& candA, const T& candB)
162  {
163  return ( myMetricFunction(axis, candA.momentum()) < myMetricFunction(axis, candB.momentum()) );
164  }
165  bool operator()(const T* candA, const T* candB)
166  {
167  return ( myMetricFunction(axis, candA->momentum()) < myMetricFunction(axis, candB->momentum()) );
168  }
169  private:
172  };
173 
174 }
175 
176 #endif
177 
reco::TrackRefVector filteredTracksByNumTrkHits(reco::TrackRefVector theInitialTracks, int tkminTrackerHitsn)
Definition: TauTagTools.cc:68
sortRefsByOpeningDistance(const math::XYZVector &theAxis, double(*ptrToMetricFunction)(const math::XYZVector &, const math::XYZVector &), const reco::PFCandidateRefVector &myInputVector)
Definition: TauTagTools.h:51
double computeAngle(const math::XYZVector &vec1, const math::XYZVector &vec2)
Definition: TauTagTools.cc:13
double(* myMetricFunction)(const math::XYZVector &, const math::XYZVector &)
Definition: TauTagTools.h:171
void sortRefVectorByPt(reco::PFCandidateRefVector &)
Definition: TauTagTools.cc:242
double(* myMetricFunction)(const math::XYZVector &, const math::XYZVector &)
Definition: TauTagTools.h:59
bool operator()(uint32_t candIndex)
Definition: TauTagTools.h:67
sortByOpeningAngleDescending(const math::XYZVector &theAxis, double(*ptrToMetricFunction)(const math::XYZVector &, const math::XYZVector &))
Definition: TauTagTools.h:160
reco::PFCandidateRefVector filteredPFGammaCands(reco::PFCandidateRefVector theInitialPFCands, double GammaCand_EcalclusMinEt)
Definition: TauTagTools.cc:171
reco::TrackRefVector filteredTracks(reco::TrackRefVector theInitialTracks, double tkminPt, int tkminPixelHitsn, int tkminTrackerHitsn, double tkmaxipt, double tkmaxChi2, reco::Vertex pV)
Definition: TauTagTools.cc:77
math::XYZPoint propagTrackECALSurfContactPoint(const MagneticField *, reco::TrackRef)
Definition: TauTagTools.cc:184
bool operator()(const T *candA, const T *candB)
Definition: TauTagTools.h:118
const reco::PFCandidateRefVector myVector
Definition: TauTagTools.h:61
#define abs(x)
Definition: mlp_lapack.h:159
bool operator()(uint32_t indexA, uint32_t indexB)
Definition: TauTagTools.h:52
double charge(const std::vector< uint8_t > &Ampls)
reco::PFCandidateRefVector filteredPFNeutrHadrCands(reco::PFCandidateRefVector theInitialPFCands, double NeutrHadrCand_HcalclusMinEt)
Definition: TauTagTools.cc:158
bool operator()(const T *candA, const T *candB)
Definition: TauTagTools.h:132
bool operator()(const T &candA, const T &candB)
Definition: TauTagTools.h:161
bool operator()(const T &candA, const T &candB)
Definition: TauTagTools.h:128
bool operator()(const T &candA, const T &candB)
Definition: TauTagTools.h:114
reco::PFCandidateRefVector filteredPFChargedHadrCandsByNumTrkHits(reco::PFCandidateRefVector theInitialPFCands, int ChargedHadrCand_tkminTrackerHitsn)
Definition: TauTagTools.cc:104
refVectorPtSorter(const reco::PFCandidateRefVector vec)
Definition: TauTagTools.h:87
void replaceSubStr(std::string &s, const std::string &oldSubStr, const std::string &newSubStr)
TFormula computeConeSizeTFormula(const std::string &ConeSizeFormula, const char *errorMessage)
bool operator()(const T *candA, const T *candB)
Definition: TauTagTools.h:165
double computeDeltaR(const math::XYZVector &vec1, const math::XYZVector &vec2)
Definition: TauTagTools.cc:8
reco::PFCandidateRefVector filteredPFChargedHadrCands(reco::PFCandidateRefVector theInitialPFCands, double ChargedHadrCand_tkminPt, int ChargedHadrCand_tkminPixelHitsn, int ChargedHadrCand_tkminTrackerHitsn, double ChargedHadrCand_tkmaxipt, double ChargedHadrCand_tkmaxChi2, reco::Vertex pV)
Definition: TauTagTools.cc:119
bool operator()(size_t a, size_t b)
Definition: TauTagTools.h:100
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:13
sortByOpeningAngleAscending(const math::XYZVector &theAxis, double(*ptrToMetricFunction)(const math::XYZVector &, const math::XYZVector &))
Definition: TauTagTools.h:142
double b
Definition: hdecay.h:120
bool operator()(const T &candA, const T &candB)
Definition: TauTagTools.h:143
value_type const at(size_type idx) const
Retrieve an element of the RefVector.
Definition: RefVector.h:76
double a
Definition: hdecay.h:121
filterChargedAndNeutralsByPt(double minNeutralPt, double minChargedPt, const reco::PFCandidateRefVector &myInputVector)
Definition: TauTagTools.h:66
reco::PFCandidateRefVector vec_
Definition: TauTagTools.h:105
long double T
const reco::PFCandidateRefVector & myVector
Definition: TauTagTools.h:82
double(* myMetricFunction)(const math::XYZVector &, const math::XYZVector &)
Definition: TauTagTools.h:153
bool operator()(const T *candA, const T *candB)
Definition: TauTagTools.h:147