ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::volume_builder< detector_t > Class Template Reference

Provides basic functionality to build detector volumes. More...

#include <detray/builders/volume_builder.hpp>

Inheritance diagram for detray::volume_builder< detector_t >:
[legend]
Collaboration diagram for detray::volume_builder< detector_t >:
[legend]

Public Types

using geo_obj_ids = typename detector_t::geo_obj_ids
 Identifier enum for the detector's geometry object categories.
using scalar_t = dscalar<typename detector_t::algebra_type>
 Scalar type used by this detector's geometry.
using volume_type = typename detector_t::volume_type
 Volume descriptor type produced by the builder.
Public Types inherited from detray::volume_builder_interface< detector_t >
using algebra_type = typename detector_t::algebra_type
 Algebra type used by the detector.
using scalar_type = dscalar<algebra_type>
 Scalar type used by the detector's algebra.

Public Member Functions

 volume_builder (const volume_id id, const dindex idx=0)
 Parametrized Constructor.
void add_surfaces (std::shared_ptr< surface_factory_interface< detector_t > > sf_factory, typename detector_t::geometry_context ctx={}) override
 Add data for (a) new surface(s) to the builder.
void add_volume_placement (const typename detector_t::point3_type &t) override
 Constructs a placement transform with identity rotation and translation.
void add_volume_placement (const typename detector_t::point3_type &t, const typename detector_t::vector3_type &x, const typename detector_t::vector3_type &z) override
 Constructs a placement transform from axes x and z and the translation t for the volume.
void add_volume_placement (const typename detector_t::transform3_type &trf={}) override
 Adds a placement transform.
auto build (detector_t &det, const volume_builder_options &opt, typename detector_t::geometry_context ctx={}) -> typename detector_t::volume_type *override
 Build the volume with internal surfaces and portals and add it to the detector instance det.
bool has_accel () const override
void has_accel (bool toggle) override
 Toggles whether sensitive surfaces are added to the brute force method.
std::string_view name () override
auto operator() () -> typename detector_t::volume_type &override
 Access to the volume under construction - non-const.
auto operator() () const -> const typename detector_t::volume_type &override
 Access to the volume under construction - const.
void set_name (std::string volume_name) override
 Sets the name volume_name for the volume.
auto vol_index () const -> dindex override
Public Member Functions inherited from detray::volume_builder_interface< detector_t >
virtual void add_volume_placement (const dpoint3D< algebra_type > &t)=0
 Add the transform for the volume placement from the translation t.
virtual void add_volume_placement (const dpoint3D< algebra_type > &t, const dvector3D< algebra_type > &x, const dvector3D< algebra_type > &z)=0
 Add the transform for the volume placement from the translation t , the new x- and z-axis (x, z).
virtual void add_volume_placement (const dtransform3D< algebra_type > &trf={})=0
 Add the transform for the volume placement - copy.

Protected Member Functions

