CMS 3D CMS Logo

HPSPFRecoTauAlgorithm.h
Go to the documentation of this file.
1 /*
2 Hadrons + Strips Tau Identification Algorithm
3 ---------------------------------------------
4 Michail Bachtis
5 University of Wisconsin-Madison
6 bachtis@cern.ch
7 */
8 
9 #ifndef RecoTauTag_RecoTau_HPSPFTauAlgorithm
10 #define RecoTauTag_RecoTau_HPSPFTauAlgorithm
11 
23 
24 
26 {
27  public:
28  // Constructors are following the PFRecoTauProducer scheme.
29  // The input is a ParameterSet of the algorithm configuration
32  ~HPSPFRecoTauAlgorithm() override;
33 
34  //Basic Method that creates the taus
36 
37  private:
38  //*Private Members *//
40 
41 
42  //* Helper Methods *//
43 
44  //Creators of the Decay Modes
45  void buildOneProng(const reco::PFTauTagInfoRef&,const std::vector<reco::PFCandidatePtr>& );
46  void buildOneProngStrip(const reco::PFTauTagInfoRef&,const std::vector<std::vector<reco::PFCandidatePtr>>&,const std::vector<reco::PFCandidatePtr>&);
47  void buildOneProngTwoStrips(const reco::PFTauTagInfoRef&,const std::vector<std::vector<reco::PFCandidatePtr>>&,const std::vector<reco::PFCandidatePtr>&);
48  void buildThreeProngs(const reco::PFTauTagInfoRef&,const std::vector<reco::PFCandidatePtr>&);
49 
50  //Narrowness selection
51  bool isNarrowTau(const reco::PFTau&,double);
52 
53  //Associate Isolation Candidates
55 
56  reco::PFTau getBestTauCandidate(reco::PFTauCollection&); //get the best tau if we have overlap
58 
59  //Apply electron Rejection
60  void applyElectronRejection(reco::PFTau&,double);
61 
62  //Method to create a candidate from the merged EM Candidates vector;
63  math::XYZTLorentzVector createMergedLorentzVector(const std::vector<reco::PFCandidatePtr>&);
64 
65  void removeCandidateFromRefVector(const reco::PFCandidatePtr&,std::vector<reco::PFCandidatePtr>&);
67 
69 
70 
71 
72  //Configure the algorithm!
73  void configure(const edm::ParameterSet&);
74 
75  //* Variables for configuration*//
76 
77  //Which merging algorithm to use
79 
80  //Overlap Removal Criterion for overlaping decay modes
82 
83  //Decay Mode activation
88 
89 
90  //Minimum Tau Pt for the reconstruction
91  double tauThreshold_;
92  //Lead Pion Threshold
94 
95  //strip threshold
97  //Isolation Cone sizes for different particles
101 
102  //Use a solid cone or an annulus?
104 
105  //Mass Windows
106  std::vector<double> oneProngStripMassWindow_;
107  std::vector<double> oneProngTwoStripsMassWindow_;
108  std::vector<double> oneProngTwoStripsPi0MassWindow_;
109  std::vector<double> threeProngMassWindow_;
110 
111  //Matching Cone between PFTau , PFJet
113 
114 
115  //Cone Narrowness. Unfortunately we have to remove TFormula!
116  //The code supports A(DeltaR or Angle) < coneParameter_/(ET or ENERGY)
121 
122 
123  TFormula coneSizeFormula;
124 
126 
127 
128 
130  public:
131 
133  {
134  }
135 
136 
138  {}
139 
140  bool operator()(const reco::PFTau& a , const reco::PFTau& b) {
141  return (a.pt() > b.pt());
142  }
143  };
144 
145 
147  public:
148 
150  {
151  }
152 
153 
155  {}
156 
157  bool operator()(const reco::PFTau& a , const reco::PFTau& b) {
160  }
161  };
162 
163 
164 };
165 #endif
166 
167 
168 
float isolationPFGammaCandsEtSum() const
Definition: PFTau.cc:220
std::vector< PFTau > PFTauCollection
collection of PFTau objects
Definition: PFTauFwd.h:9
float isolationPFChargedHadrCandsPtSum() const
Definition: PFTau.cc:217
math::XYZTLorentzVector createMergedLorentzVector(const std::vector< reco::PFCandidatePtr > &)
void buildOneProng(const reco::PFTauTagInfoRef &, const std::vector< reco::PFCandidatePtr > &)
void buildThreeProngs(const reco::PFTauTagInfoRef &, const std::vector< reco::PFCandidatePtr > &)
double pt() const final
transverse momentum
void buildOneProngStrip(const reco::PFTauTagInfoRef &, const std::vector< std::vector< reco::PFCandidatePtr >> &, const std::vector< reco::PFCandidatePtr > &)
std::vector< double > threeProngMassWindow_
reco::PFTauCollection pfTaus_
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
reco::PFTau getBestTauCandidate(reco::PFTauCollection &)
bool operator()(const reco::PFTau &a, const reco::PFTau &b)
void applyElectronRejection(reco::PFTau &, double)
reco::PFTau buildPFTau(const reco::PFTauTagInfoRef &, const reco::Vertex &) override
std::vector< double > oneProngTwoStripsMassWindow_
void buildOneProngTwoStrips(const reco::PFTauTagInfoRef &, const std::vector< std::vector< reco::PFCandidatePtr >> &, const std::vector< reco::PFCandidatePtr > &)
double b
Definition: hdecay.h:120
std::vector< double > oneProngStripMassWindow_
double a
Definition: hdecay.h:121
void removeCandidateFromRefVector(const reco::PFCandidatePtr &, std::vector< reco::PFCandidatePtr > &)
void applyMuonRejection(reco::PFTau &)
bool operator()(const reco::PFTau &a, const reco::PFTau &b)
std::vector< double > oneProngTwoStripsPi0MassWindow_
void applyMassConstraint(math::XYZTLorentzVector &, double)
void configure(const edm::ParameterSet &)
bool refitThreeProng(reco::PFTau &)
PFCandidateMergerBase * candidateMerger_
bool isNarrowTau(const reco::PFTau &, double)
void associateIsolationCandidates(reco::PFTau &, double)