ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::ConeSurface Class Reference

Class for a conical surface in the Tracking geometry. More...

#include <Acts/Surfaces/ConeSurface.hpp>

Inheritance diagram for Acts::ConeSurface:
[legend]
Collaboration diagram for Acts::ConeSurface:
[legend]

Public Member Functions

AlignmentToPathMatrix alignmentToPathDerivative (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final
 Calculate the derivative of path length at the geometry constraint or point-of-closest-approach w.r.t.
void assignSurfaceBounds (std::shared_ptr< const ConeBounds > newBounds)
 Overwrite the existing surface bounds with new ones.
const ConeBoundsbounds () const final
 This method returns the ConeBounds by reference.
const std::shared_ptr< const ConeBounds > & boundsPtr () const
 This method returns the shared_ptr to the ConeBounds.
Result< Vector2globalToLocal (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, double tolerance=s_onSurfaceTolerance) const final
 Convert a global position to a local one this is the most generic interface, which is implemented by all surfaces.
Result< Vector2globalToLocal (const GeometryContext &gctx, const Vector3 &position, double tolerance=s_onSurfaceTolerance) const final
 Global to local transformation.
MultiIntersection3D intersect (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const BoundaryTolerance &boundaryTolerance=BoundaryTolerance::Infinite(), double tolerance=s_onSurfaceTolerance) const final
 Straight line intersection schema from position/direction.
ActsMatrix< 2, 3 > localCartesianToBoundLocalDerivative (const GeometryContext &gctx, const Vector3 &position) const final
 Calculate the derivative of bound track parameters local position w.r.t.
Vector3 localToGlobal (const GeometryContext &gctx, const Vector2 &lposition) const final
 Local to global transformation.
Vector3 localToGlobal (const GeometryContext &gctx, const Vector2 &lposition, const Vector3 &direction) const final
 Local to global transformation.
std::string name () const override
 Return properly formatted class name for screen output.
Vector3 normal (const GeometryContext &gctx, const Vector2 &lposition) const final
 Return method for surface normal information.
Vector3 normal (const GeometryContext &gctx, const Vector3 &pos, const Vector3 &direction) const final
 Calculate the normal vector of the surface This overload is fully generic, fulfills the Surface interface and accepts a global position and a direction.
Vector3 normal (const GeometryContext &gctx, const Vector3 &position) const final
 Return method for surface normal information.
ConeSurfaceoperator= (const ConeSurface &other)
 Assignment operator.
double pathCorrection (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final
 The pathCorrection for derived classes with thickness.
Polyhedron polyhedronRepresentation (const GeometryContext &gctx, unsigned int quarterSegments=2u) const override
 Return a Polyhedron for the surfaces.
RotationMatrix3 referenceFrame (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final
 Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface.
Vector3 referencePosition (const GeometryContext &gctx, AxisDirection aDir) const final
 The binning position method - is overloaded for r-type binning.
virtual Vector3 rotSymmetryAxis (const GeometryContext &gctx) const
SurfaceType type () const override
 Return the surface type.
Public Member Functions inherited from Acts::RegularSurface
Result< Vector2globalToLocal (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, double tolerance=s_onSurfaceTolerance) const final
 Convert a global position to a local one this is the most generic interface, which is implemented by all surfaces.
bool isOnSurface (const GeometryContext &gctx, const Vector3 &position, const BoundaryTolerance &boundaryTolerance=BoundaryTolerance::None(), double tolerance=s_onSurfaceTolerance) const
 The geometric onSurface method.
bool isOnSurface (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const BoundaryTolerance &boundaryTolerance=BoundaryTolerance::None(), double tolerance=s_onSurfaceTolerance) const
 The geometric onSurface method.
Vector3 localToGlobal (const GeometryContext &gctx, const Vector2 &lposition, const Vector3 &direction) const final
 Local to global transformation.
Vector3 normal (const GeometryContext &gctx, const Vector3 &pos, const Vector3 &direction) const final
 Calculate the normal vector of the surface This overload is fully generic, fulfills the Surface interface and accepts a global position and a direction.
 Surface (const GeometryContext &gctx, const Surface &other, const Transform3 &shift) noexcept
 Copy constructor with optional shift.
 Surface (const Surface &other) noexcept
 Copy constructor.
 Surface (const SurfacePlacementBase &placement) noexcept
 Constructor from SurfacePlacement: Element proxy.
 Surface (const Transform3 &transform=Transform3::Identity())
 Constructor with Transform3 as a shared object.
Public Member Functions inherited from Acts::Surface
 ~Surface () noexcept override
AlignmentToBoundMatrix alignmentToBoundDerivative (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const FreeVector &pathDerivative) const
 The derivative of bound track parameters w.r.t.
void assignDetectorElement (const SurfacePlacementBase &detelement)
 Assign a detector element.
void assignIsSensitive (bool isSensitive)
 Assign whether the surface is sensitive.
void assignSurfaceMaterial (std::shared_ptr< const ISurfaceMaterial > material)
 Assign the surface material description.
void assignSurfacePlacement (const SurfacePlacementBase &placement)
 Assign a placement object which may dynamically align the surface in space.
void assignThickness (double thick)
 Assign the thickness of the surface in the orthogonal dimension.
const DetectorElementBaseassociatedDetectorElement () const
 Return method for the associated Detector Element.
const LayerassociatedLayer () const
 Return method for the associated Layer in which the surface is embedded.
void associateLayer (const Layer &lay)
 Set Associated Layer Many surfaces can be associated to a Layer, but it might not be known yet during construction of the layer, this can be set afterwards.
virtual BoundToFreeMatrix boundToFreeJacobian (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const
 Calculate the jacobian from local to global which the surface knows best, hence the calculation is done here.
virtual Vector3 center (const GeometryContext &gctx) const
 Return method for the surface center.
virtual Vector2 closestPointOnBoundary (const Vector2 &lposition, const SquareMatrix2 &metric) const
 Calculates the closest point on the boundary of the surface to a given point in local coordinates.
virtual double distanceToBoundary (const Vector2 &lposition) const
 Calculates the distance to the boundary of the surface from a given point in local coordinates.
virtual FreeToBoundMatrix freeToBoundJacobian (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const
 Calculate the jacobian from global to local which the surface knows best, hence the calculation is done here.
virtual FreeToPathMatrix freeToPathDerivative (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const
 Calculate the derivative of path length at the geometry constraint or point-of-closest-approach w.r.t.
std::shared_ptr< SurfacegetSharedPtr ()
 Retrieve a std::shared_ptr for this surface (non-const version).
std::shared_ptr< const SurfacegetSharedPtr () const
 Retrieve a std::shared_ptr for this surface (const version).
virtual bool insideBounds (const Vector2 &lposition, const BoundaryTolerance &boundaryTolerance=BoundaryTolerance::None()) const
 The insideBounds method for local positions.
bool isAlignable () const
 Returns whether the Surface is alignable.
bool isOnSurface (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const BoundaryTolerance &boundaryTolerance=BoundaryTolerance::None(), double tolerance=s_onSurfaceTolerance) const
 The geometric onSurface method.
bool isSensitive () const
 Returns whether the Surface is sensitive.
const Transform3localToGlobalTransform (const GeometryContext &gctx) const
 Return method for the surface Transform3 by reference In case a detector element is associated the surface transform is just forwarded to the detector element in order to keep the (mis-)alignment cache cetrally handled.
Surfaceoperator= (const Surface &other)
 Assignment operator.
bool operator== (const Surface &other) const
 Comparison (equality) operator The strategy for comparison is (a) first pointer comparison (b) then type comparison (c) then bounds comparison (d) then transform comparison.
const ISurfaceMaterialsurfaceMaterial () const
 Return method for the associated Material to this surface.
const std::shared_ptr< const ISurfaceMaterial > & surfaceMaterialSharedPtr () const
 Return method for the shared pointer to the associated Material.
const SurfacePlacementBasesurfacePlacement () const
 Return the associated surface placement if there is any.
double thickness () const
 Return the thickness of the surface in the normal direction.
GeometryContextOstreamWrapper< SurfacetoStream (const GeometryContext &gctx) const
 Helper method for printing: the returned object captures the surface and the geometry context and will print the surface.
std::string toString (const GeometryContext &gctx) const
 Output into a std::string.
const Transform3transform (const GeometryContext &gctx) const
 Return method for the surface Transform3 by reference In case a detector element is associated the surface transform is just forwarded to the detector element in order to keep the (mis-)alignment cache cetrally handled.
void visualize (IVisualization3D &helper, const GeometryContext &gctx, const ViewConfig &viewConfig=s_viewSurface) const
 Visualize the surface for debugging and inspection.
Public Member Functions inherited from Acts::GeometryObject
 GeometryObject ()=default
 Defaulted constructor.
 GeometryObject (const GeometryIdentifier &geometryId)
 Constructor from a value.
 GeometryObject (const GeometryObject &)=default
 Defaulted copy constructor.
virtual ~GeometryObject () noexcept=default
void assignGeometryId (const GeometryIdentifier &geometryId)
 Set the value.
GeometryIdentifier geometryId () const
virtual double referencePositionValue (const GeometryContext &gctx, AxisDirection aDir) const
 Implement the binningValue.

Protected Member Functions

 ConeSurface (const ConeSurface &other)
 Copy constructor.
 ConeSurface (const GeometryContext &gctx, const ConeSurface &other, const Transform3 &shift)
 Copy constructor - with shift.
 ConeSurface (const Transform3 &transform, double alpha, bool symmetric=false)
 Constructor form HepTransform and an opening angle.
 ConeSurface (const Transform3 &transform, double alpha, double zmin, double zmax, double halfPhi=std::numbers::pi)
 Constructor form HepTransform and an opening angle.
 ConeSurface (const Transform3 &transform, std::shared_ptr< const ConeBounds > cbounds)
 Constructor from HepTransform and ConeBounds.
Protected Member Functions inherited from Acts::Surface
 Surface (const GeometryContext &gctx, const Surface &other, const Transform3 &shift) noexcept
 Copy constructor with optional shift.
 Surface (const Surface &other) noexcept
 Copy constructor.
 Surface (const SurfacePlacementBase &placement) noexcept
 Constructor from SurfacePlacement: Element proxy.
 Surface (const Transform3 &transform=Transform3::Identity())
 Constructor with Transform3 as a shared object.
virtual std::ostream & toStreamImpl (const GeometryContext &gctx, std::ostream &sl) const
 Output Method for std::ostream, to be overloaded by child classes.

Protected Attributes

std::shared_ptr< const ConeBoundsm_bounds
 bounds (shared)
Protected Attributes inherited from Acts::Surface
std::unique_ptr< const Transform3m_transform {}
 Transform3 definition that positions (translation, rotation) the surface in global space.
Protected Attributes inherited from Acts::GeometryObject
GeometryIdentifier m_geometryId
 Unique geometry identifier for this object.

Additional Inherited Members

Public Types inherited from Acts::Surface
enum  SurfaceType {
  Cone = 0 , Cylinder = 1 , Disc = 2 , Perigee = 3 ,
  Plane = 4 , Straw = 5 , Curvilinear = 6 , Other = 7
}
 This enumerator simplifies the persistency & calculations, by saving a dynamic_cast, e.g. More...
Static Public Member Functions inherited from Acts::Surface
template<class T, typename... Args>
static std::shared_ptr< T > makeShared (Args &&... args)
 Factory for producing memory managed instances of Surface.
Static Public Attributes inherited from Acts::Surface
static constexpr std::array< std::string_view, Surface::SurfaceType::Other+1 > s_surfaceTypeNames
 Helper strings for screen output.

Detailed Description

Class for a conical surface in the Tracking geometry.

It inherits from Surface.

The ConeSurface is special since no corresponding Track parameters exist since they're numerical instable at the tip of the cone. Propagations to a cone surface will be returned in curvilinear coordinates.

Constructor & Destructor Documentation

◆ ConeSurface() [1/5]

Acts::ConeSurface::ConeSurface ( const Transform3 & transform,
double alpha,
bool symmetric = false )
protected

Constructor form HepTransform and an opening angle.

Parameters
transformis the transform to place to cone in a 3D frame
alphais the opening angle of the cone
symmetricindicates if the cones are built to +/1 z

◆ ConeSurface() [2/5]

Acts::ConeSurface::ConeSurface ( const Transform3 & transform,
double alpha,
double zmin,
double zmax,
double halfPhi = std::numbers::pi )
protected

Constructor form HepTransform and an opening angle.

Parameters
transformis the transform that places the cone in the global frame
alphais the opening angle of the cone
zminis the z range over which the cone spans
zmaxis the z range over which the cone spans
halfPhiis the opening angle for cone ssectors

◆ ConeSurface() [3/5]

Acts::ConeSurface::ConeSurface ( const Transform3 & transform,
std::shared_ptr< const ConeBounds > cbounds )
protected

Constructor from HepTransform and ConeBounds.

Parameters
transformis the transform that places the cone in the global frame
cboundsis the boundary class, the bounds must exit

◆ ConeSurface() [4/5]

Acts::ConeSurface::ConeSurface ( const ConeSurface & other)
protected

Copy constructor.

Parameters
otheris the source cone surface

◆ ConeSurface() [5/5]

Acts::ConeSurface::ConeSurface ( const GeometryContext & gctx,
const ConeSurface & other,
const Transform3 & shift )
protected

Copy constructor - with shift.

Parameters
gctxThe current geometry context object, e.g. alignment
otheris the source cone surface
shiftis the additional transform applied after copying

Member Function Documentation

◆ alignmentToPathDerivative()

AlignmentToPathMatrix Acts::ConeSurface::alignmentToPathDerivative ( const GeometryContext & gctx,
const Vector3 & position,
const Vector3 & direction ) const
finalvirtual

Calculate the derivative of path length at the geometry constraint or point-of-closest-approach w.r.t.

alignment parameters of the surface (i.e. local frame origin in global 3D Cartesian coordinates and its rotation represented with extrinsic Euler angles)

Parameters
gctxThe current geometry context object, e.g. alignment
positionglobal 3D position
directionglobal 3D momentum direction
Returns
Derivative of path length w.r.t. the alignment parameters

Reimplemented from Acts::Surface.

◆ assignSurfaceBounds()

void Acts::ConeSurface::assignSurfaceBounds ( std::shared_ptr< const ConeBounds > newBounds)

Overwrite the existing surface bounds with new ones.

Parameters
newBoundsPointer to the new bounds

◆ bounds()

const ConeBounds & Acts::ConeSurface::bounds ( ) const
finalvirtual

This method returns the ConeBounds by reference.

Returns
Reference to the cone bounds

Implements Acts::Surface.

◆ boundsPtr()

const std::shared_ptr< const ConeBounds > & Acts::ConeSurface::boundsPtr ( ) const

This method returns the shared_ptr to the ConeBounds.

◆ globalToLocal() [1/2]

Result< Vector2 > Acts::RegularSurface::globalToLocal ( const GeometryContext & gctx,
const Vector3 & position,
const Vector3 & direction,
double tolerance = s_onSurfaceTolerance ) const
finalvirtual

Convert a global position to a local one this is the most generic interface, which is implemented by all surfaces.

Note
The position is required to be on-surface, which is indicated by the Result return value.
Parameters
gctxThe current geometry context object, e.g. alignment
positionis the global position to be converted
directionis the direction of the local position (ignored for RegularSurface)
toleranceis the tolerance for the on-surface check
Returns
Result type containing local position by value

Implements Acts::Surface.

◆ globalToLocal() [2/2]

Result< Vector2 > Acts::ConeSurface::globalToLocal ( const GeometryContext & gctx,
const Vector3 & position,
double tolerance = s_onSurfaceTolerance ) const
finalvirtual

Global to local transformation.

Parameters
gctxThe current geometry context object, e.g. alignment
positionis the global position to be transformed
toleranceoptional tolerance within which a point is considered valid on surface
Returns
a Result<Vector2> which can be !ok() if the operation fails

Implements Acts::RegularSurface.

◆ intersect()

MultiIntersection3D Acts::ConeSurface::intersect ( const GeometryContext & gctx,
const Vector3 & position,
const Vector3 & direction,
const BoundaryTolerance & boundaryTolerance = BoundaryTolerance::Infinite(),
double tolerance = s_onSurfaceTolerance ) const
finalvirtual

Straight line intersection schema from position/direction.

Parameters
gctxThe current geometry context object, e.g. alignment
positionThe position to start from
directionThe direction at start
boundaryTolerancethe Boundary Check
tolerancethe tolerance used for the intersection

If possible returns both solutions for the cylinder

Returns
MultiIntersection3D object (contains intersection & surface)

Implements Acts::Surface.

◆ localCartesianToBoundLocalDerivative()

ActsMatrix< 2, 3 > Acts::ConeSurface::localCartesianToBoundLocalDerivative ( const GeometryContext & gctx,
const Vector3 & position ) const
finalvirtual

Calculate the derivative of bound track parameters local position w.r.t.

position in local 3D Cartesian coordinates

Parameters
gctxThe current geometry context object, e.g. alignment
positionThe position of the parameters in global
Returns
Derivative of bound local position w.r.t. position in local 3D cartesian coordinates

Implements Acts::Surface.

◆ localToGlobal() [1/2]

Vector3 Acts::ConeSurface::localToGlobal ( const GeometryContext & gctx,
const Vector2 & lposition ) const
finalvirtual

Local to global transformation.

Parameters
gctxThe current geometry context object, e.g. alignment
lpositionis the local position to be transformed
Returns
The global position by value

Implements Acts::RegularSurface.

◆ localToGlobal() [2/2]

Vector3 Acts::RegularSurface::localToGlobal ( const GeometryContext & gctx,
const Vector2 & lposition,
const Vector3 & direction ) const
finalvirtual

Local to global transformation.

This is the most generic interface, which is implemented by all surfaces.

Parameters
gctxThe current geometry context object, e.g. alignment
lpositionlocal 2D position in specialized surface frame
directionglobal 3D momentum direction (ignored for RegularSurface)
Returns
The global position by value

Implements Acts::Surface.

◆ name()

std::string Acts::ConeSurface::name ( ) const
overridevirtual

Return properly formatted class name for screen output.

Returns
String representation of the class name

Implements Acts::Surface.

◆ normal() [1/3]

Vector3 Acts::ConeSurface::normal ( const GeometryContext & gctx,
const Vector2 & lposition ) const
finalvirtual

Return method for surface normal information.

Parameters
gctxThe current geometry context object, e.g. alignment
lpositionis the local position at normal vector request
Returns
Vector3 normal vector in global frame

Implements Acts::RegularSurface.

◆ normal() [2/3]

Vector3 Acts::RegularSurface::normal ( const GeometryContext & gctx,
const Vector3 & pos,
const Vector3 & direction ) const
finalvirtual

Calculate the normal vector of the surface This overload is fully generic, fulfills the Surface interface and accepts a global position and a direction.

For RegularSurface this is equivalent to the normal overload, ignoring the direction

Parameters
gctxThe current geometry context object, e.g. alignment
posis the global position where the normal vector is constructed
directionis the direction of the normal vector (ignored for RegularSurface)
Returns
Normal vector at the given position

Implements Acts::Surface.

◆ normal() [3/3]

Vector3 Acts::ConeSurface::normal ( const GeometryContext & gctx,
const Vector3 & position ) const
finalvirtual

Return method for surface normal information.

Parameters
gctxThe current geometry context object, e.g. alignment
positionis the global position as normal vector base
Returns
Vector3 normal vector in global frame

Implements Acts::RegularSurface.

◆ operator=()

ConeSurface & Acts::ConeSurface::operator= ( const ConeSurface & other)

Assignment operator.

Parameters
otheris the source surface for the assignment
Returns
Reference to this ConeSurface after assignment

◆ pathCorrection()

double Acts::ConeSurface::pathCorrection ( const GeometryContext & gctx,
const Vector3 & position,
const Vector3 & direction ) const
finalvirtual

The pathCorrection for derived classes with thickness.

Parameters
gctxThe current geometry context object, e.g. alignment
positionis the global potion at the correction point
directionis the momentum direction at the correction point
Returns
is the path correction due to incident angle

Implements Acts::Surface.

◆ polyhedronRepresentation()

Polyhedron Acts::ConeSurface::polyhedronRepresentation ( const GeometryContext & gctx,
unsigned int quarterSegments = 2u ) const
overridevirtual

Return a Polyhedron for the surfaces.

Parameters
gctxThe current geometry context object, e.g. alignment
quarterSegmentsNumber of segments used to approximate a quarter
Note
The phi extrema points at (-pi, -1/2 pi, 0, 1/2 pi) that fall within the surface will be inserted to guarantee an appropriate extent measurement in x and y
Returns
A list of vertices and a face/facett description of it

Implements Acts::Surface.

◆ referenceFrame()

RotationMatrix3 Acts::ConeSurface::referenceFrame ( const GeometryContext & gctx,
const Vector3 & position,
const Vector3 & direction ) const
finalvirtual

Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface.

  • the default implementation is the RotationMatrix3 of the transform
Parameters
gctxThe current geometry context object, e.g. alignment
positionis the global position where the measurement frame is constructed
directionis the momentum direction used for the measurement frame construction
Returns
matrix that indicates the measurement frame

Reimplemented from Acts::Surface.

◆ referencePosition()

Vector3 Acts::ConeSurface::referencePosition ( const GeometryContext & gctx,
AxisDirection aDir ) const
finalvirtual

The binning position method - is overloaded for r-type binning.

Parameters
gctxThe current geometry context object, e.g. alignment
aDirdefines the direction of binning applied in the global frame
Returns
The return type is a vector for positioning in the global frame

Implements Acts::GeometryObject.

◆ rotSymmetryAxis()

virtual Vector3 Acts::ConeSurface::rotSymmetryAxis ( const GeometryContext & gctx) const
virtual
Parameters
gctxThe current geometry context object, e.g. alignment
Returns
The local z axis vector

◆ type()

SurfaceType Acts::ConeSurface::type ( ) const
overridevirtual

Return the surface type.

Returns
Surface type identifier

Implements Acts::Surface.

Member Data Documentation

◆ m_bounds

std::shared_ptr<const ConeBounds> Acts::ConeSurface::m_bounds
protected

bounds (shared)