10 : theX0(startingPos), theP0(startingDir.
unit()), thePropDir(propDir) {}
28 return std::pair<bool, double>(
false, 0.);
40 return std::pair<bool, double>(
true, (fabs(s1) < fabs(s2) ? s1 : s2));
45 return std::pair<bool, double>(
true, ((s1 * propSign > 0) ? s1 : s2));
46 }
else if (s1 * propSign > 0) {
48 return std::pair<bool, double>(
true, (fabs(s1) < fabs(s2) ? s1 : s2));
51 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.
const PropagationDirection thePropDir
StraightLineBarrelCylinderCrossing(const GlobalPoint &startingPos, const GlobalVector &startingDir, const PropagationDirection propDir)
std::pair< bool, double > pathLength(const Cylinder &cyl) const
Basic3DVector unit() const