Class Acts::DiscSurface¶
-
class DiscSurface : public Acts::Surface¶
Class for a DiscSurface in the, it inherits from Surface.
The DiscSurface has a polar local coordinate system, with (r,phi) describing the coordinates.
The surface transform positions the disc such, that the origin is at r=0, independent of the provided DiscBounds. The z-axis The normal vector of the Disc, being perpendicular to the radial direction.
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 calcualted 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 &momentum, double tolerance = s_onSurfaceTolerance) const final¶
Global to local transformation.
Note
the momentum 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)
momentum – global 3D momentum representation (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 absoltue tolerance parameter
- Returns
value is a local polar
-
virtual SurfaceIntersection intersect(const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const BoundaryCheck &bcheck = false) 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
- 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 paramters 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 &momentum) const final¶
Local to global transformation For planar surfaces the momentum is ignroed in the local to global transformation.
- Parameters
gctx – The current geometry context object, e.g. alignment
lposition – local 2D position in specialized surface frame
momentum – global 3D momentum representation (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)¶
Assignement 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 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¶