00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef TRKPOCABASE_H
00015 #define TRKPOCABASE_H
00016
00017 #include "TrkBase/TrkErrCode.h"
00018 #include "CLHEP/Geometry/Point3D.h"
00019 #ifndef ENABLE_BACKWARDS_COMPATIBILITY
00020 typedef HepGeom::Point3D<double> HepPoint3D;
00021 #endif
00022 class Trajectory;
00023
00024
00025 class TrkPocaBase {
00026
00027 protected:
00028 TrkPocaBase(double flt1, double flt2, double precision);
00029 TrkPocaBase(double flt1, double precision);
00030 virtual ~TrkPocaBase();
00031
00032 public:
00033 inline const TrkErrCode& status() const;
00034 inline double flt1() const;
00035 inline double flt2() const;
00036 inline double precision();
00037
00038 protected:
00039 double _precision;
00040 double _flt1;
00041 double _flt2;
00042 TrkErrCode _status;
00043
00044 void minimize(const Trajectory& traj1, double f1,
00045 const Trajectory& traj2, double f2);
00046 void minimize(const Trajectory& traj1, double f1,
00047 const HepPoint3D& pt);
00048
00049 void stepTowardPoca(const Trajectory& traj1, const Trajectory& traj2);
00050 void stepToPointPoca(const Trajectory& traj, const HepPoint3D& pt);
00051
00052 static double _maxDist;
00053 static int _maxTry;
00054 static double _extrapToler;
00055 };
00056
00057
00058 double
00059 TrkPocaBase::precision() {return _precision;}
00060
00061 const TrkErrCode&
00062 TrkPocaBase::status() const {return _status;}
00063
00064 double
00065 TrkPocaBase::flt1() const {return _flt1;}
00066
00067 double
00068 TrkPocaBase::flt2() const {return _flt2;}
00069
00070 #endif