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/TrackReco/interface/TrackFwd.h"
00020
00021 namespace reco {
00022 class PFJet : public Jet {
00023 public:
00024
00025 typedef reco::PFCandidatePtr ConstituentTypePtr;
00026 typedef reco::PFCandidateFwdPtr ConstituentTypeFwdPtr;
00027
00028 struct Specific {
00029 Specific () :
00030 mChargedHadronEnergy (0),
00031 mNeutralHadronEnergy (0),
00032 mPhotonEnergy (0),
00033 mElectronEnergy (0),
00034 mMuonEnergy (0),
00035 mHFHadronEnergy (0),
00036 mHFEMEnergy (0),
00037
00038 mChargedHadronMultiplicity (0),
00039 mNeutralHadronMultiplicity (0),
00040 mPhotonMultiplicity (0),
00041 mElectronMultiplicity (0),
00042 mMuonMultiplicity (0),
00043 mHFHadronMultiplicity (0),
00044 mHFEMMultiplicity (0),
00045
00046 mChargedEmEnergy (0),
00047 mChargedMuEnergy (0),
00048 mNeutralEmEnergy (0),
00049
00050 mChargedMultiplicity (0),
00051 mNeutralMultiplicity (0)
00052 {}
00053 float mChargedHadronEnergy;
00054 float mNeutralHadronEnergy;
00055 float mPhotonEnergy;
00056 float mElectronEnergy;
00057 float mMuonEnergy;
00058 float mHFHadronEnergy;
00059 float mHFEMEnergy;
00060
00061 int mChargedHadronMultiplicity;
00062 int mNeutralHadronMultiplicity;
00063 int mPhotonMultiplicity;
00064 int mElectronMultiplicity;
00065 int mMuonMultiplicity;
00066 int mHFHadronMultiplicity;
00067 int mHFEMMultiplicity;
00068
00069
00070
00071 float mChargedEmEnergy;
00072 float mChargedMuEnergy;
00073 float mNeutralEmEnergy;
00074 int mChargedMultiplicity;
00075 int mNeutralMultiplicity;
00076 };
00077
00079 PFJet() {}
00080
00082 PFJet(const LorentzVector& fP4, const Point& fVertex, const Specific& fSpecific,
00083 const Jet::Constituents& fConstituents);
00084
00085 PFJet(const LorentzVector& fP4, const Point& fVertex, const Specific& fSpecific);
00086
00088 PFJet(const LorentzVector& fP4, const Specific& fSpecific,
00089 const Jet::Constituents& fConstituents);
00090
00091
00092 virtual ~PFJet() {};
00093
00095 float chargedHadronEnergy () const {return m_specific.mChargedHadronEnergy;}
00097 float chargedHadronEnergyFraction () const {return chargedHadronEnergy () / energy ();}
00099 float neutralHadronEnergy () const {return m_specific.mNeutralHadronEnergy;}
00101 float neutralHadronEnergyFraction () const {return neutralHadronEnergy () / energy ();}
00103 float photonEnergy () const {return m_specific.mPhotonEnergy;}
00105 float photonEnergyFraction () const {return photonEnergy () / energy ();}
00107 float electronEnergy () const {return m_specific.mElectronEnergy;}
00109 float electronEnergyFraction () const {return electronEnergy () / energy ();}
00111 float muonEnergy () const {return m_specific.mMuonEnergy;}
00113 float muonEnergyFraction () const {return muonEnergy () / energy ();}
00115 float HFHadronEnergy () const {return m_specific.mHFHadronEnergy;}
00117 float HFHadronEnergyFraction () const {return HFHadronEnergy () / energy ();}
00119 float HFEMEnergy () const {return m_specific.mHFEMEnergy;}
00121 float HFEMEnergyFraction () const {return HFEMEnergy () / energy ();}
00122
00124 int chargedHadronMultiplicity () const {return m_specific.mChargedHadronMultiplicity;}
00126 int neutralHadronMultiplicity () const {return m_specific.mNeutralHadronMultiplicity;}
00128 int photonMultiplicity () const {return m_specific.mPhotonMultiplicity;}
00130 int electronMultiplicity () const {return m_specific.mElectronMultiplicity;}
00132 int muonMultiplicity () const {return m_specific.mMuonMultiplicity;}
00134 int HFHadronMultiplicity () const {return m_specific.mHFHadronMultiplicity;}
00136 int HFEMMultiplicity () const {return m_specific.mHFEMMultiplicity;}
00137
00139 float chargedEmEnergy () const {return m_specific.mChargedEmEnergy;}
00141 float chargedEmEnergyFraction () const {return chargedEmEnergy () / energy ();}
00143 float chargedMuEnergy () const {return m_specific.mChargedMuEnergy;}
00145 float chargedMuEnergyFraction () const {return chargedMuEnergy () / energy ();}
00147 float neutralEmEnergy () const {return m_specific.mNeutralEmEnergy;}
00149 float neutralEmEnergyFraction () const {return neutralEmEnergy () / energy ();}
00150
00152 int chargedMultiplicity () const {return m_specific.mChargedMultiplicity;}
00154 int neutralMultiplicity () const {return m_specific.mNeutralMultiplicity;}
00155
00156
00158 virtual reco::PFCandidatePtr getPFConstituent (unsigned fIndex) const;
00159
00161 virtual std::vector <reco::PFCandidatePtr> getPFConstituents () const;
00162
00166 reco::TrackRefVector getTrackRefs() const;
00167
00168
00169
00170 const Specific& getSpecific () const {return m_specific;}
00171
00173 virtual PFJet* clone () const;
00174
00176 virtual std::string print () const;
00177
00178
00179 private:
00181 virtual bool overlap( const Candidate & ) const;
00182
00183
00184 Specific m_specific;
00185 };
00186
00187
00188 std::ostream& operator<<(std::ostream& out, const reco::PFJet& jet);
00189 }
00190
00191 #include "DataFormats/JetReco/interface/PFJetCollection.h"
00192 #endif