Base class for a linear surfaces in the TrackingGeometry to describe dirft tube, straw like detectors or the Perigee It inherits from Surface.
More...
|
| AlignmentToPathMatrix | alignmentToPathDerivative (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final |
| | Calculate the derivative of path length at the geometry constraint or point-of-closest-approach w.r.t.
|
| void | assignSurfaceBounds (std::shared_ptr< const LineBounds > 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 LineBounds > & | boundsPtr () const |
| | This method returns the shared_ptr to the LineBounds.
|
| BoundToFreeMatrix | boundToFreeJacobian (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final |
| | Calculate the jacobian from local to global which the surface knows best, hence the calculation is done here.
|
| FreeToPathMatrix | freeToPathDerivative (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final |
| | Calculate the derivative of path length at the geometry constraint or 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 |
| | Specified for LineSurface: global to local method without dynamic memory allocation.
|
| 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 line surface.
|
| Vector3 | lineDirection (const GeometryContext &gctx) const |
| | Get the line direction in global coordinates.
|
| ActsMatrix< 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 override |
| | Return properly formatted class name for screen output.
|
| Vector3 | normal (const GeometryContext &gctx, const Vector3 &pos, const Vector3 &direction) const override |
| | Return the surface normal at a given position and direction.
|
| LineSurface & | operator= (const LineSurface &other) |
| | Assignment operator.
|
| double | pathCorrection (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const override |
| | the pathCorrection for derived classes with thickness is by definition 1 for LineSurfaces
|
| RotationMatrix3 | referenceFrame (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final |
| | Return the measurement frame - this is needed for alignment, in particular.
|
| Vector3 | referencePosition (const GeometryContext &gctx, AxisDirection aDir) const final |
| | The binning position is the position calculated for a certain binning type.
|
| | ~Surface () noexcept override |
| 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 | assignDetectorElement (const SurfacePlacementBase &detelement) |
| | Assign a detector element.
|
| void | assignIsSensitive (bool isSensitive) |
| | Assign whether the surface is sensitive.
|
| 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 DetectorElementBase * | associatedDetectorElement () const |
| | Return method for the associated Detector Element.
|
| 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).
|
| 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.
|
| Surface & | operator= (const Surface &other) |
| | 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.
|
| virtual Polyhedron | polyhedronRepresentation (const GeometryContext &gctx, unsigned int quarterSegments=2u) const =0 |
| | Return a Polyhedron for surface objects.
|
| 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.
|
| const Transform3 & | transform (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 SurfaceType | type () const =0 |
| | Return method for the Surface type to avoid dynamic casts.
|
| 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.
|
| virtual | ~GeometryObject () noexcept=default |
| void | assignGeometryId (const GeometryIdentifier &geometryId) |
| | Set the value.
|
| GeometryIdentifier | geometryId () const |
| virtual double | referencePositionValue (const GeometryContext &gctx, AxisDirection aDir) const |
| | Implement the binningValue.
|
Base class for a linear surfaces in the TrackingGeometry to describe dirft tube, straw like detectors or the Perigee It inherits from Surface.
- Note
- It leaves the type() method virtual, so it can not be instantiated
Calculate the straight-line intersection with the line surface.
Mathematical motivation:
Given two lines in parametric form:
\( \vec l_{a}(u) = \vec m_a + u \cdot \vec e_{a} \)
\( \vec l_{b}(\mu) = \vec m_b + \mu \cdot \vec e_{b} \)
The vector between any two points on the two lines is given by:
\( \vec s(u, \mu) = \vec l_{b} - l_{a} = \vec m_{ab} + \mu
\cdot
\vec e_{b} - u \cdot \vec e_{a} \),
where \( \vec m_{ab} = \vec m_{b} - \vec m_{a} \).
\( \vec s(u_0, \mu_0) \) denotes the vector between the two closest points
\( \vec l_{a,0} = l_{a}(u_0) \) and \( \vec l_{b,0} =
l_{b}(\mu_0) \)
and is perpendicular to both, \( \vec e_{a} \) and \( \vec e_{b} \).
This results in a system of two linear equations:
- (i) \( 0 = \vec s(u_0, \mu_0) \cdot \vec e_a = \vec m_{ab} \cdot
\vec e_a + \mu_0 \vec e_a \cdot \vec e_b - u_0 \)
- (ii) \( 0 = \vec s(u_0, \mu_0) \cdot \vec e_b = \vec m_{ab} \cdot
\vec e_b + \mu_0 - u_0 \vec e_b \cdot \vec e_a \)
Solving (i) and (ii) for \( u \) and \( \mu_0 \) yields:
- \( u_0 = \frac{(\vec m_{ab} \cdot \vec e_a)-(\vec m_{ab} \cdot \vec
e_b)(\vec e_a \cdot \vec e_b)}{1-(\vec e_a \cdot \vec e_b)^2} \)
- \( \mu_0 = - \frac{(\vec m_{ab} \cdot \vec e_b)-(\vec m_{ab} \cdot \vec
e_a)(\vec e_a \cdot \vec e_b)}{1-(\vec e_a \cdot \vec e_b)^2} \)
The function checks if \( u_0 \simeq 0\) to check if the current position is at the point of closest approach, i.e. the intersection point, in which case it will return an onSurace intersection result. Otherwise, the path length from position to the point of closest approach ( \( u_0 \)) is returned in a reachable intersection.
- Parameters
-
| 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 |
- Note
- expected to be normalized
- Parameters
-
| boundaryTolerance | The boundary check directive for the estimate |
| tolerance | the tolerance used for the intersection |
- Returns
- is the intersection object
Implements Acts::Surface.