CMS 3D CMS Logo

/data/git/CMSSW_5_3_11_patch5/src/DataFormats/JetReco/interface/CaloJet.h

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     //  float physicsEtaQuick (float fZVertex) const;
00123     //float physicsEta (float fZVertex) const {return physicsEtaQuick (fZVertex);}
00125     //LorentzVector physicsP4 (float fZVertex) const;
00127   LorentzVector physicsP4 (const Particle::Point &vertex) const;
00129   LorentzVector detectorP4 () const;
00130   
00132     //float physicsEtaDetailed (float fZVertex) const;
00133 
00135     //float detectorEta () const {return eta();}
00136 
00137 
00139   virtual CaloTowerPtr getCaloConstituent (unsigned fIndex) const;
00141   virtual std::vector <CaloTowerPtr> getCaloConstituents () const;
00142   
00143   // block accessors
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   //Variables specific to to the CaloJet class
00160   Specific m_specific;
00161 };
00162 }
00163 // temporary fix before include_checcker runs globally
00164 #include "DataFormats/JetReco/interface/CaloJetCollection.h" //INCLUDECHECKER:SKIP
00165 #endif