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

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)