00001
00002
00003 #ifndef XAODPARTICLEEVENT_VERSIONS_PARTICLE_V1_H
00004 #define XAODPARTICLEEVENT_VERSIONS_PARTICLE_V1_H
00005
00006
00007
00008 #include <vector>
00009
00010
00011 #include "xAODBase/IParticle.h"
00012 #include "xAODBase/IParticleContainer.h"
00013 #include "AthLinks/ElementLink.h"
00014
00015
00016 namespace xAOD {
00017
00024 class Particle_v1 : public IParticle {
00025
00026 public:
00028 Particle_v1();
00029
00031
00032
00033
00034
00037
00039 virtual double pt() const;
00041 virtual double eta() const;
00043 virtual double phi() const;
00045 virtual double m() const;
00047 virtual double e() const;
00049 virtual double rapidity() const;
00050
00052 typedef IParticle::FourMom_t FourMom_t;
00053
00055 virtual const FourMom_t& p4() const;
00056
00058 virtual Type::ObjectType type() const;
00060
00061
00064
00066 double px() const;
00068 double py() const;
00070 double pz() const;
00073 double et() const;
00074
00075
00077 void setP4( const FourMom_t& vec );
00079 void setPxPyPzE( double px, double py, double pz, double e );
00081 void setPx( double px );
00083 void setPy( double py );
00085 void setPz( double pz );
00087 void setE( double e );
00089
00090
00093
00095 bool hasCharge() const;
00097 float charge() const;
00099 void setCharge( float charge );
00100
00102 bool hasPdgId() const;
00104 int pdgId() const;
00106 void setPdgId( int pdgID );
00107
00109
00110
00111 public:
00112
00114 void toPersistent();
00115
00116 private:
00118 mutable FourMom_t m_p4;
00119
00121 mutable bool m_p4Cached;
00122
00123 };
00124
00125
00126 }
00127
00128 #endif // XAODPARTICLEEVENT_VERSIONS_PARTICLE_V1_H