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

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

+ Inheritance diagram for Acts::TrackingVolume:
+ Collaboration diagram for Acts::TrackingVolume:

Public Member Functions

 TrackingVolume ()=delete
 
 ~TrackingVolume () override
 
 TrackingVolume (const TrackingVolume &)=delete
 
TrackingVolumeoperator= (const TrackingVolume &)=delete
 
const LayerassociatedLayer (const GeometryContext &gctx, const Vector3 &position) const
 
boost::container::small_vector
< LayerIntersection, 10 > 
compatibleLayers (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const NavigationOptions< Layer > &options) const
 Resolves the volume into (compatible) Layers.
 
boost::container::small_vector
< BoundaryIntersection, 4 > 
compatibleBoundaries (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, const NavigationOptions< Surface > &options, const Logger &logger=getDummyLogger()) const
 Returns all boundary surfaces sorted by the user.
 
std::vector< SurfaceIntersectioncompatibleSurfacesFromHierarchy (const GeometryContext &gctx, const Vector3 &position, const Vector3 &direction, double angle, const NavigationOptions< Surface > &options) const
 Return surfaces in given direction from bounding volume hierarchy.
 
const TrackingVolumelowestTrackingVolume (const GeometryContext &gctx, const Vector3 &position, const double tol=0.) const
 
const LayerArrayconfinedLayers () const
 
std::shared_ptr< const
TrackingVolumeArray
confinedVolumes () const
 Return the confined volumes of this container array - if it exists.
 
const MutableTrackingVolumeVector denseVolumes () const
 Return the confined dense volumes.
 
template<ACTS_CONCEPT(SurfaceVisitor) visitor_t>
void visitSurfaces (visitor_t &&visitor) const
 Visit all sensitive surfaces.
 
const std::string & volumeName () const
 Returns the VolumeName - for debug reason, might be depreciated later.
 
const TrackingVolumeBoundariesboundarySurfaces () const
 Method to return the BoundarySurfaces.
 
const IVolumeMaterialvolumeMaterial () const
 Return the material of the volume.
 
const std::shared_ptr< const
IVolumeMaterial > & 
volumeMaterialSharedPtr () const
 Return the material of the volume as shared pointer.
 
void assignBoundaryMaterial (std::shared_ptr< const ISurfaceMaterial > surfaceMaterial, BoundarySurfaceFace bsFace)
 
void assignVolumeMaterial (std::shared_ptr< const IVolumeMaterial > material)
 
void glueTrackingVolume (const GeometryContext &gctx, BoundarySurfaceFace bsfMine, TrackingVolume *neighbor, BoundarySurfaceFace bsfNeighbor)
 
void glueTrackingVolumes (const GeometryContext &gctx, BoundarySurfaceFace bsfMine, const std::shared_ptr< TrackingVolumeArray > &neighbors, BoundarySurfaceFace bsfNeighbor)
 
void updateBoundarySurface (BoundarySurfaceFace bsf, std::shared_ptr< const BoundarySurfaceT< TrackingVolume >> bs, bool checkmaterial=true)
 
void registerGlueVolumeDescriptor (GlueVolumesDescriptor *gvd)
 
GlueVolumesDescriptorglueVolumesDescriptor ()
 
bool hasBoundingVolumeHierarchy () const
 
void registerColorCode (unsigned int icolor)
 
unsigned int colorCode () const
 Get the color code.
 
const TrackingVolumemotherVolume () const
 Return the MotherVolume - if it exists.
 
void setMotherVolume (const TrackingVolume *mvol)
 
- Public Member Functions inherited from Acts::Volume
 Volume (const Transform3 &transform, VolumeBoundsPtr volbounds)
 
 Volume (const Volume &vol, const Transform3 &shift=Transform3::Identity())
 
 Volume ()=delete
 
virtual ~Volume ()=default
 
Volumeoperator= (const Volume &vol)
 
const Transform3transform () const
 Return methods for geometry transform.
 
const Transform3itransform () const
 Returns the inverted transform of this volume.
 
const Vector3center () const
 returns the center of the volume
 
const VolumeBoundsvolumeBounds () const
 returns the volumeBounds()
 
BoundingBox boundingBox (const Vector3 &envelope={0, 0, 0}) const
 
const BoundingBoxorientedBoundingBox () const
 
bool inside (const Vector3 &gpos, double tol=0.) const
 
Vector3 binningPosition (const GeometryContext &gctx, BinningValue bValue) const override
 
- 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 double binningPositionValue (const GeometryContext &gctx, BinningValue bValue) const
 
void assignGeometryId (const GeometryIdentifier &geometryId)
 

Static Public Member Functions

