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
00033 typedef CaloTowerPtr ConstituentTypePtr;
00034 typedef CaloTowerFwdPtr ConstituentTypeFwdPtr;
00035
00036
00037 struct Specific {
00038 Specific () :
00039 mMaxEInEmTowers (0),
00040 mMaxEInHadTowers (0),
00041 mHadEnergyInHO (0),
00042 mHadEnergyInHB (0),
00043 mHadEnergyInHF (0),
00044 mHadEnergyInHE (0),
00045 mEmEnergyInEB (0),
00046 mEmEnergyInEE (0),
00047 mEmEnergyInHF (0),
00048 mEnergyFractionHadronic(0),
00049 mEnergyFractionEm (0),
00050 mTowersArea (0)
00051 {}
00052
00054 float mMaxEInEmTowers;
00056 float mMaxEInHadTowers;
00058 float mHadEnergyInHO;
00060 float mHadEnergyInHB;
00062 float mHadEnergyInHF;
00064 float mHadEnergyInHE;
00066 float mEmEnergyInEB;
00068 float mEmEnergyInEE;
00070 float mEmEnergyInHF;
00072 float mEnergyFractionHadronic;
00074 float mEnergyFractionEm;
00076 float mTowersArea;
00077 };
00078
00080 CaloJet() {}
00081
00083 CaloJet(const LorentzVector& fP4, const Point& fVertex, const Specific& fSpecific,
00084 const Jet::Constituents& fConstituents);
00085
00087 CaloJet(const LorentzVector& fP4, const Point& fVertex, const Specific& fSpecific);
00088
00090 CaloJet(const LorentzVector& fP4, const Specific& fSpecific,
00091 const Jet::Constituents& fConstituents);
00092
00093
00094 virtual ~CaloJet() {};
00095
00097 float maxEInEmTowers() const {return m_specific.mMaxEInEmTowers;}
00099 float maxEInHadTowers() const {return m_specific.mMaxEInHadTowers;}
00101 float energyFractionHadronic () const {return m_specific.mEnergyFractionHadronic;}
00103 float emEnergyFraction() const {return m_specific.mEnergyFractionEm;}
00105 float hadEnergyInHB() const {return m_specific.mHadEnergyInHB;}
00107 float hadEnergyInHO() const {return m_specific.mHadEnergyInHO;}
00109 float hadEnergyInHE() const {return m_specific.mHadEnergyInHE;}
00111 float hadEnergyInHF() const {return m_specific.mHadEnergyInHF;}
00113 float emEnergyInEB() const {return m_specific.mEmEnergyInEB;}
00115 float emEnergyInEE() const {return m_specific.mEmEnergyInEE;}
00117 float emEnergyInHF() const {return m_specific.mEmEnergyInHF;}
00119 float towersArea() const {return m_specific.mTowersArea;}
00121 int n90() const {return nCarrying (0.9);}
00123 int n60() const {return nCarrying (0.6);}
00124
00126
00128
00130
00132 LorentzVector physicsP4 (const Particle::Point &vertex) const;
00134 LorentzVector detectorP4 () const;
00135
00137
00138
00140
00141
00142
00144 virtual CaloTowerPtr getCaloConstituent (unsigned fIndex) const;
00146 virtual std::vector <CaloTowerPtr> getCaloConstituents () const;
00147
00148
00149
00150 const Specific& getSpecific () const {return m_specific;}
00151
00153 virtual CaloJet* clone () const;
00154
00156 virtual std::string print () const;
00157
00159 std::vector<CaloTowerDetId> getTowerIndices() const;
00160 private:
00162 virtual bool overlap( const Candidate & ) const;
00163
00164
00165 Specific m_specific;
00166 };
00167 }
00168
00169 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00170 #endif