Analysis Software
Documentation for sPHENIX simulation software
|
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 Vector2 &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 |
bool | inside (const Vector2 &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. | |
Vector2 | 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< Vector2 > | corners () const |
std::vector< Vector2 > | vertices (unsigned int lseg) const override |
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 Vector2 &lposition, double tolR, double tolPhi) const final |
Vector2 | stripXYToModulePC (const Vector2 &vStripXY) const |
Vector2 | closestOnSegment (const Vector2 &a, const Vector2 &b, const Vector2 &p, const SquareMatrix2 &weight) const |
Private helper method. | |
double | squaredNorm (const Vector2 &v, const SquareMatrix2 &weight) const |
Private helper method. | |
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 38 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 38 of file AnnulusBounds.hpp
enum Acts::AnnulusBounds::BoundValues : int |
Definition at line 40 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 40 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 63 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 63 of file AnnulusBounds.hpp
|
default |
|
inlinefinalvirtual |
Return a reference radius for binning.
Implements Acts::DiscBounds.
Definition at line 246 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 246 of file AnnulusBounds.hpp
References eAveragePhi.
|
inlinefinalvirtual |
Return a reference radius for binning.
Implements Acts::DiscBounds.
Definition at line 242 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 242 of file AnnulusBounds.hpp
|
inlineprivatenoexcept |
Check the input values for consistency, will throw a logic_exception if consistency is not given
Definition at line 256 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 256 of file AnnulusBounds.hpp
References eAveragePhi, eMaxPhiRel, eMaxR, eMinPhiRel, eMinR, Acts::detail::radian_sym(), and Acts::s_epsilon.
|
private |
Private helper method.
Definition at line 341 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 341 of file AnnulusBounds.cpp
References KFPMath::a, f, Acts::UnitConstants::min, n, physmon_ckf_tracking::u, and value.
std::vector< Acts::Vector2 > 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 proceeding clock-wise i.e. (max R; pos locX), (min R; pos locX), (min R; neg loc X), (max R: neg locX)
Definition at line 96 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 96 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 232 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 232 of file AnnulusBounds.hpp
References eMaxPhiRel, eMinPhiRel, and Acts::s_onSurfaceTolerance.
|
inline |
Access to the bound values
bValue | the class nested enum for the array access |
Definition at line 100 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 100 of file AnnulusBounds.hpp
References m_values.
Referenced by ActsFatras::PlanarSurfaceMask::annulusMask(), Acts::MappingMaterialDecorator::binnedSurfaceMaterial(), and Acts::Test::BOOST_AUTO_TEST_CASE().
|
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 175 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 175 of file AnnulusBounds.cpp
References A, C, Acts::BoundaryCheck::covariance(), INTTVtxZ::dphi, Acts::eBoundLoc0, Acts::eBoundLoc1, m_inLeftModulePC, m_inLeftStripPC, m_inRightModulePC, m_inRightStripPC, m_outLeftModulePC, m_outLeftStripPC, m_outRightModulePC, m_outRightStripPC, m_rotationStripPC, m_shiftXY, 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 139 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 139 of file AnnulusBounds.cpp
References 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 237 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 237 of file AnnulusBounds.hpp
Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().
Acts::Vector2 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 362 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 362 of file AnnulusBounds.cpp
Referenced by ActsFatras::PlanarSurfaceMask::annulusMask().
|
inline |
Returns the left angular edge of the module.
Definition at line 228 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 228 of file AnnulusBounds.hpp
References eAveragePhi, and eMaxPhiRel.
|
inline |
Returns the right angular edge of the module.
Definition at line 224 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 224 of file AnnulusBounds.hpp
References eAveragePhi, and eMinPhiRel.
|
inlinefinalvirtual |
This method returns outer radius.
Implements Acts::DiscBounds.
Definition at line 220 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 220 of file AnnulusBounds.hpp
References eMaxR.
Referenced by Acts::MappingMaterialDecorator::binnedSurfaceMaterial().
|
inlinefinalvirtual |
This method returns inner radius.
Implements Acts::DiscBounds.
Definition at line 216 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 216 of file AnnulusBounds.hpp
References eMinR.
Referenced by Acts::MappingMaterialDecorator::binnedSurfaceMaterial().
|
private |
Private helper method.
Definition at line 357 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 357 of file AnnulusBounds.cpp
References testSigmaEff::v, and value.
|
private |
Transform the strip cartesian into the module polar system
vStripXY | the position in the cartesian strip system |
Definition at line 335 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 335 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 367 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 367 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 212 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 212 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 250 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 250 of file AnnulusBounds.hpp
References m_values.
|
overridevirtual |
This method returns the xy coordinates of the four corners of the bounds in module coordinates (in x/y) Starting from the upper right (max R, pos locX) and proceeding 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 |
lseg
> 0, the extrema points are given, which may slightly alter the number of segments returnedImplements Acts::DiscBounds.
Definition at line 103 of file AnnulusBounds.cpp.
View newest version in sPHENIX GitHub at line 103 of file AnnulusBounds.cpp
References m_inLeftStripXY, m_inRightStripXY, m_outLeftStripXY, m_outRightStripXY, ActsTests::PropagationDatasets::phi, Acts::VectorHelpers::phi(), and Acts::detail::VerticesHelper::phiSegments().
Referenced by ActsFatras::PlanarSurfaceMask::annulusMask(), and Acts::Svg::SurfaceConverter::convert().
|
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 168 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 168 of file AnnulusBounds.hpp
Referenced by corners().
|
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 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 160 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 160 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
|
private |
Definition at line 167 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 167 of file AnnulusBounds.hpp
Referenced by corners().
|
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 174 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 174 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
Referenced by corners().
|
private |
Definition at line 179 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 179 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 162 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 162 of file AnnulusBounds.hpp
|
private |
Definition at line 161 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 161 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
Definition at line 157 of file AnnulusBounds.hpp.
View newest version in sPHENIX GitHub at line 157 of file AnnulusBounds.hpp