Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::Layer Class Referenceabstract

#include <acts/blob/sPHENIX/Core/include/Acts/Geometry/Layer.hpp>

+ Inheritance diagram for Acts::Layer:
+ Collaboration diagram for Acts::Layer:

Public Member Functions

 Layer ()=delete
 Default Constructor - deleted.
 
 Layer (const Layer &)=delete
 Copy Constructor - deleted.
 
virtual ~Layer ()=default
 Destructor.
 
Layeroperator= (const Layer &layer)=delete
 
const SurfaceArraysurfaceArray () const
 Return the entire SurfaceArray, returns a nullptr if no SurfaceArray.
 
SurfaceArraysurfaceArray ()
 Non-const version.
 
virtual const SurfacesurfaceRepresentation () const =0
 
virtual SurfacesurfaceRepresentation ()=0
 
double thickness () const
 
virtual bool isOnLayer (const GeometryContext &gctx, const Vector3 &position, const BoundaryCheck &bcheck=true) const
 
const ApproachDescriptorapproachDescriptor () const
 Return method for the approach descriptor, can be nullptr.
 
ApproachDescriptorapproachDescriptor ()
 Non-const version of the approach descriptor.
 
template<typename options_t >
bool resolve (const options_t &options) const
 
virtual bool resolve (bool resolveSensitive, bool resolveMaterial, bool resolvePassive) const
 
boost::container::small_vector
< SurfaceIntersection, 10 > 
compatibleSurfaces (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const NavigationOptions< Surface > &options) const
 Decompose Layer into (compatible) surfaces.
 
SurfaceIntersection surfaceOnApproach (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const NavigationOptions< Layer > &options) const
 
const LayernextLayer (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction) const
 
const TrackingVolumetrackingVolume () const
 
const AbstractVolumerepresentingVolume () const
 
LayerType layerType () const
 return the LayerType
 
- Public Member Functions inherited from Acts::GeometryObject
 GeometryObject ()=default
 Defaulted constructor.
 
 GeometryObject (const GeometryObject &)=default
 Defaulted copy constructor.
 
 GeometryObject (const GeometryIdentifier &geometryId)
 
GeometryObjectoperator= (const GeometryObject &geometryId)
 
const GeometryIdentifiergeometryId () const
 
virtual Vector3 binningPosition (const GeometryContext &gctx, BinningValue bValue) const =0
 
virtual double binningPositionValue (const GeometryContext &gctx, BinningValue bValue) const
 
void assignGeometryId (const GeometryIdentifier &geometryId)
 

Protected Member Functions

 Layer (std::unique_ptr< SurfaceArray > surfaceArray, double thickness=0., std::unique_ptr< ApproachDescriptor > ades=nullptr, LayerType laytyp=passive)
 
void encloseTrackingVolume (const TrackingVolume &tvol)
 

Protected Attributes

NextLayers m_nextLayers
 the previous Layer according to BinGenUtils
 
const BinUtilitym_nextLayerUtility = nullptr
 
std::unique_ptr< const
SurfaceArray
m_surfaceArray = nullptr
 
double m_layerThickness = 0.
 Thickness of the Layer.
 
std::unique_ptr< const
ApproachDescriptor
m_approachDescriptor = nullptr
 
const TrackingVolumem_trackingVolume = nullptr
 the enclosing TrackingVolume
 
std::unique_ptr< AbstractVolumem_representingVolume = nullptr
 
LayerType m_layerType
 make a passive/active either way
 
int m_ssRepresentingSurface = 0
 sub structure indication
 
int m_ssSensitiveSurfaces = 0
 
int m_ssApproachSurfaces = 0
 
- Protected Attributes inherited from Acts::GeometryObject
GeometryIdentifier m_geometryId
 

Private Member Functions

void closeGeometry (const IMaterialDecorator *materialDecorator, const GeometryIdentifier &layerID, const GeometryIdentifierHook &hook, const Logger &logger=getDummyLogger())
 

Friends

class TrackingVolume
 

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)

Definition at line 86 of file Layer.hpp.

View newest version in sPHENIX GitHub at line 86 of file Layer.hpp

Constructor & Destructor Documentation

Acts::Layer::Layer ( )
delete

Default Constructor - deleted.

Acts::Layer::Layer ( const Layer )
delete

Copy Constructor - deleted.

virtual Acts::Layer::~Layer ( )
virtualdefault

Destructor.

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

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

Definition at line 22 of file Layer.cpp.

