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.
|
| 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 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.
|
| 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.
|
| 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.
|
| 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.
|
| void | assignGeometryId (const GeometryIdentifier &geometryId) |
| | Set the value.
|
| GeometryIdentifier | geometryId () const |
| virtual double | referencePositionValue (const GeometryContext &gctx, AxisDirection aDir) const |
| | Implement the binningValue.
|
|
| | LineSurface (const GeometryContext &gctx, const LineSurface &other, const Transform3 &shift) |
| | Copy constructor - with shift.
|
| | LineSurface (const LineSurface &other) |
| | Copy constructor.
|
| | LineSurface (const Transform3 &transform, double radius, double halez) |
| | Constructor for LineSurface from Transform3 and radial dimensions.
|
| | LineSurface (const Transform3 &transform, std::shared_ptr< const LineBounds > lbounds=nullptr) |
| | Constructor for LineSurface from Transform3 and LineBounds.
|
| | LineSurface (std::shared_ptr< const LineBounds > lbounds, const SurfacePlacementBase &placement) |
| | Constructor from SurfacePlacementBase : Element proxy.
|
| std::array< AxisDirection, 2 > | localAxes () const override |
| | Local axes of the 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.
|
| virtual std::ostream & | toStreamImpl (const GeometryContext &gctx, std::ostream &sl) const |
| | Output Method for std::ostream, to be overloaded by child classes.
|
| virtual Vector2 | transformSurfaceLocalToMaterialLocal (const Vector2 &surfaceLocal) const |
| | Transform surface local coordinates to material local coordinates.
|
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.