CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CombinedTauTagInfo.h
Go to the documentation of this file.
1 #ifndef DataFormats_BTauReco_CombinedTauTagInfo_h
2 #define DataFormats_BTauReco_CombinedTauTagInfo_h
3 
4 /* class CombinedTauTagInfo
5  * Extended object for the Tau Combination algorithm,
6  * created: Dec 18 2006,
7  * revised: Jul 02 2007
8  * author: Ludovic Houchu.
9  */
10 
11 #include <limits>
12 #include <math.h>
13 #include "CLHEP/Vector/LorentzVector.h"
21 
22 namespace reco {
23 
24  class CombinedTauTagInfo : public JTATagInfo {
25  public:
35  isol_Tks_.clear();
39  theTksEt_o_JetEt=NAN;
40  theneutralE=NAN;
41  theisolneutralE=NAN;
43  theneutralECALClus_number=std::numeric_limits<int>::quiet_NaN();
48  thealternatrecJet_HepLV.setPx(NAN);
49  thealternatrecJet_HepLV.setPy(NAN);
50  thealternatrecJet_HepLV.setPz(NAN);
51  thealternatrecJet_HepLV.setE(NAN);
54  }
55  virtual ~CombinedTauTagInfo() {};
56 
57  // float discriminator() returns 0. if candidate did not pass tracker selection,
58  // 1. if candidate passed tracker selection and did not contain neutral ECAL clus.,
59  // 0<= <=1 if candidate passed tracker selection, contained neutral ECAL clus. and went through the likelihood ratio mechanism,
60  // NaN the values of the likelihood functions PDFs are 0 (test the result of discriminator() with bool isnan(.));
61 
62  //the reference to the IsolatedTauTagInfo
65 
66  //get the tracks from the JetTag
67  const TrackRefVector& allTks() const { return m_jetTracksAssociation->second; }
68 
69  //the tracks considered in the isolation strip and signal cone selections
70  const TrackRefVector& selectedTks() const { return filtered_Tks_; }
72 
73  //the tracks in the signal cone
74  const TrackRefVector& signalTks() const { return signal_Tks_; }
75  void setsignalTks(const TrackRefVector& x) { signal_Tks_=x; }
76 
77  int signalTks_qsum()const{ // NaN : (int)(signal_Tks_.size())=0;
78  int signal_Tks_qsum_=std::numeric_limits<int>::quiet_NaN();
79  if((int)(signal_Tks_.size())!=0){
80  signal_Tks_qsum_=0;
82  signal_Tks_qsum_+=(**iTk).charge();
83  }
84  }
85  return signal_Tks_qsum_;
86  }
87 
88  //the tracks in the isolation band
89  const TrackRefVector& isolTks() const { return isol_Tks_; }
90  void setisolTks(const TrackRefVector& x) { isol_Tks_=x; }
91 
92  virtual CombinedTauTagInfo* clone() const{return new CombinedTauTagInfo(*this );}
93 
96 
97  bool is_GoodTauCandidate()const{return(thecandidate_is_GoodTauCandidate);} // true : passed tracker sel. and no neutral activity inside jet;
99 
100  bool infact_GoodElectronCandidate()const{return(thecandidate_is_infact_GoodElectronCandidate);} // true : passed tracker sel., contains 1 signal tk, e-identified through (ECALEt_o_leadTkPt(),HCALEt_o_leadTkPt()) space;
102 
103  bool infact_GoodMuonCandidate()const{return(thecandidate_is_infact_GoodMuonCandidate);} // true : passed tracker sel., contains 1 signal tk, mu-identified through (ECALEt_o_leadTkPt(),HCALEt_o_leadTkPt()) space;
105 
106  bool needs_LikelihoodRatio_discrimination()const{return(thecandidate_needs_LikelihoodRatio_discrimination);} // true : passed tracker sel. and neutral activity inside jet;
108 
109  double leadTk_signedipt_significance()const{return (theleadTk_signedipt_significance);} // NaN : failure;
111 
112  double leadTk_signedip3D_significance()const{return(theleadTk_signedip3D_significance);} // NaN : failure;
114 
115  double signedflightpath_significance()const{return (thesignedflightpath_significance);} // NaN : failure, did not build a SV.;
117 
118  // Ettks/Etjet;
119  double TksEt_o_JetEt()const{return(theTksEt_o_JetEt);}
121 
122  // Eneutr.clus.;
123  double neutralE()const{return(theneutralE);}
124  void setneutralE(double x){theneutralE=x;}
125 
126  // Eneutr.clus.,isol.band;
127  double isolneutralE()const{return(theisolneutralE);}
128  void setisolneutralE(double x){theisolneutralE=x;}
129 
130  // sum of Etneutr.clus.,isol.band;
131  double isolneutralEtsum()const{return(theisolneutralEtsum);}
133 
136 
137  //mean DRneutr.clus.-lead.tk
138  double neutralECALClus_radius()const{return(theneutralECALClus_radius);} // NaN : neutralECALClus_number()=0;
140 
141  // Eneutr.clus. / (Eneutr.clus. + Etks) , Etks built with tks impulsion and charged pi mass hypothesis;
144 
145  // Eneutr.clus.,isol.band / (Eneutr.clus. + Etks);
148 
149  // Eneutr.clus.,isol.band / Eneutr.clus.;
150  double neutralE_ratio()const{return(theneutralE_ratio);} // NaN : neutralECALClus_number()=0;
152 
153  CLHEP::HepLorentzVector alternatrecJet_HepLV()const{return(thealternatrecJet_HepLV);} // rec. pi+/- candidates + neutral ECAL clus. combined;
154  void setalternatrecJet_HepLV(CLHEP::HepLorentzVector x){thealternatrecJet_HepLV=x;}
155 
156  // EtECAL*/Ptlead.tk *using ECAL cell hits inside a DR cone around lead tk ECAL impact point direction;
157  double ECALEt_o_leadTkPt()const{return(theECALEt_o_leadTkPt);} // NaN : failure when trying to find the lead. tk contact on ECAL surface point;
159 
160  // EtHCAL**/Ptlead.tk; **using HCAL tower hits inside a DR cone around lead tk ECAL impact point direction;
161  double HCALEt_o_leadTkPt()const{return(theHCALEt_o_leadTkPt);} // NaN : failure when trying to find the lead. tk contact on ECAL surface point;
163  private:
177  double theneutralE;
185  CLHEP::HepLorentzVector thealternatrecJet_HepLV;
188  };
189 
191 
192 }
193 
194 #endif // DataFormsts_BTauReco_CombinedTauTagInfo_h
void setisolTks(const TrackRefVector &x)
void setisolneutralEtsum(double x)
void setisolneutralE_o_TksEneutralE(double x)
double HCALEt_o_leadTkPt() const
bool infact_GoodMuonCandidate() const
void setneutralE_o_TksEneutralE(double x)
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:255
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:250
const TrackRefVector & selectedTks() const
void setneeds_LikelihoodRatio_discrimination(bool x)
double ECALEt_o_leadTkPt() const
void setinfact_GoodElectronCandidate(bool x)
const TrackRefVector & allTks() const
void setleadTk_signedip3D_significance(double x)
double signedflightpath_significance() const
JetTracksAssociationRef m_jetTracksAssociation
Definition: JTATagInfo.h:29
void setECALEt_o_leadTkPt(double x)
void setselectedTks(const TrackRefVector &x)
void setleadTk_signedipt_significance(double x)
const IsolatedTauTagInfoRef & isolatedtautaginfoRef() const
CombinedTauTagInfo(const JetTracksAssociationRef &jtaRef)
const JetTracksAssociationRef & jtaRef(void) const
Definition: JTATagInfo.h:22
#define DECLARE_EDM_REFS(class_name)
Definition: RefMacros.h:10
void setneutralECALClus_radius(double x)
double neutralECALClus_radius() const
bool infact_GoodElectronCandidate() const
void setalternatrecJet_HepLV(CLHEP::HepLorentzVector x)
void setinfact_GoodMuonCandidate(bool x)
CLHEP::HepLorentzVector thealternatrecJet_HepLV
void clear()
Clear the vector.
Definition: RefVector.h:139
double isolneutralE_o_TksEneutralE() const
double leadTk_signedip3D_significance() const
IsolatedTauTagInfoRef IsolatedTauTagInfoRef_
bool passed_trackerselection() const
double leadTk_signedipt_significance() const
void setsignedflightpath_significance(double x)
bool thecandidate_needs_LikelihoodRatio_discrimination
double neutralE_o_TksEneutralE() const
virtual CombinedTauTagInfo * clone() const
clone
double isolneutralEtsum() const
bool needs_LikelihoodRatio_discrimination() const
size_type size() const
Size of the RefVector.
Definition: RefVector.h:99
const TrackRefVector & signalTks() const
void setsignalTks(const TrackRefVector &x)
const TrackRefVector & isolTks() const
CLHEP::HepLorentzVector alternatrecJet_HepLV() const
void setpassed_trackerselection(bool x)
void setisolatedtautaginfoRef(const IsolatedTauTagInfoRef &x)
void setHCALEt_o_leadTkPt(double x)