CMS 3D CMS Logo

PFTau.h

Go to the documentation of this file.
00001 
00002 #ifndef DataFormats_TauReco_PFTau_h
00003 #define DataFormats_TauReco_PFTau_h
00004 
00005 /* class PFTau
00006  * the object of this class is created by RecoTauTag/RecoTau PFRecoTauProducer EDProducer starting from the PFTauTagInfo object,
00007  *                          is a hadronic tau-jet candidate -built from a jet made employing a particle flow technique- that analysts manipulate;
00008  * authors: Simone Gennai (simone.gennai@cern.ch), Ludovic Houchu (Ludovic.Houchu@cern.ch)
00009  * created: Jun 21 2007,
00010  * revised: Sep 12 2007
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     //Can be either the charged or the neutral one
00037     const PFCandidateRef& leadPFCand()const; 
00038 
00039     void setleadPFChargedHadrCand(const PFCandidateRef&);
00040     void setleadPFNeutralCand(const PFCandidateRef&);
00041     void setleadPFCand(const PFCandidateRef&);
00042     // signed transverse impact parameter significance of the Track constituting the leading charged hadron PFCandidate 
00043     float leadPFChargedHadrCandsignedSipt()const;
00044     void setleadPFChargedHadrCandsignedSipt(const float&);
00045     
00046     //  PFCandidates which passed quality cuts and are inside a tracker/ECAL/HCAL signal cone around leading charged hadron PFCandidate
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     // PFCandidates which passed quality cuts and are inside a tracker/ECAL/HCAL isolation annulus around leading charged hadron PFCandidate
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     // sum of Pt of the charged hadr. PFCandidates inside a tracker isolation annulus around leading charged hadron PFCandidate ; NaN if no leading charged hadron PFCandidate
00067     float isolationPFChargedHadrCandsPtSum()const;
00068     void setisolationPFChargedHadrCandsPtSum(const float&);
00069    
00070     // sum of Et of the gamma PFCandidates inside an ECAL isolation annulus around leading charged hadron PFCandidate ; NaN if no leading charged hadron PFCandidate 
00071     float isolationPFGammaCandsEtSum()const;
00072     void setisolationPFGammaCandsEtSum(const float&);
00073     
00074     // Et of the highest Et HCAL PFCluster  
00075     float maximumHCALPFClusterEt()const;
00076     void setmaximumHCALPFClusterEt(const float&);    
00077 
00078 
00079     //Electron rejection
00080     float emFraction() const; // Ecal/Hcal Cluster Energy 
00081     float hcalTotOverPLead() const; // total Hcal Cluster E / leadPFChargedHadron P
00082     float hcalMaxOverPLead() const; // max. Hcal Cluster E / leadPFChargedHadron P
00083     float hcal3x3OverPLead() const; // Hcal Cluster E in R<0.184 around Ecal impact point of leading track / leadPFChargedHadron P
00084     float ecalStripSumEOverPLead() const; // Simple BremsRecovery Sum E / leadPFChargedHadron P
00085     float bremsRecoveryEOverPLead() const; // BremsRecovery Sum E / leadPFChargedHadron P
00086     reco::TrackRef electronPreIDTrack() const; // Ref to KF track from Electron PreID
00087     float electronPreIDOutput() const; // BDT output from Electron PreID
00088     bool electronPreIDDecision() const; // Decision from Electron PreID
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     //end of Electron rejection
00101 // For Muon Rejection
00102     bool    hasMuonReference()const; // check if muon ref exists
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     // check overlap with another candidate
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

Generated on Tue Jun 9 17:31:46 2009 for CMSSW by  doxygen 1.5.4