12#include "detray/builders/volume_builder.hpp"
13#include "detray/builders/volume_builder_interface.hpp"
14#include "detray/material/material.hpp"
15#include "detray/material/predefined_materials.hpp"
16#include "detray/utils/ranges.hpp"
29template <
typename detector_t>
58 typename detector_t::geometry_context ctx = {}) ->
59 typename detector_t::volume_type *
override {
61 typename detector_t::volume_type *vol =
66 DETRAY_WARN_HOST(
"Volume " << this->
vol_index()
67 <<
" has vacuum material");
72 constexpr auto material_id{detector_t::material::id::e_raw_material};
75 dindex coll_size{det.material_store().template size<material_id>()};
76 vol->set_material(material_id, coll_size);
79 det._materials.template push_back<material_id>(m_volume_material);
87 material<scalar_type> m_volume_material{};
dscalar< typename detector_t::algebra_type > scalar_type
Scalar type used by the detector's material definitions.
Definition homogeneous_volume_material_builder.hpp:36
auto build(detector_t &det, const volume_builder_options &opt, typename detector_t::geometry_context ctx={}) -> typename detector_t::volume_type *override
Add the volume and the material to the detector det.
Definition homogeneous_volume_material_builder.hpp:57
homogeneous_volume_material_builder(std::unique_ptr< volume_builder_interface< detector_t > > vol_builder)
Definition homogeneous_volume_material_builder.hpp:41
void set_material(material< scalar_type > mat)
Add all necessary components for the volume material.
Definition homogeneous_volume_material_builder.hpp:49
Interface for volume builders (and volume builder decorators).
Definition volume_builder_interface.hpp:66
volume_decorator(std::unique_ptr< volume_builder_interface< detector_t > > vol_builder)
Wraps a volume builder.
Definition volume_builder_interface.hpp:178
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.
Definition volume_builder_interface.hpp:229
auto vol_index() const -> dindex override
Returns the index assigned by the wrapped builder.
Definition volume_builder_interface.hpp:201
Check if a type can be used as a detector.
Definition concepts.hpp:47
material_id
Enumerate the different material types.
Definition definitions.hpp:59
Detray include(s).
Definition array_operators.hpp:18
get_scalar_t< A, T > dscalar
Scalar type for algebra A and value type T.
Definition algebra.hpp:64
unsigned int dindex
Default index type.
Definition indexing.hpp:18
Material composition properties and density data used by interactions.
Definition material.hpp:36
Elements Declaration.
Definition predefined_materials.hpp:34
Options for the volume builder classes.
Definition volume_builder_interface.hpp:29