View newest version in sPHENIX GitHub at line 22 of file Layer.cpp

References m_approachDescriptor, m_ssApproachSurfaces, m_ssSensitiveSurfaces, m_surfaceArray, and testing::internal::move().

+ Here is the call graph for this function:

Member Function Documentation

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

Return method for the approach descriptor, can be nullptr.

Definition at line 42 of file Layer.cpp.

View newest version in sPHENIX GitHub at line 42 of file Layer.cpp

Referenced by Acts::addLayerProtoMaterial(), Acts::Test::Layers::BOOST_AUTO_TEST_CASE(), ActsExamples::RootMaterialWriter::collectMaterial(), Acts::CylinderLayer::CylinderLayer(), Acts::DiscLayer::DiscLayer(), and Acts::PlaneLayer::PlaneLayer().

+ Here is the caller graph for this function:

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

Non-const version of the approach descriptor.

Definition at line 46 of file Layer.cpp.

View newest version in sPHENIX GitHub at line 46 of file Layer.cpp

void Acts::Layer::closeGeometry ( const IMaterialDecorator materialDecorator,
const GeometryIdentifier layerID,
const GeometryIdentifierHook hook,
const Logger logger = getDummyLogger() 
)
private

Private helper method to close the geometry

  • it will assign material to the surfaces if needed
  • it will set the layer geometry ID for a unique identification
  • it will also register the internal sub structure
Parameters
materialDecoratoris a decorator that assigns optionally the surface material to where they belong
layerIDis the geometry id of the volume as calculated by the TrackingGeometry
hookIdentifier hook to be applied to surfaces
loggerA Logger instance

Definition at line 50 of file Layer.cpp.

View newest version in sPHENIX GitHub at line 50 of file Layer.cpp

References ACTS_DEBUG, Acts::GeometryObject::assignGeometryId(), Acts::IMaterialDecorator::decorate(), Acts::GeometryIdentifierHook::decorateIdentifier(), Acts::GeometryIdentifier::setApproach(), and Acts::GeometryIdentifier::setSensitive().

Referenced by Acts::TrackingVolume::closeGeometry().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

boost::container::small_vector< Acts::SurfaceIntersection, 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

Definition at line 111 of file Layer.cpp.

View newest version in sPHENIX GitHub at line 111 of file Layer.cpp

References KFPMath::a, KFPMath::b, Acts::Test::boundaryCheck, Acts::NavigationOptions< object_t >::boundaryCheck, Acts::detail::checkIntersection(), Acts::ObjectMultiIntersection< object_t, representation_t >::closest(), distance(), Acts::NavigationOptions< object_t >::endObject, Acts::NavigationOptions< object_t >::externalSurfaces, Acts::ObjectIntersection< Surface >::forwardOrder(), Acts::GeometryObject::geometryId(), Acts::Surface::intersect(), Acts::ObjectIntersection< Surface >::invalid(), it, Acts::ObjectIntersection< object_t, representation_t >::object(), ckf::options, Acts::NavigationOptions< object_t >::overstepLimit, Acts::ObjectIntersection< object_t, representation_t >::pathLength(), Acts::NavigationOptions< object_t >::pathLimit, Acts::NavigationOptions< object_t >::resolveMaterial, Acts::NavigationOptions< object_t >::resolvePassive, Acts::NavigationOptions< object_t >::resolveSensitive, Acts::s_onSurfaceTolerance, Acts::Experimental::detail::BlueprintHelper::sort(), Acts::ObjectMultiIntersection< object_t, representation_t >::split(), Acts::NavigationOptions< object_t >::startObject, Acts::Surface::surfaceMaterial(), and thickness.

+ Here is the call graph for this function:

void Acts::Layer::encloseTrackingVolume ( const TrackingVolume tvol)
inlineprotected

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

Definition at line 34 of file Layer.ipp.

View newest version in sPHENIX GitHub at line 34 of file Layer.ipp

References m_trackingVolume.

Referenced by Acts::TrackingVolume::interlinkLayers().

+ Here is the caller graph for this function:

bool Acts::Layer::isOnLayer ( const GeometryContext gctx,
const Vector3 position,
const BoundaryCheck bcheck = true 
) const
inlinevirtual

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
bcheckis the boundary check directive
Returns
boolean that indicates success of the operation

Reimplemented in Acts::NavigationLayer.

Definition at line 70 of file Layer.ipp.

View newest version in sPHENIX GitHub at line 70 of file Layer.ipp

