EIC 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 Vector3D &position) const
 
std::vector< LayerIntersectioncompatibleLayers (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const NavigationOptions< Layer > &options) const
 Resolves the volume into (compatible) Layers.
 
std::vector< BoundaryIntersectioncompatibleBoundaries (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const NavigationOptions< Surface > &options, LoggerWrapper logger=getDummyLogger()) const
 Returns all boundary surfaces sorted by the user.
 
std::vector< SurfaceIntersectioncompatibleSurfacesFromHierarchy (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, double angle, const NavigationOptions< Surface > &options) const
 Return surfaces in given direction from bounding volume hierarchy.
 
const TrackingVolumelowestTrackingVolume (const GeometryContext &gctx, const Vector3D &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.
 
void visitSurfaces (const std::function< void(const Acts::Surface *)> &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 Transform3D &transform, VolumeBoundsPtr volbounds)
 
 Volume (const Volume &vol, const Transform3D &shift=Transform3D::Identity())
 
 Volume ()=delete
 
virtual ~Volume ()=default
 
Volumeoperator= (const Volume &vol)
 
const Transform3Dtransform () const
 Return methods for geometry transform.
 
const Transform3Ditransform () const
 Returns the inverted transform of this volume.
 
const Vector3Dcenter () const
 returns the center of the volume
 
const VolumeBoundsvolumeBounds () const
 returns the volumeBounds()
 
BoundingBox boundingBox (const Vector3D &envelope={0, 0, 0}) const
 
const BoundingBoxorientedBoundingBox () const
 
bool inside (const Vector3D &gpos, double tol=0.) const
 
Vector3D binningPosition (const GeometryContext &gctx, BinningValue bValue) const override
 
- Public Member Functions inherited from Acts::GeometryObject
 GeometryObject ()=default
 Defaulted construrctor.
 
 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 Transform3D &transform, VolumeBoundsPtr volumeBounds, const std::shared_ptr< const TrackingVolumeArray > &containedVolumes=nullptr, const std::string &volumeName="undefined")
 
static MutableTrackingVolumePtr create (const Transform3D &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 Transform3D &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 Transform3D &transform, VolumeBoundsPtr volbounds, const std::shared_ptr< const TrackingVolumeArray > &containedVolumeArray=nullptr, const std::string &volumeName="undefined")
 
 TrackingVolume (const Transform3D &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 Transform3D &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::map< std::string, const TrackingVolume * > &volumeMap, size_t &vol)
 
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, double, 3 >
 
- Protected Attributes inherited from Acts::Volume
Transform3D m_transform
 
Transform3D m_itransform
 
Vector3D 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 81 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 81 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 76 of file TrackingVolume.cpp.

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

