ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
|
#include <acts/blob/master/Core/include/Acts/Geometry/Layer.hpp>
Public Member Functions | |
Layer ()=delete | |
Default Constructor - deleted. | |
Layer (const Layer &)=delete | |
Copy Constructor - deleted. | |
virtual | ~Layer ()=default |
Destructor. | |
Layer & | operator= (const Layer &)=delete |
const SurfaceArray * | surfaceArray () const |
Return the entire SurfaceArray, returns a nullptr if no SurfaceArray. | |
SurfaceArray * | surfaceArray () |
Non-const version. | |
virtual const Surface & | surfaceRepresentation () const =0 |
virtual Surface & | surfaceRepresentation ()=0 |
double | thickness () const |
virtual bool | isOnLayer (const GeometryContext &gctx, const Vector3D &position, const BoundaryCheck &bcheck=true) const |
const ApproachDescriptor * | approachDescriptor () const |
Return method for the approach descriptor, can be nullptr. | |
ApproachDescriptor * | approachDescriptor () |
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 |
template<typename options_t > | |
std::vector< SurfaceIntersection > | compatibleSurfaces (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const options_t &options) const |
Decompose Layer into (compatible) surfaces. | |
template<typename options_t > | |
const SurfaceIntersection | surfaceOnApproach (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const options_t &options) const |
const Layer * | nextLayer (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction) const |
const TrackingVolume * | trackingVolume () const |
const AbstractVolume * | representingVolume () const |
LayerType | layerType () const |
return the LayerType | |
Public Member Functions inherited from Acts::GeometryObject | |
GeometryObject ()=default | |
Defaulted construrctor. | |
GeometryObject (const GeometryObject &)=default | |
Defaulted copy constructor. | |
GeometryObject (const GeometryID &geoID) | |
GeometryObject & | operator= (const GeometryObject &geoID) |
const GeometryID & | geoID () const |
virtual const Vector3D | binningPosition (const GeometryContext &gctx, BinningValue bValue) const =0 |
virtual double | binningPositionValue (const GeometryContext &gctx, BinningValue bValue) const |
void | assignGeoID (const GeometryID &geoID) |
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 BinUtility * | m_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 TrackingVolume * | m_trackingVolume = nullptr |
the enclosing TrackingVolume | |
std::unique_ptr< AbstractVolume > | m_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 | |
GeometryID | m_geoID |
Private Member Functions | |
void | closeGeometry (const IMaterialDecorator *materialDecorator, const GeometryID &layerID) |
Friends | |
class | TrackingVolume |
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 - activ 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:
Definition at line 83 of file Layer.hpp.
View newest version in sPHENIX GitHub at line 83 of file Layer.hpp
|
delete |
Default Constructor - deleted.
|
delete |
Copy Constructor - deleted.
|
virtualdefault |
Destructor.
|
protected |
Constructor with pointer to SurfaceArray (passing ownership)
surfaceArray | is the array of sensitive surfaces |
thickness | is the normal thickness of the Layer |
ades | oapproach descriptor |
laytyp | is the layer type if active or passive |
Definition at line 19 of file Layer.cpp.
View newest version in sPHENIX GitHub at line 19 of file Layer.cpp
References m_approachDescriptor, m_ssApproachSurfaces, m_ssSensitiveSurfaces, and m_surfaceArray.
const Acts::ApproachDescriptor * Acts::Layer::approachDescriptor | ( | ) | const |
Return method for the approach descriptor, can be nullptr.
Definition at line 39 of file Layer.cpp.
View newest version in sPHENIX GitHub at line 39 of file Layer.cpp
Referenced by Acts::addLayerProtoMaterial(), Acts::Test::Layers::BOOST_AUTO_TEST_CASE(), FW::RootMaterialWriter::collectMaterial(), Acts::JsonGeometryConverter::convertToRep(), Acts::CylinderLayer::CylinderLayer(), Acts::DiscLayer::DiscLayer(), and Acts::PlaneLayer::PlaneLayer().
Acts::ApproachDescriptor * Acts::Layer::approachDescriptor | ( | ) |
|
private |
Private helper method to close the geometry
materialDecorator | is a decorator that assigns optionally the surface material to where they belong |
layerID | is the geometry id of the volume as calculated by the TrackingGeometry |
Definition at line 47 of file Layer.cpp.
View newest version in sPHENIX GitHub at line 47 of file Layer.cpp
References Acts::GeometryObject::assignGeoID(), Acts::IMaterialDecorator::decorate(), Acts::GeometryID::setApproach(), and Acts::GeometryID::setSensitive().
Referenced by Acts::TrackingVolume::closeGeometry().
std::vector< SurfaceIntersection > Acts::Layer::compatibleSurfaces | ( | const GeometryContext & | gctx, |
const Vector3D & | position, | ||
const Vector3D & | direction, | ||
const options_t & | options | ||
) | const |
Decompose Layer into (compatible) surfaces.
options_t | The navigation options type |
gctx | The current geometry context object, e.g. alignment |
position | Position parameter for searching |
momentum | Momentum parameter for searching |
options | The templated naivation options |
Definition at line 70 of file Layer.ipp.
View newest version in sPHENIX GitHub at line 70 of file Layer.ipp
References Acts::forward, Acts::Surface::intersect(), Acts::ObjectIntersection< object_t, representation_t >::intersection, m_approachDescriptor, m_surfaceArray, Acts::Surface::pathCorrection(), Acts::Intersection::pathLength, surfaceRepresentation(), and thickness().
|
inlineprotected |
private method to set enclosing TrackingVolume, called by friend class only optionally, the layer can be resized to the dimensions of the TrackingVolume
tvol | is the tracking volume the layer is confined |
Definition at line 33 of file Layer.ipp.
View newest version in sPHENIX GitHub at line 33 of file Layer.ipp
References m_trackingVolume.
Referenced by Acts::TrackingVolume::interlinkLayers().
|
inlinevirtual |
geometrical isOnLayer() method
gctx | The current geometry context object, e.g. alignment |
position | is the gobal position to be checked |
bcheck | is the boundary check directive |
Reimplemented in Acts::NavigationLayer.
Definition at line 281 of file Layer.ipp.
View newest version in sPHENIX GitHub at line 281 of file Layer.ipp
References m_representingVolume, Acts::s_origin(), and surfaceRepresentation().
Referenced by Acts::Test::Layers::BOOST_AUTO_TEST_CASE().
|
inline |
return the LayerType
Definition at line 25 of file Layer.ipp.
View newest version in sPHENIX GitHub at line 25 of file Layer.ipp
References m_layerType.
Referenced by Acts::Test::Layers::BOOST_AUTO_TEST_CASE().
|
inline |
Fast navigation to next layer
gctx | The current geometry context object, e.g. alignment |
position | is the start position for the search |
direction | is the direction for the search |
Definition at line 41 of file Layer.ipp.
View newest version in sPHENIX GitHub at line 41 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().
Assignment operator - forbidden, layer assignment must not be ambiguous
lay | is the source layer for assignment |
|
inline |
Return the abstract volume that represents the layer
Definition at line 37 of file Layer.ipp.
View newest version in sPHENIX GitHub at line 37 of file Layer.ipp
References m_representingVolume.
|
inline |
Accept layer according to the following collection directives
options_t | Type of the options for navigation |
Definition at line 145 of file Layer.hpp.
View newest version in sPHENIX GitHub at line 145 of file Layer.hpp
Referenced by Acts::TrackingVolume::compatibleLayers().
|
inlinevirtual |
Accept layer according to the following collection directives
resolveSensitive | is the prescription to find the sensitive surfaces |
resolveMaterial | is the precription to find material surfaces |
resolvePassive | is the prescription to find all passive surfaces |
Reimplemented in Acts::NavigationLayer.
Definition at line 53 of file Layer.ipp.
View newest version in sPHENIX GitHub at line 53 of file Layer.ipp
References m_ssApproachSurfaces, m_ssSensitiveSurfaces, m_surfaceArray, and surfaceRepresentation().
|
inline |
Return the entire SurfaceArray, returns a nullptr if no SurfaceArray.
Definition at line 13 of file Layer.ipp.
View newest version in sPHENIX GitHub at line 13 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(), FW::RootMaterialWriter::collectMaterial(), Acts::JsonGeometryConverter::convertToRep(), Acts::PlaneLayer::create(), Acts::DiscLayer::create(), and Acts::CylinderLayer::create().
|
inline |
Non-const version.
Definition at line 17 of file Layer.ipp.
View newest version in sPHENIX GitHub at line 17 of file Layer.ipp
References m_surfaceArray.
const SurfaceIntersection Acts::Layer::surfaceOnApproach | ( | const GeometryContext & | gctx, |
const Vector3D & | position, | ||
const Vector3D & | direction, | ||
const options_t & | options | ||
) | const |
Surface seen on approach
options_t | The navigation options type |
for layers without sub structure, this is the surfaceRepresentation for layers with sub structure, this is the approachSurface
gctx | The current geometry context object, e.g. alignment |
position | Position for searching |
direction | Direction for searching |
options | The templated naivation options |
Definition at line 212 of file Layer.ipp.
View newest version in sPHENIX GitHub at line 212 of file Layer.ipp
References Acts::Surface::intersect(), Acts::ObjectIntersection< object_t, representation_t >::intersection, m_approachDescriptor, m_ssApproachSurfaces, m_ssSensitiveSurfaces, Acts::Intersection::pathLength, Acts::s_onSurfaceTolerance, Acts::Surface::surfaceMaterial(), and surfaceRepresentation().
Referenced by Acts::TrackingVolume::compatibleLayers().
|
pure virtual |
Transforms the layer into a Surface representation for extrapolation
Implemented in Acts::CylinderLayer, Acts::DiscLayer, Acts::NavigationLayer, Acts::ConeLayer, Acts::PlaneLayer, and Acts::LayerStub.
Referenced by Acts::addLayerProtoMaterial(), FW::RootMaterialWriter::collectMaterial(), compatibleSurfaces(), Acts::JsonGeometryConverter::convertToRep(), Acts::LayerArrayCreator::createNavigationSurface(), isOnLayer(), resolve(), and surfaceOnApproach().
|
pure virtual |
Implemented in Acts::CylinderLayer, Acts::DiscLayer, Acts::NavigationLayer, Acts::ConeLayer, Acts::PlaneLayer, and Acts::LayerStub.
|
inline |
Return the Thickness of the Layer this is by definition along the normal vector of the surfaceRepresentation
Definition at line 21 of file Layer.ipp.
View newest version in sPHENIX GitHub at line 21 of file Layer.ipp
References m_layerThickness.
Referenced by Acts::Test::Layers::BOOST_AUTO_TEST_CASE(), compatibleSurfaces(), 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().
|
inline |
Get the confining TrackingVolume
Definition at line 29 of file Layer.ipp.
View newest version in sPHENIX GitHub at line 29 of file Layer.ipp
References m_trackingVolume.
Referenced by Acts::Test::Layers::BOOST_AUTO_TEST_CASE().
|
friend |
Declare the TrackingVolume as a friend, to be able to register previous, next and set the enclosing TrackingVolume
Definition at line 86 of file Layer.hpp.
View newest version in sPHENIX GitHub at line 86 of file Layer.hpp
|
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 261 of file Layer.hpp.
View newest version in sPHENIX GitHub at line 261 of file Layer.hpp
Referenced by compatibleSurfaces(), Acts::CylinderLayer::CylinderLayer(), Acts::DiscLayer::DiscLayer(), Layer(), Acts::PlaneLayer::PlaneLayer(), and surfaceOnApproach().
|
protected |
Thickness of the Layer.
Definition at line 254 of file Layer.hpp.
View newest version in sPHENIX GitHub at line 254 of file Layer.hpp
Referenced by Acts::PlaneLayer::buildApproachDescriptor(), Acts::NavigationLayer::NavigationLayer(), and thickness().
|
protected |
make a passive/active either way
Definition at line 271 of file Layer.hpp.
View newest version in sPHENIX GitHub at line 271 of file Layer.hpp
Referenced by layerType(), and Acts::NavigationLayer::NavigationLayer().
|
protected |
the previous Layer according to BinGenUtils
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().
|
protected |
A binutility to find the next layer check if this is needed
Definition at line 244 of file Layer.hpp.
View newest version in sPHENIX GitHub at line 244 of file Layer.hpp
Referenced by Acts::TrackingVolume::interlinkLayers(), and nextLayer().
|
protected |
Representing Volume can be used as approach surface sources
Definition at line 268 of file Layer.hpp.
View newest version in sPHENIX GitHub at line 268 of file Layer.hpp
Referenced by Acts::CylinderLayer::CylinderLayer(), Acts::DiscLayer::DiscLayer(), isOnLayer(), and representingVolume().
|
protected |
|
protected |
|
protected |
|
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 251 of file Layer.hpp.
View newest version in sPHENIX GitHub at line 251 of file Layer.hpp
Referenced by compatibleSurfaces(), Acts::CylinderLayer::CylinderLayer(), Acts::DiscLayer::DiscLayer(), Layer(), Acts::PlaneLayer::PlaneLayer(), resolve(), and surfaceArray().
|
protected |
the enclosing TrackingVolume
Definition at line 264 of file Layer.hpp.
View newest version in sPHENIX GitHub at line 264 of file Layer.hpp
Referenced by encloseTrackingVolume(), and trackingVolume().