File GenericCuboidVolumeBounds.hpp

namespace Acts

Note

This file is foreseen for the Geometry module to replace Extent

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

Parameters

vertices – The set of input vertices

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

Constructor from a fixed size array.

Parameters

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.

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

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

Draw this shape using a visualization helper.

Parameters
  • 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.

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 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

Returns

a vector of surfaces bounding this volume

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

sl – is the output stream to be written into

inline virtual VolumeBounds::BoundsType type() const final

Return the bounds type - for persistency optimization.

Returns

is a BoundsType enum

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

Return the bound values as dynamically sized vector.

Returns

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