ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::detector_builder< metadata_t, volume_builder_t, volume_data_t > Class Template Reference

Provides functionality to build a detray detector volume by volume. More...

#include <detray/builders/detector_builder.hpp>

Public Types

using algebra_type = typename detector_type::algebra_type
 Algebra backend used by the detector geometry.
using detector_type = detail::detector<metadata_t, host_container_types>
 Detector type produced from the configured metadata.
using scalar_type = dscalar<algebra_type>
 Scalar type used for geometry values.

Public Member Functions

auto build (vecmem::memory_resource &resource, const volume_builder_options &opt) -> detector_type
 Assembles the final detector from the volumes builders and allocates the detector containers with the memory resource resource.
auto build (vecmem::memory_resource &resource, const volume_builder_options &opt, typename detector_type::name_map &name_map) -> detector_type
 Assembles the final detector and fill an externally provided name map name_map.
template<class builder_t>
auto decorate (const volume_builder_interface< detector_type > *v_builder) -> builder_t *
 Decorate a volume builder v_builder with more functionality.
template<class builder_t>
auto decorate (dindex volume_idx) -> builder_t *
 Decorate a volume builder at position volume_idx with more functionality.
bool has_volume (const std::size_t volume_idx) const
auto n_volumes () const -> dindex
std::string_view name () const
template<typename... Args>
auto new_volume (const volume_id id, Args &&... args) -> volume_builder_interface< detector_type > *
 Add a new volume builder that will build a volume of the shape given by id.
auto operator[] (dindex volume_idx) -> volume_builder_interface< detector_type > *
 Access a particular volume builder by volume index volume_idx.
void set_name (std::string det_name)
 Set the name of the detector under construction to det_name.

Detailed Description

template<concepts::metadata metadata_t, template< typename > class volume_builder_t = volume_builder, template< typename... > class volume_data_t = std::vector>
class detray::detector_builder< metadata_t, volume_builder_t, volume_data_t >

Provides functionality to build a detray detector volume by volume.

Template Parameters
metadatathe type definitions for the detector
volume_builder_tthe basic volume builder to be used for the geometry data
volume_data_tthe data structure that holds the volume builders

Member Function Documentation

◆ build() [1/2]

template<concepts::metadata metadata_t, template< typename > class volume_builder_t = volume_builder, template< typename... > class volume_data_t = std::vector>
auto detray::detector_builder< metadata_t, volume_builder_t, volume_data_t >::build ( vecmem::memory_resource & resource,
const volume_builder_options & opt )->detector_type

Assembles the final detector from the volumes builders and allocates the detector containers with the memory resource resource.

Parameters
resourceMemory resource used for detector storage.
optOptions applied while building each volume.
Returns
The completed detector.

◆ build() [2/2]

template<concepts::metadata metadata_t, template< typename > class volume_builder_t = volume_builder, template< typename... > class volume_data_t = std::vector>
auto detray::detector_builder< metadata_t, volume_builder_t, volume_data_t >::build ( vecmem::memory_resource & resource,
const volume_builder_options & opt,
typename detector_type::name_map & name_map )->detector_type

Assembles the final detector and fill an externally provided name map name_map.

Parameters
resourceMemory resource used for detector storage.
optOptions applied while building each volume.
name_mapMap to populate with detector and volume names.
Returns
The completed detector.

◆ decorate() [1/2]

template<concepts::metadata metadata_t, template< typename > class volume_builder_t = volume_builder, template< typename... > class volume_data_t = std::vector>
template<class builder_t>
auto detray::detector_builder< metadata_t, volume_builder_t, volume_data_t >::decorate ( const volume_builder_interface< detector_type > * v_builder) ->builder_t *

Decorate a volume builder v_builder with more functionality.

Parameters
v_builderBuilder to decorate; it must belong to this detector builder.
Returns
Pointer to the decorated builder.

◆ decorate() [2/2]

template<concepts::metadata metadata_t, template< typename > class volume_builder_t = volume_builder, template< typename... > class volume_data_t = std::vector>
template<class builder_t>
auto detray::detector_builder< metadata_t, volume_builder_t, volume_data_t >::decorate ( dindex volume_idx) ->builder_t *

Decorate a volume builder at position volume_idx with more functionality.

Parameters
volume_idxIndex of the builder to decorate.
Returns
Pointer to the decorated builder.

◆ has_volume()

template<concepts::metadata metadata_t, template< typename > class volume_builder_t = volume_builder, template< typename... > class volume_data_t = std::vector>
bool detray::detector_builder< metadata_t, volume_builder_t, volume_data_t >::has_volume ( const std::size_t volume_idx) const
Parameters
volume_idxVolume index to check.
Returns
'true' if there is a volume builder registered for the volume with index volume_idx

◆ n_volumes()

template<concepts::metadata metadata_t, template< typename > class volume_builder_t = volume_builder, template< typename... > class volume_data_t = std::vector>
auto detray::detector_builder< metadata_t, volume_builder_t, volume_data_t >::n_volumes ( ) const->dindex
Returns
the number of volumes currently registered in the builder

◆ name()

template<concepts::metadata metadata_t, template< typename > class volume_builder_t = volume_builder, template< typename... > class volume_data_t = std::vector>
std::string_view detray::detector_builder< metadata_t, volume_builder_t, volume_data_t >::name ( ) const
Returns
the name of the detector under construction

◆ new_volume()

template<concepts::metadata metadata_t, template< typename > class volume_builder_t = volume_builder, template< typename... > class volume_data_t = std::vector>
template<typename... Args>
auto detray::detector_builder< metadata_t, volume_builder_t, volume_data_t >::new_volume ( const volume_id id,
Args &&... args )->volume_builder_interface< detector_type > *

Add a new volume builder that will build a volume of the shape given by id.

Parameters
idVolume shape to build.
argsAdditional arguments forwarded to the volume builder.
Returns
Pointer to the new volume builder.

◆ operator[]()

template<concepts::metadata metadata_t, template< typename > class volume_builder_t = volume_builder, template< typename... > class volume_data_t = std::vector>
auto detray::detector_builder< metadata_t, volume_builder_t, volume_data_t >::operator[] ( dindex volume_idx) ->volume_builder_interface< detector_type > *

Access a particular volume builder by volume index volume_idx.

Parameters
volume_idxIndex of the requested builder.
Returns
Pointer to the requested builder.

◆ set_name()

template<concepts::metadata metadata_t, template< typename > class volume_builder_t = volume_builder, template< typename... > class volume_data_t = std::vector>
void detray::detector_builder< metadata_t, volume_builder_t, volume_data_t >::set_name ( std::string det_name)

Set the name of the detector under construction to det_name.

Parameters
det_nameName to assign to the detector.