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

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

+ Inheritance diagram for Acts::CutoutCylinderVolumeBounds:
+ Collaboration diagram for Acts::CutoutCylinderVolumeBounds:

Public Types

enum  BoundValues : int {
  eMinR = 0, eMedR = 1, eMaxR = 2, eHalfLengthZ = 3,
  eHalfLengthZcutout = 4, eSize
}
 for streaming and access 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

 CutoutCylinderVolumeBounds ()=delete
 
 CutoutCylinderVolumeBounds (double rmin, double rmed, double rmax, double hlZ, double hlZc) noexcept(false)
 
 buildSurfaceBounds ()
 
 CutoutCylinderVolumeBounds (const std::array< double, eSize > &values) noexcept(false)
 
 ~CutoutCylinderVolumeBounds () override=default
 
VolumeBounds::BoundsType type () const final
 
std::vector< double > values () const final
 
bool inside (const Vector3D &gpos, 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
 
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 buildSurfaceBounds ()
 Create the surface bound objects.
 
void checkConsistency () noexcept(false)
 

Private Attributes

std::array< double, eSizem_values
 
std::shared_ptr< const
CylinderBounds
m_innerCylinderBounds {nullptr}
 
std::shared_ptr< const
CylinderBounds
m_cutoutCylinderBounds {nullptr}
 
std::shared_ptr< const
CylinderBounds
m_outerCylinderBounds {nullptr}
 
std::shared_ptr< const DiscBoundsm_outerDiscBounds {nullptr}
 
std::shared_ptr< const DiscBoundsm_innerDiscBounds {nullptr}
 

Detailed Description

Class which implements a cutout cylinder. This shape is bascially a cylinder, with another, smaller cylinder subtracted from the center. ------------------— rmax | | | |------—| | rmed | | | | ---— ---— rmin – hlZc – ------— hlZ ----—

Definition at line 40 of file CutoutCylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 40 of file CutoutCylinderVolumeBounds.hpp

Member Enumeration Documentation

for streaming and access

Enumerator:
eMinR 
eMedR 
eMaxR 
eHalfLengthZ 
eHalfLengthZcutout 
eSize 

Definition at line 43 of file CutoutCylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 43 of file CutoutCylinderVolumeBounds.hpp

Constructor & Destructor Documentation

Acts::CutoutCylinderVolumeBounds::CutoutCylinderVolumeBounds ( )
delete
Acts::CutoutCylinderVolumeBounds::CutoutCylinderVolumeBounds ( double  rmin,
double  rmed,
double  rmax,
double  hlZ,
double  hlZc 
)
inlinenoexcept

Constructor from defining parameters

Parameters
rminMinimum radius at the "choke points"
rmedThe medium radius (outer radius of the cutout)
rmaxThe outer radius of the overall shape
hlZThe longer halflength of the shape
hlZcThe cutout halflength of the shape

Definition at line 61 of file CutoutCylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 61 of file CutoutCylinderVolumeBounds.hpp

References rmax().

+ Here is the call graph for this function:

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

Constructor - from a fixed size array

Parameters
valuesThe bound values

Definition at line 71 of file CutoutCylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 71 of file CutoutCylinderVolumeBounds.hpp

References buildSurfaceBounds(), and checkConsistency().

+ Here is the call graph for this function:

Acts::CutoutCylinderVolumeBounds::~CutoutCylinderVolumeBounds ( )
overridedefault

Member Function Documentation

Acts::Volume::BoundingBox Acts::CutoutCylinderVolumeBounds::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 115 of file CutoutCylinderVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 115 of file CutoutCylinderVolumeBounds.cpp

References Acts::AxisAlignedBoundingBox< entity_t, value_t, DIM >::transformed().

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

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void Acts::CutoutCylinderVolumeBounds::buildSurfaceBounds ( )

Definition at line 140 of file CutoutCylinderVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 140 of file CutoutCylinderVolumeBounds.cpp

References Acts::s_epsilon.

Referenced by CutoutCylinderVolumeBounds().

+ Here is the caller graph for this function:

void Acts::CutoutCylinderVolumeBounds::buildSurfaceBounds ( )
private

Create the surface bound objects.

void Acts::CutoutCylinderVolumeBounds::checkConsistency ( )
inlineprivatenoexcept

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

Definition at line 153 of file CutoutCylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 153 of file CutoutCylinderVolumeBounds.hpp

References eHalfLengthZ, eHalfLengthZcutout, eMaxR, eMedR, and eMinR.

Referenced by CutoutCylinderVolumeBounds().

+ Here is the caller graph for this function:

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

Access to the bound values

Parameters
bValuethe class nested enum for the array access

Definition at line 127 of file CutoutCylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 127 of file CutoutCylinderVolumeBounds.hpp

References m_values.

Referenced by Acts::adjustBinUtility(), and Acts::Test::BOOST_AUTO_TEST_CASE().

+ Here is the caller graph for this function:

bool Acts::CutoutCylinderVolumeBounds::inside ( const Vector3D gpos,
double  tol = 0 
) const
overridevirtual

Inside method to test whether a point is inside the shape

Parameters
gposThe point to test
tolThe tolerance to test with
Returns
Whether the point is inside or not.

Implements Acts::VolumeBounds.

Definition at line 25 of file CutoutCylinderVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 25 of file CutoutCylinderVolumeBounds.cpp

References kdfinder::abs(), eHalfLengthZ, eHalfLengthZcutout, eMaxR, eMedR, eMinR, Acts::VectorHelpers::perp(), and Acts::VectorHelpers::phi().

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

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Acts::OrientedSurfaces Acts::CutoutCylinderVolumeBounds::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 47 of file CutoutCylinderVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 47 of file CutoutCylinderVolumeBounds.cpp

References Acts::backward, Acts::forward, Acts::index4, Acts::index5, Acts::index6, Acts::index7, Acts::negativeFaceXY, Acts::positiveFaceXY, Acts::Test::transform, Acts::tubeInnerCover, and Acts::tubeOuterCover.

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

+ Here is the caller graph for this function:

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

Write information about this instance to an outstream

Parameters
slThe outstream
Returns
The outstream

Implements Acts::VolumeBounds.

Definition at line 131 of file CutoutCylinderVolumeBounds.cpp.

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

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

+ Here is the caller graph for this function:

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

Return the bounds type - for persistency optimization

Returns
is a BoundsType enum

Implements Acts::VolumeBounds.

Definition at line 80 of file CutoutCylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 80 of file CutoutCylinderVolumeBounds.hpp

References Acts::VolumeBounds::eCutoutCylinder.

std::vector< double > Acts::CutoutCylinderVolumeBounds::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 147 of file CutoutCylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 147 of file CutoutCylinderVolumeBounds.hpp

References m_values.

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

+ Here is the caller graph for this function:

Member Data Documentation

std::shared_ptr<const CylinderBounds> Acts::CutoutCylinderVolumeBounds::m_cutoutCylinderBounds {nullptr}
private

Definition at line 134 of file CutoutCylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 134 of file CutoutCylinderVolumeBounds.hpp

std::shared_ptr<const CylinderBounds> Acts::CutoutCylinderVolumeBounds::m_innerCylinderBounds {nullptr}
private

Definition at line 133 of file CutoutCylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 133 of file CutoutCylinderVolumeBounds.hpp

std::shared_ptr<const DiscBounds> Acts::CutoutCylinderVolumeBounds::m_innerDiscBounds {nullptr}
private

Definition at line 137 of file CutoutCylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 137 of file CutoutCylinderVolumeBounds.hpp

std::shared_ptr<const CylinderBounds> Acts::CutoutCylinderVolumeBounds::m_outerCylinderBounds {nullptr}
private

Definition at line 135 of file CutoutCylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 135 of file CutoutCylinderVolumeBounds.hpp

std::shared_ptr<const DiscBounds> Acts::CutoutCylinderVolumeBounds::m_outerDiscBounds {nullptr}
private

Definition at line 136 of file CutoutCylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 136 of file CutoutCylinderVolumeBounds.hpp

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

Definition at line 130 of file CutoutCylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 130 of file CutoutCylinderVolumeBounds.hpp

Referenced by get(), and values().


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