File TrackingVolume.hpp¶
-
namespace Acts
Set the Geometry Context PLUGIN.
Set the Calibration Context PLUGIN.
Convenience functions to ease creation of and Acts::InterpolatedMaterialMap and to avoid code duplication.
Set the Mangetic Field Context PLUGIN.
Convenience functions to ease creation of and Acts::InterpolatedBFieldMap and to avoid code duplication.
Currently implemented for the two most common formats: rz and xyz.
Typedefs
-
using BoundaryIntersection = ObjectIntersection<BoundarySurface, Surface>¶
Intersection with a
BoundarySurface
.
-
using BoundarySurface = BoundarySurfaceT<TrackingVolume>¶
BoundarySurface of a volume.
-
using LayerIntersection = ObjectIntersection<Layer, Surface>¶
-
using TrackingVolumeBoundaries = std::vector<TrackingVolumeBoundaryPtr>¶
-
using TrackingVolumeBoundaryPtr = std::shared_ptr<const BoundarySurfaceT<TrackingVolume>>¶
- #include <Acts/Geometry/TrackingVolume.hpp>
struct for the Navigation options that are forwarded to the geometry
- tparam propagator_state_t
Type of the object for navigation state
- tparam object_t
Type of the object for navigation to check against
-
class TrackingVolume : public Acts::Volume
- #include <Acts/Geometry/TrackingVolume.hpp>
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.
Public Functions
-
TrackingVolume() = delete
-
TrackingVolume(const TrackingVolume&) = delete
-
~TrackingVolume() override
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
surfaceMaterial – Material description of this volume
bsFace – Specifies which boundary surface to assign the material to
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
material – Material description of this volume
-
const Layer *associatedLayer(const GeometryContext &gctx, const Vector3 &position) const
Return the associated Layer to the global position.
- Parameters
gctx – The current geometry context object, e.g. alignment
position – is the associated global position
- Returns
plain pointer to layer object
-
const TrackingVolumeBoundaries &boundarySurfaces() const
Method to return the BoundarySurfaces.
-
inline unsigned int colorCode() const
Get the color code.
Returns all boundary surfaces sorted by the user.
- Template Parameters
options_t – Type of navigation options object for decomposition
sorter_t – Type of the boundary surface sorter
- Parameters
gctx – The current geometry context object, e.g. alignment
position – The position for searching
direction – The direction for searching
options – The templated navigation options
logger – A
LoggerWrapper
instance
- Returns
is the templated boundary intersection
Resolves the volume into (compatible) Layers.
This is the method for the propagator/extrapolator
- Template Parameters
options_t – Type of navigation options object for decomposition
- Parameters
gctx – The current geometry context object, e.g. alignment
position – Position for the search
direction – Direction for the search
options – The templated navigation options
- Returns
vector of compatible intersections with layers
Return surfaces in given direction from bounding volume hierarchy.
- Template Parameters
options_t – Type of navigation options object for decomposition
- Parameters
gctx – The current geometry context object, e.g. alignment
position – The position to start from
direction – The direction towards which to test
angle – The opening angle
options – The templated navigation options
- Returns
Vector of surface candidates
-
inline const LayerArray *confinedLayers() const
Return the confined static layer array - if it exists.
- Returns
the BinnedArray of static layers if exists
-
inline std::shared_ptr<const TrackingVolumeArray> confinedVolumes() const
Return the confined volumes of this container array - if it exists.
-
inline const MutableTrackingVolumeVector denseVolumes() const
Return the confined dense volumes.
-
void 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
gctx – The current geometry context object, e.g. alignment
bsfMine – is the boundary face indicater where to glue
neighbor – is the TrackingVolume to be glued
bsfNeighbor – is the boudnary surface of the neighbor
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
gctx – The current geometry context object, e.g. alignment
bsfMine – is the boundary face indicater where to glue
neighbors – are the TrackingVolumes to be glued
bsfNeighbor – are the boudnary surface of the neighbors
-
GlueVolumesDescriptor &glueVolumesDescriptor()
Register the outside glue volumes - ordering is in the TrackingVolume Frame:
negativeFaceXY
(faces YZ, ZY, radial faces)
positiveFaceXY
-
inline bool hasBoundingVolumeHierarchy() const
Return whether this TrackingVolume has a BoundingVolumeHierarchy associated.
- Returns
If it has a BVH or not.
-
const 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
gctx – The current geometry context object, e.g. alignment
position – is the global position associated with that search
tol – Search position tolerance for dense volumes
- Returns
plain pointer to associated with the position
-
inline const TrackingVolume *motherVolume() const
Return the MotherVolume - if it exists.
-
TrackingVolume &operator=(const TrackingVolume&) = delete
-
inline void registerColorCode(unsigned int icolor)
Register the color code.
- Parameters
icolor – is a color number
-
void registerGlueVolumeDescriptor(GlueVolumesDescriptor *gvd)
Register the outside glue volumes - ordering is in the TrackingVolume Frame:
negativeFaceXY
(faces YZ, ZY, radial faces)
positiveFaceXY
- Parameters
gvd – register a new GlueVolumeDescriptor
-
inline void setMotherVolume(const TrackingVolume *mvol)
Set the MotherVolume.
- Parameters
mvol – is the mother volume
Provide a new BoundarySurface from the glueing.
- Parameters
bsf – is the boundary face indicater where to glue
bs – is the new boudnary surface
checkmaterial – is 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
-
void visitSurfaces(const std::function<void(const Acts::Surface*)> &visitor) const
Visit all sensitive surfaces.
If a context is needed for the vist, the vistitor has to provide this e.g. as a private member
- Parameters
visitor – The callable. Will be called for each sensitive surface that is found
-
inline const IVolumeMaterial *volumeMaterial() const
Return the material of the volume.
Return the material of the volume as shared pointer.
-
inline const std::string &volumeName() const
Returns the VolumeName - for debug reason, might be depreciated later.
Public Static Functions
Factory constructor for a container TrackingVolume.
by definition a Vacuum volume
- Parameters
transform – is the global 3D transform to position the volume in space
volumeBounds – is the description of the volume boundaries
containedVolumes – are the static volumes that fill this volume
volumeName – is a string identifier
- Returns
shared pointer to a new TrackingVolume
Factory constructor for Tracking Volume with a bounding volume hierarchy.
- Parameters
transform – is the global 3D transform to position the volume in space
volbounds – is the description of the volume boundaries
boxStore – Vector owning the contained bounding boxes
descendants – Vector owning the child volumes
top – The top of the hierarchy (top node)
volumeMaterial – is the materials of the tracking volume
volumeName – is a string identifier
- Returns
shared pointer to a new TrackingVolume
Factory constructor for Tracking Volumes with content.
can not be a container volume
- Parameters
transform – is the global 3D transform to position the volume in space
volumeBounds – is the description of the volume boundaries
volumeMaterial – is are materials of the tracking volume
containedLayers – is the confined layer array (optional)
containedVolumes – is the confined volume array (optional)
denseVolumes – is the array of dense volulmes (optional)
volumeName – is a string identifier
- Returns
shared pointer to a new TrackingVolume
Protected Functions
Constructor for a container Volume.
vacuum filled volume either as a for other tracking volumes
- Parameters
transform – is the global 3D transform to position the volume in space
volbounds – is the description of the volume boundaries
containedVolumeArray – are the static volumes that fill this volume
volumeName – is a string identifier
Constructor for a full equipped Tracking Volume.
- Parameters
transform – is the global 3D transform to position the volume in space
volumeBounds – is the description of the volume boundaries
volumeMaterial – is are materials of the tracking volume
staticLayerArray – is the confined layer array (optional)
containedVolumeArray – are the sub volumes if the volume is a container
denseVolumeVector – The contained dense volumes
volumeName – is a string identifier
Private Functions
-
void closeGeometry(const IMaterialDecorator *materialDecorator, std::unordered_map<GeometryIdentifier, const TrackingVolume*> &volumeMap, size_t &vol)¶
close the Geometry, i.e.
set the GeometryIdentifier and assign material
- Parameters
materialDecorator – is a dedicated decorator for the material to be assigned (surface, volume based)
volumeMap – is a map to find the a volume by identifier
vol – is the geometry id of the volume as calculated by the TrackingGeometry
-
void connectDenseBoundarySurfaces(MutableTrackingVolumeVector &confinedDenseVolumes)¶
-
void createBoundarySurfaces()¶
Create Boundary Surface.
-
void interlinkLayers()¶
interlink the layers in this TrackingVolume
-
void synchronizeLayers(double envelope = 1.) const¶
method to synchronize the layers with potentially updated volume bounds:
adapts the layer dimensions to the new volumebounds + envelope
- Parameters
envelope – is the clearance between volume boundary and layer
Private Members
-
std::vector<TrackingVolumeBoundaryPtr> m_boundarySurfaces¶
-
std::vector<std::unique_ptr<const Volume::BoundingBox>> m_boundingBoxes¶
Bounding Volume Hierarchy (BVH)
-
const Volume::BoundingBox *m_bvhTop = {nullptr}¶
-
unsigned int m_colorCode = {20}¶
color code for displaying
-
MutableTrackingVolumeVector m_confinedDenseVolumes¶
confined dense
-
std::unique_ptr<const LayerArray> m_confinedLayers = nullptr¶
(a) static configuration ordered by Binned arrays static layers
-
std::shared_ptr<const TrackingVolumeArray> m_confinedVolumes = nullptr¶
Array of Volumes inside the Volume when actin as container.
-
GlueVolumesDescriptor *m_glueVolumeDescriptor = {nullptr}¶
Volumes to glue Volumes from the outside.
-
const TrackingVolume *m_motherVolume = {nullptr}¶
Remember the mother volume.
-
std::string m_name¶
Volume name for debug reasons & screen output.
-
std::shared_ptr<const IVolumeMaterial> m_volumeMaterial = {nullptr}¶
The volume based material the TrackingVolume consists of.
Friends
- friend class TrackingGeometry
-
TrackingVolume() = delete
-
using BoundaryIntersection = ObjectIntersection<BoundarySurface, Surface>¶