File ConeVolumeBounds.hpp¶
-
namespace Acts
Note
This file is foreseen for the
Geometry
module to replaceExtent
-
class ConeVolumeBounds : public Acts::VolumeBounds
- #include <Acts/Geometry/ConeVolumeBounds.hpp>
Volume bound class for describing conical volumes either with cylindrical inlay or outer boundary, it also allows for a sectoral description.
Public Types
-
enum BoundValues
for readability
Values:
-
enumerator eInnerAlpha
-
enumerator eInnerOffsetZ
-
enumerator eOuterAlpha
-
enumerator eOuterOffsetZ
-
enumerator eHalfLengthZ
-
enumerator eAveragePhi
-
enumerator eHalfPhiSector
-
enumerator eSize
-
enumerator eInnerAlpha
Public Functions
-
ConeVolumeBounds() = delete
-
ConeVolumeBounds(double innerAlpha, double innerOffsetZ, double outerAlpha, double outerOffsetZ, double halflengthZ, double averagePhi, double halfPhiSector) noexcept(false)
Constructor - for general cone-cone setups.
- Parameters
innerAlpha – The opening angle of the inner cone (0 if no cone)
innerOffsetZ – The tip z position in of the inner cone, w.r.t center
outerAlpha – The opening angle of the outer cone (0 if no cone)
outerOffsetZ – The tip z position in of the outer cone, w.r.t center
halflengthZ – The minimum z value of the inner and outer cones
averagePhi – The phi orientation of the sector
halfPhiSector – The opening angle phi sector
-
ConeVolumeBounds(double cylinderR, double alpha, double offsetZ, double halflengthZ, double averagePhi, double halfPhiSector) noexcept(false)
Constructor - for general cylidner-cone setups.
Note
depending on cylinderR > coneR it is constructing a cone with cylindrical cutout or a cylinder with conical cutout
- Parameters
cylinderR – The inner radius of the cylinder
alpha – The opening angle of the cone (0 if no cone)
offsetZ – The tip z position in of the cone, w.r.t center
halflengthZ – The minimum z value of the inner and outer cones
averagePhi – The phi orientation of the sector (defaulted to 0)
halfPhiSector – The opening angle phi sector
-
inline ConeVolumeBounds(const std::array<double, eSize> &values) noexcept(false)
Constructor - from a fixed size array.
- Parameters
values – The bound values
-
ConeVolumeBounds(const ConeVolumeBounds &cobo) = default
-
~ConeVolumeBounds() 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
-
inline double get(BoundValues bValue) const
Access to the bound values.
- Parameters
bValue – the class nested enum for the array access
-
inline double innerRmax() const
-
inline double innerRmin() const
-
inline double innerTanAlpha() const
-
virtual bool inside(const Vector3 &pos, double tol = 0.) const final
This method checks if position in the 3D volume frame is inside the cylinder.
- Parameters
pos – is the position in volume frame to be checked
tol – is the absolute tolerance to be applied
-
ConeVolumeBounds &operator=(const ConeVolumeBounds &cobo) = default
-
virtual OrientedSurfaces orientedSurfaces(const Transform3 &transform = Transform3::Identity()) const final
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
-
inline double outerRmax() const
-
inline double outerRmin() const
-
inline double outerTanAlpha() const
-
virtual std::ostream &toStream(std::ostream &sl) const final
Output Method for std::ostream.
- Parameters
sl – is ostream operator to be dumped into
-
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()¶
Create the surface bounds.
-
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<ConeBounds> m_innerConeBounds = {nullptr}¶
-
std::shared_ptr<CylinderBounds> m_innerCylinderBounds = {nullptr}¶
-
double m_innerRmax = 0.¶
-
double m_innerRmin = 0.¶
Derived values.
-
double m_innerTanAlpha = 0.¶
-
std::shared_ptr<RadialBounds> m_negativeDiscBounds = {nullptr}¶
-
std::shared_ptr<ConeBounds> m_outerConeBounds = {nullptr}¶
-
std::shared_ptr<CylinderBounds> m_outerCylinderBounds = {nullptr}¶
-
double m_outerRmax = 0.¶
-
double m_outerRmin = 0.¶
-
double m_outerTanAlpha = 0.¶
-
std::shared_ptr<RadialBounds> m_positiveDiscBounds = {nullptr}¶
-
std::shared_ptr<PlanarBounds> m_sectorBounds = {nullptr}¶
-
enum BoundValues
-
class ConeVolumeBounds : public Acts::VolumeBounds