|
ATLAS Offline Software
|
Go to the documentation of this file.
11 #ifndef TRKEXSTRAIGHTLINEINTERSECTOR_STRAIGHTLINEINTERSECTOR_H
12 #define TRKEXSTRAIGHTLINEINTERSECTOR_STRAIGHTLINEINTERSECTOR_H
34 const double qOverP)
const override;
40 const double )
const override;
47 const double )
const override;
54 const double )
const override;
60 const double )
const override;
66 const double )
const override;
78 const double cylinderRadius)
const;
80 const double discZ)
const;
99 double sinThsqinv = 1. /
dir.perp2();
100 double stepLength = (-
pos.x() *
dir.x() -
pos.y() *
dir.y()) * sinThsqinv;
102 (cylinderRadius * cylinderRadius -
pos.perp2()) * sinThsqinv +
103 stepLength * stepLength;
105 stepLength += sqrt(deltaRSq);
113 return (discZ -
pos.z()) /
dir.z();
128 double cosAngle = lineDirection.dot(
dir);
129 return (linePosition -
pos).dot(
dir - lineDirection * cosAngle) /
130 (1. - cosAngle * cosAngle);
141 return planeNormal.dot(planePosition -
pos) / planeNormal.dot(
dir);
145 double stepLength)
const {
152 #endif // TRKEXSTRAIGHTLINEINTERSECTOR_STRAIGHTLINEINTERSECTOR_H
virtual std::optional< TrackSurfaceIntersection > approachPerigeeSurface(const PerigeeSurface &surface, const TrackSurfaceIntersection &trackTrackSurfaceIntersection, const double) const override
IIntersector interface method for specific Surface type : PerigeeSurface.
double distanceToDisc(const TrackSurfaceIntersection &isect, const double discZ) const
virtual StatusCode finalize() override
double pathlength() const
Method to retrieve the pathlength propagated till the Intersection.
virtual std::optional< TrackSurfaceIntersection > intersectPlaneSurface(const PlaneSurface &surface, const TrackSurfaceIntersection &trackTrackSurfaceIntersection, const double) const override
IIntersector interface method for specific Surface type : PlaneSurface.
virtual std::optional< TrackSurfaceIntersection > intersectSurface(const Surface &surface, const TrackSurfaceIntersection &trackTrackSurfaceIntersection, const double qOverP) const override
IIntersector interface method for general Surface type.
StraightLineIntersector(const std::string &type, const std::string &name, const IInterface *parent)
const Amg::Vector3D & position() const
Method to retrieve the position of the Intersection.
double distanceToCylinder(const TrackSurfaceIntersection &isect, const double cylinderRadius) const
::StatusCode StatusCode
StatusCode definition for legacy code.
virtual std::optional< TrackSurfaceIntersection > intersectCylinderSurface(const CylinderSurface &surface, const TrackSurfaceIntersection &trackTrackSurfaceIntersection, const double) const override
IIntersector interface method for specific Surface type : CylinderSurface.
virtual std::optional< TrackSurfaceIntersection > approachStraightLineSurface(const StraightLineSurface &surface, const TrackSurfaceIntersection &trackTrackSurfaceIntersection, const double) const override
IIntersector interface method for specific Surface type : StraightLineSurface.
virtual std::optional< TrackSurfaceIntersection > intersectDiscSurface(const DiscSurface &surface, const TrackSurfaceIntersection &trackTrackSurfaceIntersection, const double) const override
IIntersector interface method for specific Surface type : DiscSurface.
double distanceToLine(const TrackSurfaceIntersection &isect, const Amg::Vector3D &linePosition, const Amg::Vector3D &lineDirection) const
Ensure that the ATLAS eigen extensions are properly loaded.
Eigen::Matrix< double, 3, 1 > Vector3D
const Amg::Vector3D & direction() const
Method to retrieve the direction at the Intersection.
double distanceToPlane(const TrackSurfaceIntersection &isect, const Amg::Vector3D &planePosition, const Amg::Vector3D &planeNormal) const
virtual bool isValid(Amg::Vector3D, Amg::Vector3D) const override
IIntersector interface method for validity check over a particular extrapolation range.
void step(TrackSurfaceIntersection &isect, double stepLength) const
std::atomic< unsigned long long > m_countExtrapolations