static MutableTrackingVolumePtr create (const Transform3 &transform, VolumeBoundsPtr volumeBounds, const std::shared_ptr< const TrackingVolumeArray > &containedVolumes=nullptr, const std::string &volumeName="undefined")
 
static MutableTrackingVolumePtr create (const Transform3 &transform, VolumeBoundsPtr volbounds, std::vector< std::unique_ptr< Volume::BoundingBox >> boxStore, std::vector< std::unique_ptr< const Volume >> descendants, const Volume::BoundingBox *top, std::shared_ptr< const IVolumeMaterial > volumeMaterial, const std::string &volumeName="undefined")
 
static MutableTrackingVolumePtr create (const Transform3 &transform, VolumeBoundsPtr volumeBounds, std::shared_ptr< const IVolumeMaterial > volumeMaterial, std::unique_ptr< const LayerArray > containedLayers=nullptr, std::shared_ptr< const TrackingVolumeArray > containedVolumes=nullptr, MutableTrackingVolumeVector denseVolumes={}, const std::string &volumeName="undefined")
 

Protected Member Functions

 TrackingVolume (const Transform3 &transform, VolumeBoundsPtr volbounds, const std::shared_ptr< const TrackingVolumeArray > &containedVolumeArray=nullptr, const std::string &volumeName="undefined")
 
 TrackingVolume (const Transform3 &transform, VolumeBoundsPtr volbounds, std::vector< std::unique_ptr< Volume::BoundingBox >> boxStore, std::vector< std::unique_ptr< const Volume >> descendants, const Volume::BoundingBox *top, std::shared_ptr< const IVolumeMaterial > volumeMaterial, const std::string &volumeName="undefined")
 
 TrackingVolume (const Transform3 &transform, VolumeBoundsPtr volumeBounds, std::shared_ptr< const IVolumeMaterial > volumeMaterial, std::unique_ptr< const LayerArray > staticLayerArray=nullptr, std::shared_ptr< const TrackingVolumeArray > containedVolumeArray=nullptr, MutableTrackingVolumeVector denseVolumeVector={}, const std::string &volumeName="undefined")
 

Private Member Functions

void connectDenseBoundarySurfaces (MutableTrackingVolumeVector &confinedDenseVolumes)
 
void createBoundarySurfaces ()
 Create Boundary Surface.
 
void synchronizeLayers (double envelope=1.) const
 
void closeGeometry (const IMaterialDecorator *materialDecorator, std::unordered_map< GeometryIdentifier, const TrackingVolume * > &volumeMap, size_t &vol, const GeometryIdentifierHook &hook, const Logger &logger=getDummyLogger())
 
void interlinkLayers ()
 interlink the layers in this TrackingVolume
 

Private Attributes

std::shared_ptr< const
IVolumeMaterial
m_volumeMaterial {nullptr}
 The volume based material the TrackingVolume consists of.
 
const TrackingVolumem_motherVolume {nullptr}
 Remember the mother volume.
 
std::vector
< TrackingVolumeBoundaryPtr
m_boundarySurfaces
 
std::unique_ptr< const LayerArraym_confinedLayers = nullptr
 
std::shared_ptr< const
TrackingVolumeArray
m_confinedVolumes = nullptr
 Array of Volumes inside the Volume when actin as container.
 
MutableTrackingVolumeVector m_confinedDenseVolumes
 confined dense
 
GlueVolumesDescriptorm_glueVolumeDescriptor {nullptr}
 Volumes to glue Volumes from the outside.
 
std::string m_name
 Volume name for debug reasons & screen output.
 
unsigned int m_colorCode {20}
 color code for displaying
 
std::vector< std::unique_ptr
< const Volume::BoundingBox > > 
m_boundingBoxes
 Bounding Volume Hierarchy (BVH)
 
std::vector< std::unique_ptr
< const Volume > > 
m_descendantVolumes
 
const Volume::BoundingBoxm_bvhTop {nullptr}
 

Friends

class TrackingGeometry
 

Additional Inherited Members

- Public Types inherited from Acts::Volume
using BoundingBox = AxisAlignedBoundingBox< Volume, ActsScalar, 3 >
 
- Protected Attributes inherited from Acts::Volume
Transform3 m_transform
 
Transform3 m_itransform
 
Vector3 m_center
 
VolumeBoundsPtr m_volumeBounds
 
BoundingBox m_orientedBoundingBox
 

Detailed Description

Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure.

A TrackingVolume at navigation level can provide the (layer) material

information / internal navigation with in 5 different ways:

--- a) Static confinement of Layers
--- b) detached sub volumes
--- b) unordered (arbitrarily oriented) layers
--- d) unordered sub volumes
--- e) unordered layers AND unordered subvolumes

The TrackingVolume can also be a simple container of other TrackingVolumes

