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

Interface for volume builders (and volume builder decorators). More...

#include <detray/builders/volume_builder_interface.hpp>

Inheritance diagram for detray::volume_builder_interface< detector_t >:
[legend]

Public Types

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

virtual void add_surfaces (std::shared_ptr< surface_factory_interface< detector_t > > sf_factory, typename detector_t::geometry_context ctx={})=0
 Add surfaces to the volume.
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.
virtual auto build (detector_t &det, const volume_builder_options &opt, typename detector_t::geometry_context ctx={}) -> typename detector_t::volume_type *=0
 Adds a volume and all of its contents to a detector.
virtual bool has_accel () const =0
virtual void has_accel (bool toggle)=0
 Toggles whether sensitive surfaces are added to the brute force method.
virtual std::string_view name ()=0
virtual auto operator() () -> typename detector_t::volume_type &=0
 Returns mutable access to the volume being built.
virtual auto operator() () const -> const typename detector_t::volume_type &=0
 Returns const access to the volume being built.
virtual void set_name (std::string volume_name)=0
 Sets the name volume_name for the volume.
virtual auto vol_index () const -> dindex=0

Protected Member Functions

virtual detector_t::surface_lookup_container & surfaces ()=0
 Access to builder data.
virtual detector_t::transform_container & transforms ()=0
 Returns mutable access to the builder's transforms.
virtual detector_t::mask_container & masks ()=0
 Returns mutable access to the builder's masks.

Detailed Description

template<concepts::detector detector_t>
class detray::volume_builder_interface< detector_t >

Interface for volume builders (and volume builder decorators).

Member Function Documentation

◆ add_surfaces()

template<concepts::detector detector_t>
virtual void detray::volume_builder_interface< detector_t >::add_surfaces ( std::shared_ptr< surface_factory_interface< detector_t > > sf_factory,
typename detector_t::geometry_context ctx = {} )
pure virtual

Add surfaces to the volume.

Parameters
sf_factoryFactory that supplies surfaces for the volume.
ctxGeometry context used while adding surfaces.

Implemented in detray::homogeneous_material_builder< detector_t >, detray::material_map_builder< detector_t, DIM, mat_map_factory_t >, detray::volume_builder< detector_t >, and detray::volume_decorator< detector_t >.

◆ add_volume_placement() [1/3]

template<concepts::detector detector_t>
virtual void detray::volume_builder_interface< detector_t >::add_volume_placement ( const dpoint3D< algebra_type > & t)
pure virtual

Add the transform for the volume placement from the translation t.

The rotation will be the identity matrix.

Parameters
tTranslation of the volume placement.

◆ add_volume_placement() [2/3]

template<concepts::detector detector_t>
virtual void detray::volume_builder_interface< detector_t >::add_volume_placement ( const dpoint3D< algebra_type > & t,
const dvector3D< algebra_type > & x,
const dvector3D< algebra_type > & z )
pure virtual

Add the transform for the volume placement from the translation t , the new x- and z-axis (x, z).

Parameters
tTranslation of the volume placement.
xNew x-axis of the placement.
zNew z-axis of the placement.

◆ add_volume_placement() [3/3]

template<concepts::detector detector_t>
virtual void detray::volume_builder_interface< detector_t >::add_volume_placement ( const dtransform3D< algebra_type > & trf = {})
pure virtual

Add the transform for the volume placement - copy.

Parameters
trfTransform to copy into the placement.

◆ build()

template<concepts::detector detector_t>
virtual auto detray::volume_builder_interface< detector_t >::build ( detector_t & det,
const volume_builder_options & opt,
typename detector_t::geometry_context ctx = {} )->typenamedetector_t::volume_type *
pure virtual

◆ has_accel() [1/2]

template<concepts::detector detector_t>
virtual bool detray::volume_builder_interface< detector_t >::has_accel ( ) const
pure virtual
Returns
whether sensitive surfaces are added to the brute force method

Implemented in detray::volume_builder< detector_t >, and detray::volume_decorator< detector_t >.

◆ has_accel() [2/2]

template<concepts::detector detector_t>
virtual void detray::volume_builder_interface< detector_t >::has_accel ( bool toggle)
pure virtual

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

Parameters
toggleWhether to add sensitive surfaces to the brute force method.

Implemented in detray::volume_builder< detector_t >, and detray::volume_decorator< detector_t >.

◆ masks()

template<concepts::detector detector_t>
virtual detector_t::mask_container & detray::volume_builder_interface< detector_t >::masks ( )
protectedpure virtual

Returns mutable access to the builder's masks.

Returns
The mask container.

Implemented in detray::volume_builder< detector_t >, and detray::volume_decorator< detector_t >.

◆ name()

template<concepts::detector detector_t>
virtual std::string_view detray::volume_builder_interface< detector_t >::name ( )
pure virtual
Returns
the name of the volume

Implemented in detray::volume_builder< detector_t >, and detray::volume_decorator< detector_t >.

◆ operator()() [1/2]

template<concepts::detector detector_t>
virtual auto detray::volume_builder_interface< detector_t >::operator() ( ) ->typenamedetector_t::volume_type &
pure virtual

Returns mutable access to the volume being built.

Returns
The volume being built.

Implemented in detray::volume_builder< detector_t >, and detray::volume_decorator< detector_t >.

◆ operator()() [2/2]

template<concepts::detector detector_t>
virtual auto detray::volume_builder_interface< detector_t >::operator() ( ) const->consttypenamedetector_t::volume_type &
pure virtual

Returns const access to the volume being built.

Returns
reading access to the volume

Implemented in detray::volume_builder< detector_t >, and detray::volume_decorator< detector_t >.

◆ set_name()

template<concepts::detector detector_t>
virtual void detray::volume_builder_interface< detector_t >::set_name ( std::string volume_name)
pure virtual

Sets the name volume_name for the volume.

Parameters
volume_nameName to assign to the volume.

Implemented in detray::volume_builder< detector_t >, and detray::volume_decorator< detector_t >.

◆ surfaces()

template<concepts::detector detector_t>
virtual detector_t::surface_lookup_container & detray::volume_builder_interface< detector_t >::surfaces ( )
protectedpure virtual

Access to builder data.

Returns
The surface lookup container.

Implemented in detray::volume_builder< detector_t >, and detray::volume_decorator< detector_t >.

◆ transforms()

template<concepts::detector detector_t>
virtual detector_t::transform_container & detray::volume_builder_interface< detector_t >::transforms ( )
protectedpure virtual

Returns mutable access to the builder's transforms.

Returns
The transform container.

Implemented in detray::volume_builder< detector_t >, and detray::volume_decorator< detector_t >.

◆ vol_index()

template<concepts::detector detector_t>
virtual auto detray::volume_builder_interface< detector_t >::vol_index ( ) const->dindex
pure virtual
Returns
the global index for the volume
Note
the correct index is only available after calling init_vol

Implemented in detray::volume_builder< detector_t >, and detray::volume_decorator< detector_t >.