Class Acts::DiscSurface

class DiscSurface : public Acts::Surface

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.

_build/doxygen-xml/DiscSurface.png

Subclassed by Acts::DiscLayer

Public Functions

DiscSurface() = delete
~DiscSurface() override = default
virtual Vector3 binningPosition(const GeometryContext &gctx, BinningValue bValue) const final

The binning position The position calculated for a certain binning type.

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • bValue – The binning type to be used

Returns

position that can beused for this binning

virtual double binningPositionValue(const GeometryContext &gctx, BinningValue bValue) const final

Implement the binningValue.

Note

This calls the parent method except for binR

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • bValue – is the dobule in which you want to bin

Returns

float to be used for the binning schema

virtual const SurfaceBounds &bounds() const final

This method returns the bounds by reference.

virtual BoundToFreeMatrix boundToFreeJacobian(const GeometryContext &gctx, const BoundVector &boundParams) const final

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

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • boundParams – is the bound parameters vector

Returns

Jacobian from local to global

virtual FreeToBoundMatrix freeToBoundJacobian(const GeometryContext &gctx, const FreeVector &parameters) const final

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

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • parameters – is the free parameters

Returns

Jacobian from global to local

virtual Result<Vector2> globalToLocal(const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, double tolerance = s_onSurfaceTolerance) const final

Global to local transformation.

Note

the direction is ignored for Disc surfaces in this calculateion

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • position – global 3D position - considered to be on surface but not inside bounds (check is done)

  • direction – global 3D momentum direction (optionally ignored)

  • tolerance – optional tolerance within which a point is considered valid on surface

Returns

a Result<Vector2> which can be !ok() if the operation fails

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

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

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • position – is a global cartesian 3D position

  • tol – The absolute tolerance parameter

Returns

value is a local polar

virtual SurfaceIntersection intersect(const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const BoundaryCheck &bcheck = false, ActsScalar tolerance = s_onSurfaceTolerance) const final

Straight line intersection schema.

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

Note

expected to be normalized (no checking)

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • position – The global position as a starting point

  • direction – The global direction at the starting point

  • bcheck – The boundary check prescription

  • tolerance – the tolerance used for the intersection

Returns

The SurfaceIntersection object

virtual ActsMatrix<2, 3> localCartesianToBoundLocalDerivative(const GeometryContext &gctx, const Vector3 &position) const final

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

position in local 3D Cartesian coordinates

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • position – The position of the parameters in global

Returns

Derivative of bound local position w.r.t. position in local 3D cartesian coordinates

Vector3 localCartesianToGlobal(const GeometryContext &gctx, const Vector2 &lposition) const

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

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • lposition – is local 2D position in cartesian coordinates

Returns

value is a global cartesian 3D position

Vector2 localCartesianToPolar(const Vector2 &lcart) const

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

Parameters

lcart – is local 2D position in cartesian coordinates

Returns

value is a local position in polar coordinates

Vector2 localPolarToCartesian(const Vector2 &lpolar) const

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

Parameters

lpolar – is a local position in polar coordinates

Returns

values is local 2D position in cartesian coordinates

Vector2 localPolarToLocalCartesian(const Vector2 &locpol) const

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

Parameters

locpol – is a local position in polar coordinates

Returns

values is local 2D position in cartesian coordinates

virtual Vector3 localToGlobal(const GeometryContext &gctx, const Vector2 &lposition, const Vector3 &direction) const final

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

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • lposition – local 2D position in specialized surface frame

  • direction – global 3D momentum direction (optionally ignored)

Returns

global position by value

virtual std::string name() const override

Return properly formatted class name for screen output.

virtual Vector3 normal(const GeometryContext &gctx, const Vector2 &lposition) const final

Normal vector return.

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • lposition – The local position is ignored

Returns

a Vector3 by value

DiscSurface &operator=(const DiscSurface &other)

Assignment operator.

Parameters

other – The source sourface for the assignment

virtual double pathCorrection(const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final

Path correction due to incident of the track.

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • position – The global position as a starting point

  • direction – The global momentum direction at the starting point

Returns

The correction factor due to incident

virtual Polyhedron polyhedronRepresentation(const GeometryContext &gctx, size_t lseg) const override

Return a Polyhedron for the surfaces.

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • lseg – Number of segments along curved lines, it represents the full 2*M_PI coverange, if lseg is set to 1 only the extrema are given

Returns

A list of vertices and a face/facett description of it

virtual SurfaceType type() const override

Return the surface type.