Class CylinderSurface

Inheritance Relationships

Base Type

Derived Type

Class Documentation

class Acts::CylinderSurface : public Acts::Surface

Class for a CylinderSurface in the TrackingGeometry.

It inherits from Surface.

The cylinder surface has a special role in the TrackingGeometry, since it builds the surfaces of all TrackingVolumes at container level for a cylindrical tracking geometry.

_build/doxygen-xml/CylinderSurface.png

Subclassed by Acts::CylinderLayer

Public Functions

CylinderSurface() = delete

Deleted default constructor.

~CylinderSurface() override = default

Destructor - defaulted.

const Vector3D binningPosition(const GeometryContext &gctx, BinningValue bValue) const final

The binning position method - is overloaded for r-type binning.

Return

is the global position to be used for binning

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

  • bValue: is the type of global binning to be done

const CylinderBounds &bounds() const final

This method returns the CylinderBounds by reference.

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

Global to local transformation.

Return

is a boolean indicating if the transformation succeeded

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

  • position: is the global position to be transformed

  • momentum: is the global momentum (ignored in this operation)

  • lposition: is the local position to be filled

SurfaceIntersection intersect(const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const BoundaryCheck &bcheck) const final

Straight line intersection schema from position/direction.

If possible returns both solutions for the cylinder

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

  • position: The position to start from

  • direction: The direction at start

  • bcheck: the Boundary Check

Return

SurfaceIntersection object (contains intersection & surface)

Intersection intersectionEstimate(const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const BoundaryCheck &bcheck) const final

Straight line intersection schema - provides closest intersection and (signed) path length.

Note

expected to be normalised)

Return

is the closest intersection (fwd or bwd)

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

  • position: The global position as a starting point

  • direction: The global direction at starting point (

Parameters
  • bcheck: The boundary check presection

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

  • position: The position of the paramters in global

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

Local to global transformation.

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

  • lposition: is the local position to be transformed

  • momentum: is the global momentum (ignored in this operation)

  • position: is the global position which is filled

std::string name() const override

Return method for properly formatted output string.

const Vector3D normal(const GeometryContext &gctx, const Vector2D &lposition) const final

Return method for surface normal information.

Note

for a Cylinder a local position is always required for the normal vector

Return

normal vector at the local position

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

  • lposition: is the local postion for which the normal vector is requested

const Vector3D normal(const GeometryContext &gctx, const Vector3D &position) const final

Return method for surface normal information.

Note

for a Cylinder a local position is always required for the normal vector

Return

normal vector at the global position

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

  • position: is the global postion for which the normal vector is requested

CylinderSurface &operator=(const CylinderSurface &other)

Assignment operator.

Parameters
  • other: is the source cylinder for the copy

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

Path correction due to incident of the track.

Return

is the correction factor due to incident

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

  • position: is the global position as a starting point

  • direction: is the global momentum at the starting point

Polyhedron polyhedronRepresentation(const GeometryContext &gctx, size_t lseg) const override

Return a Polyhedron for a cylinder.

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

const RotationMatrix3D referenceFrame(const GeometryContext &gctx, const Vector3D &position, const Vector3D &momentum) const final

Return the measurement frame - this is needed for alignment, in particular The measurement frame of a cylinder is the tangential plane at a given position.

Return

rotation matrix that defines the measurement frame

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

  • position: is the position where the measurement frame is defined

  • momentum: is the momentum vector (ignored)

const Vector3D rotSymmetryAxis(const GeometryContext &gctx) const

Return method for the rotational symmetry axis.

Return

the z-Axis of transform

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

SurfaceType type() const override

Return the surface type.

Protected Functions

CylinderSurface(std::shared_ptr<const CylinderBounds> cbounds, const DetectorElementBase &detelement)

Constructor from DetectorElementBase: Element proxy.

Parameters
  • cbounds: are the provided cylinder bounds (shared)

  • detelement: is the linked detector element to this surface

CylinderSurface(std::shared_ptr<const Transform3D> htrans, double radius, double halfz, double halfphi = M_PI, double avphi = 0.)

Constructor from Transform3D and CylinderBounds.

Parameters
  • htrans: transform to position the surface, can be nullptr

  • radius: The radius of the cylinder

  • halfz: The half length in z

  • halfphi: The half opening angle

  • avphi: The phi value from which the opening angle spans (both sides)

CylinderSurface(std::shared_ptr<const Transform3D> htrans, const std::shared_ptr<const CylinderBounds> &cbounds)

Constructor from Transform3D and CylinderBounds arguments.

Note

if htrans == nullptr, the cylinder is positioned around (0.,0.,0.)

Parameters
  • htrans: transform to position the surface, can be nullptr

Parameters
  • cbounds: is a shared pointer to a cylindeer bounds object, it must exist (assert test)

CylinderSurface(const CylinderSurface &other)

Copy constructor.

Parameters
  • other: is the source cylinder for the copy

CylinderSurface(const GeometryContext &gctx, const CylinderSurface &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 CylinderBounds> m_bounds

bounds (shared)