Class CylinderVolumeBounds

Inheritance Relationships

Base Type

Class Documentation

class Acts::CylinderVolumeBounds : public Acts::VolumeBounds

[0] and [1] at positive \( \phi \)

Bounds for a cylindrical Volume, the orientedSurfaces(..) method creates a vector of up to 6 surfaces:

case A) 3 Surfaces (full cylindrical tube): BoundarySurfaceFace [index]:

  • negativeFaceXY [0] : Acts::DiscSurface with \( r_{inner}=0 \), parallel to \( xy \) plane at negative \( z\)

  • positiveFaceXY [1] : Acts::DiscSurface with \( r_{inner}=0 \), parallel to \( xy \) plane at positive \( z\)

  • cylinderCover [2] : Acts::CylinderSurface confining the Acts::Volume

case B) 4 Surfaces (tube with inner and outer radius): BoundarySurfaceFace [index]:

  • negativeFaceXY [0] : Acts::DiscSurface with \( r_{inner}>0 \), parallel to \( xy \) plane at negative \( z\)

  • positiveFaceXY [1] : Acts::DiscSurface with \( r_{inner}>0 \), parallel to \( xy \) plane at positive \( z\)

  • tubeOuterCover [2] : Acts::CylinderSurface with \( r = r_{outer} \)

  • tubeInnerCover [3] : Acts::CylinderSurface with \( r = r_{inner} \)

case C) 6 Surfaces (sectoral tube with inner and outer radius): BoundarySurfaceFace [index]:

  • negativeFaceXY [0] : Acts::DiscSurface with \( r_{inner}>0\) and \( \phi < \pi \), parallel to \( xy \) plane at negative \(z\)

  • positiveFaceXY [1] : Acts::DiscSurface with \( r_{inner}>0 \) and \( \phi < \pi \), parallel to \( xy \) plane at positive \(z\)

  • tubeSectorOuterCover [2] : Acts::CylinderSurface with \( r = r_{outer}\)

  • tubeSectorInnerCover [3] : Acts::CylinderSurface with \( r = r_{inner} \)

  • tubeSectorNegativePhi [4] : Rectangular Acts::PlaneSurface attached to [0] and [1] at negative \( \phi \)

    • tubeSectorNegativePhi [5] :

Public Types

enum BoundValues

for streaming and access

Values:

enumerator eMinR
enumerator eMaxR
enumerator eHalfLengthZ
enumerator eHalfPhiSector
enumerator eAveragePhi
enumerator eSize

Public Functions

CylinderVolumeBounds() = delete
CylinderVolumeBounds(double rmin, double rmax, double halfz, double halfphi = M_PI, double avgphi = 0.) noexcept(false)

Constructor.

Parameters
  • rmin: The inner radius of the cylinder

  • rmax: The outer radius of the cylinder

  • halfz: The half length in z

  • halfphi: The half lopening angle

  • avgphi: The average phi value

CylinderVolumeBounds(const std::array<double, eSize> &values) noexcept(false)

Constructor - from a fixed size array.

Parameters
  • values: The bound values

CylinderVolumeBounds(const CylinderBounds &cBounds, double thickness) noexcept(false)

Constructor - extruded from cylinder bounds and thickness.

Parameters
  • cbounds: the cylinder bounds

  • thickness: of the extrusion

CylinderVolumeBounds(const RadialBounds &rBounds, double thickness) noexcept(false)

Constructor - extruded from radial bounds and thickness.

Parameters
  • rbounds: the Radial bounds

  • thickness:

CylinderVolumeBounds(const CylinderVolumeBounds &cylbo) = default

Copy Constructor.

Parameters
  • cylbo: is the source cylinder volume bounds for the copy

~CylinderVolumeBounds() override = default
double binningBorder(BinningValue bValue) const override

Binning borders in double.

Parameters
  • bValue: is the type used for the binning

Vector3 binningOffset(BinningValue bValue) const override

Binning offset - overloaded for some R-binning types.

Parameters
  • bValue: is the type used for the binning

Volume::BoundingBox boundingBox(const Transform3 *trf = nullptr, const Vector3 &envelope = {0, 0, 0}, const Volume *entity = nullptr) const final

Construct bounding box for this shape.

Return

Constructed bounding box

Parameters
  • trf: Optional transform

  • envelope: Optional envelope to add / subtract from min/max

  • entity: Entity to associate this bounding box with

double get(BoundValues bValue) const

Access to the bound values.

Parameters
  • bValue: the class nested enum for the array access

bool inside(const Vector3 &pos, double tol = 0.) const override

This method checks if position in the 3D volume frame is inside the cylinder.

Parameters
  • pos: is a global position to be checked

  • tol: is the tolerance for the check

CylinderVolumeBounds &operator=(const CylinderVolumeBounds &cylbo) = default
OrientedSurfaces orientedSurfaces(const Transform3 &transform = Transform3::Identity()) const override

Oriented surfaces, i.e.

the decomposed boundary surfaces and the according navigation direction into the volume given the normal vector on the surface

It will throw an exception if the orientation prescription is not adequate

Parameters
  • transform: is the 3D transform to be applied to the boundary surfaces to position them in 3D space

Return

a vector of surfaces bounding this volume

std::ostream &toStream(std::ostream &sl) const override

Output Method for std::ostream.

VolumeBounds::BoundsType type() const final

Return the bounds type - for persistency optimization.

Return

is a BoundsType enum

std::vector<double> values() const final

Return the bound values as dynamically sized vector.

Return

this returns a copy of the internal values