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

Helper method for set of vertices for polyhedrons drawing and inside/outside checks. More...

Functions

static std::vector< double > phiSegments (double phiMin=-M_PI, double phiMax=M_PI, std::vector< double > phiRefs={}, double phiTolerance=1e-6)
 
template<typename vertex_t , typename transform_t >
void createSegment (std::vector< vertex_t > &vertices, std::pair< double, double > rxy, double phi1, double phi2, unsigned int lseg, int addon=0, const vertex_t &offset=vertex_t::Zero(), const transform_t &transform=transform_t::Identity())
 
static std::vector< Vector2DellispoidVertices (double innerRx, double innerRy, double outerRx, double outerRy, double avgPhi=0., double halfPhi=M_PI, unsigned int lseg=1)
 
static std::vector< Vector2DcircularVertices (double innerR, double outerR, double avgPhi=0., double halfPhi=M_PI, unsigned int lseg=1)
 
template<typename vertex_t , typename vertex_container_t >
bool isInsidePolygon (const vertex_t &point, const vertex_container_t &vertices)
 
template<typename vertex_t >
bool isInsideRectangle (const vertex_t &point, const vertex_t &lowerLeft, const vertex_t &upperRight)
 

Detailed Description

Helper method for set of vertices for polyhedrons drawing and inside/outside checks.

Function Documentation

static std::vector<Vector2D> Acts::detail::VerticesHelper::circularVertices ( double  innerR,
double  outerR,
double  avgPhi = 0.,
double  halfPhi = M_PI,
unsigned int  lseg = 1 
)
static

Vertices on an disc/wheel-like bound object

Parameters
innerRThe radius of the inner circle (sector)
outerRThe radius of the outer circle (sector)
avgPhiThe phi direction of the center if sector
halfPhiThe half phi sector if sector
lsegThe number of segments for for a full 2*pi segment
Returns
a vector of 2d-vectors

Definition at line 172 of file VerticesHelper.hpp.

View newest version in sPHENIX GitHub at line 172 of file VerticesHelper.hpp

References ellispoidVertices().

Referenced by Acts::RadialBounds::vertices().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename vertex_t , typename transform_t >
void Acts::detail::VerticesHelper::createSegment ( std::vector< vertex_t > &  vertices,
std::pair< double, double >  rxy,
double  phi1,
double  phi2,
unsigned int  lseg,
int  addon = 0,
const vertex_t &  offset = vertex_t::Zero(),
const transform_t &  transform = transform_t::Identity() 
)

Helper method to create a regular 2 or 3 D segment between two phi values

Template Parameters
vertex_tType of vertex to be applied
transform_tOptional transform
Parameters
vertices[in,out] The 3D vertices to be filled
rxyThe radius description if first +/= second: ellipse
phi1The first phi value
phi2The second phi value
lsegThe number of segments for full 2*PI
addonThe additional segments to be built
offsetThe out of plane offset position of the bow
transformThe transform applied (optional)

Definition at line 84 of file VerticesHelper.hpp.

View newest version in sPHENIX GitHub at line 84 of file VerticesHelper.hpp

References kdfinder::abs(), M_PI, offset, phi, and Acts::Test::transform.

Referenced by Acts::StrawSurface::polyhedronRepresentation(), Acts::ConeSurface::polyhedronRepresentation(), and Acts::CylinderSurface::polyhedronRepresentation().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static std::vector<Vector2D> Acts::detail::VerticesHelper::ellispoidVertices ( double  innerRx,
double  innerRy,
double  outerRx,
double  outerRy,
double  avgPhi = 0.,
double  halfPhi = M_PI,
unsigned int  lseg = 1 
)
static

Vertices on an ellipse-like bound object

Parameters
innerRxThe radius of the inner ellipse (in x), 0 if sector
innerRyThe radius of the inner ellipse (in y), 0 if sector
outerRxThe radius of the outer ellipse (in x)
outerRyThe radius of the outer ellipse (in y)
avgPhiThe phi direction of the center if sector
halfPhiThe half phi sector if sector
lsegThe number of segments for for a full 2*pi segment
Returns
a vector of 2d-vectors

Definition at line 115 of file VerticesHelper.hpp.

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

References kdfinder::abs(), Acts::closed, M_PI, phiSegments(), and Acts::s_onSurfaceTolerance.

Referenced by circularVertices(), and Acts::EllipseBounds::vertices().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename vertex_t , typename vertex_container_t >
bool Acts::detail::VerticesHelper::isInsidePolygon ( const vertex_t &  point,
const vertex_container_t &  vertices 
)

Check if the point is inside the polygon w/o any tolerances

Template Parameters
vertex_container_tis an iterable container
Parameters
pointis the Vector2DType to check
verticesForward iterable container of convex polygon vertices. Calling std::begin/ std::end on the container must return an iterator where *it must be convertible to an Vector2DType.
Returns
bool for inside/outside

Definition at line 191 of file VerticesHelper.hpp.

View newest version in sPHENIX GitHub at line 191 of file VerticesHelper.hpp

References Acts::Test::delta, and CLHEP::normal().

Referenced by Acts::BoundaryCheck::distance(), Acts::Polyhedron::extent(), and Acts::BoundaryCheck::isInside().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename vertex_t >
bool Acts::detail::VerticesHelper::isInsideRectangle ( const vertex_t &  point,
const vertex_t &  lowerLeft,
const vertex_t &  upperRight 
)

Check if the point is inside the rectangle

Template Parameters
vertex_tis vector with [0],[1] access
Parameters
pointis the Vector2DType to check
verticesForward iterable container of convex polygon vertices. Calling std::begin/ std::end on the container must return an iterator where *it must be convertible to an Vector2DType.
Returns
bool for inside/outside

Definition at line 237 of file VerticesHelper.hpp.

View newest version in sPHENIX GitHub at line 237 of file VerticesHelper.hpp

Referenced by Acts::BoundaryCheck::distance(), and Acts::BoundaryCheck::isInside().

+ Here is the caller graph for this function:

static std::vector<double> Acts::detail::VerticesHelper::phiSegments ( double  phiMin = -M_PI,
double  phiMax = M_PI,
std::vector< double >  phiRefs = {},
double  phiTolerance = 1e-6 
)
static

A method that inserts the cartesian extrema points and segments a curved segment into sub segments

Parameters
phiMinthe minimum Phi of the bounds object
phiMaxthe maximum Phi of the bounds object
phiRefis a vector of reference phi values to be included as well
phiToleranceis the tolerance for reference phi insertion
Returns
a vector

Definition at line 32 of file VerticesHelper.hpp.

View newest version in sPHENIX GitHub at line 32 of file VerticesHelper.hpp

Referenced by ellispoidVertices(), Acts::StrawSurface::polyhedronRepresentation(), Acts::ConeSurface::polyhedronRepresentation(), Acts::CylinderSurface::polyhedronRepresentation(), and Acts::AnnulusBounds::vertices().

+ Here is the caller graph for this function: