![]() |
ATLAS Offline Software
|
Class that implements the asymmetric shape of the ITk strip endcap modules. More...
#include <AnnulusBoundsPC.h>
Public Types | |
| enum | BoundValues { bv_minR , bv_maxR , bv_phiMin , bv_phiMax , bv_phiAvg , bv_originX , bv_originY } |
| enum | BoundsType { Cone = 0 , Cylinder = 1 , Diamond = 2 , Disc = 3 , Ellipse = 5 , Rectangle = 6 , RotatedTrapezoid = 7 , Trapezoid = 8 , Triangle = 9 , DiscTrapezoidal = 10 , Annulus = 11 , Other = 12 } |
| This enumerator simplifies the persistency, by saving a dynamic_cast to happen. More... | |
Public Member Functions | |
| AnnulusBoundsPC (double minR, double maxR, double phiMin, double phiMax, Amg::Vector2D moduleOrigin={0, 0}, double phiAvg=0) | |
| Default constructor from parameters. | |
| AnnulusBoundsPC (const AnnulusBoundsPC &annbo)=default | |
| Copy constructor. | |
| AnnulusBoundsPC & | operator= (const AnnulusBoundsPC &sbo)=default |
| Assignment operator. | |
| AnnulusBoundsPC (AnnulusBoundsPC &&annbo)=default | |
| Move constructor. | |
| AnnulusBoundsPC & | operator= (AnnulusBoundsPC &&sbo)=default |
| Move assignment. | |
| virtual AnnulusBoundsPC * | clone () const override |
| clone() method to make deep copy in Surface copy constructor and for assigment operator of the Surface class. | |
| bool | operator== (const SurfaceBounds &sb) const override |
| Equality operator. | |
| SurfaceBounds::BoundsType | type () const override |
| Return the bounds type - for persistency optimization. | |
| bool | inside (const Amg::Vector2D &locpo, double tol1=0., double tol2=0.) const override final |
| Returns if a point in local coordinates is inside the bounds. | |
| bool | inside (const Amg::Vector2D &locpo, const BoundaryCheck &bchk) const override final |
| Returns if a point in local coordinates is inside the bounds. | |
| bool | insideLoc1 (const Amg::Vector2D &locpo, double tol1=0.) const override final |
| Check if local point is inside of r bounds. | |
| bool | insideLoc2 (const Amg::Vector2D &locpo, double tol2=0.) const override final |
| Check if local point is inside of phi bounds. | |
| double | minDistance (const Amg::Vector2D &locpo) const override final |
| Return minimum distance a point is away from the bounds. | |
| double | r () const override |
| Returns middle radius. | |
| double | rMin () const |
| Returns inner radial bounds (module system) | |
| double | rMax () const |
| Returns outer radial bounds (module system) | |
| double | phiMin () const |
| Returns the right angular edge of the module. | |
| double | phiMax () const |
| Returns the left angular edge of the module. | |
| Amg::Vector2D | moduleOrigin () const |
Returns moduleOrigin, but rotated out, so avgPhi is already considered. | |
| MsgStream & | dump (MsgStream &sl) const override |
| helper which dumps the configuration into a stream. | |
| std::ostream & | dump (std::ostream &sl) const override |
| Output Method for std::ostream, to be overloaded by child classes. | |
| std::array< std::pair< double, double >, 4 > | corners () const |
| Returns the four corners of the bounds. | |
| virtual bool | operator!= (const SurfaceBounds &sb) const |
| Non-Equality operator. | |
Static Public Member Functions | |
| static std::pair< AnnulusBoundsPC, double > | fromCartesian (const AnnulusBounds &annbo) |
| Static factory method to produce an instance of this class from the cartesian implementation. | |
Protected Member Functions | |
| void | swap (double &b1, double &b2) |
| Swap method to be called from DiscBounds or TrapezoidalBounds. | |
| virtual void | initCache () |
| virtual initCache method for object persistency | |
Private Types | |
| using | Rotation2D = Eigen::Rotation2D<double> |
| using | Transform2D = Eigen::Transform<double, 2, Eigen::Affine> |
| using | Matrix2D = Eigen::Matrix<double, 2, 2> |
Private Member Functions | |
| Amg::Vector2D | stripXYToModulePC (const Amg::Vector2D &vStripXY) const |
Static Private Member Functions | |
| static Amg::Vector2D | closestOnSegment (const Amg::Vector2D &a, const Amg::Vector2D &b, const Amg::Vector2D &p, const Eigen::Matrix< double, 2, 2 > &weight) |
| static double | squaredNorm (const Amg::Vector2D &v, const Eigen::Matrix< double, 2, 2 > &weight) |
Class that implements the asymmetric shape of the ITk strip endcap modules.
Definition at line 30 of file AnnulusBoundsPC.h.
|
private |
Definition at line 34 of file AnnulusBoundsPC.h.
|
private |
Definition at line 32 of file AnnulusBoundsPC.h.
|
private |
Definition at line 33 of file AnnulusBoundsPC.h.
|
inherited |
This enumerator simplifies the persistency, by saving a dynamic_cast to happen.
Other is reserved for the GeometrySurfaces implementation.
| Enumerator | |
|---|---|
| Cone | |
| Cylinder | |
| Diamond | |
| Disc | |
| Ellipse | |
| Rectangle | |
| RotatedTrapezoid | |
| Trapezoid | |
| Triangle | |
| DiscTrapezoidal | |
| Annulus | |
| Other | |
Definition at line 58 of file SurfaceBounds.h.
| Enumerator | |
|---|---|
| bv_minR | |
| bv_maxR | |
| bv_phiMin | |
| bv_phiMax | |
| bv_phiAvg | |
| bv_originX | |
| bv_originY | |
Definition at line 40 of file AnnulusBoundsPC.h.
| Trk::AnnulusBoundsPC::AnnulusBoundsPC | ( | double | minR, |
| double | maxR, | ||
| double | phiMin, | ||
| double | phiMax, | ||
| Amg::Vector2D | moduleOrigin = {0, 0}, | ||
| double | phiAvg = 0 ) |
Default constructor from parameters.
| minR | inner radius, in module system |
| maxR | outer radius, in module system |
| phiMin | right angular edge, in strip system |
| phiMax | left angular edge, in strip system |
| moduleOrigin | The origin offset between the two systems. |
| phiAvg | (Optional) internal rotation of this bounds object's local frame |
moduleOrigin you need to actually calculate the cartesian offset Definition at line 11 of file AnnulusBoundsPC.cxx.
|
default |
Copy constructor.
|
default |
Move constructor.
|
overridevirtual |
clone() method to make deep copy in Surface copy constructor and for assigment operator of the Surface class.
Implements Trk::SurfaceBounds.
|
staticprivate |
Definition at line 505 of file AnnulusBoundsPC.cxx.
| std::array< std::pair< double, double >, 4 > Trk::AnnulusBoundsPC::corners | ( | ) | const |
Returns the four corners of the bounds.
Returns the module corners starting from the upper right (max R, pos locPhi) and proceding clock-wise, i.e. (max R; pos locPhi), (min R; pos locPhi), (min R; neg loc X), (max R; neg locPhi).
This method is only intended for debug purposes. If used for production code, this should be changed to a return-by-reference. This will necessitate the vector being stored in the class.
Definition at line 480 of file AnnulusBoundsPC.cxx.
|
overridevirtual |
helper which dumps the configuration into a stream.
| sl | The stream |
sl Implements Trk::SurfaceBounds.
Definition at line 454 of file AnnulusBoundsPC.cxx.
|
overridevirtual |
Output Method for std::ostream, to be overloaded by child classes.
Implements Trk::SurfaceBounds.
Definition at line 462 of file AnnulusBoundsPC.cxx.
|
static |
Static factory method to produce an instance of this class from the cartesian implementation.
| annbo | A reference to the original cartesian bounds object |
phiShift phiShift contains necessary information to (re)construct a transform that will perform this rotation. Definition at line 83 of file AnnulusBoundsPC.cxx.
|
inlineprotectedvirtualinherited |
virtual initCache method for object persistency
Reimplemented in Trk::ConeBounds, Trk::DiamondBounds, Trk::RotatedDiamondBounds, and Trk::RotatedTrapezoidBounds.
Definition at line 129 of file SurfaceBounds.h.
|
finaloverridevirtual |
Returns if a point in local coordinates is inside the bounds.
| locpo | Local position |
| bchk | The boundary check object to consult for inside checks |
Implements Trk::SurfaceBounds.
Definition at line 161 of file AnnulusBoundsPC.cxx.
|
finaloverridevirtual |
Returns if a point in local coordinates is inside the bounds.
| locpo | Local position |
| tol1 | Tolerance in r |
| tol2 | Tolerance in phi |
Implements Trk::SurfaceBounds.
Definition at line 122 of file AnnulusBoundsPC.cxx.
|
finaloverridevirtual |
Check if local point is inside of r bounds.
| locpo | Local position |
| tol1 | Tolerance in r |
Implements Trk::SurfaceBounds.
Definition at line 342 of file AnnulusBoundsPC.cxx.
|
finaloverridevirtual |
Check if local point is inside of phi bounds.
| locpo | Local position |
| tol2 | Tolerance in phi |
Implements Trk::SurfaceBounds.
Definition at line 331 of file AnnulusBoundsPC.cxx.
|
finaloverridevirtual |
Return minimum distance a point is away from the bounds.
| locpo | Local position |
locpo is considered in STRIP system, the distance will be calculated with cartesian metric. Implements Trk::SurfaceBounds.
Definition at line 375 of file AnnulusBoundsPC.cxx.
| Amg::Vector2D Trk::AnnulusBoundsPC::moduleOrigin | ( | ) | const |
Returns moduleOrigin, but rotated out, so avgPhi is already considered.
The module origin needs to consider the rotation introduced by avgPhi
Definition at line 527 of file AnnulusBoundsPC.cxx.
|
inlinevirtualinherited |
Non-Equality operator.
Reimplemented in Trk::InvalidBounds.
Definition at line 141 of file SurfaceBounds.h.
|
default |
Move assignment.
|
default |
Assignment operator.
|
overridevirtual |
Equality operator.
Implements Trk::SurfaceBounds.
|
inline |
Returns the left angular edge of the module.
Definition at line 143 of file AnnulusBoundsPC.h.
|
inline |
Returns the right angular edge of the module.
Definition at line 139 of file AnnulusBoundsPC.h.
|
overridevirtual |
Returns middle radius.
Implements Trk::SurfaceBounds.
Definition at line 449 of file AnnulusBoundsPC.cxx.
|
inline |
Returns outer radial bounds (module system)
Definition at line 135 of file AnnulusBoundsPC.h.
|
inline |
Returns inner radial bounds (module system)
Definition at line 131 of file AnnulusBoundsPC.h.
|
staticprivate |
Definition at line 521 of file AnnulusBoundsPC.cxx.
|
private |
Definition at line 498 of file AnnulusBoundsPC.cxx.
|
inlineprotectedinherited |
Swap method to be called from DiscBounds or TrapezoidalBounds.
Definition at line 133 of file SurfaceBounds.h.
|
overridevirtual |
Return the bounds type - for persistency optimization.
Implements Trk::SurfaceBounds.
|
private |
Definition at line 36 of file AnnulusBoundsPC.h.
|
private |
Definition at line 198 of file AnnulusBoundsPC.h.
|
private |
Definition at line 189 of file AnnulusBoundsPC.h.
|
private |
Definition at line 184 of file AnnulusBoundsPC.h.
|
private |
Definition at line 194 of file AnnulusBoundsPC.h.
|
private |
Definition at line 191 of file AnnulusBoundsPC.h.
|
private |
Definition at line 186 of file AnnulusBoundsPC.h.
|
private |
Definition at line 196 of file AnnulusBoundsPC.h.
|
private |
Definition at line 171 of file AnnulusBoundsPC.h.
|
private |
Definition at line 170 of file AnnulusBoundsPC.h.
|
private |
Definition at line 175 of file AnnulusBoundsPC.h.
|
private |
Definition at line 188 of file AnnulusBoundsPC.h.
|
private |
Definition at line 183 of file AnnulusBoundsPC.h.
|
private |
Definition at line 193 of file AnnulusBoundsPC.h.
|
private |
Definition at line 190 of file AnnulusBoundsPC.h.
|
private |
Definition at line 185 of file AnnulusBoundsPC.h.
|
private |
Definition at line 195 of file AnnulusBoundsPC.h.
|
private |
Definition at line 178 of file AnnulusBoundsPC.h.
|
private |
Definition at line 173 of file AnnulusBoundsPC.h.
|
private |
Definition at line 172 of file AnnulusBoundsPC.h.
|
private |
Definition at line 179 of file AnnulusBoundsPC.h.
|
private |
Definition at line 177 of file AnnulusBoundsPC.h.
|
private |
Definition at line 176 of file AnnulusBoundsPC.h.
|
private |
Definition at line 180 of file AnnulusBoundsPC.h.