File indexing completed on 2026-07-26 08:22:23
0001
0002
0003
0004
0005
0006
0007
0008
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
0016 #include "tests/cca_test.hpp"
0017
0018
0019 #include <optional>
0020
0021 #include <vecmem/memory/host_memory_resource.hpp>
0022
0023
0024 #include <gtest/gtest.h>
0025
0026
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 }
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);