EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::TrapezoidVolumeBounds Class Reference

#include <acts/blob/sPHENIX/Core/include/Acts/Geometry/TrapezoidVolumeBounds.hpp>

+ Inheritance diagram for Acts::TrapezoidVolumeBounds:
+ Collaboration diagram for Acts::TrapezoidVolumeBounds:

Public Types

enum  BoundValues : unsigned int {
  eHalfLengthXnegY = 0, eHalfLengthXposY = 1, eHalfLengthY = 2, eHalfLengthZ = 3,
  eAlpha = 4, eBeta = 5, eSize
}
 for acces / streaming More...
 
- Public Types inherited from Acts::VolumeBounds
enum  BoundsType : int {
  eCone = 0, eCuboid = 1, eCutoutCylinder = 2, eCylinder = 3,
  eGenericCuboid = 4, eTrapezoid = 5, eOther = 6
}
 

Public Member Functions

 TrapezoidVolumeBounds ()=delete
 
 TrapezoidVolumeBounds (double minhalex, double maxhalex, double haley, double halez) noexcept(false)
 
 TrapezoidVolumeBounds (double minhalex, double haley, double halez, double alpha, double beta) noexcept(false)
 
 TrapezoidVolumeBounds (const std::array< double, eSize > &values) noexcept(false)
 
 TrapezoidVolumeBounds (const TrapezoidVolumeBounds &trabo)=default
 
 ~TrapezoidVolumeBounds () override=default
 
TrapezoidVolumeBoundsoperator= (const TrapezoidVolumeBounds &trabo)=default
 
VolumeBounds::BoundsType type () const final
 
std::vector< double > values () const final
 
bool inside (const Vector3D &pos, double tol=0.) const override
 
OrientedSurfaces orientedSurfaces (const Transform3D &transform=Transform3D::Identity()) const override
 
Volume::BoundingBox boundingBox (const Transform3D *trf=nullptr, const Vector3D &envelope={0, 0, 0}, const Volume *entity=nullptr) const final
 
std::ostream & toStream (std::ostream &sl) const override
 Output Method for std::ostream.
 
double get (BoundValues bValue) const
 
- Public Member Functions inherited from Acts::VolumeBounds
 VolumeBounds ()=default
 
virtual ~VolumeBounds ()=default
 
virtual Vector3D binningOffset (BinningValue bValue) const
 Binning offset - overloaded for some R-binning types.
 
virtual double binningBorder (BinningValue bValue) const
 

Private Member Functions

void checkConsistency () noexcept(false)
 
void buildSurfaceBounds ()
 Helper method to create the surface bounds.
 
template<class stream_t >
stream_t & dumpT (stream_t &dt) const
 

Private Attributes

std::array< double, eSizem_values
 The internal version of the bounds can be float/double.
 
std::shared_ptr< const
TrapezoidBounds
m_faceXYTrapezoidBounds {nullptr}
 The face PlaneSurface parallel to local xy plane.
 
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
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.
 

Detailed Description

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$

Definition at line 47 of file TrapezoidVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 47 of file TrapezoidVolumeBounds.hpp

Member Enumeration Documentation

for acces / streaming

Enumerator:
eHalfLengthXnegY 

halflength in x at negative y

eHalfLengthXposY 

halflength in x at positive y

eHalfLengthY 

halflength in y

eHalfLengthZ 

halflength in z

eAlpha 

opening angle alpha (in point A)

eBeta 

opening angle beta (in point B)

eSize 

length of the bounds vector

Definition at line 50 of file TrapezoidVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 50 of file TrapezoidVolumeBounds.hpp

Constructor & Destructor Documentation

Acts::TrapezoidVolumeBounds::TrapezoidVolumeBounds ( )
delete
Acts::TrapezoidVolumeBounds::TrapezoidVolumeBounds ( double  minhalex,
double  maxhalex,
double  haley,
double  halez 
)
noexcept

Constructor - the trapezoid boundaries (symmetric trapezoid)

Parameters
minhalexis the half length in x at minimal y
maxhalexis the half length in x at maximal y
haleyis the half length in y
halezis the half length in z

Definition at line 21 of file TrapezoidVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 21 of file TrapezoidVolumeBounds.cpp

