Go to the documentation of this file.00001 #ifndef JetReco_CaloJet_h
00002 #define JetReco_CaloJet_h
00003
00025 #include "DataFormats/JetReco/interface/Jet.h"
00026 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h"
00027
00028
00029 namespace reco {
00030 class CaloJet : public Jet {
00031 public:
00032 struct Specific {
00033 Specific () :
00034 mMaxEInEmTowers (0),
00035 mMaxEInHadTowers (0),
00036 mHadEnergyInHO (0),
00037 mHadEnergyInHB (0),
00038 mHadEnergyInHF (0),
00039 mHadEnergyInHE (0),
00040 mEmEnergyInEB (0),
00041 mEmEnergyInEE (0),
00042 mEmEnergyInHF (0),
00043 mEnergyFractionHadronic(0),
00044 mEnergyFractionEm (0),
00045 mTowersArea (0)
00046 {}
00047
00049 float mMaxEInEmTowers;
00051 float mMaxEInHadTowers;
00053 float mHadEnergyInHO;
00055 float mHadEnergyInHB;
00057 float mHadEnergyInHF;
00059 float mHadEnergyInHE;
00061 float mEmEnergyInEB;
00063 float mEmEnergyInEE;
00065 float mEmEnergyInHF;
00067 float mEnergyFractionHadronic;
00069 float mEnergyFractionEm;
00071 float mTowersArea;
00072 };
00073
00075 CaloJet() {}
00076
00078 CaloJet(const LorentzVector& fP4, const Point& fVertex, const Specific& fSpecific,
00079 const Jet::Constituents& fConstituents);
00080
00082 CaloJet(const LorentzVector& fP4, const Point& fVertex, const Specific& fSpecific);
00083
00085 CaloJet(const LorentzVector& fP4, const Specific& fSpecific,
00086 const Jet::Constituents& fConstituents);
00087
00088
00089 virtual ~CaloJet() {};
00090
00092 float maxEInEmTowers() const {return m_specific.mMaxEInEmTowers;}
00094 float maxEInHadTowers() const {return m_specific.mMaxEInHadTowers;}
00096 float energyFractionHadronic () const {return m_specific.mEnergyFractionHadronic;}
00098 float emEnergyFraction() const {return m_specific.mEnergyFractionEm;}
00100 float hadEnergyInHB() const {return m_specific.mHadEnergyInHB;}
00102 float hadEnergyInHO() const {return m_specific.mHadEnergyInHO;}
00104 float hadEnergyInHE() const {return m_specific.mHadEnergyInHE;}
00106 float hadEnergyInHF() const {return m_specific.mHadEnergyInHF;}
00108 float emEnergyInEB() const {return m_specific.mEmEnergyInEB;}
00110 float emEnergyInEE() const {return m_specific.mEmEnergyInEE;}
00112 float emEnergyInHF() const {return m_specific.mEmEnergyInHF;}
00114 float towersArea() const {return m_specific.mTowersArea;}
00116 int n90() const {return nCarrying (0.9);}
00118 int n60() const {return nCarrying (0.6);}
00119
00121
00123
00125
00127 LorentzVector physicsP4 (const Particle::Point &vertex) const;
00129 LorentzVector detectorP4 () const;
00130
00132
00133
00135
00136
00137
00139 virtual CaloTowerPtr getCaloConstituent (unsigned fIndex) const;
00141 virtual std::vector <CaloTowerPtr> getCaloConstituents () const;
00142
00143
00144
00145 const Specific& getSpecific () const {return m_specific;}
00146
00148 virtual CaloJet* clone () const;
00149
00151 virtual std::string print () const;
00152
00154 std::vector<CaloTowerDetId> getTowerIndices() const;
00155 private:
00157 virtual bool overlap( const Candidate & ) const;
00158
00159
00160 Specific m_specific;
00161 };
00162 }
00163
00164 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00165 #endif