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

Class for a disc surface (or a segment thereof). More...

#include <Acts/Surfaces/DiscSurface.hpp>

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

Public Member Functions

void assignSurfaceBounds (std::shared_ptr< const DiscBounds > newBounds)
 Overwrite the existing surface bounds with new ones.
const SurfaceBoundsbounds () const final
 This method returns the bounds by reference.
const std::shared_ptr< const DiscBounds > & boundsPtr () const
 This method returns the shared_ptr to the DiscBounds.
BoundToFreeMatrix boundToFreeJacobian (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final
 Calculate the jacobian from local to global which the surface knows best, hence the calculation is done here.
FreeToBoundMatrix freeToBoundJacobian (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final
 Calculate the jacobian from global to local which the surface knows best, hence the calculation is done here.
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.
Vector2 globalToLocalCartesian (const GeometryContext &gctx, const Vector3 &position, double tol=0.) const
 Special method for DiscSurface : global<->local from cartesian coordinates.
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.
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 localCartesianToGlobal (const GeometryContext &gctx, const Vector2 &lposition) const
 Special method for DiscSurface : local<->global transformation when provided cartesian coordinates.
Vector2 localCartesianToPolar (const Vector2 &lcart) const
 Special method for Disc surface : local<->local transformations polar <-> cartesian.
Vector2 localPolarToCartesian (const Vector2 &lpolar) const
 Special method for DiscSurface : local<->local transformations polar <-> cartesian.
Vector2 localPolarToLocalCartesian (const Vector2 &locpol) const
 Special method for DiscSurface : local<->local transformations polar <-> cartesian.
Vector3 localToGlobal (const GeometryContext &gctx, const Vector2 &lposition) const final
 Local to global transformation For planar surfaces the momentum direction is ignored in the local to global transformation.
Vector3 localToGlobal (const GeometryContext &gctx, const Vector2 &lposition, const Vector3 &direction) const final
 Local to global transformation.
std::pair< std::shared_ptr< DiscSurface >, bool > mergedWith (const DiscSurface &other, AxisDirection direction, bool externalRotation, const Logger &logger=getDummyLogger()) const
 Merge two disc surfaces into a single one.
std::string name () const override
 Return properly formatted class name for screen output.
Vector3 normal (const GeometryContext &gctx) const
 Get the normal vector, independent of the location.
Vector3 normal (const GeometryContext &gctx, const Vector2 &lposition) const final
 Normal vector return.
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
 Get the normal vector of this surface at a given global position.
DiscSurfaceoperator= (const DiscSurface &other)
 Assignment operator.
double pathCorrection (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final
 Path correction due to incident of the track.
Polyhedron polyhedronRepresentation (const GeometryContext &gctx, unsigned int quarterSegments) const override
 Return a Polyhedron for the surfaces.
Vector3 referencePosition (const GeometryContext &gctx, AxisDirection aDir) const final
 A reference position for a given axis direction.
double referencePositionValue (const GeometryContext &gctx, AxisDirection aDir) const final
 A reference position value for a given axis direction.
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.
virtual AlignmentToPathMatrix alignmentToPathDerivative (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.
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 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 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.
virtual Acts::RotationMatrix3 referenceFrame (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const
 Return method for the reference frame This is the frame in which the covariance matrix is defined (specialized by all surfaces).
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

Protected Member Functions

 DiscSurface (const DiscSurface &other)
 Copy Constructor.
 DiscSurface (const GeometryContext &gctx, const DiscSurface &other, const Transform3 &shift)
 Copy constructor - with shift.
 DiscSurface (const Transform3 &transform, double minhalfx, double maxhalfx, double minR, double maxR, double avephi=0., double stereo=0.)
 Constructor for Discs from Transform3, \( r_{min}, r_{max}, hx_{min}, hx_{max} \) This is n this case you have DiscTrapezoidBounds.
 DiscSurface (const Transform3 &transform, double rmin, double rmax, double hphisec=std::numbers::pi)
 Constructor for Discs from Transform3, \( r_{min}, r_{max} \).
 DiscSurface (const Transform3 &transform, std::shared_ptr< const DiscBounds > dbounds=nullptr)
 Constructor for Discs from Transform3 and shared DiscBounds.
 DiscSurface (std::shared_ptr< const DiscBounds > dbounds, const SurfacePlacementBase &placement)
 Constructor from SurfacePlacementBase : Element proxy.
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 DiscBoundsm_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 disc surface (or a segment thereof).

The DiscSurface is defined by the local polar coordinates \( (r,phi) \).

The surface transform positions the disc such that the origin is at \( r=0 \), independent of the provided DiscBounds. The normal vector of the disc (i.e., the local \(z\)-axis) is given by \( \vec e_{z} = \vec e_{r} \times\vec e_{phi} \).

The disc surface The only surface type for which the covariance matrix is NOT given in the reference frame. A conversion from polar to cartesian coordinates needs to happen to transfer the local coordinates onto the cartesian reference frame coordinates.

Constructor & Destructor Documentation

◆ DiscSurface() [1/6]

Acts::DiscSurface::DiscSurface ( const Transform3 & transform,
double rmin,
double rmax,
double hphisec = std::numbers::pi )
explicitprotected

Constructor for Discs from Transform3, \( r_{min}, r_{max} \).

Parameters
transformis transform that places the disc in the global 3D space
rminThe inner radius of the disc surface
rmaxThe outer radius of the disc surface
hphisecThe opening angle of the disc surface and is optional the default is a full disc

◆ DiscSurface() [2/6]

Acts::DiscSurface::DiscSurface ( const Transform3 & transform,
double minhalfx,
double maxhalfx,
double minR,
double maxR,
double avephi = 0.,
double stereo = 0. )
explicitprotected

Constructor for Discs from Transform3, \( r_{min}, r_{max}, hx_{min}, hx_{max} \) This is n this case you have DiscTrapezoidBounds.

Parameters
transformis transform that places the disc in the global 3D space
minhalfxThe half length in x at minimal r
maxhalfxThe half length in x at maximal r
minRThe outer radius of the disc surface
maxRThe inner radius of the disc surface
avephiThe position in phi (default is 0.)
stereoThe optional stereo angle

◆ DiscSurface() [3/6]

Acts::DiscSurface::DiscSurface ( const Transform3 & transform,
std::shared_ptr< const DiscBounds > dbounds = nullptr )
explicitprotected

Constructor for Discs from Transform3 and shared DiscBounds.

Parameters
transformThe transform that positions the disc in global 3D
dboundsThe disc bounds describing the surface coverage

◆ DiscSurface() [4/6]

Acts::DiscSurface::DiscSurface ( std::shared_ptr< const DiscBounds > dbounds,
const SurfacePlacementBase & placement )
explicitprotected

Constructor from SurfacePlacementBase : Element proxy.

Parameters
dboundsThe disc bounds describing the surface coverage
placementReference to the surface placement
Note
The Surface does not take any ownership over the SurfacePlacementBase it is expected that the user ensures the life-time of the SurfacePlacementBase and that the Surface is actually owned by the SurfacePlacementBase instance

◆ DiscSurface() [5/6]

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

Copy Constructor.

Parameters
otherThe source surface for the copy

◆ DiscSurface() [6/6]

Acts::DiscSurface::DiscSurface ( const GeometryContext & gctx,
const DiscSurface & 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

◆ assignSurfaceBounds()

void Acts::DiscSurface::assignSurfaceBounds ( std::shared_ptr< const DiscBounds > newBounds)

Overwrite the existing surface bounds with new ones.

Parameters
newBoundsPointer to the new bounds

◆ bounds()

const SurfaceBounds & Acts::DiscSurface::bounds ( ) const
finalvirtual

This method returns the bounds by reference.

Returns
Reference to the surface bounds

Implements Acts::Surface.

◆ boundsPtr()

const std::shared_ptr< const DiscBounds > & Acts::DiscSurface::boundsPtr ( ) const

This method returns the shared_ptr to the DiscBounds.

◆ boundToFreeJacobian()

BoundToFreeMatrix Acts::DiscSurface::boundToFreeJacobian ( const GeometryContext & gctx,
const Vector3 & position,
const Vector3 & direction ) const
finalvirtual

Calculate the jacobian from local to global which the surface knows best, hence the calculation is done here.

Parameters
gctxThe current geometry context object, e.g. alignment
positionglobal 3D position
directionglobal 3D momentum direction
Returns
Jacobian from local to global

Reimplemented from Acts::Surface.

◆ freeToBoundJacobian()

FreeToBoundMatrix Acts::DiscSurface::freeToBoundJacobian ( const GeometryContext & gctx,
const Vector3 & position,
const Vector3 & direction ) const
finalvirtual

Calculate the jacobian from global to local which the surface knows best, hence the calculation is done here.

Parameters
gctxThe current geometry context object, e.g. alignment
positionglobal 3D position
directionglobal 3D momentum direction
Returns
Jacobian from global to local

Reimplemented from Acts::Surface.

◆ 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::DiscSurface::globalToLocal ( const GeometryContext & gctx,
const Vector3 & position,
double tolerance = s_onSurfaceTolerance ) const
finalvirtual

Global to local transformation.

Note
the direction is ignored for Disc surfaces in this calculateion
Parameters
gctxThe current geometry context object, e.g. alignment
positionglobal 3D position - considered to be on surface but not inside bounds (check is done)
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.

◆ globalToLocalCartesian()

Vector2 Acts::DiscSurface::globalToLocalCartesian ( const GeometryContext & gctx,
const Vector3 & position,
double tol = 0. ) const

Special method for DiscSurface : global<->local from cartesian coordinates.

Parameters
gctxThe current geometry context object, e.g. alignment
positionis a global cartesian 3D position
tolThe absolute tolerance parameter
Returns
value is a local polar

◆ intersect()

MultiIntersection3D Acts::DiscSurface::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.

Parameters
gctxThe current geometry context object, e.g. alignment
positionThe global position as a starting point
directionThe global direction at the starting point
Note
expected to be normalized (no checking)
Parameters
boundaryToleranceThe boundary check prescription
tolerancethe tolerance used for the intersection

Mathematical motivation:

the equation of the plane is given by:
\( \vec n \cdot \vec x = \vec n \cdot \vec p,\)
where \( \vec n = (n_{x}, n_{y}, n_{z})\) denotes the normal vector of the plane, \( \vec p = (p_{x}, p_{y}, p_{z})\) one specific point on the plane and \( \vec x = (x,y,z) \) all possible points on the plane.
Given a line with:
\( \vec l(u) = \vec l_{1} + u \cdot \vec v \),
the solution for \( u \) can be written: \( u = \frac{\vec n (\vec p - \vec l_{1})}{\vec n \vec v}\)
If the denominator is 0 then the line lies:

  • either in the plane
  • perpendicular to the normal of the plane
Returns
The MultiIntersection3D object

Implements Acts::Surface.

◆ localCartesianToBoundLocalDerivative()

ActsMatrix< 2, 3 > Acts::DiscSurface::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.

◆ localCartesianToGlobal()

Vector3 Acts::DiscSurface::localCartesianToGlobal ( const GeometryContext & gctx,
const Vector2 & lposition ) const

Special method for DiscSurface : local<->global transformation when provided cartesian coordinates.

Parameters
gctxThe current geometry context object, e.g. alignment
lpositionis local 2D position in cartesian coordinates
Returns
value is a global cartesian 3D position

◆ localCartesianToPolar()

Vector2 Acts::DiscSurface::localCartesianToPolar ( const Vector2 & lcart) const

Special method for Disc surface : local<->local transformations polar <-> cartesian.

Parameters
lcartis local 2D position in cartesian coordinates
Returns
value is a local position in polar coordinates

◆ localPolarToCartesian()

Vector2 Acts::DiscSurface::localPolarToCartesian ( const Vector2 & lpolar) const

Special method for DiscSurface : local<->local transformations polar <-> cartesian.

Parameters
lpolaris a local position in polar coordinates
Returns
values is local 2D position in cartesian coordinates
Todo
check

◆ localPolarToLocalCartesian()

Vector2 Acts::DiscSurface::localPolarToLocalCartesian ( const Vector2 & locpol) const

Special method for DiscSurface : local<->local transformations polar <-> cartesian.

Parameters
locpolis a local position in polar coordinates
Returns
values is local 2D position in cartesian coordinates

◆ localToGlobal() [1/2]

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

Local to global transformation For planar surfaces the momentum direction is ignored in the local to global transformation.

Parameters
gctxThe current geometry context object, e.g. alignment
lpositionlocal 2D position in specialized surface frame
Returns
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.

◆ mergedWith()

std::pair< std::shared_ptr< DiscSurface >, bool > Acts::DiscSurface::mergedWith ( const DiscSurface & other,
AxisDirection direction,
bool externalRotation,
const Logger & logger = getDummyLogger() ) const

Merge two disc surfaces into a single one.

Note
The surfaces need to be compatible, i.e. have disc bounds that align
Parameters
otherThe other disc surface to merge with
directionThe binning direction: either AxisR or AxisPhi
externalRotationIf true, any phi rotation is done in the transform
loggerThe logger to use
Returns
The merged disc surface and a boolean indicating if surfaces are reversed
Note
The returned boolean is false if this is left or counter-clockwise of other, and true if not.

◆ name()

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

Return properly formatted class name for screen output.

Returns
String representation of the class name

Implements Acts::Surface.

◆ normal() [1/4]

Vector3 Acts::DiscSurface::normal ( const GeometryContext & gctx) const

Get the normal vector, independent of the location.

Parameters
gctxThe current geometry context object, e.g. alignment
Returns
The normal vector

◆ normal() [2/4]

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

Normal vector return.

Parameters
gctxThe current geometry context object, e.g. alignment
lpositionThe local position is ignored
Returns
a Vector3 by value

Implements Acts::RegularSurface.

◆ normal() [3/4]

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() [4/4]

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

Get the normal vector of this surface at a given global position.

Note
The position is required to be on-surface.
Parameters
gctxThe current geometry context object, e.g. alignment
positionis the global positiono (for DiscSurface this is ignored)
Returns
The normal vector

Implements Acts::RegularSurface.

◆ operator=()

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

Assignment operator.

Parameters
otherThe source sourface for the assignment
Returns
Reference to this DiscSurface after assignment

◆ pathCorrection()

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

Path correction due to incident of the track.

Parameters
gctxThe current geometry context object, e.g. alignment
positionThe global position as a starting point
directionThe global momentum direction at the starting point
Returns
The correction factor due to incident

Implements Acts::Surface.

◆ polyhedronRepresentation()

Polyhedron Acts::DiscSurface::polyhedronRepresentation ( const GeometryContext & gctx,
unsigned int quarterSegments ) const
overridevirtual

Return a Polyhedron for the surfaces.

Parameters
gctxThe current geometry context object, e.g. alignment
quarterSegmentsNumber of segments used to describe the quarter of a full circle
Returns
A list of vertices and a face/facett description of it

Implements Acts::Surface.

◆ referencePosition()

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

A reference position for a given axis direction.

Parameters
gctxThe current geometry context object, e.g. alignment
aDirThe axis direction for the reference position request
Returns
position that can beused for this binning

Implements Acts::GeometryObject.

◆ referencePositionValue()

double Acts::DiscSurface::referencePositionValue ( const GeometryContext & gctx,
AxisDirection aDir ) const
finalvirtual

A reference position value for a given axis direction.

Parameters
gctxThe current geometry context object, e.g. alignment
aDirthe value generated for the reference position
Note
This calls the parent method except for AxisR
Returns
float to be used for the binning schema

Reimplemented from Acts::GeometryObject.

◆ type()

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

Return the surface type.

Returns
Surface type identifier

Implements Acts::Surface.

Member Data Documentation

◆ m_bounds

std::shared_ptr<const DiscBounds> Acts::DiscSurface::m_bounds
protected

bounds (shared)