Class DiscSurface

Inheritance Relationships

Base Type

Derived Type

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.

_build/doxygen-xml/DiscSurface.png

Subclassed by Acts::DiscLayer

Public Functions

DiscSurface() = delete

Default Constructor - deleted.

~DiscSurface() override = default

Destructor - defaulted.

const Vector3D 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. alignment

  • bValue: 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. alignment

  • bValue: is the dobule in which you want to bin

const SurfaceBounds &bounds() const final

This method returns the bounds by reference.

bool globalToLocal(const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum, Vector2D &lposition) const final

Global to local transformation.

Note

the momentum is ignored for Disc surfaces in this calculateion

Return

boolean indication if operation was successful (fail means global position was not on surface)

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)

  • lposition: local 2D position to be filled (given by reference for method symmetry)

const Vector2D globalToLocalCartesian(const GeometryContext &gctx, const Vector3D &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. alignment

  • position: is a global cartesian 3D position

  • tol: The absoltue tolerance parameter

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

  • jacobian: The jacobian to be initialized

  • position: The global position of the parameters

  • direction: The direction at of the parameters

  • pars: The paranmeters vector

const RotationMatrix3D initJacobianToLocal(const GeometryContext &gctx, FreeToBoundMatrix &jacobian, const Vector3D &position, const Vector3D &direction) const final

Initialize the jacobian from global to local the surface knows best, hence the calculation is done here.

The jacobian is assumed to be initialised, so only the relevant entries are filled

Return

the transposed reference frame (avoids recalculation)

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

  • jacobian: The jacobian to be initialized

  • position: The global position of the parameters

  • direction: The direction at of the parameters

Intersection intersectionEstimate(const GeometryContext &gctx, const Vector3D &position, const Vector3D &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. alignment

  • position: The global position as a starting point

  • direction: 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

is the surface intersection object

const Vector3D localCartesianToGlobal(const GeometryContext &gctx, const Vector2D &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. alignment

  • lposition: is local 2D position in cartesian coordinates

const Vector2D localCartesianToPolar(const Vector2D &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

const Vector2D localPolarToCartesian(const Vector2D &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

const Vector2D localPolarToLocalCartesian(const Vector2D &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. alignment

  • locpol: is a local position in polar coordinates

void localToGlobal(const GeometryContext &gctx, const Vector2D &lposition, const Vector3D &momentum, Vector3D &position) const final

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

Note

the momentum is ignored for Disc surfaces in this calculateion

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)

  • position: global 3D position to be filled (given by reference for method symmetry)

std::string name() const override

Return properly formatted class name for screen output.

const 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. alignment

  • lposition: 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 Vector3D &position, const Vector3D &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. alignment

  • position: The global position as a starting point

  • direction: 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. 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

SurfaceType type() const override

Return the surface type.

Protected Functions

DiscSurface(std::shared_ptr<const Transform3D> htrans, double rmin, double rmax, double hphisec = M_PI)

Constructor for Discs from Transform3D, \( r_{min}, r_{max} \).

Parameters
  • htrans: is transform that places the disc in the global 3D space (can be nullptr)

  • 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(std::shared_ptr<const Transform3D> htrans, double minhalfx, double maxhalfx, double maxR, double minR, double avephi = 0., double stereo = 0.)

Constructor for Discs from Transform3D, \( r_{min}, r_{max}, hx_{min}, hx_{max} \) This is n this case you have DiscTrapezoidBounds.

Parameters
  • htrans: is transform that places the disc in the global 3D space (can be nullptr)

  • minhalfx: The half length in x at minimal r

  • maxhalfx: The half length in x at maximal r

  • maxR: The inner radius of the disc surface

  • minR: The outer radius of the disc surface

  • avephi: The position in phi (default is 0.)

  • stereo: The optional stereo angle

DiscSurface(std::shared_ptr<const Transform3D> htrans, std::shared_ptr<const DiscBounds> dbounds = nullptr)

Constructor for Discs from Transform3D and shared DiscBounds.

Parameters
  • htrans: The transform that positions the disc in global 3D

  • dbounds: The disc bounds describing the surface coverage

DiscSurface(const std::shared_ptr<const DiscBounds> &dbounds, const DetectorElementBase &detelement)

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 Transform3D &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

Protected Attributes

std::shared_ptr<const DiscBounds> m_bounds

bounds (shared)