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

#include <acts/blob/sPHENIX/Core/include/Acts/Surfaces/CylinderBounds.hpp>

+ Inheritance diagram for Acts::CylinderBounds:
+ Collaboration diagram for Acts::CylinderBounds:

Public Types

enum  BoundValues : int {
  eR = 0, eHalfLengthZ = 1, eHalfPhiSector = 2, eAveragePhi = 3,
  eSize = 4
}
 
- Public Types inherited from Acts::SurfaceBounds
enum  BoundsType : int {
  eCone = 0, eCylinder = 1, eDiamond = 2, eDisc = 3,
  eEllipse = 5, eLine = 6, eRectangle = 7, eTrapezoid = 8,
  eTriangle = 9, eDiscTrapezoid = 10, eConvexPolygon = 11, eAnnulus = 12,
  eBoundless = 13, eOther = 14
}
 

Public Member Functions

 CylinderBounds ()=delete
 
 CylinderBounds (double r, double halfZ, double halfPhi=M_PI, double avgPhi=0.) noexcept(false)
 
 m_closed (std::abs(halfPhi-M_PI)< s_epsilon)
 
 CylinderBounds (const std::array< double, eSize > &values) noexcept(false)
 
 ~CylinderBounds () override=default
 
BoundsType type () const final
 
std::vector< double > values () const final
 
bool inside (const Vector2D &lposition, const BoundaryCheck &bcheck) const final
 
bool inside3D (const Vector3D &position, const BoundaryCheck &bcheck=true) const
 
double get (BoundValues bValue) const
 
bool coversFullAzimuth () const
 Returns true for full phi coverage.
 
std::ostream & toStream (std::ostream &sl) const final
 Output Method for std::ostream.
 
- Public Member Functions inherited from Acts::SurfaceBounds
virtual ~SurfaceBounds ()=default
 

Private Member Functions

void checkConsistency () noexcept(false)
 
Vector2D shifted (const Vector2D &lposition) const
 
ActsMatrixD< 2, 2 > jacobian () const
 Return the jacobian into the polar coordinate.
 

Private Attributes

std::array< double, eSizem_values
 The bound radius, half Z, half phi and average phi.
 
bool m_closed {false}
 Indicator if the bounds are closed.
 

Detailed Description

Bounds for a cylindrical Surface.

These bounds may be used for a CylinderSurface In case of bounds for a StraightLineSurface the radius determines the radius within a localPosition is regarded as inside bounds.

CylinderBounds also enhance the possibility of a cylinder segment with an opening angle $ 2\cdot\phi_{half}$ around an average $ \phi $ angle $ \phi_{ave} $.

Definition at line 35 of file CylinderBounds.hpp.

View newest version in sPHENIX GitHub at line 35 of file CylinderBounds.hpp

Member Enumeration Documentation

Enumerator:
eR 
eHalfLengthZ 
eHalfPhiSector 
eAveragePhi 
eSize 

Definition at line 37 of file CylinderBounds.hpp.

View newest version in sPHENIX GitHub at line 37 of file CylinderBounds.hpp

Constructor & Destructor Documentation

Acts::CylinderBounds::CylinderBounds ( )
delete
Acts::CylinderBounds::CylinderBounds ( double  r,
double  halfZ,
double  halfPhi = M_PI,
double  avgPhi = 0. 
)
inlinenoexcept

Constructor - full cylinder

Parameters
rThe radius of the cylinder
halfZThe half length in z
halfPhiThe half opening angle
avgPhi(optional) The phi value from which the opening angle spans

Definition at line 53 of file CylinderBounds.hpp.

View newest version in sPHENIX GitHub at line 53 of file CylinderBounds.hpp

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

Constructor - from fixed size array

Parameters
valuesThe parameter values

Definition at line 63 of file CylinderBounds.hpp.

View newest version in sPHENIX GitHub at line 63 of file CylinderBounds.hpp

References checkConsistency().

+ Here is the call graph for this function:

Acts::CylinderBounds::~CylinderBounds ( )
overridedefault

Member Function Documentation

void Acts::CylinderBounds::checkConsistency ( )
inlineprivatenoexcept

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

Definition at line 135 of file CylinderBounds.hpp.

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

References eAveragePhi, eHalfLengthZ, eHalfPhiSector, eR, M_PI, and Acts::detail::radian_sym().

Referenced by CylinderBounds(), and m_closed().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool Acts::CylinderBounds::coversFullAzimuth ( ) const
inline

Returns true for full phi coverage.

Definition at line 131 of file CylinderBounds.hpp.

View newest version in sPHENIX GitHub at line 131 of file CylinderBounds.hpp

References m_closed().

+ Here is the call graph for this function:

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

Access to the bound values

Parameters
bValuethe class nested enum for the array access

Definition at line 99 of file CylinderBounds.hpp.