In addition it is capable of holding a subarray of Layers and TrackingVolumes.

Definition at line 105 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 105 of file TrackingVolume.hpp

Constructor & Destructor Documentation

Acts::TrackingVolume::TrackingVolume ( )
delete

Referenced by create().

+ Here is the caller graph for this function:

Acts::TrackingVolume::~TrackingVolume ( )
override

Definition at line 93 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 93 of file TrackingVolume.cpp

Acts::TrackingVolume::TrackingVolume ( const TrackingVolume )
delete
Acts::TrackingVolume::TrackingVolume ( const Transform3 transform,
VolumeBoundsPtr  volbounds,
const std::shared_ptr< const TrackingVolumeArray > &  containedVolumeArray = nullptr,
const std::string &  volumeName = "undefined" 
)
protected

Constructor for a container Volume

  • vacuum filled volume either as a for other tracking volumes
Parameters
transformis the global 3D transform to position the volume in space
volboundsis the description of the volume boundaries
containedVolumeArrayare the static volumes that fill this volume
volumeNameis a string identifier

Definition at line 38 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 38 of file TrackingVolume.cpp

References createBoundarySurfaces(), and interlinkLayers().

+ Here is the call graph for this function:

Acts::TrackingVolume::TrackingVolume ( const Transform3 transform,
VolumeBoundsPtr  volbounds,
std::vector< std::unique_ptr< Volume::BoundingBox >>  boxStore,
std::vector< std::unique_ptr< const Volume >>  descendants,
const Volume::BoundingBox top,
std::shared_ptr< const IVolumeMaterial volumeMaterial,
const std::string &  volumeName = "undefined" 
)
protected

Definition at line 72 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 72 of file TrackingVolume.cpp

References createBoundarySurfaces(), and m_boundingBoxes.

+ Here is the call graph for this function:

Acts::TrackingVolume::TrackingVolume ( const Transform3 transform,
VolumeBoundsPtr  volumeBounds,
std::shared_ptr< const IVolumeMaterial volumeMaterial,
std::unique_ptr< const LayerArray staticLayerArray = nullptr,
std::shared_ptr< const TrackingVolumeArray containedVolumeArray = nullptr,
MutableTrackingVolumeVector  denseVolumeVector = {},
const std::string &  volumeName = "undefined" 
)
protected

Constructor for a full equipped Tracking Volume

Parameters
transformis the global 3D transform to position the volume in space
volumeBoundsis the description of the volume boundaries
volumeMaterialis are materials of the tracking volume
staticLayerArrayis the confined layer array (optional)
containedVolumeArrayare the sub volumes if the volume is a container
denseVolumeVectorThe contained dense volumes
volumeNameis a string identifier

Definition at line 53 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 53 of file TrackingVolume.cpp

Member Function Documentation

void Acts::TrackingVolume::assignBoundaryMaterial ( std::shared_ptr< const ISurfaceMaterial surfaceMaterial,
BoundarySurfaceFace  bsFace 
)

Set the boundary surface material description

The material is usually derived in a complicated way and loaded from a framework given source. As various volumes could potentially share the the same material description, it is provided as a shared object

Parameters
surfaceMaterialMaterial description of this volume
bsFaceSpecifies which boundary surface to assign the material to

Definition at line 262 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 262 of file TrackingVolume.cpp

References Acts::Surface::assignSurfaceMaterial(), testing::internal::move(), and writeMapConfig::surface.

+ Here is the call graph for this function:

void Acts::TrackingVolume::assignVolumeMaterial ( std::shared_ptr< const IVolumeMaterial material)
inline

Set the volume material description

The material is usually derived in a complicated way and loaded from a framework given source. As various volumes could potentially share the the same material description, it is provided as a shared object

Parameters
materialMaterial description of this volume

Definition at line 520 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 520 of file TrackingVolume.hpp

References m_volumeMaterial, and testing::internal::move().

Referenced by Acts::JsonMaterialDecorator::decorate().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

const Acts::Layer * TrackingVolume::associatedLayer ( const GeometryContext gctx,
const Vector3 position 
) const
inline

Return the associated Layer to the global position

Parameters
gctxThe current geometry context object, e.g. alignment
positionis the associated global position
Returns
plain pointer to layer object

Definition at line 9 of file TrackingVolume.ipp.

View newest version in sPHENIX GitHub at line 9 of file TrackingVolume.ipp

Referenced by Acts::TrackingGeometry::associatedLayer(), and Acts::Test::BOOST_AUTO_TEST_CASE().

+ Here is the caller graph for this function:

const Acts::TrackingVolumeBoundaries & Acts::TrackingVolume::boundarySurfaces ( ) const

Method to return the BoundarySurfaces.

