00001 #ifndef JetReco_GenJet_h
00002 #define JetReco_GenJet_h
00003
00019 #include "DataFormats/JetReco/interface/Jet.h"
00020
00021
00022 namespace reco {
00023 class GenParticle;
00024
00025 class GenJet : public Jet {
00026 public:
00027 struct Specific {
00028 Specific () :
00029 m_EmEnergy (0),
00030 m_HadEnergy (0),
00031 m_InvisibleEnergy (0),
00032 m_AuxiliaryEnergy (0) {}
00033
00035 float m_EmEnergy;
00037 float m_HadEnergy;
00039 float m_InvisibleEnergy;
00041 float m_AuxiliaryEnergy;
00042 };
00043
00045 GenJet() {}
00046
00048 GenJet(const LorentzVector& fP4, const Point& fVertex, const Specific& fSpecific,
00049 const Jet::Constituents& fConstituents);
00050 GenJet(const LorentzVector& fP4, const Point& fVertex, const Specific& fSpecific);
00051
00053 GenJet(const LorentzVector& fP4, const Specific& fSpecific,
00054 const Jet::Constituents& fConstituents);
00055
00056 virtual ~GenJet() {};
00058 float emEnergy() const {return m_specific.m_EmEnergy;};
00060 float hadEnergy() const {return m_specific.m_HadEnergy;};
00062 float invisibleEnergy() const {return m_specific.m_InvisibleEnergy;};
00064 float auxiliaryEnergy() const {return m_specific.m_AuxiliaryEnergy;};
00065
00067 float detectorEta (float fZVertex) const;
00068
00070 static const GenParticle* genParticle (const reco::Candidate* fConstituent);
00072 virtual const GenParticle* getGenConstituent (unsigned fIndex) const;
00074 virtual std::vector <const GenParticle*> getGenConstituents () const;
00075
00076
00077
00078 const Specific& getSpecific () const {return m_specific;}
00079
00080
00082 virtual GenJet* clone () const;
00083
00085 virtual std::string print () const;
00086
00087 private:
00089 virtual bool overlap( const Candidate & ) const;
00090
00091
00092
00093 Specific m_specific;
00094 };
00095 }
00096
00097 #include "DataFormats/JetReco/interface/GenJetCollection.h"
00098 #endif