Surface describing the point of closest approach (PCA) of a track to a single fixed 3D point (the surface center).
More...
|
| | 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.
|
| 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.
|
| 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.
|
| virtual FreeToBoundMatrix | freeToBoundJacobian (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const |
| | Calculate the jacobian from global to local which the surface knows best, hence the calculation is done here.
|
| 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.
|
| Surface & | operator= (const Surface &other) noexcept=default |
| | Assignment operator.
|
| 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.
|
|
| 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.
|
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).
- Note
- A point has no intrinsic orientation, so only translation (center) alignment is supported; rotational alignment derivatives are zero.