11 theP0(startingDir.
unit()),
12 thePropDir(propDir) {}
14 std::pair<bool,double>
20 double R(cylinder.radius());
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.);
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
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