00001 // This file's extension implies that it's C, but it's really -*- C++ -*-. 00002 // $Id$ 00011 #ifndef XAODCALOEVENT_CALOVERTEXEDCLUSTERBASE_H 00012 #define XAODCALOEVENT_CALOVERTEXEDCLUSTERBASE_H 00013 00014 #include "xAODCaloEvent/CaloCluster.h" 00015 #include "xAODBase/IParticle.h" 00016 #include "GeoPrimitives/GeoPrimitives.h" 00017 #include "CxxUtils/final.h" 00018 00019 00020 namespace xAOD { 00021 00022 00035 class CaloVertexedClusterBase 00036 : public IParticle 00037 { 00038 public: 00046 CaloVertexedClusterBase (const CaloCluster& cl); 00047 00048 00057 CaloVertexedClusterBase (const CaloCluster& cl, 00058 CaloCluster::State s); 00059 00060 00061 00065 const CaloCluster& clust() const { return *m_cl; } 00066 00069 00071 virtual double pt() const ATH_FINAL { return m_p4.Pt(); } 00073 virtual double eta() const ATH_FINAL { return m_eta; } 00075 virtual double phi() const ATH_FINAL { return m_phi; } 00077 virtual double m() const ATH_FINAL { return m_p4.M(); } 00079 virtual double e() const ATH_FINAL { return m_p4.E(); } 00081 virtual double rapidity() const ATH_FINAL { return m_p4.Rapidity(); } 00082 00084 virtual const FourMom_t& p4() const ATH_FINAL { return m_p4; } 00085 00087 00089 virtual Type::ObjectType type() const ATH_FINAL { return m_cl->type(); } 00090 00091 00092 00093 protected: 00098 void computeVertexCorr (const Amg::Vector3D& vx, double radius); 00099 00101 const CaloCluster* m_cl; 00102 00103 00105 double m_eta; 00106 00107 00109 double m_phi; 00110 00111 00113 FourMom_t m_p4; 00114 }; 00115 00116 00117 } // namespace xAOD 00118 00119 00120 00121 00122 #endif // not XAODCALOEVENT_CALOVERTEXEDCLUSTERBASE_H