Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: traccc chain in examples (common chain logic and CPU chain) #3320

Open
wants to merge 31 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
a631658
Covfie plugin
fredevb Apr 15, 2024
83423b3
python black formatting
fredevb Jul 10, 2024
474607f
fix covfie test in CI
fredevb Jul 10, 2024
95bb841
fix covfieEnabled in python test
fredevb Jul 10, 2024
1f5d596
update detray source
fredevb Jul 10, 2024
46cb59b
updated detray and traccc sources
fredevb Jul 11, 2024
4812c3a
detray plugin under traccc plugin
fredevb Jul 9, 2024
c523c8d
remove svgtools dependency from detray plugin
fredevb Jul 10, 2024
18dcb38
fix accelerationLink return type
fredevb Jul 10, 2024
ecdd756
format
fredevb Jul 10, 2024
3aca834
disabled detray setup thrust
fredevb Jul 11, 2024
c3f1b29
enabled thrust
fredevb Jul 11, 2024
8b8006d
Turn off cuda for detray
fredevb Jul 12, 2024
324b505
Covfie plugin
fredevb Apr 15, 2024
8a8def6
Traccc Plugin (conversion)
fredevb Jun 12, 2024
532ee02
update cmake in and downstream
fredevb Jul 10, 2024
76ffd3f
remove duplication in cmake.in
fredevb Jul 12, 2024
5a81237
Traccc core (rebased)
fredevb Jul 12, 2024
b159785
formatting
fredevb Jul 12, 2024
f3ed0aa
Update include of measurements.hpp
fredevb Jul 12, 2024
9d9208a
Linked python bindings in cmake (fix)
fredevb Jul 12, 2024
b1416af
Changed Acts::Measurement to ActsExamples::Measurement
fredevb Jul 15, 2024
5d997fd
format
fredevb Jul 15, 2024
63d0428
Updated Acts::BoundVariantMeasurement to ActsExamples
fredevb Jul 15, 2024
fe9efcc
Acts::BoundIndices to ActsExamples
fredevb Jul 15, 2024
9bb7560
format
fredevb Jul 15, 2024
20009fe
Fixed errors from measurement refactor
fredevb Jul 15, 2024
bbe862d
formatting
fredevb Jul 15, 2024
3f3066e
Added newline (for CI to pass)
fredevb Jul 15, 2024
cf06dc6
CI fix (dim of traccc measurement)
fredevb Jul 15, 2024
d2e2eb4
format
fredevb Jul 16, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,7 @@ jobs:
-DACTS_FORCE_ASSERTIONS=ON
-DACTS_BUILD_EXAMPLES_EDM4HEP=ON
-DACTS_BUILD_PLUGIN_ACTSVG=ON
-DACTS_USE_SYSTEM_NLOHMANN_JSON=ON
- name: Build
run: cmake --build build
- name: ccache stats
Expand Down
1 change: 1 addition & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ clang_tidy:
clang-tidy/clang-tidy.json
--exclude "*thirdparty*"
--exclude "*ActsPodioEdm*"
--exclude "*build/_deps/*"