References m_representingVolume, and surfaceRepresentation().

Referenced by Acts::Test::Layers::BOOST_AUTO_TEST_CASE().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

LayerType Acts::Layer::layerType ( ) const
inline

return the LayerType

Definition at line 26 of file Layer.ipp.

View newest version in sPHENIX GitHub at line 26 of file Layer.ipp

References m_layerType.

Referenced by Acts::Test::Layers::BOOST_AUTO_TEST_CASE().

+ Here is the caller graph for this function:

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

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

Definition at line 42 of file Layer.ipp.

View newest version in sPHENIX GitHub at line 42 of file Layer.ipp

References m_nextLayers, m_nextLayerUtility, and Acts::BinUtility::nextDirection().

Referenced by Acts::Test::Layers::BOOST_AUTO_TEST_CASE(), and Acts::TrackingVolume::compatibleLayers().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Layer& Acts::Layer::operator= ( const Layer layer)
delete

Assignment operator - forbidden, layer assignment must not be ambiguous

Parameters
layeris the source layer for assignment
const AbstractVolume * Acts::Layer::representingVolume ( ) const
inline

Return the abstract volume that represents the layer

Returns
the representing volume of the layer

Definition at line 38 of file Layer.ipp.

View newest version in sPHENIX GitHub at line 38 of file Layer.ipp

References m_representingVolume.

Referenced by Acts::GeometryView3D::drawLayer().

+ Here is the caller graph for this function:

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

Accept layer according to the following collection directives

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

Definition at line 148 of file Layer.hpp.

View newest version in sPHENIX GitHub at line 148 of file Layer.hpp

Referenced by Acts::TrackingVolume::compatibleLayers().

+ Here is the caller graph for this function:

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

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.

Definition at line 54 of file Layer.ipp.

View newest version in sPHENIX GitHub at line 54 of file Layer.ipp

References m_ssApproachSurfaces, m_ssSensitiveSurfaces, m_surfaceArray, and surfaceRepresentation().

+ Here is the call graph for this function:

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

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

Definition at line 14 of file Layer.ipp.

View newest version in sPHENIX GitHub at line 14 of file Layer.ipp

References m_surfaceArray.

Referenced by Acts::LayerCreator::associateSurfacesToLayer(), Acts::Test::Layers::BOOST_AUTO_TEST_CASE(), Acts::Test::BOOST_FIXTURE_TEST_CASE(), ActsExamples::RootMaterialWriter::collectMaterial(), Acts::Svg::LayerConverter::convert(), Acts::PlaneLayer::create(), Acts::DiscLayer::create(), Acts::CylinderLayer::create(), and Acts::GeometryView3D::drawLayer().

+ Here is the caller graph for this function:

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

Non-const version.

Definition at line 18 of file Layer.ipp.

View newest version in sPHENIX GitHub at line 18 of file Layer.ipp

References m_surfaceArray.

Acts::SurfaceIntersection 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

Definition at line 261 of file Layer.cpp.

View newest version in sPHENIX GitHub at line 261 of file Layer.cpp

References Acts::NavigationOptions< object_t >::boundaryCheck, Acts::detail::checkIntersection(), Acts::Surface::intersect(), Acts::ObjectIntersection< Surface >::invalid(), Acts::NavigationOptions< object_t >::overstepLimit, Acts::NavigationOptions< object_t >::pathLimit, Acts::NavigationOptions< object_t >::resolveMaterial, Acts::NavigationOptions< object_t >::resolvePassive, Acts::NavigationOptions< object_t >::resolveSensitive, Acts::s_onSurfaceTolerance, and Acts::Test::tolerance.

Referenced by Acts::TrackingVolume::compatibleLayers().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

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

Referenced by Acts::addLayerProtoMaterial(), ActsExamples::RootMaterialWriter::collectMaterial(), Acts::Svg::LayerConverter::convert(), Acts::LayerArrayCreator::createNavigationSurface(), Acts::GeometryView3D::drawLayer(), isOnLayer(), and resolve().

+ Here is the caller graph for this function:

virtual Surface& Acts::Layer::surfaceRepresentation ( )
pure virtual
double Acts::Layer::thickness ( ) const
inline

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

Definition at line 22 of file Layer.ipp.

View newest version in sPHENIX GitHub at line 22 of file Layer.ipp

References m_layerThickness.

