|
ACTS
Experiment-independent tracking
|
Class for a CylinderSurface in the TrackingGeometry. More...
#include <Acts/Surfaces/CylinderSurface.hpp>
Public Member Functions | |
| 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 CylinderBounds > newBounds) |
| Overwrite the existing surface bounds with new ones. | |
| void | assignSurfaceMaterial (std::shared_ptr< const ISurfaceMaterial > material) override |
| Assign the surface material description. | |
| const CylinderBounds & | bounds () const final |
| This method returns the CylinderBounds by reference. | |
| const std::shared_ptr< const CylinderBounds > & | boundsPtr () const |
| This method returns the shared_ptr to the CylinderBounds. | |
| Result< Vector2 > | globalToLocal (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, double tolerance=s_onSurfaceTolerance) const final |
| Convert a global position to a local one this is the most generic interface, which is implemented by all surfaces. | |
| Result< Vector2 > | globalToLocal (const GeometryContext &gctx, const Vector3 &position, 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 |
| Straight line intersection schema from position/direction. | |
| 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 final |
| Local to global transformation. | |
| Vector3 | localToGlobal (const GeometryContext &gctx, const Vector2 &lposition, const Vector3 &direction) const final |
| Local to global transformation. | |
| std::pair< std::shared_ptr< CylinderSurface >, bool > | mergedWith (const CylinderSurface &other, AxisDirection direction, bool externalRotation, const Logger &logger=getDummyLogger()) const |
| Merge two cylinder surfaces into a single one. | |
| std::string | name () const override |
| Return method for properly formatted output string. | |
| Vector3 | normal (const GeometryContext &gctx, const Vector2 &lposition) const final |
| Return method for surface normal information. | |
| Vector3 | normal (const GeometryContext &gctx, const Vector3 &pos, const Vector3 &direction) const final |
| Calculate the normal vector of the surface This overload is fully generic, fulfills the Surface interface and accepts a global position and a direction. | |
| Vector3 | normal (const GeometryContext &gctx, const Vector3 &position) const final |
| Return method for surface normal information. | |
| CylinderSurface & | operator= (const CylinderSurface &other) |
| Assignment operator. | |
| double | pathCorrection (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final |
| Path correction due to incident of the track. | |
| Polyhedron | polyhedronRepresentation (const GeometryContext &gctx, unsigned int quarterSegments=2u) const override |
| Return a Polyhedron for a cylinder. | |
| RotationMatrix3 | referenceFrame (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final |
| Return the measurement frame - this is needed for alignment, in particular The measurement frame of a cylinder is the tangential plane at a given position. | |
| Vector3 | referencePosition (const GeometryContext &gctx, AxisDirection aDir) const final |
| The binning position method - is overloaded for r-type binning. | |
| virtual Vector3 | rotSymmetryAxis (const GeometryContext &gctx) const |
| Return method for the rotational symmetry axis. | |
| SurfaceType | type () const override |
| Return the surface type. | |
| Public Member Functions inherited from Acts::RegularSurface | |
| Result< Vector2 > | globalToLocal (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, double tolerance=s_onSurfaceTolerance) const final |
| Convert a global position to a local one this is the most generic interface, which is implemented by all surfaces. | |
| bool | isOnSurface (const GeometryContext &gctx, const Vector3 &position, const BoundaryTolerance &boundaryTolerance=BoundaryTolerance::None(), double tolerance=s_onSurfaceTolerance) const |
| The geometric onSurface method. | |
| 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. | |
| Vector3 | localToGlobal (const GeometryContext &gctx, const Vector2 &lposition, const Vector3 &direction) const final |
| Local to global transformation. | |
| Vector3 | normal (const GeometryContext &gctx, const Vector3 &pos, const Vector3 &direction) const final |
| Calculate the normal vector of the surface This overload is fully generic, fulfills the Surface interface and accepts a global position and a direction. | |
| 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. | |
| 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. | |
| 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 BoundToFreeMatrix | boundToFreeJacobian (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const |
| Calculate the jacobian from local to global which the surface knows best, hence the calculation is done here. | |
| 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. | |
| virtual FreeToPathMatrix | freeToPathDerivative (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const |
| Calculate the derivative of path length at the geometry constraint or point-of-closest-approach w.r.t. | |
| 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. | |
| 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 | |
| CylinderSurface (const CylinderSurface &other) | |
| Copy constructor. | |
| CylinderSurface (const GeometryContext &gctx, const CylinderSurface &other, const Transform3 &shift) | |
| Copy constructor - with shift. | |
| CylinderSurface (const Transform3 &transform, double radius, double halfz, double halfphi=std::numbers::pi, double avphi=0., double bevelMinZ=0., double bevelMaxZ=0.) | |
| Constructor from Transform3 and CylinderBounds. | |
| CylinderSurface (const Transform3 &transform, std::shared_ptr< const CylinderBounds > cbounds) | |
| Constructor from Transform3 and CylinderBounds arguments. | |
| CylinderSurface (std::shared_ptr< const CylinderBounds > cbounds, const SurfacePlacementBase &placement) | |
| Constructor from SurfacePlacementBase: Element proxy. | |
| std::array< AxisDirection, 2 > | localAxes () const override |
| Local axes of the surface. | |
| Vector2 | transformSurfaceLocalToMaterialLocal (const Vector2 &surfaceLocal) const override |
| Transform surface local coordinates to material local coordinates. | |
| 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. | |
| virtual std::ostream & | toStreamImpl (const GeometryContext &gctx, std::ostream &sl) const |
| Output Method for std::ostream, to be overloaded by child classes. | |
Protected Attributes | |
| std::shared_ptr< const CylinderBounds > | m_bounds |
| bounds (shared) | |
| 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 , Other = 7 } |
| 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. | |
Class for a CylinderSurface in the TrackingGeometry.
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 for a cylindrical tracking geometry.
|
protected |
Constructor from Transform3 and CylinderBounds.
| transform | The transform to position the surface |
| radius | The radius of the cylinder |
| halfz | The half length in z |
| halfphi | The half opening angle |
| avphi | The phi value from which the opening angle spans (both sides) |
| bevelMinZ | (optional) The bevel on the negative z side |
| bevelMaxZ | (optional) The bevel on the positive z sid The bevel on the positive z side |
|
protected |
Constructor from Transform3 and CylinderBounds arguments.
| transform | The transform to position the surface |
| cbounds | is a shared pointer to a cylindeer bounds object, it must exist (assert test) |
|
protected |
Constructor from SurfacePlacementBase: Element proxy.
| cbounds | are the provided cylinder bounds (shared) |
| placement | Reference to the surface placement |
|
protected |
Copy constructor.
| other | is the source cylinder for the copy |
|
protected |
Copy constructor - with shift.
| gctx | The current geometry context object, e.g. alignment |
| other | is the source cone surface |
| shift | is the additional transform applied after copying |
|
finalvirtual |
Calculate the derivative of path length at the geometry constraint or point-of-closest-approach w.r.t.
alignment parameters of the surface (i.e. local frame origin in global 3D Cartesian coordinates and its rotation represented with extrinsic Euler angles)
| gctx | The current geometry context object, e.g. alignment |
| position | global 3D position |
| direction | global 3D momentum direction |
Reimplemented from Acts::Surface.
| void Acts::CylinderSurface::assignSurfaceBounds | ( | std::shared_ptr< const CylinderBounds > | newBounds | ) |
Overwrite the existing surface bounds with new ones.
| newBounds | Pointer to the new bounds |
|
overridevirtual |
Assign the surface material description.
The material is usually derived in a complicated way and loaded from a framework given source. As various surfaces may share the same source this is provided by a shared pointer
| material | Material description associated to this surface |
Reimplemented from Acts::Surface.
|
finalvirtual |
This method returns the CylinderBounds by reference.
Implements Acts::Surface.
| const std::shared_ptr< const CylinderBounds > & Acts::CylinderSurface::boundsPtr | ( | ) | const |
This method returns the shared_ptr to the CylinderBounds.
|
finalvirtual |
Convert a global position to a local one this is the most generic interface, which is implemented by all surfaces.
position is required to be on-surface, which is indicated by the Result return value. | gctx | The current geometry context object, e.g. alignment |
| position | is the global position to be converted |
| direction | is the direction of the local position (ignored for RegularSurface) |
| tolerance | is the tolerance for the on-surface check |
Implements Acts::Surface.
|
finalvirtual |
Global to local transformation.
| gctx | The current geometry context object, e.g. alignment |
| position | is the global position to be transformed |
| tolerance | optional tolerance within which a point is considered valid on surface |
Implements Acts::RegularSurface.
|
finalvirtual |
Straight line intersection schema from position/direction.
| gctx | The current geometry context object, e.g. alignment |
| position | The position to start from |
| direction | The direction at start |
| boundaryTolerance | the Boundary Check Tolerance |
| tolerance | the tolerance used for the intersection |
If possible returns both solutions for the cylinder
Implements Acts::Surface.
|
overrideprotectedvirtual |
|
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 position to be transformed |
Implements Acts::RegularSurface.
|
finalvirtual |
Local to global transformation.
This is the most generic interface, which is implemented by all surfaces.
| gctx | The current geometry context object, e.g. alignment |
| lposition | local 2D position in specialized surface frame |
| direction | global 3D momentum direction (ignored for RegularSurface) |
Implements Acts::Surface.
| std::pair< std::shared_ptr< CylinderSurface >, bool > Acts::CylinderSurface::mergedWith | ( | const CylinderSurface & | other, |
| AxisDirection | direction, | ||
| bool | externalRotation, | ||
| const Logger & | logger = getDummyLogger() ) const |
Merge two cylinder surfaces into a single one.
| other | The other cylinder surface to merge with |
| direction | The axis direction: either AxisZ or AxisRPhi |
| externalRotation | If true, any phi rotation is done in the transform |
| logger | The logger to use |
other, and true if not.
|
overridevirtual |
Return method for properly formatted output string.
Implements Acts::Surface.
|
finalvirtual |
Return method for surface normal information.
| gctx | The current geometry context object, e.g. alignment |
| lposition | is the local position for which the normal vector is requested |
Implements Acts::RegularSurface.
|
finalvirtual |
Calculate the normal vector of the surface This overload is fully generic, fulfills the Surface interface and accepts a global position and a direction.
For RegularSurface this is equivalent to the normal overload, ignoring the direction
| gctx | The current geometry context object, e.g. alignment |
| pos | is the global position where the normal vector is constructed |
| direction | is the direction of the normal vector (ignored for RegularSurface) |
Implements Acts::Surface.
|
finalvirtual |
Return method for surface normal information.
| gctx | The current geometry context object, e.g. alignment |
| position | is the global position for which the normal vector is requested |
Implements Acts::RegularSurface.
| CylinderSurface & Acts::CylinderSurface::operator= | ( | const CylinderSurface & | other | ) |
Assignment operator.
| other | is the source cylinder for the copy |
|
finalvirtual |
Path correction due to incident of the track.
| gctx | The current geometry context object, e.g. alignment |
| position | is the global position as a starting point |
| direction | is the global momentum direction at the starting point |
Implements Acts::Surface.
|
overridevirtual |
Return a Polyhedron for a cylinder.
This method represents the cylinder as a polyhedron with a given number of segments to represent a quarter of a full circle. The polyedron will consist of the vertices of the cylinder on both sides, and faces between them, both as rectangular faces and as triangular faces.
| gctx | The current geometry context object, e.g. alignment |
| quarterSegments | The number of segments to approximate a quarter of the full circle; it's chosen to be 1, only the extrema points (-pi, -0.5pi, 0., 0.5pi) are inserted to capture the correct extent in the x-y plane |
Implements Acts::Surface.
|
finalvirtual |
Return the measurement frame - this is needed for alignment, in particular The measurement frame of a cylinder is the tangential plane at a given position.
| gctx | The current geometry context object, e.g. alignment |
| position | is the position where the measurement frame is defined |
| direction | is the momentum direction vector (ignored) |
Reimplemented from Acts::Surface.
|
finalvirtual |
The binning position method - is overloaded for r-type binning.
| gctx | The current geometry context object, e.g. alignment |
| aDir | is the axis Direction of global binning to be done |
Implements Acts::GeometryObject.
|
virtual |
Return method for the rotational symmetry axis.
| gctx | The current geometry context object, e.g. alignment |
|
overrideprotectedvirtual |
Transform surface local coordinates to material local coordinates.
| surfaceLocal | The local coordinates on the surface |
Reimplemented from Acts::Surface.
|
overridevirtual |