File VolumeBounds.hpp¶
-
namespace Acts
Note
This file is foreseen for the
Geometry
module to replaceExtent
Note
this is foreseen for the ‘Geometry’ module
Typedefs
-
using OrientedSurface = std::pair<std::shared_ptr<Surface>, NavigationDirection>¶
-
using OrientedSurfaces = std::vector<OrientedSurface>¶
Functions
-
std::ostream &operator<<(std::ostream &sl, const VolumeBounds &vb)¶
Overload of << operator for std::ostream for debug output.
-
inline bool operator==(const VolumeBounds &lhs, const VolumeBounds &rhs)¶
Variables
-
static const Transform3 s_planeXY = Transform3::Identity()¶
-
static const Transform3 s_planeYZ = AngleAxis3(0.5 * M_PI, Vector3::UnitY()) * AngleAxis3(0.5 * M_PI, Vector3::UnitZ()) * Transform3::Identity()¶
-
static const Transform3 s_planeZX = AngleAxis3(-0.5 * M_PI, Vector3::UnitX()) * AngleAxis3(-0.5 * M_PI, Vector3::UnitZ()) * Transform3::Identity()¶
-
class VolumeBounds
- #include <Acts/Geometry/VolumeBounds.hpp>
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
-
enumerator eCone
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
-
enum BoundsType
-
using OrientedSurface = std::pair<std::shared_ptr<Surface>, NavigationDirection>¶