15#include "TrkBase/TrkPoca.h"
16#include "CLHEP/Geometry/Point3D.h"
17#include "CLHEP/Matrix/Vector.h"
18#include "CLHEP/Vector/ThreeVector.h"
19#include "MdcGeom/Trajectory.h"
20#include "TrkBase/TrkErrCode.h"
26 if (
status().failure() )
return;
27 calcDist( traj1, traj2 );
33 if (
status().failure() )
return;
42 static Hep3Vector dir1, dir2;
47 Hep3Vector delta = ( (CLHEP::Hep3Vector)pos2 ) - ( (CLHEP::Hep3Vector)pos1 );
48 Hep3Vector between = dir1.cross( dir2 );
50 if (
status().success() != 3 )
52 between = between.unit();
53 _doca = delta.dot( between );
58 double sign = ( dir1.dot( dir2 ) > 0. ) ? -1. : 1.;
59 _doca = ( delta - delta.dot( dir1 ) * dir1 ).mag();
HepGeom::Point3D< double > HepPoint3D
virtual HepPoint3D position(double) const =0
virtual void getInfo(double fltLen, HepPoint3D &pos, Hep3Vector &direction) const =0
TrkPocaBase(double flt1, double flt2, double precision)
const TrkErrCode & status() const
void minimize(const Trajectory &traj1, double f1, const Trajectory &traj2, double f2)
TrkPoca(const Trajectory &traj1, double flt1, const Trajectory &traj2, double flt2, double precision=1.e-5)