26 ATH_MSG_DEBUG(
"Initializing device detector description provider service ");
32 std::unique_ptr<traccc::detector_design_description::host> hostDesign;
33 std::unique_ptr<traccc::detector_conditions_description::host> hostCond;
34 std::unique_ptr<traccc::detector_design_description::buffer> deviceDesign;
35 std::unique_ptr<traccc::detector_conditions_description::buffer> deviceCond;
38 auto copy =
m_copy->copy(EventContext{});
49 return StatusCode::SUCCESS;
109 std::pmr::memory_resource& hostMR,
110 std::pmr::memory_resource& deviceMR,
111 const vecmem::copy& copy,
112 std::unique_ptr<traccc::detector_design_description::host>& hostDesign,
113 std::unique_ptr<traccc::detector_conditions_description::host>& hostCond,
114 std::unique_ptr<traccc::detector_design_description::buffer>& deviceDesign,
115 std::unique_ptr<traccc::detector_conditions_description::buffer>& deviceCond)
122 return StatusCode::FAILURE;
130 hostDesign = std::make_unique<traccc::detector_design_description::host>(hostMR);
131 hostCond = std::make_unique<traccc::detector_conditions_description::host>(hostMR);
133 traccc::io::read_detector_description(
134 *hostDesign, *hostCond,
138 traccc::data_format::json);
141 << hostCond->size() <<
" conditions entries");
144 std::vector<unsigned int> sizes;
145 sizes.reserve(hostDesign->size());
146 for (std::size_t i = 0; i < hostDesign->size(); ++i) {
147 const auto& e = hostDesign->at(i);
148 sizes.push_back(
static_cast<unsigned int>(
149 std::max(e.bin_edges_x().size(), e.bin_edges_y().size())));
153 std::make_unique<traccc::detector_design_description::buffer>(
154 sizes, deviceMR, &hostMR,
155 vecmem::data::buffer_type::resizable);
156 copy.setup(*deviceDesign)->wait();
157 copy(vecmem::get_data(*hostDesign), *deviceDesign)->wait();
161 std::make_unique<traccc::detector_conditions_description::buffer>(
162 static_cast<traccc::detector_conditions_description::buffer::size_type
>(
165 copy.setup(*deviceCond)->wait();
166 copy(vecmem::get_data(*hostCond), *deviceCond)->wait();
169 return StatusCode::SUCCESS;
StatusCode buildFromFile(std::pmr::memory_resource &hostMR, std::pmr::memory_resource &deviceMR, const vecmem::copy ©, std::unique_ptr< traccc::detector_design_description::host > &hostDesign, std::unique_ptr< traccc::detector_conditions_description::host > &hostCond, std::unique_ptr< traccc::detector_design_description::buffer > &deviceDesign, std::unique_ptr< traccc::detector_conditions_description::buffer > &deviceCond)