File PlaneSurface.hpp

namespace Acts

Note

This file is foreseen for the Geometry module to replace Extent

class PlaneSurface : public Acts::Surface
#include <Acts/Surfaces/PlaneSurface.hpp>

Class for a planaer in the TrackingGeometry.

The PlaneSurface extends the Surface class with the possibility to convert local to global positions (vice versa).

_build/doxygen-xml/PlaneSurface.png

Subclassed by Acts::PlaneLayer

Public Functions

PlaneSurface() = delete
~PlaneSurface() override = default
virtual Vector3 binningPosition(const GeometryContext &gctx, BinningValue bValue) const final

The binning position is the position calcualted for a certain binning type.

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • bValue – is the binning type to be used

Returns

position that can beused for this binning

virtual const SurfaceBounds &bounds() const override

Return method for bounds object of this surfrace.

virtual Result<Vector2> globalToLocal(const GeometryContext &gctx, const Vector3 &position, const Vector3 &momentum, double tolerance = s_onSurfaceTolerance) const override

Global to local transformation For planar surfaces the momentum is ignroed in the global to local transformation.

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) method symmetry)

  • tolerance – optional tolerance within which a point is considered valid on surface

Returns

a Result<Vector2> which can be !ok() if the operation fails

virtual SurfaceIntersection intersect(const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const BoundaryCheck &bcheck = false) const final

Straight line intersection.

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)

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • position – The start position of the intersection attempt

  • direction – The direction of the interesection attempt, (

  • bcheck – The boundary check directive

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

virtual Vector3 localToGlobal(const GeometryContext &gctx, const Vector2 &lposition, const Vector3 &momentum) const override

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

the 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.

return a Vector3 by value

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • lposition – is the local position is ignored

PlaneSurface &operator=(const PlaneSurface &other)

Assignment operator.

Parameters

other – The source PlaneSurface for assignment

virtual double pathCorrection(const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final

Method that calculates the correction due to incident angle.

Note

this is the final implementation of the pathCorrection function

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 (ignored for PlaneSurface)

Returns

a double representing the scaling factor

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

PlaneSurface(const PlaneSurface &other)

Copy Constructor.

Parameters

other – is the source surface for the copy

PlaneSurface(const GeometryContext &gctx, const PlaneSurface &other, const Transform3 &transf)

Copy constructor - with shift.

Parameters
  • gctx – The current geometry context object, e.g. alignment

  • other – is the source cone surface

  • transf – is the additional transfrom applied after copying

PlaneSurface(const Vector3 &center, const Vector3 &normal)

Dedicated Constructor with normal vector This is for curvilinear surfaces which are by definition boundless.

Parameters
  • center – is the center position of the surface

  • normal – is thenormal vector of the plane surface

PlaneSurface(const std::shared_ptr<const PlanarBounds> &pbounds, const DetectorElementBase &detelement)

Constructor from DetectorElementBase : Element proxy.

Parameters
  • pbounds – are the provided planar bounds (shared)

  • detelement – is the linked detector element to this surface

PlaneSurface(const Transform3 &htrans, std::shared_ptr<const PlanarBounds> pbounds = nullptr)

Constructor for Planes with (optional) shared bounds object.

Parameters
  • htrans – transform in 3D that positions this surface

  • pbounds – bounds object to describe the actual surface area

Protected Attributes

std::shared_ptr<const PlanarBounds> m_bounds

the bounds of this surface