View newest version in sPHENIX GitHub at line 99 of file CylinderBounds.hpp

References m_values.

Referenced by Acts::JsonGeometryConverter::addSurfaceToJson(), Acts::adjustBinUtility(), Acts::CylinderVolumeBuilder::analyzeContent(), Acts::Test::BOOST_AUTO_TEST_CASE(), Acts::Test::BOOST_FIXTURE_TEST_CASE(), Acts::LayerArrayCreator::createNavigationSurface(), Acts::JsonGeometryConverter::DefaultBin(), Acts::CylinderVolumeHelper::estimateAndCheckDimension(), and ActsExamples::RootMaterialTrackWriter::writeT().

+ Here is the caller graph for this function:

bool Acts::CylinderBounds::inside ( const Vector2D lposition,
const BoundaryCheck bcheck 
) const
finalvirtual

Inside check for the bounds object driven by the boundary check directive Each Bounds has a method inside, which checks if a LocalPosition is inside the bounds Inside can be called without/with tolerances.

Parameters
lpositionLocal position (assumed to be in right surface frame)
bcheckboundary check directive
Returns
boolean indicator for the success of this operation

Implements Acts::SurfaceBounds.

Definition at line 40 of file CylinderBounds.cpp.

View newest version in sPHENIX GitHub at line 40 of file CylinderBounds.cpp

References Acts::BoundaryCheck::isInside(), and Acts::BoundaryCheck::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:

bool Acts::CylinderBounds::inside3D ( const Vector3D position,
const BoundaryCheck bcheck = true 
) const

Specialized method for CylinderBounds that checks if a global position is within the the cylinder cover

Parameters
positionis the position in the cylinder frame
bcheckis the boundary check directive
Returns
boolean indicator for operation success

Definition at line 48 of file CylinderBounds.cpp.

View newest version in sPHENIX GitHub at line 48 of file CylinderBounds.cpp

References kdfinder::abs(), Acts::BoundaryCheck::isInside(), Acts::BoundaryCheck::m_tolerance, Acts::BoundaryCheck::m_type, Acts::VectorHelpers::perp(), phi, Acts::detail::radian_sym(), Acts::s_onSurfaceTolerance, and Acts::BoundaryCheck::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:

Acts::ActsMatrixD< 2, 2 > Acts::CylinderBounds::jacobian ( ) const
private

Return the jacobian into the polar coordinate.

Definition at line 31 of file CylinderBounds.cpp.

View newest version in sPHENIX GitHub at line 31 of file CylinderBounds.cpp

References Acts::eBoundLoc0, and Acts::eBoundLoc1.

Acts::CylinderBounds::m_closed ( )
inline

Definition at line 56 of file CylinderBounds.hpp.

View newest version in sPHENIX GitHub at line 56 of file CylinderBounds.hpp

References checkConsistency().

Referenced by coversFullAzimuth().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Acts::Vector2D Acts::CylinderBounds::shifted ( const Vector2D lposition) const
private

Helper method to shift into the phi-frame

Parameters
lpositionthe polar coordinates in the global frame

Definition at line 24 of file CylinderBounds.cpp.

View newest version in sPHENIX GitHub at line 24 of file CylinderBounds.cpp

References Acts::eBoundLoc0, Acts::eBoundLoc1, and Acts::detail::radian_sym().

+ Here is the call graph for this function:

std::ostream & Acts::CylinderBounds::toStream ( std::ostream &  sl) const
finalvirtual

Output Method for std::ostream.

Implements Acts::SurfaceBounds.

Definition at line 73 of file CylinderBounds.cpp.

View newest version in sPHENIX GitHub at line 73 of file CylinderBounds.cpp

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

+ Here is the caller graph for this function:

Acts::SurfaceBounds::BoundsType Acts::CylinderBounds::type ( ) const
finalvirtual

Return the bounds type - for persistency optimization

Returns
is a BoundsType enum

Implements Acts::SurfaceBounds.

Definition at line 20 of file CylinderBounds.cpp.

View newest version in sPHENIX GitHub at line 20 of file CylinderBounds.cpp

References Acts::SurfaceBounds::eCylinder.

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

+ Here is the caller graph for this function:

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

Return the bound values as dynamically sized vector

Returns
this returns a copy of the internal values

Implements Acts::SurfaceBounds.

Definition at line 125 of file CylinderBounds.hpp.

View newest version in sPHENIX GitHub at line 125 of file CylinderBounds.hpp

References m_values.

Member Data Documentation

bool Acts::CylinderBounds::m_closed {false}
private

Indicator if the bounds are closed.

Definition at line 111 of file CylinderBounds.hpp.

View newest version in sPHENIX GitHub at line 111 of file CylinderBounds.hpp

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

The bound radius, half Z, half phi and average phi.

Definition at line 109 of file CylinderBounds.hpp.

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

Referenced by get(), and values().


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