![]() |
ATLAS Offline Software
|
Class for a DiscSurface in the ATLAS detector. More...
#include <DiscSurface.h>
Public Member Functions | |
| DiscSurface () | |
| Default Constructor. | |
| DiscSurface (const DiscSurface &psf) | |
| Copy Constructor. | |
| DiscSurface (DiscSurface &&psf) noexcept=default | |
| Copy Constructor. | |
| DiscSurface (const Amg::Transform3D &htrans, double rmin, double rmax) | |
| Constructor for Discs from HepGeom::Transform3D, \( r_{min}, r_{max} \). | |
| DiscSurface (const Amg::Transform3D &htrans, double rmin, double rmax, double hphisec) | |
| Constructor for Discs from HepGeom::Transform3D, \( r_{min}, r_{max},
\phi_{hsec} \). | |
| DiscSurface (const Amg::Transform3D &htrans, double minhalfx, double maxhalfx, double maxR, double minR, double avephi, double stereo=0.) | |
| Constructor for Discs from HepGeom::Transform3D, \( r_{min}, r_{max},
hx_{min}, hx_{max} \) In this case you have DiscTrapezoidalBounds. | |
| DiscSurface (const Amg::Transform3D &htrans, std::shared_ptr< const DiscBounds > dbounds) | |
| Constructor for Discs from Amg::Transform3D and DiscBounds. | |
| DiscSurface (const Amg::Transform3D &htrans, std::shared_ptr< const DiscTrapezoidalBounds > dtbounds) | |
| Constructor for Discs from Amg::Transform3D and DiscTrapezoidalBounds. | |
| DiscSurface (const Amg::Transform3D &htrans, std::shared_ptr< const AnnulusBoundsPC > annpcbounds) | |
| Constructor for Discs from HepGeom::Transform3D and AnnulusBoundsPC. | |
| DiscSurface (const Amg::Transform3D &htrans, const AnnulusBounds &annbounds, const TrkDetElementBase *detElem=nullptr) | |
Constructor for Discs from Transform3D and AnnulusBoundsPC This will use the converting factory in AnnulusBoundsPC to build an equivalent PC version. | |
| DiscSurface (const Amg::Transform3D &htrans) | |
| Constructor for Discs from HepGeom::Transform3D by unique_ptr. | |
| DiscSurface (const TrkDetElementBase &dmnt) | |
| Constructor for DiscSegment from DetectorElement. | |
| DiscSurface (const DiscSurface &psf, const Amg::Transform3D &transf) | |
| Copy Constructor with shift. | |
| DiscSurface & | operator= (const DiscSurface &dsf) |
| Assignement operator. | |
| DiscSurface & | operator= (DiscSurface &&dsf) noexcept=default |
| Assignement operator. | |
| virtual | ~DiscSurface () |
| Destructor. | |
| virtual bool | operator== (const Surface &sf) const override |
| Equality operator. | |
| bool | operator== (const DiscSurface &cf) const |
| virtual DiscSurface * | clone () const override |
| Virtual constructor. | |
| virtual Surface::ChargedTrackParametersUniquePtr | createUniqueTrackParameters (double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final |
| Use the Surface as a ParametersBase constructor, from local parameters - charged. | |
| virtual Surface::ChargedTrackParametersUniquePtr | createUniqueTrackParameters (const Amg::Vector3D &position, const Amg::Vector3D &momentum, double charge, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final |
| Use the Surface as a ParametersBase constructor, from global parameters - charged. | |
| virtual NeutralTrackParametersUniquePtr | createUniqueNeutralParameters (double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final |
| Use the Surface as a ParametersBase constructor, from local parameters - neutral. | |
| virtual NeutralTrackParametersUniquePtr | createUniqueNeutralParameters (const Amg::Vector3D &position, const Amg::Vector3D &momentum, double charge, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final |
| Use the Surface as a ParametersBase constructor, from global parameters - neutral. | |
| template<int DIM, class T> | |
| std::unique_ptr< ParametersT< DIM, T, DiscSurface > > | createUniqueParameters (double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(DIM)> cov=std::nullopt) const |
| Use the Surface as a ParametersBase constructor, from local parameters. | |
| template<int DIM, class T> | |
| std::unique_ptr< ParametersT< DIM, T, DiscSurface > > | createUniqueParameters (const Amg::Vector3D &position, const Amg::Vector3D &momentum, double charge, std::optional< AmgSymMatrix(DIM)> cov=std::nullopt) const |
| Use the Surface as a ParametersBase constructor, from global parameters. | |
| virtual constexpr SurfaceType | type () const override final |
| Return the surface type. | |
| virtual const Amg::Vector3D & | globalReferencePoint () const override final |
| Returns a global reference point: For the Disc this is \( (R*cos(\phi), R*sin(\phi),0)*transform() \) Where \( r, \phi \) denote the r(), averagePhi() of the Bounds. | |
| const SurfaceBounds & | bounds () const override final |
| This method returns the bounds by reference. | |
| virtual bool | insideBounds (const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override |
| This method calls the inside method of the bounds. | |
| virtual bool | insideBoundsCheck (const Amg::Vector2D &locpos, const BoundaryCheck &bchk) const override final |
| virtual bool | isOnSurface (const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const override |
| This method returns true if the GlobalPosition is on the Surface for both, within or without check of whether the local position is inside boundaries or not. | |
| virtual Amg::Vector2D | localParametersToPosition (const LocalParameters &locpars) const override final |
| Specialized for DiscSurface : LocalParameters to Vector2D. | |
| virtual void | localToGlobal (const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override |
| Specialized for DiscSurface: LocalToGlobal method without dynamic memory allocation. | |
| virtual bool | globalToLocal (const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override |
| Specialized for DiscSurface: GlobalToLocal method without dynamic memory allocation - boolean checks if on surface. | |
| virtual Intersection | straightLineIntersection (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool forceDir=false, Trk::BoundaryCheck bchk=false) const override final |
| fast straight line intersection schema - standard: provides closest intersection and (signed) path length forceDir is to provide the closest forward solution | |
| virtual DistanceSolution | straightLineDistanceEstimate (const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override |
| fast straight line distance evaluation to Surface | |
| virtual DistanceSolution | straightLineDistanceEstimate (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool Bound) const override |
| fast straight line distance evaluation to Surface - with bound option | |
| virtual std::string | name () const override |
| Return properly formatted class name for screen output. | |
Static Public Attributes | |
| static constexpr SurfaceType | staticType = SurfaceType::Disc |
Protected Attributes | |
| std::shared_ptr< const SurfaceBounds > | m_bounds |
| reference Point on the Surface | |
| CxxUtils::CachedUniquePtr< Amg::Vector3D > | m_referencePoint |
| static member for boundless approach | |
Static Protected Attributes | |
| static const NoBounds | s_boundless |
Friends | |
| template<class SURFACE, class BOUNDS_CNV> | |
| class | ::BoundSurfaceCnv_p1 |
| < data members | |
| template<class SURFACE, class BOUNDS_CNV> | |
| class | ::BoundSurfaceCnv_p2 |
| bounds (shared) | |
Class for a DiscSurface in the ATLAS detector.
It inherits from Surface.
Definition at line 53 of file DiscSurface.h.
| Trk::DiscSurface::DiscSurface | ( | ) |
Default Constructor.
Definition at line 26 of file DiscSurface.cxx.
| Trk::DiscSurface::DiscSurface | ( | const DiscSurface & | psf | ) |
Copy Constructor.
Definition at line 33 of file DiscSurface.cxx.
|
defaultnoexcept |
Copy Constructor.
| Trk::DiscSurface::DiscSurface | ( | const Amg::Transform3D & | htrans, |
| double | rmin, | ||
| double | rmax ) |
Constructor for Discs from HepGeom::Transform3D, \( r_{min}, r_{max} \).
Definition at line 48 of file DiscSurface.cxx.
| Trk::DiscSurface::DiscSurface | ( | const Amg::Transform3D & | htrans, |
| double | rmin, | ||
| double | rmax, | ||
| double | hphisec ) |
Constructor for Discs from HepGeom::Transform3D, \( r_{min}, r_{max}, \phi_{hsec} \).
Definition at line 57 of file DiscSurface.cxx.
| Trk::DiscSurface::DiscSurface | ( | const Amg::Transform3D & | htrans, |
| double | minhalfx, | ||
| double | maxhalfx, | ||
| double | maxR, | ||
| double | minR, | ||
| double | avephi, | ||
| double | stereo = 0. ) |
Constructor for Discs from HepGeom::Transform3D, \( r_{min}, r_{max}, hx_{min}, hx_{max} \) In this case you have DiscTrapezoidalBounds.
Definition at line 66 of file DiscSurface.cxx.
| Trk::DiscSurface::DiscSurface | ( | const Amg::Transform3D & | htrans, |
| std::shared_ptr< const DiscBounds > | dbounds ) |
Constructor for Discs from Amg::Transform3D and DiscBounds.
Definition at line 84 of file DiscSurface.cxx.
| Trk::DiscSurface::DiscSurface | ( | const Amg::Transform3D & | htrans, |
| std::shared_ptr< const DiscTrapezoidalBounds > | dtbounds ) |
Constructor for Discs from Amg::Transform3D and DiscTrapezoidalBounds.
Definition at line 92 of file DiscSurface.cxx.
| Trk::DiscSurface::DiscSurface | ( | const Amg::Transform3D & | htrans, |
| std::shared_ptr< const AnnulusBoundsPC > | annpcbounds ) |
Constructor for Discs from HepGeom::Transform3D and AnnulusBoundsPC.
Definition at line 99 of file DiscSurface.cxx.
| Trk::DiscSurface::DiscSurface | ( | const Amg::Transform3D & | htrans, |
| const AnnulusBounds & | annbounds, | ||
| const TrkDetElementBase * | detElem = nullptr ) |
Constructor for Discs from Transform3D and AnnulusBoundsPC This will use the converting factory in AnnulusBoundsPC to build an equivalent PC version.
The overall transform of this object will be htrans and an additional rotation to overlay the two bounds implementations exactly.
| htrans | Base transform. This should be the transform of the PlaneSurface on which annbounds is located |
| annbounds | Cartesian annulus bounds to convert |
| detElem | Additional explicit detector element |
Definition at line 106 of file DiscSurface.cxx.
| Trk::DiscSurface::DiscSurface | ( | const Amg::Transform3D & | htrans | ) |
Constructor for Discs from HepGeom::Transform3D by unique_ptr.
Definition at line 135 of file DiscSurface.cxx.
| Trk::DiscSurface::DiscSurface | ( | const TrkDetElementBase & | dmnt | ) |
Constructor for DiscSegment from DetectorElement.
Definition at line 142 of file DiscSurface.cxx.
| Trk::DiscSurface::DiscSurface | ( | const DiscSurface & | psf, |
| const Amg::Transform3D & | transf ) |
Copy Constructor with shift.
Definition at line 40 of file DiscSurface.cxx.
|
virtualdefault |
Destructor.
|
finaloverridevirtual |
This method returns the bounds by reference.
Implements Trk::Surface.
|
overridevirtual |
Virtual constructor.
Implements Trk::Surface.
|
finaloverridevirtual |
Use the Surface as a ParametersBase constructor, from global parameters - neutral.
Implements Trk::Surface.
Definition at line 204 of file DiscSurface.cxx.
|
finaloverridevirtual |
Use the Surface as a ParametersBase constructor, from local parameters - neutral.
Implements Trk::Surface.
Definition at line 194 of file DiscSurface.cxx.
| std::unique_ptr< ParametersT< DIM, T, DiscSurface > > Trk::DiscSurface::createUniqueParameters | ( | const Amg::Vector3D & | position, |
| const Amg::Vector3D & | momentum, | ||
| double | charge, | ||
| std::optional< AmgSymMatrix(DIM)> | cov = std::nullopt ) const |
Use the Surface as a ParametersBase constructor, from global parameters.
| std::unique_ptr< ParametersT< DIM, T, DiscSurface > > Trk::DiscSurface::createUniqueParameters | ( | double | l1, |
| double | l2, | ||
| double | phi, | ||
| double | theta, | ||
| double | qop, | ||
| std::optional< AmgSymMatrix(DIM)> | cov = std::nullopt ) const |
Use the Surface as a ParametersBase constructor, from local parameters.
|
finaloverridevirtual |
Use the Surface as a ParametersBase constructor, from global parameters - charged.
Implements Trk::Surface.
Definition at line 184 of file DiscSurface.cxx.
|
finaloverridevirtual |
Use the Surface as a ParametersBase constructor, from local parameters - charged.
Implements Trk::Surface.
Definition at line 175 of file DiscSurface.cxx.
|
finaloverridevirtual |
Returns a global reference point: For the Disc this is \( (R*cos(\phi), R*sin(\phi),0)*transform() \) Where \( r, \phi \) denote the r(), averagePhi() of the Bounds.
Reimplemented from Trk::Surface.
Definition at line 212 of file DiscSurface.cxx.
|
overridevirtual |
Specialized for DiscSurface: GlobalToLocal method without dynamic memory allocation - boolean checks if on surface.
local<->global transformation in case of polar local coordinates
Implements Trk::Surface.
Definition at line 253 of file DiscSurface.cxx.
|
overridevirtual |
This method calls the inside method of the bounds.
Implements Trk::Surface.
|
finaloverridevirtual |
|
overridevirtual |
This method returns true if the GlobalPosition is on the Surface for both, within or without check of whether the local position is inside boundaries or not.
Reimplemented from Trk::Surface.
Definition at line 290 of file DiscSurface.cxx.
|
finaloverridevirtual |
Specialized for DiscSurface : LocalParameters to Vector2D.
|
overridevirtual |
Specialized for DiscSurface: LocalToGlobal method without dynamic memory allocation.
Implements Trk::Surface.
Definition at line 239 of file DiscSurface.cxx.
|
overridevirtual |
Return properly formatted class name for screen output.
Implements Trk::Surface.
| Trk::DiscSurface & Trk::DiscSurface::operator= | ( | const DiscSurface & | dsf | ) |
Assignement operator.
Definition at line 152 of file DiscSurface.cxx.
|
defaultnoexcept |
Assignement operator.
| bool Trk::DiscSurface::operator== | ( | const DiscSurface & | cf | ) | const |
|
overridevirtual |
Equality operator.
Implements Trk::Surface.
Definition at line 163 of file DiscSurface.cxx.
|
overridevirtual |
fast straight line distance evaluation to Surface
distance to surface
Implements Trk::Surface.
Definition at line 307 of file DiscSurface.cxx.
|
overridevirtual |
fast straight line distance evaluation to Surface - with bound option
Implements Trk::Surface.
Definition at line 332 of file DiscSurface.cxx.
|
finaloverridevirtual |
fast straight line intersection schema - standard: provides closest intersection and (signed) path length forceDir is to provide the closest forward solution
mathematical motivation:
the equation of the plane is given by:
\( \vec n \cdot \vec x = \vec n \cdot \vec p,\)
where \( \vec n = (n_{x}, n_{y}, n_{z})\) denotes the normal vector of the plane, \( \vec p = (p_{x}, p_{y}, p_{z})\) one specific point on the plane and \( \vec x = (x,y,z) \) all possible points on the plane.
Given a line with:
\( \vec l(u) = \vec l_{1} + u \cdot \vec v \),
the solution for \( u \) can be written: \( u = \frac{\vec n (\vec p - \vec l_{1})}{\vec n \vec v}\)
If the denominator is 0 then the line lies:
Implements Trk::Surface.
Definition at line 263 of file DiscSurface.cxx.
|
constexprfinaloverridevirtual |
Return the surface type.
Implements Trk::Surface.
|
friend |
< data members
Definition at line 280 of file DiscSurface.h.
|
friend |
bounds (shared)
Definition at line 282 of file DiscSurface.h.
|
protected |
reference Point on the Surface
Definition at line 284 of file DiscSurface.h.
|
protected |
static member for boundless approach
Definition at line 286 of file DiscSurface.h.
|
staticprotected |
Definition at line 288 of file DiscSurface.h.
|
staticconstexpr |
Definition at line 57 of file DiscSurface.h.