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-2026 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/clusterization_algorithm.hpp"
0010 #include "traccc/definitions/primitives.hpp"
0011 #include "traccc/edm/silicon_cell_collection.hpp"
0012 #include "traccc/geometry/detector_conditions_description.hpp"
0013 #include "traccc/geometry/detector_design_description.hpp"
0014 
0015 // Test include(s).
0016 #include "tests/cca_test.hpp"
0017 
0018 // VecMem include(s).
0019 #include <optional>
0020 
0021 #include <vecmem/memory/host_memory_resource.hpp>
0022 
0023 // GTest include(s).
0024 #include <gtest/gtest.h>
0025 
0026 // System include(s).
0027 #include <functional>
0028 
0029 namespace {
0030 vecmem::host_memory_resource resource;
0031 traccc::host::sparse_ccl_algorithm cc(resource);
0032 traccc::host::measurement_creation_algorithm mc(resource);
0033 
0034 cca_function_t f =
0035     [](const traccc::edm::silicon_cell_collection::host& cells,
0036        const traccc::detector_design_description::host& det_desc,
0037        const traccc::detector_conditions_description::host& det_cond)
0038     -> std::pair<std::map<traccc::geometry_id,
0039                           traccc::edm::measurement_collection::host>,
0040                  std::optional<traccc::edm::silicon_cluster_collection::host>> {
0041   std::map<traccc::geometry_id, traccc::edm::measurement_collection::host>
0042       result;
0043 
0044   const traccc::edm::silicon_cell_collection::const_data cells_data =
0045       vecmem::get_data(cells);
0046   const traccc::detector_design_description::const_data det_desc_data =
0047       vecmem::get_data(det_desc);
0048   const traccc::detector_conditions_description::const_data det_cond_data =
0049       vecmem::get_data(det_cond);
0050   const auto clusters = cc(cells_data, det_cond_data);
0051   const auto clusters_data = vecmem::get_data(clusters);
0052   auto measurements =
0053       mc(cells_data, clusters_data, det_desc_data, det_cond_data);
0054 
0055   for (std::size_t i = 0; i < measurements.size(); i++) {
0056     if (result.contains(measurements.at(i).surface_link().value()) == false) {
0057       result.insert({measurements.at(i).surface_link().value(),
0058                      traccc::edm::measurement_collection::host{resource}});
0059     }
0060     result.at(measurements.at(i).surface_link().value())
0061         .push_back(measurements.at(i));
0062   }
0063 
0064   return {std::move(result), std::nullopt};
0065 };
0066 }  // namespace
0067 
0068 TEST_P(ConnectedComponentAnalysisTests, Run) {
0069   test_connected_component_analysis(GetParam());
0070 }
0071 
0072 INSTANTIATE_TEST_SUITE_P(
0073     SparseCclAlgorithm, ConnectedComponentAnalysisTests,
0074     ::testing::Combine(
0075         ::testing::Values(f),
0076         ::testing::ValuesIn(ConnectedComponentAnalysisTests::get_test_files())),
0077     ConnectedComponentAnalysisTests::get_test_name);