CMS 3D CMS Logo

PFJet.h

Go to the documentation of this file.
00001 #ifndef JetReco_PFJet_h
00002 #define JetReco_PFJet_h
00003 
00017 #include "DataFormats/JetReco/interface/Jet.h"
00018 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
00019 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
00020 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00021 
00022 namespace reco {
00023 class PFJet : public Jet {
00024  public:
00025   struct Specific {
00026     Specific () :
00027          mChargedHadronEnergy (0),
00028          mNeutralHadronEnergy (0),
00029          mChargedEmEnergy (0),
00030          mChargedMuEnergy (0),
00031          mNeutralEmEnergy (0),
00032          mChargedMultiplicity (0),
00033          mNeutralMultiplicity (0),
00034          mMuonMultiplicity (0)
00035     {}
00036     float mChargedHadronEnergy;
00037     float mNeutralHadronEnergy;
00038     float mChargedEmEnergy;
00039     float mChargedMuEnergy;
00040     float mNeutralEmEnergy;
00041     int mChargedMultiplicity;
00042     int mNeutralMultiplicity;
00043     int mMuonMultiplicity;
00044  };
00045   
00047   PFJet() {}
00048   
00050   PFJet(const LorentzVector& fP4, const Point& fVertex, const Specific& fSpecific, 
00051           const Jet::Constituents& fConstituents);
00052 
00053   PFJet(const LorentzVector& fP4, const Point& fVertex, const Specific& fSpecific); 
00054 
00056   PFJet(const LorentzVector& fP4, const Specific& fSpecific, 
00057           const Jet::Constituents& fConstituents);
00058 
00059   
00060   virtual ~PFJet() {};
00061 
00063   float chargedHadronEnergy () const {return m_specific.mChargedHadronEnergy;}
00065   float  chargedHadronEnergyFraction () const {return chargedHadronEnergy () / energy ();}
00067   float neutralHadronEnergy () const {return m_specific.mNeutralHadronEnergy;}
00069   float neutralHadronEnergyFraction () const {return neutralHadronEnergy () / energy ();}
00071   float chargedEmEnergy () const {return m_specific.mChargedEmEnergy;}
00073   float chargedEmEnergyFraction () const {return chargedEmEnergy () / energy ();}
00075   float chargedMuEnergy () const {return m_specific.mChargedMuEnergy;}
00077   float chargedMuEnergyFraction () const {return chargedMuEnergy () / energy ();}
00079   float neutralEmEnergy () const {return m_specific.mNeutralEmEnergy;}
00081   float neutralEmEnergyFraction () const {return neutralEmEnergy () / energy ();}
00083   int chargedMultiplicity () const {return m_specific.mChargedMultiplicity;}
00085   int neutralMultiplicity () const {return m_specific.mNeutralMultiplicity;}
00087   int muonMultiplicity () const {return m_specific.mMuonMultiplicity;}
00088 
00089  
00091   static const reco::PFCandidate* getPFCandidate (const reco::Candidate* fConstituent);
00092 
00094   virtual const reco::PFCandidate* getPFConstituent (unsigned fIndex) const;
00095 
00097   virtual std::vector <const reco::PFCandidate*> getPFConstituents () const;
00098 
00102   reco::TrackRefVector getTrackRefs() const; 
00103   
00104   // block accessors
00105   
00106   const Specific& getSpecific () const {return m_specific;}
00107 
00109   virtual PFJet* clone () const;
00110 
00112   virtual std::string print () const;
00113 
00114   friend std::ostream& operator<<(std::ostream& out, const reco::PFJet& jet);
00115 
00116  private:
00118   virtual bool overlap( const Candidate & ) const;
00119   
00120   //Variables specific to to the PFJet class
00121   Specific m_specific;
00122 };
00123 }
00124 // temporary fix before include_checcker runs globally
00125 #include "DataFormats/JetReco/interface/PFJetCollection.h" //INCLUDECHECKER:SKIP 
00126 #endif

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