9#ifndef TRKSURFACES_STRAIGHTLINESURFACE_H
10#define TRKSURFACES_STRAIGHTLINESURFACE_H
25template<
class SURFACE,
class BOUNDS_CNV>
27template<
class SURFACE,
class BOUNDS_CNV>
34template<
int DIM,
class T,
class S>
133 template<
int DIM, class T>
144 template<
int DIM, class T>
192 Amg::Vector2D& loc)
const override final;
250 bool Bound)
const override final;
254 const override final;
264 double tol2 = 0.)
const override final;
273 double tol2 = 0.)
const override final;
282 template<class SURFACE, class BOUNDS_CNV>
284 template<class SURFACE, class BOUNDS_CNV>
295#include "TrkSurfaces/StraightLineSurface.icc"
double charge(const T &p)
Cached value with atomic update.
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
Bounds for a cylindrical Surface.
Access to distance solutions.
Bounds object for a boundless surface (...)
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
static const NoBounds s_boundless
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
Specified for StraightLineSurface: GlobalToLocal method without dynamic memory allocation This method...
StraightLineSurface & operator=(StraightLineSurface &&slsf) noexcept=default
Move Assignment operator.
virtual constexpr SurfaceType type() const override final
Return the surface type.
virtual bool insideBounds(const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override final
This surface calls the iside method of the bouns.
virtual bool insideBoundsCheck(const Amg::Vector2D &locpos, const BoundaryCheck &bchk) const override final
virtual StraightLineSurface * clone() const override final
Implicit constructor.
std::unique_ptr< ParametersT< DIM, T, StraightLineSurface > > createUniqueParameters(double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(DIM)> cov=std::nullopt) const
Use the Surface as a ParametersBase constructor, from local parameters.
friend class ::BoundSurfaceCnv_p1
< data members
virtual Surface::ChargedTrackParametersUniquePtr createUniqueTrackParameters(double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
Use the Surface as a ParametersBase constructor, from local parameters - charged.
virtual ~StraightLineSurface()=default
Destructor.
virtual Intersection straightLineIntersection(const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool forceDir, Trk::BoundaryCheck bchk) const override final
fast straight line intersection schema - standard: provides closest intersection and (signed) path le...
static constexpr SurfaceType staticType
virtual DistanceSolution straightLineDistanceEstimate(const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override final
fast straight line distance evaluation to Surface
virtual bool operator==(const Surface &sf) const override
Equality operator.
CxxUtils::CachedValue< Amg::Vector3D > m_lineDirection
bounds (shared)
StraightLineSurface & operator=(const StraightLineSurface &slsf)
Assignment operator.
virtual NeutralTrackParametersUniquePtr createUniqueNeutralParameters(double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
Use the Surface as a ParametersBase constructor, from local parameters - neutral.
virtual std::string name() const override final
Return properly formatted class name for screen output.
StraightLineSurface(StraightLineSurface &&slsf) noexcept=default
Move constructor.
std::shared_ptr< const CylinderBounds > m_bounds
NoBounds as return object when no bounds are declared.
virtual double pathCorrection(const Amg::Vector3D &, const Amg::Vector3D &) const override final
the pathCorrection for derived classes with thickness
friend class ::BoundSurfaceCnv_p2
cache of the line direction (speeds up)
bool operator==(const StraightLineSurface &cf) const
virtual Amg::RotationMatrix3D measurementFrame(const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const override final
Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perig...
virtual void localToGlobal(const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override final
Specified for StraightLineSurface: LocalToGlobal method without dynamic memory allocation.
virtual const SurfaceBounds & bounds() const override final
This method returns the bounds of the Surface by reference.
StraightLineSurface()
Default Constructor - needed for persistency.
virtual bool isOnSurface(const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const override final
This method checks if the provided GlobalPosition is inside the assigned straw radius,...
const Amg::Vector3D & lineDirection() const
Special method for StraightLineSurface - provides the Line direction from cache: speedup.
Abstract base class for surface bounds to be specified.
std::unique_ptr< ParametersBase< 5, Trk::Charged > > ChargedTrackParametersUniquePtr
Unique ptr types.
Surface()
Default Constructor for inheriting classes.
std::unique_ptr< ParametersBase< 5, Trk::Neutral > > NeutralTrackParametersUniquePtr
This is the base class for all tracking detector elements with read-out relevant information.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Affine3d Transform3D
Ensure that the ATLAS eigen extensions are properly loaded.
SurfaceType
This enumerator simplifies the persistency & calculations,.
AmgSymMatrix(5) &GXFTrackState