template<geo_obj_ids surface_id = static_cast<geo_obj_ids>(0)>
auto add_to_detector (const volume_builder_options &opt, const typename detector_t::geometry_context ctx, detector_t &det) noexcept(false) -> void
 Adds a new full set of volume components (e.g.
detector_t::mask_container & masks () override
detector_t::surface_lookup_container & surfaces () override
detector_t::transform_container & transforms () override
Protected Member Functions inherited from detray::volume_builder_interface< detector_t >

Detailed Description

template<typename detector_t>
class detray::volume_builder< detector_t >

Provides basic functionality to build detector volumes.

Constructor & Destructor Documentation

◆ volume_builder()

template<typename detector_t>
detray::volume_builder< detector_t >::volume_builder ( const volume_id id,
const dindex idx = 0 )
explicit

Parametrized Constructor.

Parameters
idflags the type of volume geometry (e.g. cylindrical, cuboid)
idxthe index of the volume in the detector volume container

Member Function Documentation

◆ add_surfaces()

template<typename detector_t>
void detray::volume_builder< detector_t >::add_surfaces ( std::shared_ptr< surface_factory_interface< detector_t > > sf_factory,
typename detector_t::geometry_context ctx = {} )
overridevirtual

Add data for (a) new surface(s) to the builder.

Parameters
sf_factoryFactory that creates the surfaces and masks.
ctxGeometry context used when constructing transforms.

Implements detray::volume_builder_interface< detector_t >.

◆ add_to_detector()

template<typename detector_t>
template<geo_obj_ids surface_id = static_cast<geo_obj_ids>(0)>
auto detray::volume_builder< detector_t >::add_to_detector ( const volume_builder_options & opt,
const typename detector_t::geometry_context ctx,
detector_t & det )->void
protected

Adds a new full set of volume components (e.g.

transforms or masks) to the global detector data stores and updates all links.

Parameters
optOptions controlling deduplication and geometry storage.
ctxis the geometry_context of the call
detis the detector instance that the volume should be added to
Note
can throw an exception if input data is inconsistent

◆ add_volume_placement() [1/3]

template<typename detector_t>
void detray::volume_builder< detector_t >::add_volume_placement ( const typename detector_t::point3_type & t)
override

Constructs a placement transform with identity rotation and translation.

Parameters
tfor the volume

◆ add_volume_placement() [2/3]

template<typename detector_t>
void detray::volume_builder< detector_t >::add_volume_placement ( const typename detector_t::point3_type & t,
const typename detector_t::vector3_type & x,
const typename detector_t::vector3_type & z )
override

Constructs a placement transform from axes x and z and the translation t for the volume.

Parameters
tTranslation of the volume in global coordinates.
xLocal x axis in global coordinates.
zLocal z axis in global coordinates.

◆ add_volume_placement() [3/3]

template<typename detector_t>
void detray::volume_builder< detector_t >::add_volume_placement ( const typename detector_t::transform3_type & trf = {})
override

Adds a placement transform.

Parameters
trffor the volume

◆ build()

template<typename detector_t>
auto detray::volume_builder< detector_t >::build ( detector_t & det,
const volume_builder_options & opt,
typename detector_t::geometry_context ctx = {} )->typenamedetector_t::volume_type *
overridevirtual

Build the volume with internal surfaces and portals and add it to the detector instance det.

Parameters
detDetector that receives the built geometry.
optOptions controlling volume construction.
ctxGeometry context used when storing transforms.
Returns
Pointer to the volume descriptor added to the detector.

Implements detray::volume_builder_interface< detector_t >.

◆ has_accel() [1/2]

template<typename detector_t>
bool detray::volume_builder< detector_t >::has_accel ( ) const
overridevirtual
Returns
whether sensitive surfaces are added to the brute force method

Implements detray::volume_builder_interface< detector_t >.

◆ has_accel() [2/2]

template<typename detector_t>
void detray::volume_builder< detector_t >::has_accel ( bool toggle)
overridevirtual

Toggles whether sensitive surfaces are added to the brute force method.

Parameters
toggleTrue to retain sensitive surfaces in the brute-force accelerator.

Implements detray::volume_builder_interface< detector_t >.

◆ masks()

template<typename detector_t>
detector_t::mask_container & detray::volume_builder< detector_t >::masks ( )
overrideprotectedvirtual
Returns
Access to the surface mask data

Implements detray::volume_builder_interface< detector_t >.

◆ name()

template<typename detector_t>
std::string_view detray::volume_builder< detector_t >::name ( )
overridevirtual
Returns
the name of the volume

Implements detray::volume_builder_interface< detector_t >.

◆ operator()() [1/2]

template<typename detector_t>
auto detray::volume_builder< detector_t >::operator() ( ) ->typenamedetector_t::volume_type &
overridevirtual

Access to the volume under construction - non-const.

Returns
Mutable reference to the volume descriptor.

Implements detray::volume_builder_interface< detector_t >.

◆ operator()() [2/2]

template<typename detector_t>
auto detray::volume_builder< detector_t >::operator() ( ) const->consttypenamedetector_t::volume_type &
overridevirtual

Access to the volume under construction - const.

Returns
Const reference to the volume descriptor.

Implements detray::volume_builder_interface< detector_t >.

◆ set_name()

template<typename detector_t>
void detray::volume_builder< detector_t >::set_name ( std::string volume_name)
overridevirtual

Sets the name volume_name for the volume.

Parameters
volume_nameName to assign to the volume.

Implements detray::volume_builder_interface< detector_t >.

◆ surfaces()

template<typename detector_t>
detector_t::surface_lookup_container & detray::volume_builder< detector_t >::surfaces ( )
overrideprotectedvirtual
Returns
Access to the surface descriptor data

Implements detray::volume_builder_interface< detector_t >.

◆ transforms()

template<typename detector_t>
detector_t::transform_container & detray::volume_builder< detector_t >::transforms ( )
overrideprotectedvirtual
Returns
Access to the surface/volume transform data

Implements detray::volume_builder_interface< detector_t >.

◆ vol_index()

template<typename detector_t>
auto detray::volume_builder< detector_t >::vol_index ( ) const->dindex
overridevirtual
Returns
the volume index in the detector volume container

Implements detray::volume_builder_interface< detector_t >.