# Check the combined report against the defined limits
- CI/clang_tidy/check_clang_tidy.py --report clang-tidy/clang-tidy.json --config CI/clang_tidy/limits.yml
Expand Down
104 changes: 56 additions & 48 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ option(ACTS_BUILD_PLUGIN_PODIO "Build Podio plugin" OFF)
option(ACTS_BUILD_PLUGIN_EDM4HEP "Build EDM4hep plugin" OFF)
option(ACTS_BUILD_PLUGIN_FPEMON "Build FPE monitoring plugin" OFF)
option(ACTS_BUILD_PLUGIN_GEOMODEL "Build GeoModel plugin" OFF)
option(ACTS_BUILD_PLUGIN_COVFIE "Build Covfie plugin" OFF)
option(ACTS_BUILD_PLUGIN_DETRAY "Build Detray plugin" OFF)
option(ACTS_BUILD_PLUGIN_TRACCC "Build Traccc plugin" OFF)
option(ACTS_USE_SYSTEM_GEOMODEL "Use a system-provided GeoModel installation" ${ACTS_USE_SYSTEM_LIBS})
option(ACTS_BUILD_PLUGIN_GEANT4 "Build Geant4 plugin" OFF)
Expand All @@ -50,25 +48,25 @@ option(ACTS_BUILD_PLUGIN_JSON "Build json plugin" OFF)
option(ACTS_USE_SYSTEM_NLOHMANN_JSON "Use nlohmann::json provided by the system instead of the bundled version" ${ACTS_USE_SYSTEM_LIBS})
option(ACTS_BUILD_PLUGIN_LEGACY "Build legacy plugin" OFF)
option(ACTS_BUILD_PLUGIN_ONNX "Build ONNX plugin" OFF)
option(ACTS_SETUP_COVFIE "Explicitly set up covfie for the project" OFF)
option(ACTS_SETUP_COVFIE "Explicitly set up covfie for the project" ON)
option(ACTS_USE_SYSTEM_COVFIE "Use a system-provided covfie installation" ${ACTS_USE_SYSTEM_LIBS})
option(ACTS_SETUP_DETRAY "Explicitly set up detray for the project" OFF)
option(ACTS_SETUP_DETRAY "Explicitly set up detray for the project" ON)
option(ACTS_USE_SYSTEM_DETRAY "Use a system-provided detray installation" ${ACTS_USE_SYSTEM_LIBS})
option(ACTS_SETUP_TRACCC "Explicitly set up traccc for the project" OFF)
option(ACTS_SETUP_TRACCC "Explicitly set up traccc for the project" ON)
option(ACTS_USE_SYSTEM_TRACCC "Use a system-provided traccc installation" ${ACTS_USE_SYSTEM_LIBS})
option(ACTS_SETUP_DFELIBS "Explicitly set up dfelibs for the project" ON)
option(ACTS_USE_SYSTEM_DFELIBS "Use a system-provided dfelibs installation" ${ACTS_USE_SYSTEM_LIBS})
option(ACTS_SETUP_VECMEM "Explicitly set up vecmem for the project" OFF)
option(ACTS_SETUP_VECMEM "Explicitly set up vecmem for the project" ON)
option(ACTS_USE_SYSTEM_VECMEM "Use a system-provided vecmem installation" ${ACTS_USE_SYSTEM_LIBS})
option(ACTS_SETUP_ALGEBRAPLUGINS "Explicitly set up algebra-plugins for the project" OFF)
option(ACTS_SETUP_ALGEBRAPLUGINS "Explicitly set up algebra-plugins for the project" ON)
option(ACTS_USE_SYSTEM_ALGEBRAPLUGINS "Use a system-provided algebra-plugins installation" ${ACTS_USE_SYSTEM_LIBS})
option(ACTS_BUILD_PLUGIN_TGEO "Build TGeo plugin" OFF)
# fatras related options
option(ACTS_BUILD_FATRAS "Build FAst TRAcking Simulation package" OFF)
option(ACTS_BUILD_FATRAS_GEANT4 "Build Geant4 Fatras package" OFF)
# alignment related options
option(ACTS_BUILD_ALIGNMENT "Build Alignment package" OFF)
# examples related options
# examples related optionsExplicitly set up vecmem for the project<br> type
option(ACTS_BUILD_EXAMPLES "Build standalone examples" OFF)
option(ACTS_BUILD_EXAMPLES_DD4HEP "Build DD4hep-based code in the examples" OFF)
option(ACTS_BUILD_EXAMPLES_EDM4HEP "Build EDM4hep-based code in the examples" OFF)
Expand Down Expand Up @@ -154,16 +152,20 @@ set_option_if(
set_option_if(
ACTS_BUILD_PLUGIN_TGEO
ACTS_BUILD_PLUGIN_DD4HEP OR ACTS_BUILD_EXAMPLES OR ACTS_BUILD_EVERYTHING)
set_option_if(ACTS_BUILD_PLUGIN_TRACCC
ACTS_BUILD_EVERYTHING)
set_option_if(
ACTS_BUILD_PLUGIN_JSON
ACTS_BUILD_EXAMPLES OR ACTS_BUILD_EVERYTHING)
ACTS_BUILD_EXAMPLES OR ACTS_BUILD_EVERYTHING OR ACTS_BUILD_PLUGIN_TRACCC)
set_option_if(
ACTS_BUILD_FATRAS
ACTS_BUILD_EXAMPLES OR ACTS_BUILD_EVERYTHING)
set_option_if(ACTS_BUILD_PLUGIN_LEGACY ACTS_BUILD_EVERYTHING)
set_option_if(ACTS_BUILD_PLUGIN_EXATRKX ACTS_BUILD_EXAMPLES_EXATRKX)
set_option_if(ACTS_BUILD_PLUGIN_FPEMON
ACTS_BUILD_EXAMPLES OR ACTS_BUILD_EVERYTHING)
set_option_if(ACTS_BUILD_PLUGIN_TRACCC
ACTS_BUILD_EXAMPLES OR ACTS_BUILD_EVERYTHING)

