00001 // dear emacs, this is really -*- C++ -*- 00002 #ifndef EGAMMARECEVENT_EGAMMA_H 00003 #define EGAMMARECEVENT_EGAMMA_H 00004 00008 // INCLUDE HEADER FILES: 00009 00010 00011 #include "AthLinks/ElementLink.h" 00012 00013 //CaloCluster include 00014 #include "xAODCaloEvent/CaloCluster.h" 00015 #include "xAODCaloEvent/CaloClusterContainer.h" 00016 00017 //TrackParticle Includes 00018 #include "xAODTracking/TrackParticle.h" 00019 #include "xAODTracking/TrackParticleContainer.h" 00020 00021 //Vertex Includes 00022 #include "xAODTracking/Vertex.h" 00023 #include "xAODTracking/VertexContainer.h" 00024 00025 class egammaRec{ 00026 00028 // Public typedefs: 00030 public: 00031 00033 egammaRec(); 00034 00036 size_t getNumberOfClusters() const; 00037 00039 const xAOD::CaloCluster* caloCluster( size_t index=0) const; 00040 00042 const ElementLink< xAOD::CaloClusterContainer > caloClusterElementLink( size_t index=0) const; 00043 00045 void setCaloClusters( const std::vector< ElementLink< xAOD::CaloClusterContainer > >& links); 00046 00049 size_t getNumberOfTrackParticles() const; 00050 00053 const xAOD::TrackParticle* trackParticle( size_t index = 0 ) const; 00054 00057 const ElementLink< xAOD::TrackParticleContainer> trackParticleElementLink( size_t index = 0 ) const; 00058 00061 void 00062 setTrackParticles( const std::vector< ElementLink< xAOD::TrackParticleContainer > >& links ); 00063 00065 size_t getNumberOfVertices() const; 00066 00068 const xAOD::Vertex* vertex( size_t index = 0 ) const; 00069 00071 const ElementLink< xAOD::VertexContainer > vertexElementLink( size_t index = 0 ) const; 00072 00074 void pushBackVertex( const ElementLink< xAOD::VertexContainer > vertexElementLink ) 00075 { m_vertices.push_back(vertexElementLink); } 00076 00078 void pushFrontVertex( const ElementLink< xAOD::VertexContainer > vertexElementLink ) 00079 { m_vertices.insert(m_vertices.begin(), vertexElementLink); } 00080 00082 void setVertices( const std::vector< ElementLink< xAOD::VertexContainer > >& links ); 00083 00086 00088 double deltaEta (int index=0) const; 00089 00091 double deltaPhi (int index=0) const; 00092 00095 double deltaPhiRescaled (int index=0) const; 00096 00098 double deltaPhiLast () const { 00099 return m_deltaPhiLast; 00100 } 00101 00102 00104 void setDeltaEta (int sampl, double value); 00105 00107 void setDeltaPhi (int sampl, double value); 00108 00111 void setDeltaPhiRescaled (int sampl,double value); 00112 00114 void setDeltaPhiLast (double value){ 00115 m_deltaPhiLast=value; 00116 } 00117 00119 00122 00124 float deltaEtaVtx () const { return m_deltaEtaVtx; }; 00125 00127 float deltaPhiVtx () const { return m_deltaPhiVtx; }; 00128 00130 void setDeltaEtaVtx (float value) { m_deltaEtaVtx = value; }; 00131 00133 void setDeltaPhiVtx (float value) { m_deltaPhiVtx = value; }; 00134 00136 00137 00138 private : 00139 00140 std::vector< ElementLink< xAOD::CaloClusterContainer > > m_caloClusters; 00141 std::vector< ElementLink< xAOD::TrackParticleContainer > > m_trackParticles; 00142 std::vector< ElementLink< xAOD::VertexContainer > > m_vertices; 00143 00144 00145 std::vector<double> m_deltaEta; 00146 std::vector<double> m_deltaPhi; 00147 std::vector<double> m_deltaPhiRescaled; 00148 double m_deltaPhiLast; 00149 00150 float m_deltaEtaVtx, m_deltaPhiVtx; 00151 00152 }; 00153 00154 00155 00156 #endif 00157