37 vecmem::memory_resource& mr =
m_hostMR->mr();
38 vecmem::host_memory_resource tmp_mr;
46 traccc::edm::silicon_cell_collection::host cells{tmp_mr};
47 copy(*cells_handle, cells)->wait();
49 std::vector<uint8_t> cells_buffer;
51 ATH_MSG_DEBUG(
"Serialized " << cells.size() <<
" traccc cells into "
52 << cells_buffer.size() <<
" bytes");
55 auto traccc_start = std::chrono::high_resolution_clock::now();
58 auto traccc_end = std::chrono::high_resolution_clock::now();
59 std::chrono::duration<double, std::milli> traccc_time = traccc_end - traccc_start;
60 ATH_MSG_INFO(
"Traccc total inference time: " << traccc_time.count() <<
" ms");
63 traccc::edm::measurement_collection::host measurements{tmp_mr};
64 traccc::edm::silicon_cluster_collection::host clusters{tmp_mr};
65 traccc_track_container::host tracks{tmp_mr};
67 result.measurements.size(), measurements);
69 result.clusters.size(), clusters);
73 result.trackStates.size(), tracks.states);
74 ATH_MSG_DEBUG(
"Received " << measurements.size() <<
" measurements, "
75 << clusters.size() <<
" clusters, " << tracks.tracks.size()
76 <<
" tracks and " << tracks.states.size() <<
" track states");
79 constexpr auto h2h = vecmem::copy::type::host_to_host;
83 std::make_unique<traccc::edm::measurement_collection::buffer>(
84 copy.to(vecmem::get_data(measurements), mr,
nullptr, h2h))));
88 std::make_unique<traccc::edm::silicon_cluster_collection::buffer>(
89 copy.to(vecmem::get_data(clusters), mr, &mr, h2h))));
91 auto tracksBuffer = std::make_unique<traccc_track_container::buffer>();
92 tracksBuffer->tracks = copy.to(vecmem::get_data(tracks.tracks), mr, &mr, h2h);
93 tracksBuffer->states = copy.to(vecmem::get_data(tracks.states), mr,
nullptr, h2h);
94 tracksBuffer->measurements = *measurementsHandle;
96 ATH_CHECK(tracksHandle.record(std::move(tracksBuffer)));
98 return StatusCode::SUCCESS;
void serialize(const vecmem::edm::host< vecmem::edm::schema< VARTYPES... >, INTERFACE > &container, std::vector< std::uint8_t > &out)
Append container to out in the format described above.
void deserialize(const std::uint8_t *data, std::size_t size, vecmem::edm::host< vecmem::edm::schema< VARTYPES... >, INTERFACE > &container)
Fill container from size bytes at data.