File indexing completed on 2026-07-26 08:22:02
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "traccc/clusterization/measurement_creation_algorithm.hpp"
0010
0011 #include "traccc/clusterization/details/measurement_creation.hpp"
0012 #include "traccc/definitions/primitives.hpp"
0013
0014
0015 #include <cassert>
0016
0017 namespace traccc::host {
0018
0019 measurement_creation_algorithm::measurement_creation_algorithm(
0020 vecmem::memory_resource &mr, std::unique_ptr<const Logger> logger)
0021 : messaging(std::move(logger)), m_mr(mr) {}
0022
0023 measurement_creation_algorithm::output_type
0024 measurement_creation_algorithm::operator()(
0025 const edm::silicon_cell_collection::const_view &cells_view,
0026 const edm::silicon_cluster_collection::const_view &clusters_view,
0027 const detector_design_description::const_view &dmd_view,
0028 const detector_conditions_description::const_view &dcd_view) const {
0029
0030 const edm::silicon_cell_collection::const_device cells{cells_view};
0031 const edm::silicon_cluster_collection::const_device clusters{clusters_view};
0032 const detector_design_description::const_device det_descr{dmd_view};
0033 const detector_conditions_description::const_device det_cond{dcd_view};
0034
0035
0036 output_type result(m_mr.get());
0037 result.resize(clusters.size());
0038 edm::measurement_collection::device measurements{vecmem::get_data(result)};
0039
0040
0041 for (decltype(clusters)::size_type i = 0; i < clusters.size(); ++i) {
0042
0043 const edm::silicon_cluster cluster = clusters.at(i);
0044 edm::measurement measurement = measurements.at(i);
0045
0046
0047 assert(cluster.cell_indices().empty() == false);
0048
0049
0050 details::fill_measurement(measurement, cluster, i, cells, det_descr,
0051 det_cond);
0052 }
0053
0054 return result;
0055 }
0056
0057 }