9#ifndef TRKSURFACES_DISCSURFACE_H
10#define TRKSURFACES_DISCSURFACE_H
26template<
class SURFACE,
class BOUNDS_CNV>
28template<
class SURFACE,
class BOUNDS_CNV>
40template<
int DIM,
class T,
class S>
147 std::optional<
AmgSymMatrix(5)> cov = std::nullopt)
const override final;
155 std::optional<
AmgSymMatrix(5)> cov = std::nullopt)
const override final;
165 std::optional<
AmgSymMatrix(5)> cov = std::nullopt)
const override final;
173 std::optional<
AmgSymMatrix(5)> cov = std::nullopt)
const override final;
176 template<
int DIM,
class T>
183 std::optional<
AmgSymMatrix(DIM)> cov = std::nullopt)
const;
186 template<
int DIM,
class T>
191 std::optional<
AmgSymMatrix(DIM)> cov = std::nullopt)
const;
208 double tol2 = 0.)
const override;
219 double tol2 = 0.)
const override;
261 bool forceDir = false,
273 bool Bound)
const override;
279 template<class SURFACE, class BOUNDS_CNV>
281 template<class SURFACE, class BOUNDS_CNV>
292#include "TrkSurfaces/DiscSurface.icc"
double charge(const T &p)
#define AmgSymMatrix(dim)
DiscSurface()
Default Constructor.
Class that implements the asymmetric shape of the ITk strip endcap modules.
Bounds for a annulus-like, planar Surface.
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
Class to describe the bounds for a planar DiscSurface.
virtual const Amg::Vector3D & globalReferencePoint() const override final
Returns a global reference point: For the Disc this is Where denote the r(), averagePhi() of the Bo...
DiscSurface(DiscSurface &&psf) noexcept=default
Copy Constructor.
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 void localToGlobal(const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override
Specialized for DiscSurface: LocalToGlobal method without dynamic memory allocation.
static constexpr SurfaceType staticType
virtual bool isOnSurface(const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const override
This method returns true if the GlobalPosition is on the Surface for both, within or without check of...
virtual constexpr SurfaceType type() const override final
Return the surface type.
virtual Amg::Vector2D localParametersToPosition(const LocalParameters &locpars) const override final
Specialized for DiscSurface : LocalParameters to Vector2D.
virtual std::string name() const override
Return properly formatted class name for screen output.
std::unique_ptr< ParametersT< DIM, T, DiscSurface > > 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
DiscSurface()
Default Constructor.
CxxUtils::CachedUniquePtr< Amg::Vector3D > m_referencePoint
static member for boundless approach
DiscSurface & operator=(const DiscSurface &dsf)
Assignement 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.
std::shared_ptr< const SurfaceBounds > m_bounds
reference Point on the Surface
virtual ~DiscSurface()=default
Destructor.
virtual bool insideBoundsCheck(const Amg::Vector2D &locpos, const BoundaryCheck &bchk) const override final
virtual Intersection straightLineIntersection(const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool forceDir=false, Trk::BoundaryCheck bchk=false) const override final
fast straight line intersection schema - standard: provides closest intersection and (signed) path le...
virtual DiscSurface * clone() const override
Virtual constructor.
const SurfaceBounds & bounds() const override final
This method returns the bounds by reference.
bool operator==(const DiscSurface &cf) const
virtual DistanceSolution straightLineDistanceEstimate(const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override
fast straight line distance evaluation to Surface
virtual bool insideBounds(const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override
This method calls the inside method of the bounds.
friend class ::BoundSurfaceCnv_p2
bounds (shared)
std::unique_ptr< ParametersT< DIM, T, DiscSurface > > createUniqueParameters(const Amg::Vector3D &position, const Amg::Vector3D &momentum, double charge, std::optional< AmgSymMatrix(DIM)> cov=std::nullopt) const
Use the Surface as a ParametersBase constructor, from global parameters.
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override
Specialized for DiscSurface: GlobalToLocal method without dynamic memory allocation - boolean checks ...
static const NoBounds s_boundless
virtual bool operator==(const Surface &sf) const override
Equality operator.
DiscSurface & operator=(DiscSurface &&dsf) noexcept=default
Assignement operator.
Class to describe the bounds for a planar DiscSurface.
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.
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
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
SurfaceType
This enumerator simplifies the persistency & calculations,.