00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef DCHSAGTRAJ_H
00029 #define DCHSAGTRAJ_H
00030
00031
00032
00033
00034 extern "C" {
00035 }
00036
00037
00038
00039
00040
00041
00042
00043
00044 #include "MdcGeom/TrkGeomTraj.h"
00045
00046
00047
00048
00049 #include "CLHEP/Geometry/Point3D.h"
00050 #ifndef ENABLE_BACKWARDS_COMPATIBILITY
00051 typedef HepGeom::Point3D<double> HepPoint3D;
00052 #endif
00053 #include "CLHEP/Vector/ThreeVector.h"
00054 using CLHEP::Hep3Vector;
00055
00056
00057
00058
00059 class Trajectory;
00060
00061
00062
00063
00064
00065 class MdcSagTraj : public TrkGeomTraj {
00066
00067 public:
00068
00069
00070 MdcSagTraj(const double sag, const HepPoint3D& point1, const HepPoint3D& point2);
00071 MdcSagTraj(const MdcSagTraj& traj);
00072
00073 MdcSagTraj* clone() const;
00074
00075 virtual ~MdcSagTraj( );
00076
00077
00078 MdcSagTraj& operator=(const MdcSagTraj&);
00079
00080 double sag( void ) const { return _sag; }
00081
00082
00083 HepPoint3D position( double ) const;
00084 Hep3Vector direction( double ) const;
00085 double curvature( double f = 0. ) const;
00086 Hep3Vector delDirect( double ) const;
00087 const Hep3Vector& rawDirection( void ) const { return _direction; }
00088 void getInfo(double fltLen, HepPoint3D& , Hep3Vector& direction) const;
00089 void getInfo(double fltLen, HepPoint3D& , Hep3Vector& direction,
00090 Hep3Vector& delDirect) const;
00091
00092 virtual double distTo1stError(double s, double tol, int pathDir) const;
00093 virtual double distTo2ndError(double s, double tol, int pathDir) const;
00094 double deltaY(double fltLen) const { return (_a*fltLen+_b)*fltLen; }
00095
00096 void accept(TrkGeomTrajVisitor& visitor) const;
00097
00098
00099
00100
00101 private:
00102
00103
00104 double _sag;
00105 double _a;
00106 double _b;
00107 double _length;
00108
00109
00110 HepPoint3D _start;
00111 HepPoint3D _stop;
00112 Hep3Vector _direction;
00113
00114
00115 Hep3Vector deviation(double) const;
00116
00117
00118
00119
00120
00121
00122 };
00123
00124 #endif // DCHSAGTRAJ_H