File indexing completed on 2026-07-26 08:22:03
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "traccc/seeding/detail/spacepoint_binning.hpp"
0010
0011 #include "traccc/seeding/spacepoint_binning_helper.hpp"
0012
0013
0014 #include <detray/definitions/indexing.hpp>
0015
0016 namespace traccc::host::details {
0017
0018 spacepoint_binning::spacepoint_binning(
0019 const seedfinder_config& config, const spacepoint_grid_config& grid_config,
0020 vecmem::memory_resource& mr, std::unique_ptr<const Logger> logger)
0021 : messaging(std::move(logger)),
0022 m_config(config),
0023 m_grid_config(grid_config),
0024 m_axes(get_axes(grid_config, mr)),
0025 m_mr(mr) {}
0026
0027 traccc::details::spacepoint_grid_types::host spacepoint_binning::operator()(
0028 const edm::spacepoint_collection::const_view& sp_view) const {
0029
0030 const edm::spacepoint_collection::const_device spacepoints{sp_view};
0031
0032
0033 traccc::details::spacepoint_grid_types::host result{
0034 m_axes.first, m_axes.second, m_mr.get()};
0035 const auto& phi_axis = result.axis_p0();
0036 const auto& z_axis = result.axis_p1();
0037
0038
0039 for (unsigned int i = 0; i < spacepoints.size(); ++i) {
0040
0041 const edm::spacepoint_collection::const_device::const_proxy_type sp =
0042 spacepoints.at(i);
0043
0044 if (is_valid_sp(m_config, sp)) {
0045 const detray::dindex bin_index =
0046 phi_axis.bin(sp.phi()) + phi_axis.bins() * z_axis.bin(sp.z());
0047 result.bin(bin_index).push_back(i);
0048 }
0049 }
0050 return result;
0051 }
0052
0053 }