Back to home page

EIC code displayed by LXR

 
 

    


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

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 // Project include(s).
0009 #include "traccc/clusterization/measurement_creation_algorithm.hpp"
0010 #include "traccc/clusterization/sparse_ccl_algorithm.hpp"
0011 #include "traccc/edm/silicon_cell_collection.hpp"
0012 #include "traccc/edm/silicon_cluster_collection.hpp"
0013 #include "traccc/geometry/detector_design_description.hpp"
0014 
0015 // VecMem include(s).
0016 #include <vecmem/memory/host_memory_resource.hpp>
0017 
0018 // GTest include(s).
0019 #include <gtest/gtest.h>
0020 
0021 TEST(algorithms, seq_single_module) {
0022   // Memory resource used in the test.
0023   vecmem::host_memory_resource resource;
0024 
0025   traccc::host::sparse_ccl_algorithm cc(resource);
0026   traccc::host::measurement_creation_algorithm mc(resource);
0027 
0028   /// Following [DOI: 10.1109/DASIP48288.2019.9049184]
0029   traccc::edm::silicon_cell_collection::host cells{resource};
0030   cells.push_back({1, 0, 1.f, 0.f, 0});
0031   cells.push_back({8, 4, 2.f, 0.f, 0});
0032   cells.push_back({10, 4, 3.f, 0.f, 0});
0033   cells.push_back({9, 5, 4.f, 0.f, 0});
0034   cells.push_back({10, 5, 5.f, 0.f, 0});
0035   cells.push_back({12, 12, 6.f, 0.f, 0});
0036   cells.push_back({3, 13, 7.f, 0.f, 0});
0037   cells.push_back({11, 13, 8.f, 0.f, 0});
0038   cells.push_back({4, 14, 9.f, 0.f, 0});
0039 
0040   // Create a dummy detector description. With a description of enough
0041   // detector modules for all the input files that the test uses.
0042   static constexpr std::size_t NMODULES = 1;
0043   traccc::detector_design_description::host det_desc{resource};
0044   traccc::detector_conditions_description::host det_cond{resource};
0045   det_desc.resize(NMODULES);
0046   det_cond.resize(NMODULES);
0047   for (std::size_t i = 0; i < NMODULES; ++i) {
0048     det_cond.module_to_design_id()[i] = static_cast<unsigned int>(i);
0049     det_cond.geometry_id()[i] = detray::geometry::identifier{i};
0050     det_cond.acts_geometry_id()[i] = i;
0051     det_cond.measurement_translation()[i] = {0.f, 0.f};
0052 
0053     std::vector<traccc::scalar, std::pmr::polymorphic_allocator<traccc::scalar>>
0054         bin_edges_x(10001), bin_edges_y(10001);
0055     std::iota(bin_edges_x.begin(), bin_edges_x.end(), -0.5f);
0056     std::iota(bin_edges_y.begin(), bin_edges_y.end(), -0.5f);
0057     det_desc.bin_edges_x().back().assign(bin_edges_x.begin(),
0058                                          bin_edges_x.end());
0059 
0060     det_desc.bin_edges_y().back().assign(bin_edges_y.begin(),
0061                                          bin_edges_y.end());
0062     det_desc.dimensions()[i] = 2;
0063     det_desc.subspace()[i] = {0, 1};
0064     det_desc.design_id()[i] = static_cast<int>(i);
0065   }
0066 
0067   auto cells_data = vecmem::get_data(cells);
0068   auto clusters = cc(cells_data, vecmem::get_data(det_cond));
0069   EXPECT_EQ(clusters.size(), 4u);
0070 
0071   auto clusters_data = vecmem::get_data(clusters);
0072   auto det_desc_data = vecmem::get_data(det_desc);
0073   auto det_cond_data = vecmem::get_data(det_cond);
0074   auto measurements =
0075       mc(cells_data, clusters_data, det_desc_data, det_cond_data);
0076 
0077   EXPECT_EQ(measurements.size(), 4u);
0078 }