Class Acts::VolumeBounds

class VolumeBounds

Pure Absract Base Class for Volume bounds.

Acts::VolumeBounds are a set of up to six confining Surfaces that are stored in a std::vector. Each type of Acts::VolumeBounds has to implement a orientedSurfaces() and a inside() method.

The Volume, retrieving a set of Surfaces from the VolumeBounds, can turn the Surfaces into BoundarySurfaces.

Subclassed by Acts::ConeVolumeBounds, Acts::CuboidVolumeBounds, Acts::CutoutCylinderVolumeBounds, Acts::CylinderVolumeBounds, Acts::GenericCuboidVolumeBounds, Acts::TrapezoidVolumeBounds

Public Types

enum BoundsType

This is nested to the VolumeBounds, as also SurfaceBounds will have Bounds Type.

Values:

enumerator eCone
enumerator eCuboid
enumerator eCutoutCylinder
enumerator eCylinder
enumerator eGenericCuboid
enumerator eTrapezoid
enumerator eOther

Public Functions

VolumeBounds() = default
virtual ~VolumeBounds() = default
inline virtual double binningBorder(BinningValue bValue) const

Binning borders in double.

Parameters

bValue – is the binning schema used

Returns

float offset to be used for the binning

inline virtual Vector3 binningOffset(BinningValue bValue) const

Binning offset - overloaded for some R-binning types.

Parameters

bValue – is the binning schema used

Returns

vector 3D to be used for the binning

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

Construct bounding box for this shape.

Parameters
  • trf – Optional transform

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

  • entity – Entity to associate this bounding box with

Returns

Constructed bounding box

virtual bool inside(const Vector3 &gpos, double tol = 0.) const = 0

Checking if position given in volume frame is inside.

Parameters
  • gpos – is the global position to be checked

  • tol – is the tolerance applied for the inside check

Returns

boolean indicating if the position is inside

virtual OrientedSurfaces orientedSurfaces(const Transform3 &transform = Transform3::Identity()) const = 0

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

Returns

a vector of surfaces bounding this volume

virtual std::ostream &toStream(std::ostream &sl) const = 0

Output Method for std::ostream, to be overloaded by child classes.

Parameters

sl – is the output stream to be dumped into

virtual BoundsType type() const = 0

Return the bounds type - for persistency optimization.

Returns

is a BoundsType enum

virtual std::vector<double> values() const = 0

Access method for bound values, this is a dynamically sized vector containing the parameters needed to describe these bounds.

Returns

of the stored values for this SurfaceBounds object