ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::Layer Class Referenceabstract

Base Class for a Detector Layer in the Tracking Geometry. More...

#include <Acts/Geometry/Layer.hpp>

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

Public Member Functions

 ~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.
virtual const SurfacesurfaceRepresentation () const =0
 Transforms the layer into a Surface representation for extrapolation.
virtual SurfacesurfaceRepresentation ()=0
 Non-const version of surface representation access.
const TrackingVolumetrackingVolume () const
 Get the confining TrackingVolume.
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
virtual Vector3 referencePosition (const GeometryContext &gctx, AxisDirection aDir) const =0
 Force a binning position method.
virtual double referencePositionValue (const GeometryContext &gctx, AxisDirection aDir) const
 Implement the binningValue.

Protected Member Functions

 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

Protected Attributes

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
Protected Attributes inherited from Acts::GeometryObject
GeometryIdentifier m_geometryId
 Unique geometry identifier for this object.

Detailed Description

Base Class for a Detector Layer in the Tracking Geometry.

An actual implemented Detector Layer inheriting from this base class has to inherit from a specific type of Surface as well. In addition, a Layer can carry:

A SurfaceArray of Surfaces holding the actual detector elements or subSurfaces. A pointer to the TrackingVolume (can only be set by such) An active/passive code : 0 - active 1 - passive [....] - other

The search type for compatible surfaces on a layer is [ the higher the number, the faster ]: ------— Layer internal ---------------------------------------------— -1 - provide all intersection tested without boundary check 0 - provide all intersection tested with boundary check 1 - provide overlap descriptor based without boundary check 2 - provide overlap descriptor based with boundary check

A layer can have substructure regarding:

  • m_ssRepresentingSurface -> always exists (1), can have material (2)
  • m_ssSensitiveSurfaces -> can or not exist (0,1), can have material (2)
  • m_ssApproachSurfaces -> can or not exist (0,1) cam have material (2)

Constructor & Destructor Documentation

◆ ~Layer()

Acts::Layer::~Layer ( )
overridenoexcept

Destructor.

◆ Layer()

Acts::Layer::Layer ( std::unique_ptr< SurfaceArray > surfaceArray,
double thickness = 0.,
std::unique_ptr< ApproachDescriptor > ades = nullptr,
LayerType laytyp = passive )
explicitprotected

Constructor with pointer to SurfaceArray (passing ownership).

Parameters
surfaceArrayis the array of sensitive surfaces
thicknessis the normal thickness of the Layer
adesoapproach descriptor
laytypis the layer type if active or passive

Member Function Documentation

◆ approachDescriptor() [1/2]

ApproachDescriptor * Acts::Layer::approachDescriptor ( )

Non-const version of the approach descriptor.

Returns
Mutable pointer to the approach descriptor

◆ approachDescriptor() [2/2]

const ApproachDescriptor * Acts::Layer::approachDescriptor ( ) const

Return method for the approach descriptor, can be nullptr.

Returns
Pointer to the approach descriptor, or nullptr if not set

◆ compatibleSurfaces()

boost::container::small_vector< NavigationTarget, 10 > Acts::Layer::compatibleSurfaces ( const GeometryContext & gctx,
const Vector3 & position,
const Vector3 & direction,
const NavigationOptions< Surface > & options ) const

Decompose Layer into (compatible) surfaces.

Parameters
gctxThe current geometry context object, e.g. alignment
positionPosition parameter for searching
directionDirection of the parameters for searching
optionsThe navigation options
Returns
list of intersection of surfaces on the layer

◆ encloseTrackingVolume()

void Acts::Layer::encloseTrackingVolume ( const TrackingVolume & tvol)
protected

private method to set enclosing TrackingVolume, called by friend class only optionally, the layer can be resized to the dimensions of the TrackingVolume

  • Bounds of the Surface are resized
  • MaterialSlab dimensions are resized
  • SubSurface array boundaries are NOT resized
Parameters
tvolis the tracking volume the layer is confined

◆ isOnLayer()

virtual bool Acts::Layer::isOnLayer ( const GeometryContext & gctx,
const Vector3 & position,
const BoundaryTolerance & boundaryTolerance = BoundaryTolerance::None() ) const
virtual

geometrical isOnLayer() method

Note
using isOnSurface() with Layer specific tolerance
Parameters
gctxThe current geometry context object, e.g. alignment
positionis the global position to be checked
boundaryToleranceis the boundary check directive
Returns
boolean that indicates success of the operation

Reimplemented in Acts::NavigationLayer.

◆ layerThickness()

double Acts::Layer::layerThickness ( ) const

Return the Thickness of the Layer this is by definition along the normal vector of the surfaceRepresentation.

Returns
The layer thickness value

◆ layerType()

LayerType Acts::Layer::layerType ( ) const

return the LayerType

Returns
The layer type (active, passive, or navigation)

◆ nextLayer()