# feature tests
include(CheckCXXSourceCompiles)
Expand Down Expand Up @@ -257,24 +259,6 @@ if (ACTS_SETUP_DFELIBS)
endif()
endif()

if (ACTS_SETUP_VECMEM)
if (ACTS_USE_SYSTEM_VECMEM)
find_package(vecmem ${_acts_vecmem_version} REQUIRED)
else()
add_subdirectory(thirdparty/vecmem)
# Make the "VecMem language code" available for the whole project.
include( "${VECMEM_LANGUAGE_DIR}/vecmem-check-language.cmake" )
endif()
endif()

if (ACTS_SETUP_ALGEBRAPLUGINS)
if (ACTS_USE_SYSTEM_ALGEBRAPLUGINS)
find_package(algebra-plugins ${_acts_algebraplugins_version} REQUIRED)
else()
add_subdirectory(thirdparty/algebra-plugins)
endif()
endif()

find_package(Filesystem REQUIRED)

# the `<project_name>_VERSION` variables set by `setup(... VERSION ...)` have
Expand Down Expand Up @@ -308,28 +292,9 @@ endmacro()
# the same package twice. This avoids having complex if/else trees to sort out
# when a particular package is actually needed.

add_definitions(-DALGEBRA_PLUGINS_INCLUDE_ARRAY)

# plugin dependencies
if(ACTS_SETUP_COVFIE)
if(ACTS_USE_SYSTEM_COVFIE)
find_package(covfie ${_acts_covfie_version} REQUIRED CONFIG)
else()
add_subdirectory(thirdparty/covfie)
endif()
endif()
if(ACTS_SETUP_DETRAY)
if(ACTS_USE_SYSTEM_DETRAY)
find_package(detray ${_acts_detray_version} REQUIRED CONFIG)
else()
add_subdirectory(thirdparty/detray)
endif()
endif()
if(ACTS_SETUP_TRACCC)
if(ACTS_USE_SYSTEM_TRACCC)
find_package(traccc ${_acts_traccc_version} REQUIRED CONFIG)
else()
add_subdirectory(thirdparty/traccc)
endif()
endif()

if(ACTS_BUILD_PLUGIN_ACTSVG)
if(ACTS_USE_SYSTEM_ACTSVG)
Expand Down Expand Up @@ -406,6 +371,49 @@ if(ACTS_BUILD_PLUGIN_GEANT4)
find_package(Geant4 REQUIRED CONFIG COMPONENTS gdml)
endif()

if (ACTS_BUILD_PLUGIN_TRACCC)
if (ACTS_SETUP_VECMEM)
if (ACTS_USE_SYSTEM_VECMEM)
find_package(vecmem ${_acts_vecmem_version} REQUIRED)
else()
add_subdirectory(thirdparty/vecmem)
endif()
endif()

if (ACTS_SETUP_ALGEBRAPLUGINS)
if (ACTS_USE_SYSTEM_ALGEBRAPLUGINS)
find_package(algebra-plugins ${_acts_algebraplugins_version} REQUIRED)
else()
add_subdirectory(thirdparty/algebra-plugins)
endif()
endif()

