ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::TrackingVolume Class Reference

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

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

Public Member Functions

 ~TrackingVolume () override
 Destructor.
 
 TrackingVolume (const TrackingVolume &)=delete
 Forbidden copy constructor - deleted.
 
TrackingVolumeoperator= (const TrackingVolume &)=delete
 Forbidden assignment - deleted.
 
const LayerassociatedLayer (const GeometryContext &gctx, const Vector3D &position) const
 
template<typename options_t >
std::vector< LayerIntersectioncompatibleLayers (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const options_t &options) const
 Resolves the volume into (compatible) Layers.
 
template<typename options_t >
std::vector< BoundaryIntersectioncompatibleBoundaries (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const options_t &options) const
 Returns all boundary surfaces sorted by the user.
 
template<typename options_t >
std::vector< SurfaceIntersectioncompatibleSurfacesFromHierarchy (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, double angle, const options_t &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)
 
template<typename options_t >
std::vector< LayerIntersectioncompatibleLayers (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const options_t &options) const
 
template<typename options_t >
std::vector< BoundaryIntersectioncompatibleBoundaries (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, const options_t &options) const
 
template<typename options_t >
std::vector< SurfaceIntersectioncompatibleSurfacesFromHierarchy (const GeometryContext &gctx, const Vector3D &position, const Vector3D &direction, double angle, const options_t &options) const
 
template<typename T >
std::vector< const Volume * > intersectSearchHierarchy (const T obj, const Volume::BoundingBox *lnode)
 
- Public Member Functions inherited from Acts::Volume
 Volume ()
 Default constructor.
 
 Volume (const std::shared_ptr< const Transform3D > &htrans, VolumeBoundsPtr volbounds)
 
 Volume (const Volume &vol, const Transform3D *shift=nullptr)
 
virtual ~Volume ()
 Destructor.
 
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
 
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 GeometryID &geoID)
 
GeometryObjectoperator= (const GeometryObject &geoID)
 
const GeometryIDgeoID () const
 
virtual double binningPositionValue (const GeometryContext &gctx, BinningValue bValue) const
 
void assignGeoID (const GeometryID &geoID)
 

Static Public Member Functions

static MutableTrackingVolumePtr create (std::shared_ptr< const Transform3D > htrans, VolumeBoundsPtr volumeBounds, const std::shared_ptr< const TrackingVolumeArray > &containedVolumes=nullptr, const std::string &volumeName="undefined")
 
