Class LineSurface¶
Defined in File LineSurface.hpp
Inheritance Relationships¶
Base Type¶
public Acts::Surface
(Class Surface)
Derived Types¶
public Acts::PerigeeSurface
(Class PerigeeSurface)public Acts::StrawSurface
(Class StrawSurface)
Class Documentation¶
-
class
Acts
::
LineSurface
: public Acts::Surface¶ Base class for a linear surfaces in the TrackingGeometry to describe dirft tube, straw like detectors or the Perigee It inherits from Surface.
- Note
It leaves the type() method virtual, so it can not be instantiated
Subclassed by Acts::PerigeeSurface, Acts::StrawSurface
Public Functions
-
LineSurface
() = delete¶
-
~LineSurface
() override = default¶
-
AlignmentRowVector
alignmentToPathDerivative
(const GeometryContext &gctx, const RotationMatrix3D &rotToLocalZAxis, const Vector3D &position, const Vector3D &direction) const final¶ Calculate the derivative of path length 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)
- Return
Derivative of path length w.r.t. the alignment parameters
- Parameters
gctx
: The current geometry context object, e.g. alignmentrotToLocalZAxis
: The derivative of local frame z axis vector w.r.t. its rotationposition
: The position of the paramters in globaldirection
: The direction of the track
-
Vector3D
binningPosition
(const GeometryContext &gctx, BinningValue bValue) const final¶ The binning position is the position calcualted for a certain binning type.
- Return
position that can beused for this binning
- Parameters
gctx
: The current geometry context object, e.g. alignmentbValue
: is the binning type to be used
-
const SurfaceBounds &
bounds
() const final¶ This method returns the bounds of the Surface by reference */.
-
BoundRowVector
derivativeFactors
(const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const RotationMatrix3D &rft, const BoundToFreeMatrix &jacobian) const final¶ Calculate the form factors for the derivatives the calculation is identical for all surfaces where the reference frame does not depend on the direction.
- Return
a five-dim vector
- Parameters
gctx
: The current geometry context object, e.g. alignmentposition
: is the position of the paramters in globaldirection
: is the direction of the trackrft
: is the transposed reference frame (avoids recalculation)jacobian
: is the transport jacobian
-
Result<Vector2D>
globalToLocal
(const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum) const final¶ Specified for LineSurface: global to local method without dynamic memory allocation.
This method is the true global->local transformation.
makes use of globalToLocal and indicates the sign of the Acts::eBoundLoc0 by the given momentum
The calculation of the sign of the radius (or \( d_0 \)) can be done as follows:
May
\( \vec d = \vec m - \vec c \) denote the difference between the center of the line and the global position of the measurement/predicted state, then \( \vec d \) lies within the so called measurement plane. The measurement plane is determined by the two orthogonal vectors \( \vec{measY}= \vec{Acts::eBoundLoc1} \) and \( \vec{measX} = \vec{measY} \times \frac{\vec{p}}{|\vec{p}|} \).The sign of the radius ( \( d_{0} \) ) is then defined by the projection of \( \vec{d} \) onto \( \vec{measX} \):\( sign = -sign(\vec{d} \cdot \vec{measX}) \)
- Return
a Result<Vector2D> which can be !ok() if the operation fails
- Parameters
gctx
: The current geometry context object, e.g. alignmentposition
: global 3D position - considered to be on surface but not inside bounds (check is done)momentum
: global 3D momentum representation (optionally ignored)
-
void
initJacobianToGlobal
(const GeometryContext &gctx, BoundToFreeMatrix &jacobian, const Vector3D &position, const Vector3D &direction, const BoundVector &pars) const final¶ Initialize the jacobian from local to global the surface knows best, hence the calculation is done here.
The jacobian is assumed to be initialised, so only the relevant entries are filled
- Parameters
gctx
: The current geometry context object, e.g. alignmentjacobian
: is the jacobian to be initializedposition
: is the global position of the parametersdirection
: is the direction at of the parameterspars
: is the paranmeters vector
-
SurfaceIntersection
intersect
(const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const BoundaryCheck &bcheck = false) const final¶ Straight line intersection schema.
mathematical motivation: Given two lines in parameteric form:
\( \vec l_{a}(\lambda) = \vec m_a + \lambda \cdot \vec e_{a} \)
\( \vec l_{b}(\mu) = \vec m_b + \mu \cdot \vec e_{b} \)
the vector between any two points on the two lines is given by:
\( \vec s(\lambda, \mu) = \vec l_{b} - l_{a} = \vec m_{ab} + \mu \cdot \vec e_{b} - \lambda \cdot \vec e_{a} \),
when
\( \vec m_{ab} = \vec m_{b} - \vec m_{a} \).\( \vec s(u, \mu_0) \) denotes the vector between the two closest points \( \vec l_{a,0} = l_{a}(u) \) and \( \vec l_{b,0} = l_{b}(\mu_0) \)and is perpendicular to both,
\( \vec e_{a} \) and \( \vec e_{b} \).
- Note
exptected to be normalized
- Parameters
gctx
: The current geometry context object, e.g. alignmentposition
: The global position as a starting pointdirection
: The global direction at the starting point
- Parameters
bcheck
: The boundary check directive for the estimate
This results in a system of two linear equations:
(i) \( 0 = \vec s(u, \mu_0) \cdot \vec e_a = \vec m_ab \cdot \vec e_a + \mu_0 \vec e_a \cdot \vec e_b - u \)
(ii) \( 0 = \vec s(u, \mu_0) \cdot \vec e_b = \vec m_ab \cdot \vec e_b + \mu_0 - u \vec e_b \cdot \vec e_a \)
Solving (i), (ii) for \( u \) and \( \mu_0 \) yields:
\( u = \frac{(\vec m_ab \cdot \vec e_a)-(\vec m_ab \cdot \vec e_b)(\vec e_a \cdot \vec e_b)}{1-(\vec e_a \cdot \vec e_b)^2} \)
\( \mu_0 = - \frac{(\vec m_ab \cdot \vec e_b)-(\vec m_ab \cdot \vec e_a)(\vec e_a \cdot \vec e_b)}{1-(\vec e_a \cdot \vec e_b)^2} \)
- Return
is the intersection object
-
LocalCartesianToBoundLocalMatrix
localCartesianToBoundLocalDerivative
(const GeometryContext &gctx, const Vector3D &position) const final¶ Calculate the derivative of bound track parameters local position w.r.t.
position in local 3D Cartesian coordinates
- Return
Derivative of bound local position w.r.t. position in local 3D cartesian coordinates
- Parameters
gctx
: The current geometry context object, e.g. alignmentposition
: The position of the paramters in global
-
Vector3D
localToGlobal
(const GeometryContext &gctx, const Vector2D &lposition, const Vector3D &momentum) const final¶ Local to global transformation for line surfaces the momentum is used in order to interpret the drift radius.
- Return
global position by value
- Parameters
gctx
: The current geometry context object, e.g. alignmentlposition
: is the local position to be transformedmomentum
: is the global momentum (used to sign the closest approach)
-
std::string
name
() const override¶ Return properly formatted class name for screen output */.
-
Vector3D
normal
(const GeometryContext &gctx, const Vector2D &lposition) const final¶ Normal vector return.
- Return
a Vector3D by value
- Parameters
gctx
: The current geometry context object, e.g. alignmentlposition
: is the local position is ignored
-
LineSurface &
operator=
(const LineSurface &other)¶ Assignment operator.
- Parameters
slsf
: is the source surface dor copying
-
double
pathCorrection
(const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum) const override¶ the pathCorrection for derived classes with thickness is by definition 1 for LineSurfaces
- Note
input parameters are ignored
- Note
there’s no material associated to the line surface
-
RotationMatrix3D
referenceFrame
(const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum) const final¶ Return the measurement frame - this is needed for alignment, in particular.
for StraightLine and Perigee Surface
the default implementation is the the RotationMatrix3D of the transform
- Return
is a rotation matrix that indicates the measurement frame
- Parameters
gctx
: The current geometry context object, e.g. alignmentposition
: is the global position where the measurement frame is constructedmomentum
: is the momentum used for the measurement frame construction
Protected Functions
-
LineSurface
(const Transform3D &transform, double radius, double halez)¶ Constructor from Transform3D and bounds.
- Parameters
transform
: The transform that positions the surface in the global frameradius
: The straw radiushalez
: The half length in z
Constructor from Transform3D and a shared bounds object.
- Parameters
transform
: The transform that positions the surface in the global framelbounds
: The bounds describing the straw dimensions, can be optionally nullptr
Constructor from DetectorElementBase : Element proxy.
- Parameters
lbounds
: The bounds describing the straw dimensionsdetelement
: for which this surface is (at least) one representation
-
LineSurface
(const LineSurface &other)¶ Copy constructor.
- Parameters
other
: The source surface for copying
-
LineSurface
(const GeometryContext &gctx, const LineSurface &other, const Transform3D &shift)¶ Copy constructor - with shift.
- Parameters
gctx
: The current geometry context object, e.g. alignmentother
: is the source cone surfaceshift
: is the additional transform applied after copying
Protected Attributes
-
std::shared_ptr<const LineBounds>
m_bounds
¶ bounds (shared)