Analysis Software
Documentation for sPHENIX simulation 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,
  eBevelMinZ = 4, eBevelMaxZ = 5, eSize = 6
}
 
- Public Types inherited from Acts::SurfaceBounds
enum  BoundsType : int {
  eCone = 0, eCylinder = 1, eDiamond = 2, eDisc = 3,
  eEllipse = 4, eLine = 5, eRectangle = 6, eTrapezoid = 7,
  eTriangle = 8, eDiscTrapezoid = 9, eConvexPolygon = 10, eAnnulus = 11,
  eBoundless = 12, eOther = 13
}
 

Public Member Functions

 CylinderBounds ()=delete
 
 CylinderBounds (double r, double halfZ, double halfPhi=M_PI, double avgPhi=0., double bevelMinZ=0., double bevelMaxZ=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< doublevalues () const final
 
bool inside (const Vector2 &lposition, const BoundaryCheck &bcheck) const final
 
bool inside3D (const Vector3 &position, const BoundaryCheck &bcheck=true) const
 
double get (BoundValues bValue) const
 
bool coversFullAzimuth () const
 Returns true for full phi coverage.
 
std::vector< Vector3createCircles (const Transform3 trans, size_t lseg) const
 
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)
 
Vector2 shifted (const Vector2 &lposition) const
 
ActsMatrix< 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} $.

CylinderBounds also supports beveled sides defined by an angle. Different angles can be defined on both sides of the cylinder. A positive angle is defined as "extruding" from the defined Zlength, while a negative angle is "intruding" on the Zlength.

  • - - +
    \ | / \ | / \ | / \ | / |/______________|/ 2 * ZhalfLength

Definition at line 49 of file CylinderBounds.hpp.

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

Member Enumeration Documentation

Enumerator:
eR 
eHalfLengthZ 
eHalfPhiSector 
eAveragePhi 
eBevelMinZ 
eBevelMaxZ 
eSize 

Definition at line 51 of file CylinderBounds.hpp.

View newest version in sPHENIX GitHub at line 51 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.,
double  bevelMinZ = 0.,
double  bevelMaxZ = 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
bevelMinZ(optional) The bevel on the negative z side
bevelMaxZ(optional) The bevel on the positive z sid The bevel on the positive z side

Definition at line 71 of file CylinderBounds.hpp.

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

References physmon_track_finding_ttbar::r.

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

Constructor - from fixed size array

Parameters
valuesThe parameter values

Definition at line 82 of file CylinderBounds.hpp.

View newest version in sPHENIX GitHub at line 82 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 160 of file CylinderBounds.hpp.

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

References eAveragePhi, eBevelMaxZ, eBevelMinZ, eHalfLengthZ, eHalfPhiSector, eR, 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 156 of file CylinderBounds.hpp.

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

References m_closed().

+ Here is the call graph for this function:

std::vector< Acts::Vector3 > Acts::CylinderBounds::createCircles ( const Transform3  trans,
size_t  lseg 
) const

Create the bows/circles on either side of the cylinder

Parameters
transis the global transform
lsegare the numbero if phi segments

Helper method to create the segment

Definition at line 141 of file CylinderBounds.cpp.

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

References Acts::detail::VerticesHelper::createSegment(), eR, Acts::detail::VerticesHelper::phiSegments(), testSigmaEff::v, and ActsExamples::HepMC3Event::vertices().

+ 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 118 of file CylinderBounds.hpp.

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

References m_values.

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

+ Here is the caller graph for this function:

bool Acts::CylinderBounds::inside ( const Vector2 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 44 of file CylinderBounds.cpp.

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

References Acts::Test::boundaryCheck, eR, Acts::BoundaryCheck::isInside(), Acts::BoundaryCheck::transformed(), and ActsExamples::HepMC3Event::vertices().

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 Vector3 position,
const BoundaryCheck bcheck = true 
) const

Specialized method for CylinderBounds that checks if a global position is within 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 94 of file CylinderBounds.cpp.

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

References eR, Acts::if(), Acts::BoundaryCheck::isInside(), Acts::BoundaryCheck::m_tolerance, Acts::BoundaryCheck::m_type, Acts::VectorHelpers::perp(), ActsTests::PropagationDatasets::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::ActsMatrix< 2, 2 > Acts::CylinderBounds::jacobian ( ) const
private

Return the jacobian into the polar coordinate.

Definition at line 35 of file CylinderBounds.cpp.

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

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

Acts::CylinderBounds::m_closed ( )
inline

Definition at line 75 of file CylinderBounds.hpp.

View newest version in sPHENIX GitHub at line 75 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::Vector2 Acts::CylinderBounds::shifted ( const Vector2 lposition) const
private

Helper method to shift into the phi-frame

Parameters
lpositionthe polar coordinates in the global frame

Definition at line 28 of file CylinderBounds.cpp.

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

References Acts::eBoundLoc0, Acts::eBoundLoc1, eR, 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 129 of file CylinderBounds.cpp.

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

References eR.

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 24 of file CylinderBounds.cpp.

View newest version in sPHENIX GitHub at line 24 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 150 of file CylinderBounds.hpp.

View newest version in sPHENIX GitHub at line 150 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 136 of file CylinderBounds.hpp.

View newest version in sPHENIX GitHub at line 136 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 134 of file CylinderBounds.hpp.

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

Referenced by get(), and values().


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