File TrapezoidVolumeBounds.hpp¶
-
namespace Acts
Set the Geometry Context PLUGIN.
Set the Calibration Context PLUGIN.
Convenience functions to ease creation of and Acts::InterpolatedMaterialMap and to avoid code duplication.
Set the Mangetic Field Context PLUGIN.
Convenience functions to ease creation of and Acts::InterpolatedBFieldMap and to avoid code duplication.
Currently implemented for the two most common formats: rz and xyz.
-
class TrapezoidVolumeBounds : public Acts::VolumeBounds
- #include <Acts/Geometry/TrapezoidVolumeBounds.hpp>
Bounds for a trapezoidal shaped Volume, the orientedSurface(…) method creates a vector of 6 surfaces:
BoundarySurfaceFace [index]:
negativeFaceXY [0] : Trazpezoidal Acts::PlaneSurface, parallel to \( xy \) plane at negative \(z\)
positiveFaceXY [1] : Trazpezoidal Acts::PlaneSurface, parallel to \( xy \) plane at positive \(z\)
trapezoidFaceAlpha [2] : Rectangular Acts::PlaneSurface, attached to [0] and [1] at negative \(x\) (associated to alpha)
trapezoidFaceBeta [3] : Rectangular Acts::PlaneSurface, attached to [0] and [1] at positive \( x\) (associated to beta)
negativeFaceZX [4] : Rectangular Acts::PlaneSurface, parallel to \( zx \) plane at negative \(y\)
positiveFaceZX [5] : Rectangular Acts::PlaneSurface, parallel to \( zx \) plane at positive \(y\)
Public Types
-
enum BoundValues
for acces / streaming
Values:
-
enumerator eHalfLengthXnegY
halflength in x at negative y
-
enumerator eHalfLengthXposY
halflength in x at positive y
-
enumerator eHalfLengthY
halflength in y
-
enumerator eHalfLengthZ
halflength in z
-
enumerator eAlpha
opening angle alpha (in point A)
-
enumerator eBeta
opening angle beta (in point B)
-
enumerator eSize
length of the bounds vector
-
enumerator eHalfLengthXnegY
Public Functions
-
TrapezoidVolumeBounds() = delete
-
TrapezoidVolumeBounds(double minhalex, double maxhalex, double haley, double halez) noexcept(false)
Constructor - the trapezoid boundaries (symmetric trapezoid)
- Parameters
minhalex – is the half length in x at minimal y
maxhalex – is the half length in x at maximal y
haley – is the half length in y
halez – is the half length in z
-
TrapezoidVolumeBounds(double minhalex, double haley, double halez, double alpha, double beta) noexcept(false)
Constructor - the trapezoid boundaries (arbitrary trapezoid)
- Parameters
minhalex – is the half length in x at minimal y
haley – is the half length in y
halez – is the half length in z
alpha – is the openeing angle at -x,-y
beta – is the openeing angle at +x,-y
-
inline TrapezoidVolumeBounds(const std::array<double, eSize> &values) noexcept(false)
Constructor - from a fixed size array.
- Parameters
values – The bound values
-
TrapezoidVolumeBounds(const TrapezoidVolumeBounds &trabo) = default
-
~TrapezoidVolumeBounds() 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
-
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 the global position to be checked
tol – is the tolerance applied
- Returns
boolean indicator if position is inside
-
TrapezoidVolumeBounds &operator=(const TrapezoidVolumeBounds &trabo) = 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 RectangleBounds> m_faceAlphaRectangleBounds = {nullptr}¶
Thhe face PlaneSurface attached to alpha (negative local x)
-
std::shared_ptr<const RectangleBounds> m_faceBetaRectangleBounds = {nullptr}¶
The face PlaneSurface attached to beta (positive local x)
-
std::shared_ptr<const TrapezoidBounds> m_faceXYTrapezoidBounds = {nullptr}¶
The face PlaneSurface parallel to local xy plane.
-
std::shared_ptr<const RectangleBounds> m_faceZXRectangleBoundsBottom = {nullptr}¶
The face PlaneSurface parallel to local zx plane, negative local y.
-
std::shared_ptr<const RectangleBounds> m_faceZXRectangleBoundsTop = {nullptr}¶
The face PlaneSurface parallel to local zx plane, positive local y.
-
class TrapezoidVolumeBounds : public Acts::VolumeBounds