00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef TRKPOCAXY_H
00022 #define TRKPOCAXY_H
00023
00024 #include "TrkBase/TrkPocaBase.h"
00025 #include "TrkBase/TrkDifTraj.h"
00026
00027 class TrkPocaXY : public TrkPocaBase {
00028 public:
00029
00030
00031
00032
00033
00034
00035
00036 TrkPocaXY(const Trajectory& traj, double flt,
00037 const HepPoint3D& pt, double precision=1.0e-4);
00038
00039 TrkPocaXY(const Trajectory& traj1, double flt1,
00040 const Trajectory& traj2, double flt2,
00041 double precision=1.0e-4);
00042
00043 ~TrkPocaXY() {}
00044
00045 inline double docaXY() const;
00046
00047
00048
00049 double fltl1() const{ return flt1(); }
00050 double fltl2() const{ return flt2(); }
00051
00052 private:
00053
00054 double _docaxy;
00055
00056 void interLineCircle
00057 (const double& m, const double& q,
00058 const double& xc, const double& yc, const double& radius,
00059 double& xint1, double& yint1, double& xint2, double& yint2);
00060
00061 void interTwoLines
00062 (const double& m1, const double& q1, const double& m2, const double& q2,
00063 double& xint, double& yint);
00064
00065 void interTwoCircles
00066 (const double& xc1, const double& yc1, const double& r1,
00067 const double& xc2, const double& yc2, const double& r2,
00068 double& xint1, double& yint1, double& xint2, double& yint2);
00069
00070 };
00071
00072
00073 double TrkPocaXY::docaXY() const {return _docaxy;}
00074
00075 #endif
00076