const Layer * Acts::Layer::nextLayer ( const GeometryContext & gctx,
const Vector3 & position,
const Vector3 & direction ) const

Fast navigation to next layer.

Parameters
gctxThe current geometry context object, e.g. alignment
positionis the start position for the search
directionis the direction for the search
Returns
the pointer to the next layer

◆ representingVolume()

const Volume * Acts::Layer::representingVolume ( ) const

Return the abstract volume that represents the layer.

Returns
the representing volume of the layer

◆ resolve() [1/2]

virtual bool Acts::Layer::resolve ( bool resolveSensitive,
bool resolveMaterial,
bool resolvePassive ) const
virtual

Accept layer according to the following collection directives.

Parameters
resolveSensitiveis the prescription to find the sensitive surfaces
resolveMaterialis the precription to find material surfaces
resolvePassiveis the prescription to find all passive surfaces
Returns
a boolean whether the layer is accepted for processing

Reimplemented in Acts::NavigationLayer.

◆ resolve() [2/2]

template<typename options_t>
bool Acts::Layer::resolve ( const options_t & options) const

Accept layer according to the following collection directives.

Template Parameters
options_tType of the options for navigation
Parameters
optionsNavigation options containing resolution settings
Returns
a boolean whether the layer is accepted for processing

◆ surfaceArray() [1/2]

SurfaceArray * Acts::Layer::surfaceArray ( )

Non-const version.

Returns
Mutable pointer to the surface array

◆ surfaceArray() [2/2]

const SurfaceArray * Acts::Layer::surfaceArray ( ) const

Return the entire SurfaceArray, returns a nullptr if no SurfaceArray.

Returns
Pointer to the surface array, or nullptr if not set

◆ surfaceOnApproach()

NavigationTarget Acts::Layer::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.

Parameters
gctxThe current geometry context object, e.g. alignment
positionPosition for searching
directionDirection for searching
optionsThe navigation options
Returns
the Surface intersection of the approach surface

◆ surfaceRepresentation() [1/2]

virtual const Surface & Acts::Layer::surfaceRepresentation ( ) const
pure virtual

Transforms the layer into a Surface representation for extrapolation.

Note
the layer can be hosting many surfaces, but this is the global one to which one can extrapolate
Returns
Reference to the layer's surface representation

Implemented in Acts::ConeLayer, Acts::CylinderLayer, Acts::DiscLayer, Acts::NavigationLayer, and Acts::PlaneLayer.

◆ surfaceRepresentation() [2/2]

virtual Surface & Acts::Layer::surfaceRepresentation ( )
pure virtual

Non-const version of surface representation access.

Returns
Mutable reference to the layer surface

Implemented in Acts::ConeLayer, Acts::CylinderLayer, Acts::DiscLayer, Acts::NavigationLayer, and Acts::PlaneLayer.

◆ trackingVolume()

const TrackingVolume * Acts::Layer::trackingVolume ( ) const

Get the confining TrackingVolume.

Returns
the pointer to the enclosing volume

Member Data Documentation

◆ m_approachDescriptor

std::unique_ptr<const ApproachDescriptor> Acts::Layer::m_approachDescriptor
protected

descriptor for surface on approach

The descriptor may need to be modified during geometry building, and will remain constant afterwards, but again C++ cannot currently express this.

◆ m_layerThickness

double Acts::Layer::m_layerThickness = 0
protected

Thickness of the Layer.

◆ m_layerType

LayerType Acts::Layer::m_layerType
protected

make a passive/active either way

◆ m_nextLayers

NextLayers Acts::Layer::m_nextLayers
protected

the previous Layer according to BinGenUtils

◆ m_nextLayerUtility

const BinUtility* Acts::Layer::m_nextLayerUtility = nullptr
protected

A binutility to find the next layer.

Todo
check if this is needed

◆ m_representingVolume

std::unique_ptr<Volume> Acts::Layer::m_representingVolume
protected

Representing Volume can be used as approach surface sources.

◆ m_ssApproachSurfaces

int Acts::Layer::m_ssApproachSurfaces = 0
protected

Substructure flag indicating approach surface configuration.

◆ m_ssRepresentingSurface

int Acts::Layer::m_ssRepresentingSurface = 0
protected

sub structure indication Substructure flag indicating representing surface configuration

◆ m_ssSensitiveSurfaces

int Acts::Layer::m_ssSensitiveSurfaces = 0
protected

Substructure flag indicating sensitive surface configuration.

◆ m_surfaceArray

std::unique_ptr<const SurfaceArray> Acts::Layer::m_surfaceArray
protected

SurfaceArray on this layer Surface.

This array will be modified during signature and constant afterwards, but the C++ type system unfortunately cannot cleanly express this.

◆ m_trackingVolume

const TrackingVolume* Acts::Layer::m_trackingVolume = nullptr
protected

the enclosing TrackingVolume