Analysis Software
Documentation for sPHENIX simulation software
|
Helper methods for polyhedron vertices drawing and inside/outside checks. More...
Functions | |
std::vector< ActsScalar > | phiSegments (ActsScalar phiMin=-M_PI, ActsScalar phiMax=M_PI, const std::vector< ActsScalar > &phiRefs={}, ActsScalar phiTolerance=1e-6) |
template<typename vertex_t , typename transform_t > | |
void | createSegment (std::vector< vertex_t > &vertices, std::pair< ActsScalar, ActsScalar > rxy, ActsScalar phi1, ActsScalar phi2, unsigned int lseg, int addon=0, const vertex_t &offset=vertex_t::Zero(), const transform_t &transform=transform_t::Identity()) |
std::vector< Vector2 > | ellipsoidVertices (ActsScalar innerRx, ActsScalar innerRy, ActsScalar outerRx, ActsScalar outerRy, ActsScalar avgPhi=0., ActsScalar halfPhi=M_PI, unsigned int lseg=1) |
std::vector< Vector2 > | circularVertices (ActsScalar innerR, ActsScalar outerR, ActsScalar avgPhi=0., ActsScalar 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) |
bool | onHyperPlane (const std::vector< Vector3 > &vertices, ActsScalar tolerance=s_onSurfaceTolerance) |
Helper methods for polyhedron vertices drawing and inside/outside checks.
std::vector< Acts::Vector2 > Acts::detail::VerticesHelper::circularVertices | ( | ActsScalar | innerR, |
ActsScalar | outerR, | ||
ActsScalar | avgPhi = 0. , |
||
ActsScalar | halfPhi = M_PI , |
||
unsigned int | lseg = 1 |
||
) |
Construct vertices on an disc/wheel-like bound object.
innerR | The radius of the inner circle (sector) |
outerR | The radius of the outer circle (sector) |
avgPhi | The phi direction of the center if sector |
halfPhi | The half phi sector if sector |
lseg | The number of segments for for a full 2*pi segment |
Definition at line 97 of file VerticesHelper.cpp.
View newest version in sPHENIX GitHub at line 97 of file VerticesHelper.cpp
References ellipsoidVertices().
Referenced by Acts::RadialBounds::vertices().
void Acts::detail::VerticesHelper::createSegment | ( | std::vector< vertex_t > & | vertices, |
std::pair< ActsScalar, ActsScalar > | rxy, | ||
ActsScalar | phi1, | ||
ActsScalar | 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
vertex_t | Type of vertex to be applied |
transform_t | Optional transform |
vertices | [in,out] The 3D vertices to be filled |
rxy | The radius description if first +/= second: ellipse |
phi1 | The first phi value |
phi2 | The second phi value |
lseg | The number of segments for full 2*PI |
addon | The additional segments to be built |
offset | The out of plane offset position of the bow |
transform | The transform applied (optional) |
Definition at line 52 of file VerticesHelper.hpp.
View newest version in sPHENIX GitHub at line 52 of file VerticesHelper.hpp
References offset, ActsTests::PropagationDatasets::phi, and Acts::Test::transform.
Referenced by Acts::CylinderBounds::createCircles(), Acts::StrawSurface::polyhedronRepresentation(), and Acts::ConeSurface::polyhedronRepresentation().
std::vector< Acts::Vector2 > Acts::detail::VerticesHelper::ellipsoidVertices | ( | ActsScalar | innerRx, |
ActsScalar | innerRy, | ||
ActsScalar | outerRx, | ||
ActsScalar | outerRy, | ||
ActsScalar | avgPhi = 0. , |
||
ActsScalar | halfPhi = M_PI , |
||
unsigned int | lseg = 1 |
||
) |
Construct vertices on an ellipse-like bound object.
innerRx | The radius of the inner ellipse (in x), 0 if sector |
innerRy | The radius of the inner ellipse (in y), 0 if sector |
outerRx | The radius of the outer ellipse (in x) |
outerRy | The radius of the outer ellipse (in y) |
avgPhi | The phi direction of the center if sector |
halfPhi | The half phi sector if sector |
lseg | The number of segments for for a full 2*pi segment |
Definition at line 50 of file VerticesHelper.cpp.
View newest version in sPHENIX GitHub at line 50 of file VerticesHelper.cpp
References Acts::closed, phiSegments(), and Acts::s_onSurfaceTolerance.
Referenced by circularVertices(), and Acts::EllipseBounds::vertices().
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.
vertex_container_t | is an iterable container |
point | is the Vector2Type to check |
vertices | Forward 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 Vector2Type . |
Definition at line 113 of file VerticesHelper.hpp.
View newest version in sPHENIX GitHub at line 113 of file VerticesHelper.hpp
References parse_cmake_options::begin, physmon_vertexing::delta, end, and testSigmaEff::l1.
Referenced by Acts::BoundaryCheck::distance(), Acts::Polyhedron::extent(), and Acts::BoundaryCheck::isInside().
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.
vertex_t | is vector with [0],[1] access |
point | is the Vector2Type to check |
vertices | Forward 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 Vector2Type . |
Definition at line 159 of file VerticesHelper.hpp.
View newest version in sPHENIX GitHub at line 159 of file VerticesHelper.hpp
Referenced by Acts::BoundaryCheck::distance(), and Acts::BoundaryCheck::isInside().
bool Acts::detail::VerticesHelper::onHyperPlane | ( | const std::vector< Vector3 > & | vertices, |
ActsScalar | tolerance = s_onSurfaceTolerance |
||
) |
This method checks if a cloud of points are on 2D hyper-plane in 3D space.
vertices | The list of vertices to test |
tolerance | The allowed out of plane tolerance |
Definition at line 104 of file VerticesHelper.cpp.
View newest version in sPHENIX GitHub at line 104 of file VerticesHelper.cpp
References Acts::Test::tolerance.
Referenced by Acts::detail::Test::BOOST_AUTO_TEST_CASE(), and Acts::Polyhedron::extent().
std::vector< Acts::ActsScalar > Acts::detail::VerticesHelper::phiSegments | ( | ActsScalar | phiMin = -M_PI , |
ActsScalar | phiMax = M_PI , |
||
const std::vector< ActsScalar > & | phiRefs = {} , |
||
ActsScalar | phiTolerance = 1e-6 |
||
) |
A method that inserts the cartesian extrema points and segments a curved segment into sub segments
phiMin | the minimum Phi of the bounds object |
phiMax | the maximum Phi of the bounds object |
phiRef | is a vector of reference phi values to be included as well |
phiTolerance | is the tolerance for reference phi insertion |
Definition at line 14 of file VerticesHelper.cpp.
View newest version in sPHENIX GitHub at line 14 of file VerticesHelper.cpp
References Acts::Experimental::detail::BlueprintHelper::sort().
Referenced by Acts::CylinderBounds::createCircles(), ellipsoidVertices(), Acts::StrawSurface::polyhedronRepresentation(), Acts::ConeSurface::polyhedronRepresentation(), and Acts::AnnulusBounds::vertices().