File GenericCuboidVolumeBounds.hpp

namespace Acts


This file is foreseen for the Geometry module to replace Extent


this is foreseen for the ‘Geometry’ module

class GenericCuboidVolumeBounds : public Acts::VolumeBounds
#include <Acts/Geometry/GenericCuboidVolumeBounds.hpp>

Public Functions

GenericCuboidVolumeBounds() = delete
GenericCuboidVolumeBounds(const std::array<Acts::Vector3, 8> &vertices) noexcept(false)

Constructor from a set of vertices.

The ordering is considered to be:

  • the first 4 vertices are the “top” face

  • the second 4 vertices are the “bottom” face

  • both faces are given in counter clock wise order


vertices – The set of input vertices

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

Constructor from a fixed size array.


values – The input values

~GenericCuboidVolumeBounds() override = default
virtual 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.

  • trf – Optional transform

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

  • entity – Entity to associate this bounding box with


Constructed bounding box

void draw(IVisualization3D &helper, const Transform3 &transform = Transform3::Identity()) const

Draw this shape using a visualization helper.

  • helper – The visualizatin helper

  • transform – Optional transformation matrix

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

Checking if position given in volume frame is inside.

  • gpos – is the global position to be checked

  • tol – is the tolerance applied for the inside check


boolean indicating if the position is inside

virtual 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


transform – is the 3D transform to be applied to the boundary surfaces to position them in 3D space


a vector of surfaces bounding this volume

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

sl – is the output stream to be written into

inline virtual VolumeBounds::BoundsType type() const final

Return the bounds type - for persistency optimization.


is a BoundsType enum

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

Return the bound values as dynamically sized vector.


this returns a copy of the internal values

Public Static Attributes

static constexpr size_t eSize = 24

Private Functions

void construct() noexcept(false)

Private helper method to contruct the Volume bounds to be called by the constructors, from the ordered input vertices.

Private Members

std::array<Vector3, 6> m_normals
std::array<Vector3, 8> m_vertices