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

Decorator for the surface factories. More...

#include <detray/builders/surface_factory_interface.hpp>

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

Public Member Functions

 factory_decorator (std::unique_ptr< surface_factory_interface< detector_t > > factory)
 Wrap a concrete surface factory and forward interface calls to it.
const surface_factory_interface< detector_t > * get_factory () const
dindex size () const override
 Overwrite interface functions using callbacks to the base factory.
void push_back (surface_data< detector_t > &&data) override
 Add data to the factory.
void push_back (std::vector< surface_data< detector_t > > &&data) override
 Forward a batch of surface records to the wrapped factory.
void clear () override
 Clear all data in the factory.
auto operator() (typename detector_t::volume_type &volume, typename detector_t::surface_lookup_container &surfaces, typename detector_t::transform_container &transforms, typename detector_t::mask_container &masks, typename detector_t::geometry_context ctx={}) -> dindex_range override
Public Member Functions inherited from detray::surface_factory_interface< detector_t >

Protected Member Functions

surface_factory_interface< detector_t > * get_factory ()
Protected Member Functions inherited from detray::surface_factory_interface< detector_t >
template<typename container_t, typename... Args>
dindex insert_in_container (container_t &cont, const typename container_t::value_type value, const dindex idx, Args &&...args) const
 Insert a value in a container at a specific index.

Additional Inherited Members

Public Types inherited from detray::surface_factory_interface< detector_t >
using navigation_link = typename detector_t::surface_type::navigation_link
 Navigation link type used by surfaces produced by the factory.

Detailed Description

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

Decorator for the surface factories.

Delegates all mandatory method calls to the underlying surface factory

Constructor & Destructor Documentation

◆ factory_decorator()

template<concepts::detector detector_t>
detray::factory_decorator< detector_t >::factory_decorator ( std::unique_ptr< surface_factory_interface< detector_t > > factory)
explicit

Wrap a concrete surface factory and forward interface calls to it.

Parameters
factoryFactory whose behavior is decorated.

Member Function Documentation

◆ clear()

template<concepts::detector detector_t>
void detray::factory_decorator< detector_t >::clear ( )
overridevirtual

Clear all data in the factory.

Implements detray::surface_factory_interface< detector_t >.

◆ get_factory() [1/2]

template<concepts::detector detector_t>
surface_factory_interface< detector_t > * detray::factory_decorator< detector_t >::get_factory ( )
protected
Returns
access to the underlying factory - non-const

◆ get_factory() [2/2]

template<concepts::detector detector_t>
const surface_factory_interface< detector_t > * detray::factory_decorator< detector_t >::get_factory ( ) const
Returns
access to the underlying factory - const

◆ operator()()

template<concepts::detector detector_t>
auto detray::factory_decorator< detector_t >::operator() ( typename detector_t::volume_type & volume,
typename detector_t::surface_lookup_container & surfaces,
typename detector_t::transform_container & transforms,
typename detector_t::mask_container & masks,
typename detector_t::geometry_context ctx = {} )->dindex_range
overridevirtual
Parameters
volumeVolume receiving the generated surfaces.
surfacesDetector surface lookup to append to.
transformsDetector transform store to append to.
masksDetector mask store to append to.
ctxGeometry context used when constructing transforms.
Returns
Half-open range of newly added surfaces.

Implements detray::surface_factory_interface< detector_t >.

Reimplemented in detray::homogeneous_material_factory< detector_t >, detray::homogeneous_material_generator< detector_t >, detray::material_map_factory< detector_t, index_t >, and detray::material_map_generator< detector_t >.

◆ push_back() [1/2]

template<concepts::detector detector_t>
void detray::factory_decorator< detector_t >::push_back ( std::vector< surface_data< detector_t > > && data)
overridevirtual

Forward a batch of surface records to the wrapped factory.

Parameters
dataSurface records to append in order.

Implements detray::surface_factory_interface< detector_t >.

◆ push_back() [2/2]

template<concepts::detector detector_t>
void detray::factory_decorator< detector_t >::push_back ( surface_data< detector_t > && data)
overridevirtual

Add data to the factory.

Parameters
dataSurface record to append.

Implements detray::surface_factory_interface< detector_t >.

◆ size()

template<concepts::detector detector_t>
dindex detray::factory_decorator< detector_t >::size ( ) const
overridevirtual

Overwrite interface functions using callbacks to the base factory.

Returns
Number of surface records held by the wrapped factory.

Implements detray::surface_factory_interface< detector_t >.