00001
00002 #ifndef DataFormats_TauReco_PFTau_h
00003 #define DataFormats_TauReco_PFTau_h
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "DataFormats/Math/interface/LorentzVector.h"
00013 #include "DataFormats/TauReco/interface/BaseTau.h"
00014 #include "DataFormats/TauReco/interface/PFTauFwd.h"
00015 #include "DataFormats/TauReco/interface/PFTauTagInfo.h"
00016 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
00017 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
00018
00019 #include <iostream>
00020 #include <limits>
00021
00022
00023 namespace reco {
00024 class PFTau : public BaseTau {
00025 public:
00026 PFTau();
00027 PFTau(Charge q,const LorentzVector &,const Point & = Point( 0, 0, 0 ) );
00028 virtual ~PFTau() {};
00029 PFTau* clone()const;
00030
00031 const PFTauTagInfoRef& pfTauTagInfoRef()const;
00032 void setpfTauTagInfoRef(const PFTauTagInfoRef);
00033
00034 const PFCandidateRef& leadPFChargedHadrCand()const;
00035 const PFCandidateRef& leadPFNeutralCand()const;
00036
00037 const PFCandidateRef& leadPFCand()const;
00038
00039 void setleadPFChargedHadrCand(const PFCandidateRef&);
00040 void setleadPFNeutralCand(const PFCandidateRef&);
00041 void setleadPFCand(const PFCandidateRef&);
00042
00043 float leadPFChargedHadrCandsignedSipt()const;
00044 void setleadPFChargedHadrCandsignedSipt(const float&);
00045
00046
00047 const PFCandidateRefVector& signalPFCands()const;
00048 void setsignalPFCands(const PFCandidateRefVector&);
00049 const PFCandidateRefVector& signalPFChargedHadrCands()const;
00050 void setsignalPFChargedHadrCands(const PFCandidateRefVector&);
00051 const PFCandidateRefVector& signalPFNeutrHadrCands()const;
00052 void setsignalPFNeutrHadrCands(const PFCandidateRefVector&);
00053 const PFCandidateRefVector& signalPFGammaCands()const;
00054 void setsignalPFGammaCands(const PFCandidateRefVector&);
00055
00056
00057 const PFCandidateRefVector& isolationPFCands()const;
00058 void setisolationPFCands(const PFCandidateRefVector&);
00059 const PFCandidateRefVector& isolationPFChargedHadrCands()const;
00060 void setisolationPFChargedHadrCands(const PFCandidateRefVector&);
00061 const PFCandidateRefVector& isolationPFNeutrHadrCands()const;
00062 void setisolationPFNeutrHadrCands(const PFCandidateRefVector&);
00063 const PFCandidateRefVector& isolationPFGammaCands()const;
00064 void setisolationPFGammaCands(const PFCandidateRefVector&);
00065
00066
00067 float isolationPFChargedHadrCandsPtSum()const;
00068 void setisolationPFChargedHadrCandsPtSum(const float&);
00069
00070
00071 float isolationPFGammaCandsEtSum()const;
00072 void setisolationPFGammaCandsEtSum(const float&);
00073
00074
00075 float maximumHCALPFClusterEt()const;
00076 void setmaximumHCALPFClusterEt(const float&);
00077
00078
00079
00080 float emFraction() const;
00081 float hcalTotOverPLead() const;
00082 float hcalMaxOverPLead() const;
00083 float hcal3x3OverPLead() const;
00084 float ecalStripSumEOverPLead() const;
00085 float bremsRecoveryEOverPLead() const;
00086 reco::TrackRef electronPreIDTrack() const;
00087 float electronPreIDOutput() const;
00088 bool electronPreIDDecision() const;
00089
00090 void setemFraction(const float&);
00091 void sethcalTotOverPLead(const float&);
00092 void sethcalMaxOverPLead(const float&);
00093 void sethcal3x3OverPLead(const float&);
00094 void setecalStripSumEOverPLead(const float&);
00095 void setbremsRecoveryEOverPLead(const float&);
00096 void setelectronPreIDTrack(const reco::TrackRef&);
00097 void setelectronPreIDOutput(const float&);
00098 void setelectronPreIDDecision(const bool&);
00099
00100
00101
00102 bool hasMuonReference()const;
00103 float caloComp()const;
00104 float segComp()const;
00105 bool muonDecision()const;
00106 void setCaloComp(const float&);
00107 void setSegComp(const float&);
00108 void setMuonDecision(const bool&);
00109
00110
00115 size_type numberOfSourceCandidatePtrs() const {return 1;}
00116
00119 CandidatePtr sourceCandidatePtr( size_type i ) const;
00120
00122 void dump(std::ostream& out=std::cout) const;
00123
00124 private:
00125
00126 virtual bool overlap(const Candidate&)const;
00127 PFTauTagInfoRef PFTauTagInfoRef_;
00128 PFCandidateRef leadPFChargedHadrCand_;
00129 PFCandidateRef leadPFNeutralCand_, leadPFCand_;
00130 float leadPFChargedHadrCandsignedSipt_;
00131 PFCandidateRefVector selectedSignalPFCands_, selectedSignalPFChargedHadrCands_, selectedSignalPFNeutrHadrCands_, selectedSignalPFGammaCands_;
00132 PFCandidateRefVector selectedIsolationPFCands_, selectedIsolationPFChargedHadrCands_, selectedIsolationPFNeutrHadrCands_, selectedIsolationPFGammaCands_;
00133 float isolationPFChargedHadrCandsPtSum_;
00134 float isolationPFGammaCandsEtSum_;
00135 float maximumHCALPFClusterEt_;
00136
00137 float emFraction_;
00138 float hcalTotOverPLead_;
00139 float hcalMaxOverPLead_;
00140 float hcal3x3OverPLead_;
00141 float ecalStripSumEOverPLead_;
00142 float bremsRecoveryEOverPLead_;
00143 reco::TrackRef electronPreIDTrack_;
00144 float electronPreIDOutput_;
00145 bool electronPreIDDecision_;
00146
00147 float caloComp_;
00148 float segComp_;
00149 bool muonDecision_;
00150 };
00151
00152 std::ostream & operator<<(std::ostream& out, const PFTau& c);
00153
00154 }
00155 #endif