Definition at line 118 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 118 of file TrackingVolume.cpp

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), ActsExamples::RootMaterialWriter::collectMaterial(), Acts::VolumeMaterialMapper::collectMaterialSurfaces(), Acts::MaterialMapJsonConverter::convertToHierarchy(), Acts::GeometryView3D::drawTrackingVolume(), Acts::CylinderVolumeHelper::glueTrackingVolumes(), Acts::SurfaceMaterialMapper::resolveMaterialSurfaces(), and Acts::MappingMaterialDecorator::volumeLoop().

+ Here is the caller graph for this function:

void Acts::TrackingVolume::closeGeometry ( const IMaterialDecorator materialDecorator,
std::unordered_map< GeometryIdentifier, const TrackingVolume * > &  volumeMap,
size_t &  vol,
const GeometryIdentifierHook hook,
const Logger logger = getDummyLogger() 
)
private

close the Geometry, i.e. set the GeometryIdentifier and assign material

Parameters
materialDecoratoris a dedicated decorator for the material to be assigned (surface, volume based)
volumeMapis a map to find the a volume by identifier
volis the geometry id of the volume as calculated by the TrackingGeometry
hookIdentifier hook to be applied to surfaces
loggerA LoggerWrapper instance

Definition at line 364 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 364 of file TrackingVolume.cpp

References ACTS_DEBUG, Acts::GeometryObject::assignGeometryId(), Acts::AbstractVolume::boundarySurfaces(), Acts::Layer::closeGeometry(), boost::const_pointer_cast(), Acts::IMaterialDecorator::decorate(), Acts::GeometryIdentifier::setBoundary(), Acts::GeometryIdentifier::setLayer(), setMotherVolume(), Acts::GeometryIdentifier::setSensitive(), and Acts::GeometryIdentifier::setVolume().

+ Here is the call graph for this function:

unsigned int Acts::TrackingVolume::colorCode ( ) const
inline

Get the color code.

Definition at line 542 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 542 of file TrackingVolume.hpp

References m_colorCode.

boost::container::small_vector< Acts::BoundaryIntersection, 4 > Acts::TrackingVolume::compatibleBoundaries ( const GeometryContext gctx,
const Vector3 position,
const Vector3 direction,
const NavigationOptions< Surface > &  options,
const Logger logger = getDummyLogger() 
) const

Returns all boundary surfaces sorted by the user.

Template Parameters
options_tType of navigation options object for decomposition
sorter_tType of the boundary surface sorter
Parameters
gctxThe current geometry context object, e.g. alignment
positionThe position for searching
directionThe direction for searching
optionsThe templated navigation options
loggerA Logger instance
Returns
is the templated boundary intersection

Helper function to process boundary surfaces

Definition at line 466 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 466 of file TrackingVolume.cpp

References KFPMath::a, Acts::ACTS_VERBOSE(), KFPMath::b, Acts::NavigationOptions< object_t >::boundaryCheck, Acts::detail::checkIntersection(), Acts::NavigationOptions< object_t >::forceIntersectBoundaries, Acts::ObjectIntersection< object_t, representation_t >::invalid(), logger(), Acts::NavigationOptions< object_t >::pathLimit, Acts::s_onSurfaceTolerance, Acts::Experimental::detail::BlueprintHelper::sort(), Acts::ObjectMultiIntersection< object_t, representation_t >::split(), and Acts::NavigationOptions< object_t >::startObject.

+ Here is the call graph for this function:

boost::container::small_vector< Acts::LayerIntersection, 10 > Acts::TrackingVolume::compatibleLayers ( const GeometryContext gctx,
const Vector3 position,
const Vector3 direction,
const NavigationOptions< Layer > &  options 
) const

Resolves the volume into (compatible) Layers.

This is the method for the propagator/extrapolator

Template Parameters
options_tType of navigation options object for decomposition
Parameters
gctxThe current geometry context object, e.g. alignment
positionPosition for the search
directionDirection for the search
optionsThe templated navigation options
Returns
vector of compatible intersections with layers

Definition at line 588 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 588 of file TrackingVolume.cpp

References Acts::NavigationOptions< object_t >::endObject, Acts::ObjectIntersection< object_t, representation_t >::forwardOrder(), Acts::Layer::nextLayer(), path, Acts::NavigationOptions< object_t >::pathLimit, Acts::Layer::resolve(), Acts::Experimental::detail::BlueprintHelper::sort(), Acts::NavigationOptions< object_t >::startObject, Acts::Layer::surfaceOnApproach(), and Acts::NavigationOptions< object_t >::targetSurface.

+ Here is the call graph for this function:

std::vector< Acts::SurfaceIntersection > Acts::TrackingVolume::compatibleSurfacesFromHierarchy ( const GeometryContext gctx,
const Vector3 position,
const Vector3 direction,
double  angle,
const NavigationOptions< Surface > &  options 
) const

Return surfaces in given direction from bounding volume hierarchy.

Template Parameters
options_tType of navigation options object for decomposition
Parameters
gctxThe current geometry context object, e.g. alignment
positionThe position to start from
directionThe direction towards which to test
angleThe opening angle
optionsThe templated navigation options
Returns
Vector of surface candidates

Definition at line 666 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 666 of file TrackingVolume.cpp

References Acts::AbstractVolume::boundarySurfaces(), Acts::ObjectIntersection< Surface >::forwardOrder(), Acts::Surface::intersect(), testing::internal::move(), Acts::NavigationOptions< object_t >::overstepLimit, Acts::NavigationOptions< object_t >::pathLimit, and Acts::Experimental::detail::BlueprintHelper::sort().

+ Here is the call graph for this function:

const LayerArray * Acts::TrackingVolume::confinedLayers ( ) const
inline

Return the confined static layer array - if it exists

Returns
the BinnedArray of static layers if exists

Definition at line 525 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 525 of file TrackingVolume.hpp

References m_confinedLayers.

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), ActsExamples::RootMaterialWriter::collectMaterial(), Acts::VolumeMaterialMapper::collectMaterialSurfaces(), Acts::Svg::TrackingGeometryConverter::convert(), Acts::MaterialMapJsonConverter::convertToHierarchy(), Acts::GeometryView3D::drawTrackingVolume(), Acts::VolumeSelector::operator()(), Acts::SurfaceMaterialMapper::resolveMaterialSurfaces(), and Acts::MappingMaterialDecorator::volumeLoop().

+ Here is the caller graph for this function:

std::shared_ptr< const TrackingVolumeArray > Acts::TrackingVolume::confinedVolumes ( ) const
inline

Return the confined volumes of this container array - if it exists.

Definition at line 534 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 534 of file TrackingVolume.hpp

References m_confinedVolumes.

Referenced by ActsExamples::RootMaterialWriter::collectMaterial(), Acts::VolumeMaterialMapper::collectMaterialSurfaces(), Acts::SurfaceMaterialMapper::collectMaterialVolumes(), Acts::Svg::TrackingGeometryConverter::convert(), Acts::MaterialMapJsonConverter::convertToHierarchy(), Acts::GeometryView3D::drawTrackingVolume(), Acts::SurfaceMaterialMapper::resolveMaterialSurfaces(), Acts::VolumeMaterialMapper::resolveMaterialVolume(), and Acts::MappingMaterialDecorator::volumeLoop().

+ Here is the caller graph for this function:

void Acts::TrackingVolume::connectDenseBoundarySurfaces ( MutableTrackingVolumeVector confinedDenseVolumes)
private

Definition at line 123 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 123 of file TrackingVolume.cpp

References boost::const_pointer_cast(), i, testing::internal::move(), Acts::Direction::Negative, and Acts::Direction::Positive.

+ Here is the call graph for this function:

static MutableTrackingVolumePtr Acts::TrackingVolume::create ( const Transform3 transform,
VolumeBoundsPtr  volumeBounds,
const std::shared_ptr< const TrackingVolumeArray > &  containedVolumes = nullptr,
const std::string &  volumeName = "undefined" 
)
inlinestatic

Factory constructor for a container TrackingVolume

  • by definition a Vacuum volume
Parameters
transformis the global 3D transform to position the volume in space
volumeBoundsis the description of the volume boundaries
containedVolumesare the static volumes that fill this volume
volumeNameis a string identifier
Returns
shared pointer to a new TrackingVolume

Definition at line 124 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 124 of file TrackingVolume.hpp

References testing::internal::move(), TrackingVolume(), and volumeName().

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), Acts::CuboidVolumeBuilder::buildVolume(), Acts::DD4hepVolumeBuilder::centralVolumes(), Acts::constructContainerVolume(), Acts::constructCylinderVolume(), Acts::CylinderVolumeHelper::createContainerTrackingVolume(), Acts::Test::CubicBVHTrackingGeometry::CubicBVHTrackingGeometry(), EmptyDetector::finalize(), Acts::Test::CubicTrackingGeometry::operator()(), Acts::Test::CylindricalTrackingGeometry::operator()(), and Acts::CuboidVolumeBuilder::trackingVolume().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static MutableTrackingVolumePtr Acts::TrackingVolume::create ( const Transform3 transform,
VolumeBoundsPtr  volbounds,
std::vector< std::unique_ptr< Volume::BoundingBox >>  boxStore,
std::vector< std::unique_ptr< const Volume >>  descendants,
const Volume::BoundingBox top,
std::shared_ptr< const IVolumeMaterial volumeMaterial,
const std::string &  volumeName = "undefined" 
)
inlinestatic

Factory constructor for Tracking Volume with a bounding volume hierarchy

Parameters
transformis the global 3D transform to position the volume in space
volboundsis the description of the volume boundaries
boxStoreVector owning the contained bounding boxes
descendantsVector owning the child volumes
topThe top of the hierarchy (top node)
volumeMaterialis the materials of the tracking volume
volumeNameis a string identifier
Returns
shared pointer to a new TrackingVolume

Definition at line 145 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 145 of file TrackingVolume.hpp

References testing::internal::move(), TrackingVolume(), and volumeName().

+ Here is the call graph for this function:

static MutableTrackingVolumePtr Acts::TrackingVolume::create ( const Transform3 transform,
VolumeBoundsPtr  volumeBounds,
std::shared_ptr< const IVolumeMaterial volumeMaterial,
std::unique_ptr< const LayerArray containedLayers = nullptr,
std::shared_ptr< const TrackingVolumeArray containedVolumes = nullptr,
MutableTrackingVolumeVector  denseVolumes = {},
const std::string &  volumeName = "undefined" 
)
inlinestatic

Factory constructor for Tracking Volumes with content

  • can not be a container volume
Parameters
transformis the global 3D transform to position the volume in space
volumeBoundsis the description of the volume boundaries
volumeMaterialis are materials of the tracking volume
containedLayersis the confined layer array (optional)
containedVolumesis the confined volume array (optional)
denseVolumesis the array of dense volulmes (optional)
volumeNameis a string identifier
Returns
shared pointer to a new TrackingVolume

Definition at line 170 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 170 of file TrackingVolume.hpp

void Acts::TrackingVolume::createBoundarySurfaces ( )
private

Create Boundary Surface.

Definition at line 164 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 164 of file TrackingVolume.cpp

References m_transform(), testing::internal::move(), Acts::Direction::Negative, Acts::VolumeBounds::orientedSurfaces(), and Acts::Volume::volumeBounds().

Referenced by TrackingVolume().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

const MutableTrackingVolumeVector Acts::TrackingVolume::denseVolumes ( ) const
inline

Return the confined dense volumes.

Definition at line 529 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 529 of file TrackingVolume.hpp

References m_confinedDenseVolumes.

Referenced by Acts::SurfaceMaterialMapper::collectMaterialVolumes(), Acts::MaterialMapJsonConverter::convertToHierarchy(), Acts::VolumeMaterialMapper::resolveMaterialVolume(), and Acts::MappingMaterialDecorator::volumeLoop().

+ Here is the caller graph for this function:

void Acts::TrackingVolume::glueTrackingVolume ( const GeometryContext gctx,
BoundarySurfaceFace  bsfMine,
TrackingVolume neighbor,
BoundarySurfaceFace  bsfNeighbor 
)

Glue another tracking volume to this one

  • if common face is set the glued volumes are sharing the boundary, down to the last navigation volume
Parameters
gctxThe current geometry context object, e.g. alignment
bsfMineis the boundary face indicater where to glue
neighboris the TrackingVolume to be glued
bsfNeighboris the boundary surface of the neighbor

Definition at line 184 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 184 of file TrackingVolume.cpp

References Acts::Surface::assignSurfaceMaterial(), Acts::Test::at, Acts::BoundarySurfaceT< volume_t >::attachVolume(), Acts::Volume::binningPosition(), Acts::binR, boost::const_pointer_cast(), distance(), Acts::Direction::fromScalar(), m_boundarySurfaces, and Acts::Surface::surfaceMaterialSharedPtr().

+ Here is the call graph for this function:

void Acts::TrackingVolume::glueTrackingVolumes ( const GeometryContext gctx,
BoundarySurfaceFace  bsfMine,
const std::shared_ptr< TrackingVolumeArray > &  neighbors,
BoundarySurfaceFace  bsfNeighbor 
)

Glue another tracking volume to this one

  • if common face is set the glued volumes are sharing the boundary, down to the last navigation volume
Parameters
gctxThe current geometry context object, e.g. alignment
bsfMineis the boundary face indicater where to glue
neighborsare the TrackingVolumes to be glued
bsfNeighborare the boundary surface of the neighbors

Definition at line 225 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 225 of file TrackingVolume.cpp

References Acts::Test::at, Acts::BoundarySurfaceT< volume_t >::attachVolumeArray(), Acts::binR, boost::const_pointer_cast(), distance(), and Acts::Direction::fromScalar().

+ Here is the call graph for this function:

Acts::GlueVolumesDescriptor & Acts::TrackingVolume::glueVolumesDescriptor ( )

Register the outside glue volumes - ordering is in the TrackingVolume Frame:

  • negativeFaceXY
  • (faces YZ, ZY, radial faces)
  • positiveFaceXY

Definition at line 293 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 293 of file TrackingVolume.cpp

bool Acts::TrackingVolume::hasBoundingVolumeHierarchy ( ) const
inline

Return whether this TrackingVolume has a BoundingVolumeHierarchy associated

Returns
If it has a BVH or not.

Definition at line 554 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 554 of file TrackingVolume.hpp

References m_bvhTop.

void Acts::TrackingVolume::interlinkLayers ( )
private

interlink the layers in this TrackingVolume

Definition at line 334 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 334 of file TrackingVolume.cpp

References boost::const_pointer_cast(), Acts::Layer::encloseTrackingVolume(), Acts::Layer::m_nextLayers, and Acts::Layer::m_nextLayerUtility.

Referenced by TrackingVolume().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

const Acts::TrackingVolume * Acts::TrackingVolume::lowestTrackingVolume ( const GeometryContext gctx,
const Vector3 position,
const double  tol = 0. 
) const

Return the associated sub Volume, returns THIS if no subVolume exists

Parameters
gctxThe current geometry context object, e.g. alignment
positionis the global position associated with that search
tolSearch position tolerance for dense volumes
Returns
plain pointer to associated with the position

Definition at line 97 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 97 of file TrackingVolume.cpp

Referenced by Acts::TrackingGeometry::lowestTrackingVolume().

+ Here is the caller graph for this function:

const TrackingVolume * Acts::TrackingVolume::motherVolume ( ) const
inline

Return the MotherVolume - if it exists.

Definition at line 546 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 546 of file TrackingVolume.hpp

References m_motherVolume.

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

+ Here is the caller graph for this function:

TrackingVolume& Acts::TrackingVolume::operator= ( const TrackingVolume )
delete
void Acts::TrackingVolume::registerColorCode ( unsigned int  icolor)
inline

Register the color code

Parameters
icoloris a color number

Definition at line 538 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 538 of file TrackingVolume.hpp

References m_colorCode.

void Acts::TrackingVolume::registerGlueVolumeDescriptor ( GlueVolumesDescriptor gvd)

Register the outside glue volumes - ordering is in the TrackingVolume Frame:

  • negativeFaceXY
  • (faces YZ, ZY, radial faces)
  • positiveFaceXY
Parameters
gvdregister a new GlueVolumeDescriptor

Definition at line 287 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 287 of file TrackingVolume.cpp

void Acts::TrackingVolume::setMotherVolume ( const TrackingVolume mvol)
inline

Set the MotherVolume

Parameters
mvolis the mother volume

Definition at line 550 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 550 of file TrackingVolume.hpp

References m_motherVolume.

Referenced by closeGeometry().

+ Here is the caller graph for this function:

void Acts::TrackingVolume::synchronizeLayers ( double  envelope = 1.) const
private

method to synchronize the layers with potentially updated volume bounds:

  • adapts the layer dimensions to the new volumebounds + envelope
Parameters
envelopeis the clearance between volume boundary and layer

Definition at line 300 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 300 of file TrackingVolume.cpp

void Acts::TrackingVolume::updateBoundarySurface ( BoundarySurfaceFace  bsf,
std::shared_ptr< const BoundarySurfaceT< TrackingVolume >>  bs,
bool  checkmaterial = true 
)

Provide a new BoundarySurface from the glueing

Parameters
bsfis the boundary face indicater where to glue
bsis the new boundary surface
checkmaterialis a flag how to deal with material, if true:
  • if the old boundary surface had a material description but the new one has not, keep the current one
  • in all other cases just assign the new boundary surface

Definition at line 270 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 270 of file TrackingVolume.cpp

References Acts::Surface::assignSurfaceMaterial(), testing::internal::move(), and writeMapConfig::surface.

+ Here is the call graph for this function:

template<ACTS_CONCEPT(SurfaceVisitor) visitor_t>
void Acts::TrackingVolume::visitSurfaces ( visitor_t &&  visitor) const
inline

Visit all sensitive surfaces.

Template Parameters
visitor_tType of the callable visitor
Parameters
visitorThe callable. Will be called for each sensitive surface that is found

If a context is needed for the visit, the vistitor has to provide this e.g. as a private member

Definition at line 270 of file TrackingVolume.hpp.

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

References layer, m_confinedLayers, and m_confinedVolumes.

const IVolumeMaterial * Acts::TrackingVolume::volumeMaterial ( ) const
inline

Return the material of the volume.

Definition at line 511 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 511 of file TrackingVolume.hpp

References m_volumeMaterial.

