00001 #ifndef _MANTREE_MTRACK_H__
00002 #define _MANTREE_MTRACK_H__
00003
00004 #include <iosfwd>
00005 #include <string>
00006
00007 #include "manTree/MParticle.h"
00008
00009 #ifdef _ATHENA_CLASSES__
00010
00011 class P4IPtCotThPhiMBase;
00012 namespace Rec {
00013 class TrackParticle;
00014 }
00015 namespace Trk {
00016 class Track;
00017 }
00018 #endif
00019
00020 namespace manchester {
00021
00027 class MTrack : public MParticle {
00028 public:
00030 MTrack();
00031
00033 MTrack(Double_t px, Double_t py, Double_t pz, Double_t e);
00034
00036 MTrack(const MTrack& trk);
00037
00038 #ifdef _ATHENA_CLASSES__
00040 MTrack(const Rec::TrackParticle& trk);
00041
00043 MTrack(const P4IPtCotThPhiMBase& vec);
00044
00046 void SetPerigeeParams(const Rec::TrackParticle& trk);
00047 #endif
00048
00050 virtual ~MTrack();
00051
00052 Bool_t HasMeasuredPerigee() const;
00053
00054
00055 Float_t D0() const;
00056 Float_t Theta() const;
00057 Float_t Z0() const;
00058
00059 Float_t D0AtVertex() const;
00060 Float_t D0CovAtVertex() const;
00061 Float_t D0SigAtVertex() const;
00062 Float_t ThetaAtVertex() const;
00063 Float_t Z0AtVertex() const;
00064
00065 Float_t D0AtBeamSpot() const;
00066 Float_t ThetaAtBeamSpot() const;
00067 Float_t Z0AtBeamSpot() const;
00068
00069 void SetD0(Double_t d0);
00070 void SetTheta(Double_t theta);
00071 void SetZ0(Double_t z0);
00072
00073 void SetD0CovAtVertex(const float d0cov);
00074 void SetParamsAtVertex(const float d0, const float theta, const float phi, const float z0);
00075
00076 void SetParamsAtBeamSpot(const float d0, const float theta, const float phi, const float z0);
00077
00078 virtual std::string Type() const;
00079
00080 virtual std::ostream& PrintContent(std::ostream& os) const;
00081
00082 MTrack& operator=(const MTrack& p);
00083
00084 protected:
00086 virtual void Reset();
00087
00088 private:
00089 Bool_t m_hasMeasuredPerigee;
00090 Float_t m_d0;
00091 Float_t m_theta;
00092 Float_t m_z0;
00093
00094 Float_t m_d0_atprimvertex;
00095 Float_t m_d0cov_atprimvertex;
00096 Float_t m_theta_atprimvertex;
00097 Float_t m_phi_atprimvertex;
00098 Float_t m_z0_atprimvertex;
00099
00100 Float_t m_d0_atbeamspot;
00101 Float_t m_theta_atbeamspot;
00102 Float_t m_phi_atbeamspot;
00103 Float_t m_z0_atbeamspot;
00104
00105 ClassDef(MTrack, 5)
00106
00107 };
00108
00109 }
00110
00111 #endif