Class ConeVolumeBounds

Inheritance Relationships

Base Type

Class Documentation

class Acts::ConeVolumeBounds : public Acts::VolumeBounds

Volume bound class for describing conical volumes either with cylindrical inlay or outer boundary, it also allows for a sectoral description.

Public Types

enum BoundValues

for readability

Values:

enumerator eInnerAlpha
enumerator eInnerOffsetZ
enumerator eOuterAlpha
enumerator eOuterOffsetZ
enumerator eHalfLengthZ
enumerator eAveragePhi
enumerator eHalfPhiSector
enumerator eSize

Public Functions

ConeVolumeBounds() = delete
ConeVolumeBounds(double innerAlpha, double innerTipZ, double outerAlpha, double outerOffsetZ, double halflengthZ, double averagePhi, double halfPhiSector) noexcept(false)

Constructor - for general cone-cone setups.

Parameters
  • innerAlpha: The opening angle of the inner cone (0 if no cone)

  • innerOffsetZ: The tip z position in of the inner cone, w.r.t center

  • outerAlpha: The opening angle of the outer cone (0 if no cone)

  • outerOffsetZ: The tip z position in of the outer cone, w.r.t center

  • halflengthZ: The minimum z value of the inner and outer cones

  • avergePhi: The phi orientation of the sector

  • halfPhiSector: The opening angle phi sector

ConeVolumeBounds(double cylinderR, double alpha, double offsetZ, double halflengthZ, double averagePhi, double halfPhiSector) noexcept(false)

Constructor - for general cylidner-cone setups.

Note

depending on cylinderR > coneR it is constructing a cone with cylindrical cutout or a cylinder with conical cutout

Parameters
  • cylinderR: The inner radius of the cylinder

  • alpha: The opening angle of the cone (0 if no cone)

  • offsetZ: The tip z position in of the cone, w.r.t center

  • halflengthZ: The minimum z value of the inner and outer cones

  • avergePhi: The phi orientation of the sector (defaulted to 0)

  • halfPhiSector: The opening angle phi sector

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

Constructor - from a fixed size array.

Parameters
  • values: The bound values

ConeVolumeBounds(const ConeVolumeBounds &cobo) = default
~ConeVolumeBounds() override = default
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

double innerRmax() const
double innerRmin() const
double innerTanAlpha() const
bool inside(const Vector3 &pos, double tol = 0.) const final

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

Parameters
  • pos: is the position in volume frame to be checked

  • tol: is the absolute tolerance to be applied

ConeVolumeBounds &operator=(const ConeVolumeBounds &cobo) = default
OrientedSurfaces orientedSurfaces(const Transform3 &transform = Transform3::Identity()) const final

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

double outerRmax() const
double outerRmin() const
double outerTanAlpha() const
std::ostream &toStream(std::ostream &sl) const final

Output Method for std::ostream.

Parameters
  • sl: is ostream operator to be dumped into

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