54 auto copy =
m_copy->copy(ctx);
56 traccc::edm::spacepoint_collection::buffer traccc_spacepoints_buffer{
57 copy->get_size(*traccc_spacepoints),
m_hostMR->mr()};
58 copy->setup(traccc_spacepoints_buffer)->ignore();
59 (*copy)(*traccc_spacepoints, traccc_spacepoints_buffer)->wait();
61 traccc::edm::spacepoint_collection::const_device traccc_sp(
62 traccc_spacepoints_buffer);
69 traccc::edm::seed_collection::buffer traccc_seeds_buffer{
70 copy->get_size(*seeds),
m_hostMR->mr()};
71 copy->setup(traccc_seeds_buffer)->ignore();
72 (*copy)(*seeds, traccc_seeds_buffer)->wait();
74 traccc::edm::seed_collection::const_device traccc_seeds(
77 ATH_MSG_DEBUG(
"Read " << traccc_seeds.size() <<
" seeds and " << spacepoints->size() <<
" spacepoints from device and host, respectively.");
78 m_nSP += spacepoints->size();
85 ATH_CHECK(seedHandle.
record(std::make_unique<ActsTrk::SeedContainer>()));
88 for (
size_t st = 0; st < traccc_seeds.size(); ++st) {
90 const auto& seed = traccc_seeds.at(st);
91 std::vector<unsigned int> sp_traccc_index{
92 seed.bottom_index(), seed.middle_index(), seed.top_index()};
94 std::vector<unsigned int> sp_host_index{
95 std::numeric_limits<unsigned int>::max(),
96 std::numeric_limits<unsigned int>::max(),
97 std::numeric_limits<unsigned int>::max()};
100 for (
int sp = 0;
sp < 3;
sp++) {
101 const auto& sp_traccc = traccc_sp.at(sp_traccc_index[
sp]);
102 const unsigned int measIdx = sp_traccc.measurement_index_1();
103 const unsigned int hostIdx = (*measMap)[measIdx];
104 ATH_CHECK(hostIdx != std::numeric_limits<unsigned int>::max());
106 sp_host_index[
sp] = hostIdx;
108 const auto& sp_host = spacepoints->at(hostIdx);
110 <<
"," << sp_traccc.z());
111 ATH_MSG_VERBOSE(sp_host->globalPosition().x() <<
"," << sp_host->globalPosition().y()
112 <<
"," << sp_host->globalPosition().z());
116 std::array{spacepoints->at(sp_host_index[0]),
117 spacepoints->at(sp_host_index[1]),
118 spacepoints->at(sp_host_index[2])},
123 <<
" created with " << seedPtrs->
size() <<
" seeds");
125 return StatusCode::SUCCESS;