static MutableTrackingVolumePtr create (std::shared_ptr< const Transform3D > htrans, 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 (std::shared_ptr< const Transform3D > htrans, 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 ()
 Default constructor.
 
 TrackingVolume (std::shared_ptr< const Transform3D > htrans, VolumeBoundsPtr volbounds, const std::shared_ptr< const TrackingVolumeArray > &containedVolumeArray=nullptr, const std::string &volumeName="undefined")
 
 TrackingVolume (std::shared_ptr< const Transform3D > htrans, 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 (std::shared_ptr< const Transform3D > htrans, 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
 

Static Private Member Functions

template<typename T >
static std::vector< const
Volume * > 
intersectSearchHierarchy (const T obj, const Volume::BoundingBox *lnode)
 

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
std::shared_ptr< const
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 79 of file TrackingVolume.hpp.

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

Constructor & Destructor Documentation

Acts::TrackingVolume::~TrackingVolume ( )
override

Destructor.

Definition at line 86 of file TrackingVolume.cpp.

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

Acts::TrackingVolume::TrackingVolume ( const TrackingVolume )
delete

Forbidden copy constructor - deleted.

Acts::TrackingVolume::TrackingVolume ( )
protected

Default constructor.

Definition at line 23 of file TrackingVolume.cpp.

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

Referenced by create().

+ Here is the caller graph for this function:

Acts::TrackingVolume::TrackingVolume ( std::shared_ptr< const Transform3D htrans,
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
htransis 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 31 of file TrackingVolume.cpp.

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

References createBoundarySurfaces(), and interlinkLayers().

+ Here is the call graph for this function:

Acts::TrackingVolume::TrackingVolume ( std::shared_ptr< const Transform3D htrans,
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 65 of file TrackingVolume.cpp.

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

References createBoundarySurfaces(), and m_boundingBoxes.

+ Here is the call graph for this function:

Acts::TrackingVolume::TrackingVolume ( std::shared_ptr< const Transform3D htrans,
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
htransis 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 46 of file TrackingVolume.cpp.

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

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

View newest version in sPHENIX GitHub at line 477 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 13 of file TrackingVolume.ipp.

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

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

+ Here is the caller graph for this function:

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

Method to return the BoundarySurfaces.

Definition at line 108 of file TrackingVolume.cpp.

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

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), FW::RootMaterialWriter::collectMaterial(), Acts::JsonGeometryConverter::convertToRep(), 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 GeometryID 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 362 of file TrackingVolume.cpp.

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

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

+ Here is the call graph for this function:

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

Get the color code.

Definition at line 499 of file TrackingVolume.hpp.

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

References m_colorCode.

template<typename options_t >
std::vector<BoundaryIntersection> Acts::TrackingVolume::compatibleBoundaries ( const GeometryContext gctx,
const Vector3D position,
const Vector3D direction,
const options_t &  options 
) const
template<typename options_t >
std::vector< BoundaryIntersection > Acts::TrackingVolume::compatibleBoundaries ( const GeometryContext gctx,
const Vector3D position,
const Vector3D direction,
const options_t &  options 
) 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 79 of file TrackingVolume.hpp.

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

template<typename options_t >
std::vector<LayerIntersection> Acts::TrackingVolume::compatibleLayers ( const GeometryContext gctx,
const Vector3D position,
const Vector3D direction,
const options_t &  options 
) const

Definition at line 25 of file TrackingVolume.ipp.

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

References Acts::forward, Acts::ObjectIntersection< object_t, representation_t >::intersection, Acts::Layer::nextLayer(), Acts::Intersection::pathLength, Acts::Layer::resolve(), and Acts::Layer::surfaceOnApproach().

+ Here is the call graph for this function:

template<typename options_t >
std::vector< LayerIntersection > Acts::TrackingVolume::compatibleLayers ( const GeometryContext gctx,
const Vector3D position,
const Vector3D direction,
const options_t &  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 26 of file TrackingVolume.hpp.

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

template<typename options_t >
std::vector<SurfaceIntersection> Acts::TrackingVolume::compatibleSurfacesFromHierarchy ( const GeometryContext gctx,
const Vector3D position,
const Vector3D direction,
double  angle,
const options_t &  options 
) const

Definition at line 171 of file TrackingVolume.ipp.

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

References Acts::AbstractVolume::boundarySurfaces(), Acts::forward, hits(), and Acts::Surface::intersectionEstimate().

+ Here is the call graph for this function:

template<typename options_t >
std::vector< SurfaceIntersection > Acts::TrackingVolume::compatibleSurfacesFromHierarchy ( const GeometryContext gctx,
const Vector3D position,
const Vector3D direction,
double  angle,
const options_t &  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 172 of file TrackingVolume.hpp.

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

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

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

References m_confinedLayers.

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), FW::RootMaterialWriter::collectMaterial(), Acts::JsonGeometryConverter::convertToRep(), Acts::VolumeSelector::operator()(), Acts::SurfaceMaterialMapper::resolveMaterialSurfaces(), and FW::Obj::ObjTrackingGeometryWriter::write().

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

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

References m_confinedVolumes.

Referenced by FW::RootMaterialWriter::collectMaterial(), Acts::JsonGeometryConverter::convertToRep(), Acts::SurfaceMaterialMapper::resolveMaterialSurfaces(), Acts::VolumeMaterialMapper::resolveMaterialVolume(), and FW::Obj::ObjTrackingGeometryWriter::write().

+ Here is the caller graph for this function:

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

Definition at line 113 of file TrackingVolume.cpp.

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

References boost::const_pointer_cast(), Acts::insideVolume, and Acts::outsideVolume.

+ Here is the call graph for this function:

static MutableTrackingVolumePtr Acts::TrackingVolume::create ( std::shared_ptr< const Transform3D htrans,
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
htransis 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 101 of file TrackingVolume.hpp.

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

References TrackingVolume(), and volumeName().

Referenced by 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 ( std::shared_ptr< const Transform3D htrans,
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
htransis 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 122 of file TrackingVolume.hpp.

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

References TrackingVolume(), and volumeName().

+ Here is the call graph for this function:

static MutableTrackingVolumePtr Acts::TrackingVolume::create ( std::shared_ptr< const Transform3D htrans,
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
htransis 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 154 of file TrackingVolume.cpp.

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

References Acts::Surface::Cylinder, Acts::VolumeBounds::decomposeToSurfaces(), 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 486 of file TrackingVolume.hpp.

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

References m_confinedDenseVolumes.

Referenced by 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 179 of file TrackingVolume.cpp.

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

References Acts::Surface::assignSurfaceMaterial(), Acts::Test::at, Acts::BoundarySurfaceT< T >::attachVolume(), Acts::Volume::binningPosition(), Acts::binR, boost::const_pointer_cast(), Acts::insideVolume, m_boundarySurfaces, Acts::outsideVolume, 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 222 of file TrackingVolume.cpp.

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

References Acts::Test::at, Acts::BoundarySurfaceT< T >::attachVolumeArray(), Acts::binR, boost::const_pointer_cast(), Acts::insideVolume, and Acts::outsideVolume.

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

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

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

References m_bvhTop.

void Acts::TrackingVolume::interlinkLayers ( )
private

interlink the layers in this TrackingVolume

Definition at line 332 of file TrackingVolume.cpp.

View newest version in sPHENIX GitHub at line 332 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:

template<typename T >
std::vector<const Volume*> Acts::TrackingVolume::intersectSearchHierarchy ( const T  obj,
const Volume::BoundingBox lnode 
)
template<typename T >
std::vector< const Volume * > Acts::TrackingVolume::intersectSearchHierarchy ( const T  obj,
const Volume::BoundingBox lnode 
)
staticprivate

Definition at line 227 of file TrackingVolume.hpp.

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

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

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

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

References m_motherVolume.

TrackingVolume& Acts::TrackingVolume::operator= ( const TrackingVolume )
delete

Forbidden assignment - deleted.

void Acts::TrackingVolume::registerColorCode ( unsigned int  icolor)
inline

Register the color code

Parameters
icoloris a color number

Definition at line 495 of file TrackingVolume.hpp.

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

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

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

Set the MotherVolume

Parameters
mvolis the mother volume

Definition at line 507 of file TrackingVolume.hpp.

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

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

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

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

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

References m_volumeMaterial.

Referenced by Acts::VolumeMaterialMapper::checkAndInsert(), Acts::JsonGeometryConverter::convertToRep(), Acts::VolumeSelector::operator()(), Acts::MaterialVolume::operator()(), Acts::VolumeMaterialMapper::MaterialVolume::operator()(), and Acts::MaterialInteractor::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 473 of file TrackingVolume.hpp.

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

References m_volumeMaterial.

Referenced by FW::RootMaterialWriter::collectMaterial().

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

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

References m_name.

Referenced by Acts::JsonGeometryConverter::convertToRep(), create(), Acts::SurfaceMaterialMapper::resolveMaterialSurfaces(), Acts::VolumeMaterialMapper::resolveMaterialVolume(), and FW::Obj::ObjTrackingGeometryWriter::write().

+ Here is the caller graph for this function:

Friends And Related Function Documentation

friend class TrackingGeometry
friend

Definition at line 80 of file TrackingVolume.hpp.

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

Member Data Documentation

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

Definition at line 437 of file TrackingVolume.hpp.

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

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

Referenced by TrackingVolume().

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

Definition at line 461 of file TrackingVolume.hpp.

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

Referenced by hasBoundingVolumeHierarchy().

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

color code for displaying

Definition at line 456 of file TrackingVolume.hpp.

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

Referenced by colorCode(), and registerColorCode().

MutableTrackingVolumeVector Acts::TrackingVolume::m_confinedDenseVolumes
private

confined dense

Definition at line 447 of file TrackingVolume.hpp.

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

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

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

Referenced by confinedVolumes().

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

Definition at line 460 of file TrackingVolume.hpp.

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

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

Volumes to glue Volumes from the outside.

Definition at line 450 of file TrackingVolume.hpp.

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

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

Remember the mother volume.

Definition at line 434 of file TrackingVolume.hpp.

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

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

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

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


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