Referenced by Acts::Test::Layers::BOOST_AUTO_TEST_CASE(), Acts::NavigationLayer::create(), Acts::PlaneLayer::create(), Acts::ConeLayer::create(), Acts::DiscLayer::create(), Acts::CylinderLayer::create(), Acts::CylinderLayer::CylinderLayer(), Acts::DiscLayer::DiscLayer(), and Acts::NavigationLayer::NavigationLayer().

+ Here is the caller graph for this function:

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

Get the confining TrackingVolume

Returns
the pointer to the enclosing volume

Definition at line 30 of file Layer.ipp.

View newest version in sPHENIX GitHub at line 30 of file Layer.ipp

References m_trackingVolume.

Referenced by Acts::Test::Layers::BOOST_AUTO_TEST_CASE().

+ Here is the caller graph for this function:

Friends And Related Function Documentation

friend class TrackingVolume
friend

Declare the TrackingVolume as a friend, to be able to register previous, next and set the enclosing TrackingVolume

Definition at line 89 of file Layer.hpp.

View newest version in sPHENIX GitHub at line 89 of file Layer.hpp

Member Data Documentation

std::unique_ptr<const ApproachDescriptor> Acts::Layer::m_approachDescriptor = nullptr
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.

Definition at line 257 of file Layer.hpp.

View newest version in sPHENIX GitHub at line 257 of file Layer.hpp

Referenced by Acts::CylinderLayer::CylinderLayer(), Acts::DiscLayer::DiscLayer(), Layer(), and Acts::PlaneLayer::PlaneLayer().

double Acts::Layer::m_layerThickness = 0.
protected

Thickness of the Layer.

Definition at line 250 of file Layer.hpp.

View newest version in sPHENIX GitHub at line 250 of file Layer.hpp

Referenced by Acts::PlaneLayer::buildApproachDescriptor(), Acts::NavigationLayer::NavigationLayer(), and thickness().

LayerType Acts::Layer::m_layerType
protected

make a passive/active either way

Definition at line 267 of file Layer.hpp.

View newest version in sPHENIX GitHub at line 267 of file Layer.hpp

Referenced by layerType(), and Acts::NavigationLayer::NavigationLayer().

NextLayers Acts::Layer::m_nextLayers
protected

the previous Layer according to BinGenUtils

Definition at line 236 of file Layer.hpp.

View newest version in sPHENIX GitHub at line 236 of file Layer.hpp

Referenced by Acts::TrackingVolume::interlinkLayers(), and nextLayer().

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

A binutility to find the next layer

Definition at line 240 of file Layer.hpp.

View newest version in sPHENIX GitHub at line 240 of file Layer.hpp

Referenced by Acts::TrackingVolume::interlinkLayers(), and nextLayer().

std::unique_ptr<AbstractVolume> Acts::Layer::m_representingVolume = nullptr
protected

Representing Volume can be used as approach surface sources

Definition at line 264 of file Layer.hpp.

View newest version in sPHENIX GitHub at line 264 of file Layer.hpp

Referenced by Acts::CylinderLayer::CylinderLayer(), Acts::DiscLayer::DiscLayer(), isOnLayer(), and representingVolume().

int Acts::Layer::m_ssApproachSurfaces = 0
protected

Definition at line 272 of file Layer.hpp.

View newest version in sPHENIX GitHub at line 272 of file Layer.hpp

Referenced by Layer(), and resolve().

int Acts::Layer::m_ssRepresentingSurface = 0
protected

sub structure indication

Definition at line 270 of file Layer.hpp.

View newest version in sPHENIX GitHub at line 270 of file Layer.hpp

int Acts::Layer::m_ssSensitiveSurfaces = 0
protected

Definition at line 271 of file Layer.hpp.

View newest version in sPHENIX GitHub at line 271 of file Layer.hpp

Referenced by Layer(), and resolve().

std::unique_ptr<const SurfaceArray> Acts::Layer::m_surfaceArray = nullptr
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.

Definition at line 247 of file Layer.hpp.

View newest version in sPHENIX GitHub at line 247 of file Layer.hpp

Referenced by Acts::CylinderLayer::CylinderLayer(), Acts::DiscLayer::DiscLayer(), Layer(), Acts::PlaneLayer::PlaneLayer(), resolve(), and surfaceArray().

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

the enclosing TrackingVolume

Definition at line 260 of file Layer.hpp.

View newest version in sPHENIX GitHub at line 260 of file Layer.hpp

Referenced by encloseTrackingVolume(), and trackingVolume().


The documentation for this class was generated from the following files: