00001 #ifndef DataFormats_CaloRecHit_CaloCluster_h 00002 #define DataFormats_CaloRecHit_CaloCluster_h 00003 00013 #include "DataFormats/Math/interface/Point3D.h" 00014 #include "DataFormats/CaloRecHit/interface/CaloID.h" 00015 00016 namespace reco { 00017 00018 class CaloCluster { 00019 00020 public: 00021 00023 CaloCluster() : energy_(0.) { } 00024 00026 CaloCluster( double energy, 00027 const math::XYZPoint& position ) : 00028 energy_ (energy), position_ (position) {} 00029 00031 CaloCluster( double energy, 00032 const math::XYZPoint& position, 00033 const CaloID& caloID) : 00034 energy_ (energy), position_ (position), caloID_(caloID) {} 00035 00037 virtual ~CaloCluster() {} 00038 00040 double energy() const { return energy_; } 00041 00043 const math::XYZPoint & position() const { return position_; } 00044 00046 bool operator >=(const CaloCluster& rhs) const { 00047 return (energy_>=rhs.energy_); 00048 } 00049 00051 bool operator > (const CaloCluster& rhs) const { 00052 return (energy_> rhs.energy_); 00053 } 00054 00056 bool operator <=(const CaloCluster& rhs) const { 00057 return (energy_<=rhs.energy_); 00058 } 00059 00061 bool operator < (const CaloCluster& rhs) const { 00062 return (energy_< rhs.energy_); 00063 } 00064 00066 double x() const { return position_.x(); } 00067 00069 double y() const { return position_.y(); } 00070 00072 double z() const { return position_.z(); } 00073 00075 double eta() const { return position_.eta(); } 00076 00078 double phi() const { return position_.phi(); } 00079 00080 00081 CaloID& caloID() {return caloID_;} 00082 const CaloID& caloID() const {return caloID_;} 00083 00084 CaloCluster& operator=(const CaloCluster & rhs) { 00085 energy_ = rhs.energy_; 00086 position_ = rhs.position_; 00087 caloID_ = rhs.caloID_; 00088 return *this; 00089 } 00090 00091 00092 00093 protected: 00094 00096 double energy_; 00097 00099 math::XYZPoint position_; 00100 00102 CaloID caloID_; 00103 00104 }; 00105 00106 } 00107 00108 #endif