EIC Software
Reference for
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/sPHENIX/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 } |
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 |
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
enum Acts::AnnulusBounds::BoundValues : int |
Definition at line 34 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 34 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 avgPhi |
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 57 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 57 of file AnnulusBounds.hpp
|
default |
|
inlinefinalvirtual |
Return a reference radius for binning.
Implements Acts::DiscBounds.
Definition at line 243 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 243 of file AnnulusBounds.hpp
References eAveragePhi.
|
inlinefinalvirtual |
Return a reference radius for binning.
Implements Acts::DiscBounds.
Definition at line 239 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 239 of file AnnulusBounds.hpp
|
inlineprivatenoexcept |
Check the input values for consistency, will throw a logic_exception if consistency is not given
Definition at line 253 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 253 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 336 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 336 of file AnnulusBounds.cpp
References max, min, n, Acts::UnitConstants::u, and value.
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 94 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 94 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 229 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 229 of file AnnulusBounds.hpp
References kdfinder::abs(), eMaxPhiRel, eMinPhiRel, M_PI, and Acts::s_onSurfaceTolerance.
|
inline |
Access to the bound values
bValue | the class nested enum for the array access |
Definition at line 94 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 94 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 170 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 170 of file AnnulusBounds.cpp
References Acts::UnitConstants::C, cos(), Acts::BoundaryCheck::covariance(), Acts::eBoundLoc0, Acts::eBoundLoc1, 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(), and main().
|
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 134 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 134 of file AnnulusBounds.cpp
References cos(), Acts::eBoundLoc0, Acts::eBoundLoc1, m_rotationStripPC, and m_shiftPC.
|
inlinefinalvirtual |
Checks if this is inside the radial coverage given the a tolerance
Implements Acts::DiscBounds.
Definition at line 234 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 234 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 354 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 354 of file AnnulusBounds.cpp
|
inline |
Returns the left angular edge of the module.
Definition at line 225 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 225 of file AnnulusBounds.hpp
References eAveragePhi, and eMaxPhiRel.
Referenced by Acts::JsonGeometryConverter::addSurfaceToJson().
|
inline |
Returns the right angular edge of the module.
Definition at line 221 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 221 of file AnnulusBounds.hpp
References eAveragePhi, and eMinPhiRel.
Referenced by Acts::JsonGeometryConverter::addSurfaceToJson().
|
inlinefinalvirtual |
This method returns outer radius.
Implements Acts::DiscBounds.
Definition at line 217 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 217 of file AnnulusBounds.hpp
References eMaxR.
Referenced by Acts::JsonGeometryConverter::addSurfaceToJson(), and Acts::JsonGeometryConverter::DefaultBin().
|
inlinefinalvirtual |
This method returns inner radius.
Implements Acts::DiscBounds.
Definition at line 213 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 213 of file AnnulusBounds.hpp
References eMinR.
Referenced by Acts::JsonGeometryConverter::addSurfaceToJson(), and Acts::JsonGeometryConverter::DefaultBin().
|
private |
Private helper mehtod.
Definition at line 349 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 349 of file AnnulusBounds.cpp
|
private |
Transform the strip cartesien into the module polar system
vStripXy | the position in the cartesian strip system |
Definition at line 330 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 330 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 359 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 359 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 209 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 209 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 247 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 247 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 101 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 101 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 168 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 168 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
Referenced by corners().
|
private |
Definition at line 173 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 173 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
|
private |
Definition at line 165 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 165 of file AnnulusBounds.hpp
Referenced by corners().
|
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 154 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 154 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 162 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 162 of file AnnulusBounds.hpp
Referenced by corners().
|
private |
Definition at line 172 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 172 of file AnnulusBounds.hpp
|
private |
Definition at line 169 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 169 of file AnnulusBounds.hpp
|
private |
Definition at line 164 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 164 of file AnnulusBounds.hpp
Referenced by corners().
|
private |
Definition at line 174 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 174 of file AnnulusBounds.hpp
|
private |
Definition at line 157 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 157 of file AnnulusBounds.hpp
|
private |
Definition at line 158 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 158 of file AnnulusBounds.hpp
Referenced by corners().
|
private |
Definition at line 156 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 156 of file AnnulusBounds.hpp
|
private |
Definition at line 155 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 155 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
|
private |
Definition at line 151 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 151 of file AnnulusBounds.hpp