00001
00002
00003 #ifndef XAODTRACKING_VERSIONS_NEUTRALPARTICLE_V1_H
00004 #define XAODTRACKING_VERSIONS_NEUTRALPARTICLE_V1_H
00005
00006
00007 #include "AthLinks/ElementLink.h"
00008 #include "AthContainers/DataVector.h"
00009
00010
00011 #include "xAODBase/IParticle.h"
00012 #include "xAODTracking/TrackingPrimitives.h"
00013 #include "xAODTracking/VertexContainerFwd.h"
00014
00015 #include <bitset>
00016 #include <stdint.h>
00017
00018 #ifndef XAOD_STANDALONE
00019 #ifndef XAOD_MANACORE
00020 #include "TrkNeutralParameters/NeutralParameters.h"
00021 #endif // not XAOD_MANACORE
00022 #endif // not XAOD_STANDALONE
00023
00024 namespace xAOD {
00029
00030 class NeutralParticle_v1 : public IParticle {
00031
00032 public:
00033
00035 NeutralParticle_v1();
00037 ~NeutralParticle_v1();
00039 NeutralParticle_v1(const NeutralParticle_v1& o );
00041 NeutralParticle_v1& operator=(const NeutralParticle_v1& tp );
00042
00046 virtual double pt() const;
00048 virtual double eta() const;
00050 virtual double phi() const;
00052 virtual double m() const;
00054 virtual double e() const;
00056 virtual double rapidity() const;
00057
00059 typedef IParticle::FourMom_t FourMom_t;
00060
00062 virtual const FourMom_t& p4() const;
00063
00065 virtual Type::ObjectType type() const;
00067
00076
00078 float d0() const;
00080 float z0() const;
00082 float phi0() const;
00084 float theta() const;
00086 float oneOverP() const;
00090 const DefiningParameters_t& definingParameters() const;
00092 const ParametersCovMatrix_t& definingParametersCovMatrix() const;
00094 const std::vector<float>& definingParametersCovMatrixVec() const;
00095
00097 void setDefiningParameters(float d0, float z0, float phi0, float theta, float qOverP);
00099 void setDefiningParametersCovMatrix(const ParametersCovMatrix_t& cov);
00101 void setDefiningParametersCovMatrixVec(const std::vector<float>& cov);
00102
00104 float vx() const;
00106 float vy() const;
00108 float vz() const;
00110 void setParametersOrigin(float x, float y, float z);
00111
00112 #if ( ! defined(XAOD_STANDALONE) ) && ( ! defined(XAOD_MANACORE) )
00118 const Trk::NeutralPerigee& perigeeParameters() const;
00119 #endif // not XAOD_STANDALONE and not XAOD_MANACORE
00120
00121
00122
00123
00124
00125
00126 private:
00128 mutable FourMom_t m_p4;
00130 mutable bool m_p4Cached;
00131
00134 mutable bool m_perigeeCached;
00135
00136 #if ( ! defined(XAOD_STANDALONE) ) && ( ! defined(XAOD_MANACORE) ) && ( ! defined(__GCCXML__) ) && !defined(__CLING__)
00139 mutable Trk::NeutralPerigee* m_perigeeParameters;
00140 #endif // not XAOD_STANDALONE and not XAOD_MANACORE and not __GCCXML__
00141
00142 };
00143
00144 }
00145
00146
00147 #endif // XAODTRACKING_VERSIONS_NEUTRALPARTICLE_V1_H