ATLAS Offline Software
|
#include <RotatedTrapezoidBounds.h>
Public Types | |
enum | BoundValues { bv_halfX = 0, bv_minHalfY = 1, bv_maxHalfY = 2, bv_length = 3 } |
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 } |
Public Member Functions | |
RotatedTrapezoidBounds () | |
Default Constructor, needed for persistency. More... | |
RotatedTrapezoidBounds (const RotatedTrapezoidBounds &trabo)=default | |
Copy constructor. More... | |
RotatedTrapezoidBounds & | operator= (const RotatedTrapezoidBounds &sbo)=default |
Assignment operator. More... | |
RotatedTrapezoidBounds (RotatedTrapezoidBounds &&trabo) noexcept=default | |
Move constructor. More... | |
RotatedTrapezoidBounds & | operator= (RotatedTrapezoidBounds &&sbo) noexcept=default |
Move Assignment operator. More... | |
virtual | ~RotatedTrapezoidBounds ()=default |
Destructor. More... | |
RotatedTrapezoidBounds (double halex, double minhalex, double maxhalex) | |
Constructor for symmetric Trapezoid. More... | |
RotatedTrapezoidBounds (double halex, double minhalex, double maxhalex, double alpha) | |
Constructor for symmetric Trapezoid rotated around the X axis by alpha. More... | |
virtual RotatedTrapezoidBounds * | clone () const override |
Virtual constructor. More... | |
virtual BoundsType | type () const override |
Return the type of the bounds for persistency. More... | |
virtual bool | operator== (const SurfaceBounds &trabo) const override final |
Equality operator. More... | |
double | halflengthX () const |
This method returns the minimal halflength in X (first coordinate of local surface frame) More... | |
double | minHalflengthY () const |
This method returns the maximal halflength in X (first coordinate of local surface frame) More... | |
double | maxHalflengthY () const |
This method returns the halflength in Y (second coordinate of local surface frame) More... | |
virtual double | r () const override |
This method returns the maximal extension on the local plane. More... | |
virtual bool | inside (const Amg::Vector2D &locpo, double tol1=0., double tol2=0.) const override final |
The orientation of the Trapezoid is according to the figure above, in words: the shorter of the two parallel sides of the trapezoid intersects with the negative \( y \) - axis of the local frame. More... | |
virtual bool | inside (const Amg::Vector2D &locpo, const BoundaryCheck &bchk) const override final |
virtual bool | insideLoc1 (const Amg::Vector2D &locpo, double tol1=0.) const override final |
This method checks inside bounds in loc1. More... | |
virtual bool | insideLoc2 (const Amg::Vector2D &locpo, double tol2=0.) const override final |
This method checks inside bounds in loc2. More... | |
virtual double | minDistance (const Amg::Vector2D &pos) const override final |
Minimal distance to boundary ( > 0 if outside and <=0 if inside) More... | |
virtual MsgStream & | dump (MsgStream &sl) const override final |
Output Method for MsgStream. More... | |
virtual std::ostream & | dump (std::ostream &sl) const override final |
Output Method for std::ostream. More... | |
virtual bool | operator!= (const SurfaceBounds &sb) const |
Non-Equality operator. More... | |
Protected Member Functions | |
void | swap (double &b1, double &b2) |
Swap method to be called from DiscBounds or TrapezoidalBounds. More... | |
Private Member Functions | |
bool | isBelow (double locX, double fabsLocY, double tol1, double tol2) const |
isBelow() method for checking whether a point lies above or under a straight line More... | |
virtual void | initCache () override final |
Helper function for angle parameter initialization. More... | |
AmgSymMatrix (2) m_rotMat | |
Transformation matrix to define surface bounds which are tilted w.r.t. More... | |
Private Attributes | |
std::vector< TDD_real_t > | m_boundValues |
The internal storage of the bounds can be float/double. More... | |
TDD_real_t | m_kappa {0} |
TDD_real_t | m_delta {0} |
Friends | |
class | ::RotatedTrapezoidBoundsCnv_p1 |
Bounds for a rotated trapezoidal, planar Surface. Contrary to the TrapezoidBounds the local x axis builds the symmetry axis for a symmetric Trapezoid.
An arbitrary rotated trapezoidal shape has not been implemented yet, the TrapezoidBounds may be taken instead.
Definition at line 44 of file RotatedTrapezoidBounds.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.
for readibility
Enumerator | |
---|---|
bv_halfX | |
bv_minHalfY | |
bv_maxHalfY | |
bv_length |
Definition at line 49 of file RotatedTrapezoidBounds.h.
Trk::RotatedTrapezoidBounds::RotatedTrapezoidBounds | ( | ) |
Default Constructor, needed for persistency.
Definition at line 19 of file RotatedTrapezoidBounds.cxx.
|
default |
Copy constructor.
|
defaultnoexcept |
Move constructor.
|
virtualdefault |
Destructor.
Trk::RotatedTrapezoidBounds::RotatedTrapezoidBounds | ( | double | halex, |
double | minhalex, | ||
double | maxhalex | ||
) |
Constructor for symmetric Trapezoid.
Definition at line 28 of file RotatedTrapezoidBounds.cxx.
Trk::RotatedTrapezoidBounds::RotatedTrapezoidBounds | ( | double | halex, |
double | minhalex, | ||
double | maxhalex, | ||
double | alpha | ||
) |
Constructor for symmetric Trapezoid rotated around the X axis by alpha.
Definition at line 24 of file RotatedTrapezoidBounds.cxx.
|
inlineprivate |
Transformation matrix to define surface bounds which are tilted w.r.t.
the surfaces (e.g. Micromega stereo layers)
Definition at line 166 of file RotatedTrapezoidBounds.h.
|
overridevirtual |
Virtual constructor.
Implements Trk::SurfaceBounds.
|
finaloverridevirtual |
Output Method for MsgStream.
Implements Trk::SurfaceBounds.
Definition at line 217 of file RotatedTrapezoidBounds.cxx.
|
finaloverridevirtual |
Output Method for std::ostream.
Implements Trk::SurfaceBounds.
Definition at line 230 of file RotatedTrapezoidBounds.cxx.
double Trk::RotatedTrapezoidBounds::halflengthX | ( | ) | const |
This method returns the minimal halflength in X (first coordinate of local surface frame)
|
finaloverrideprivatevirtual |
Helper function for angle parameter initialization.
Reimplemented from Trk::SurfaceBounds.
Definition at line 42 of file RotatedTrapezoidBounds.cxx.
|
finaloverridevirtual |
|
finaloverridevirtual |
The orientation of the Trapezoid is according to the figure above, in words: the shorter of the two parallel sides of the trapezoid intersects with the negative \( y \) - axis of the local frame.
The cases are:
(0) \( \eta \) or \( \phi \) bounds are 0 || 0
(1) LocalPosition is outside \( x \) bounds
(2) LocalPosition is inside \( x \) bounds, but outside maximum \( y \) bounds
(3) LocalPosition is inside \( x \) bounds AND inside minimum \( y \) bounds
(4) LocalPosition is inside \( x \) bounds AND inside maximum \( y \) bounds, so that it depends on the \( x \) coordinate (5) LocalPosition fails test of (4)
The inside check is done using single equations of straight lines and one has to take care if a point lies on the positive \( \phi \) half area(I) or the negative one(II). Denoting \( | y_{min}| \) and \( | y_{max} | \) as minHalfY
respectively maxHalfX
, such as \( | x_{H} | \) as halfX
, the equations for the straing lines in (I) and (II) can be written as:
Implements Trk::SurfaceBounds.
Definition at line 134 of file RotatedTrapezoidBounds.cxx.
|
finaloverridevirtual |
This method checks inside bounds in loc1.
Implements Trk::SurfaceBounds.
|
finaloverridevirtual |
This method checks inside bounds in loc2.
Implements Trk::SurfaceBounds.
|
private |
double Trk::RotatedTrapezoidBounds::maxHalflengthY | ( | ) | const |
This method returns the halflength in Y (second coordinate of local surface frame)
|
finaloverridevirtual |
Minimal distance to boundary ( > 0 if outside and <=0 if inside)
Implements Trk::SurfaceBounds.
Definition at line 163 of file RotatedTrapezoidBounds.cxx.
double Trk::RotatedTrapezoidBounds::minHalflengthY | ( | ) | const |
This method returns the maximal halflength in X (first coordinate of local surface frame)
|
inlinevirtualinherited |
Non-Equality operator.
Reimplemented in Trk::InvalidBounds.
Definition at line 141 of file SurfaceBounds.h.
|
default |
Assignment operator.
|
defaultnoexcept |
Move Assignment operator.
|
finaloverridevirtual |
Equality operator.
Implements Trk::SurfaceBounds.
Definition at line 52 of file RotatedTrapezoidBounds.cxx.
|
overridevirtual |
This method returns the maximal extension on the local plane.
Implements Trk::SurfaceBounds.
|
inlineprotectedinherited |
Swap method to be called from DiscBounds or TrapezoidalBounds.
Definition at line 133 of file SurfaceBounds.h.
|
inlineoverridevirtual |
Return the type of the bounds for persistency.
Implements Trk::SurfaceBounds.
Definition at line 85 of file RotatedTrapezoidBounds.h.
|
friend |
Definition at line 152 of file RotatedTrapezoidBounds.h.
|
private |
The internal storage of the bounds can be float/double.
Definition at line 161 of file RotatedTrapezoidBounds.h.
|
private |
Definition at line 163 of file RotatedTrapezoidBounds.h.
|
private |
Definition at line 162 of file RotatedTrapezoidBounds.h.