ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
|
Class that implements a (potentially asymmetric) bounds with difference between surface bound center and surface coordinate center. More...
#include <acts/blob/master/Core/include/Acts/Surfaces/AnnulusBounds.hpp>
Public Types | |
enum | BoundValues : int { eMinR = 0, eMaxR = 1, eMinPhiRel = 2, eMaxPhiRel = 3, eAveragePhi = 4, eOriginX = 5, eOriginY = 6, eSize = 7 } |
using | Transform2D = Eigen::Affine2d |
Public Member Functions | |
AnnulusBounds ()=delete | |
AnnulusBounds (double minR, double maxR, double minPhiRel, double maxPhiRel, const Vector2D &moduleOrigin={0, 0}, double avgPhi=0) noexcept(false) | |
Default constructor from parameters. | |
AnnulusBounds (const AnnulusBounds &source)=default | |
SurfaceBounds::BoundsType | type () const final |
std::vector< double > | values () const final |
virtual bool | inside (const Vector2D &lposition, const BoundaryCheck &bcheck) const final |
virtual double | distanceToBoundary (const Vector2D &lposition) const final |
std::ostream & | toStream (std::ostream &sl) const final |
double | get (BoundValues bValue) const |
double | phiMin () const |
Returns the right angular edge of the module. | |
double | phiMax () const |
Returns the left angular edge of the module. | |
bool | coversFullAzimuth () const final |
Returns true for full phi coverage. | |
bool | insideRadialBounds (double R, double tolerance=0.) const final |
double | binningValueR () const final |
Return a reference radius for binning. | |
double | binningValuePhi () const final |
Return a reference radius for binning. | |
Vector2D | moduleOrigin () const |
Returns moduleOrigin, but rotated out, so averagePhi is already considered. The module origin needs to consider the rotation introduced by averagePhi . | |
std::vector< Vector2D > | corners () const |
std::vector< Vector2D > | vertices (unsigned int lseg) const |
double | rMin () const final |
This method returns inner radius. | |
double | rMax () const final |
This method returns outer radius. | |
Private Member Functions | |
void | checkConsistency () noexcept(false) |
virtual bool | inside (const Vector2D &lposition, double tolR, double tolPhi) const final |
Vector2D | stripXYToModulePC (const Vector2D &vStripXY) const |
Vector2D | closestOnSegment (const Vector2D &a, const Vector2D &b, const Vector2D &p, const Eigen::Matrix< double, 2, 2 > &weight) const |
Private helper method. | |
double | squaredNorm (const Vector2D &v, const Eigen::Matrix< double, 2, 2 > &weight) const |
Private helper mehtod. | |
Class that implements a (potentially asymmetric) bounds with difference between surface bound center and surface coordinate center.
These bounds combine two different systems:
The measurement will be done in the strip system, with r/phi local coordinates.
Definition at line 32 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 32 of file AnnulusBounds.hpp
using Acts::AnnulusBounds::Transform2D = Eigen::Affine2d |
Definition at line 34 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 34 of file AnnulusBounds.hpp
Definition at line 36 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 36 of file AnnulusBounds.hpp
|
delete |
|
inlinenoexcept |
Default constructor from parameters.
minR | inner radius, in module system |
maxR | outer radius, in module system |
minPhiRel | right angular edge, in strip system, rel to avgOhi |
maxPhiRel | left angular edge, in strip system, rel to avgPhi |
moduleOrigin | The origin offset between the two systems. |
avgPhi | (Optional) internal rotation of this bounds object's local frame |
morigin
you need to actually calculate the cartesian offset Definition at line 59 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 59 of file AnnulusBounds.hpp
|
default |
|
inlinefinalvirtual |
Return a reference radius for binning.
Implements Acts::DiscBounds.
Definition at line 251 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 251 of file AnnulusBounds.hpp
References eAveragePhi.
|
inlinefinalvirtual |
Return a reference radius for binning.
Implements Acts::DiscBounds.
Definition at line 247 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 247 of file AnnulusBounds.hpp
|
inlineprivatenoexcept |
Check the input values for consistency, will throw a logic_exception if consistency is not given
Definition at line 261 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 261 of file AnnulusBounds.hpp
References kdfinder::abs(), eAveragePhi, eMaxPhiRel, eMaxR, eMinPhiRel, eMinR, Acts::detail::radian_sym(), and Acts::s_epsilon.
|
private |
Private helper method.
Definition at line 418 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 418 of file AnnulusBounds.cpp
std::vector< Acts::Vector2D > Acts::AnnulusBounds::corners | ( | ) | const |
This method returns the four corners of the bounds in polar coordinates Starting from the upper right (max R, pos locX) and proceding clock-wise i.e. (max R; pos locX), (min R; pos locX), (min R; neg loc X), (max R: neg locX)
Definition at line 89 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 89 of file AnnulusBounds.cpp
References m_inLeftStripPC, m_inRightStripPC, m_outLeftStripPC, m_outRightStripPC, and m_rotationStripPC.
|
inlinefinalvirtual |
Returns true for full phi coverage.
Implements Acts::DiscBounds.
Definition at line 237 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 237 of file AnnulusBounds.hpp
References kdfinder::abs(), eMaxPhiRel, eMinPhiRel, M_PI, and Acts::s_onSurfaceTolerance.
|
finalvirtual |
Minimal distance to boundary ( > 0 if outside and <=0 if inside)
lposition | is the local position to check for the distance |
Implements Acts::SurfaceBounds.
Definition at line 325 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 325 of file AnnulusBounds.cpp
References kdfinder::abs(), Acts::eLOC_PHI, Acts::eLOC_R, m_inLeftModulePC, m_inLeftStripXY, m_inRightModulePC, m_inRightStripXY, m_outLeftStripXY, m_outRightStripXY, m_rotationStripPC, m_shiftXY, max, norm, Acts::VectorHelpers::phi(), and weight.
|
inline |
Access to the bound values
bValue | the class nested enum for the array access |
Definition at line 102 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 102 of file AnnulusBounds.hpp
References m_values.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), and Acts::JsonGeometryConverter::DefaultBin().
|
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.
lposition | Local position (assumed to be in right surface frame) |
bcheck | boundary check directive |
Implements Acts::SurfaceBounds.
Definition at line 165 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 165 of file AnnulusBounds.cpp
References A(), B(), C(), Acts::BoundaryCheck::covariance(), Acts::eLOC_PHI, Acts::eLOC_R, Acts::eLOC_X, Acts::eLOC_Y, m_inLeftModulePC, m_inLeftStripPC, m_inRightModulePC, m_inRightStripPC, m_outLeftModulePC, m_outLeftStripPC, m_outRightModulePC, m_outRightStripPC, m_rotationStripPC, m_shiftXY, max, Acts::BoundaryCheck::tolerance(), and Acts::BoundaryCheck::type().
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
finalprivatevirtual |
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.
lposition | Local position (assumed to be in right surface frame) |
tolR | tolerance on the radius |
tolPhi | tolerance on the polar angle phi |
Definition at line 129 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 129 of file AnnulusBounds.cpp
References Acts::eLOC_PHI, Acts::eLOC_R, m_rotationStripPC, and m_shiftPC.
|
inlinefinalvirtual |
Checks if this is inside the radial coverage given the a tolerance
Implements Acts::DiscBounds.
Definition at line 242 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 242 of file AnnulusBounds.hpp
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
Acts::Vector2D Acts::AnnulusBounds::moduleOrigin | ( | ) | const |
Returns moduleOrigin, but rotated out, so averagePhi
is already considered. The module origin needs to consider the rotation introduced by averagePhi
.
Definition at line 436 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 436 of file AnnulusBounds.cpp
|
inline |
Returns the left angular edge of the module.
Definition at line 233 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 233 of file AnnulusBounds.hpp
References eAveragePhi, and eMaxPhiRel.
Referenced by Acts::JsonGeometryConverter::addSurfaceToJson(), and Acts::ProtoLayer::measure().
|
inline |
Returns the right angular edge of the module.
Definition at line 229 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 229 of file AnnulusBounds.hpp
References eAveragePhi, and eMinPhiRel.
Referenced by Acts::JsonGeometryConverter::addSurfaceToJson(), and Acts::ProtoLayer::measure().
|
inlinefinalvirtual |
This method returns outer radius.
Implements Acts::DiscBounds.
Definition at line 225 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 225 of file AnnulusBounds.hpp
References eMaxR.
Referenced by Acts::JsonGeometryConverter::addSurfaceToJson(), Acts::JsonGeometryConverter::DefaultBin(), and Acts::ProtoLayer::measure().
|
inlinefinalvirtual |
This method returns inner radius.
Implements Acts::DiscBounds.
Definition at line 221 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 221 of file AnnulusBounds.hpp
References eMinR.
Referenced by Acts::JsonGeometryConverter::addSurfaceToJson(), Acts::JsonGeometryConverter::DefaultBin(), and Acts::ProtoLayer::measure().
|
private |
Private helper mehtod.
Definition at line 431 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 431 of file AnnulusBounds.cpp
References v.
|
private |
Transform the strip cartesien into the module polar system
vStripXy | the position in the cartesian strip system |
Definition at line 412 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 412 of file AnnulusBounds.cpp
References m_shiftXY, and Acts::VectorHelpers::phi().
|
finalvirtual |
Outstream operator
sl | is the ostream to be dumped into |
Implements Acts::SurfaceBounds.
Definition at line 441 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 441 of file AnnulusBounds.cpp
References m_shiftPC, m_shiftXY, and Acts::Test::phiMin.
|
inlinefinalvirtual |
Return the bounds type - for persistency optimization
Implements Acts::SurfaceBounds.
Definition at line 217 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 217 of file AnnulusBounds.hpp
References Acts::SurfaceBounds::eAnnulus.
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
|
inlinefinalvirtual |
Return the bound values as dynamically sized vector
Implements Acts::SurfaceBounds.
Definition at line 255 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 255 of file AnnulusBounds.hpp
References m_values.
|
virtual |
This method returns the xy coordinates of the four corners of the bounds in module coorindates (in x/y) Starting from the upper right (max R, pos locX) and proceding clock-wise i.e. (max R; pos locX), (min R; pos locX), (min R; neg loc X), (max R: neg locX)
lseg | the number of segments used to approximate and eventually curved line |
Implements Acts::DiscBounds.
Definition at line 96 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 96 of file AnnulusBounds.cpp
References m_inLeftStripXY, m_inRightStripXY, m_outLeftStripXY, m_outRightStripXY, Acts::VectorHelpers::phi(), and Acts::detail::VerticesHelper::phiSegments().
|
private |
Definition at line 176 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 176 of file AnnulusBounds.hpp
|
private |
Definition at line 171 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 171 of file AnnulusBounds.hpp
Referenced by corners().
|
private |
Definition at line 181 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 181 of file AnnulusBounds.hpp
|
private |
Definition at line 178 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 178 of file AnnulusBounds.hpp
|
private |
Definition at line 173 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 173 of file AnnulusBounds.hpp
Referenced by corners().
|
private |
Definition at line 183 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 183 of file AnnulusBounds.hpp
|
private |
Definition at line 162 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 162 of file AnnulusBounds.hpp
|
private |
Definition at line 175 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 175 of file AnnulusBounds.hpp
|
private |
Definition at line 170 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 170 of file AnnulusBounds.hpp
Referenced by corners().
|
private |
Definition at line 180 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 180 of file AnnulusBounds.hpp
|
private |
Definition at line 177 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 177 of file AnnulusBounds.hpp
|
private |
Definition at line 172 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 172 of file AnnulusBounds.hpp
Referenced by corners().
|
private |
Definition at line 182 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 182 of file AnnulusBounds.hpp
|
private |
Definition at line 165 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 165 of file AnnulusBounds.hpp
|
private |
Definition at line 166 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 166 of file AnnulusBounds.hpp
Referenced by corners().
|
private |
Definition at line 164 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 164 of file AnnulusBounds.hpp
|
private |
Definition at line 163 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 163 of file AnnulusBounds.hpp
|
private |
Definition at line 167 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 167 of file AnnulusBounds.hpp
|
private |
Definition at line 159 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 159 of file AnnulusBounds.hpp