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

Decorator for the volume builder. More...

#include <detray/builders/volume_builder_interface.hpp>

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

Public Types

using scalar_t = dscalar<typename detector_t::algebra_type>
 Scalar type used by the detector's algebra.
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_decorator (std::unique_ptr< volume_builder_interface< detector_t > > vol_builder)
 Wraps a volume builder.
void add_surfaces (std::shared_ptr< surface_factory_interface< detector_t > > sf_factory, typename detector_t::geometry_context ctx={}) override
 Adds surfaces through the wrapped builder's factory interface.
void add_volume_placement (const typename detector_t::point3_type &t) override
 Adds a placement using a translation and identity rotation.
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
 Adds a placement using a translation and its x- and z-axes.
void add_volume_placement (const typename detector_t::transform3_type &trf={}) override
 Adds a placement transform to the wrapped builder.
auto build (detector_t &det, const volume_builder_options &opt, typename detector_t::geometry_context={}) -> typename detector_t::volume_type *override
 Builds the wrapped volume in the detector.
bool has_accel () const override
 Returns whether sensitive surfaces are added to brute force lookup.
void has_accel (bool toggle) override
 Forwards the brute-force acceleration setting to the wrapped builder.
std::string_view name () override
 Returns the wrapped volume's name.
auto operator() () -> typename detector_t::volume_type &override
 Returns the mutable volume being built.
auto operator() () const -> const typename detector_t::volume_type &override
 Returns const access to the wrapped volume.
void set_name (std::string volume_name) override
 Sets the wrapped volume's name.
auto vol_index () const -> dindex override
 Returns the index assigned by the wrapped builder.
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

volume_builder_interface< detector_t > * get_builder ()
 Access to underlying builderReturns a pointer to the wrapped builder.
detector_t::surface_lookup_container & surfaces () override
 Returns mutable access to the wrapped builder's surface lookup container.
detector_t::transform_container & transforms () override
 Returns mutable access to the wrapped builder's transforms.
detector_t::mask_container & masks () override
 Returns mutable access to the wrapped builder's masks.
Protected Member Functions inherited from detray::volume_builder_interface< detector_t >

Detailed Description

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

Decorator for the volume builder.

Can be volume builders that introduce special sorting/memory layout, or accelerator builders, like the grid builder.

Constructor & Destructor Documentation

◆ volume_decorator()

template<concepts::detector detector_t>
detray::volume_decorator< detector_t >::volume_decorator ( std::unique_ptr< volume_builder_interface< detector_t > > vol_builder)
explicit

Wraps a volume builder.

Parameters
vol_builderBuilder to decorate; must not be null.

Member Function Documentation

◆ add_surfaces()

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

Adds surfaces through the wrapped builder's factory interface.

Parameters
sf_factoryFactory that supplies surfaces.
ctxGeometry context forwarded to the builder.

Implements detray::volume_builder_interface< detector_t >.

◆ add_volume_placement() [1/3]

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

Adds a placement using a translation and identity rotation.

Parameters
tTranslation of the placement.

◆ add_volume_placement() [2/3]

template<concepts::detector detector_t>
void detray::volume_decorator< 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

Adds a placement using a translation and its x- and z-axes.

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

◆ add_volume_placement() [3/3]

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

Adds a placement transform to the wrapped builder.

Parameters
trfTransform to copy into the placement.

◆ build()

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

Builds the wrapped volume in the detector.

Parameters
detDetector receiving the volume.
optOptions controlling deduplication and sorting.
Returns
Pointer to the built volume.

Implements detray::volume_builder_interface< detector_t >.

◆ get_builder()

template<concepts::detector detector_t>
volume_builder_interface< detector_t > * detray::volume_decorator< detector_t >::get_builder ( )
protected

Access to underlying builderReturns a pointer to the wrapped builder.

Returns
Pointer to the wrapped builder.

◆ has_accel() [1/2]

template<concepts::detector detector_t>
bool detray::volume_decorator< detector_t >::has_accel ( ) const
overridevirtual

Returns whether sensitive surfaces are added to brute force lookup.

Returns
The brute-force lookup setting.

Implements detray::volume_builder_interface< detector_t >.

◆ has_accel() [2/2]

template<concepts::detector detector_t>
void detray::volume_decorator< detector_t >::has_accel ( bool toggle)
overridevirtual

Forwards the brute-force acceleration setting to the wrapped builder.

Parameters
toggleWhether sensitive surfaces are added to brute force lookup.

Implements detray::volume_builder_interface< detector_t >.

◆ masks()

template<concepts::detector detector_t>
detector_t::mask_container & detray::volume_decorator< detector_t >::masks ( )
overrideprotectedvirtual

Returns mutable access to the wrapped builder's masks.

Returns
The mask container.

Implements detray::volume_builder_interface< detector_t >.

◆ name()

template<concepts::detector detector_t>
std::string_view detray::volume_decorator< detector_t >::name ( )
overridevirtual

Returns the wrapped volume's name.

Returns
The volume name.

Implements detray::volume_builder_interface< detector_t >.

◆ operator()() [1/2]

template<concepts::detector detector_t>
auto detray::volume_decorator< detector_t >::operator() ( ) ->typenamedetector_t::volume_type &
overridevirtual

Returns the mutable volume being built.

Returns
The wrapped volume.

Implements detray::volume_builder_interface< detector_t >.

◆ operator()() [2/2]

template<concepts::detector detector_t>
auto detray::volume_decorator< detector_t >::operator() ( ) const->consttypenamedetector_t::volume_type &
overridevirtual

Returns const access to the wrapped volume.

Returns
The wrapped volume.

Implements detray::volume_builder_interface< detector_t >.

◆ set_name()

template<concepts::detector detector_t>
void detray::volume_decorator< detector_t >::set_name ( std::string volume_name)
overridevirtual

Sets the wrapped volume's name.

Parameters
volume_nameName to assign.

Implements detray::volume_builder_interface< detector_t >.

◆ surfaces()

template<concepts::detector detector_t>
detector_t::surface_lookup_container & detray::volume_decorator< detector_t >::surfaces ( )
overrideprotectedvirtual

Returns mutable access to the wrapped builder's surface lookup container.

Returns
The surface lookup container.

Implements detray::volume_builder_interface< detector_t >.

◆ transforms()

template<concepts::detector detector_t>
detector_t::transform_container & detray::volume_decorator< detector_t >::transforms ( )
overrideprotectedvirtual

Returns mutable access to the wrapped builder's transforms.

Returns
The transform container.

Implements detray::volume_builder_interface< detector_t >.

◆ vol_index()

template<concepts::detector detector_t>
auto detray::volume_decorator< detector_t >::vol_index ( ) const->dindex
overridevirtual

Returns the index assigned by the wrapped builder.

Returns
The global volume index.

Implements detray::volume_builder_interface< detector_t >.