Acts::TrackingVolume::TrackingVolume ( const TrackingVolume )
delete
Acts::TrackingVolume::TrackingVolume ( const Transform3D 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 21 of file TrackingVolume.cpp.

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

References createBoundarySurfaces(), and interlinkLayers().

+ Here is the call graph for this function:

Acts::TrackingVolume::TrackingVolume ( const Transform3D 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 55 of file TrackingVolume.cpp.

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

References createBoundarySurfaces(), and m_boundingBoxes.

+ Here is the call graph for this function:

Acts::TrackingVolume::TrackingVolume ( const Transform3D 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 36 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 36 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
materialMaterial description of this volume

Definition at line 245 of file TrackingVolume.cpp.

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

References Acts::Surface::assignSurfaceMaterial(), and 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 469 of file TrackingVolume.hpp.

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

References m_volumeMaterial.

const Acts::Layer * Acts::TrackingVolume::associatedLayer ( const GeometryContext gctx,
const Vector3D 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 98 of file TrackingVolume.cpp.

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

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), ActsExamples::RootMaterialWriter::collectMaterial(), Acts::VolumeMaterialMapper::collectMaterialSurfaces(), Acts::JsonGeometryConverter::convertToRep(), Acts::GeometryView3D::drawTrackingVolume(), Acts::CylinderVolumeHelper::glueTrackingVolumes(), and Acts::SurfaceMaterialMapper::resolveMaterialSurfaces().

+ Here is the caller graph for this function:

void Acts::TrackingVolume::closeGeometry ( const IMaterialDecorator materialDecorator,
std::map< std::string, const TrackingVolume * > &  volumeMap,
size_t &  vol 
)
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 a given name
volis the geometry id of the volume as calculated by the TrackingGeometry

Definition at line 347 of file TrackingVolume.cpp.

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

References 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 491 of file TrackingVolume.hpp.

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

References m_colorCode.

std::vector< Acts::BoundaryIntersection > Acts::TrackingVolume::compatibleBoundaries ( const GeometryContext gctx,
const Vector3D position,
const Vector3D direction,
const NavigationOptions< Surface > &  options,
LoggerWrapper  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
sorterSorter of the boundary surfaces
Returns
is the templated boundary intersection

Helper function to process boundary surfaces

Definition at line 467 of file TrackingVolume.cpp.

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

References ACTS_VERBOSE, Acts::ObjectIntersection< object_t, representation_t >::alternative, Acts::NavigationOptions< object_t >::boundaryCheck, Acts::forward, Acts::ObjectIntersection< object_t, representation_t >::intersection, Acts::LoggerWrapper::log(), Acts::NavigationOptions< object_t >::navDir, Acts::ObjectIntersection< object_t, representation_t >::object, Acts::NavigationOptions< object_t >::overstepLimit, Acts::Intersection< DIM >::pathLength, Acts::NavigationOptions< object_t >::pathLimit, Acts::s_onSurfaceTolerance, Acts::NavigationOptions< object_t >::startObject, and Acts::Logging::VERBOSE.

+ Here is the call graph for this function:

std::vector< Acts::LayerIntersection > Acts::TrackingVolume::compatibleLayers ( const GeometryContext gctx,
const Vector3D position,
const Vector3D 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 596 of file TrackingVolume.cpp.

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

References Acts::NavigationOptions< object_t >::endObject, Acts::forward, Acts::ObjectIntersection< object_t, representation_t >::intersection, Acts::NavigationOptions< object_t >::navDir, Acts::Layer::nextLayer(), Acts::Intersection< DIM >::pathLength, Acts::NavigationOptions< object_t >::pathLimit, Acts::Layer::resolve(), 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 Vector3D position,
const Vector3D 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 679 of file TrackingVolume.cpp.

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

References Acts::AbstractVolume::boundarySurfaces(), Acts::forward, Acts::Surface::intersect(), Acts::NavigationOptions< object_t >::navDir, Acts::NavigationOptions< object_t >::overstepLimit, and Acts::NavigationOptions< object_t >::pathLimit.

+ 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 474 of file TrackingVolume.hpp.

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

References m_confinedLayers.

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), ActsExamples::RootMaterialWriter::collectMaterial(), Acts::VolumeMaterialMapper::collectMaterialSurfaces(), Acts::JsonGeometryConverter::convertToRep(), Acts::GeometryView3D::drawTrackingVolume(), Acts::VolumeSelector::operator()(), and Acts::SurfaceMaterialMapper::resolveMaterialSurfaces().

+ 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 483 of file TrackingVolume.hpp.

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

References m_confinedVolumes.

Referenced by ActsExamples::RootMaterialWriter::collectMaterial(), Acts::VolumeMaterialMapper::collectMaterialSurfaces(), Acts::SurfaceMaterialMapper::collectMaterialVolumes(), Acts::JsonGeometryConverter::convertToRep(), Acts::GeometryView3D::drawTrackingVolume(), Acts::SurfaceMaterialMapper::resolveMaterialSurfaces(), and Acts::VolumeMaterialMapper::resolveMaterialVolume().

+ Here is the caller graph for this function:

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

Definition at line 103 of file TrackingVolume.cpp.

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

References Acts::backward, boost::const_pointer_cast(), Acts::forward, and Acts::Test::navDir.

+ Here is the call graph for this function:

static MutableTrackingVolumePtr Acts::TrackingVolume::create ( const Transform3D 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 100 of file TrackingVolume.hpp.

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

References TrackingVolume(), and volumeName().

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), Acts::CuboidVolumeBuilder::buildVolume(), Acts::DD4hepVolumeBuilder::centralVolumes(), Acts::constructContainerVolume(), Acts::constructCylinderVolume(), Acts::CylinderVolumeHelper::createContainerTrackingVolume(), 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 Transform3D 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)
matpropis are materials of the tracking volume
volumeNameis a string identifier
Returns
shared pointer to a new TrackingVolume

Definition at line 121 of file TrackingVolume.hpp.

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

References TrackingVolume(), and volumeName().

+ Here is the call graph for this function:

static MutableTrackingVolumePtr Acts::TrackingVolume::create ( const Transform3D 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
matpropis are materials of the tracking volume
containedLayersis the confined layer array (optional)
containedVolumesis the confined volume array (optional)
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

void Acts::TrackingVolume::createBoundarySurfaces ( )
private

Create Boundary Surface.

Definition at line 144 of file TrackingVolume.cpp.

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

References Acts::backward, m_transform(), 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 478 of file TrackingVolume.hpp.

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

References m_confinedDenseVolumes.

Referenced by Acts::SurfaceMaterialMapper::collectMaterialVolumes(), Acts::JsonGeometryConverter::convertToRep(), and Acts::VolumeMaterialMapper::resolveMaterialVolume().

+ 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 boudnary surface of the neighbor

Definition at line 164 of file TrackingVolume.cpp.

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

References Acts::Surface::assignSurfaceMaterial(), Acts::Test::at, Acts::BoundarySurfaceT< volume_t >::attachVolume(), Acts::backward, Acts::Volume::binningPosition(), Acts::binR, boost::const_pointer_cast(), Acts::forward, m_boundarySurfaces, Acts::Test::navDir, 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 boudnary surface of the neighbors

Definition at line 207 of file TrackingVolume.cpp.

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

References Acts::Test::at, Acts::BoundarySurfaceT< volume_t >::attachVolumeArray(), Acts::backward, Acts::binR, boost::const_pointer_cast(), Acts::forward, and Acts::Test::navDir.

+ 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 276 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 276 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 503 of file TrackingVolume.hpp.

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

References m_bvhTop.

void Acts::TrackingVolume::interlinkLayers ( )
private

interlink the layers in this TrackingVolume

Definition at line 317 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 317 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 Vector3D 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 80 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 80 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 495 of file TrackingVolume.hpp.

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

References m_motherVolume.

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 487 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 487 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 270 of file TrackingVolume.cpp.

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

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

Set the MotherVolume

Parameters
mvolis the mother volume

Definition at line 499 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 499 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 283 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 283 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 boudnary 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 253 of file TrackingVolume.cpp.

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

References Acts::Surface::assignSurfaceMaterial(), and surface().

+ Here is the call graph for this function:

void Acts::TrackingVolume::visitSurfaces ( const std::function< void(const Acts::Surface *)> &  visitor) const

Visit all sensitive surfaces.

Parameters
visitorThe callable. Will be called for each sensitive surface that is found

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

Definition at line 442 of file TrackingVolume.cpp.

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

References G4TTL::layer, and Acts::Test::volume.

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

Return the material of the volume.

Definition at line 460 of file TrackingVolume.hpp.

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

References m_volumeMaterial.

Referenced by Acts::VolumeMaterialMapper::checkAndInsert(), Acts::SurfaceMaterialMapper::collectMaterialVolumes(), Acts::JsonGeometryConverter::convertToRep(), Acts::VolumeSelector::operator()(), Acts::MaterialVolume::operator()(), Acts::MaterialInteractor::operator()(), and Acts::VolumeMaterialMapper::MaterialVolumeSelector::operator()().

+ 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 465 of file TrackingVolume.hpp.

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

References m_volumeMaterial.

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

+ 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 456 of file TrackingVolume.hpp.

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

References m_name.

Referenced by Acts::VolumeMaterialMapper::collectMaterialSurfaces(), Acts::SurfaceMaterialMapper::collectMaterialVolumes(), Acts::JsonGeometryConverter::convertToRep(), create(), Acts::JsonGeometryConverter::DefaultBin(), 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 82 of file TrackingVolume.hpp.

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

Member Data Documentation

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

Definition at line 429 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 429 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 451 of file TrackingVolume.hpp.

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

Referenced by TrackingVolume().

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

Definition at line 453 of file TrackingVolume.hpp.

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

Referenced by hasBoundingVolumeHierarchy().

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

color code for displaying

Definition at line 448 of file TrackingVolume.hpp.

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

Referenced by colorCode(), and registerColorCode().

MutableTrackingVolumeVector Acts::TrackingVolume::m_confinedDenseVolumes
private

confined dense

Definition at line 439 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 439 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 433 of file TrackingVolume.hpp.

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

Referenced by confinedLayers().

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

Array of Volumes inside the Volume when actin as container.

Definition at line 436 of file TrackingVolume.hpp.

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

Referenced by confinedVolumes().

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

Definition at line 452 of file TrackingVolume.hpp.

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

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

Volumes to glue Volumes from the outside.

Definition at line 442 of file TrackingVolume.hpp.

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

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

Remember the mother volume.

Definition at line 426 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 426 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 445 of file TrackingVolume.hpp.

View newest version in sPHENIX GitHub at line 445 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 423 of file TrackingVolume.hpp.

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

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


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