Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-07-26 08:22:03

0001 /** TRACCC library, part of the ACTS project (R&D line)
0002  *
0003  * (c) 2021-2025 CERN for the benefit of the ACTS project
0004  *
0005  * Mozilla Public License Version 2.0
0006  */
0007 
0008 // Local include(s).
0009 #include "traccc/seeding/detail/spacepoint_binning.hpp"
0010 
0011 #include "traccc/seeding/spacepoint_binning_helper.hpp"
0012 
0013 // Detray include(s).
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   // Set up a device container on top of the input.
0030   const edm::spacepoint_collection::const_device spacepoints{sp_view};
0031 
0032   // Create the result object.
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   // Arrange the spacepoints into the bins of the 2D grid.
0039   for (unsigned int i = 0; i < spacepoints.size(); ++i) {
0040     // Get a proxy for this spacepoint.
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 }  // namespace traccc::host::details