|
ACTS
Experiment-independent tracking
|
Surface describing the point of closest approach (PCA) of a track to a single fixed 3D point (the surface center). More...
#include <Acts/Surfaces/PointSurface.hpp>
Public Member Functions | |
| PointSurface (const PointSurface &other) noexcept=default | |
| Copy constructor. | |
| ~PointSurface () noexcept override=default | |
| Destructor. | |
| AlignmentToPathMatrix | alignmentToPathDerivative (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final |
| Calculate the derivative of path length at the point-of-closest-approach w.r.t. | |
| void | assignSurfaceBounds (std::shared_ptr< const PointBounds > newBounds) |
| Overwrite the existing surface bounds with new ones. | |
| const SurfaceBounds & | bounds () const final |
| This method returns the bounds of the surface by reference. | |
| const std::shared_ptr< const PointBounds > & | boundsPtr () const |
| This method returns the shared_ptr to the PointBounds. | |
| BoundToFreeMatrix | boundToFreeJacobian (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final |
| Calculate the jacobian from local to global. | |
| FreeToBoundMatrix | freeToBoundJacobian (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final |
| Jacobian from free to bound parameters. | |
| FreeToPathMatrix | freeToPathDerivative (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final |
| Calculate the derivative of path length at the point-of-closest-approach w.r.t. | |
| Result< Vector2 > | globalToLocal (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, double tolerance=s_onSurfaceTolerance) const final |
| Global to local transformation. | |
| MultiIntersection3D | intersect (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const BoundaryTolerance &boundaryTolerance=BoundaryTolerance::Infinite(), double tolerance=s_onSurfaceTolerance) const final |
| Calculate the straight-line intersection with the point surface, i.e. | |
| Matrix< 2, 3 > | localCartesianToBoundLocalDerivative (const GeometryContext &gctx, const Vector3 &position) const final |
| Calculate the derivative of bound track parameters local position w.r.t. | |
| Vector3 | localToGlobal (const GeometryContext &gctx, const Vector2 &lposition, const Vector3 &direction) const final |
| Local to global transformation. | |
| std::string | name () const final |
| Return properly formatted class name for screen output. | |
| Vector3 | normal (const GeometryContext &gctx, const Vector3 &pos, const Vector3 &direction) const final |
| Return the surface normal, which for a point surface is the momentum direction (the measurement plane is perpendicular to the direction). | |
| PointSurface & | operator= (const PointSurface &other) noexcept=default |
| Assignment operator. | |
| double | pathCorrection (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final |
| The pathCorrection is by definition 1 for point surfaces. | |
| Polyhedron | polyhedronRepresentation (const GeometryContext &gctx, unsigned int quarterSegments) const final |
| Return a Polyhedron for the surface (a non-physical marker at the center). | |
| RotationMatrix3 | referenceFrame (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final |
| Return the measurement frame, built from the momentum direction like a curvilinear surface. | |
| Vector3 | referencePosition (const GeometryContext &gctx, AxisDirection aDir) const final |
| The binning position is the center of the point surface. | |
| SurfaceType | type () const final |
| Return the surface type. | |
| Public Member Functions inherited from Acts::Surface | |
| AlignmentToBoundMatrix | alignmentToBoundDerivative (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const FreeVector &pathDerivative) const |
| The derivative of bound track parameters w.r.t. | |
| void | assignIsSensitive (bool isSensitive) |
| Assign whether the surface is sensitive. | |
| virtual void | assignSurfaceMaterial (std::shared_ptr< const ISurfaceMaterial > material) |
| Assign the surface material description. | |
| void | assignSurfacePlacement (const SurfacePlacementBase &placement) |
| Assign a placement object which may dynamically align the surface in space. | |
| void | assignThickness (double thick) |
| Assign the thickness of the surface in the orthogonal dimension. | |
| const Layer * | associatedLayer () const |
| Return method for the associated Layer in which the surface is embedded. | |
| void | associateLayer (const Layer &lay) |
| Set Associated Layer Many surfaces can be associated to a Layer, but it might not be known yet during construction of the layer, this can be set afterwards. | |
| virtual Vector3 | center (const GeometryContext &gctx) const |
| Return method for the surface center. | |
| virtual Vector2 | closestPointOnBoundary (const Vector2 &lposition, const SquareMatrix2 &metric) const |
| Calculates the closest point on the boundary of the surface to a given point in local coordinates. | |
| virtual double | distanceToBoundary (const Vector2 &lposition) const |
| Calculates the distance to the boundary of the surface from a given point in local coordinates. | |
| std::shared_ptr< Surface > | getSharedPtr () |
Retrieve a std::shared_ptr for this surface (non-const version). | |
| std::shared_ptr< const Surface > | getSharedPtr () const |
Retrieve a std::shared_ptr for this surface (const version). | |
| bool | hasMaterial () const |
| Check if the surface has an associated material description. | |
| virtual bool | insideBounds (const Vector2 &lposition, const BoundaryTolerance &boundaryTolerance=BoundaryTolerance::None()) const |
| The insideBounds method for local positions. | |
| bool | isAlignable () const |
| Returns whether the Surface is alignable. | |
| bool | isOnSurface (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const BoundaryTolerance &boundaryTolerance=BoundaryTolerance::None(), double tolerance=s_onSurfaceTolerance) const |
| The geometric onSurface method. | |
| bool | isSensitive () const |
| Returns whether the Surface is sensitive. | |
| const Transform3 & | localToGlobalTransform (const GeometryContext &gctx) const |
| Return method for the surface Transform3 by reference In case a detector element is associated the surface transform is just forwarded to the detector element in order to keep the (mis-)alignment cache cetrally handled. | |
| virtual const MaterialSlab & | materialSlab (const Vector2 &lp) const |
| Return method for full material description of the Surface. | |
| virtual MaterialSlab | materialSlab (const Vector2 &lp, Direction pDir, MaterialUpdateMode mode) const |
| Return method for fully scaled material description of the Surface. | |
| bool | operator== (const Surface &other) const |
| Comparison (equality) operator The strategy for comparison is (a) first pointer comparison (b) then type comparison (c) then bounds comparison (d) then transform comparison. | |
| const ISurfaceMaterial * | surfaceMaterial () const |
| Return method for the associated Material to this surface. | |
| const std::shared_ptr< const ISurfaceMaterial > & | surfaceMaterialSharedPtr () const |
| Return method for the shared pointer to the associated Material. | |
| const SurfacePlacementBase * | surfacePlacement () const |
| Return the associated surface placement if there is any. | |
| double | thickness () const |
| Return the thickness of the surface in the normal direction. | |
| GeometryContextOstreamWrapper< Surface > | toStream (const GeometryContext &gctx) const |
| Helper method for printing: the returned object captures the surface and the geometry context and will print the surface. | |
| std::string | toString (const GeometryContext &gctx) const |
| Output into a std::string. | |
| void | visualize (IVisualization3D &helper, const GeometryContext &gctx, const ViewConfig &viewConfig=s_viewSurface) const |
| Visualize the surface for debugging and inspection. | |
| Public Member Functions inherited from Acts::GeometryObject | |
| GeometryObject ()=default | |
| Defaulted constructor. | |
| GeometryObject (const GeometryIdentifier &geometryId) | |
| Constructor from a value. | |
| GeometryObject (const GeometryObject &)=default | |
| Defaulted copy constructor. | |
| void | assignGeometryId (const GeometryIdentifier &geometryId) |
| Set the value. | |
| GeometryIdentifier | geometryId () const |
| virtual double | referencePositionValue (const GeometryContext &gctx, AxisDirection aDir) const |
| Implement the binningValue. | |
Protected Member Functions | |
| PointSurface (const GeometryContext &gctx, const PointSurface &other, const Transform3 &shift) | |
| Copy constructor - with shift. | |
| PointSurface (const Transform3 &transform, std::shared_ptr< const PointBounds > pbounds=nullptr) | |
| Constructor from a Transform3 and optional PointBounds. | |
| PointSurface (const Vector3 ¢er) | |
| Constructor from a global position (unbounded point surface). | |
| PointSurface (const Vector3 ¢er, double maxDistance) | |
| Constructor from a global position and a maximum distance. | |
| std::array< AxisDirection, 2 > | localAxes () const final |
| Local axes of the surface. | |
| std::ostream & | toStreamImpl (const GeometryContext &gctx, std::ostream &sl) const final |
| Output Method for std::ostream. | |
| Protected Member Functions inherited from Acts::Surface | |
| Surface (const GeometryContext &gctx, const Surface &other, const Transform3 &shift) noexcept | |
| Copy constructor with optional shift. | |
| Surface (const Surface &other) noexcept=default | |
| Copy constructor. | |
| Surface (const SurfacePlacementBase &placement) noexcept | |
| Constructor from SurfacePlacement: Element proxy. | |
| Surface (const Transform3 &transform=Transform3::Identity()) | |
| Constructor with Transform3 as a shared object. | |
| Surface & | operator= (const Surface &other) noexcept=default |
| Assignment operator. | |
| virtual Vector2 | transformSurfaceLocalToMaterialLocal (const Vector2 &surfaceLocal) const |
| Transform surface local coordinates to material local coordinates. | |
Protected Attributes | |
| std::shared_ptr< const PointBounds > | m_bounds |
| bounds (shared, may be null) | |
| Protected Attributes inherited from Acts::Surface | |
| std::shared_ptr< const ISurfaceMaterial > | m_surfaceMaterial |
| Possibility to attach a material description. | |
| bool | m_swapMaterialAxes {false} |
| Whether to swap the local coordinates for material lookup. | |
| CloneablePtr< const Transform3 > | m_transform |
| Transform3 definition that positions (translation, rotation) the surface in global space. | |
| Protected Attributes inherited from Acts::GeometryObject | |
| GeometryIdentifier | m_geometryId |
| Unique geometry identifier for this object. | |
Additional Inherited Members | |
| Public Types inherited from Acts::Surface | |
| enum | SurfaceType { Cone = 0 , Cylinder = 1 , Disc = 2 , Perigee = 3 , Plane = 4 , Straw = 5 , Curvilinear = 6 , Point = 7 , Other = 8 } |
| This enumerator simplifies the persistency & calculations, by saving a dynamic_cast, e.g. More... | |
| Static Public Member Functions inherited from Acts::Surface | |
| template<class T, typename... Args> | |
| static std::shared_ptr< T > | makeShared (Args &&... args) |
| Factory for producing memory managed instances of Surface. | |
| Static Public Attributes inherited from Acts::Surface | |
| static constexpr std::array< std::string_view, Surface::SurfaceType::Other+1 > | s_surfaceTypeNames |
| Helper strings for screen output. | |
Surface describing the point of closest approach (PCA) of a track to a single fixed 3D point (the surface center).
It is the point-analogue of the LineSurface (which represents the PCA to a line / Perigee).
Geometrically, a PointSurface behaves like a curvilinear plane anchored at the fixed center: a plane through the center whose normal always equals the track momentum direction. The track's crossing of that plane is therefore the PCA to the point. Consequently there is no parallel-line degeneracy: a unique intersection always exists.
The local coordinates are Cartesian (x, y) in the measurement plane perpendicular to the track direction. Cartesian (not polar r-phi) is used on purpose, because at the point itself (r = 0) the azimuth phi is degenerate.
The measurement frame is oriented from the track direction like the CurvilinearSurface: the third axis is the track direction, the first axis is built from global Z (with a fall-back to global X when the direction is (anti-)parallel to Z).
|
explicitprotected |
Constructor from a global position (unbounded point surface).
| center | position of the point in the global frame |
|
protected |
Constructor from a global position and a maximum distance.
| center | position of the point in the global frame |
| maxDistance | maximum distance from the point (radius of the PointBounds disc in the measurement plane) |
|
explicitprotected |
Constructor from a Transform3 and optional PointBounds.
| transform | the transform whose translation positions the point |
| pbounds | the bounds describing the maximum distance, may be nullptr for an unbounded point surface |
|
protected |
Copy constructor - with shift.
| gctx | The current geometry context object, e.g. alignment |
| other | is the source surface |
| shift | is the additional transform applied after copying |
|
defaultnoexcept |
Copy constructor.
| other | The source surface for copying |
|
finalvirtual |
Calculate the derivative of path length at the point-of-closest-approach w.r.t.
alignment parameters of the surface. Only the center (translation) contributes; a point has no orientation so the rotation block is zero.
| gctx | The current geometry context object, e.g. alignment |
| position | global 3D position |
| direction | global 3D momentum direction |
Reimplemented from Acts::Surface.
| void Acts::PointSurface::assignSurfaceBounds | ( | std::shared_ptr< const PointBounds > | newBounds | ) |
Overwrite the existing surface bounds with new ones.
| newBounds | Pointer to the new bounds |
|
finalvirtual |
This method returns the bounds of the surface by reference.
Implements Acts::Surface.
| const std::shared_ptr< const PointBounds > & Acts::PointSurface::boundsPtr | ( | ) | const |
This method returns the shared_ptr to the PointBounds.
|
finalvirtual |
Calculate the jacobian from local to global.
| gctx | The current geometry context object, e.g. alignment |
| position | global 3D position |
| direction | global 3D momentum direction |
Reimplemented from Acts::Surface.
|
finalvirtual |
Jacobian from free to bound parameters.
The measurement frame rotates with the track direction, so the loc rows have a direction block as well as the position block.
| gctx | The current geometry context object, e.g. alignment |
| position | global 3D position |
| direction | global 3D momentum direction |
Reimplemented from Acts::Surface.
|
finalvirtual |
Calculate the derivative of path length at the point-of-closest-approach w.r.t.
free parameters.
| gctx | The current geometry context object, e.g. alignment |
| position | global 3D position |
| direction | global 3D momentum direction |
Reimplemented from Acts::Surface.
|
finalvirtual |
Global to local transformation.
| gctx | The current geometry context object, e.g. alignment |
| position | global 3D position - considered to be on surface but not inside bounds (check is done) |
| direction | global 3D momentum direction |
| tolerance | the tolerance for the on-surface check |
position is not the point of closest approach to the point surface. Implements Acts::Surface.
|
finalvirtual |
Calculate the straight-line intersection with the point surface, i.e.
the point of closest approach of the track to the point.
Given the track (position \( \vec m \), direction \( \vec e \), normalized), the PCA path length is \( u = (\vec c - \vec m) \cdot \vec e
\) where \( \vec c \) is the point, and the intersection point is \(\vec m + u \vec e \). Unlike the LineSurface there is no parallel degeneracy.
| gctx | The current geometry context object, e.g. alignment |
| position | The global position as a starting point |
| direction | The global direction at the starting point |
| boundaryTolerance | The boundary check directive for the estimate |
| tolerance | the tolerance used for the intersection |
Implements Acts::Surface.
|
finalprotectedvirtual |
|
finalvirtual |
Calculate the derivative of bound track parameters local position w.r.t.
position in local 3D Cartesian coordinates
| gctx | The current geometry context object, e.g. alignment |
| position | The position of the parameters in global |
Implements Acts::Surface.
|
finalvirtual |
Local to global transformation.
| gctx | The current geometry context object, e.g. alignment |
| lposition | is the local (x, y) position to be transformed |
| direction | is the global momentum direction |
Implements Acts::Surface.
|
finalvirtual |
Return properly formatted class name for screen output.
Implements Acts::Surface.
|
finalvirtual |
Return the surface normal, which for a point surface is the momentum direction (the measurement plane is perpendicular to the direction).
| gctx | The current geometry context object, e.g. alignment |
| pos | is the global position (ignored) |
| direction | is the global momentum direction |
direction) Implements Acts::Surface.
|
defaultnoexcept |
Assignment operator.
| other | is the source surface for copying |
|
finalvirtual |
The pathCorrection is by definition 1 for point surfaces.
| gctx | Geometry context (ignored) |
| position | Position parameter (ignored) |
| direction | Direction parameter (ignored) |
Implements Acts::Surface.
|
finalvirtual |
Return a Polyhedron for the surface (a non-physical marker at the center).
| gctx | The current geometry context object, e.g. alignment |
| quarterSegments | is an ignored parameter |
Implements Acts::Surface.
|
finalvirtual |
Return the measurement frame, built from the momentum direction like a curvilinear surface.
Columns are (U, V, T) with T the direction.
| gctx | The current geometry context object, e.g. alignment |
| position | is the global position (ignored) |
| direction | is the momentum direction used to build the frame |
Reimplemented from Acts::Surface.
|
finalvirtual |
The binning position is the center of the point surface.
| gctx | The current geometry context object, e.g. alignment |
| aDir | is the axis direction for the reference position request |
Implements Acts::GeometryObject.
|
finalprotectedvirtual |
Output Method for std::ostream.
| gctx | The current geometry context object, e.g. alignment |
| sl | is the ostream to be dumped into |
Reimplemented from Acts::Surface.
|
finalvirtual |
Return the surface type.
Implements Acts::Surface.