Analysis Software
Documentation for sPHENIX simulation software
|
#include <acts/blob/sPHENIX/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 &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 Vector3 &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 |
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 Layer * | nextLayer (const GeometryContext &gctx, const Vector3 &position, const Vector3 &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 constructor. | |
GeometryObject (const GeometryObject &)=default | |
Defaulted copy constructor. | |
GeometryObject (const GeometryIdentifier &geometryId) | |
GeometryObject & | operator= (const GeometryObject &geometryId) |
const GeometryIdentifier & | geometryId () 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 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 | |
GeometryIdentifier | m_geometryId |
Private Member Functions | |
void | closeGeometry (const IMaterialDecorator *materialDecorator, const GeometryIdentifier &layerID, const GeometryIdentifierHook &hook, const Logger &logger=getDummyLogger()) |
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 - 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:
Definition at line 86 of file Layer.hpp.
View newest version in sPHENIX GitHub at line 86 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 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().
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().
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 |
hook | Identifier hook to be applied to surfaces |
logger | A 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().
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.
gctx | The current geometry context object, e.g. alignment |
position | Position parameter for searching |
direction | Direction of the parameters for searching |
options | The navigation options |
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.
|
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 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().
|
inlinevirtual |
geometrical isOnLayer() method
gctx | The current geometry context object, e.g. alignment |
position | is the global position to be checked |
bcheck | is the boundary check directive |
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().
|
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().
|
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 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().
Assignment operator - forbidden, layer assignment must not be ambiguous
layer | is the source layer for assignment |
|
inline |
Return the abstract volume that represents 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().
|
inline |
Accept layer according to the following collection directives
options_t | Type of the options for navigation |
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().
|
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 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().
|
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().
|
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
gctx | The current geometry context object, e.g. alignment |
position | Position for searching |
direction | Direction for searching |
options | The navigation options |
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().
|
pure virtual |
Transforms the layer into a Surface representation for extrapolation
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().
|
pure virtual |
Implemented in Acts::NavigationLayer, Acts::CylinderLayer, Acts::DiscLayer, 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 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().
|
inline |
Get the confining TrackingVolume
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().
|
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
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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 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().
|
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().