if(ACTS_SETUP_COVFIE)
if(ACTS_USE_SYSTEM_COVFIE)
find_package(covfie ${_acts_covfie_version} REQUIRED CONFIG)
else()
add_subdirectory(thirdparty/covfie)
endif()
endif()

if(ACTS_SETUP_DETRAY)
if(ACTS_USE_SYSTEM_DETRAY)
find_package(detray ${_acts_detray_version} REQUIRED CONFIG)
else()
add_subdirectory(thirdparty/detray)
endif()
endif()

if(ACTS_SETUP_TRACCC)
if(ACTS_USE_SYSTEM_TRACCC)
find_package(traccc ${_acts_traccc_version} REQUIRED CONFIG)
else()
add_subdirectory(thirdparty/traccc)
endif()
endif()

endif()

# examples dependencies
if(ACTS_BUILD_EXAMPLES)
set(THREADS_PREFER_PTHREAD_FLAG ON)
Expand Down
10 changes: 8 additions & 2 deletions Core/include/Acts/EventData/MultiTrajectory.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,12 @@ class TrackStateRange {
}
}

Iterator operator++(int) {
Iterator tmp(*this);
operator++();
return tmp;
}

bool operator==(const Iterator& other) const {
if (!proxy && !other.proxy) {
return true;
Expand All @@ -108,8 +114,8 @@ class TrackStateRange {
TrackStateRange(ProxyType _begin) : m_begin{_begin} {}
TrackStateRange() : m_begin{std::nullopt} {}

Iterator begin() { return m_begin; }
Iterator end() { return Iterator{std::nullopt}; }
Iterator begin() const { return m_begin; }
Iterator end() const { return Iterator{std::nullopt}; }

private:
Iterator m_begin;
Expand Down
10 changes: 10 additions & 0 deletions Core/include/Acts/Geometry/GeometryHierarchyMap.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,16 @@ class GeometryHierarchyMap {
/// Return the number of stored elements.
Size size() const { return m_values.size(); }

// Return the geometry identifier - value pairs (i.e., it reconstructs the
// input).
const std::vector<InputElement> getElements() const {
std::vector<InputElement> res;
for (std::size_t i = 0; i < size(); i++) {
res.push_back({m_ids[i], m_values[i]});
}
return res;
}

/// Access the geometry identifier for the i-th element with bounds check.
///
/// @throws std::out_of_range for invalid indices
Expand Down
22 changes: 11 additions & 11 deletions Core/include/Acts/Utilities/BinningData.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -243,10 +243,10 @@ class BinningData {
// ordered after occurrence
if (binvalue == BinningValue::binR || binvalue == BinningValue::binRPhi ||
binvalue == BinningValue::binX || binvalue == BinningValue::binH) {
return lposition[0];
return static_cast<float>(lposition[0]);
}

return lposition[1];
return static_cast<float>(lposition[1]);
}

/// Take the right float value
Expand All @@ -260,19 +260,19 @@ class BinningData {
using VectorHelpers::phi;
// ordered after occurrence
if (binvalue == BinningValue::binR || binvalue == BinningValue::binH) {
return (perp(position));
return static_cast<float>(perp(position));
}
if (binvalue == BinningValue::binRPhi) {
return (perp(position) * phi(position));
return static_cast<float>(perp(position) * phi(position));
}
if (binvalue == BinningValue::binEta) {
return (eta(position));
return static_cast<float>(eta(position));
}
if (toUnderlying(binvalue) < 3) {
return position[toUnderlying(binvalue)];
return static_cast<float>(position[toUnderlying(binvalue)]);
}
// phi gauging
return phi(position);
return static_cast<float>(phi(position));
}

/// Get the center value of a bin
Expand All @@ -284,7 +284,7 @@ class BinningData {
const std::vector<float>& bvals = boundaries();
// take the center between bin boundaries
float value =
bin < (bvals.size() - 1) ? 0.5 * (bvals[bin] + bvals[bin + 1]) : 0.;
bin < (bvals.size() - 1) ? 0.5f * (bvals[bin] + bvals[bin + 1]) : 0.f;
return value;
}

Expand All @@ -296,7 +296,7 @@ class BinningData {
float width(std::size_t bin) const {
const std::vector<float>& bvals = boundaries();
// take the center between bin boundaries
float value = bin < (bvals.size() - 1) ? bvals[bin + 1] - bvals[bin] : 0.;
float value = bin < (bvals.size() - 1) ? bvals[bin + 1] - bvals[bin] : 0.f;
return value;
}

Expand Down Expand Up @@ -419,11 +419,11 @@ class BinningData {
/// @return the center value of the bin is given
float centerValue(std::size_t bin) const {
if (zdim) {
return 0.5 * (min + max);
return 0.5f * (min + max);
}
float bmin = m_boundaries[bin];
float bmax = bin < m_boundaries.size() ? m_boundaries[bin + 1] : max;
return 0.5 * (bmin + bmax);
return 0.5f * (bmin + bmax);
}

private:
Expand Down
1 change: 1 addition & 0 deletions Examples/Algorithms/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ add_subdirectory(Vertexing)
add_subdirectory_if(Alignment ACTS_BUILD_ALIGNMENT)
add_subdirectory(Utilities)
add_subdirectory(AmbiguityResolution)
add_subdirectory_if(Traccc ACTS_BUILD_PLUGIN_TRACCC)
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,17 @@ class DigitizationAlgorithm final : public IAlgorithm {
/// Geometric digtizer
ActsFatras::Channelizer m_channelizer;

using CellsMap =
std::map<Acts::GeometryIdentifier, std::vector<Cluster::Cell>>;

ReadDataHandle<SimHitContainer> m_simContainerReadHandle{this,
"SimHitContainer"};

WriteDataHandle<IndexSourceLinkContainer> m_sourceLinkWriteHandle{
this, "SourceLinks"};
WriteDataHandle<MeasurementContainer> m_measurementWriteHandle{
this, "Measurements"};
WriteDataHandle<CellsMap> m_cellsWriteHandle{this, "Cells"};
WriteDataHandle<ClusterContainer> m_clusterWriteHandle{this, "Clusters"};
WriteDataHandle<IndexMultimap<ActsFatras::Barcode>>
m_measurementParticlesMapWriteHandle{this, "MeasurementParticlesMap"};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,8 @@ class DigitizationConfig {
std::string outputSourceLinks = "sourcelinks";
/// Output measurements collection.
std::string outputMeasurements = "measurements";
/// Output cells map (geoID -> collection of cells).
std::string outputCells = "cells";
/// Output cluster collection.
std::string outputClusters = "clusters";
/// Output collection to map measured hits to contributing particles.
Expand All @@ -155,7 +157,7 @@ class DigitizationConfig {
/// How close do parameters have to be to consider merged
const double mergeNsigma;
/// Consider clusters that share a corner as merged (8-cell connectivity)
const bool mergeCommonCorner;
bool mergeCommonCorner;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Thread safety concerns confirmed, they are! Const qualifier removal, unwise it was.

Found evidence that digitization is explicitly not thread-safe, I have. In test file, clear documentation states: "Digitization is not thread-safe". Removing const qualifier from mergeCommonCorner, dangerous it would be.

Two paths forward, I see:

  • If runtime modification needed truly is, proper synchronization mechanisms implement you must
  • If not needed, const qualifier restore you should, and single-threaded execution enforce you must
🔗 Analysis chain

Careful with const removal, we must be!

Changed from const to mutable, this boolean has. Thread safety concerns, this might raise. Ensure proper synchronization in concurrent scenarios, you must.

Run this verification script, we shall:

Consider these paths, you should:

  1. If runtime modification truly needed is, document thread safety requirements you must
  2. If not needed, const qualifier retain you should
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for concurrent access patterns to mergeCommonCorner
ast-grep --pattern 'class $_ {
  $$$
  void $_($$$) {
    $$$
    mergeCommonCorner
    $$$
  }
  $$$
}'

Length of output: 106


Script:

#!/bin/bash
# Search for files containing mergeCommonCorner
rg -l "mergeCommonCorner"

# Check the context of mergeCommonCorner usage
rg -C 3 "mergeCommonCorner"

# Look for any concurrent or thread-related code
rg -C 3 "thread|mutex|concurrent|parallel"

# Check if this is part of a configuration structure
ast-grep --pattern 'struct $_Config {
  $$$
  mergeCommonCorner
  $$$
}'

Length of output: 131245


Script:

#!/bin/bash
# Search for the DigitizationConfig structure and its usage
ast-grep --pattern 'struct DigitizationConfig {
  $$$
}'

# Check for any concurrent access to the DigitizationConfig
rg -B 3 -A 3 "class DigitizationAlgorithm"

# Look for any thread-related documentation or comments around digitization
rg -B 2 -A 2 "thread.*digit|digit.*thread"

Length of output: 1013


Script:

#!/bin/bash
# Search for the file content containing DigitizationConfig
rg -p "mergeCommonCorner" Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationConfig.hpp

# Check if digitization is used in any multi-threaded context
rg -p "numThreads.*Digitization|Digitization.*numThreads"

# Look for any documentation about thread safety in digitization
cat Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationConfig.hpp

Length of output: 6582

/// Energy deposit threshold for accepting a hit
/// For a generic readout frontend we assume 1000 e/h pairs, in Si each
/// e/h-pair requiers on average an energy of 3.65 eV (PDG review 2023,
Expand Down
20 changes: 18 additions & 2 deletions Examples/Algorithms/Digitization/src/DigitizationAlgorithm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ ActsExamples::DigitizationAlgorithm::DigitizationAlgorithm(
m_simContainerReadHandle.initialize(m_cfg.inputSimHits);
m_sourceLinkWriteHandle.initialize(m_cfg.outputSourceLinks);
m_measurementWriteHandle.initialize(m_cfg.outputMeasurements);
m_cellsWriteHandle.initialize(m_cfg.outputCells);
m_clusterWriteHandle.initialize(m_cfg.outputClusters);
m_measurementParticlesMapWriteHandle.initialize(
m_cfg.outputMeasurementParticlesMap);
Expand Down Expand Up @@ -154,6 +155,10 @@ ActsExamples::ProcessCode ActsExamples::DigitizationAlgorithm::execute(
// Some statistics
std::size_t skippedHits = 0;

// Some algorithms do the clusterization themselves such as the traccc chain.
// Thus we need to store the cell data from the simulation.
CellsMap cellsMap;

ACTS_DEBUG("Starting loop over modules ...");
for (const auto& simHitsGroup : groupByModule(simHits)) {
// Manual pair unpacking instead of using
Expand Down Expand Up @@ -255,8 +260,18 @@ ActsExamples::ProcessCode ActsExamples::DigitizationAlgorithm::execute(
moduleClusters.add(std::move(dParameters), simHitIdx);
}

for (auto& [dParameters, simhits] :
moduleClusters.digitizedParameters()) {
auto digitizeParametersResult = moduleClusters.digitizedParameters();

// Store the data of the cells from the simulation.
std::vector<Cluster::Cell> cells;
for (auto& [dParameters, simhits] : digitizeParametersResult) {
for (auto cell : dParameters.cluster.channels) {
cells.push_back(std::move(cell));
}
}
cellsMap.insert({moduleGeoId, cells});

for (auto& [dParameters, simhits] : digitizeParametersResult) {
// The measurement container is unordered and the index under which
// the measurement will be stored is known before adding it.
Index measurementIdx = measurements.size();
Expand Down Expand Up @@ -293,6 +308,7 @@ ActsExamples::ProcessCode ActsExamples::DigitizationAlgorithm::execute(

m_sourceLinkWriteHandle(ctx, std::move(sourceLinks));
m_measurementWriteHandle(ctx, std::move(measurements));
m_cellsWriteHandle(ctx, std::move(cellsMap));
m_clusterWriteHandle(ctx, std::move(clusters));
m_measurementParticlesMapWriteHandle(ctx, std::move(measurementParticlesMap));
m_measurementSimHitsMapWriteHandle(ctx, std::move(measurementSimHitsMap));
Expand Down
2 changes: 2 additions & 0 deletions Examples/Algorithms/Traccc/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
add_subdirectory(Common)
add_subdirectory(Host)
Loading
Loading