ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::DiscLayer Class Reference

Class to describe a disc-like detector layer for tracking, it inherits from both, Layer base class and DiscSurface class. More...

#include <Acts/Geometry/DiscLayer.hpp>

Inheritance diagram for Acts::DiscLayer:
[legend]
Collaboration diagram for Acts::DiscLayer:
[legend]

Public Member Functions

 DiscLayer ()=delete
 DiscLayer (const DiscLayer &cla)=delete
 ~DiscLayer () override=default
DiscLayeroperator= (const DiscLayer &)=delete
const DiscSurfacesurfaceRepresentation () const override
 Transforms the layer into a Surface representation for extrapolation.
DiscSurfacesurfaceRepresentation () override
 Non-const version of surface representation access.
Public Member Functions inherited from Acts::DiscSurface
void assignSurfaceBounds (std::shared_ptr< const DiscBounds > newBounds)
 Overwrite the existing surface bounds with new ones.
const SurfaceBoundsbounds () const final
 This method returns the bounds by reference.
const std::shared_ptr< const DiscBounds > & boundsPtr () const
 This method returns the shared_ptr to the DiscBounds.
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.
FreeToBoundMatrix freeToBoundJacobian (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const final
 Calculate the jacobian from global to local which the surface knows best, hence the calculation is done here.
Result< Vector2globalToLocal (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< Vector2globalToLocal (const GeometryContext &gctx, const Vector3 &position, double tolerance=s_onSurfaceTolerance) const final
 Global to local transformation.
Vector2 globalToLocalCartesian (const GeometryContext &gctx, const Vector3 &position, double tol=0.) const
 Special method for DiscSurface : global<->local from cartesian coordinates.
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.
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 localCartesianToGlobal (const GeometryContext &gctx, const Vector2 &lposition) const
 Special method for DiscSurface : local<->global transformation when provided cartesian coordinates.
Vector2 localCartesianToPolar (const Vector2 &lcart) const
 Special method for Disc surface : local<->local transformations polar <-> cartesian.
Vector2 localPolarToCartesian (const Vector2 &lpolar) const
 Special method for DiscSurface : local<->local transformations polar <-> cartesian.
Vector2 localPolarToLocalCartesian (const Vector2 &locpol) const
 Special method for DiscSurface : local<->local transformations polar <-> cartesian.
Vector3 localToGlobal (const GeometryContext &gctx, const Vector2 &lposition) const final
 Local to global transformation For planar surfaces the momentum direction is ignored in the 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< DiscSurface >, bool > mergedWith (const DiscSurface &other, AxisDirection direction, bool externalRotation, const Logger &logger=getDummyLogger()) const
 Merge two disc surfaces into a single one.
std::string name () const override
 Return properly formatted class name for screen output.
Vector3 normal (const GeometryContext &gctx) const
 Get the normal vector, independent of the location.
Vector3 normal (const GeometryContext &gctx, const Vector2 &lposition) const final
 Normal vector return.
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
 Get the normal vector of this surface at a given global position.
DiscSurfaceoperator= (const DiscSurface &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) const override
 Return a Polyhedron for the surfaces.
Vector3 referencePosition (const GeometryContext &gctx, AxisDirection aDir) const final
 A reference position for a given axis direction.
double referencePositionValue (const GeometryContext &gctx, AxisDirection aDir) const final
 A reference position value for a given axis direction.
SurfaceType type () const override
 Return the surface type.
Public Member Functions inherited from Acts::RegularSurface
Result< Vector2globalToLocal (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
 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
 ~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.
virtual AlignmentToPathMatrix alignmentToPathDerivative (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.
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 DetectorElementBaseassociatedDetectorElement () const
 Return method for the associated Detector Element.
const LayerassociatedLayer () 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 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< SurfacegetSharedPtr ()
 Retrieve a std::shared_ptr for this surface (non-const version).
std::shared_ptr< const SurfacegetSharedPtr () 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 Transform3localToGlobalTransform (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.
Surfaceoperator= (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 Acts::RotationMatrix3 referenceFrame (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const
 Return method for the reference frame This is the frame in which the covariance matrix is defined (specialized by all surfaces).
const ISurfaceMaterialsurfaceMaterial () 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 SurfacePlacementBasesurfacePlacement () const
 Return the associated surface placement if there is any.
double thickness () const
 Return the thickness of the surface in the normal direction.
GeometryContextOstreamWrapper< SurfacetoStream (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 Transform3transform (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.
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.
virtual ~GeometryObject () noexcept=default
void assignGeometryId (const GeometryIdentifier &geometryId)
 Set the value.
GeometryIdentifier geometryId () const
Public Member Functions inherited from Acts::Layer
 ~Layer () noexcept override
 Destructor.
ApproachDescriptorapproachDescriptor ()
 Non-const version of the approach descriptor.
const ApproachDescriptorapproachDescriptor () const
 Return method for the approach descriptor, can be nullptr.
boost::container::small_vector< NavigationTarget, 10 > compatibleSurfaces (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const NavigationOptions< Surface > &options) const
 Decompose Layer into (compatible) surfaces.
virtual bool isOnLayer (const GeometryContext &gctx, const Vector3 &position, const BoundaryTolerance &boundaryTolerance=BoundaryTolerance::None()) const
 geometrical isOnLayer() method
double layerThickness () const
 Return the Thickness of the Layer this is by definition along the normal vector of the surfaceRepresentation.
LayerType layerType () const
 return the LayerType
const LayernextLayer (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const
 Fast navigation to next layer.
const VolumerepresentingVolume () const
 Return the abstract volume that represents the layer.
virtual bool resolve (bool resolveSensitive, bool resolveMaterial, bool resolvePassive) const
 Accept layer according to the following collection directives.
template<typename options_t>
bool resolve (const options_t &options) const
 Accept layer according to the following collection directives.
SurfaceArraysurfaceArray ()
 Non-const version.
const SurfaceArraysurfaceArray () const
 Return the entire SurfaceArray, returns a nullptr if no SurfaceArray.
NavigationTarget surfaceOnApproach (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const NavigationOptions< Layer > &options) const
 Surface seen on approach for layers without sub structure, this is the surfaceRepresentation for layers with sub structure, this is the approachSurface.
const TrackingVolumetrackingVolume () const
 Get the confining TrackingVolume.

Static Public Member Functions

static std::shared_ptr< DiscLayercreate (const Transform3 &transform, const std::shared_ptr< const DiscBounds > &dbounds, std::unique_ptr< SurfaceArray > surfaceArray=nullptr, double thickness=0., std::unique_ptr< ApproachDescriptor > ad=nullptr, LayerType laytyp=passive)
 Factory constructor with DiscSurface components.
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.

Protected Member Functions

 DiscLayer (const DiscLayer &cla, const Transform3 &tr)
 Copy constructor with shift.
 DiscLayer (const Transform3 &transform, const std::shared_ptr< const DiscBounds > &dbounds, std::unique_ptr< SurfaceArray > surfaceArray=nullptr, double thickness=0., std::unique_ptr< ApproachDescriptor > ades=nullptr, LayerType laytyp=active)
Protected Member Functions inherited from Acts::DiscSurface
 DiscSurface (const DiscSurface &other)
 Copy Constructor.
 DiscSurface (const GeometryContext &gctx, const DiscSurface &other, const Transform3 &shift)
 Copy constructor - with shift.
 DiscSurface (const Transform3 &transform, double minhalfx, double maxhalfx, double minR, double maxR, double avephi=0., double stereo=0.)
 Constructor for Discs from Transform3, \( r_{min}, r_{max}, hx_{min}, hx_{max} \) This is n this case you have DiscTrapezoidBounds.
 DiscSurface (const Transform3 &transform, double rmin, double rmax, double hphisec=std::numbers::pi)
 Constructor for Discs from Transform3, \( r_{min}, r_{max} \).
 DiscSurface (const Transform3 &transform, std::shared_ptr< const DiscBounds > dbounds=nullptr)
 Constructor for Discs from Transform3 and shared DiscBounds.
 DiscSurface (std::shared_ptr< const DiscBounds > dbounds, const SurfacePlacementBase &placement)
 Constructor from SurfacePlacementBase : Element proxy.
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
 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 Member Functions inherited from Acts::Layer
 Layer (std::unique_ptr< SurfaceArray > surfaceArray, double thickness=0., std::unique_ptr< ApproachDescriptor > ades=nullptr, LayerType laytyp=passive)
 Constructor with pointer to SurfaceArray (passing ownership).
void encloseTrackingVolume (const TrackingVolume &tvol)
 private method to set enclosing TrackingVolume, called by friend class only optionally, the layer can be resized to the dimensions of the TrackingVolume

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 Attributes inherited from Acts::Surface
static constexpr std::array< std::string_view, Surface::SurfaceType::Other+1 > s_surfaceTypeNames
 Helper strings for screen output.
Protected Attributes inherited from Acts::DiscSurface
std::shared_ptr< const DiscBoundsm_bounds
 bounds (shared)
Protected Attributes inherited from Acts::Surface
std::unique_ptr< const Transform3m_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.
Protected Attributes inherited from Acts::Layer
std::unique_ptr< const ApproachDescriptorm_approachDescriptor
 descriptor for surface on approach
double m_layerThickness = 0
 Thickness of the Layer.
LayerType m_layerType
 make a passive/active either way
NextLayers m_nextLayers
 the previous Layer according to BinGenUtils
const BinUtilitym_nextLayerUtility = nullptr
 A binutility to find the next layer.
std::unique_ptr< Volumem_representingVolume
 Representing Volume can be used as approach surface sources.
int m_ssApproachSurfaces = 0
 Substructure flag indicating approach surface configuration.
int m_ssRepresentingSurface = 0
 sub structure indication Substructure flag indicating representing surface configuration
int m_ssSensitiveSurfaces = 0
 Substructure flag indicating sensitive surface configuration.
std::unique_ptr< const SurfaceArraym_surfaceArray
 SurfaceArray on this layer Surface.
const TrackingVolumem_trackingVolume = nullptr
 the enclosing TrackingVolume

Detailed Description

Class to describe a disc-like detector layer for tracking, it inherits from both, Layer base class and DiscSurface class.

Constructor & Destructor Documentation

◆ DiscLayer() [1/4]

Acts::DiscLayer::DiscLayer ( )
delete

◆ DiscLayer() [2/4]

Acts::DiscLayer::DiscLayer ( const DiscLayer & cla)
delete

◆ ~DiscLayer()

Acts::DiscLayer::~DiscLayer ( )
overridedefault

◆ DiscLayer() [3/4]

Acts::DiscLayer::DiscLayer ( const Transform3 & transform,
const std::shared_ptr< const DiscBounds > & dbounds,
std::unique_ptr< SurfaceArray > surfaceArray = nullptr,
double thickness = 0.,
std::unique_ptr< ApproachDescriptor > ades = nullptr,
LayerType laytyp = active )
protected
Parameters
transformis the transform to place the layer in the 3D frame
dboundsare the disc bounds that describe the layer dimensions
surfaceArrayis the array of sensitive surfaces
thicknessis the layer thickness (along the normal vector)
adesAre the approach descriptors that provides the approach surface
laytypis the layer taype

◆ DiscLayer() [4/4]

Acts::DiscLayer::DiscLayer ( const DiscLayer & cla,
const Transform3 & tr )
protected

Copy constructor with shift.

Parameters
claThe disc layer to copy from
trThe transformation to apply

Member Function Documentation

◆ create()

std::shared_ptr< DiscLayer > Acts::DiscLayer::create ( const Transform3 & transform,
const std::shared_ptr< const DiscBounds > & dbounds,
std::unique_ptr< SurfaceArray > surfaceArray = nullptr,
double thickness = 0.,
std::unique_ptr< ApproachDescriptor > ad = nullptr,
LayerType laytyp = passive )
static

Factory constructor with DiscSurface components.

Parameters
transformis the transform to place the layer in the 3D frame
dboundsare the disc bounds that describe the layer dimensions
surfaceArrayis the array of sensitive surfaces
thicknessis the layer thickness (along the normal vector)
adis the approach descriptor that provides the approach surface
laytypis the layer type
Todo
move ApproachDescriptor to unqique_ptr
Returns
a sharted pointer to the new layer

◆ operator=()

DiscLayer & Acts::DiscLayer::operator= ( const DiscLayer & )
delete

◆ surfaceRepresentation() [1/2]

const DiscSurface & Acts::DiscLayer::surfaceRepresentation ( ) const
overridevirtual

Transforms the layer into a Surface representation for extrapolation.

Returns
This method returns a surface reference

Implements Acts::Layer.

◆ surfaceRepresentation() [2/2]

DiscSurface & Acts::DiscLayer::surfaceRepresentation ( )
overridevirtual

Non-const version of surface representation access.

Returns
Mutable reference to the disc surface

Implements Acts::Layer.