Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::CylinderVolumeBounds Class Reference

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

+ Inheritance diagram for Acts::CylinderVolumeBounds:
+ Collaboration diagram for Acts::CylinderVolumeBounds:

Public Types

enum  BoundValues : unsigned int {
  eMinR = 0, eMaxR = 1, eHalfLengthZ = 2, eHalfPhiSector = 3,
  eAveragePhi = 4, eBevelMinZ = 5, eBevelMaxZ = 6, 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

 CylinderVolumeBounds ()=delete
 
 CylinderVolumeBounds (double rmin, double rmax, double halfz, double halfphi=M_PI, double avgphi=0., double bevelMinZ=0., double bevelMaxZ=0.) noexcept(false)
 
 buildSurfaceBounds ()
 
 CylinderVolumeBounds (const std::array< double, eSize > &values) noexcept(false)
 
 CylinderVolumeBounds (const CylinderBounds &cBounds, double thickness) noexcept(false)
 
 CylinderVolumeBounds (const RadialBounds &rBounds, double thickness) noexcept(false)
 
 CylinderVolumeBounds (const CylinderVolumeBounds &cylbo)=default
 
 ~CylinderVolumeBounds () override=default
 
CylinderVolumeBoundsoperator= (const CylinderVolumeBounds &cylbo)=default
 
VolumeBounds::BoundsType type () const final
 
std::vector< doublevalues () const final
 
bool inside (const Vector3 &pos, double tol=0.) const override
 
OrientedSurfaces orientedSurfaces (const Transform3 &transform=Transform3::Identity()) const override
 
Volume::BoundingBox boundingBox (const Transform3 *trf=nullptr, const Vector3 &envelope={0, 0, 0}, const Volume *entity=nullptr) const final
 
Vector3 binningOffset (BinningValue bValue) const override
 
double binningBorder (BinningValue bValue) const override
 
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
 

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
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
RadialBounds
m_discBounds {nullptr}
 Bounds of the bottom/top Radial.
 
std::shared_ptr< const
PlanarBounds
m_sectorPlaneBounds {nullptr}
 Bounds of the sector planes.
 

Detailed Description

[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] :

Definition at line 72 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 72 of file CylinderVolumeBounds.hpp

Member Enumeration Documentation

for streaming and access

Enumerator:
eMinR 
eMaxR 
eHalfLengthZ 
eHalfPhiSector 
eAveragePhi 
eBevelMinZ 
eBevelMaxZ 
eSize 

Definition at line 75 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 75 of file CylinderVolumeBounds.hpp

Constructor & Destructor Documentation

Acts::CylinderVolumeBounds::CylinderVolumeBounds ( )
delete
Acts::CylinderVolumeBounds::CylinderVolumeBounds ( double  rmin,
double  rmax,
double  halfz,
double  halfphi = M_PI,
double  avgphi = 0.,
double  bevelMinZ = 0.,
double  bevelMaxZ = 0. 
)
inlinenoexcept

Constructor

Parameters
rminThe inner radius of the cylinder
rmaxThe outer radius of the cylinder
halfzThe half length in z
halfphiThe half lopening angle
avgphiThe average phi value
bevelMinZThe bevel angle, in radians, for the negative side
bevelMaxZThe bevel angle, in radians, for the positive side

Definition at line 97 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 97 of file CylinderVolumeBounds.hpp

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

Constructor - from a fixed size array

Parameters
valuesThe bound values

Definition at line 109 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 109 of file CylinderVolumeBounds.hpp

References buildSurfaceBounds(), and checkConsistency().

+ Here is the call graph for this function:

Acts::CylinderVolumeBounds::CylinderVolumeBounds ( const CylinderBounds cBounds,
double  thickness 
)
noexcept

Constructor - extruded from cylinder bounds and thickness

Parameters
cBoundsthe cylinder bounds
thicknessof the extrusion

Definition at line 26 of file CylinderVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 26 of file CylinderVolumeBounds.cpp

References buildSurfaceBounds(), eR, and thickness.

+ Here is the call graph for this function:

Acts::CylinderVolumeBounds::CylinderVolumeBounds ( const RadialBounds rBounds,
double  thickness 
)
noexcept

Constructor - extruded from radial bounds and thickness

Parameters
rBoundsthe Radial bounds
thickness

Definition at line 44 of file CylinderVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 44 of file CylinderVolumeBounds.cpp

References buildSurfaceBounds(), double(), rBounds, and thickness.

+ Here is the call graph for this function:

Acts::CylinderVolumeBounds::CylinderVolumeBounds ( const CylinderVolumeBounds cylbo)
default

Copy Constructor

Parameters
cylbois the source cylinder volume bounds for the copy
Acts::CylinderVolumeBounds::~CylinderVolumeBounds ( )
overridedefault

Member Function Documentation

double Acts::CylinderVolumeBounds::binningBorder ( BinningValue  bValue) const
inlineoverridevirtual

Binning borders in double

Parameters
bValueis the type used for the binning

Reimplemented from Acts::VolumeBounds.

Definition at line 239 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 239 of file CylinderVolumeBounds.hpp

References Acts::VolumeBounds::binningBorder(), Acts::binR, Acts::binZ, eHalfLengthZ, eMaxR, and eMinR.

+ Here is the call graph for this function:

Vector3 Acts::CylinderVolumeBounds::binningOffset ( BinningValue  bValue) const
inlineoverridevirtual

Binning offset - overloaded for some R-binning types

Parameters
bValueis the type used for the binning

Reimplemented from Acts::VolumeBounds.

Definition at line 231 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 231 of file CylinderVolumeBounds.hpp

References Acts::VolumeBounds::binningOffset(), Acts::binR, Acts::binRPhi, eMaxR, and eMinR.

+ Here is the call graph for this function:

Acts::Volume::BoundingBox Acts::CylinderVolumeBounds::boundingBox ( const Transform3 trf = nullptr,
const Vector3 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 161 of file CylinderVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 161 of file CylinderVolumeBounds.cpp

References xmax, xmin, ymax, and ymin.

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

+ Here is the caller graph for this function:

void Acts::CylinderVolumeBounds::buildSurfaceBounds ( )

Definition at line 139 of file CylinderVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 139 of file CylinderVolumeBounds.cpp

References Acts::s_epsilon.

Referenced by CylinderVolumeBounds().

+ Here is the caller graph for this function:

void Acts::CylinderVolumeBounds::buildSurfaceBounds ( )
private

Helper method to create the surface bounds.

void Acts::CylinderVolumeBounds::checkConsistency ( )
inlineprivatenoexcept

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

Definition at line 267 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 267 of file CylinderVolumeBounds.hpp

References eAveragePhi, eBevelMaxZ, eBevelMinZ, eHalfLengthZ, eHalfPhiSector, eMaxR, eMinR, and Acts::detail::radian_sym().

Referenced by CylinderVolumeBounds().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Templated dumpT method

Template Parameters
stream_tThe type for the dump stream
Parameters
dtThe dump stream object

Definition at line 250 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 250 of file CylinderVolumeBounds.hpp

References eAveragePhi, eBevelMaxZ, eBevelMinZ, eHalfLengthZ, eHalfPhiSector, eMaxR, and eMinR.

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

Access to the bound values

Parameters
bValuethe class nested enum for the array access

Definition at line 190 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 190 of file CylinderVolumeBounds.hpp

References m_values.

Referenced by Acts::adjustBinUtility(), Acts::CylinderVolumeBuilder::analyzeContent(), Acts::Test::BOOST_AUTO_TEST_CASE(), Acts::Test::BOOST_DATA_TEST_CASE(), Acts::CylinderVolumeHelper::createContainerTrackingVolume(), Acts::CylinderVolumeHelper::estimateAndCheckDimension(), Acts::CylinderVolumeHelper::glueTrackingVolumes(), and Acts::CylinderVolumeBuilder::trackingVolume().

+ Here is the caller graph for this function:

bool Acts::CylinderVolumeBounds::inside ( const Vector3 pos,
double  tol = 0. 
) const
inlineoverridevirtual

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

Parameters
posis a global position to be checked
tolis the tolerance for the check

Implements Acts::VolumeBounds.

Definition at line 218 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 218 of file CylinderVolumeBounds.hpp

References eHalfLengthZ, eHalfPhiSector, eMaxR, eMinR, Acts::VectorHelpers::perp(), ActsTests::PropagationDatasets::phi, 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:

CylinderVolumeBounds& Acts::CylinderVolumeBounds::operator= ( const CylinderVolumeBounds cylbo)
default
Acts::OrientedSurfaces Acts::CylinderVolumeBounds::orientedSurfaces ( const Transform3 transform = Transform3::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 61 of file CylinderVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 61 of file CylinderVolumeBounds.cpp

References Acts::Test::cSurface, eAveragePhi, eBevelMaxZ, eBevelMinZ, eHalfLengthZ, eHalfPhiSector, eMaxR, eMinR, m_discBounds, m_innerCylinderBounds, m_outerCylinderBounds, m_sectorPlaneBounds, testing::internal::move(), Acts::Direction::Negative, Acts::Direction::Positive, pSurface, and Acts::Test::transform.

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), Acts::Test::BOOST_DATA_TEST_CASE(), and Acts::GeometryView3D::drawSurfaceArray().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Output Method for std::ostream.

Implements Acts::VolumeBounds.

Definition at line 157 of file CylinderVolumeBounds.cpp.

View newest version in sPHENIX GitHub at line 157 of file CylinderVolumeBounds.cpp

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

Return the bounds type - for persistency optimization

Returns
is a BoundsType enum

Implements Acts::VolumeBounds.

Definition at line 137 of file CylinderVolumeBounds.hpp.

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

References Acts::VolumeBounds::eCylinder.

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

View newest version in sPHENIX GitHub at line 261 of file CylinderVolumeBounds.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 RadialBounds> Acts::CylinderVolumeBounds::m_discBounds {nullptr}
private

Bounds of the bottom/top Radial.

Definition at line 200 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 200 of file CylinderVolumeBounds.hpp

Referenced by orientedSurfaces().

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

Bounds of the inner CylinderBounds.

Definition at line 196 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 196 of file CylinderVolumeBounds.hpp

Referenced by orientedSurfaces().

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

Bounds of the inner CylinderBounds.

Definition at line 198 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 198 of file CylinderVolumeBounds.hpp

Referenced by orientedSurfaces().

std::shared_ptr<const PlanarBounds> Acts::CylinderVolumeBounds::m_sectorPlaneBounds {nullptr}
private

Bounds of the sector planes.

Definition at line 202 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 202 of file CylinderVolumeBounds.hpp

Referenced by orientedSurfaces().

std::array<double, eSize> Acts::CylinderVolumeBounds::m_values {}
private

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

Definition at line 194 of file CylinderVolumeBounds.hpp.

View newest version in sPHENIX GitHub at line 194 of file CylinderVolumeBounds.hpp

Referenced by get(), and values().


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