9#ifndef TRKSURFACES_CONESURFACE_H
10#define TRKSURFACES_CONESURFACE_H
25template<
class SURFACE,
class BOUNDS_CNV>
27template<
class SURFACE,
class BOUNDS_CNV>
33template<
int DIM,
class T,
class S>
78 bool symmetric =
false);
85 double halfPhi =
M_PI);
112 const std::optional<
AmgSymMatrix(5)> & cov = std::nullopt)
const override final;
120 const std::optional<
AmgSymMatrix(5)> & cov = std::nullopt)
const override final;
130 const std::optional<
AmgSymMatrix(5)> & cov = std::nullopt)
const override final;
139 const std::optional<
AmgSymMatrix(5)> & cov = std::nullopt)
const override final;
142 template<
int DIM,
class T>
149 const std::optional<
AmgSymMatrix(DIM)> & cov = std::nullopt)
const;
152 template<
int DIM,
class T>
157 const std::optional<
AmgSymMatrix(DIM)> & cov = std::nullopt)
const;
193 double tol2 = 0.)
const override;
211 Amg::Vector2D& loc)
const override final;
248 bool forceDir = false,
260 bool bound)
const override final;
270 template<class SURFACE, class BOUNDS_CNV>
272 template<class SURFACE, class BOUNDS_CNV>
283#include "TrkSurfaces/ConeSurface.icc"
double charge(const T &p)
#define AmgSymMatrix(dim)
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 conical Surface, the opening angle is stored in and always positively defined.
CxxUtils::CachedUniquePtr< Amg::Vector3D > m_rotSymmetryAxis
virtual const ConeBounds & bounds() const override final
This method returns the ConeBounds by reference (NoBounds is not possible for cone).
virtual Amg::Vector2D localParametersToPosition(const LocalParameters &locpars) const override final
Specialized for ConeSurface : LocalParameters to Vector2D.
virtual const Amg::Vector3D & rotSymmetryAxis() const
Return method for the rotational symmetry axis - the z-Axis of the HepTransform.
virtual const Amg::Vector3D & globalReferencePoint() const override final
Returns a global reference point: For the Cylinder this is Where denotes the averagePhi() of the cy...
virtual double pathCorrection(const Amg::Vector3D &, const Amg::Vector3D &) const override
the pathCorrection for derived classes with thickness
ConeSurface()
Default Constructor.
virtual bool insideBounds(const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override
This method calls the inside method of ConeBounds.
virtual Amg::Vector3D normal(const Amg::Vector2D &locpo) const override final
Return method for surface normal information at a given local point, overwrites the normal() from bas...
bool operator==(const ConeSurface &cf) const
virtual DistanceSolution straightLineDistanceEstimate(const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override final
fast straight line distance to Surface
virtual void localToGlobal(const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override final
Specialized for ConeSurface : LocalToGlobal method without dynamic memory allocation.
ConeSurface & operator=(ConeSurface &&sbo)=default
Move assignment.
virtual Surface::ChargedTrackParametersUniquePtr createUniqueTrackParameters(double l1, double l2, double phi, double theta, double qop, const std::optional< AmgSymMatrix(5)> &cov=std::nullopt) const override final
Use the Surface as a ParametersBase constructor, from local parameters - charged.
virtual NeutralTrackParametersUniquePtr createUniqueNeutralParameters(double l1, double l2, double phi, double theta, double qop, const 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 ConeBounds > m_bounds
The global reference point (== a point on thesurface).
std::unique_ptr< ParametersT< DIM, T, ConeSurface > > createUniqueParameters(const Amg::Vector3D &position, const Amg::Vector3D &momentum, double charge, const std::optional< AmgSymMatrix(DIM)> &cov=std::nullopt) const
Use the Surface as a ParametersBase constructor, from global parameters.
friend class ::BoundSurfaceCnv_p1
virtual std::string name() const override
Return properly formatted class name for screen output.
ConeSurface(ConeSurface &&annbo)=default
Move constructor.
std::unique_ptr< ParametersT< DIM, T, ConeSurface > > createUniqueParameters(double l1, double l2, double phi, double theta, double qop, const std::optional< AmgSymMatrix(DIM)> &cov=std::nullopt) const
Use the Surface as a ParametersBase constructor, from local parameters.
virtual bool operator==(const Surface &sf) const override
Equality operator.
ConeSurface & operator=(const ConeSurface &csf)
Assignment operator.
virtual bool insideBoundsCheck(const Amg::Vector2D &locpos, const BoundaryCheck &bchk) const override final
virtual ~ConeSurface()
Destructor.
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...
friend class ::BoundSurfaceCnv_p2
bounds (shared)
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
Specialized for ConeSurface : GlobalToLocal method without dynamic memory allocation - boolean checks...
virtual constexpr SurfaceType type() const override final
Return the surface type.
virtual ConeSurface * clone() const override
Implicit Constructor.
CxxUtils::CachedUniquePtr< Amg::Vector3D > m_referencePoint
The rotational symmetry axis.
virtual Intersection straightLineIntersection(const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool forceDir=false, BoundaryCheck bchk=false) const override final
fast straight line intersection schema - provides closest intersection and (signed) path length
static constexpr SurfaceType staticType
The surface type static constexpr.
Access to distance solutions.
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
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
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,.
const Amg::Vector3D & position() const
Method to retrieve the position of the Intersection.