References buildSurfaceBounds(), checkConsistency(), eAlpha, eBeta, eHalfLengthXnegY, eHalfLengthXposY, eHalfLengthY, eHalfLengthZ, M_PI, and m_values.

+ Here is the call graph for this function:

Acts::TrapezoidVolumeBounds::TrapezoidVolumeBounds ( double  minhalex,
double  haley,
double  halez,
double  alpha,
double  beta 
)
noexcept

Constructor - the trapezoid boundaries (arbitrary trapezoid)

Parameters
minhalexis the half length in x at minimal y
haleyis the half length in y
halezis the half length in z
alphais the openeing angle at -x,-y
betais the openeing angle at +x,-y

Definition at line 35 of file TrapezoidVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 35 of file TrapezoidVolumeBounds.cpp

References starlightConstants::alpha, buildSurfaceBounds(), checkConsistency(), eAlpha, eBeta, eHalfLengthXnegY, eHalfLengthXposY, eHalfLengthY, eHalfLengthZ, gamma(), M_PI, and m_values.

+ Here is the call graph for this function:

Acts::TrapezoidVolumeBounds::TrapezoidVolumeBounds ( const std::array< double, eSize > &  values)
inlinenoexcept

Constructor - from a fixed size array

Parameters
valuesThe bound values

Definition at line 84 of file TrapezoidVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 84 of file TrapezoidVolumeBounds.hpp

References buildSurfaceBounds(), and checkConsistency().

+ Here is the call graph for this function:

Acts::TrapezoidVolumeBounds::TrapezoidVolumeBounds ( const TrapezoidVolumeBounds trabo)
default
Acts::TrapezoidVolumeBounds::~TrapezoidVolumeBounds ( )
overridedefault

Member Function Documentation

Acts::Volume::BoundingBox Acts::TrapezoidVolumeBounds::boundingBox ( const Transform3D trf = nullptr,
const Vector3D envelope = {0, 0, 0},
const Volume entity = nullptr 
) const
finalvirtual

Construct bounding box for this shape

Parameters
trfOptional transform
envelopeOptional envelope to add / subtract from min/max
entityEntity to associate this bounding box with
Returns
Constructed bounding box

Implements Acts::VolumeBounds.

Definition at line 149 of file TrapezoidVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 149 of file TrapezoidVolumeBounds.cpp

References Acts::Test::transform, and vtx().

+ Here is the call graph for this function:

void Acts::TrapezoidVolumeBounds::buildSurfaceBounds ( )
private

Helper method to create the surface bounds.

Definition at line 114 of file TrapezoidVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 114 of file TrapezoidVolumeBounds.cpp

References cos(), and M_PI.

Referenced by TrapezoidVolumeBounds().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void Acts::TrapezoidVolumeBounds::checkConsistency ( )
inlineprivatenoexcept

Check the input values for consistency, will throw a logic_exception if consistency is not given

Definition at line 188 of file TrapezoidVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 188 of file TrapezoidVolumeBounds.hpp

References eHalfLengthXnegY, eHalfLengthXposY, eHalfLengthY, and eHalfLengthZ.

Referenced by TrapezoidVolumeBounds().

+ Here is the caller graph for this function:

template<class stream_t >
stream_t & Acts::TrapezoidVolumeBounds::dumpT ( stream_t &  dt) const
private

Templated dump methos

Template Parameters
stream_tThe type of the stream for dumping
Parameters
dtThe stream object

Definition at line 171 of file TrapezoidVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 171 of file TrapezoidVolumeBounds.hpp

References eAlpha, eBeta, eHalfLengthXnegY, eHalfLengthXposY, eHalfLengthY, and eHalfLengthZ.

double Acts::TrapezoidVolumeBounds::get ( BoundValues  bValue) const
inline

Access to the bound values

Parameters
bValuethe class nested enum for the array access

Definition at line 140 of file TrapezoidVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 140 of file TrapezoidVolumeBounds.hpp

References m_values.

bool Acts::TrapezoidVolumeBounds::inside ( const Vector3D pos,
double  tol = 0. 
) const
overridevirtual

This method checks if position in the 3D volume frame is inside the cylinder

