Class DiscSurface¶
Defined in File DiscSurface.hpp
Inheritance Relationships¶
Base Type¶
public Acts::Surface
(Class Surface)
Derived Type¶
public Acts::DiscLayer
(Class DiscLayer)
Class Documentation¶
-
class
Acts
::
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¶
-
Vector3
binningPosition
(const GeometryContext &gctx, BinningValue bValue) const final¶ The binning position 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
: The binning type to be used
-
double
binningPositionValue
(const GeometryContext &gctx, BinningValue bValue) const final¶ Implement the binningValue.
- Note
This calls the parent method except for binR
- Return
float to be used for the binning schema
- Parameters
gctx
: The current geometry context object, e.g. alignmentbValue
: is the dobule in which you want to bin
-
const SurfaceBounds &
bounds
() const final¶ This method returns the bounds by reference.
-
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
- Return
a Result<Vector2> 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)tolerance
: optional tolerance within which a point is considered valid on surface
-
Vector2
globalToLocalCartesian
(const GeometryContext &gctx, const Vector3 &position, double tol = 0.) const¶ Special method for DiscSurface : global<->local from cartesian coordinates.
- Return
value is a local polar
- Parameters
gctx
: The current geometry context object, e.g. alignmentposition
: is a global cartesian 3D positiontol
: The absoltue tolerance parameter
-
SurfaceIntersection
intersect
(const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const BoundaryCheck &bcheck = false) const final¶ Straight line intersection schema.
mathematical motivation:
- Note
expected to be normalized (no checking)
- 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 prescription
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
- Return
The SurfaceIntersection object
-
FreeToBoundMatrix
jacobianGlobalToLocal
(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.
- Return
Jacobian from global to local
- Parameters
gctx
: The current geometry context object, e.g. alignmentparameters
: is the free parameters
-
BoundToFreeMatrix
jacobianLocalToGlobal
(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.
- Return
Jacobian from local to global
- Parameters
gctx
: The current geometry context object, e.g. alignmentboundParams
: is the bound parameters vector
-
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
- 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
-
Vector3
localCartesianToGlobal
(const GeometryContext &gctx, const Vector2 &lposition) const¶ Special method for DiscSurface : local<->global transformation when provided cartesian coordinates.
- Return
value is a global cartesian 3D position
- Parameters
gctx
: The current geometry context object, e.g. alignmentlposition
: is local 2D position in cartesian coordinates
-
Vector2
localCartesianToPolar
(const Vector2 &lcart) const¶ Special method for Disc surface : local<->local transformations polar <-> cartesian.
- Return
value is a local position in polar coordinates
- Parameters
lcart
: is local 2D position in cartesian coordinates
-
Vector2
localPolarToCartesian
(const Vector2 &lpolar) const¶ Special method for DiscSurface : local<->local transformations polar <-> cartesian.
- Return
values is local 2D position in cartesian coordinates
- Parameters
lpolar
: is a local position in polar coordinates
-
Vector2
localPolarToLocalCartesian
(const Vector2 &locpol) const¶ Special method for DiscSurface : local<->local transformations polar <-> cartesian.
- Return
values is local 2D position in cartesian coordinates
- Parameters
gctx
: The current geometry context object, e.g. alignmentlocpol
: is a local position in polar coordinates
-
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.
- Return
global position by value
- Parameters
gctx
: The current geometry context object, e.g. alignmentlposition
: local 2D position in specialized surface framemomentum
: global 3D momentum representation (optionally ignored)
-
std::string
name
() const override¶ Return properly formatted class name for screen output.
-
Vector3
normal
(const GeometryContext &gctx, const Vector2 &lposition) const final¶ Normal vector return.
- Return
a Vector3 by value
- Parameters
gctx
: The current geometry context object, e.g. alignmentlposition
: The local position is ignored
-
DiscSurface &
operator=
(const DiscSurface &other)¶ Assignement operator.
- Parameters
other
: The source sourface for the assignment
-
double
pathCorrection
(const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final¶ Path correction due to incident of the track.
- Return
The correction factor due to incident
- Parameters
gctx
: The current geometry context object, e.g. alignmentposition
: The global position as a starting pointdirection
: The global momentum at the starting point
-
Polyhedron
polyhedronRepresentation
(const GeometryContext &gctx, size_t lseg) const override¶ Return a Polyhedron for the surfaces.
- Return
A list of vertices and a face/facett description of it
- Parameters
gctx
: The current geometry context object, e.g. alignmentlseg
: 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
-
SurfaceType
type
() const override¶ Return the surface type.
Protected Functions
-
DiscSurface
(const Transform3 &transform, double rmin, double rmax, double hphisec = M_PI)¶ Constructor for Discs from Transform3, \( r_{min}, r_{max} \).
- Parameters
transform
: is transform that places the disc in the global 3D spacermin
: The inner radius of the disc surfacermax
: The outer radius of the disc surfacehphisec
: The opening angle of the disc surface and is optional the default is a full disc
-
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.
- Parameters
transform
: is transform that places the disc in the global 3D spaceminhalfx
: The half length in x at minimal rmaxhalfx
: The half length in x at maximal rminR
: The outer radius of the disc surfacemaxR
: The inner radius of the disc surfaceavephi
: The position in phi (default is 0.)stereo
: The optional stereo angle
Constructor for Discs from Transform3 and shared DiscBounds.
- Parameters
transform
: The transform that positions the disc in global 3Ddbounds
: The disc bounds describing the surface coverage
Constructor from DetectorElementBase : Element proxy.
- Parameters
dbounds
: The disc bounds describing the surface coveragedetelement
: The detector element represented by this surface
-
DiscSurface
(const DiscSurface &other)¶ Copy Constructor.
- Parameters
other
: The source surface for the copy
-
DiscSurface
(const GeometryContext &gctx, const DiscSurface &other, const Transform3 &shift)¶ Copy constructor - with shift.
- Parameters
gctx
: The current geometry context object, e.g. alignmentother
: is the source cone surfaceshift
: is the additional transfrom applied after copying
Protected Attributes
-
std::shared_ptr<const DiscBounds>
m_bounds
¶ bounds (shared)
-