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.
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 ¶meters) 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.
-
DiscSurface() = delete¶