From 9996fd101952cb203584138af9753954512fc7a4 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Mon, 23 Sep 2024 20:58:40 +0200 Subject: [PATCH 001/101] refactor!: SourceLink setting only via rvalue reference (#3488) Follow up to #3466 that has breaking changes to the API. --- Core/include/Acts/EventData/MultiTrajectory.hpp | 7 ++----- Core/include/Acts/EventData/TrackStateProxy.hpp | 17 ++--------------- 2 files changed, 4 insertions(+), 20 deletions(-) diff --git a/Core/include/Acts/EventData/MultiTrajectory.hpp b/Core/include/Acts/EventData/MultiTrajectory.hpp index 446348a6ae0..0499f66bc6a 100644 --- a/Core/include/Acts/EventData/MultiTrajectory.hpp +++ b/Core/include/Acts/EventData/MultiTrajectory.hpp @@ -698,13 +698,10 @@ class MultiTrajectory { self().allocateCalibrated_impl(istate, measdim); } - // This function will move to an rvalue reference in the next major version - template - void setUncalibratedSourceLink(IndexType istate, source_link_t&& sourceLink) + void setUncalibratedSourceLink(IndexType istate, SourceLink&& sourceLink) requires(!ReadOnly) { - self().setUncalibratedSourceLink_impl( - istate, std::forward(sourceLink)); + self().setUncalibratedSourceLink_impl(istate, std::move(sourceLink)); } SourceLink getUncalibratedSourceLink(IndexType istate) const { diff --git a/Core/include/Acts/EventData/TrackStateProxy.hpp b/Core/include/Acts/EventData/TrackStateProxy.hpp index 8e62d07f2eb..7b90e0a1ac9 100644 --- a/Core/include/Acts/EventData/TrackStateProxy.hpp +++ b/Core/include/Acts/EventData/TrackStateProxy.hpp @@ -767,25 +767,12 @@ class TrackStateProxy { /// @return The uncalibrated measurement source link SourceLink getUncalibratedSourceLink() const; - // This function will move to an rvalue reference in the next major version /// Set an uncalibrated source link /// @param sourceLink The uncalibrated source link to set - template - void setUncalibratedSourceLink(source_link_t&& sourceLink) + void setUncalibratedSourceLink(SourceLink&& sourceLink) requires(!ReadOnly) { - m_traj->setUncalibratedSourceLink(m_istate, - std::forward(sourceLink)); - } - - /// Set an uncalibrated source link - /// @param sourceLink The uncalibrated source link to set - /// @note Use the overload with an rvalue reference, this - /// overload will be removed ith the next major version - void setUncalibratedSourceLink(const SourceLink& sourceLink) - requires(!ReadOnly) - { - m_traj->setUncalibratedSourceLink(m_istate, SourceLink{sourceLink}); + m_traj->setUncalibratedSourceLink(m_istate, std::move(sourceLink)); } /// Check if the point has an associated uncalibrated measurement. From ee0b2f447e1657c5ee3e0f3f9c87a755c41dddbc Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Mon, 23 Sep 2024 21:49:08 +0200 Subject: [PATCH 002/101] docs: Add minimal Spack spec for ACTS core (#3638) The current Spack documentation recommends a Spack spec which can be used to build ACTS and all its plugins; this is useful but, as we encountered over the weekend, also takes a lot of build time. As such, I wanted to add additional instructions for a simplified Spack build which only allows you to build the core ACTS library. --- docs/misc/spack.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/docs/misc/spack.md b/docs/misc/spack.md index e6706be7e9c..f71c4be762a 100644 --- a/docs/misc/spack.md +++ b/docs/misc/spack.md @@ -33,22 +33,30 @@ the environment every time you open a new shell. With the Spack environment activated, you are ready to install ACTS' dependencies. You can either do this manually, or you can rely on Spack's definition of how to do this. To use the Spack definition, execute the -following command (tuned for ACTS version 36.1.0): +following command (tuned for ACTS version 36.1.0; make sure you update the +version number to match the version of ACTS you want to build): + +```console +$ spack install --add --only dependencies "acts@36.1.0" +``` + +This specification will suffice to build the core ACTS library. If you want to +build ACTS plugins, you will need to add additional _variants_; the following +is a spec which can be used to build ACTS and all its plugins: ```console $ spack install --add --only dependencies "acts@36.1.0+tgeo+geomodel+podio+edm4hep+examples+odd+fatras+json+dd4hep+geant4+fatras_geant4+hepmc3+pythia8+python+svg+traccc" ``` -The string starting with `acts` in the command above is the so-called _spec_, +The string starting with `acts` in the commands above is the so-called _spec_, and it consists of three parts. The first part is the name of the package, which is `acts`. The second part is the version of the package, in this case `36.1.0`; Spack will pull in a set of dependencies suitable for that given version, so it is recommended to tune the version number to match the version of ACTS you want to build. The final part is a series of variants, marked with the `+` symbol. The command above allows you to build virtually all components -of ACTS, but it also pulls in a large number of dependencies. You can -optionally remove variants you do not need in order to speed up the Spack -build. +of ACTS, but it also pulls in a large number of dependencies. You can remove +variants you do not need in order to speed up the Spack build. Once Spack has concretized and installed the ACTS dependencies, you can build ACTS as normal using CMake. From f404ca2fa85ab545442f2d5680017a1205e39678 Mon Sep 17 00:00:00 2001 From: Stephen Nicholas Swatman Date: Mon, 23 Sep 2024 23:21:58 +0200 Subject: [PATCH 003/101] build: Update traccc to v0.16.0 (#3634) This commit updates traccc to version 0.16.0 and, with it, detray to v0.75.2. --- CMakeLists.txt | 8 +++- .../ActsExamples/Traccc/DetrayPropagator.hpp | 2 +- Examples/Python/src/Traccc.cpp | 5 ++- Plugins/Detray/CMakeLists.txt | 3 +- cmake/ActsConfig.cmake.in | 1 + cmake/ActsExternSources.cmake | 4 +- thirdparty/detray/CMakeLists.txt | 17 +++++++- thirdparty/traccc/CMakeLists.txt | 7 +--- thirdparty/traccc/warnings.diff | 40 ------------------- 9 files changed, 32 insertions(+), 55 deletions(-) delete mode 100644 thirdparty/traccc/warnings.diff diff --git a/CMakeLists.txt b/CMakeLists.txt index 2444a405ab6..75bb59c4336 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -168,6 +168,10 @@ set_option_if( ACTS_BUILD_PLUGIN_JSON ACTS_BUILD_PLUGIN_TRACCC ) +set_option_if( + ACTS_BUILD_PLUGIN_ACTSVG + ACTS_BUILD_PLUGIN_TRACCC +) set_option_if( ACTS_BUILD_PLUGIN_HASHING ACTS_BUILD_EXAMPLES_HASHING @@ -237,8 +241,8 @@ set(_acts_root_version 6.20) set(_acts_tbb_version 2020.1) set(_acts_pythia8_version 8.309) set(_acts_pybind11_version 2.13.1) -set(_acts_detray_version 0.72.1) -set(_acts_traccc_version 0.15.0) +set(_acts_detray_version 0.75.2) +set(_acts_traccc_version 0.16.0) set(_acts_covfie_version 0.10.0) set(_acts_vecmem_version 1.4.0) set(_acts_algebraplugins_version 0.22.0) diff --git a/Examples/Algorithms/Traccc/include/ActsExamples/Traccc/DetrayPropagator.hpp b/Examples/Algorithms/Traccc/include/ActsExamples/Traccc/DetrayPropagator.hpp index 8c42ecbeab0..8e7e415fa4e 100644 --- a/Examples/Algorithms/Traccc/include/ActsExamples/Traccc/DetrayPropagator.hpp +++ b/Examples/Algorithms/Traccc/include/ActsExamples/Traccc/DetrayPropagator.hpp @@ -17,7 +17,7 @@ #include "ActsExamples/Traccc/DetrayStore.hpp" #include -#include +#include namespace ActsExamples { diff --git a/Examples/Python/src/Traccc.cpp b/Examples/Python/src/Traccc.cpp index d620a5584f7..e5a5f22be7e 100644 --- a/Examples/Python/src/Traccc.cpp +++ b/Examples/Python/src/Traccc.cpp @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include @@ -72,7 +71,9 @@ void addTraccc(Context& ctx) { // Navigation with inspection using DetrayNavigator = - detray::navigator; + detray::navigator; // Line stepper using DetrayLineStepper = detray::line_stepper; diff --git a/Plugins/Detray/CMakeLists.txt b/Plugins/Detray/CMakeLists.txt index 79d56b37cf0..470315de788 100644 --- a/Plugins/Detray/CMakeLists.txt +++ b/Plugins/Detray/CMakeLists.txt @@ -24,7 +24,8 @@ target_link_libraries( detray::core detray::core_array detray::io - detray::utils + detray::detectors + detray::test_utils vecmem::core ) diff --git a/cmake/ActsConfig.cmake.in b/cmake/ActsConfig.cmake.in index ee68567d7d2..b66c5ae3544 100644 --- a/cmake/ActsConfig.cmake.in +++ b/cmake/ActsConfig.cmake.in @@ -103,6 +103,7 @@ if(PluginDetray IN_LIST Acts_COMPONENTS) find_dependency(vecmem @vecmem_VERSION@ CONFIG EXACT) find_dependency(covfie @cofvie_VERSION@ CONFIG EXACT) find_dependency(algebra-plugins @algebra-plugins_VERSION@ CONFIG EXACT) + find_dependency(actsvg @actsvg_VERSION@ CONFIG EXACT) find_dependency(detray @detray_VERSION@ CONFIG EXACT) endif() diff --git a/cmake/ActsExternSources.cmake b/cmake/ActsExternSources.cmake index c5b332e7316..3352fec959a 100644 --- a/cmake/ActsExternSources.cmake +++ b/cmake/ActsExternSources.cmake @@ -27,14 +27,14 @@ set(ACTS_COVFIE_SOURCE mark_as_advanced(ACTS_COVFIE_SOURCE) set(ACTS_DETRAY_SOURCE - "URL;https://github.com/acts-project/detray/archive/refs/tags/v${_acts_detray_version}.tar.gz;URL_HASH;SHA256=6cc8d34bc0d801338e9ab142c4a9884d19d9c02555dbb56972fab86b98d0f75b" + "URL;https://github.com/acts-project/detray/archive/refs/tags/v${_acts_detray_version}.tar.gz;URL_HASH;SHA256=249066c138eac4114032e8d558f3a05885140a809332a347c7667978dbff54ee" CACHE STRING "Source to take DETRAY from" ) mark_as_advanced(ACTS_DETRAY_SOURCE) set(ACTS_TRACCC_SOURCE - "URL;https://github.com/acts-project/traccc/archive/refs/tags/v${_acts_traccc_version}.tar.gz;URL_HASH;SHA256=1a9a1d0d2f6c4a7773eae3119b1e044fb52031ca49dfc88e6dc4ab8a11df167e" + "URL;https://github.com/acts-project/traccc/archive/refs/tags/v${_acts_traccc_version}.tar.gz;URL_HASH;SHA256=86e0ebe7364d3a2106301d50a89feef583470da53c9dae6d1430dcc6eda7dba9" CACHE STRING "Source to take TRACCC from" ) diff --git a/thirdparty/detray/CMakeLists.txt b/thirdparty/detray/CMakeLists.txt index c24b260b0ff..5b2bcee1d59 100644 --- a/thirdparty/detray/CMakeLists.txt +++ b/thirdparty/detray/CMakeLists.txt @@ -30,16 +30,31 @@ set(DETRAY_CUSTOM_SCALARTYPE "Scalar type to use in the Detray code" ) -set(DETRAY_BUILD_TESTING +set(DETRAY_BUILD_TEST_UTILS + ON + CACHE BOOL + "Turn on the build of the Detray test utilities" +) +set(DETRAY_BUILD_UNITTESTS OFF CACHE BOOL "Turn off the build of the Detray unit tests" ) +set(DETRAY_BUILD_INTEGRATIONTESTS + OFF + CACHE BOOL + "Turn off the build of the Detray integration tests" +) set(DETRAY_BUILD_TUTORIALS OFF CACHE BOOL "Turn off the build of the Detray tutorials" ) +set(DETRAY_BUILD_BENCHMARKS + OFF + CACHE BOOL + "Turn off the build of the Detray benchmarks" +) set(DETRAY_EIGEN_PLUGIN ON CACHE BOOL diff --git a/thirdparty/traccc/CMakeLists.txt b/thirdparty/traccc/CMakeLists.txt index 6271b5ef0c3..705593f34d8 100644 --- a/thirdparty/traccc/CMakeLists.txt +++ b/thirdparty/traccc/CMakeLists.txt @@ -15,12 +15,7 @@ message(STATUS "Building traccc as part of the Acts project") set(TRACCC_VERSION "${_acts_traccc_version}") # Declare where to get traccc from. -FetchContent_Declare( - traccc - ${ACTS_TRACCC_SOURCE} - # Needed until https://github.com/acts-project/traccc/pull/682 and https://github.com/acts-project/traccc/pull/683 are deployed - PATCH_COMMAND patch -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/warnings.diff -) +FetchContent_Declare(traccc ${ACTS_TRACCC_SOURCE}) if(ACTS_CUSTOM_SCALARTYPE) set(ACTS_TRACCC_SCALARTYPE ${ACTS_CUSTOM_SCALARTYPE}) diff --git a/thirdparty/traccc/warnings.diff b/thirdparty/traccc/warnings.diff deleted file mode 100644 index 78fa1f37118..00000000000 --- a/thirdparty/traccc/warnings.diff +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/core/include/traccc/seeding/spacepoint_binning_helper.hpp b/core/include/traccc/seeding/spacepoint_binning_helper.hpp -index 56a068d4..5a4f2ff2 100644 ---- a/core/include/traccc/seeding/spacepoint_binning_helper.hpp -+++ b/core/include/traccc/seeding/spacepoint_binning_helper.hpp -@@ -99,7 +99,8 @@ inline std::pair, detray::axis2::regular<>> get_axes( - - scalar zBinSize = grid_config.cotThetaMax * grid_config.deltaRMax; - detray::dindex zBins = std::max( -- 1, (int)std::floor((grid_config.zMax - grid_config.zMin) / zBinSize)); -+ 1, static_cast( -+ std::floor((grid_config.zMax - grid_config.zMin) / zBinSize))); - - detray::axis2::regular m_z_axis{zBins, grid_config.zMin, grid_config.zMax, - mr}; -diff --git a/io/src/csv/read_cells.cpp b/io/src/csv/read_cells.cpp -index a80d8f92..1451202f 100644 ---- a/io/src/csv/read_cells.cpp -+++ b/io/src/csv/read_cells.cpp -@@ -58,7 +58,7 @@ traccc::cell_module get_module(const std::uint64_t geometry_id, - } - - // Set the value on the module description. -- result.placement = (*geom)[result.surface_link.value()]; -+ result.placement = geom->at(result.surface_link.value()); - } - - // Find/set the digitization configuration of the detector module. -diff --git a/io/src/csv/read_spacepoints.cpp b/io/src/csv/read_spacepoints.cpp -index b2a38aba..41922683 100644 ---- a/io/src/csv/read_spacepoints.cpp -+++ b/io/src/csv/read_spacepoints.cpp -@@ -59,7 +59,7 @@ void read_spacepoints(spacepoint_reader_output& out, std::string_view filename, - m[iohit.geometry_id] = link; - cell_module mod; - mod.surface_link = detray::geometry::barcode{iohit.geometry_id}; -- mod.placement = geom[iohit.geometry_id]; -+ mod.placement = geom.at(iohit.geometry_id); - result_modules.push_back(mod); - } - From 9ee3a10813e1ecf00d6fbe36e4872dbb33791536 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Tue, 24 Sep 2024 09:03:14 +0200 Subject: [PATCH 004/101] refactor: Remove Sequencer dataflow override (#3625) This option does more harm than it does good, so I propose we remove it altogether. --- .../Framework/include/ActsExamples/Framework/Sequencer.hpp | 3 --- Examples/Framework/src/Framework/Sequencer.cpp | 4 ---- Examples/Python/src/Framework.cpp | 1 - 3 files changed, 8 deletions(-) diff --git a/Examples/Framework/include/ActsExamples/Framework/Sequencer.hpp b/Examples/Framework/include/ActsExamples/Framework/Sequencer.hpp index bb332145ae6..460580e5f97 100644 --- a/Examples/Framework/include/ActsExamples/Framework/Sequencer.hpp +++ b/Examples/Framework/include/ActsExamples/Framework/Sequencer.hpp @@ -82,9 +82,6 @@ class Sequencer { /// Callback that is invoked in the event loop. /// @warning This function can be called from multiple threads and should therefore be thread-safe IterationCallback iterationCallback = []() {}; - /// Run data flow consistency checks - /// Defaults to false right now until all components are migrated - bool runDataFlowChecks = true; bool trackFpes = true; std::vector fpeMasks{}; diff --git a/Examples/Framework/src/Framework/Sequencer.cpp b/Examples/Framework/src/Framework/Sequencer.cpp index ccd5007e307..908f202bfb2 100644 --- a/Examples/Framework/src/Framework/Sequencer.cpp +++ b/Examples/Framework/src/Framework/Sequencer.cpp @@ -172,10 +172,6 @@ void Sequencer::addElement(const std::shared_ptr& element) { elementTypeCapitalized[0] = std::toupper(elementTypeCapitalized[0]); ACTS_INFO("Add " << elementType << " '" << element->name() << "'"); - if (!m_cfg.runDataFlowChecks) { - return; - } - auto symbol = [&](const char* in) { std::string s = demangleAndShorten(in); std::size_t pos = 0; diff --git a/Examples/Python/src/Framework.cpp b/Examples/Python/src/Framework.cpp index 6637ba790ad..6664af7be31 100644 --- a/Examples/Python/src/Framework.cpp +++ b/Examples/Python/src/Framework.cpp @@ -190,7 +190,6 @@ void addFramework(Context& ctx) { ACTS_PYTHON_MEMBER(fpeMasks); ACTS_PYTHON_MEMBER(failOnFirstFpe); ACTS_PYTHON_MEMBER(fpeStackTraceLength); - ACTS_PYTHON_MEMBER(runDataFlowChecks); ACTS_PYTHON_STRUCT_END(); auto fpem = From 17b7b92f58ce143a745fb2b671cf3d5785fa2676 Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Tue, 24 Sep 2024 14:06:38 +0200 Subject: [PATCH 005/101] refactor!: Fuse `Actor` and `Aborter` (#3573) Fuses Actors and Aborters into a single object with seperate `act` and `check` calls. The motivation for this is that Aborters cannot hold any state by their own currently but need an Actor to point to. To simplify this I propose to couple these two concepts. At the same time I reworked the call mechanism for the actor and aborter functions which concepts and a simpler dispatch mechanism. Class names changed a bit from `ActionList` to `ActorList` for example. --- .../Material/PropagatorMaterialAssigner.hpp | 16 +- Core/include/Acts/Propagator/AbortList.hpp | 115 -------------- Core/include/Acts/Propagator/ActionList.hpp | 94 ----------- .../include/Acts/Propagator/ActorConcepts.hpp | 87 ++++++++++ Core/include/Acts/Propagator/ActorList.hpp | 148 ++++++++++++++++++ .../Acts/Propagator/MaterialInteractor.hpp | 6 +- .../Acts/Propagator/MultiStepperAborters.hpp | 6 +- Core/include/Acts/Propagator/Propagator.hpp | 62 ++++---- Core/include/Acts/Propagator/Propagator.ipp | 93 +++++------ .../Acts/Propagator/PropagatorOptions.hpp | 40 ++--- .../Acts/Propagator/RiddersPropagator.hpp | 35 ++--- .../Acts/Propagator/RiddersPropagator.ipp | 21 ++- .../Acts/Propagator/StandardAborters.hpp | 12 +- .../Acts/Propagator/SurfaceCollector.hpp | 6 +- .../Acts/Propagator/VolumeCollector.hpp | 6 +- .../Acts/Propagator/detail/SteppingLogger.hpp | 8 +- .../detail/abort_list_implementation.hpp | 108 ------------- .../detail/action_list_implementation.hpp | 96 ------------ .../detail/actor_list_implementation.hpp | 104 ++++++++++++ .../CombinatorialKalmanFilter.hpp | 54 +++---- .../Acts/TrackFitting/GaussianSumFitter.hpp | 41 ++--- .../TrackFitting/GlobalChiSquareFitter.hpp | 33 ++-- .../Acts/TrackFitting/KalmanFitter.hpp | 63 +++----- .../Acts/TrackFitting/detail/GsfActor.hpp | 8 +- .../Utilities/detail/MPL/type_collector.hpp | 3 + Core/src/Material/SurfaceMaterialMapper.cpp | 12 +- Core/src/Material/VolumeMaterialMapper.cpp | 11 +- .../Propagation/PropagatorInterface.hpp | 12 +- .../src/TrackFindingAlgorithm.cpp | 6 +- .../include/ActsFatras/Kernel/Simulation.hpp | 11 +- .../Kernel/detail/SimulationActor.hpp | 36 ++--- .../CommonHelpers/MeasurementsCreator.hpp | 20 ++- .../IntegrationTests/NavigatorConsistency.cpp | 24 ++- .../PropagationBentTracks.cpp | 4 +- .../Material/VolumeMaterialMapperTests.cpp | 11 +- .../Navigation/DetectorNavigatorTests.cpp | 29 ++-- .../Core/Propagator/DirectNavigatorTests.cpp | 18 +-- .../Core/Propagator/EigenStepperTests.cpp | 51 +++--- .../Core/Propagator/ExtrapolatorTests.cpp | 10 +- .../Propagator/KalmanExtrapolatorTests.cpp | 18 +-- .../Core/Propagator/LoopProtectionTests.cpp | 7 +- .../Propagator/MaterialCollectionTests.cpp | 19 +-- .../Core/Propagator/PropagatorTests.cpp | 31 ++-- .../Core/Propagator/SympyStepperTests.cpp | 3 +- .../Fatras/Kernel/SimulationActorTests.cpp | 33 ++-- docs/core/propagation.md | 20 ++- 46 files changed, 736 insertions(+), 915 deletions(-) delete mode 100644 Core/include/Acts/Propagator/AbortList.hpp delete mode 100644 Core/include/Acts/Propagator/ActionList.hpp create mode 100644 Core/include/Acts/Propagator/ActorConcepts.hpp create mode 100644 Core/include/Acts/Propagator/ActorList.hpp delete mode 100644 Core/include/Acts/Propagator/detail/abort_list_implementation.hpp delete mode 100644 Core/include/Acts/Propagator/detail/action_list_implementation.hpp create mode 100644 Core/include/Acts/Propagator/detail/actor_list_implementation.hpp diff --git a/Core/include/Acts/Material/PropagatorMaterialAssigner.hpp b/Core/include/Acts/Material/PropagatorMaterialAssigner.hpp index 6cb85d74e75..57cb73ec312 100644 --- a/Core/include/Acts/Material/PropagatorMaterialAssigner.hpp +++ b/Core/include/Acts/Material/PropagatorMaterialAssigner.hpp @@ -12,8 +12,7 @@ #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/MagneticField/MagneticFieldContext.hpp" #include "Acts/Material/interface/IAssignmentFinder.hpp" -#include "Acts/Propagator/AbortList.hpp" -#include "Acts/Propagator/ActionList.hpp" +#include "Acts/Propagator/ActorList.hpp" #include "Acts/Propagator/Propagator.hpp" #include "Acts/Propagator/SurfaceCollector.hpp" #include "Acts/Surfaces/Surface.hpp" @@ -62,9 +61,9 @@ struct InteractionVolumeCollector { /// @param [in,out] result is the mutable result object template - void operator()(propagator_state_t& state, const stepper_t& stepper, - const navigator_t& navigator, result_type& result, - const Logger& /*logger*/) const { + void act(propagator_state_t& state, const stepper_t& stepper, + const navigator_t& navigator, result_type& result, + const Logger& /*logger*/) const { // Retrieve the current volume auto currentVolume = navigator.currentVolume(state.navigation); @@ -131,11 +130,10 @@ class PropagatorMaterialAssigner final : public IAssignmentFinder { // Prepare Action list and abort list using MaterialSurfaceCollector = SurfaceCollector; - using ActionList = - ActionList; - using AbortList = AbortList; + using ActorList = ActorList; using PropagatorOptions = - typename propagator_t::template Options; + typename propagator_t::template Options; PropagatorOptions options(gctx, mctx); diff --git a/Core/include/Acts/Propagator/AbortList.hpp b/Core/include/Acts/Propagator/AbortList.hpp deleted file mode 100644 index d18b1b991a3..00000000000 --- a/Core/include/Acts/Propagator/AbortList.hpp +++ /dev/null @@ -1,115 +0,0 @@ -// This file is part of the Acts project. -// -// Copyright (C) 2016-2018 CERN for the benefit of the Acts project -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/. - -#pragma once - -#include "Acts/Propagator/detail/abort_list_implementation.hpp" -#include "Acts/Utilities/detail/Extendable.hpp" -#include "Acts/Utilities/detail/MPL/has_duplicates.hpp" -#include "Acts/Utilities/detail/MPL/type_collector.hpp" - -#include -#include - -namespace hana = boost::hana; - -namespace Acts { - -/// @brief AbortList object to be used in the propagation -/// -/// The abort list is a list of structs or classes that -/// is called at each propagation step and can trigger the abort -/// of the current propagation. -/// -/// It can (optionally) depend on a result of an Actor from -/// the actor list. -template -struct AbortList : public detail::Extendable { - private: - static_assert(!detail::has_duplicates_v, - "same aborter type specified several times"); - - using detail::Extendable::tuple; - - public: - /// @cond - // This uses the type collector - using result_type = typename decltype(hana::unpack( - detail::type_collector_t, - hana::template_))::type; - /// @endcond - - using detail::Extendable::get; - - /// Default constructor - AbortList() = default; - - /// Default copy constructor - /// - /// @param aborters The source action list - AbortList(const AbortList& aborters) = default; - - /// Default move constructor - /// - /// @param aborters The source action list - AbortList(AbortList&& aborters) = default; - - /// Default move assignment operator - /// - /// @param aborters The source action list - AbortList& operator=( - const AbortList& aborters) = default; - - /// Default move assignment operator - /// - /// @param aborters The source action list - AbortList& operator=(AbortList&& aborters) = - default; - - /// Constructor from tuple - /// - /// @param aborters Source extensions tuple - AbortList(const std::tuple& aborters) - : detail::Extendable(aborters) {} - - /// Constructor from tuple move - /// - /// @param aborters Source extensions tuple - AbortList(std::tuple&& aborters) - : detail::Extendable(std::move(aborters)) {} - - /// Append new entries and return a new condition - template - AbortList append(appendices_t... aps) const { - auto catTuple = - std::tuple_cat(tuple(), std::tuple(aps...)); - return AbortList(std::move(catTuple)); - } - - /// This is the call signature for the abort list, it broadcasts the call - /// to the tuple() members of the list - /// - /// @tparam propagator_state_t is the state type of the propagator - /// @tparam stepper_t Type of the stepper - /// @tparam navigator_t Type of the navigator - /// - /// @param [in,out] state is the state object from the propagator - /// @param [in] stepper Stepper used for the propagation - /// @param [in] navigator Navigator used for the propagation - /// @param [in] args are the arguments to be passed to the aborters - template - bool operator()(propagator_state_t& state, const stepper_t& stepper, - const navigator_t& navigator, Args&&... args) const { - using impl = detail::abort_list_impl; - return impl::check(tuple(), state, stepper, navigator, - std::forward(args)...); - } -}; - -} // namespace Acts diff --git a/Core/include/Acts/Propagator/ActionList.hpp b/Core/include/Acts/Propagator/ActionList.hpp deleted file mode 100644 index 5ae6f85ff2e..00000000000 --- a/Core/include/Acts/Propagator/ActionList.hpp +++ /dev/null @@ -1,94 +0,0 @@ -// This file is part of the Acts project. -// -// Copyright (C) 2016-2018 CERN for the benefit of the Acts project -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/. - -#pragma once - -#include "Acts/Propagator/detail/action_list_implementation.hpp" -#include "Acts/Utilities/detail/Extendable.hpp" -#include "Acts/Utilities/detail/MPL/all_of.hpp" -#include "Acts/Utilities/detail/MPL/has_duplicates.hpp" -#include "Acts/Utilities/detail/MPL/type_collector.hpp" - -#include -#include - -namespace hana = boost::hana; - -namespace Acts { - -/// @brief ActionList implementation to be used with the propagator -/// -/// This is the ActionList struct that is used in the propagator -/// to define a list of different actors_t that are each -/// executed during the stepping procedure -template -struct ActionList : public detail::Extendable { - private: - static_assert(!detail::has_duplicates_v, - "same action type specified several times"); - - using detail::Extendable::tuple; - - public: - /// @cond - // This uses the type collector and unpacks using the `R` meta function - template