Back to home page

EIC code displayed by LXR

 
 

    


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

0001 /** TRACCC library, part of the ACTS project (R&D line)
0002  *
0003  * (c) 2022-2026 CERN for the benefit of the ACTS project
0004  *
0005  * Mozilla Public License Version 2.0
0006  */
0007 
0008 // Library include(s).
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 // System include(s).
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   // Create device containers for the input variables.
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   // Create the result object.
0036   output_type result(m_mr.get());
0037   result.resize(clusters.size());
0038   edm::measurement_collection::device measurements{vecmem::get_data(result)};
0039 
0040   // Process the clusters one-by-one.
0041   for (decltype(clusters)::size_type i = 0; i < clusters.size(); ++i) {
0042     // Get the cluster and measurement.
0043     const edm::silicon_cluster cluster = clusters.at(i);
0044     edm::measurement measurement = measurements.at(i);
0045 
0046     // A security check.
0047     assert(cluster.cell_indices().empty() == false);
0048 
0049     // Fill measurement from cluster
0050     details::fill_measurement(measurement, cluster, i, cells, det_descr,
0051                               det_cond);
0052   }
0053 
0054   return result;
0055 }
0056 
0057 }  // namespace traccc::host