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

#include <acts/blob/master/Core/include/Acts/Surfaces/EllipseBounds.hpp>

+ Inheritance diagram for Acts::EllipseBounds:
+ Collaboration diagram for Acts::EllipseBounds:

Public Types

enum  BoundValues {
  eInnerRx = 0, eInnerRy = 1, eOuterRx = 2, eOuterRy = 3,
  eHalfPhiSector = 4, eAveragePhi = 5, eSize = 6
}
 

Public Member Functions

 EllipseBounds ()=delete
 
 EllipseBounds (double innerRx, double innerRy, double outerRx, double outerRy, double halfPhi=M_PI, double averagePhi=0.) noexcept(false)
 
 m_boundingBox (m_values[eInnerRy], m_values[eOuterRy])
 
 EllipseBounds (const std::array< double, eSize > &values) noexcept(false)
 
 ~EllipseBounds () override=default
 
BoundsType type () const final
 
std::vector< double > values () const final
 
bool inside (const Vector2D &lposition, const BoundaryCheck &bcheck) const final
 
double distanceToBoundary (const Vector2D &lposition) const final
 
std::vector< Vector2Dvertices (unsigned int lseg) const final
 
const RectangleBoundsboundingBox () const final
 
std::ostream & toStream (std::ostream &sl) const final
 Output Method for std::ostream.
 
double get (BoundValues bValue) const
 

Private Member Functions

void checkConsistency () noexcept(false)
 

Private Attributes

std::array< double, eSizem_values
 
RectangleBounds m_boundingBox
 

Detailed Description

Class to describe the bounds for a planar ellispoid surface.

By providing an argument for hphisec, the bounds can be restricted to a phi-range around the center position.

Definition at line 31 of file EllipseBounds.hpp.

View newest version in sPHENIX GitHub at line 31 of file EllipseBounds.hpp

Member Enumeration Documentation

Enumerator:
eInnerRx 
eInnerRy 
eOuterRx 
eOuterRy 
eHalfPhiSector 
eAveragePhi 
eSize 

Definition at line 33 of file EllipseBounds.hpp.

View newest version in sPHENIX GitHub at line 33 of file EllipseBounds.hpp

Constructor & Destructor Documentation

Acts::EllipseBounds::EllipseBounds ( )
delete
Acts::EllipseBounds::EllipseBounds ( double  innerRx,
double  innerRy,
double  outerRx,
double  outerRy,
double  halfPhi = M_PI,
double  averagePhi = 0. 
)
inlinenoexcept

Constructor for full of an ellipsoid ring

Parameters
innerRxThe inner ellipse radius in x
innerRyThe inner ellipse radius in y
outerRxThe outer ellipse radius in x
outerRyThe outer ellipse radius in y
halfPhispanning phi sector (is set to pi as default)
averagePhiaverage phi (is set to 0. as default)

Definition at line 53 of file EllipseBounds.hpp.

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

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

Constructor - from fixed size array

Parameters
valuesThe parameter values

Definition at line 63 of file EllipseBounds.hpp.

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

References checkConsistency().

+ Here is the call graph for this function:

Acts::EllipseBounds::~EllipseBounds ( )
overridedefault

Member Function Documentation

const Acts::RectangleBounds & Acts::EllipseBounds::boundingBox ( ) const
finalvirtual

Bounding box parameters

Returns
rectangle bounds for a bounding box

Implements Acts::PlanarBounds.

Definition at line 125 of file EllipseBounds.cpp.

View newest version in sPHENIX GitHub at line 125 of file EllipseBounds.cpp

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

+ Here is the caller graph for this function:

void Acts::EllipseBounds::checkConsistency ( )
inlineprivatenoexcept

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

Definition at line 129 of file EllipseBounds.hpp.

View newest version in sPHENIX GitHub at line 129 of file EllipseBounds.hpp

References eAveragePhi, eHalfPhiSector, eInnerRx, eOuterRx, M_PI, and Acts::detail::radian_sym().

Referenced by EllipseBounds(), and m_boundingBox().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double Acts::EllipseBounds::distanceToBoundary ( const Vector2D lposition) const
finalvirtual

Minimal distance to boundary ( > 0 if outside and <=0 if inside)

Parameters
lpositionis the local position to check for the distance
Returns
is a signed distance parameter

Implements Acts::SurfaceBounds.

Definition at line 54 of file EllipseBounds.cpp.

View newest version in sPHENIX GitHub at line 54 of file EllipseBounds.cpp

References a, kdfinder::abs(), b, Acts::eLOC_X, Acts::eLOC_Y, fb(), M_PI, min, Acts::VectorHelpers::perp(), phi, r, Acts::detail::radian_sym(), and sn.

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

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Access to the bound values

Parameters
bValuethe class nested enum for the array access

Definition at line 112 of file EllipseBounds.hpp.

View newest version in sPHENIX GitHub at line 112 of file EllipseBounds.hpp

References m_values.

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

+ Here is the caller graph for this function:

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

This method checks if the point given in the local coordinates is between two ellipsoids if only tol0 is given and additional in the phi sector is tol1 is given

Parameters
lpositionLocal position (assumed to be in right surface frame)
bcheckboundary check directive
Returns
boolean indicator for the success of this operation
Warning
This only works for tolerance-based checks

Implements Acts::SurfaceBounds.

Definition at line 29 of file EllipseBounds.cpp.

View newest version in sPHENIX GitHub at line 29 of file EllipseBounds.cpp

References Acts::eLOC_X, Acts::eLOC_Y, Acts::BoundaryCheck::m_tolerance, Acts::VectorHelpers::phi(), phi, Acts::detail::radian_sym(), and square().

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::EllipseBounds::m_boundingBox ( m_values  [eInnerRy],
m_values  [eOuterRy] 
)
inline

Definition at line 56 of file EllipseBounds.hpp.

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

References checkConsistency().

+ Here is the call graph for this function:

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

Output Method for std::ostream.

Implements Acts::SurfaceBounds.

Definition at line 130 of file EllipseBounds.cpp.

View newest version in sPHENIX GitHub at line 130 of file EllipseBounds.cpp

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

+ Here is the caller graph for this function:

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

Return the bounds type - for persistency optimization

Returns
is a BoundsType enum

Implements Acts::SurfaceBounds.

Definition at line 20 of file EllipseBounds.cpp.

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

References Acts::SurfaceBounds::eEllipse.

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

+ Here is the caller graph for this function:

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

View newest version in sPHENIX GitHub at line 123 of file EllipseBounds.hpp

References m_values.

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

+ Here is the caller graph for this function:

std::vector< Acts::Vector2D > Acts::EllipseBounds::vertices ( unsigned int  lseg) const
finalvirtual

Return the vertices

Parameters
lsegthe number of segments used to approximate and eventually curved line, here it refers to the full 2PI Ellipse
Note
the number of segements to may be altered by also providing the extremas in all direction
Returns
vector for vertices in 2D

Implements Acts::PlanarBounds.

Definition at line 118 of file EllipseBounds.cpp.

View newest version in sPHENIX GitHub at line 118 of file EllipseBounds.cpp

References Acts::detail::VerticesHelper::ellispoidVertices().

+ Here is the call graph for this function:

Member Data Documentation

RectangleBounds Acts::EllipseBounds::m_boundingBox
private

Definition at line 116 of file EllipseBounds.hpp.

View newest version in sPHENIX GitHub at line 116 of file EllipseBounds.hpp

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

Definition at line 115 of file EllipseBounds.hpp.

View newest version in sPHENIX GitHub at line 115 of file EllipseBounds.hpp

Referenced by get(), and values().


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