File CylinderVolumeBounds.hpp¶
-
namespace Acts
Note
This file is foreseen for the
Geometry
module to replaceExtent
-
class CylinderVolumeBounds : public Acts::VolumeBounds
- #include <Acts/Geometry/CylinderVolumeBounds.hpp>
[0] and [1] at positive \( \phi \)
Bounds for a cylindrical Volume, the orientedSurfaces(..) method creates a vector of up to 6 surfaces:
case A) 3 Surfaces (full cylindrical tube): BoundarySurfaceFace [index]:
negativeFaceXY [0] : Acts::DiscSurface with \( r_{inner}=0 \), parallel to \( xy \) plane at negative \( z\)
positiveFaceXY [1] : Acts::DiscSurface with \( r_{inner}=0 \), parallel to \( xy \) plane at positive \( z\)
cylinderCover [2] : Acts::CylinderSurface confining the Acts::Volume
case B) 4 Surfaces (tube with inner and outer radius): BoundarySurfaceFace [index]:
negativeFaceXY [0] : Acts::DiscSurface with \( r_{inner}>0 \), parallel to \( xy \) plane at negative \( z\)
positiveFaceXY [1] : Acts::DiscSurface with \( r_{inner}>0 \), parallel to \( xy \) plane at positive \( z\)
tubeOuterCover [2] : Acts::CylinderSurface with \( r = r_{outer} \)
tubeInnerCover [3] : Acts::CylinderSurface with \( r = r_{inner} \)
case C) 6 Surfaces (sectoral tube with inner and outer radius): BoundarySurfaceFace [index]:
negativeFaceXY [0] : Acts::DiscSurface with \( r_{inner}>0\) and \( \phi < \pi \), parallel to \( xy \) plane at negative \(z\)
positiveFaceXY [1] : Acts::DiscSurface with \( r_{inner}>0 \) and \( \phi < \pi \), parallel to \( xy \) plane at positive \(z\)
tubeSectorOuterCover [2] : Acts::CylinderSurface with \( r = r_{outer}\)
tubeSectorInnerCover [3] : Acts::CylinderSurface with \( r = r_{inner} \)
tubeSectorNegativePhi [4] : Rectangular Acts::PlaneSurface attached to [0] and [1] at negative \( \phi \)
tubeSectorNegativePhi [5] :
Public Types
-
enum BoundValues
for streaming and access
Values:
-
enumerator eMinR
-
enumerator eMaxR
-
enumerator eHalfLengthZ
-
enumerator eHalfPhiSector
-
enumerator eAveragePhi
-
enumerator eBevelMinZ
-
enumerator eBevelMaxZ
-
enumerator eSize
-
enumerator eMinR
Public Functions
-
CylinderVolumeBounds() = delete
-
inline CylinderVolumeBounds(double rmin, double rmax, double halfz, double halfphi = M_PI, double avgphi = 0., double bevelMinZ = 0., double bevelMaxZ = 0.) noexcept(false)
Constructor.
- Parameters
rmin – The inner radius of the cylinder
rmax – The outer radius of the cylinder
halfz – The half length in z
halfphi – The half lopening angle
avgphi – The average phi value
bevelMinZ – The bevel angle, in radians, for the negative side
bevelMaxZ – The bevel angle, in radians, for the positive side
-
inline CylinderVolumeBounds(const std::array<double, eSize> &values) noexcept(false)
Constructor - from a fixed size array.
- Parameters
values – The bound values
-
CylinderVolumeBounds(const CylinderBounds &cBounds, double thickness) noexcept(false)
Constructor - extruded from cylinder bounds and thickness.
- Parameters
cBounds – the cylinder bounds
thickness – of the extrusion
-
CylinderVolumeBounds(const RadialBounds &rBounds, double thickness) noexcept(false)
Constructor - extruded from radial bounds and thickness.
- Parameters
rBounds – the Radial bounds
thickness –
-
CylinderVolumeBounds(const CylinderVolumeBounds &cylbo) = default
Copy Constructor.
- Parameters
cylbo – is the source cylinder volume bounds for the copy
-
~CylinderVolumeBounds() override = default
-
inline virtual double binningBorder(BinningValue bValue) const override
Binning borders in double.
- Parameters
bValue – is the type used for the binning
-
inline virtual Vector3 binningOffset(BinningValue bValue) const override
Binning offset - overloaded for some R-binning types.
- Parameters
bValue – is the type used for the binning
-
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
-
inline double get(BoundValues bValue) const
Access to the bound values.
- Parameters
bValue – the class nested enum for the array access
-
inline virtual bool inside(const Vector3 &pos, double tol = 0.) const override
This method checks if position in the 3D volume frame is inside the cylinder.
- Parameters
pos – is a global position to be checked
tol – is the tolerance for the check
-
CylinderVolumeBounds &operator=(const CylinderVolumeBounds &cylbo) = default
-
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
Output Method for std::ostream.
-
inline virtual VolumeBounds::BoundsType type() const final
Return the bounds type - for persistency optimization.
- Returns
is a BoundsType enum
-
inline virtual std::vector<double> values() const final
Return the bound values as dynamically sized vector.
- Returns
this returns a copy of the internal values
Private Functions
-
void buildSurfaceBounds()¶
Helper method to create the surface bounds.
-
inline void checkConsistency() noexcept(false)¶
Check the input values for consistency, will throw a logic_exception if consistency is not given.
Private Members
-
std::shared_ptr<const RadialBounds> m_discBounds = {nullptr}¶
Bounds of the bottom/top Radial.
-
std::shared_ptr<const CylinderBounds> m_innerCylinderBounds = {nullptr}¶
Bounds of the inner CylinderBounds.
-
std::shared_ptr<const CylinderBounds> m_outerCylinderBounds = {nullptr}¶
Bounds of the inner CylinderBounds.
-
std::shared_ptr<const PlanarBounds> m_sectorPlaneBounds = {nullptr}¶
Bounds of the sector planes.
-
class CylinderVolumeBounds : public Acts::VolumeBounds