Class AnnulusBounds¶
Defined in File AnnulusBounds.hpp
Inheritance Relationships¶
Base Type¶
public Acts::DiscBounds(Class DiscBounds)
Class Documentation¶
-
class
Acts::AnnulusBounds: public Acts::DiscBounds¶ Class that implements a (potentially asymmetric) bounds with difference between surface bound center and surface coordinate center.
These bounds combine two different systems:
module system : radial bounds centred on the moduleOrigin
strip system : phi bounds centred on the stripOrigin
The measurement will be done in the strip system, with r/phi local coordinates.
Public Types
Public 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.
- Note
For
moriginyou need to actually calculate the cartesian offset- Parameters
minR: inner radius, in module systemmaxR: outer radius, in module systemminPhiRel: right angular edge, in strip system, rel to avgPhimaxPhiRel: left angular edge, in strip system, rel to avgPhimoduleOrigin: The origin offset between the two systems.avgPhi: (Optional) internal rotation of this bounds object’s local frame
-
AnnulusBounds(const std::array<double, eSize> &values) noexcept(false)¶ Constructor - from parameters array.
- Parameters
values: The parameter array
-
AnnulusBounds(const AnnulusBounds &source) = default¶
-
double
binningValuePhi() const final¶ Return a reference radius for binning.
-
double
binningValueR() const final¶ Return a reference radius for binning.
-
std::vector<Vector2>
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)
-
bool
coversFullAzimuth() const final¶ Returns true for full phi coverage.
-
double
get(BoundValues bValue) const¶ Access to the bound values.
- Parameters
bValue: the class nested enum for the array access
-
bool
inside(const Vector2 &lposition, const BoundaryCheck &bcheck) const final¶ 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.
- Return
boolean indicator for the success of this operation
- Parameters
lposition: Local position (assumed to be in right surface frame)bcheck: boundary check directive
-
bool
insideRadialBounds(double R, double tolerance = 0.) const final¶ Checks if this is inside the radial coverage given the a tolerance.
-
Vector2
moduleOrigin() const¶ Returns moduleOrigin, but rotated out, so
averagePhiis already considered.The module origin needs to consider the rotation introduced by
averagePhi- Return
The origin of the local frame
-
double
phiMax() const¶ Returns the left angular edge of the module.
- Return
The left side angle
-
double
phiMin() const¶ Returns the right angular edge of the module.
- Return
The right side angle
-
double
rMax() const final¶ This method returns outer radius.
-
double
rMin() const final¶ This method returns inner radius.
-
std::ostream &
toStream(std::ostream &sl) const final¶ Outstream operator.
- Parameters
sl: is the ostream to be dumped into
-
SurfaceBounds::BoundsType
type() const final¶ Return the bounds type - for persistency optimization.
- Return
is a BoundsType enum
-
std::vector<double>
values() const final¶ Return the bound values as dynamically sized vector.
- Return
this returns a copy of the internal values
-
std::vector<Vector2>
vertices(unsigned int lseg) const¶ 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)
- Note
that that if
- Return
vector for vertices in 2D
- Parameters
lseg: the number of segments used to approximate and eventually curved line
- Parameters
lseg: > 0, the extrema points are given, which may slightly alter the number of segments returned