File DiscSurface.hpp¶
-
namespace Acts
Set the Geometry Context PLUGIN.
Set the Calibration Context PLUGIN.
Convenience functions to ease creation of and Acts::InterpolatedMaterialMap and to avoid code duplication.
Set the Mangetic Field Context PLUGIN.
Convenience functions to ease creation of and Acts::InterpolatedBFieldMap and to avoid code duplication.
Currently implemented for the two most common formats: rz and xyz.
-
class DiscSurface : public Acts::Surface
- #include <Acts/Surfaces/DiscSurface.hpp>
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.
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 space
rmin – The inner radius of the disc surface
rmax – The outer radius of the disc surface
hphisec – 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 space
minhalfx – The half length in x at minimal r
maxhalfx – The half length in x at maximal r
minR – The outer radius of the disc surface
maxR – The inner radius of the disc surface
avephi – 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 3D
dbounds – The disc bounds describing the surface coverage
Constructor from DetectorElementBase : Element proxy.
- Parameters
dbounds – The disc bounds describing the surface coverage
detelement – 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. alignment
other – is the source cone surface
shift – is the additional transfrom applied after copying
Protected Attributes
-
std::shared_ptr<const DiscBounds> m_bounds¶
bounds (shared)
Private Members
- friend Surface
-
DiscSurface() = delete
-
class DiscSurface : public Acts::Surface