11 theP0(startingDir.
unit()),
12 thePropDir(propDir) {}
14 std::pair<bool,double>
31 if ( !
eq.hasSolution )
return std::pair<bool,double>(
false,0.);
38 std::pair<bool,double>
40 const double s2)
const
46 return std::pair<bool,double>(
true,(fabs(s1)<fabs(s2)?s1:
s2));
52 return std::pair<bool,double>(
true,((s1*propSign>0)?s1:s2));
54 else if ( s1*propSign>0 ) {
56 return std::pair<bool,double>(
true,(fabs(s1)<fabs(s2)?s1:
s2));
59 return std::pair<bool,double>(
false,0.);
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
std::pair< bool, double > chooseSolution(const double s1, const double s2) const
Chooses the right solution w.r.t. the propagation direction.
const DirectionType theP0
Scalar radius() const
Radius of the cylinder.
Vector3DBase unit() const
const PropagationDirection thePropDir
StraightLineBarrelCylinderCrossing(const GlobalPoint &startingPos, const GlobalVector &startingDir, const PropagationDirection propDir)
std::pair< bool, double > pathLength(const Cylinder &cyl) const