Referenced by Acts::VolumeMaterialMapper::checkAndInsert(), Acts::SurfaceMaterialMapper::collectMaterialVolumes(), Acts::MaterialMapJsonConverter::convertToHierarchy(), Acts::DirectNavigator::currentVolumeMaterial(), Acts::VolumeSelector::operator()(), Acts::MaterialVolume::operator()(), Acts::MaterialInteractor::operator()(), Acts::VolumeMaterialMapper::MaterialVolumeSelector::operator()(), and Acts::MappingMaterialDecorator::volumeLoop().

+ Here is the caller graph for this function:

const std::shared_ptr< const IVolumeMaterial > & Acts::TrackingVolume::volumeMaterialSharedPtr ( ) const
inline

Return the material of the volume as shared pointer.

Definition at line 516 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 516 of file TrackingVolume.hpp

References m_volumeMaterial.

Referenced by ActsExamples::RootMaterialWriter::collectMaterial(), Acts::SurfaceMaterialMapper::collectMaterialVolumes(), and Acts::MappingMaterialDecorator::volumeLoop().

+ Here is the caller graph for this function:

const std::string & Acts::TrackingVolume::volumeName ( ) const
inline

Returns the VolumeName - for debug reason, might be depreciated later.

Definition at line 507 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 507 of file TrackingVolume.hpp

References m_name.

Referenced by Acts::VolumeMaterialMapper::collectMaterialSurfaces(), Acts::SurfaceMaterialMapper::collectMaterialVolumes(), create(), Acts::GeometryView3D::drawTrackingVolume(), Acts::SurfaceMaterialMapper::resolveMaterialSurfaces(), and Acts::VolumeMaterialMapper::resolveMaterialVolume().

+ Here is the caller graph for this function:

Friends And Related Function Documentation

friend class TrackingGeometry
friend

Definition at line 106 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 106 of file TrackingVolume.hpp

Member Data Documentation

std::vector<TrackingVolumeBoundaryPtr> Acts::TrackingVolume::m_boundarySurfaces
private

Definition at line 480 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 480 of file TrackingVolume.hpp

Referenced by glueTrackingVolume().

std::vector<std::unique_ptr<const Volume::BoundingBox> > Acts::TrackingVolume::m_boundingBoxes
private

Bounding Volume Hierarchy (BVH)

Definition at line 502 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 502 of file TrackingVolume.hpp

Referenced by TrackingVolume().

const Volume::BoundingBox* Acts::TrackingVolume::m_bvhTop {nullptr}
private

Definition at line 504 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 504 of file TrackingVolume.hpp

Referenced by hasBoundingVolumeHierarchy().

unsigned int Acts::TrackingVolume::m_colorCode {20}
private

color code for displaying

Definition at line 499 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 499 of file TrackingVolume.hpp

Referenced by colorCode(), and registerColorCode().

MutableTrackingVolumeVector Acts::TrackingVolume::m_confinedDenseVolumes
private

confined dense

Definition at line 490 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 490 of file TrackingVolume.hpp

Referenced by denseVolumes().

std::unique_ptr<const LayerArray> Acts::TrackingVolume::m_confinedLayers = nullptr
private

(a) static configuration ordered by Binned arrays static layers

Definition at line 484 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 484 of file TrackingVolume.hpp

Referenced by confinedLayers(), and visitSurfaces().

std::shared_ptr<const TrackingVolumeArray> Acts::TrackingVolume::m_confinedVolumes = nullptr
private

Array of Volumes inside the Volume when actin as container.

Definition at line 487 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 487 of file TrackingVolume.hpp

Referenced by confinedVolumes(), and visitSurfaces().

std::vector<std::unique_ptr<const Volume> > Acts::TrackingVolume::m_descendantVolumes
private

Definition at line 503 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 503 of file TrackingVolume.hpp

GlueVolumesDescriptor* Acts::TrackingVolume::m_glueVolumeDescriptor {nullptr}
private

Volumes to glue Volumes from the outside.

Definition at line 493 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 493 of file TrackingVolume.hpp

const TrackingVolume* Acts::TrackingVolume::m_motherVolume {nullptr}
private

Remember the mother volume.

Definition at line 477 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 477 of file TrackingVolume.hpp

Referenced by motherVolume(), and setMotherVolume().

std::string Acts::TrackingVolume::m_name
private

Volume name for debug reasons & screen output.

Definition at line 496 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 496 of file TrackingVolume.hpp

Referenced by volumeName().

std::shared_ptr<const IVolumeMaterial> Acts::TrackingVolume::m_volumeMaterial {nullptr}
private

The volume based material the TrackingVolume consists of.

Definition at line 474 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 474 of file TrackingVolume.hpp

Referenced by assignVolumeMaterial(), volumeMaterial(), and volumeMaterialSharedPtr().


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