File indexing completed on 2026-07-26 08:22:27
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "tests/cca_test.hpp"
0010 #include "traccc/definitions/common.hpp"
0011 #include "traccc/geometry/detector_conditions_description.hpp"
0012 #include "traccc/geometry/detector_design_description.hpp"
0013 #include "traccc/performance/collection_comparator.hpp"
0014 #include "traccc/sycl/clusterization/clusterization_algorithm.hpp"
0015
0016
0017 #include <vecmem/memory/sycl/shared_memory_resource.hpp>
0018 #include <vecmem/utils/sycl/copy.hpp>
0019
0020
0021 #include <gtest/gtest.h>
0022
0023 using namespace traccc;
0024
0025 TEST(SYCLClustering, SingleModule) {
0026
0027 vecmem::sycl::queue_wrapper vecmem_queue;
0028 traccc::sycl::queue_wrapper traccc_queue{vecmem_queue.queue()};
0029 std::cout << "Running on device: " << vecmem_queue.device_name() << "\n";
0030
0031
0032 vecmem::sycl::shared_memory_resource shared_mr{vecmem_queue};
0033 traccc::memory_resource mr{shared_mr};
0034
0035
0036 vecmem::sycl::copy copy{vecmem_queue};
0037
0038
0039 traccc::edm::silicon_cell_collection::host cells{shared_mr};
0040 cells.reserve(8u);
0041 cells.push_back({1u, 2u, 1.f, 0.f, 0u});
0042 cells.push_back({2u, 2u, 1.f, 0.f, 0u});
0043 cells.push_back({3u, 2u, 1.f, 0.f, 0u});
0044 cells.push_back({6u, 4u, 1.f, 0.f, 0u});
0045 cells.push_back({5u, 5u, 1.f, 0.f, 0u});
0046 cells.push_back({6u, 5u, 1.f, 0.f, 0u});
0047 cells.push_back({7u, 5u, 1.f, 0.f, 0u});
0048 cells.push_back({6u, 6u, 1.f, 0.f, 0u});
0049
0050
0051 traccc::detector_design_description::host det_desc{shared_mr};
0052 traccc::detector_conditions_description::host det_cond{shared_mr};
0053 det_desc.resize(1u);
0054 det_cond.resize(1u);
0055 det_desc.bin_edges_x()[0] = {0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f};
0056 det_desc.bin_edges_y()[0] = {0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f};
0057 det_desc.dimensions()[0] = 2;
0058 det_cond.geometry_id()[0] = detray::geometry::identifier{0u};
0059 det_cond.measurement_translation()[0] = {0.f, 0.f};
0060
0061
0062 traccc::sycl::clusterization_algorithm ca_sycl(mr, copy, traccc_queue,
0063 default_ccl_test_config());
0064
0065 auto measurements_buffer =
0066 ca_sycl(vecmem::get_data(cells), vecmem::get_data(det_desc),
0067 vecmem::get_data(det_cond));
0068
0069 edm::measurement_collection::device measurements(measurements_buffer);
0070
0071
0072 EXPECT_EQ(copy.get_size(measurements_buffer), 2u);
0073
0074 edm::measurement_collection::host references{shared_mr};
0075 references.push_back({{2.5f, 2.5f},
0076 {0.75f, 0.0833333f},
0077 2u,
0078 0.f,
0079 0.f,
0080 0u,
0081 detray::geometry::identifier{0u},
0082 {1u, 1u},
0083 0u});
0084 references.push_back({{6.5f, 5.5f},
0085 {0.483333f, 0.483333f},
0086 2u,
0087 0.f,
0088 0.f,
0089 0u,
0090 detray::geometry::identifier{0u},
0091 {1u, 1u},
0092 1u});
0093
0094 for (unsigned int i = 0; i < measurements.size(); ++i) {
0095 const auto test = measurements.at(i);
0096
0097 auto iso = traccc::details::is_same_object<
0098 edm::measurement_collection::const_device::object_type>(test, 0.0001f);
0099 bool matched = false;
0100
0101 for (std::size_t j = 0; j < references.size(); ++j) {
0102 const auto ref = references.at(j);
0103 if (iso(ref)) {
0104 matched = true;
0105 break;
0106 }
0107 }
0108
0109 ASSERT_TRUE(matched);
0110 }
0111 }