Parameters
posis the global position to be checked
tolis the tolerance applied
Returns
boolean indicator if position is inside

Implements Acts::VolumeBounds.

Definition at line 131 of file TrapezoidVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 131 of file TrapezoidVolumeBounds.cpp

References kdfinder::abs().

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TrapezoidVolumeBounds& Acts::TrapezoidVolumeBounds::operator= ( const TrapezoidVolumeBounds trabo)
default
Acts::OrientedSurfaces Acts::TrapezoidVolumeBounds::orientedSurfaces ( const Transform3D transform = Transform3D::Identity()) const
overridevirtual

Oriented surfaces, i.e. the decomposed boundary surfaces and the according navigation direction into the volume given the normal vector on the surface

Parameters
transformis the 3D transform to be applied to the boundary surfaces to position them in 3D space

It will throw an exception if the orientation prescription is not adequate

Returns
a vector of surfaces bounding this volume

Implements Acts::VolumeBounds.

Definition at line 52 of file TrapezoidVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 52 of file TrapezoidVolumeBounds.cpp

References Acts::backward, Acts::forward, M_PI, Acts::s_planeYZ, and Acts::s_planeZX.

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().

+ Here is the caller graph for this function:

std::ostream & Acts::TrapezoidVolumeBounds::toStream ( std::ostream &  sl) const
overridevirtual

Output Method for std::ostream.

Implements Acts::VolumeBounds.

Definition at line 145 of file TrapezoidVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 145 of file TrapezoidVolumeBounds.cpp

VolumeBounds::BoundsType Acts::TrapezoidVolumeBounds::type ( ) const
inlinefinalvirtual

Return the bounds type - for persistency optimization

Returns
is a BoundsType enum

Implements Acts::VolumeBounds.

Definition at line 95 of file TrapezoidVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 95 of file TrapezoidVolumeBounds.hpp

References Acts::VolumeBounds::eTrapezoid.

std::vector< double > Acts::TrapezoidVolumeBounds::values ( ) const
inlinefinalvirtual

Return the bound values as dynamically sized vector

Returns
this returns a copy of the internal values

Implements Acts::VolumeBounds.

Definition at line 182 of file TrapezoidVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 182 of file TrapezoidVolumeBounds.hpp

References m_values.

Member Data Documentation

std::shared_ptr<const RectangleBounds> Acts::TrapezoidVolumeBounds::m_faceAlphaRectangleBounds {nullptr}
private

Thhe face PlaneSurface attached to alpha (negative local x)

Definition at line 148 of file TrapezoidVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 148 of file TrapezoidVolumeBounds.hpp

std::shared_ptr<const RectangleBounds> Acts::TrapezoidVolumeBounds::m_faceBetaRectangleBounds {nullptr}
private

The face PlaneSurface attached to beta (positive local x)

Definition at line 150 of file TrapezoidVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 150 of file TrapezoidVolumeBounds.hpp

std::shared_ptr<const TrapezoidBounds> Acts::TrapezoidVolumeBounds::m_faceXYTrapezoidBounds {nullptr}
private

The face PlaneSurface parallel to local xy plane.

Definition at line 146 of file TrapezoidVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 146 of file TrapezoidVolumeBounds.hpp

std::shared_ptr<const RectangleBounds> Acts::TrapezoidVolumeBounds::m_faceZXRectangleBoundsBottom {nullptr}
private

The face PlaneSurface parallel to local zx plane, negative local y.

Definition at line 152 of file TrapezoidVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 152 of file TrapezoidVolumeBounds.hpp

std::shared_ptr<const RectangleBounds> Acts::TrapezoidVolumeBounds::m_faceZXRectangleBoundsTop {nullptr}
private

The face PlaneSurface parallel to local zx plane, positive local y.

Definition at line 154 of file TrapezoidVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 154 of file TrapezoidVolumeBounds.hpp

std::array<double, eSize> Acts::TrapezoidVolumeBounds::m_values
private

The internal version of the bounds can be float/double.

Definition at line 144 of file TrapezoidVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 144 of file TrapezoidVolumeBounds.hpp

Referenced by get(), TrapezoidVolumeBounds(), and values().


The documentation for this class was generated from the following files: