![]() |
ATLAS Offline Software
|
Class for a CylinderSurface in the ATLAS detector. More...
#include <CylinderSurface.h>
Public Member Functions | |
| CylinderSurface () | |
| Default Constructor. | |
| CylinderSurface (const CylinderSurface &csf) | |
| Copy constructor. | |
| CylinderSurface (CylinderSurface &&csf) noexcept=default | |
| Move constructor. | |
| CylinderSurface (const Amg::Transform3D &htrans, double radius, double hlength) | |
| Constructor from EigenTransform, radius and halflength. | |
| CylinderSurface (const Amg::Transform3D &htrans, double radius, double hphi, double hlength) | |
| Constructor from EigenTransform, radius halfphi, and halflength. | |
| CylinderSurface (const Amg::Transform3D &htrans, std::shared_ptr< const CylinderBounds > cbounds) | |
| Constructor from EigenTransform and CylinderBounds. | |
| CylinderSurface (const Amg::Transform3D &htrans) | |
| Constructor from EigenTransform from unique_ptr. | |
| CylinderSurface (double radius, double hlength) | |
| Constructor from radius and halflength - speed optimized for concentric volumes. | |
| CylinderSurface (double radius, double hphi, double hlength) | |
| Constructor from radius halfphi, and halflength - speed optimized for concentric volumes. | |
| CylinderSurface (std::shared_ptr< const CylinderBounds > cbounds) | |
| Constructor from EigenTransform and CylinderBounds. | |
| CylinderSurface (const CylinderSurface &csf, const Amg::Transform3D &transf) | |
| Copy constructor with shift. | |
| CylinderSurface & | operator= (const CylinderSurface &csf) |
| Assignment operator. | |
| CylinderSurface & | operator= (CylinderSurface &&csf) noexcept=default |
| Move Assignment operator. | |
| virtual | ~CylinderSurface () |
| Destructor. | |
| virtual bool | operator== (const Surface &sf) const override |
| Equality operator. | |
| bool | operator== (const CylinderSurface &cf) const |
| virtual CylinderSurface * | clone () const override |
| Implicit 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, CylinderSurface > > | 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, CylinderSurface > > | 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 Amg::RotationMatrix3D | measurementFrame (const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const override final |
| Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface. | |
| 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 Cylinder this is \( (R*cos(\phi), R*sin(\phi),0)*transform() \) Where \( \phi \) denotes the averagePhi() of the cylinderBounds. | |
| virtual Amg::Vector3D | normal (const Amg::Vector2D &locpo) const override final |
| Return method for surface normal information at a given local point, overwrites the normal() from base class. | |
| virtual const Amg::Vector3D & | normal () const |
| Returns the normal vector of the Surface (i.e. | |
| virtual const Amg::Vector3D & | rotSymmetryAxis () const |
| Return method for the rotational symmetry axis - the z-Axis of the HepTransform. | |
| virtual const CylinderBounds & | bounds () const override final |
| This method returns the CylinderBounds by reference (NoBounds is not possible for cylinder) | |
| bool | hasBounds () const |
| virtual bool | insideBounds (const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override |
| This method calls the inside method of CylinderBounds. | |
| virtual bool | insideBoundsCheck (const Amg::Vector2D &locpos, const BoundaryCheck &bchk) const override final |
| virtual Amg::Vector2D | localParametersToPosition (const LocalParameters &locpars) const override final |
| Specialized for CylinderSurface : LocalParameters to Vector2D. | |
| virtual void | localToGlobal (const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override |
| Specialized for CylinderSurface : LocalToGlobal method without dynamic memory allocation. | |
| virtual bool | globalToLocal (const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override |
| Specialized for CylinderSurface : GlobalToLocal method without dynamic memory allocation - boolean checks if on surface. | |
| 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 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 - provides closest intersection and (signed) path length | |
| virtual DistanceSolution | straightLineDistanceEstimate (const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override |
| fast distance to Surface | |
| virtual DistanceSolution | straightLineDistanceEstimate (const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool bound) const override |
| fast distance to Surface - with bounds directive | |
| virtual double | pathCorrection (const Amg::Vector3D &pos, const Amg::Vector3D &mom) const override |
| the pathCorrection for derived classes with thickness | |
| virtual std::string | name () const override |
| Return properly formatted class name for screen output. | |
Static Public Attributes | |
| static constexpr SurfaceType | staticType = SurfaceType::Cylinder |
| The surface type static constexpr. | |
Protected Attributes | |
| std::shared_ptr< const CylinderBounds > | m_bounds |
| The global reference point (== a point on the surface) | |
| CxxUtils::CachedUniquePtr< Amg::Vector3D > | m_referencePoint |
| The rotational symmetry axis. | |
| CxxUtils::CachedUniquePtr< Amg::Vector3D > | m_rotSymmetryAxis |
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 CylinderSurface in the ATLAS detector.
It inherits from Surface.
The cylinder surface has a special role in the TrackingGeometry, since it builds the surfaces of all TrackingVolumes at container level, hence, to optimize speed in global to local transformations, constructors w/o transform is possible, assumint the identity transform to.
Definition at line 54 of file CylinderSurface.h.
| Trk::CylinderSurface::CylinderSurface | ( | ) |
Default Constructor.
Definition at line 21 of file CylinderSurface.cxx.
| Trk::CylinderSurface::CylinderSurface | ( | const CylinderSurface & | csf | ) |
Copy constructor.
Definition at line 29 of file CylinderSurface.cxx.
|
defaultnoexcept |
Move constructor.
| Trk::CylinderSurface::CylinderSurface | ( | const Amg::Transform3D & | htrans, |
| double | radius, | ||
| double | hlength ) |
Constructor from EigenTransform, radius and halflength.
Definition at line 46 of file CylinderSurface.cxx.
| Trk::CylinderSurface::CylinderSurface | ( | const Amg::Transform3D & | htrans, |
| double | radius, | ||
| double | hphi, | ||
| double | hlength ) |
Constructor from EigenTransform, radius halfphi, and halflength.
Definition at line 56 of file CylinderSurface.cxx.
| Trk::CylinderSurface::CylinderSurface | ( | const Amg::Transform3D & | htrans, |
| std::shared_ptr< const CylinderBounds > | cbounds ) |
Constructor from EigenTransform and CylinderBounds.
Definition at line 67 of file CylinderSurface.cxx.
| Trk::CylinderSurface::CylinderSurface | ( | const Amg::Transform3D & | htrans | ) |
Constructor from EigenTransform from unique_ptr.
Definition at line 77 of file CylinderSurface.cxx.
| Trk::CylinderSurface::CylinderSurface | ( | double | radius, |
| double | hlength ) |
Constructor from radius and halflength - speed optimized for concentric volumes.
Definition at line 85 of file CylinderSurface.cxx.
| Trk::CylinderSurface::CylinderSurface | ( | double | radius, |
| double | hphi, | ||
| double | hlength ) |
Constructor from radius halfphi, and halflength - speed optimized for concentric volumes.
Definition at line 93 of file CylinderSurface.cxx.
| Trk::CylinderSurface::CylinderSurface | ( | std::shared_ptr< const CylinderBounds > | cbounds | ) |
Constructor from EigenTransform and CylinderBounds.
Definition at line 103 of file CylinderSurface.cxx.
| Trk::CylinderSurface::CylinderSurface | ( | const CylinderSurface & | csf, |
| const Amg::Transform3D & | transf ) |
Copy constructor with shift.
Definition at line 37 of file CylinderSurface.cxx.
|
virtualdefault |
Destructor.
|
finaloverridevirtual |
This method returns the CylinderBounds by reference (NoBounds is not possible for cylinder)
Implements Trk::Surface.
|
overridevirtual |
Implicit Constructor.
Implements Trk::Surface.
|
finaloverridevirtual |
Use the Surface as a ParametersBase constructor, from global parameters - neutral.
Implements Trk::Surface.
Definition at line 159 of file CylinderSurface.cxx.
|
finaloverridevirtual |
Use the Surface as a ParametersBase constructor, from local parameters - neutral.
Implements Trk::Surface.
Definition at line 149 of file CylinderSurface.cxx.
| std::unique_ptr< ParametersT< DIM, T, CylinderSurface > > Trk::CylinderSurface::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, CylinderSurface > > Trk::CylinderSurface::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 139 of file CylinderSurface.cxx.
|
finaloverridevirtual |
Use the Surface as a ParametersBase constructor, from local parameters - charged.
Implements Trk::Surface.
Definition at line 129 of file CylinderSurface.cxx.
|
finaloverridevirtual |
Returns a global reference point: For the Cylinder this is \( (R*cos(\phi), R*sin(\phi),0)*transform() \) Where \( \phi \) denotes the averagePhi() of the cylinderBounds.
Reimplemented from Trk::Surface.
Definition at line 167 of file CylinderSurface.cxx.
|
overridevirtual |
Specialized for CylinderSurface : GlobalToLocal method without dynamic memory allocation - boolean checks if on surface.
Implements Trk::Surface.
Definition at line 238 of file CylinderSurface.cxx.
| bool Trk::CylinderSurface::hasBounds | ( | ) | const |
|
overridevirtual |
This method calls the inside method of CylinderBounds.
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 263 of file CylinderSurface.cxx.
|
finaloverridevirtual |
Specialized for CylinderSurface : LocalParameters to Vector2D.
|
overridevirtual |
Specialized for CylinderSurface : LocalToGlobal method without dynamic memory allocation.
Implements Trk::Surface.
Definition at line 223 of file CylinderSurface.cxx.
|
finaloverridevirtual |
Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perigee Surface.
Reimplemented from Trk::Surface.
Definition at line 190 of file CylinderSurface.cxx.
|
overridevirtual |
Return properly formatted class name for screen output.
Implements Trk::Surface.
|
virtual |
Returns the normal vector of the Surface (i.e.
in generall z-axis of rotation)
Reimplemented from Trk::Surface.
|
finaloverridevirtual |
Return method for surface normal information at a given local point, overwrites the normal() from base class.
Reimplemented from Trk::Surface.
| Trk::CylinderSurface & Trk::CylinderSurface::operator= | ( | const CylinderSurface & | csf | ) |
Assignment operator.
Definition at line 115 of file CylinderSurface.cxx.
|
defaultnoexcept |
Move Assignment operator.
| bool Trk::CylinderSurface::operator== | ( | const CylinderSurface & | cf | ) | const |
|
overridevirtual |
Equality operator.
Implements Trk::Surface.
Definition at line 179 of file CylinderSurface.cxx.
|
overridevirtual |
the pathCorrection for derived classes with thickness
Reimplemented from Trk::Surface.
|
virtual |
Return method for the rotational symmetry axis - the z-Axis of the HepTransform.
Definition at line 211 of file CylinderSurface.cxx.
|
overridevirtual |
fast distance to Surface
distance to surface
Implements Trk::Surface.
Definition at line 377 of file CylinderSurface.cxx.
|
overridevirtual |
fast distance to Surface - with bounds directive
Implements Trk::Surface.
Definition at line 444 of file CylinderSurface.cxx.
|
finaloverridevirtual |
fast straight line intersection schema - provides closest intersection and (signed) path length
mathematical motivation:
The calculation will be done in the 3-dim frame of the cylinder, i.e. the symmetry axis of the cylinder is the z-axis, x- and y-axis are perpenticular to the the z-axis. In this frame the cylinder is centered around the origin. Therefore the two points describing the line have to be first recalculated into the new frame. Suppose, this is done, the intersection is straight forward:
may \(p_{1}=(p_{1x}, p_{1y},
p_{1z}), p_{2}=(p_{2x}, p_{2y}, p_{2z}) \)@_fakenlthe two points describing the 3D-line, then the line in the \(x-y\)plane can be written as \(y=kx+d\), where \(k =\frac{p_{2y}-p_{1y}}{p_{2x}-p_{1x}}\)such as \(d=\frac{p_{2x}p_{1y}-p_{1x}p_{2y}}{p_{2x}-p_{1x}},\)
and intersects with the corresponding circle \(x^{2}+y^{2} = R^{2}. \)
The solutions can then be found by a simple quadratic equation and reinsertion into the line equation.
Implements Trk::Surface.
Definition at line 277 of file CylinderSurface.cxx.
|
constexprfinaloverridevirtual |
Return the surface type.
Implements Trk::Surface.
|
friend |
< data members
Definition at line 284 of file CylinderSurface.h.
|
friend |
bounds (shared)
Definition at line 286 of file CylinderSurface.h.
|
protected |
The global reference point (== a point on the surface)
Definition at line 289 of file CylinderSurface.h.
|
protected |
The rotational symmetry axis.
Definition at line 291 of file CylinderSurface.h.
|
protected |
Definition at line 293 of file CylinderSurface.h.
|
staticconstexpr |
The surface type static constexpr.
Definition at line 59 of file CylinderSurface.h.