From 1bd7dd4394bf08eaa0002f00cf263b69d80cf56e Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Tue, 12 Nov 2024 12:27:19 +0100 Subject: [PATCH 01/49] fix: Remove false-positive warning in GCC14 (#3817) We had already masked this in GCC13, but it's still present in GCC14 --- Tests/UnitTests/Core/Surfaces/SurfaceBoundsTests.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Tests/UnitTests/Core/Surfaces/SurfaceBoundsTests.cpp b/Tests/UnitTests/Core/Surfaces/SurfaceBoundsTests.cpp index e150e9a64c9..470512383a0 100644 --- a/Tests/UnitTests/Core/Surfaces/SurfaceBoundsTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/SurfaceBoundsTests.cpp @@ -27,13 +27,15 @@ class SurfaceBoundsStub : public SurfaceBounds { std::iota(m_values.begin(), m_values.end(), 0); } -#if defined(__GNUC__) && __GNUC__ == 13 && !defined(__clang__) +#if defined(__GNUC__) && (__GNUC__ == 13 || __GNUC__ == 14) && \ + !defined(__clang__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Warray-bounds" #pragma GCC diagnostic ignored "-Wstringop-overflow" #endif SurfaceBoundsStub(const SurfaceBoundsStub& other) = default; -#if defined(__GNUC__) && __GNUC__ == 13 && !defined(__clang__) +#if defined(__GNUC__) && (__GNUC__ == 13 || __GNUC__ == 14) && \ + !defined(__clang__) #pragma GCC diagnostic pop #endif From ce00e4086f08e324038bb4447e8d986dd608a88d Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Tue, 12 Nov 2024 14:02:52 +0100 Subject: [PATCH 02/49] build: Make Boost 1.85 a hard failure when building the Examples (#3843) In the Examples, we require UB-free boost for the event data model to work --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f5209e0d210..601264badc0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -290,8 +290,12 @@ if(ACTS_SETUP_BOOST) endif() if(Boost_VERSION VERSION_EQUAL "1.85.0") + set(_boost_version_severity WARNING) + if(ACTS_BUILD_EXAMPLES) + set(_boost_version_severity FATAL_ERROR) + endif() message( - WARNING + ${_boost_version_severity} "Boost 1.85.0 is known to be broken (https://github.com/boostorg/container/issues/273). Please use a different version." ) endif() From b19011b1ebe4c4776ee4aaf51b2b6b99bc559a87 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Tue, 12 Nov 2024 17:10:51 +0100 Subject: [PATCH 03/49] refactor: Expose IMaterialDecorator::decorate to python (#3819) Exposes the `decorate` function to python, so the decoration can itself be steered from python if needed. Part of #3502 --- Examples/Python/src/Material.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Examples/Python/src/Material.cpp b/Examples/Python/src/Material.cpp index 5bc5aa6a1f3..6855fdc1737 100644 --- a/Examples/Python/src/Material.cpp +++ b/Examples/Python/src/Material.cpp @@ -81,7 +81,9 @@ void addMaterial(Context& ctx) { { py::class_>(m, - "IMaterialDecorator"); + "IMaterialDecorator") + .def("decorate", py::overload_cast( + &Acts::IMaterialDecorator::decorate, py::const_)); } { From 4048effde6e9557956492b47611b5e2f2a510b86 Mon Sep 17 00:00:00 2001 From: Attila Krasznahorkay <30694331+krasznaa@users.noreply.github.com> Date: Tue, 12 Nov 2024 19:43:20 +0100 Subject: [PATCH 04/49] fix: oneAPI 2025 Fixes, main branch (2024.11.11.) (#3846) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After @CarloVarni's update in https://github.com/acts-project/traccc/pull/765, I became unable to build [traccc](https://github.com/acts-project/traccc) with [oneAPI 2025.0.0](https://www.intel.com/content/www/us/en/developer/articles/release-notes/intel-oneapi-toolkit-release-notes.html). 😦 The issue being solved here is of the type: ``` [159/737] Building CXX object Core/CMakeFiles/ActsCore.dir/src/TrackFitting/GlobalChiSquareFitter.cpp.o FAILED: Core/CMakeFiles/ActsCore.dir/src/TrackFitting/GlobalChiSquareFitter.cpp.o /software/intel/oneapi-2025.0.0/compiler/2025.0/bin/compiler/clang++ --gcc-toolchain=/software/gcc/13.3.0/x86_64-el9 -DActsCore_EXPORTS -I/home/krasznaa/ATLAS/projects/acts/acts/Core/include -I/home/krasznaa/ATLAS/projects/acts/build-oneapi/Core -isystem /home/krasznaa/ATLAS/projects/acts/acts/cmake/assert_include -isystem /software/boost/1.83.0/x86_64-el9-gcc11-opt/include -isystem /home/krasznaa/ATLAS/projects/traccc/build-vanilla/_deps/eigen3-src -Wall -Wextra -Wpedantic -Wshadow -Wzero-as-null-pointer-constant -Wold-style-cast -O2 -g -DNDEBUG -std=gnu++20 -fPIC -MD -MT Core/CMakeFiles/ActsCore.dir/src/TrackFitting/GlobalChiSquareFitter.cpp.o -MF Core/CMakeFiles/ActsCore.dir/src/TrackFitting/GlobalChiSquareFitter.cpp.o.d -o Core/CMakeFiles/ActsCore.dir/src/TrackFitting/GlobalChiSquareFitter.cpp.o -c /home/krasznaa/ATLAS/projects/acts/acts/Core/src/TrackFitting/GlobalChiSquareFitter.cpp In file included from /home/krasznaa/ATLAS/projects/acts/acts/Core/src/TrackFitting/GlobalChiSquareFitter.cpp:9: /home/krasznaa/ATLAS/projects/acts/acts/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp:1265:54: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw] 1265 | auto propagationResult = m_propagator.template propagate(propagatorState); | ^ /home/krasznaa/ATLAS/projects/acts/acts/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp:1268:43: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw] 1268 | auto result = m_propagator.template makeResult(std::move(propagatorState), | ^ /home/krasznaa/ATLAS/projects/acts/acts/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp:1483:54: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw] 1483 | auto propagationResult = m_propagator.template propagate(propagatorState); | ^ /home/krasznaa/ATLAS/projects/acts/acts/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp:1486:43: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw] 1486 | auto result = m_propagator.template makeResult(std::move(propagatorState), | ^ 4 errors generated. ``` I imagine that those functions were templated once in the past, but they clearly are no longer. And Clang really doesn't like the erroneous call. 🤔 Unfortunately I was not able to reproduce these issues with [LLVM 18.1.8](https://discourse.llvm.org/t/18-1-8-released/79725). 😦 (That's the one I had already on hand. I imagine I'd need LLVM 19 to trigger this issue without oneAPI...) But I believe these will be useful fixes for vanilla Clang support as well. --- .../Acts/EventData/detail/TestSourceLink.hpp | 5 ++--- .../Acts/TrackFitting/GlobalChiSquareFitter.hpp | 16 ++++++++-------- Core/include/Acts/TrackFitting/KalmanFitter.hpp | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/Core/include/Acts/EventData/detail/TestSourceLink.hpp b/Core/include/Acts/EventData/detail/TestSourceLink.hpp index 34a234bbf4d..affec84aafa 100644 --- a/Core/include/Acts/EventData/detail/TestSourceLink.hpp +++ b/Core/include/Acts/EventData/detail/TestSourceLink.hpp @@ -139,14 +139,13 @@ void testSourceLinkCalibratorReturn( trackState.allocateCalibrated(2); trackState.template calibrated<2>() = sl.parameters; trackState.template calibratedCovariance<2>() = sl.covariance; - trackState.template setSubspaceIndices( - std::array{sl.indices[0], sl.indices[1]}); + trackState.setSubspaceIndices(std::array{sl.indices[0], sl.indices[1]}); } else if (sl.indices[0] != Acts::eBoundSize) { trackState.allocateCalibrated(1); trackState.template calibrated<1>() = sl.parameters.head<1>(); trackState.template calibratedCovariance<1>() = sl.covariance.topLeftCorner<1, 1>(); - trackState.template setSubspaceIndices(std::array{sl.indices[0]}); + trackState.setSubspaceIndices(std::array{sl.indices[0]}); } else { throw std::runtime_error( "Tried to extract measurement from invalid TestSourceLink"); diff --git a/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp b/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp index 867b161201c..8cd67c38c2b 100644 --- a/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp +++ b/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp @@ -1306,12 +1306,12 @@ class Gx2Fitter { // existing states, but this needs some more thinking. trackContainerTemp.clear(); - auto propagationResult = m_propagator.template propagate(propagatorState); + auto propagationResult = m_propagator.propagate(propagatorState); // Run the fitter - auto result = m_propagator.template makeResult(std::move(propagatorState), - propagationResult, - propagatorOptions, false); + auto result = + m_propagator.makeResult(std::move(propagatorState), propagationResult, + propagatorOptions, false); if (!result.ok()) { ACTS_ERROR("Propagation failed: " << result.error()); @@ -1502,12 +1502,12 @@ class Gx2Fitter { auto& r = propagatorState.template get>(); r.fittedStates = &trackContainer.trackStateContainer(); - auto propagationResult = m_propagator.template propagate(propagatorState); + auto propagationResult = m_propagator.propagate(propagatorState); // Run the fitter - auto result = m_propagator.template makeResult(std::move(propagatorState), - propagationResult, - propagatorOptions, false); + auto result = + m_propagator.makeResult(std::move(propagatorState), propagationResult, + propagatorOptions, false); if (!result.ok()) { ACTS_ERROR("Propagation failed: " << result.error()); diff --git a/Core/include/Acts/TrackFitting/KalmanFitter.hpp b/Core/include/Acts/TrackFitting/KalmanFitter.hpp index b0fe848c17b..12b70c8a562 100644 --- a/Core/include/Acts/TrackFitting/KalmanFitter.hpp +++ b/Core/include/Acts/TrackFitting/KalmanFitter.hpp @@ -1233,7 +1233,7 @@ class KalmanFitter { track_container_t& trackContainer) const -> Result { auto propagatorState = - m_propagator.template makeState(sParameters, propagatorOptions); + m_propagator.makeState(sParameters, propagatorOptions); auto& kalmanResult = propagatorState.template get>(); From a8f07b9282865f638d92df86271785ea68cd8a6b Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Tue, 12 Nov 2024 20:59:26 +0100 Subject: [PATCH 05/49] feat: Add a benchmark executable for Track EDM (#3834) This adds a standalone executable that runs some randomized access to the Track EDM, mainly creating tracks and track states --- Tests/Benchmarks/CMakeLists.txt | 1 + Tests/Benchmarks/TrackEdmBenchmark.cpp | 184 +++++++++++++++++++++++++ 2 files changed, 185 insertions(+) create mode 100644 Tests/Benchmarks/TrackEdmBenchmark.cpp diff --git a/Tests/Benchmarks/CMakeLists.txt b/Tests/Benchmarks/CMakeLists.txt index b19e67fed59..0edff123e9d 100644 --- a/Tests/Benchmarks/CMakeLists.txt +++ b/Tests/Benchmarks/CMakeLists.txt @@ -32,3 +32,4 @@ add_benchmark(StraightLineStepper StraightLineStepperBenchmark.cpp) add_benchmark(SympyStepper SympyStepperBenchmark.cpp) add_benchmark(Stepper StepperBenchmark.cpp) add_benchmark(SourceLink SourceLinkBenchmark.cpp) +add_benchmark(TrackEdm TrackEdmBenchmark.cpp) diff --git a/Tests/Benchmarks/TrackEdmBenchmark.cpp b/Tests/Benchmarks/TrackEdmBenchmark.cpp new file mode 100644 index 00000000000..b063254e154 --- /dev/null +++ b/Tests/Benchmarks/TrackEdmBenchmark.cpp @@ -0,0 +1,184 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#include "Acts/EventData/SubspaceHelpers.hpp" +#include "Acts/EventData/TrackContainer.hpp" +#include "Acts/EventData/TrackStatePropMask.hpp" +#include "Acts/EventData/TrackStateType.hpp" +#include "Acts/EventData/VectorMultiTrajectory.hpp" +#include "Acts/EventData/VectorTrackContainer.hpp" +#include "Acts/EventData/detail/GenerateParameters.hpp" +#include "Acts/Geometry/GeometryIdentifier.hpp" +#include "Acts/Surfaces/PerigeeSurface.hpp" +#include "Acts/Surfaces/PlaneSurface.hpp" +#include "Acts/Surfaces/RectangleBounds.hpp" +#include "Acts/Utilities/TrackHelpers.hpp" + +#include +#include +#include +#include + +using namespace Acts; + +class BenchmarkSourceLink final { + public: + using Index = std::uint32_t; + + /// Construct from geometry identifier and index. + constexpr BenchmarkSourceLink(Acts::GeometryIdentifier gid, Index idx) + : m_geometryId(gid), m_index(idx) {} + + BenchmarkSourceLink() = default; + BenchmarkSourceLink(const BenchmarkSourceLink&) = default; + BenchmarkSourceLink(BenchmarkSourceLink&&) = default; + BenchmarkSourceLink& operator=(const BenchmarkSourceLink&) = default; + BenchmarkSourceLink& operator=(BenchmarkSourceLink&&) = default; + + /// Access the index. + constexpr Index index() const { return m_index; } + + Acts::GeometryIdentifier geometryId() const { return m_geometryId; } + + private: + Acts::GeometryIdentifier m_geometryId; + Index m_index = 0; + + friend bool operator==(const BenchmarkSourceLink& lhs, + const BenchmarkSourceLink& rhs) { + return (lhs.geometryId() == rhs.geometryId()) && + (lhs.m_index == rhs.m_index); + } +}; + +int main(int /*argc*/, char** /*argv[]*/) { + std::size_t runs = 1000000; + std::size_t nTracks = 10000; + + VectorMultiTrajectory mtj; + VectorTrackContainer vtc; + TrackContainer tc{vtc, mtj}; + + VectorMultiTrajectory mtjOut; + VectorTrackContainer vtcOut; + TrackContainer output{vtcOut, mtjOut}; + + GeometryIdentifier gid; + gid.setVolume(5); + gid.setLayer(3); + gid.setSensitive(1); + + static_assert(sizeof(BenchmarkSourceLink) <= ACTS_SOURCELINK_SBO_SIZE); + + static_assert(std::is_trivially_move_constructible_v); + + std::uniform_int_distribution<> nStatesDist(1, 20); + std::uniform_int_distribution<> measDimDist(1, 3); + std::uniform_real_distribution<> typeDist(0, 1); + std::uniform_real_distribution<> copyDist(0, 1); + std::mt19937 rng{42}; + + std::vector> surfaces; + std::vector> parametersVector; + for (std::size_t s = 0; s < 50; ++s) { + surfaces.push_back(Surface::makeShared( + Transform3::Identity(), std::make_shared(50, 50))); + + parametersVector.push_back( + detail::Test::generateBoundParametersCovariance(rng, {})); + } + + std::size_t nSurface = 0; + auto surface = [&]() { + nSurface++; + return surfaces.at(nSurface % surfaces.size()); + }; + + std::size_t nParams = 0; + auto parameters = [&]() -> const std::pair& { + nParams++; + return parametersVector.at(nParams % parametersVector.size()); + }; + + auto perigee = Surface::makeShared(Vector3::Zero()); + + std::cout << "Creating " << nTracks << " tracks x " << runs << " runs" + << std::endl; + for (std::size_t r = 0; r < runs; ++r) { + tc.clear(); + for (std::size_t i = 0; i < nTracks; ++i) { + auto track = tc.makeTrack(); + + std::size_t nStates = nStatesDist(rng); + + for (std::size_t j = 0; j < nStates; ++j) { + auto trackState = track.appendTrackState(TrackStatePropMask::All); + trackState.setReferenceSurface(surface()); + + trackState.jacobian().setZero(); + trackState.jacobian().row(j % eBoundSize).setOnes(); + + double crit = typeDist(rng); + + if (crit < 0.1) { + // hole + trackState.typeFlags().set(TrackStateFlag::HoleFlag); + } else if (crit < 0.2) { + // material + trackState.typeFlags().set(TrackStateFlag::MaterialFlag); + } else { + BenchmarkSourceLink bsl{gid, 123}; + trackState.allocateCalibrated(measDimDist(rng)); + + const auto& [predicted, covariance] = parameters(); + trackState.predicted() = predicted; + trackState.predictedCovariance() = covariance; + + visit_measurement( + trackState.calibratedSize(), + [&](std::integral_constant /*d*/) { + trackState.calibrated().setOnes(); + trackState.calibratedCovariance().setIdentity(); + + std::array indices{0}; + std::iota(indices.begin(), indices.end(), 0); + trackState.setBoundSubspaceIndices(indices); + }); + + trackState.typeFlags().set(TrackStateFlag::MeasurementFlag); + if (crit < 0.4) { + // outlier + trackState.typeFlags().set(TrackStateFlag::OutlierFlag); + } + } + } + + track.setReferenceSurface(perigee); + + const auto& [ref, cov] = parameters(); + track.parameters() = ref; + track.covariance() = cov; + + track.linkForward(); + + calculateTrackQuantities(track); + } + + for (const auto& track : tc) { + if (copyDist(rng) > 0.1) { + // copy only 10% of tracks + continue; + } + + auto target = output.makeTrack(); + target.copyFrom(track); + } + } + + return 0; +} From 6da96839bf0d62c1dfc0c173c806435d6d2971ae Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Tue, 12 Nov 2024 22:21:58 +0100 Subject: [PATCH 06/49] fix: Make `SeedingPerformanceWriter` thread-safe (#3850) Not sure if the lock got lost by accident at some point or if it was never there. But the lock is definitely necessary to make the performance writer thread-safe. --- Examples/Io/Root/src/SeedingPerformanceWriter.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Examples/Io/Root/src/SeedingPerformanceWriter.cpp b/Examples/Io/Root/src/SeedingPerformanceWriter.cpp index d11de8bc018..e37f115093d 100644 --- a/Examples/Io/Root/src/SeedingPerformanceWriter.cpp +++ b/Examples/Io/Root/src/SeedingPerformanceWriter.cpp @@ -13,7 +13,6 @@ #include "ActsExamples/Utilities/EventDataTransforms.hpp" #include "ActsExamples/Validation/TrackClassification.hpp" #include "ActsFatras/EventData/Barcode.hpp" -#include "ActsFatras/EventData/Particle.hpp" #include #include @@ -28,10 +27,6 @@ using Acts::VectorHelpers::eta; using Acts::VectorHelpers::phi; -namespace ActsExamples { -struct AlgorithmContext; -} // namespace ActsExamples - ActsExamples::SeedingPerformanceWriter::SeedingPerformanceWriter( ActsExamples::SeedingPerformanceWriter::Config config, Acts::Logging::Level level) @@ -127,6 +122,9 @@ ActsExamples::ProcessCode ActsExamples::SeedingPerformanceWriter::writeT( const auto& particles = m_inputParticles(ctx); const auto& hitParticlesMap = m_inputMeasurementParticlesMap(ctx); + // Exclusive access to the tree while writing + std::lock_guard lock(m_writeMutex); + std::size_t nSeeds = seeds.size(); std::size_t nMatchedSeeds = 0; // Map from particles to how many times they were successfully found by a seed From 087855fe21d4f1be1f96a25ed79049d08fdbbbb1 Mon Sep 17 00:00:00 2001 From: "Alexander J. Pfleger" <70842573+AJPfleger@users.noreply.github.com> Date: Tue, 12 Nov 2024 23:35:35 +0100 Subject: [PATCH 07/49] chore: remove obsolete requirements file for exatrkx tests (#3848) This separate requirements file was used, because of ``` # to support python 3.8 in CI: test_exatrkx_python (ubuntu2004) # higher versions of numpy don't support python 3.8 numpy==1.24.4 ``` Since we dropped `ubuntu 20.04` completely, which was the cause for having `python 3.8`, the `test_exatrkx_unittests` will be reworked on a newer ubuntu anyways, where it could just use the general requirements file. --- .gitlab-ci.yml | 2 +- .../Python/tests/requirements_ubuntu2004.in | 9 ---- .../Python/tests/requirements_ubuntu2004.txt | 53 ------------------- 3 files changed, 1 insertion(+), 63 deletions(-) delete mode 100644 Examples/Python/tests/requirements_ubuntu2004.in delete mode 100644 Examples/Python/tests/requirements_ubuntu2004.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 14e59882291..b0a213e607d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -166,7 +166,7 @@ build_exatrkx: # - git clone $CLONE_URL src # - cd src # - git checkout $HEAD_SHA -# - pip3 install -r Examples/Python/tests/requirements_ubuntu2004.txt +# - pip3 install -r Examples/Python/tests/requirements.txt # - nvidia-smi # - pytest -rFsv -k test_exatrkx diff --git a/Examples/Python/tests/requirements_ubuntu2004.in b/Examples/Python/tests/requirements_ubuntu2004.in deleted file mode 100644 index 86f307d37e4..00000000000 --- a/Examples/Python/tests/requirements_ubuntu2004.in +++ /dev/null @@ -1,9 +0,0 @@ -# to support python 3.8 in CI: test_exatrkx_python (ubuntu2004) -# higher versions of numpy don't support python 3.8 -numpy==1.24.4 - -pytest -pytest-check -uproot -awkward -pyyaml diff --git a/Examples/Python/tests/requirements_ubuntu2004.txt b/Examples/Python/tests/requirements_ubuntu2004.txt deleted file mode 100644 index 04521b16770..00000000000 --- a/Examples/Python/tests/requirements_ubuntu2004.txt +++ /dev/null @@ -1,53 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile Examples/Python/tests/requirements_ubuntu2004.in -# -awkward==2.6.1 - # via - # -r Examples/Python/tests/requirements_ubuntu2004.in - # uproot -awkward-cpp==29 - # via awkward -exceptiongroup==1.2.0 - # via pytest -fsspec==2024.2.0 - # via - # awkward - # uproot -importlib-metadata==7.0.1 - # via awkward -iniconfig==2.0.0 - # via pytest -numpy==1.24.4 - # via - # -r Examples/Python/tests/requirements_ubuntu2004.in - # awkward - # awkward-cpp - # uproot -packaging==23.2 - # via - # awkward - # pytest - # uproot -pluggy==1.4.0 - # via pytest -pytest==8.0.0 - # via - # -r Examples/Python/tests/requirements_ubuntu2004.in - # pytest-check -pytest-check==2.3.1 - # via -r Examples/Python/tests/requirements_ubuntu2004.in -pyyaml==6.0.1 - # via -r Examples/Python/tests/requirements_ubuntu2004.in -tomli==2.0.1 - # via pytest -typing-extensions==4.9.0 - # via - # awkward - # uproot -uproot==5.2.2 - # via -r Examples/Python/tests/requirements_ubuntu2004.in -zipp==3.17.0 - # via importlib-metadata From 6b31eb2a887fcf01a7b04681e2f1bec185c3dd87 Mon Sep 17 00:00:00 2001 From: goetzgaycken Date: Wed, 13 Nov 2024 00:49:25 +0100 Subject: [PATCH 08/49] fix: silence compiler warning in tbb header about old-style casts. (#3824) Silence warnings emitted by GCC 13.1 about old-style c-casts in some headers of tbb 2021.13. --- .../ActsExamples/TrackFinding/TrackFindingAlgorithm.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/TrackFindingAlgorithm.hpp b/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/TrackFindingAlgorithm.hpp index c56e9508c9b..0f532be2d28 100644 --- a/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/TrackFindingAlgorithm.hpp +++ b/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/TrackFindingAlgorithm.hpp @@ -37,7 +37,10 @@ #include #include +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wold-style-cast" #include +#pragma GCC diagnostic pop namespace Acts { class MagneticFieldProvider; From 6345ed8dbbc160e562bfc7c425f623f5ee4f3c37 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Wed, 13 Nov 2024 02:02:55 +0100 Subject: [PATCH 09/49] refactor!: Remove free parameter estimation function (#3802) This removes a track parameter estimate function that we currently don't use anymore, and is easy to not use correctly. I propose to remove this overload entirely if we don't need it. --- .../Seeding/EstimateTrackParamsFromSeed.hpp | 99 ------------------- .../EstimateTrackParamsFromSeedTest.cpp | 23 ----- 2 files changed, 122 deletions(-) diff --git a/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp b/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp index f3850e102ce..f4f56946c84 100644 --- a/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp +++ b/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp @@ -22,105 +22,6 @@ #include namespace Acts { -/// @todo: -/// 1) Implement the simple Line and Circle fit based on Taubin Circle fit -/// 2) Implement the simple Line and Parabola fit (from HPS reconstruction by -/// Robert Johnson) - -/// Estimate the track parameters on the xy plane from at least three space -/// points. It assumes the trajectory projection on the xy plane is a circle, -/// i.e. the magnetic field is along global z-axis. -/// -/// The method is based on V. Karimaki NIM A305 (1991) 187-191: -/// https://doi.org/10.1016/0168-9002(91)90533-V -/// - no weights are used in Karimaki's fit; d0 is the distance of the point of -/// closest approach to the origin, 1/R is the curvature, phi is the angle of -/// the direction propagation (counter clockwise as positive) at the point of -/// cloest approach. -/// -/// @tparam spacepoint_iterator_t The type of space point iterator -/// -/// @param spBegin is the begin iterator for the space points -/// @param spEnd is the end iterator for the space points -/// @param logger A logger instance -/// -/// @return optional bound track parameters with the estimated d0, phi and 1/R -/// stored with the indices, eBoundLoc0, eBoundPhi and eBoundQOverP, -/// respectively. The bound parameters with other indices are set to zero. -template -std::optional estimateTrackParamsFromSeed( - spacepoint_iterator_t spBegin, spacepoint_iterator_t spEnd, - const Logger& logger = getDummyLogger()) { - // Check the number of provided space points - std::size_t numSP = std::distance(spBegin, spEnd); - if (numSP < 3) { - ACTS_ERROR("At least three space points are required."); - return std::nullopt; - } - - ActsScalar x2m = 0., xm = 0.; - ActsScalar xym = 0.; - ActsScalar y2m = 0., ym = 0.; - ActsScalar r2m = 0., r4m = 0.; - ActsScalar xr2m = 0., yr2m = 0.; - - for (spacepoint_iterator_t it = spBegin; it != spEnd; it++) { - if (*it == nullptr) { - ACTS_ERROR("Empty space point found. This should not happen."); - return std::nullopt; - } - - const auto& sp = *it; - - ActsScalar x = sp->x(); - ActsScalar y = sp->y(); - ActsScalar r2 = x * x + y * y; - x2m += x * x; - xm += x; - xym += x * y; - y2m += y * y; - ym += y; - r2m += r2; - r4m += r2 * r2; - xr2m += x * r2; - yr2m += y * r2; - numSP++; - } - x2m = x2m / numSP; - xm = xm / numSP; - xym = xym / numSP; - y2m = y2m / numSP; - ym = ym / numSP; - r2m = r2m / numSP; - r4m = r4m / numSP; - xr2m = xr2m / numSP; - yr2m = yr2m / numSP; - - ActsScalar Cxx = x2m - xm * xm; - ActsScalar Cxy = xym - xm * ym; - ActsScalar Cyy = y2m - ym * ym; - ActsScalar Cxr2 = xr2m - xm * r2m; - ActsScalar Cyr2 = yr2m - ym * r2m; - ActsScalar Cr2r2 = r4m - r2m * r2m; - - ActsScalar q1 = Cr2r2 * Cxy - Cxr2 * Cyr2; - ActsScalar q2 = Cr2r2 * (Cxx - Cyy) - Cxr2 * Cxr2 + Cyr2 * Cyr2; - - ActsScalar phi = 0.5 * std::atan(2 * q1 / q2); - ActsScalar k = (std::sin(phi) * Cxr2 - std::cos(phi) * Cyr2) * (1. / Cr2r2); - ActsScalar delta = -k * r2m + std::sin(phi) * xm - std::cos(phi) * ym; - - ActsScalar rho = (2 * k) / (std::sqrt(1 - 4 * delta * k)); - ActsScalar d0 = (2 * delta) / (1 + std::sqrt(1 - 4 * delta * k)); - - // Initialize the bound parameters vector - BoundVector params = BoundVector::Zero(); - params[eBoundLoc0] = d0; - params[eBoundPhi] = phi; - params[eBoundQOverP] = rho; - - return params; -} /// Estimate the full track parameters from three space points /// diff --git a/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp b/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp index de15f7e09c2..6161a8bdd33 100644 --- a/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp +++ b/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp @@ -165,9 +165,6 @@ BOOST_AUTO_TEST_CASE(trackparameters_estimation_test) { BOOST_TEST_INFO( "The truth track parameters at the bottom space point: \n" << expParams.transpose()); - // The curvature of track projection on the transverse plane in unit - // of 1/mm - double rho = expParams[eBoundQOverP] * 0.3 * 2. / UnitConstants::m; // The space point pointers std::array spacePointPtrs{}; @@ -175,26 +172,6 @@ BOOST_AUTO_TEST_CASE(trackparameters_estimation_test) { spacePointPtrs.begin(), [](const auto& sp) { return &sp.second; }); - // Test the partial track parameters estimator - auto partialParamsOpt = estimateTrackParamsFromSeed( - spacePointPtrs.begin(), spacePointPtrs.end(), *logger); - BOOST_REQUIRE(partialParamsOpt.has_value()); - const auto& estPartialParams = partialParamsOpt.value(); - BOOST_TEST_INFO( - "The estimated track parameters at the transverse plane: \n" - << estPartialParams.transpose()); - - // The particle starting position is (0, 0, 0). Hence, d0 is zero; the - // phi at the point of cloest approach is exactly the phi of the truth - // particle - CHECK_CLOSE_ABS(estPartialParams[eBoundLoc0], 0., 1e-5); - CHECK_CLOSE_ABS(estPartialParams[eBoundPhi], phi, 1e-5); - CHECK_CLOSE_ABS(estPartialParams[eBoundQOverP], rho, 1e-4); - // The loc1, theta and time are set to zero in the estimator - CHECK_CLOSE_ABS(estPartialParams[eBoundLoc1], 0., 1e-10); - CHECK_CLOSE_ABS(estPartialParams[eBoundTheta], 0., 1e-10); - CHECK_CLOSE_ABS(estPartialParams[eBoundTime], 0., 1e-10); - // Test the full track parameters estimator auto fullParamsOpt = estimateTrackParamsFromSeed( geoCtx, spacePointPtrs.begin(), spacePointPtrs.end(), From 281be28a47d6bd53467ade1315469d3c20f8b8cd Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Wed, 13 Nov 2024 14:18:31 +0100 Subject: [PATCH 10/49] fix: TryAllNavigationPolicy config exposed to python (#3822) I previously neglected to include the overload with the configuration in the python bindings. This PR does that and also includes test coverage for this behavior. ## Summary by CodeRabbit - **New Features** - Introduced a new method to the navigation policy factory for adding `TryAllNavigationPolicy` with configuration parameters. - Added Python bindings for the `TryAllNavigationPolicy::Config` class. - **Bug Fixes** - Adjusted constructor parameter order for `TryAllNavigationPolicy`, enhancing clarity and usability. - **Tests** - Added a new test function to validate the addition of `TryAllNavigationPolicy` with specific configuration options. --- .../Navigation/TryAllNavigationPolicy.hpp | 7 +++-- .../src/Navigation/TryAllNavigationPolicy.cpp | 8 +++--- Examples/Python/src/Navigation.cpp | 28 ++++++++++++++++++- Examples/Python/tests/test_navigation.py | 6 ++++ 4 files changed, 41 insertions(+), 8 deletions(-) diff --git a/Core/include/Acts/Navigation/TryAllNavigationPolicy.hpp b/Core/include/Acts/Navigation/TryAllNavigationPolicy.hpp index e7dc4bb3ddc..677a1dbd6dc 100644 --- a/Core/include/Acts/Navigation/TryAllNavigationPolicy.hpp +++ b/Core/include/Acts/Navigation/TryAllNavigationPolicy.hpp @@ -27,12 +27,13 @@ class TryAllNavigationPolicy final : public INavigationPolicy { }; /// Constructor from a volume - /// @param config The configuration for the policy /// @param gctx is the geometry context /// @param volume is the volume to navigate /// @param logger is the logger - TryAllNavigationPolicy(const Config& config, const GeometryContext& gctx, - const TrackingVolume& volume, const Logger& logger); + /// @param config The configuration for the policy + TryAllNavigationPolicy(const GeometryContext& gctx, + const TrackingVolume& volume, const Logger& logger, + const Config& config); /// Constructor from a volume /// @param gctx is the geometry context diff --git a/Core/src/Navigation/TryAllNavigationPolicy.cpp b/Core/src/Navigation/TryAllNavigationPolicy.cpp index 40ca70c4079..4423c7d62a8 100644 --- a/Core/src/Navigation/TryAllNavigationPolicy.cpp +++ b/Core/src/Navigation/TryAllNavigationPolicy.cpp @@ -13,10 +13,10 @@ namespace Acts { -TryAllNavigationPolicy::TryAllNavigationPolicy(const Config& config, - const GeometryContext& /*gctx*/, +TryAllNavigationPolicy::TryAllNavigationPolicy(const GeometryContext& /*gctx*/, const TrackingVolume& volume, - const Logger& logger) + const Logger& logger, + const Config& config) : m_cfg{config}, m_volume(&volume) { assert(m_volume != nullptr); ACTS_VERBOSE("TryAllNavigationPolicy created for volume " @@ -26,7 +26,7 @@ TryAllNavigationPolicy::TryAllNavigationPolicy(const Config& config, TryAllNavigationPolicy::TryAllNavigationPolicy(const GeometryContext& gctx, const TrackingVolume& volume, const Logger& logger) - : TryAllNavigationPolicy({}, gctx, volume, logger) {} + : TryAllNavigationPolicy(gctx, volume, logger, {}) {} void TryAllNavigationPolicy::initializeCandidates( const NavigationArguments& args, AppendOnlyNavigationStream& stream, diff --git a/Examples/Python/src/Navigation.cpp b/Examples/Python/src/Navigation.cpp index 733bbe1a151..a4f55a532ac 100644 --- a/Examples/Python/src/Navigation.cpp +++ b/Examples/Python/src/Navigation.cpp @@ -37,6 +37,10 @@ struct AnyNavigationPolicyFactory : public Acts::NavigationPolicyFactory { virtual std::unique_ptr add( TypeTag /*type*/, SurfaceArrayNavigationPolicy::Config config) = 0; + + virtual std::unique_ptr add( + TypeTag /*type*/, + TryAllNavigationPolicy::Config config) = 0; }; template , @@ -61,6 +65,12 @@ struct NavigationPolicyFactoryT : public AnyNavigationPolicyFactory { return add(std::move(config)); } + std::unique_ptr add( + TypeTag /*type*/, + TryAllNavigationPolicy::Config config) override { + return add(config); + } + std::unique_ptr build( const GeometryContext& gctx, const TrackingVolume& volume, const Logger& logger) const override { @@ -108,6 +118,12 @@ class NavigationPolicyFactory : public Acts::NavigationPolicyFactory { return *this; } + NavigationPolicyFactory& addTryAll( + const py::object& /*cls*/, const TryAllNavigationPolicy::Config& config) { + m_impl = m_impl->add(Type, config); + return *this; + } + std::unique_ptr build( const GeometryContext& gctx, const TrackingVolume& volume, const Logger& logger) const override { @@ -153,7 +169,16 @@ void addNavigation(Context& ctx) { std::shared_ptr>( m, "_NavigationPolicyFactory"); - py::class_(m, "TryAllNavigationPolicy"); + { + auto tryAll = + py::class_(m, "TryAllNavigationPolicy"); + using Config = TryAllNavigationPolicy::Config; + auto c = py::class_(tryAll, "Config").def(py::init<>()); + ACTS_PYTHON_STRUCT_BEGIN(c, Config); + ACTS_PYTHON_MEMBER(portals); + ACTS_PYTHON_MEMBER(sensitives); + ACTS_PYTHON_STRUCT_END(); + } py::class_>( @@ -162,6 +187,7 @@ void addNavigation(Context& ctx) { .def_static("make", []() { return NavigationPolicyFactory{}; }) .def("add", &NavigationPolicyFactory::addNoArguments) .def("add", &NavigationPolicyFactory::addSurfaceArray) + .def("add", &NavigationPolicyFactory::addTryAll) .def("_buildTest", [](NavigationPolicyFactory& self) { auto vol1 = std::make_shared( Transform3::Identity(), diff --git a/Examples/Python/tests/test_navigation.py b/Examples/Python/tests/test_navigation.py index 55ec8ac9540..56c908f7911 100644 --- a/Examples/Python/tests/test_navigation.py +++ b/Examples/Python/tests/test_navigation.py @@ -40,3 +40,9 @@ def test_navigation_policy_factory_add_multiple(): .add(acts.TryAllNavigationPolicy) .add(acts.TryAllNavigationPolicy) ) + + +def test_try_all_arguments(): + acts.NavigationPolicyFactory.make().add( + acts.TryAllNavigationPolicy, acts.TryAllNavigationPolicy.Config(sensitives=True) + ) From 3e71b0cef2ec449c2bd6efcfb266ac31bec93233 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Wed, 13 Nov 2024 15:49:57 +0100 Subject: [PATCH 11/49] feat: Add optional context type getter (#3853) Also adds a unit test. --- .../Acts/Utilities/detail/ContextType.hpp | 22 +++++++++++ Tests/UnitTests/Core/Utilities/CMakeLists.txt | 1 + .../Core/Utilities/ContextTypeTests.cpp | 38 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 Tests/UnitTests/Core/Utilities/ContextTypeTests.cpp diff --git a/Core/include/Acts/Utilities/detail/ContextType.hpp b/Core/include/Acts/Utilities/detail/ContextType.hpp index 143e8b2d521..8ccadd77c4d 100644 --- a/Core/include/Acts/Utilities/detail/ContextType.hpp +++ b/Core/include/Acts/Utilities/detail/ContextType.hpp @@ -79,6 +79,28 @@ class ContextType { return std::any_cast&>(m_data); } + /// Retrieve a pointer to the contained type + /// + /// @note Returns `nullptr` if @p is not the contained type. + /// + /// @tparam T The type to attempt to retrieve the value as + /// @return Pointer to the contained value, may be null + template + std::decay_t* maybeGet() { + return std::any_cast>(&m_data); + } + + /// Retrieve a pointer to the contained type + /// + /// @note Returns `nullptr` if @p is not the contained type. + /// + /// @tparam T The type to attempt to retrieve the value as + /// @return Pointer to the contained value, may be null + template + const std::decay_t* maybeGet() const { + return std::any_cast>(&m_data); + } + /// Check if the contained type is initialized. /// @return Boolean indicating whether a type is present bool hasValue() const { return m_data.has_value(); } diff --git a/Tests/UnitTests/Core/Utilities/CMakeLists.txt b/Tests/UnitTests/Core/Utilities/CMakeLists.txt index cb5249b6be9..955b58b31c9 100644 --- a/Tests/UnitTests/Core/Utilities/CMakeLists.txt +++ b/Tests/UnitTests/Core/Utilities/CMakeLists.txt @@ -61,3 +61,4 @@ add_unittest(VectorHelpers VectorHelpersTests.cpp) add_unittest(TrackHelpers TrackHelpersTests.cpp) add_unittest(GraphViz GraphVizTests.cpp) +add_unittest(ContextType ContextTypeTests.cpp) diff --git a/Tests/UnitTests/Core/Utilities/ContextTypeTests.cpp b/Tests/UnitTests/Core/Utilities/ContextTypeTests.cpp new file mode 100644 index 00000000000..2bd67ee1e5f --- /dev/null +++ b/Tests/UnitTests/Core/Utilities/ContextTypeTests.cpp @@ -0,0 +1,38 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#include +#include + +#include "Acts/Utilities/detail/ContextType.hpp" + +using namespace Acts; + +BOOST_AUTO_TEST_SUITE(ContextTypeTests) + +BOOST_AUTO_TEST_CASE(PackUnpack) { + ContextType ctx; + + int v = 42; + ctx = v; + + BOOST_CHECK_EQUAL(ctx.get(), 42); + BOOST_CHECK_THROW(ctx.get(), std::bad_any_cast); +} + +BOOST_AUTO_TEST_CASE(MaybeUnpack) { + ContextType ctx; + + int v = 42; + ctx = v; + + BOOST_CHECK_EQUAL(*ctx.maybeGet(), 42); + BOOST_CHECK_EQUAL(ctx.maybeGet(), nullptr); +} + +BOOST_AUTO_TEST_SUITE_END() From a76dd218fd59e4b93f7e29af5333741cc1cf74ee Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Wed, 13 Nov 2024 18:12:37 +0100 Subject: [PATCH 12/49] chore: Update PR template (#3858) Adds description of conventional commits prefix again --- .github/pull_request_template.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index c2ece0d20f2..7073e2a413a 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -5,3 +5,7 @@ DO NOT USE @-MENTIONS HERE! --- END COMMIT MESSAGE --- Any further description goes here, @-mentions are ok here! + +- Use a *conventional commits* prefix: [quick summary](https://www.conventionalcommits.org/en/v1.0.0/#summary) + - We mostly use `feat`, `fix`, `refactor`, `docs`, `chore` and `build` types. +- A milestone will be assigned by one of the maintainers From 948b4d55d832a3c10fe28fc12c9a0d3b3ed6954b Mon Sep 17 00:00:00 2001 From: "Alexander J. Pfleger" <70842573+AJPfleger@users.noreply.github.com> Date: Thu, 14 Nov 2024 10:42:45 +0100 Subject: [PATCH 13/49] refactor(gx2f): make function to update parameter (#3840) Pulling out, as suggested in https://github.com/acts-project/acts/pull/3726/files#r1835623388 --- .../TrackFitting/GlobalChiSquareFitter.hpp | 42 ++++++++----------- .../TrackFitting/GlobalChiSquareFitter.cpp | 24 +++++++++++ 2 files changed, 41 insertions(+), 25 deletions(-) diff --git a/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp b/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp index 8cd67c38c2b..0728c4a3a5a 100644 --- a/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp +++ b/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp @@ -694,6 +694,20 @@ std::size_t countMaterialStates( return nMaterialSurfaces; } +/// @brief Update parameters (and scattering angles if applicable) +/// +/// @param params Parameters to be updated +/// @param deltaParamsExtended Delta parameters for bound parameter and scattering angles +/// @param nMaterialSurfaces Number of material surfaces in the track +/// @param scatteringMap Map of geometry identifiers to scattering properties, +/// containing all scattering angles and covariances +/// @param geoIdVector Vector of geometry identifiers corresponding to material surfaces +void updateGx2fParams( + BoundTrackParameters& params, const Eigen::VectorXd& deltaParamsExtended, + const std::size_t nMaterialSurfaces, + std::unordered_map& scatteringMap, + const std::vector& geoIdVector); + /// @brief Calculate and update the covariance of the fitted parameters /// /// This function calculates the covariance of the fitted parameters using @@ -704,8 +718,6 @@ std::size_t countMaterialStates( /// /// @param fullCovariancePredicted The covariance matrix to update /// @param extendedSystem All parameters of the current equation system -/// -/// @return deltaParams The calculated delta parameters. void updateGx2fCovarianceParams(BoundMatrix& fullCovariancePredicted, Gx2fSystem& extendedSystem); @@ -1234,7 +1246,6 @@ class Gx2Fitter { using PropagatorOptions = typename propagator_t::template Options; start_parameters_t params = sParameters; - BoundVector deltaParams = BoundVector::Zero(); double chi2sum = 0; double oldChi2sum = std::numeric_limits::max(); @@ -1272,10 +1283,6 @@ class Gx2Fitter { for (nUpdate = 0; nUpdate < gx2fOptions.nUpdateMax; nUpdate++) { ACTS_DEBUG("nUpdate = " << nUpdate + 1 << "/" << gx2fOptions.nUpdateMax); - // update params - params.parameters() += deltaParams; - ACTS_VERBOSE("Updated parameters: " << params.parameters().transpose()); - // set up propagator and co Acts::GeometryContext geoCtx = gx2fOptions.geoContext; Acts::MagneticFieldContext magCtx = gx2fOptions.magFieldContext; @@ -1392,14 +1399,10 @@ class Gx2Fitter { extendedSystem.aMatrix().colPivHouseholderQr().solve( extendedSystem.bVector()); - deltaParams = deltaParamsExtended.topLeftCorner().eval(); - ACTS_VERBOSE("aMatrix:\n" << extendedSystem.aMatrix() << "\n" << "bVector:\n" << extendedSystem.bVector() << "\n" - << "deltaParams:\n" - << deltaParams << "\n" << "deltaParamsExtended:\n" << deltaParamsExtended << "\n" << "oldChi2sum = " << oldChi2sum << "\n" @@ -1440,19 +1443,9 @@ class Gx2Fitter { break; } - if (multipleScattering) { - // update the scattering angles - for (std::size_t matSurface = 0; matSurface < nMaterialSurfaces; - matSurface++) { - const std::size_t deltaPosition = eBoundSize + 2 * matSurface; - const GeometryIdentifier geoId = geoIdVector[matSurface]; - const auto scatteringMapId = scatteringMap.find(geoId); - assert(scatteringMapId != scatteringMap.end() && - "No scattering angles found for material surface."); - scatteringMapId->second.scatteringAngles().block<2, 1>(2, 0) += - deltaParamsExtended.block<2, 1>(deltaPosition, 0).eval(); - } - } + updateGx2fParams(params, deltaParamsExtended, nMaterialSurfaces, + scatteringMap, geoIdVector); + ACTS_VERBOSE("Updated parameters: " << params.parameters().transpose()); oldChi2sum = extendedSystem.chi2(); } @@ -1478,7 +1471,6 @@ class Gx2Fitter { // step, we will not ignore the boundary checks for measurement surfaces. We // want to create trackstates only on surfaces, that we actually hit. if (gx2fOptions.nUpdateMax > 0) { - ACTS_VERBOSE("Final delta parameters: " << deltaParams.transpose()); ACTS_VERBOSE("Propagate with the final covariance."); // update covariance params.covariance() = fullCovariancePredicted; diff --git a/Core/src/TrackFitting/GlobalChiSquareFitter.cpp b/Core/src/TrackFitting/GlobalChiSquareFitter.cpp index de61ee090d4..50b8b4cab8c 100644 --- a/Core/src/TrackFitting/GlobalChiSquareFitter.cpp +++ b/Core/src/TrackFitting/GlobalChiSquareFitter.cpp @@ -10,6 +10,30 @@ #include "Acts/Definitions/TrackParametrization.hpp" +void Acts::Experimental::updateGx2fParams( + BoundTrackParameters& params, const Eigen::VectorXd& deltaParamsExtended, + const std::size_t nMaterialSurfaces, + std::unordered_map& scatteringMap, + const std::vector& geoIdVector) { + // update params + params.parameters() += + deltaParamsExtended.topLeftCorner().eval(); + + // update the scattering angles. + for (std::size_t matSurface = 0; matSurface < nMaterialSurfaces; + matSurface++) { + const std::size_t deltaPosition = eBoundSize + 2 * matSurface; + const GeometryIdentifier geoId = geoIdVector[matSurface]; + const auto scatteringMapId = scatteringMap.find(geoId); + assert(scatteringMapId != scatteringMap.end() && + "No scattering angles found for material surface."); + scatteringMapId->second.scatteringAngles().block<2, 1>(2, 0) += + deltaParamsExtended.block<2, 1>(deltaPosition, 0).eval(); + } + + return; +} + void Acts::Experimental::updateGx2fCovarianceParams( BoundMatrix& fullCovariancePredicted, Gx2fSystem& extendedSystem) { // make invertible From 3aeba0c9b4045bd2e39d8cd18add52d74409be77 Mon Sep 17 00:00:00 2001 From: "Alexander J. Pfleger" <70842573+AJPfleger@users.noreply.github.com> Date: Thu, 14 Nov 2024 15:41:42 +0100 Subject: [PATCH 14/49] refactor(gx2f): make material work for |eta| > 2 (#3726) Drastically improve the material effects with the following technique: 1. Converge the GX2F System, ignoring material effects (=no material case). 2. Do one iteration with material effects. This avoids the observed instabilities introduced by fitting the material. We can see in physmon, that the pullwidth is 1 for all eta, as well as for all pT. In very low pT regions, the efficiency drops to 92%, which still needs further investigation. I relaxed the material-effects unit test a bit. I assume, our constructed test is really extreme and hard to fit with the current model. --- .../performance_trackfitting.root | Bin 203197 -> 182317 bytes .../TrackFitting/GlobalChiSquareFitter.hpp | 154 ++++++++++++++++-- .../UnitTests/Core/TrackFitting/Gx2fTests.cpp | 10 +- 3 files changed, 148 insertions(+), 16 deletions(-) diff --git a/CI/physmon/reference/trackfitting_gx2f/performance_trackfitting.root b/CI/physmon/reference/trackfitting_gx2f/performance_trackfitting.root index 21533ce80762776f6a09d31658d162785b67e8ca..b2e2b47c2f5bdc64217cf3db926a01cd4ef9e0c0 100644 GIT binary patch delta 174616 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

-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

;vi9CfZz1pPvaq2+8 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

l9wnUeSXE3^S(`lxMeT>kZ=WF*~+5=DJ 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 H6TyIL=HNpt delta 137399 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 diff --git a/CI/physmon/reference/trackfinding_1muon/truth_estimated/performance_fitting_ckf.root b/CI/physmon/reference/trackfinding_1muon/truth_estimated/performance_fitting_ckf.root index 3fcdb6021d1a97c3f81835671415b53eec2f05ba..652e0d8fd57de1eb873782d676a173be0f6f5c37 100644 GIT binary patch delta 137236 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 diff --git a/CI/physmon/reference/trackfinding_4muon_50vertices/performance_fitting_ckf.root b/CI/physmon/reference/trackfinding_4muon_50vertices/performance_fitting_ckf.root index b90f40313eb49b0e77962b047f17f8e95a6407bb..37ad131de0e4913f296e23567fc80c89df9a6fae 100644 GIT binary patch delta 107930 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�O7D zB`ow7-R8zZ(#r!U46zX^u6mf_)+KEjo^@vo$WQN%F77unlIKNT#HR|A(OcCf;!p5F zcy<0T=yY2Xvi7G>{Hw=|e{lE&2+$k+%)1#>Ff+9BaBc6(cxx3X?)PpxJCgS-&yx_- z_uJY$Xl}EHNH|^mTG6VYuGt>FBAZG;x0HOU{_y{;Ql37v^RwFhG*!%-ZO!j~_*(1# zG$;y0*L|RX{p!r~3qg!hjLxY(^E>N;GP<8*Ly^Gkl&5yo_JC0$cs{jW!{J!Oo5djV zRm@&xYVONH#{z#|?wm3+!@NdTD$HvsGYO4FZ9ARS9EoHqcC+LIOK50N!hJ5CSz6eO z%`aju8R2x>8q|*IeIbG&kuiO^B+)oFN{<_(7{^%SK7-B}#rG?v)e08n z7775}ER*Q#QB1UpnC-{Qoc7DTNX*s;Pt5}1mS>Y%kLT-~-f&9j{igp+1471Xhr4x+ z^H&^vgbLNJWbImHcUMJO%(5yP)M3vJP-TA*kW)*llzYT;6=)pIA2l3D=exp?d2mkI zd13*|t}yUql0NJh2=^J1E>9xAOwOl@Vmbh@18Eral*hk|DQ+@{UpR~XCO7NZR&>dR zT%1!veO$0wr@CFE)ytLD#7s#*zj_U0CC=!)aE14CIFD=A+Vj4Tl0< z8l23h;(5Z80&7!>QDf5l(>5UQFC&W&3{py$&7*LGju__}JqOGey(bmzZE^$-gLn}4 zyTrkFzf^^Ho3pLQdhTOu3CBmJxgxX@Oik4MCvFDzB4r{z$ILjzlGaV-iS2I;Nc8TK z#Xk|Bky{nNY<~Z2h&xed$ea_$n#KcY9d&#z$v{K8T3H!_?~$AlA+Ho83%Cf7WvFR5 z1onl!3g@fj+T=0jS@$3Byxr&3+T)cB#(wbu9pIt%mDL;SHa5$Fn;G-^gt0nf2G=UK zzL&oVH2zbkEPUj0%{NXm`5~bZaV8MHfIlt6eK0$}Q}$k9xgj^F)2HA0#m4J5kc0KS zcTXrg(iA+XKzxOz1iS8~E!yBF?XBHupJ@)iz1E$i_;K-4i|hd(6Xth`yw8*30U}BU zHq2yUOcZAFv+yxAG|c?J?(hSjf9|mCUw4?OD!z`02hhbt^Lg;c_f6CWD`-nmLd1*& zIELT0D19n*&*8a~zI3v}Vf@5U6}p{mKUh|0XuC8uRD_=sK_7prB&~G7^yZ5K}GYLrQU?OjNeewIk$~-m-2(}<4 z*gz*1#%Fpg8HtXA=tn0Lnx<)17Ei=tWqBNfNxxHwm05L@DhysMd9Stg^9^?>8)9_Z6M`Rvz^Zudjq<@zpmf<6FP;!sd3^N+7%1dy9-NMDtu6bwC{PYr2PTd zj0Wa>ww=*hXUvCSgDZ%nm(|d3=uQ)xviLSIk1DV~f@d++BR$+n?f^nLPzVG)d+5KU z^Ew&_|8vmhC=#7C=bv?vpYG+Lut8Ixs*?{&RVO_Y zKUMU5Q`e_*N+W~6OS4SbTCTOi7(0Qs<{|Z%)*sLh|M@Gfr&e06y=KW{!KhK>SY+Nq<7C`)kyZgw;Jn{xd(Q2zPW6EdcEmsA#*F z0c&eMbAh(51&CzlS03QE{wBsXoMPcAY-cc0tupjsKEt$HuLy#Mficb2rac{ihBkRr zY>`bewc;lkkcyUwM~Q<*dRL8h5LHV{P-rC_sj9;J`61dA{j(Hvu6nAjs(#bs!Mr!j zp^RGLsSoiId&d$3kBwBiD;Y9HS%ReKmOAL8ziGcxBLGCpvbCp?WcUNZay9)_a;3>r z5!SIf5xR`rX^xUNJ^NGRXcH8QCaESRXQ?Nh`3`dXi7;NI^A6uch!WRaqhyJ>55Juy zGv*NVXUc-3`ABaH(&QI}QY{4R`(pFD`UEZ9l@8&ZhC^7$(gNf8y%)`JD<1g;&J~Um zQN$du2tbZ6E91uYjfcOq>qfy1PW${{pwmb5IgVFuZoC+t;F?QF-m4U0--6s}y}3Sj z{MgqK-TZvBJrFIX^E4QLuvx1gujmAV3s9$^R28i2gRhf4W zU}i0RSNVi$=U%)dBpxfp*G=&p!xJadL(kov0S)qLN1k+wPoP|wSG~xXc0kM66>Rnb zI_p(*Ia^}D(Z}oR8Dtdgq^<{ESB=DVKd|TS@?DIIRIh$lE1!4xTb3c zhtJ@Vwr>pGp5J)S`usXyr@eV)`nKvtXMlH!=Yj~`OG(GB$tQ^~CNxZBR2P=!HECc| zPXWl;s^~6sY<7Nk=)I?%`?PS?BZH(Z$1+j4O5 z?&d8ibXEj+KfEni5PC{2R%j(F>MxMntI>z``9xBgRq7WsshZSeyCUQcbgSJiGxk1@ zBo8_-+e=)3<)Kj{xS`46`)>ZR$&N}T*K>d}3G6MiV#DlKW<&@tfQ4}RtbX_^js`mu z4`FVzul%$_`+nYs)L2On8#MWrv~zR%*8r*R%G`aJS<9E~!3N4{=pj)rUYMD>U3r5C zP%7B(eWv@MGye#Q^v_2_!*2M;1Qq@RpVVLQQC$3&3Bv!w1jXY}G5`+PXodecpiEmk zZCSG3LXN3|IQ1MV33@xCpE0322}KXA>T(~*AS+jc%<$^ia22GVNvYSwn%#b0Atqf8 zFHWKieaOHNsObJql6b=gk0W%{pPMp*n|M-fbx6o_+WtUX$>W6cjxg2da8bzh5b(D? zY+ZQZkSI9+JeaKtuuAXaThL)t!{wH;NR===4d%4}SW?DSZZxgE@ZRYC)M#zxeIhs< zLzx_FHym>?4I^^ON+zps#D64;2RRdF$Kc}6?{jShrHN-SRgy|4(bHc~U#pkvrf3}8 z;xL&_fWN0r(VBjRJfzs93aK&+CDH@p7p~%_M{e0WKlP{pZMB|dk1a1%pkAakecI1= z_3BxB8pSNlW^*5ji44@3i|v6+aE*~!LS})5LFk`pH?Deotyx+u$FC}TwY)6s^aU}fKXw|$bQCWGcY^ys>(N33AyMSGsZ~YApBE3;*^L|V>yODU0kSL4-3m{3*^%!TK9psGZ`Lsk zcF%G5JlKDz%{rCJ?-B?fxGbqg(Kh+za&+JL?A3WjiaSi{WX<#**!UFem@`$#f?Dkc zO>S^@;5mfxhskFQPEmpddr}Ey+2D>_ORJ&s!IIguog{xhIdkStCV?>*G-(-qhEvKkC(iM*rxjnH|q! zF*yMPk=5mOwI|Gqn#h7?rb|zSQ;?Y9=~Y?W8f^>>idAu|bRfz1{ygr??IF`1Ql=VK z9Cr>%5``SZZC!?}U#lh}6`=-kV4B#WEi0hEB`bO8NV;DXNF4Hvvw%4&Y@&XO%1tyF zyZDR8WmLHIUn7lN#03UCRt*`2;9C~hnLy(Dxl`f#`AO#bd9}>x%~J-j*g=v}La$KV z%z`EOn_#_?akS;>>y5j>_4B58Svf5#2`yP7%oRt8aWlw|;H1-PwbS!sv&o-tNTt8Q z*ciws_=Iz3_?mtj=lynL@o{xmLt_BK3E*)55%5pv$L_bi!2%J~{P4vuKx3I-Ijm8l zr7ie2mJ!90L5B1a})8eYUrU1?&QXi5rq9Bc-}$2 z$NR7nD4OQ%o|My{u+Bld^g z{CXGzO9F#lUtGA1*a?}bG5j^K7`ghv8Q1Jca(XRo_t2O8n9s6Vs@l_tb7?n>$F+d` z2FwL?Vs+;I^2IyXf|+uh$7}={Vh*sI(xDaXldY%FqhTE_wd@823 z%5WSi-ErauXBDEh#%Wq5a=O)~0m-{Dt93ZL@n6Rt??-=L+qMJ51(QV4JzJZJ{T2=d zU*gw5^KqKs5Yd)R2c<^JIK!0}>ep8!OXn_YHERQpHm z|Jdlouq@cboUv`Sk7<6S_O?j#ZKIHyA0Vv+Vg;W=*LTcFYGFBx^zUt{0_!~nK5Nu`aJu%fzN!FvcO>x;_+tyjX zK97C;S~c2YoxgAFt!Tppv@%Q&v;%5dhO6&^7=+UC69+hr_at;->y6?U+r8-@16A- zRN=4z{$r}>mZbzF_Aal?pKAc8cIv3xFW7VX$osCGOH0t|n`-+O_072SAJm8$67%t4 z@mTsKmVImW&X~ppz@k3P!~GrXy2;k zx^js)SQ9&m zPsM^ptKg&lM>o$u-GTpf%l*~OuvD|m(1T9@>LtY*TmKGj3e}*CO9PN6OaE; zuW-eY?lr0XPdQLGT`z3k#`Jua#v%P<%|~;txHPFwEVN%ge5TOQu-^Pt{)qCQa-P4+ znF#;4JHRc6?c{D}_h)73k@}yS-qDKQ;+6he9BeE!%D-#GKi@6bX6O(>mhAY``R17n zY87%y&!mDrzA-Dd|DEdS!}a7HNV(eps8)HcqRjQ)@8&osfwAZ-$#^jTlr9Pl?+9grGN zly=$H<9F(MUcf?;j+d4;35@wUZiNEJZ=a}dzp3-BR%r7Ak2y(Z zKI`)G;W`R!e7$7Z_~Mx$>17f#n!W6(>^p=i+d2Vugl<)q;BX?dF_W3Q+oPuF_JZp> z$Fv#L^OiuA;;PAY=_;xZ#Rj#%gyXft)$l5&Op>lx@8hm!ZnVsNfH%h>Ks<#OgYeHi z)is}tQ;=)&*Lt`gtJv+F%{^x!vUS}JMVOJb<$4)@TrMJZ#NerN;n%ZsDYS8hY(2au zgK>Cjokok4$wyDzWO(RTFtFC9KArT=k}5mG`qWBYbbcgzfSrA@_3~3Yfw{(R^^>0v zzoNV0oC_pP-N3!P`j#mr;4Ypeo0%+HrTzx9?Th8dpCJ48ZKPX zT7(b@puLe*-}1q6hpCy%?oI@GgL<|WpX>}S5@OAABqPR}Iky&8TTvNzONoX-!!|#3f;8HCOCutdO^ciY#$M^CY zPFf}JS-UATP9AgulqT^dK<0`ZH~JcQ^mgR7beQgy$PIEh>i(+LoHncaO7oA)8Fe0c z@_y?|jpHK60xH`!x4YqQvBv!&^r^^&gc-{%D&04m;NxaG-SmFq6J?33Ld->k{?|PR z38pVXkaC-b*F_}z9hR=-L0OgbRo`Du*v;suHB91`WIDYB=6+R!vL8lhMJ%RK)xT)$ zXvp|#@P47II_rU6upZ3vsl{BcOU%aSIZ<*xx=gAgX7Hnot%rLV&l+>RdF;Ih`dZeX zBt6GtGy5bsyp?IjKt5T6jc+^sj&$^ufwU`J;1&}{o_O>RgEsIlut@!9NhJST5;l#$ zmLy)AjU5OeLQDM@Ph{8@S?N6Oy)>j{t$E7YBnkR~ZbgHiy^18&@`8*b+@_0a&qy>o##ZRvGSkxicXE z_nsO)YTnz_I%?gxdi<;9cB$UTe@`d5{iu8plN2NBHS!W(BxMRT%)wt{XW=yGnNl?L z*W&KY2959gWD8MUSySw!OM@CVFpnDcmhrT5U!(=8)EpJF30}`v+^uf!WjRlTSD=7i zPw^Z@H;^c+blr;u^A+BgieB_~CipYP-UfyT%!J)j;s>9MDn4?xsm*N7hmUM~mx$3= z*4JU@?S~u$6g8JDQMf}gW#>{^tx=KpN5feWw}sZI2xrICJC0ow9;7STz2Ak*8Q^=d z&}Slqw5*j7MM`x|%%B+S7T?C*-2sZHfNR`Yyy7?1%{rHcr&rvmiGbp{s#;bAxJ^{? zPLz>-30?8dUqcgB5$7f$5$^^Z#XZyTQs7iQiQ9C}G$c9N(@;b-<)v5-82T!?F1Oj! z!LZjlCrBApwEVo%3cbAQ>!5E_H)LoQQGxD{%EgG&Z+(3j2~N^3s%O{Lfce4IQAbCv z@G9iOnuaIfBf48|A1%A2wqUMtsVahxy=7*Ehe zo_Nlh&V7vj&hXPFG-M&%tZi@qIKzQ3KWCo7`}<>T!5`8dDaK2O(bq7`kX>baQpDYl z$m-4I{o?KR34%HE8dTRUP*K%c$BpzPqpOql^uD;HM1|6}=|b>VfDfG-Hi*Qca3Gy8bx8mxYip!EW=jx7T7OQ|R44!x>LJ?FxiWiFB zFo~+<4ZOIK&V!5b7R_<+oFf;sGj3$!?t-LMdK}z5ZCv0NH?p?CoCyUf3s>kW3%6hP zpSV4X8@Xgx1h($vT^Plala;+eha9lPE5iXon>3NtL9p3j`nmLt3;!=YKklXa=kV)D zKg>kF#rqD>I?RW0tEzQVtFYWl>&ohWGc~zwdynhtJ+e4GmmovUZT}b8r?v+-f|Qc= zmFkC#4#9w>6v<2I&C>Sj?_%x|j*7K%fs_({w3K!A-tlj9 zXAFvIEQ@5v%Qx4Jb^CrE-JaK;*Huv)BQ>}YTee%+1HK)ZQ+f5a7;7}mEVUVc4#G$$ zYva%=!g$K{y-t>nSnSenuRrG7XgD(VFruxa9C=W>H^4gyuXiw^JxA^$cl-8Yy+)Cq zg8T1JS8i21rfu`5)|Q@Z2j4WG ztuO60?E77LITE&_EZ0J&rQ2tAr*BR~+v%3YB~5F3M=y^S@*Le}x0kDIXY&zYTd?R6 z!h2y)*ItW|2}nM0$1vSq%k(j=Nzye0Q@06>Sus zNbkAr_|Zy)l#8Eeh4|9@+qq4mp9FQ~gj|Ng_g2PcZnxikoqPsCxeNJaV~$k-kNWX$ zTCxhc{yc6=q{C9*tqW*}uzI8Vm}oYml%s`M&$>?A%PqVA49YyrVM54yo8;vQ+MbCt zd$5hY@XSBn`tw$sQ-{y~Xr9Xy@iD94dF}3F}h_ugg40)-<4)3 zH^AmW$7Wd0vl+=htYQ4oKPqO0)RN(kyjt5OZr)RD-XvoDL=LwMha3+r+;wgV_aLBQ z*Wd=B&UnHz@UqnEs0K*lqA5n0-fxm9v)32o5XEOip(gHj)=5)&(rG?JwA55Nom|oD z(}`4W-){H-oLaiUt;IQe7amHSzz8Akv`6yOu^)$1wk+IT{9wv3X#}qTJgLF!^mEsg z-Dzy^g3t)fcAr5_zqIH@Q>-`rc^Cg#qy%E~vSrM`e+fseB|7Lblz@ql-`lY>&qN@; z?-eaDwY@iK2b~D1q(&2CG1t=1hA5p>(FX8LTfxNnm#Q2cKHDiC;N zdb|DLcg!ul!`a*>9QicBgoyG+be7L;#g@05Cx|SU%ggTec$U6p#(Zr{s3U0o*TWU5 zQ!fe8rkby9Ty`<8ntNP(Z4Q{US$+tuB#C z>V;Eyz=gN{4ESJsmB>GKj*Z~J_G4zwwe1bn5wiHsHE<^L1^?yan>O2)nX-W-9cHQ& zYaMrr;kB*(gMfNh*kH(rbx|9Cht5XvM#V{6dA+T(#onr}4xj^`c8C0I3BPFlXjm3a z)o$Sa>0I8w5!X$uofG9Ul^hMTy_>ozJ{eT|Al_N+o)if=vI5&yoUa{ythn4l(jH8y zF55|kzpp4N`&l7%)ZmU2GY++9x}Tl&d+G%yD{%I20w_q?INSs!)_a zhi#pB=z^s0!~vTs`JzwE!Zj3BZq+tG~YeP_m_|qT^E#8dG_H75@`qUHl|I zP(e$Y#p)}UqB1nINPBw{G>0slySyO z4X+Zy&zZntCi9BisAALnf<@?yJ#y~c{@-yqIdUE{0csNaOQF)`zqJzxamUc!AN`SB}tju1}ARZqpPH+l-J(Lh21A z@rE?X-u&$fp5$+n70RnymC=Si&$=yrs7}AWxX4Gclzm(<7JA*4`U0*N1$kKZ@MQy2 z7ct27;Tzk|7jpj3c9iU$x|xH~s5Z=hp+g3pNr zr*;|TG<;UYb7^ls5gJWdKXvJ*0vJqxm=|3?YtLz}Ws=-yu+vtS_z(fF6g}9ydyV;S z=-jK%l>5_OzVd)A)xMK#>ml_*eR>m3p?_gZzp+Q| zbWDCdhz@^YIQ8MP`GK7$;zblgQp$n)T;%6uYvS3QUQ6M|E7Aaqrij_H3y@(`U3Sy4 zqv^0c0DhBAM$y73hIMHLs&=nvD$+H5Pr~`rJ@I-ut`J`MK1!1oveRP~IcrT6YCJKV z_A5g9ci|D2>%=ntiyKR03R*Ddx%rHHSI|X4$zW&fB@z zk)*A^<@Lh-oMesdjYv3sn+&!z2_E~a^M${3QNrQ8{FH3?$`v%QH{daaLRG8M>Nq)EMubZMGVPTqbZ&ge*4)UZ5B&k5GdaFM1E8hl>{9WTq$Ga3kKU(*!h z-bO$_q{iC|fC%>)Dcn*CV|=zu^_TDZ?N*(BTL8NE_)ejV1Cb3j_S zZX~CRQkAZMUoK1Izy52)opXX=YR$SIrC1`BnG}e3vLLu8 zQE1RlS9MB>IJ(TaX-m`RiSo;^P0Oi^t6$X=+|?1X_0M0r+O}5TtMY{+8nlMg;U0}U zguqMJT&~80i)~Sd!lkfh{vyMwZ3kxq2V^zz6-iLUYS=dwj_w1qV_UCA-E?NVhaWg} zIb>B#PB*edH=tMz?%C6vd&x+KbBoYf8)Vnv_Z;iddCH70zHXiv#6Q+U)_?`~{n81wdP&ykg5DCb(JNIt4Yh9f}M>@CC-EiM6 zDo!8NU=PF=q3_wg)hP-M@p*swXSq50{{{)p7;9L;ZpxilHgC10h+yLr-!x@|l-|4w{UulRq&wV$oRk!}>cr$`{D$+I zL|>E*111$IFC)YF3uH_~743Dex$VQ1ovY3mxY+Ydh7Bf179M)I@KaNp2u${)F*kVFdCDHR%4{prO282YEg#4Yo7f}4g+HWu5?s* zA4LKjkUhhFq!dnJk?@XPfnDuS77kZ*VeOIXpDdiCQ`HjahJ;o-->v)r0LxjBERF}=S|Dd zVXYChx<7y0C@^G5Az6c6_8_)xqtNDWo9!6SEONlD*y~G-o3dSkAAiIDlZE5{q0_|n zTAF=bMk~`675Ogk)f`skI3vc@=g%iXW zJj-bU3%X4Zs`7_l=YumxxW!hy%(Sx)@_#*q>sLn)bEFce)U;?nSt34u3)g>IxE&x| zsM-qmCuw_qgriDB`*=w!uvTis5O5mO^HkYNCWsnxl%MB<29?96b7vcd1zV2HR?D#Y zxAAr0Nrtq9i9YkUC2o=LZF~%##(1JXlTY}uvWz_=h64BEL`u5w;4=FEOvsvj<1coG zS}xe75E`znUkx*HK5Wz&0c{Z^7(~qYjZmvZOM?$eX%@b%zASHQUF3f@2$=5cKjXV1 z&v%~hdAT;Gp;tN7oHn7YO|5K8?&|&3+Q!pa#8Z)XdNiwfKBcXt+p3srS!vbwnsq_R z9;Bt*;AdTCsHw^WA{K3I4-6P598ZdB{e!lDzkxjP{)e`I%M_wz|7H70|FZp_HWqFl z|4{z%t)kR`1SXpI|H+0+kRpS$x)Ihq?pHO}su2z3;HY}HsqrnCOjBKRoVw_v(l zUv9kkE_UiuHx*c$g-o05$-AD*u^kWfxvC_#4aU@sG3J+F`QdL3Y_VsLf>H&J?qJ*q zIuN}cdK_9DOvXj>BRNTIwA5j8vLnwEs>eyd+g7Pku2*{#9JW*aGKD!xDh|Ot+03dg zOym`0G-3N+yKod?B#Memxt#{FpI=Gl4l3Z{L?RRdEU0H3UZ>?tG4XIec*g!FS4s&d z9azkXpv|NzLAv-sh-6~Im?N;#f0gztq1h!9aZi@5`SG%OL6BrE&ow*jj5XLhdVB~0 zT*~!Uw&4zC_5)6?98nIg+!kq?{Kt(Aj+6fBt{Q$11SIdKogi!g%Zz*&q_KXoE!kD` z4*&3h*wOO7o4^iDt;LtQMqFN`(9jhnFUosS4Q!m!9sTPi1h@HP2G!86%|mikj32P) zAI{}5o1x|(E(ae9F%L-ox(#TR$G;i{e8kW%jQ2!gak3Zh(HZdUVO^%f3rw$}BI3Q( zzfv4nGJp#;oQ*Mw%P%<~&nH8`1Nz#i&2#FcdWF95(Ep_15VJDXEIgs|pt`F4bGG=}vZYm~#mjkh{Y`hO%Pg>$i&Z}2@4z$>!toal zV@AN@{GHpe>K-%B5C2Q6urhKMn$e1H5A!(+SpLu3mj zdCM*SeScf_0C%A8%HxzY^+z@HSpl;rPcRNx>C5x+#(m#N1!+3@B;gF9>zW$7o>x2y zR)(V|PI&%6L&Ht{$B$?J!=CuxnNCtD{*~klKou7)^FQ3Uo*j)WQSd^PJq>9ei(Ch0 z_6iXrdVusB!8a-TSTZyin42t0^w_#+;h_i{2oa$I784mhF=Y%9p=bxSLTtf<7MT?S z9EN~OtT*%w1kRA0rjpVsfm!2As=^tq%%SPCx9(606P?SU!zhZO1?d9Jp&+$XRlv7( z#x01uH;wuu=L9K7sa4Rnk%$w*fqP>8B7ijpU`n1kC@ZZQ!0! z!BUEl$%;N<`AS`jRi$=akj;y?gbosJ+FJ#Pti8iV8&~MEq{nc{<77ys1D`OBrEr7| zGJTP}!t0_lD-ls)+^0_-(db6+yzLJgy|vT}E>xL|m{rwzAS3 z?J0k%#TfMUYpj6m?!EB6!#Baseo}OEV69&ck?rZ2>o|A)WT&fFw-v|jMCWvOOSORa zasjWOvH_<7#^v#4k78!lI1X$(XWW!@fc6vB=poyu=m*f*VZW7Po2Xd*IwPxz8S07hwWEc zNRGB=?NO_?^C+p4C-y+WRp9)Rv9H{HA;q(Gf%>b^i+1(>+=DGL5unJJtRm*l7wN<2 zGSmozAnrw6FC;`!p|^B>68V(=@vf+FS8>>GMsz!~wOGXlJPr;O+Vgvj3W)M~GqP3l zYztwKjC$h_Y_w~j3|u#>n5@M`TsMC*u+}d%2Y}nqhdgmoF6BPlD|cFSoPbFMjiaS0 zoEy;vvj#t}Ej*+Fj_N;f(xPyeeH(}cB~&p+l08!7GvE(L3hg_t-ASF=IIu_B`ImiL z&;=#nSR*s}9oHgQcvmu?5k8nsZAV{>S8K4mMD4x;y^p#r&+sT+UpyXxaR(v91q2@- z+PS?;1jE-e-sVMX)QfK^&)(46FLch!lMlDkS;H%$7k@SZUOVo{4?VkgC!0X3?{ z-JY!h1GGsk=oa{BzT$zPtx;WqUo3aGZ5<#qy&UPjRoVYtKFx;Lsl@?A`D{5#QN8z8}ia zM>wWRYzS8z!Si^S4B;Dh1ra_Hgfi~>z^dHJUF>lJlEqOuf@OE|@=8>%r@0Mqj4Jd! zWWQ7!;El2t5Ws`@ShbZOMX!1dTsraqN=69YKlh;wq8n|BN6D*RH}6ba@JxoGf?4N? z!u8@!YZ|pwt_?rmo~1t5XBwGF4Y5vm@Mry(wBl<2dg(+!+T6WRI|zQDWP(HhW99uy zVoZg(FV_#PU;KNuuAsx}$Q)x}?I3tO<{jzgVSKErKhE8v|S3l_gGm^My zOV`Bl2gSK228s*4U%3i(G*;`$Oe8P)XAshBHT~bbDI-z;->AvPO8ERgPiFD3I#M1K zOw^9$T)Y4H=5dV!z1W(8qj2vhPwSEi0mJK)CEW!P{{!#COP!z|?Ye0DTt4P(tTcw0 znKT=*8hZo9y`i|&O!)~f=tzUA$2+Raew-bD=21%Yr^=%#NaGV1D$BVS7*=yq%$sFS z`nfuG18D|Qd2870(st;6fzWR144A2}VhdJTOr3h6R&7Cv_8EG$+g>qwA#{TU*eS~| ziR+D-Na0bIj}{CBAwFtxe9(J3`QElfIBe_H7TfpdB<@1?weM>izU!lX{a<{&WmH^E z)Ax%dSa5d!5sz|U=G)Hzwh(h z>zuXDhy9^vX6^1htE+c)^}l|lG0JJEr_j`eW$z&{^X_$6bn&{{g$|QW(jZa34sTtL z?Z8T3%eU3vaVpm^G1>vUuaS}doeB+2JV)El*V9-z{%C8YZ|L`>>e=t^dAwH010oS0 z*G01WDO`g*Jau`uUkK>rJJB|`l}W@2sbT1^d{L6*ip^IfsTa<&cfG-a<1C@SmsHlt|n5lhKFayA#m9gDe*nS!FACvA|HL1&)zmBFjAOrt}m*N{!xGp`hZXCN;t(X zkc;c6Dc4o4o$aZfURE&9>j_d>pWFV=`u*=rOufW-Kt=g_An>T8V*fYP@Sn7Uf0fS) z?k zXJuXAQP56aJUM5?s6zRIfq-6XMzq&DzH)q3Hha(K0Wmh%Y>rJUQh=CRXP|8@%e z>-GJcc&~I>d#u!f%G4SfTjj8m7&xT z0k!t)Aqome5!?O-SNujZasMjAKHB)HJ&Lz7|GD{p@Es`p|G1Q@42e{#%z!Dze=r`= zx`54$4rylxKd5Xc%t#VzfnLTg`U?fg%gpT7OAG0^@h>08&FbNHlO7IF_YF>^${*B~ zu^JfHXPCd4Q_FG{jgJ`E729U`yO-ZwsZmB^rE4HR!v@4B8Y%K(vX5ce4Dd|%iDr1Q zH`z?ZXzR{7*IrhsXC$x_tLfpYmh0{Q3Ve7g>ufzxYXpgKRO{DtJ^R)o|1(QMyz{4Xv;_us*Jc;QXL^K8lG1Id zO1c?Zh0O(3vq-yNx|a4Z3>JHO398oUy^2jNU8p9S=p5$@B%v*L!e?h$78#A7QyvK$ z{PombgI4XW=U-v3*6)4pv`!OmX%p)}La$;hgciF<2aXpG2TjFBX6j9QYcsvJ!D7$1 zEKgcTl!0~IVkAJAozMd5Pttn8QW9&Gv<@ntD9C=*|XWT zlmzZrgCX8PGx@v56W)kcQpqHr){{2_RFIxnO8`wW0kk2+@_;x2oi2Sn4hL~|yu9VS zP9Lmq%BVh*-C#HUiq5?1Ls0~J*4t_Ia_0dqwLym-jRZ*KJ1&VP?=YqIhWe!TMX?Nz zsV8sMg0ii#E&_nSY;Qc;BtKKM!vWjLhh>b#N|l^@e~LOt=a(yQR+~;Uj6>v{%ZHe1 z3=av0z;S!dojWjQmbGM*B1A7}9Dx?4@L-YyU-OzooO14f7V!OmSJKCSKBdM9JE62Y zr>wPI0KSA55)EBHM?vHl9YH8c@vYP6B4b;m)q|MZ(0F<3tOxb~VJ7%L$DUIoq*u%4T_HieR5F9TkPL{#o!z zC&_QM>G!Lhdauszr+ib(Z%ZxStL2?v62#WE19vwa2SHxdG~Zmd5-(iI4&uIUuR9V= z+P4rNcJ}=i+Wv$9si#7Qo)|O69&#VFnxd0k73))`SK?d|PH^L%aiRuy3iA0YlXVE> z^fmJij-Y>ixM>Y`XnH$1W@~U=5J>PefbZ{yxffU~4l)?oElK5KG1+LTgG|*6knQpv z0o z*O`!jWJ1_`b*z`a?jh7C^V)IUX;IEUJ%+?O0yBJ$Xnb;Bmr z{rGYNv&nd~mt+pR9OMkiUtg!2y}>^5MWROG>U}^#At3&DXZyc!5p)#I*2GfHH$XrB z|3!(|N15o5Nr0q%i=KSD4er7t=9C?kjryuSZ=Z|J_VD+V6jx zMzP`m;z+3h9Xgs}IG18)ElvE~=TGc1Ox1WOc{d6WIEwggh{7LpyV|_7 zwP+W=j*Gx&IM3XYma?B2!GbA9_GoWX%f^WcPj5Y7RgklmX7?RL8+4zR`O}g}DeJ-1 z_^XJF-LkkQh(5MIGUpz0%}|Hg_wXE1vFTXttZ-L+B}shU05Z9gtg8I>i1^6Z(OZ&} zHEnV2R9B6fV*mu8K+5T9|MlI{SO&3o_~~^ajoGoLySj@LfA$3L=9+Fi48ePLCn?tf zDI9{s`3*UO?04Qk)WGzGf8u}7)o#M-pQq=`#dK)alyHW5-{tlo$QhtStpaAv*4s)|PUK4tdUck4iO zb_qDxG^+m7@nV^wmRoWDDZ-n=14=VDPa$MC(FR&m#$To!|7+zRI3>{LNPxB6?A00R zw{@^;__Wm#X^3d+#Jv*6_b;@7STxzk)*^l$kX;#IFIz*BYO|^*T;@S@3x#PbzLg7w z%?BKSS(O@gdjm-Gs24aS=|*~Axvt&oAW}~p7vw@=K`w$|8wPSyvpNE7NbkdYpJfY% zxLeV~`!&^jgT1k(nCa$)2Za;B3666#b!95NQF^!%b$+*W1yAT)fwKBeEQzu__#x~g z5H0ti*Avx^;h@O->K*n)dwu%z!G6g&S|En#eqJjYe#}b@bWioeki$N0VNnCflz2Z_ zC11xw^oQ#MXR3)~)s35MOEKg?^f3&71K~e+4W4*QfCV|Gl8j}Kf=q-(L*`O?T0L4% z&+i&fALVVQ=N-e>H=z6 z|G7&WWt8+A?k#0_fj~Q@q z8lbb1@1XDpFT&lbBXzHb4Dz6G&G^l} z=)Pobr(nPLgW!!Cl|15F#~H{z5c8PRplJ8&FGn6MHz}+$QlOVFwdx;Nh7y#1x44em zkYKmlrIHDgH6xkPjvh3R;m_qG(@t+z?c-5ZAu)jSj7acDtJyvm5|pni_ME3#P|it{ z;tjGw8^ajRlsdmJ9NiU|AH&!a4zdLu7w5X}-`KV@Q)~U>LJ7+W1Lf}JEtO?{23KyX z?tU7!ibnQF1K;T#{^(XyZtqNVy=DMdS)z5|DvX~{zzxBx|Ak6mANn3)0v)~AO4F#)J>4x>+su52alF4 zO+b?LlEfn!blx*g1E>Up-$v9x%?gnHrklKuhlQ65M?>AR02U;Bs@++@l6fG+KUdta3wn`W#&9<4@4@8 zVnpIdQGUqe;@?e%B~cUH1TVTCh0g`tE@)J~F22c89p2A_ei51{!o-$jIS3wpZM@k- z5P?V?zLX#a&e>R=Mu=I`H>aOr50bL%$?SEfd+TO4$b?NdEoSEjv$MEN5}b9Bh^!AM z{|#+1w3GBWVfT#H0)B%~&HQT*{J3maP;&0OrZneh>SO#!1ApY3c36Y4ro zVCWZ(vR|M5MG5Riq|b_u`+sELc_mq1de?>8G5d)DsF$UaKMBTH;54IpsGBIeS?gGL zKkSWTpq6*dc`h-^T23>LC&I#{cJoP&_A?f@Ne;cwUkT1?OtxKG8HQr$8EP@U3Vi@ZP~c%OjFz}+kwrDk^vGwufs9% z_iX80rOnla0Gy|PyUmgx*(K96#1G#K_ny~VNCcfc`WgcPpD?)&CNF7;V*SE{pMft> z!M}{ta{{CM({%I@zqCe337Vweb#<~3xCc(3<9cnPVnRff4w&dY*TPI2FgnXb4BVdr zYMb`rxX${bE=<2LJ%ccTWLe_{;>+4=+lO$O?Bu_=q8^;*x1ONCU)VkV%51rJ$-1uNa|`<}eHe}|;lWvNwogi2XR@K4AB^eq!)ey{ae@VKt}$pcGn^XuNs2x} zp~GCRv7EZ~JMz7WDFH6fA2a3-=Ta&FbowgmA#hXPSss`?`${HkbeLmA)eVMY8bZifZlt~A$Ivpwpf2oq4#1`wO)_)7OX}5OUaA2!aW($O)xuw;u)Cn_@ z%Gx{g)4U`jejI%k8Gd{9W|F&>@U zPRn-|Iad1wvV@&Zu6}*&o$=e?C5c*li+6$bo&)Qc<7~fS)%S$Fb~Raj6WpgG`MPJie0h^k)_k9q|Oq`mr1Shw;IbzjFJQJ)W8SD~uDp zrU(%qAOV2g>UG1FtKEs`=uhpcs0ZLLst4c4v+2`K@bs@!f@^eXM|jF`$(zN%i$|^k zjY;_%!Oew)v=q`us1n41bQ|WC78atgT2@ZWH8%>`Y!<^0QeQe)eJQwWq@)NyZgo?w{z(8iU7#KR2kt zsK$Zp{R2AqC?=?1p;rh|_9tr(;>A+!-J$W?jZq9!crIqOHf8~5E=$#VwJmaq`18mi z2|O+~%d@4ou04i#M0BK=^A{tOGZWi=gY|Avb^HmvL(hi5-?vL={_#~42(evWgQDl& zzjk}LF4CbB4FhV2bcMBe1kK`-?ni0fY6HOK-y`(fq^915rK3-~9Vb0XSE_CYRguPM zl9`cVo_`B#Ha0XF22OY>erkQ5sG)O+NTh>TMMFOSU}&VXi;sLNLHr|FP$^wx0C9ID!G;Q{&{CsC4DtKafWT>(tlkMH6005 z`!ZCTiZn}IPx(iYZCot5(;txxpkaD#*2a(>FC^#psG67yInVd`kS45m1oeQ$s%)`U ztEc_l6smUbq%XiXf1$Ycaks`{)lVa4>f?GS+hQ5$M8omLdfz?19eNb01(>YG<|2d% zaPtrtvsFR{r(Lm@x(8KPxyHXaN* z1P6@UKDc&VRYNCMISVuJgr>)Y1MzOqL&$NY>4qb^Z@NB)`#_!u%PZ?1xmBG96m@?% zpZ+!x2cKk;Q<1FDAZ>je^WIk{&Fu5j!BAR$=fCeXgV4HOplI0H#Y4{sH+(mNas#-* zcA6YCGq?6dIwTA(WVgMxu*pYK^ata^DKrW#?^~KW*?VKWQS_SJ8kID9lE1Y!<9P#t zUp=PcPF1cwlyiK;S|Ap@DM#+MWlHQ_lHS{h1la27BN??p9#1dKvJ!Cv)cgK^gzlmj z{2S=|FQm|?vBb_#Zvp-P7gETRAhvfA=NYcyq%x;1@4J#t(Oslagp9UO%t4tF8tiU;zp97u!chp7Nxr0<`85Xn z**^LTBY9c@gr@!E+_a;?Mql-w$$B%9i(7kU{sE(nSBC}~)r5u-SOY-X0PDEd*8x6u zraB*0S(~xUxRcGyz!R>j5CPsHF#A>E0m~G`f<4^qwW#Vfv@DcRvbLueoIuCoN6?Ux ziMs&%tfuRkn1K2dW*xV<&$J~YfA8EK8^RvM*CF}yCSi>wLJQkgJS+Sw3A3T|liW)L zvmXRs_Sl6`EPI$@L>00IL zh6w|Q3=G31K57&?2`-R)MwE8yqnL$CP^e6R1H?iL+j$m3vhuTW>{%;Wf*-=>@Ezhlq z-g?ZBy<|#dYuO~{{6->vz_~~P@FvIR1%l`N)4^K4dD>UsQhE=&SM7ss1bZ(_$L8ML zzXRse%}^{q0W@`tEZ8NBg1XI^dsLCzgAL?8oRqZ0&)b<^2HSfJPgAgE{HW#-s^xi& zlC6f#2gcFqIlE}tYr%7xWNF#Y;PJ#PkF9Xr_iVVE+c^1*5l9+-%5rkOqUn~4`*0bD z3{J9B)jq}zD4Z>AD79l~E#e(RFZm-}K78KnRFHn516cW52m5YCMeZ){==6~kuHeau z7ATYOe{eT)sxyn=k|r|IDZV&9*Ye#aOYM#fNSe`NCmm@VCi|oi{|XT}xBa$Zd6Qz* zq5{lw@o|o3ELdvJ<^5{^hPtosvGJ4he2Cxmm&fcw^q>El-+zMp|1yOv-TzfKCE8kY z1KR(C6taIr3Xx`eGNgalPfw-({&@@i+hM379LkHKD_h3;U1OWAd~r7U@6l{a+Ct=) zoG4BIwD&AO)B4zQ$>7wLyL%u_nS!7V=Z7z@IG^1J6Bx&qx`9pcn)bbJ+;;d9FX0mtRm=wcJ z-SYcV=Gf$1@8N2LkBk)kT!kw6AxIfU>Y*a@hv=Q33cIAgd)aV?oP(lnfZrjtZ^z}K zJ#Qb`)%j^GWcmDxio<`DaE3WZUpmfng7dDzax?bSBFu_bt*TSbVBzB5=h?lq5U$n1 zd(Zm>{3KpT6tsrg|6qOo5hmAl&=`1%nhLxOC=kP|x_0e4Gw4#;_>NKvdt$ZrJ$1$? z%HWZ7JXO?Hs|jK__&Rnvc2zA zjgp1O6oodf)bO{aI^&sSB#&QZAaSB5@zcG}QrlF8xtaT2Ngf2=AT#4ek1$`~)hA1S z|2_1%gk}MFJ{Wv!7MLB|Ob0!llX?Fp_CF?U=Nw3=9=mYHe z=Th878Dra}<>0uom)}yZR51?^My3opMAk07j*7<(SOVIz`KmHUDEz1eE-Mx1xi7|w zTw$-HiAD5Um5;er!hpepklyBbl&5R%21Xx4{(4cu<{4fw<~NkqmtErRIICuq8aV`Z z2N{jL!`G4N%f9vJYQ-;!m9<$F-pFZQ|EuSTK+#nJm8M$1zN;LFAEIQU(@a!|J1zYm zvKPTj5teY+Qi$G@#?WE*G?&I=-Kt|}7<{FT>AF!AxOPmI0{7oCf)zopkFAxq3{~x$ z1SwL^t1odXT$MzDCN;xi9Q;T}DN{txI`JF51jofte5;WQWx(U$v!wV(aC;r`o z`9v?rAg%%>0e1YS9Pdk*o}LDM7B7g7>WtqG5`iQDOIrIq&xUmDbkX zvg5R!qqH|>)Fm~mckTob$?;Em(5JpW{1B}`JhXdtk?qj}`P-nN9&+wg-j0ubdV;1i zh=m|_lNWl8{^U!kD_%Wl-tH4!r2S}%z_pL^E9e(itZ1^79P+RjHX^R;T5%us9lLZsabuW_YqIspL0pUu5u*N zgu&N{(H{XYE}-(^Jnb*K7eDbzIH2>b@%{iMAB6JDdwpYVh-8o&W9WHl%;$&$tQVYc zED4CeT|EC|(=%I62Ak~TNbec5N{GoBYFL^jgr}(qcrDqk+Nd5Gd2d(0M~n_tOljTw zw~m^Hndm;tAUQVYVRzAQyosc%I~vW~Zld8Av5f&LUC{l<20A?~8`E5-S|s^ND4oiw z8uL^yk>gDt{rg2nt1*oi9Aa8NLC8imD2}R?#)!lYyxb`<>3PCZntoeIxb@&4@G*#Z z?yF`Htb9^ialrr4#&iBFrQ&X`E%w%o@A$_NL%O$y^XG>U5%y8hqT`q60(&ieZJ~bO zebGIE1K!Gw)37mVF{egfyjVe79G}dU?N~~rK`q0Esg3C`AJNefuJLNMF@{NC@Q(gI zCaqoQ5wR{7gNVQ3KQglbhu#NoQ_OcPi|rkBd;6K8WwJycMpjJKA;bGmQ%s76kisgb z(BGs;XX@C-4wXNrkl7+@vEM(BpQ!lh+5HBP*#+kdrMq_zdAk96dvh8S8|gl6l@Swt z={_rk5v$I8r+0;H9V2|F4{2-<&U-RG)G*t0$f{j>C4c(%@oM_Edx}Ib3QNB+N&IP?~&2N2%x~BV7Icw$beH!!>?49bv{?wxHxc>a zU)?)&J(9CnF}mQr$>)4$qP^3yft88Xm$YjM>D_}L)fi2W%?j~d%;p-OF!Pa zQMZRyV=oV>dn~~|nGijaZ>gn7p72rh5+bQP(4n(mwxF-SOmxs^Az~ohm+O-DM(#s0 zZVn&DU(JblU^HJcmagjC>%*i0JM7-M5$AZ!va73PyXS*V=4g`}H#Y$x;MFVR$N@!= z7uxAPnvzWM zzGtBJ<%yK4l7i>p_8|bS@&FR&5P|0(0VdfrIkSAZkh3kuUIwfoOg(SL6uA_SQQveJdYQy8DmUnQB4!BA&c=` z%WN?_`;=-A(x~0f+QjUxulOu)D!GrtHvTT>7lu!J?N)%}$)~p@F~T)laJjeWISTB< zVi}|oyq`iXEDEUugc@kY7q-FGN!apW-R(p#ZXdaZZeh-$wEGa)sIk>PnNuy1-6+^b znKFVIBLw(&zURC`JG(O_D`>&QhIwG6(fD{f6-Kg|KH5PYF{%w~buK?I1`9VY?~Ge6 z6&oWwV=OCRZOOQU*yPbTnq?Rt#L1B$p=NMFrjhy{+Dygv4^eT|*y(g@QNlR>?`g%^Ub#-tPljqucpcENk}929^&Q$sSR+}TNVNKE!@V>{buk!I z<$YW|D@h*@9%zi>{B;HU#1?V|Kg)s#5+_W)kAWpAnPr-dh-(&cBxkqtG?w91H39~2 z6PC-C|0;3V^xoCI%bL~Imy07XD%=>PHW8mj)1{nfEDbZfZrPML$GW-2Aph8weAYl@ zBOPPW`_?AgG!K#QIR1w){tH>?QtG|K_^b@)QTnDpAra0M)8zUYuQk#raCx!I_sbkr zJRT`KST~dA!Z1um$M*8Qm+0rlFDpPcjxj7%69hBLB3auDQ7AojEUle$daz!T(cYi+ zgWR7dbhI8kWqQS;(k$kB&>B(qwS=@X!;9|HbBXgW8up;84HlRk=iI^f4eEoDFZA z!G5UEoT0Tt<#;xiP%cE{=6ZHr?^-0XA>4?T1y#rO`4nS4Ss7WbK0B=YMBmU7>f0e> zwOcT^>uxmIY`fKW`)+RdW|vQ?7$Vgclk=cI7Dc!}DtP`PI)d)j(A#+CDvb*!5mBfyNefx=|iKU^Jp=1(fL(mUKv+%IsDY<61IP~xP_`hWi3xhNBuYNFQ6q^*V6{`R~ zn2#K+_UTt`?vEGe<3&1_a7~>4@bZO7Ola1Lxd&4=n&1E ztrIKBo~y36;_O-A)eqi!KC#Q7A<4BmdK1-s_hH-ir&*H)1?u~NFLix~<+LBckJ(Nd zPe~L{U_9q&4pmvnMBvAfHNoBkn>rlvT43aMHTSB=YWhJxe34thAzlReWl;@N17S~D zzv`!f;0{`h%}__2KeOxf%DZx=TDp)?NB9%gud01g-TM>jN6+?Z{M&)j7CNfe$XY=D zo(q^9-}(<`UaL2NPjFN z`7$*zbN?MB_hZ)b&2^2)30{v4Y%JUP+A5l^;xoDN$EHD`YObm>hVK4-q-c*NE7f0| zTD|o4MVI26l#KTN1O6$213_c5jjue;nVrjbPc|&-@TTrg{mC;rm)?M#Qx=?QW=j+4 z9a1acrTq|VN=N=*Twh%1OIQ|pOvye!zmo19jBPU%y|w2Vue_A36c=YeUCfDB^NZVk z&XFvU@XRw7NVro)WGGY!M`9jbkvwv+2*>{2AO9B} z%RfIc)t?gx`5!WtQkms@vajBfwuT|#)E(JBA26j@zC;g>WLieC_4mGU`TR!yr>{IZ zamYutwg?i;UO9}V?JY85IaSI84>vD94PT{TrWn3olnPO5vf+wGr6nCLo^#@!S5R0c z2mw7ZshKd_H$(bOFM8rf6XpA@1=+P~!vS&aLl=m*UhB^iu9Ai(WJvw~awQb>Sb9W` ztK%rUwLA0*xccx)(`Eg|vcB<2E zu7@>g8)cVyi9W0t+}aJa&#n58m@G*W5`(H1O?8Z*S6^@|{qB-h7$lDuaVs9?fQgPg z1&?DfiWUdhod0s65wT0gk|~NF#6QpMQh4H4r*k8xB6ixE;m>8yZCPRqw8GnO0q@d_ z+rI_6?MX3b)OLhv!7X|-d))~|MxGjFBOk8u7~uJ*lI;(s&Xg`0(pt=EXGtp?q?0L%I&Uz0H_Aqz%2(i+b1Ilh+uK%@F-glAYz} z65EeeIhG3~4>rtKqx;4w$;7ltW*q;Nc-u8Jb7SH%A;fnjdF<`yaf$pzFNf|CL<`{S zC-bx98@Jl|XYS*#wA7q!$0z3<8u$FpIb+ucMs^OU1x2sfgWx+N2XXd zL&?5shcO+MO`P3Sgr~q<+Mhq;H_aufZ|!nA3{TlT^DCY3wr|spolTm6n;$+VmY*&` z0spqo+_A`wb2BRLCE)B@g?pKbdu8o(U*bWwEg&Tpd9*Jnf}diAxSoI_GkmBRXpmE| z&gZ7Xr30PtoAH>G^TLgkfOfS3B@ueb-Shjk>j+kE+9!x~AKPR4C-;brt^3&>?+3aE zR?~G{xgSu94aN}8rKPJJUI6fgxv5jxivAhKBb2(V5+kxD?H_X=f&tog3m65 zD%6*b+IL|nk$C&Y;f|O#@y#*KM#@@F2wbC&yU(2%Iv0F8;+hx&_qDxCaEL$YfW(?5 zhp{Y&Wo)Eu=Mf)`%wBK#N_T_&guoF_@h+=ek!A&)#77${#78i9;-h_OY&bmi01q?X zrISFR>39Md1S3tk;!i+A=^(v3{~^hrB~IsN#vTDS3aia&QHXBlRFW;tzN z7n~7^wCxk_ZXUK|vzTV>NE-HK?sJk#q}wViR?HMQHax~`kC(WjRa>GG9BUs>ZGu&e zEqYH_Q2iz#p=5ib{4urb4XR|&+Hqpf`+wWO;|D>X(0VYwVn2KQMb+D&KZg?og-gD= z(CMoE$JQ2o*_`lfscMS1kPQsdbz%yGtkpf+=U;8`T-+`+Uqc38U0zc}wtIddX?(9Sy6o>_U}4rz=nxZ%Hnl>;T~6rL3gzGe6{K%M)G zQ{A}~6;Q;JDo1gjNZq*^HU`((ub4^?#A?Q7`Xx)r+`G4XDQzbEUNc(OrkRaLZKn;u zS&%u#$>i);$r=5VlW$s{8caEERR1#n=utPrzh!%-l$i5twSFQ2dN$htGJK4I z2lTj-Zx?XMn>!Fb=J}XJH2Nxv03(760>^$!4V{|zY;@qr&0vafG=UrJ=L`ZizV>-W z+@xCJV5tpNB#py-!)WTOYW$-IXses)&^9AT!ZQ9 z>97dAwjzw2zv~k^7(vd1dfA^LyOmo8P6Q-RlLz_vEa_@cc{^nwD`#vbPd6Tlx7cyep2K~?=z1-^{)qiD$l9uwUf*S)k;GDa=y;?uT}odQ z>$?7U{KI5Y#+{MIi=Q+6cJD)wu%HXrlJ>yPZYB3mt{0*2P80xZB$#kQM(F$58izF1KX@=!NY7PvU~o5pgXt^ zZgDIe@tl}o@eY`83;UemGa~1GEM-;axIKh@kwWQbk=x|rbEIn2y+#FP@V zL4;xMQe=%a+KA3(_E7PZxGDJ0x1A^y!IwCQywM@+we|bnzhNjR2zjHG*$cdoxC)QQWJ>q z>*v2;0NhVRoyV7^$zfIU;y!2c%YO$x42Y|(KJOUd!8hR}iL2aH>we;>34|g(P~CPn z+*dYuaVgSslhtRu8AP&6Nw;$vJ%;d$-{-nIW{q%5MJrs;DsXrV`FKbq_ zR@zkLe8?|?u^%-W>aLO9!5OQP`F@>qF@X5VCV(DMD*%JHUN8SDc}TTp=EM+@o54zHpchSfKKOojl|)Uoii3jb)dhEHx!P4 zxG#5FwK3_y4skw&(A>+EaRTQ{0W&fRv8&<_OR;qh;X+lUR`>IFzF15BJ%X3Po#oJ3 zAZ@OoVho*Ny-@%@aJC~|DnkJAaA3|2Chyt6oZ?^D5x`jlw~mMUyrdmGn^$qYc3dQO z_5>}BMt~2Riy(K~ki5yf$Hn521;!9QZa!qT?s%8$Xf(IjKo5>I@${#j*+oDiM920fKy4PziGQB$40VLf=?a<&%3P#L1dV|w1pJZK zw~1n3p92CL7y^e7`}~qCUC|Ow@Xnh19J&D*;Yro#k zI=&yh*QtkH@5R;6+Sqb7z9^Vjj@)w{HwoZfYkC6)-ia+&?--6C*?F}n}7}hs2V_UKEEvugAJoL<*H{!3h#6f;aAm z%va~r8SGv}?SflX_Xe#m!Sq0eVIrT)w}blF07)e?YHl_H{>9A?=)Yy0VE%WGJh54I z6U`06Q%UAZVy=IxUN#J=InC@ok7vY>x-gD|nODAGlw~#>_>rl0WS`Y(@!(3){Z) z!8R?qy(nXeu;If@c3^zV@NQkeMk>HW{d_ahm^nyix?EyUizYfxtg^^>Jmsn+%QFIZ z+WL2HhfpD~9Ol+yy(Ruq?ipC<{ZuRvqm-L1BD`mM5kdW=eyZq@f4G#0g0>;Ii9J@U zV&u0zeKg7apzcvHxxrL(x!F#aJiEGSZa%_5H(O?-kA(S{}gZm9@{Rqb= z$r1Kut+CfB+kKUYQJt;QLD8_=iz%^hwOsK@raKYF#ols4276T5i`SW-lei{;a%zxA z1oGhO2hXkglH=U#%hT}lyZ<*Pga%X zNSX0c|GE~4B@e+N(*!FQRl|U#o}k_ImGPm_7V9Fufx?E+l|(#5r(Ivq z2#KQ}i{->v>X@TC&5p;~S#+u2LmmP+vBgWq9ktA$dZPZe{4f@ zZW*<70*y}pvxgmA52s3vmDftfaT2d1GWc&?DLePvQpWWiea?JDaXeQ&w~o1DSt&ew zg)e{U_L8qO0b9ZbYg6l5nclXlChL-Vz~<#ij^6Yt*x}M&Rd9j05z=d&P;8XJKr?Mn z%}$hgHu`($?p@G`9iM)wfwWt|XX$y|uxpqVb!X02S6{Vr27M zIiW2bxu~-iH_=s0XM~!$H1o{%OV`mf{rA!bgc5mdfLk+=3^J8d{<2)?pKWXXZDn}J2ifM@;yx9C%&3gmTC^^z)Sm=zHa46k3SHFZ_DZ>N)Ho-S za0+n(Pw|9QjLx>I5AqrN&0GY3=eI=%aXvA*-OqK@0&8|C&^8y`O!BQUyYbD~Y)l{q z;g05*D%T+W%I5lFt>53T@8}w)Hg7+zA~6K^MHhBJYJ1Mab4VKKGTCjm!Rn15{37f~ ztq}W}_q~T-MvuWi9{+q1$6;iM0o{s!c#gg@Jr1QUMSW#|?Mp4{==Ks>Lt z#NX>1DpMNR0MTPT;oX-+Q^guF(z5v}9=E-epaOPRjpu2vmEE4#h$k?y95W|;m6yfz zmH#68!HZu$m?+&m5#{BW#FpE7Z3suk0dcV0c;|8{J8l(Kd4EdNDTuT_!CCPegQ zVPtTsGIF3=wPuEY)yNW(`1)=dnol_3tDyfvOC=^qh ziaCqH{x0zL#WM~6yf^Zfq226z6fZ9{9>jix5hFsm>?B#*3T_wP(TE?DIZcT}JCl;5 z0<)aaYW2`I(BB~4cJjsiKc3zPZbgPkQ^PQ-{EjThRbvd=2Y5U83y z`Jfw%D|#@XuXKEgQVV~((8e0+P-`BdX?t$m&*z*nEjIHzWO}n{hqU{~9{E#U;GQOn z`{KSL;U=~VE6v7qCABS0(^NJJP`MuIx^sW`w$+&jK41ve`u1c^Td)QBF7D}NCkm%Q zO+Y;>=3ar5(=&eEuJf`s)GRJc28l*ZFGe_HfP*QZq2pgmkzP06w;)Gd1@iIpj^1ZE zs4MCknKpQum3)NTT>gsERLk7tcSP6Tn%8fm4ODJDG6Qd4y{?QyGQURJ=T|PqGuxuR zbROA5zx5=WQ70H0I)#q?aMW7zv|4Zcgn0NcqEkY5!u}w6X zR{-BQ8srfj+4>0&OLe&Xn4^@K{AdyrFjn-cQWmst8tLDqt$YQeu+PG9|7$2=u}cD7 zOy<6>ID!oeOuKGJ$6V62hM`%JHoCuePrsflthxPQkJich0#fPawShPC^geb+v3Ynq zh5Ya~Pm+U@1B9;S_f7iI@Z$b8y#E4Y#rf_vqH^G#w;RO;<1#nnM@&{Da4ZWAu>j`L0U89bDpdwQN+#(6H7N{+)wOc6ejCZ zQh8U#BPqq?MGdGj9_5Plu>67>Pf53dm9T$jZ4ZDwgNG^4G?9 z>tKTbI;)#!^U52>zsj<~AJ;y2?X^EEdr0a!`h$4@F7DFEMRQ1#tb$JliMP)^|9G5a zb(#DcsF}gRqI$GDD}HW0hitcdQwu9abMm#(B}ty|I!G(FXZJ0oHrXVB>eOSUSxJIw zqmkjR&=3G`6nJD{A@FC%3`QgsfAD?Xv%2cUTF>Fa^6^nV?RHtFAb4FamS!{-#8Pr? zAk~6zF2JwiO^bNC7j0C-JxjJmv2?B%ia!Gc%7K2dI=z09yl<3!(ZtXv*@4qm8A-b= zS>icF(s}}m6SQ^g$8zXsZprba>DKyx_<9eZCWG$Z9~41E0YT|SM4BK~IwT-fs(^rW z1nEtB=Mj-6O{CY*d+!~j3J9Th2tD-BLV!^I(f9t|d+*$t|4e3{NuJDZvd^BgyJydS zzGgdhb!87`cvHvsAj|mrVTF6P{jOq5Iytqi<=EtA)1_125@|>zG_%BMjnde-gpFxg}l2MF5u^Aqz|KCcG?3475KVd&Q zKUI`2N%wBBMz6sYIWj1;Gndd z4dGh8LEZrk!F|W^T@yn0%kn=5cwBw8N^8DpZJ%v+hAwx1INP1CgL(JdMP+yOltCNQ z5wmt{Q?P5#!^>(!^J&v<3xF1Ll|g@~evEFx;bS?^J!n*PC8{7&_^eVv{k2tSW*Hy+ zU_<%Ul7IBOC6a;ZZ^u*b+8AQ7J@ArO&La#51gjlC6Ubjo#m~&Q%*@XUo%6_FM8?lR zJSyF*91k^q92d;h#UiXjTSW<`!dfl#_b90GOf}SRC~@Y=yd4zxpg^^8>x@x&nE0=s zgX4nBTFS@7>7u6hA$bgY*{uG;xKSd>0v<$Ow27H(v29&D`(A&Dl-0dviR|)TuTBFJ z+Z9Ib0b^Z$;>b;}YmqbW$#T>7S8c!i=r3^5;;Ynq({SkKW$6u`&y^!UR_{GtZgva4 ztle`D0>@mJAp`bMK%!BXpN8L;YY_78Ui}>8m*4dH~{CN0J@Yd^7Hk4PreUuHMJ_vN#28)y+JOsymI@K zE0(Ny9n*Mjlt}-v-Qu|Ykm80h;YM)NsSWKce0!sRdc|Q~+9<2|H zlLn=ptqB8nc-zFEt@%<+9bOn=hXw~ruCBfO;jtZ9`{zRHhlkhG7j14|yXVP%obO_X z_619mt4K}r7!`dNNjdt3-M@s=;t|fH1>Ho5e_A$qAi_7 zO7yo3G!bad1mk4C$g!KE_AY;m3kn*`p_-e<)^=K;w;2JawikBW+iJcEL^l||B45pO zeCIw0=SY}@mOSRZBinJG0-JH96=&~asnyhCAmYpa{_qiwZL6oXY`+j!Wc86A4cM-f zW^%`|TK1XQ9kTLCS-Hl-Ny7m%aeFuWJMW4FBAK3PiIw8Krke~RI#eyri}P^$0ECje zJ}7^?rlG3Cx$9W%O#05Ac)_*}I%Lx}_gkZ_;K|}jOM{IlEpdpL6!m?rDEE=L#^=~+ zumROlIzjog$C$4t#|@?-&6lX66fhLA*25lEaoaknJC~)tc3S@_^2@u@BZ^X=QO|>3 zEpHO+G{jL`A=u>pSq`q7F`#lM8cx*ni1WeJs9<7;A&O^yzwh7= zyNsivSH;@(cV2-koOCVmznZQWwVUU`r1W+YB~lS7xmH*F9*MWK?!bo=T*vfak8m-; zNgAb|!Kf1&Kv9wH#`R7L;!aN2tF7x}607^#xYV0K@Z#i>_^`VH*S67k1=1&XX2ex3 zT*H@h)~CFeFUCBBW-y8AdXD}$v5?{0djfp*B-jzE zwY@+sPC-|e(|dxmc(PvH#jHnljR;|oO*9aSWW zujnj9+e%Ed-oZEEjYs;D0X7LHIOYt-Cq87{v~&WIw0HC}nw>P8JIpuDapL17gy{x1 z%)}dA?Qz2YSx$y@N4gZo5?=qaEC8F)`0tGm>UZjv^q;3LFNjPdyc$GjhxZz_)zB#i zJ|@SnJ|F6yL`DM!ZNCsc=+G1xCB1W*Q$u}dt^`gGK`M%iEy*~Yp(ve zFGeCzLlgY@Wl^iauiXNMbHkAuliCCN`BB~jA`B0;2B=gu#a{Jzx&RB3zc^*`2N&da z)cFM_Ir$IyI z^OHTq<-{}~a$Nu~=>z8% z@3k%poj!gY%xY0s)Qw~b0gcHEPfCkqGEr@d2fruH;7$hT@N6JiD%ba9*cDWGj~eRl zYCv+N$?i35pa818Z|w9+pGjeOHkre2U+)CGpmSfq8_;NYE7a2%+axOy&yfG}>4syL zP;RRAs^^pL$K$c2QJ(B(fqdYA+>2Q2u?Czcn8!sbHK~YZW4@oIKK=HRwJ`3dT`@`G zu;ZoQ#lY`Ov)1p+b=dHwfY?qa7%EpjX5 zjbi#w?0uIm-;>)zM(jmQBG!LkR{uF<^N*mFW)}laHolHK@zIXAsB2H+&*d17{x!@wtW3_uB9K?(?H?e7>k|Gflds1 z!Ormle?<>zxXczd&J2d8_w@*#?u)jZ{zp%7@TvD0CV@-y?*#M#%fAVz;9qK1=C7C^ znJ<8+I9M!yg$;+aY-}fFh#?pX-fLN1hVO6wFieiz&0)&H9Qrln!g=vBE|@vDR)0IK zruN=}+Q8(P%^;pBYr!-AZ;8DR6z=#4rdf#86D$zbobr?gq~M1D{PV9vLaFh>y!+hey@Ao7XbAZ z3~c>VosM^WvRlIm4SPnPvCIoq@aW}L`bzil-aW>5Sy<*49|AkejI|X{r{qmhGCG;>G){0F()HQ^-i@7IULGA0f0o-y!Lr_5ENAUo{soP>e_n~?#t>|bBPI; zWU3eTJ;PS9Vj4$#)O=yAv!~sS5W-uPRxr@IoBIl)hS4AA0yh(B7Gb-E^VMJg?C0=>WYWkW>FMEU-AIcn=zhG~boz|t?itK- zH*^hekWfEoxL76t(dPbB1R;RSc5}WPAv1lZt~4yGMhcM1C@n;(b$9E%)l*7!A2BC| zJ(~NpdKogOEQT%^>aO(Hjkr~qv%HE_n>j}(zUhS$+i{T0RcP;icWFVK3n9!r zCC@yazgKe|Tt`28#xmz8Gv98BrnCdH_uXl@UGcM8i74G=9>g4JV(~aDBdFY!>$h!m zTWT1|tng)YSm4(adAtYt-XN^>BF!@!kt%%l3{iVOn$X`#_A_@A8RyYs>sl z`A4lnghxY52#3ZjEQse}F#SA%f=2m7ifeFC;{`q}^+vF|U2*ACtNDEYCX0=nXRnQj z=)m{Irmj8YYp|j~!8RENG)NRQrYc5MJF}WimcTqDU8;aTrQ^;%Xye{9+V&yEGUsCTW(ER%5KYsDzE9o4_AQKCbog~S z)x*d56rL*4MIdKI&mkJMr9-7H#j;Q0Z(&jAO0f%E# z<;G9FPm?b-(XG9m2%oK|swB#;yq4T05(W8%@Yl7yds5(C-rC;Pm@?}OP4b4OP0tNA z+LTY%PhFmY66CsAfurKSp7%^=fSeK^1TEc6Vp3_zbK5uxa#mDznBEkfa<@b5@668m z_Lqvc?oQk9E`4b7Ht0`OocC7jwXK@#iDj#wRjPI%)%a#9{?ToGXn5w6PU0j_hV&p& zkBe#hYfUMo`O#KWU&I7E?FbEzW=MSX6Ykq^bsvruFELprtcA z?dCYg#;4-h;eb+JXWG(%aHEl;mJM;YS7rL=1qM;?IX%Y9s^bJ6=;@nti(Aw7Qd-6n<*2z5aU3}}2iaoxW3R1E*&vLxB!-zMlt-s%Lc*jV`TF9Ib03Q~r-ow{kG_pQv`>-AZlb zncy7Z)v{dQ>6trm#?o1|T+^HiD5t(@)`bh%F6)rl2F6INw-X@6C*ZkWd`NdKn6j^U zzMvYIXjil_Y95JO)cy`8=?dL)eUI=27NuMXcjxheQbVbRuv6=(`hm5D%@gqc320?4 z0o`D>Zj_Vo(>JZn|8y7W^V4ZL?QG)P50!Q$kz1PWRqeM4U~Q3>TZQ0u-6pTToMNEX z<=W?M(~XMaG@^D4^K+U!+c*||pbCPB+jZQXHLC6Nt@ubtaL(E;eC)_wRs;ZXMMuJH za@Wx2+vkY*1F_2-QHa!7+H}lV8Vs5v3WX`Sx824cw1|G9pM zo7qd5tH?_ky=U_>obM7a!G)EdGfA8yvfhV&p1)*q^#D^&u0XZ>2Ud5}lYNUXBKWMSL_<2q=sbeHvP zI2yJw)u9xgliqlY`n3KhTxC;QJgUXke1pM8f9aA`Jl)e~4?ox^$Sb>upGsSXN{aTk z{D-cg0z68xklC&V^X=Np!VRt>)d}P+A+iPV#s%+8k3F7d1t_Pe*~+M_Ooqiy36l84 zojnY%N{(KRVIP~`$m@3fDWJdm5dFQUZ;xj|*KJuc=xB?8myEnR*aNv!pt0*Kr@!Qd z+zh-JsXm6^E?#@WOg-VhspyX>cFEo3m#32n9BW^EW_V0Q%Ugmcx+(=e|3>R5^LFCx z&Lu?HAH?t&51_r42&NZ03?@0sl&0D1AV6{x`pu{r8SHU%_)F`nk)ZgZB{OrtQ0J^> zh*5NlT!kr!e;%8u0R##c3^T}>dB`6~sBX$Z5}~)o;p;Re zmo&kN3mQhxMx*gOm5J%o>35_$|Ne!r8y@3dyes#v15p^pUiU%+eMm69$WoD) zU+bJAnl#{#!g-M4^Xhj$I;2{QTj){bt{L8-Bf5sIRZxs~$mKHQ7Gn}iI05_)IFb59 zG8h0d;n*!fLd&FX>r%lupv&X;Oeh>Tt}xRvXh2&hI=JnbVzkH1sNiQ~ytZja)t{a# zeZp^0@T3LpD@vqgJ)lZy)s43iPpZ4RZkJEz0b)!oF0__uxNftI-uJTQvQ_u($up;D#+8*b@>}F zm&%eyoFD^9R2$<#LE~0S^r{^7Ft8OLk$p1W5d{xd>uNW@0W z=rK2ZDCRc+;CNPp}x7$B{wvj6eege=6TkqqphsjaCfP+TnmszdfV9*R`;00F(dn+8R&$(o-PrG~;5j8|2oM-MMsKl8+z zqRuE!+p40km-51EqPSIOeG>0&*VsbHx;Q&udJD5k=U-Hw)@kXw#fO)g(5>VkN2_P& zOQAxAFiD5%F|jnJa&|_U8yRP9CHwZZ>T!t-!TFfULcuiz$AwpbUwOE`UHS%RFQ70$ zKCF5{5K(TMF3A;FZ2HEjbX^SnC{kpaeYUjJ#5!4bLbZQ#_w~=ys_2(b1N5k-u z-$3uj_$t-e**^la8W34kFKy6N?~Hi*aijj)K&|bg=63{RI*TkOw)7KW5hx;;Y{JIa z%ICNjQn*vxBth7B<7b%%52S31r*-4O9JZn3en$Cs9NdKU=?A(p1m!cNf&m)NrQQ$i zaUp`%o4GzYt@&;}+)q4N62Am z1_t^VzoZE7_D2Ztr1rDBjk%?~zs9JRmWt+Z457Q6CpGCPCJvop^S9%WZ^iNr7m3p05 zG;YJRCj$5lH%l#gLw|@G4qLUH3Tq*7PPG5@E4dl6pkqX;s4?9gveDaFa*OxSs~2<1 z?QY_~jp_e{T>f!Qsw%2IsxGkseJk@AgDZIPxV?{H{h$}}#gXr*Ofyj!XS*FyNqzBf z`{$BAzKP-YlE)KOz@FO*3f#6MwrN3r+kTRfZ;_t1!n|RE!MM87&F5YkX;#ej;N}NE z@ztoSKIdIQUm=Ix?3pwKXw(hO@=50%o6V0+64&UQ5(`U@?e z;&o4}*W8*&_#k)_`Lp-Z#}B625LE<|=}n^^F{x?&g*Lq2?%nhE-U?9YG<(b?k<+K< zzN{D;hP!;&AVu7B>rbAp;w#IUVS3H6r+Vc5Nl^K+q0L~~yji(XP08YX^Vc3jvYW9n z@h9VZc{s#h(qHpQlMgqkqSg20;fY=E(z805y_jxVdabhh zCw{c1JmsGdXKeb4uQ-*&j7KZWhF1sXrB4Eryg7UZ{Vgx0^!5>p2FZT5r?|u{^*ZVgqg5x{Z zxJYmAlOfb~o9QOngW`Afmxp(Y%`-YM-G$(ohc$JK|MFq!9PlGUNqOXD)J_~#fOS7% zgkdo#OTj6h3>6!2&@C_av}4REYF+u0jWPZg+b{BN81l@`iyzAo{xY-`U057^gLl`H zij+#1te@hmD$#X3zzTb-a7b9TRWo0~J!Dg(`C$Y}a3Hodn9(Q4OEohr{p6c@6HB1W*iUTeu(DV+3{DAwC*3}}5#7)^ z;Q;kj`@Fppif~S{K)M){sRZe?lJgXUiL22yrf%)hB|wI>aGlvrVk=(o{&wq<@tL7W zHAc~HNbBJje*vhg)=A{sp=x|pfgBrtum5E5m|ycnP@em0_lt3HV~HeBTWKw=sT)dQ zGI)e6jBkV)k{11FcpY8=tUXymMST0t_s24B$ltvQNboICkE~Md`nkofs%D=m2Q}BE zreX(53W?YsO5`u3B2G7z82|t&{ceq~ra4=DlF8%_?Sp1-Z{Rc z?wmB=x981W%J0khgTFV*)E-%8J1mPEn6W(=0ANNYwy&QCPwlA0I$bbY%JiNXR4&qv zUn*0U*W;S`$@t|D60-Z#>~9$BDMKF3!K{G8sG@I{t;IonW!FKmPlws7FN+=vKEHsx+$u_v%H6?;Jl`+FwW2G-OWX%N$lMV= zpqao+iK5}AmtyO~M5lo+i~Qq;U8%{1LIUOY2ZY5NRAMxl21l9=4cE-mCO&xD^}Z{h zTp5Xrz`NXfaI6^m$zM=*g0E6%anSeNdYAX=DP6x}Vclo?7lJAI7lQexsnEELg@yGA z=e<0y>?6#1V585LRz_}^%lnwNMoM5753A%~WF}3|_Nfd-U;c)PRLc{|o-gaqH2R(mK-+pt_|*1(kAW^<^l*n_RkQbnn@cgMy=)2v99aBw(13ti~s z9gkrWX%tOJ#=WPG;)`=i!5REn5@6k4K1=zbIrpg|eA1=hWtj4-!c=bKDHm4>uBrIS z62;AmmQ2woH;>~;D__X@8W1xy7spvF?m1vVAE!(bV-SjTWyz=Gz+F*B}n8Yh{&0=0|*7rIbW|bgW{+uYyu`b$^yb!q+~@ zz4#r;8x%VFbtiW?J>xP_Xtt8ahV)b4&@(;rhoolng&@NZ-e32=2?4XAe{Zl1J@Zb= zEfj>^pEA!+>ZD`SXi!pJ*`M4P^e)Qy@Hj=+fCmlES8KKvh^XFZ3W{O!7UhCZ6=9^3 zFj~3Q1{zbtflm7eEmucG+P`Z}CPbSFWBd8#Y?}00Uq#!H3E0#4`h@7467I5SJBX^e zADAeW(aoH}SExmR{_~YKu9n5x)^I3|=X(7jFsRvn+przi0~^p3zkJ0ullp^QZaRS; zBeT$G66oVLxuSf$AufEcRdup|0~XPUD%Q*E-w<{%n-+h^L5+L;xk=A4U0>^BSrDS- z602xbZkODC%+9njKkpWo?014uE}FNp597RW^`UBG3eh znUr;C)36>NN+;&C}G)Z2$4AmSL;5v(L%xP@y3>Ds>a3s&bMxNd4ym z?esnPxylhwoJPxp(|1Tj>gu+*$`O-r&peO4N` zB<(oyse!{#ql_S52*cKY?>3C$NDoJ7eK`r}n8aW9yxFn+y5}gC_GtC4FDL0|nw|~j z*s*6==~f*!nZ;|fot&@lJzMq=q3*cXR3m{UruT&; z{ofJa>4)cjj4uvT9TW_KvZ5ZJHOfEHO+OI-(4&?|; zNXaQeEcz5n|Dv^JZAT~{F7DMz3;q~*uru2VZ z2Y=KWDD$P^j}pfh3v(gE?R!U_Owq=!k4vb%3%L&eW4{Bwv zwLH>lwTxm66CMN(<+c^oa1gP1D{Z`tay?MLJmb-t(3-8L+g&Jn4Jvag9dH((Vv7YK zy^vY2Ub2WyH5zWGwhkm_ZHrH_Pu1qsAb)N9HQG9mWK&deh?7I4cB(?}a6;EtwXHm*?S!DX zjay$T+3tf&5EEesUp3!TvhO$^ zbl$5T{nd;8tc`nM)@^Ps6plpv)B}bhJ;$T^p&-qfn`yPBazK>muY?j6FFJC1+FXY_ zy|u;nz!}^5=>hN`x`>{iZxN<+{(md1Z~tZ!@_(o9-GVW9yZN!#6QVv~vsQoXw!sE= zPC&l=Ngr97V};xIwv9x4FLVhEfz{gU6LZajpvk`fADD>VkYKy1Sygk#_ssp24XMeP z|5UEX1~_72;pqOY`~lU!%3uGjyce^Y_&1f|k-h&{koWIgh9E|vmk^-E!J_)RJ)QR6 z$TAhPJ>9JTbC7@Th4%aI;P>B+3uY1psA8I&nc~0SJ6R5p@A*E2%(Bw8eTjs2iIY7E zCn8Y~OTSzV2#I>o$$4qAO<${7ql)|Ftz?aQ>8rV3*zg}igo;$pMIxe}?__=!k&Y)oc3O)kmhCu>09^Z`PC>*>X2 z4li8pJBZW}AclUBE){;El9-c9IXuAESrMn@?eu2+aoG0oO?GPg^CQaJ1iz?TjrK01 zG32!jgWEYlQ~E8SJbeV`Z@<+%xpeLvynwv8sRgs&)L%#OI+WiUo}2oqc^KS;cf(Hd zd)g=IpU$JBaDemk_nILp`}p}scU3NI7AaR~onZZRH+!#dzlJ(rzhHvMYRGZ$Xv)kOEi{Q1n z4*q}&_<(}r?E2Ae5*7~HPhBtkZfd8Tx(4+dRNd^BT)+FcAEjJ!{d2><@C06R?eeX* zJ?{hBF0uBOx8%AZr53DOakfirbIbX;{N}z5pjvf?=HXQE#npj!`E=<-`&#+%jF!+0 zr=$?Voq?mzZcAW3^q+}!zt37?5FYKW3nf8Z;r&928|{x-;#KyQR*Ueprfa7V zD66`?v5_dsJ}Qac3Cp|aht^vbL~c7NpE%Tdv;!+%UCp|C9{f@s0V^3R1uM*5JY65V zj*1@6B()A5g1YdEc$b48)+gUeb_GAG*Acs@PXQ0X?2qtI^3NMCNb|(jdgpCD>Q_QO zUf!MpyF-8;LEdF4A5i38r2QTC$x-~gyI;lU(KM>w74}Lg^-Ps3$0IU1XHvy8S)N<# z7^pwis=DQYgnAXyvWP2O|Nfp^&XGYA<(4hoJULCFy7v1cMJSY8dS&gUA#tQ`AZPN_ zg!Y?$#gI6+H}Hp}%(*Y0)Jt#cZ8eX`Y~e}kRmA0nN#Lg6&5EmQxxa|zi=!J5Iq$*3 z-Rmw{JYs3uX1RXK*hg|IwPi6PY^hJwLLzw_dWQ8Y3}%r0rE?Rjl&TYo)1$aU{OJDl zMBnI_ik6gJ&(gWPbJ*AeYC|ln$Hf2ENGbmu%bUNBWuP}EazF$qVZuO0yvrW0vEG%+ ziZVULmcPG>#rx$Tmk2~k{|Gl!AD5C7|7!sk%Tb{8Didy>WJfkLGjs1Zx##@{mL}5n zyv8A1)>%Bn5eXrzYQJY<;|Lmi*M2oGb+3o9L`!s?&g$p9*-` z{hWcO=+fcWu(F#aMKsuB*p=My1PbwyiP>860YcKIiAUh%bIy0f6vt`j{obN#D*9 zsyD!k_T@{o7^?R1Vuv08@ z02?SHfAMGc%r>6E`HXF{Eas8X68tJ5-(9+>=zPN}eQ&V25(NGfFXi|7)_F?#Gm-(e zE`?+OcMtBI_{2b`;1`+n#n6*V(Ou`(17PJ+zq~mMwB_1fLgclWzh*XL09m`%?o)J> zyLO{TrFjS&mJpr$SoA15X|}@pV02uA)~#F*3kjtb^dK827~ws*M=Q%;%8154%1CI! z_JCJD)Lrj?QAT_)l#zpN>Lox9Lm5%|OBs2}HNSHTGi(qvY+4%!w0*A%Jub>pZx*Kk z7b?!7gKbFbt@aVGpZld8}4Nz1ti%O}-%8Qxl zUPW){i!B%}7veewc8NITIwCQ8jgJI9<~q@4$%H^uIu(!SFwJS)vXG$E>6sp$aHSCg z1d2Z9LWjOh1p0E1#=!jeCrwtXW)5v^AJbL)5|(qmdBSLnf*48KqF%N=fy$q^(S7IY zdqvU)9b8qclIlcV+xqCVF|B}T!nlSuFqDzu^J6iV6_7ZMQI;OlLOuKHV2xC#Z;MRl zwU2D4ulVzooAg-cF3A@Qh!l)Odj9$k3}htk5S02GSbBQfx=ydIS&vRQ8A&#pg6@+xpw33LR**4w~xH&+hfDTgtqfC{(r`7ST&24lTQA-VyLx+NT2}XqtOnC+*^e z9j5#QZH%MDEP2JtIq4% zaz^C!Xg+Fb4+Jk=+WiG(RQ~!&=*ODV)_rG&tk7unsP7h=dsE~Eom`5YE1(r+G?U7Z z!!;ab&{<|j;(+w^q&BLuGqkOE;+}V|Ze&8$$+;cTVmaqwLwX+;w3QHXYPO5v9f;Uu z2iMnaG+&OsRr;a~A_kw0$kR{s)Va=ktcFSvbta7Ll-R8u2Al^fOYaIE1g6xb*RuUZ zm{f-lc5^wJ0`=1ujFLV8et*Jhmyt*3M7vzo#M9e5%9VNIcyB!XL+%sV*?Cxvk_Hoo zf0TJv#!B&u9!E#Z`Z2~XKl;_U^WyCU zOw>v^Ubj>wo^u1w$KOw2H3dv(&OYIHc0ahL#sJ$=5{ z%Dxf3#kye^rijcYPH8a9EDf_$d+1`GI&teYLEfhb1E?-dL-lF&nmRA~f6h||6O7lV9=*0DolQBG?5iTufF?< zCRpZscpGlM_n_CHxd{o)r)wuaGo&NDb6M-i^qEiWBf`{_Hxqa(+tBAnhcl_vbl>2u-yDhqBHIe8Bcnn|plIS~5h+Hv zlJ88L$1U(s)u@|~g{Mi~a5V-Z(gOXH{R7&YFE;uS9*OC*>4}$hbSGcsAeUUJ7?eIL zx0L8O_6Mk_p+a)?kSK7X67}7ykp4i~g*bS4I6&xXrkg3;x%TGMiTEry;UP>50t)J# zaOaRVsw<-as@8-@Nga45D^J31Tf;nlTurHX0$Bkl=0&_s+ucM^f3sx`JpMz+S;Qj} zIdHC!%Xv(?bDw8k%l+rPT)Ta^g)z3PjGZZ`0ZDZZI{{C6$wESy=qN99!cMx0qU_+N z*Kf%MO)3xJl#WsizVVm&syo?uD;FS%t7o1h$*9M)7ZRuEl}B9xXEa*D;!o5eSErh9 z^iR)|=#NMQ4>70@M%C3Jh-fI+AEPX+n#)hsloY~(@Rw7}>3?ykVY;LO*c045ui%VdwaqK3F$rz^xaAoy^K@#)% zb}ZXj0X~Nr5!IMyRoecE)Z%*Audl@TS&Cm`%4tbJx)|A8yePZ1av+VT_aO?#YOw~5{5Zn7(@FRZ0y`Y&_D0NTiE0K420 z)P-$Ux=mjR5b8BCfA|^M#%f`A9`W4sl|o;4H$xxp3iS2xJdxva*03aKWV5yf<0aM3 zT3lZUNVN2*19nXU02`MN8y($Z)yPz>8w?bZ@aCD{f|kYg7Et$K?xu7RN#na#vNUI~ z8}AY}Jgp_C@HO(P>T-W(I4`DlsPEEjnDhr;D&J5%Q8gU4CAKeNdxMc9+_AfItDoN- z!VCZ-5Vjg$UGIXncuk9f8$s`-ArYg?JLqA@rG_?F*=s%TJ5}pz&gH*k;*4C{WRRKz z)dhb2cjI^L0L^q~e?26PDQpeLTsdRkul~YfgU)vihm7Cp|xr)m1X;RqIUMEGw+ z!i-w~9inXW@WXHYnv&WcO^3aoY@AHD4t8MoDck?dVw6N9e!F1`c6wY)4s6em?|5%W z0V0P1&Y)v?OUpUT=SvIS7`bOvY3-?I$ro`DUm~l zm~?(13kf)<*`gwhgbilCUo44w`&qU$P&jQ|%-ATXsns3oybpCcv<~yLHMZg`RW+<& zGc&BOfjkvtch}Gds1s1n)JhUhq7Cn!OSKJx4IP3PO>Z1E|!ivW={A*DwqMkMjJ8n8x7lVU91HT96 zD2~~Sy+uATKyUTrW-z=kreTL!h?0j~{eC^q%Evy_c?3ap_io)y`431@q(su&>r)G;q z?(FS^X|}kfn6QNUNcP+g=^}>Ufn<xrN$|mHW#IRZx zzDptt$6q-T9a(#~GA@D(-RqSVwZ`jCg04XBWK8zuM2ZW{tz7Jt!IK?@Q6Bq?;7E-n z@IjX|d%hifr}jk=f7H}iE2cr9Q7R7UrxJQ0ZrY2d84+; zBltTAXx*ZGi~jnv;(AS5O=PwbA|f0f1a~OLDgClrly#VM#Y5z zUqd)nQe3^Z{vYeZ#vlAVO9-K1rY3jQf$UzIu*+2w4I;<#?W-1T)#)rE83Q(R{!`}Y z!Rzjk=9p7mD)`Nj1Ry5~^`}CttcA7%Hafwu5C1+REd`U1PJO zTGCnReL=nZ;v&4hU`L0wv>H@a&?aEA9lu~z7kQd0b$Rqb)KUNE$ARY6RW0R`wM$Ox zFoGBLSupnP_y#=sYwsoDQ<(Chr~O7v8eDSiO^aczFFB0VlRv%1t-P+G5AC`Zf8e@J zc}$b8k#2#}*F0!0kn;=0ub7;0UblF>aq39lIINbA5}y1_0M->k>>XtuH37fzehMzC z<{w=vY^j0+n!i)oT;i{NdBkxh*VglN`I#caTU;C@f^c}qrLaPJW@v%M5ZruHNb9qaHN>X~-0 zE^A8;%A}_H%IRkiNHZ9hK89oN0i}OiP%LyyzYuKw^*r^(E1%F1>J3Fuahh3->Kp|y z&%#4?V(A!ksYvA!(T~ddrnd?fJd-s1tR?XJ`<^D(W%R47MrN4B*zml%4}DwCBtitW zou2O;Ap7AvbT{$Gr!4Fk#`$H9*l^fy0q87$RPUj@)VuT;-+&Twes-c(m$#O+>-U=1 zCHUB7Q$uvM@F4I?DxdF-e({`9R&%5Pfq+%4M*9{s=c$S9RhaCKzw(75$fJTy0N%7? z8@?{x<(J;_$cjvM)~~`$_TFSh3Ip|ojBk?Ky$FS4-xy`8;sCJ5%!Ddw{piha{Ih;R zRVBz(*c4}#(GWj7j02Vhtu;9APsOuBa~{`7`EnT?pKbFYJeRJkc8BKSZr>%UQ5|#h z+a-e{gF;R{qzf^dN1CRE2|I4Rh6BjGunSzL)pW{;GTZaK4EAzIb$GQ zKle|V%**hRJKfPyk{drOmGc!96#ymG-|}yjM=V%gY`hRDWfqCZnXpx!A{KX4XP{0I z>W}_i_Zyc%hbwyGpPCPe56^1R4=ToW^SC=~bu9L(L-F1}e|N73uHSbwja{ZTG*`FD z??!Xnd@y=;FZz?o5!0_08I~#%rH&=bV8{%iG#gLxW6dcax2d7UKYrVZB7hXYa6g6|W0Fi`g*Z;t(H~csCcO#v zPgA*Gj~dj^NGr;A3`cbAP5Wcid~Q7{GQ{+ZkGj5WjQ_eHp>d}qy)Q8^=A)Jak2x~f z*bO3=xadHjg&{Lw+8!h313VNR@uuYQE`ME&$)_mQ3V%mvw{(g>G|#}VN*R|P6PFyT zEClRBo?s-k)<}c=7BqQPAB1Dj47Vi(_U5w|Nhy* z)r^OMnE`qc%_plJ4P`yZql0N~AFT$l>Jys#^~s-foFlj|NBEe8Z+TCHLoTvaDm{j( z3iG@l;d+Q{o$+Mc_1D?9Gum^#Go7eyVAVQ@e>cVZ!D52k+U&`M;{M|GirQk}R7jBr zH)4SMslguZAOH_y3@%FO2wq^@FN^bDZk)ezs3qF@Wg9daIVLQ`!t1@C%K3P1DSk^l z@7^2uO`O_ECtgKWl{+Fuk>%Hw(*1PdRJ2hPV>Hj3VR=br$xdke7^&Xx^57f#lK1V> zcDv+YkQeNk(F)}N-V+XP9ItMx#YUE(rysp;!qs#4cL9&gM-Q&78`KQ7sP&S`mJHnP z9215gg)POMOgqu;Hkc*_1uEP8x?LTfTSfCdL{B@cGg6OxYDcBdeLD~+eSV_ZZPzyY z3{|{2h<3AbIK!jd6Q2V#xz#QSmA-xtz!+Z4Kg09+7eJK#8$g7){M$>$hZ7%L!s z7t7~AHVAM`sy%6k{(pSEbzD<#_{R+@B8qe=QqmHWZcvbt?go?Y&P@cQq)R0x4N}q_ z(nyT%kQ_Z=j4>8G)9>^9J-@%6*K7M@XRqD&&N;hw&UIhc`}0AoS5dsbQZ78>pJ`)L zLcV)9$zSH27GNE;Mav1JMG&Wn*Bk3uycUa{k8yNqFuVk+2Icdnh~+s97f9r#o!EPK zB8!+EhM}!1LB~>H_~xqD1rf*Svp3JEsPzdH9XTGegmp_H{5?HetnD->K?PiUV%((P zZspH*HIL_yBzTOE!SGhKgXR?}ee(-X&2q zOzOO@>XT8b5((?aAdTLg~nJlxB9G_9hc@+F(`X{|!{Uu6_Pj}4E`Co>Ge z$QkF`dvONgW^z@b5!5%!kaRze`CK+oBk* zzq;}efOe@YzOJwdPin9(^3-^;opV4C=4BW?(9*SL7(3D?1d%I zaiZbJik2s`IxM97&mG_ej*mb*@^cUBo)W%D&Pvl)7j1fZlYJFbhz@N-Cb}AhNi@io zAC^m1+-k18+KH$x{JD8>SDVh4nA~=SK|r>uucy@sGD~k5>ga{~x&NMvIkSX8VQNCM zcz|;7Ln3=}vN~Sw{C~Z){%WISPFi(Ua1e|62kugQQIJKODtz!`zK`rRzM zx)*FMyD@o*g1;Ipcz&uEK1V^Z3okx@v7fy$p^RH6SNweaAaf)RqkPHvU5JCr^@dR5 z9~}xd3=cHN3vv`RwcGL4K^%IN)%w+MXDllSDgzEWPC)K}j&34Hu&$)ba^x)@!RoH7bJ;rBZc>N_e9G&~=&@wtdeY%;lCuNzJp z>Bc?U<;-3=*>pdqqEhNVDt9HK2NV_!+8H|!idxB-zFK~RbcD>{4g_0KD&9?9aZ(az z%*`%q@NqB*zW_FNpWX@uUc>Sj(q5d7_?E*JmwA36YM_G2a$VAjAHDLirgii$80FR{ zzpPCZGR;4Lx4r@TjliN&kbYT$qi5XA*I7^ubV%~@hC5z({>Uijh#vof${n{axa1_e z1W55Xq5Xr&nl~D=S$dD2;Wvj|INfu`f8dJ^XdN@hwrJEa=d%E0kDaZ>?%Y^1;OAXK z-*BDsaO{R(eLD%tB^gl6>biDl)78`23>nbq8Ob8uvyyGMiAR0iWLtsS*(xpWHOf7h zoB}R|CemRWbTb(dQ(MRnV6ILpUk5JZFWK@q5cjK}0446_;eR`cPF^st{f8!oeYc=Z&(>ed0B+X*6O4kg{^WC=P2R5o66 zqvB|*CQ%A>RpX~Nbf7{{KNG&wP$uJBLL8mx2j{oIfGy4a9PXRIk$FD98cFayV}SJ;9#vV5Md+4pzFwo#hFWx zICRO2+Z`QG(1@J+8BqyRaF^x3F)%>ebt-()ZpqH|>aw|8-UkJOEub!ms1)-C9yDSYXn4bXQ^UF=Vjb?C3}!8+WgJqgIb1 ziw*?F5W&uExZ<9;y7H@VnE60f%wTZ;^sKRPF(F>(`)R0VA%&9X2yRTg!+?RhF-Z?-g98+VCb` zenzElmIkARVb2cNo(>yDRs4GoW#u0e2M-=THSECBfWcdNR2jl#hLu0JiN4ELX@DRW zWJNni#fYL{vYIfyj|^2}WiBq&bvYT5v^nCPb1@`Qu&`&6FF}n+RfPW;`GzE@>0@lM z%|Hyc)3{JTFm=NK_+C?92g<(^k_@(`l$R?I^SilXZ?W3y)XuJbgt zc&jfRE8uo(HszTV8Jo4`VW8u}ojIzUe%MG|(Fydo#St3DzftvH5WQlj`02B&V&8Y)o&3*o9itz+Hy>sZWRg$y z<0pQ(i=M@Y%vcchYhwk+Gjc4~ly!a4I;NGq3)rw+6=11uqa0Uy#jxSUAiD3MXYl6l zm<-xC76-1r>$LW-rnB6x=*goD{Pkp+{OVIE-deWhyP4Bn{+`?BL}a;wuYZ`eoU<`} z{6tQbTh_X!!ScAG#KdVoZuGT1x{I=|n{-k4QGJNtoegTSJj)rl-8lW1k9M(UY0-<1 zvJSqtd^hs?n6|$Dpda=9->1GCIptlR57v~)$d`hv^7@;k3Q2TLqBM@Ma=V9rAfvY` zvq8f``J#Hkl`pct>L>ANNcs{4Y!r#9TYdsg57qtn9AZx>=IfC;RhDw4J03;V(=q$v z?WF!zw6RkjF6?Lp^}x;CM;}BkjsN~eH4S6!Bl_^b(%KIXTgz+VMbK_hakJ;kyzM=X=^Ncby7OfMGjY^-q%Q=*8Y#=bn0LSLvEZewUq$cCP1o_ImoF zL=P=3Ri1LgWOP$@RCO?Q7V&L~>G80=Ud?YB|Dt-UBK8PK<_ zubSg`%$4&hzo*pYsU68q+4+_jIo+L9<6it(C8lTTtH;hW7fqn|*zL8d$Bk(^|4$cl zSpDy$FoImXLZbd*AaExDQ#~rd>`cFxU*1Zav^5^dVbg_f9&-Hhb$pcq?XfN z>E~rl%vRkZkM{9Roz*Kbw{EDuHKSYvzWw||XM=!kfQC8&3`W2M$mw$HY)RXF+E^PXD-^XfrO_|XOajUM{%j`5!!0qkb& z;PEd)5H{G7)TR>F0D+Ok$Gujo0W=>|wRU)>g-Gi-ZRAL>{QvZ}CH%njxJ~M>`gRnp;3peBmx_{^LV?=I!M`Bvb2tB_5iN(PRBi40wqCqe!!RGyv zlRU`=A=R;ypqW=7dHyRv=f`mB#BzfE0sl|Ej%6*PU#NJ>A3#G zqFGz=TtEtVwV`9U#{39p>p(V>AtAA|I+PbEo~gMM@B0bt)9kQx4kV{LW>%bVdZ56< znD$~KukTt`9-h3Pv+S~H{d(BDx{VD}Z~I++g&m zjZ)$YY7lpz7VNJmu560|UAucXM2e%iR@$5k^$|E-rv-c(ZHop0bsEU^(fCLOI0Y% z1EXm^?9n<1Iju}i*c3GoLIZLiUmO&Q_1lD=*8a}2aTpVjxX=K_ttie0@n#~iseNap zXHWZPJzDqza|iQv&mDL!h_)6UzRtF)0XAAeV;xcPrdTVo%UjQ8B&}#9VGt}E079&p?g)!QfLF!y+X>o zRJc~&gL$O_i(i4lH|@Uvc`bNX-Z=jcXZT033XN>`i(mA)e=2U?$BqA?ye~iThxR^j z;?INo9TR_;7@Gie-vXk((mH64SP+K$>#72UOEQn1A1PGH((oXN>a`N!4y`d?b)f7w zE(d4N+i1FO$IEP`G*QY3+P_aAYz?81m-&vCUW&HNuUOV-H(IK7roI^=cMaf`* zi(;KIc3tagI}l3S$A|!>3O0 z_KJ@Ai=8sS74ll*oD`plTK~&LEB{6LKcWr6lCp9x4k9HXsQfSCv`9?F%X9`+3HHAH zWUs7mUP@9vTSK|5{E@P{#e`YZIIq`|nWl#HSU=`Njf6Xi@JI4!BA#D&sx@njRPv(L z*E5U6XTa(a{zHAcH@`$SHOoFr{_%y8ge1coDP_06^hw9BBs*dO+c>kf=e0Lg3|d*! z)T;-@>vdjL{*Z7)184r^ke6}gPb(U2;__!x5B83a4qMAwtH!0qm-c!`mRf>f$NPZt zp|#d0ERRs3t8HFQU$uTTT=*(1#W5OH==-QH+qW=EWePr-^XyTXX)7s`L35V+820pc z_qPTe*cs&68dVvN4pEE;t{4y(+gyjf_o4$`9}Fa1asUryD+DbxlD%~1NQa~)ve+B8 zuw{xGf|vmNA#~-13sCszpyNnOP;z@|s6Z&(hZDheI8z|lThA%RcI?5}t<6+B5O)1R zj_$DaXyU0`1XeW)>~#I`#Zt5Y9odSn^NFX)V0S5~E}iZ@h5vIf`?h`Gz~sud+(R4r|Eo zi2CmpYGG6_AL4Qm%k0JKlIS~c1Y zRJZ|ZER^Og(SK6dv8p;-M`8E&uf5?HvCgOUQZ|?!ytaMQ*_0dRXyL8z@Y;0~d>!Go zAi$E{nu|^9m3KdQ2F-XCk+!%;Ae?R;D-`jd&m2}|pGA&Z>c=1}8NmrR_D_2oLD%t=z>_yx$( z&2DpIz?tP}^y1T%$zqN!lG{b6q;a&8+{gM2>>dJN!ur%=UG1bKm#`G1$mF*;^BOB2 zWMYa8x1ya5n(>YFxd6?}DB%QKg|}Q9`6Smo$Gl`9*Eb+&{sF*tQ)XD_iXh2_k+0r3 z{o*Vu;)EaM_|jn#Ftg=0OVepNg`v|z;mUZg?`j<|jo0DQzU`xa6kWwT{Xjm^LR3xH zfvX%A*M`4cpcUGsr-gK=6FzduCpc^%M6@v4_8TZRt>CIjP%oNG3v=(=*jwEx)ZwhR zHN-)>6YMArS#y+L135{Cp(KUrp zq#hhQ9c&}EW;2R3gJWld*ANZvf<&V*rG2a1Fm<^&eW#w-z=;xipYhI;-%=trBfHeb z9d~Fz4-0wIqauAGM{|yTF$}-^Re8L#v|M}+FW#~0aGNzrwi;H<8l3p**^}>MpRuk) zr~rZ{cLiMwoHmz}IfW72`S1)u*#&h(WG@(&Fd#jjWC>p|P=9eo0&9-A<*TA6`9`ZJ zQN_~5L*0IDV?wb5K?}8*O`|zfGPe`>4gG^T#-+Db8-0TMhck~0U6VXk%zSam_pYyN z6C8Km=-;<^%Zs|q5Y*0uO#M(9#1*`nPzJ?VT?hp7k80MaWi@~Hu4c^9O+Jr(T)1|d zXF*E)Eb1NHK@nr7&&BY-&@}y+76z+B)4(hwhuUK~uiaImi?>FnR7hb1YL+5PaDL7l z$Uu}_x-i}dQ`JAG0bBw!FZ9%@jq+sdIiu#cFtr}_WYbuGs&F=p!?;~H*}m)O1;q*i zt09~I6P%TCN69AV^Pu|!0=5BG1;euO>~7mRDwiZCrK-m(w3cfK{w1^D9lZdbSS$Z~ zfabZ4PGRqz z40(kJFMcWO-$_2o35Bnf)Kz@c+E3d~XE%M`V4deuWNSK26Hrk$?__oMDLQv&1Zyv- zVK(Rfoo4XOrqUuikD;1`G#%Nsliqpx+29$vjC#mC^FfUc`^|JS4?Tuy(I|o@ z85+%}cGk4U6kkklG&NEWGnR$oe+~cl(e;k)14u_ZJ*8JZ!$XDeamIK&A(hDYmm~~@ zwk5ZXsDBqjceAH|gIgAermo04D^p#~I&)D$o%8P{#?ZsD7IqZ|Pb6dm?~3BlA0|+! zBj@+n8FQ)q9LHPkCIhhEU!EA#^h}4md7WwL?PCQd8`rq){^GfZ2TjXjs{*){;I|ca zvKx~=y_atHTV5P1m(<4QZC1#e{qovUU=B|KtYa8X6 z$<6X!S&}|0mkC=7L#DOB17=?XKJ8qg^sAoa`!scentt{9aa1zSAzM1ud~AC1%c0qp z`z^?z)(mUpCfYR6VgeznF=69=6?G74N|){3;Av3;^ZC8G;8WKOoJRm!L9V8Nvr9d0 zE2|u*lZsb+(93x{OGxwak^C(51VL-X;<izR_E-sS;2*Ty zA7Dci?4lY5Yw}a3LvTI7vdQT31{jA;^yBaI*nx z?0Gs>Y|Sf^z6X?#EOb7k3G9(^s!dpmuG|gualcktg7jmq>6e0QM65GC1$(9Dv_GGg z>{WC%`%=m99c!B)>T7+GQk%t&Z;Ce_@v$PHt=S9OaK3w)qldEJ=3-&y-&~5ZL1Tq6 zixe`UXI>eawt|f!0{7DQK$4v!+S`{GW7qVVhoUsVmFysFO*Y*oa^N}Dz~QYK+?^0= zfku%Wxhf~?w8Ct~%X6EuI_x10luu_y;IuZSRQgX|>SgzZpO+7^@}u?=vW#z(Y&T{B z=#yyIKGE|IZHGJF$(Oi1d?9Quj>EpOL$_ZacFa7V;2>27^7rzpm{s+fI^AnVas zSwfChu22TQk9DXm6d%8UQZ+19d0nq`NNkoWdr}OD!;ds51)seqB%nNqD#f3{%714t z?B5Ni7XAzp-Vn@y5)w*-Om7l|{a0pmQZsx`ljF1E6T)Yku5!uam{B)v&jcT1ViO9~ zeSlCh@%}~IIP=)AVzi5&_iCa?O_NtdGnKz|oH@_E>alHMxVjn%n`wHH{e>m3%dzH; z<6VT+7q6Wxw=pRZsJoEvqnn2*yJ#`z0E;T)`$v|W@03mlyG;?^*aby=VNF8~2(A#1X>>_aN&`dww?8zTi-CHoGU zyGhz?Ek3$Yl}S{f$1kAzB%FCusp0B+>JAQh?1gfa+o_G(se0Dc&m0WI*NG90B;t;p zJi&!f{Ro{@mM5R}H|$;~UO`B((;epi>PVvQw@*ag2HFpOutWRipkQa8A@IXsS_PGW zmpOfrvcnleOZHiwIWzD_weFrH`vN`XKml9iUiTr8t2__%g2>kvDilN>wX)mZf-m{= zx8h6wM|cT^2yqAqFQK3|>J_u(HYEOVB)s+&-UP)Lo5?J8g04&svVKKSV{Z*M3-Bsz z`yffL`9Bg0NQP01VH=gxkMWB|+mAkqmRu9Lp8F(2&N|$d$7lSfGHdR-wi$_F#Kp)W z{P1vk^J6B@3(`4epSbna+X`-m;beLDV@LXe+PM=gl&pPU&)m5y{yCnALp*oh?nrFg zEWqCE94oSC!mj5(!mH(aMOJsTTA#VmC0NG=axM|Cr3%=};S(XMXLZr_@|nMqr5WGz z$?HOr-7OzBa8+LouVbgr>DUd7SkB0LxClZGl2^PuI)b#<&_p!PPrLRw)@>BDUKfV@ z)^PyyaL;XIk$Q#q=L?p8-*3D>4aC!d?R?5sg?Qp+!Fm6r%zYlDehXleYyahX zI@9bwBNW1u+jsFsD7d=R<9S7(-1+q@yKj2y8}sP#e0xqqBUL3>ZG=0r$Cd|FyVEr_ zbMxuUB`KF*;jdFtcKixlXoO4s#94~g&msgJX?t#D6*;u)V+id}$1h>Ds!wv&^FJux z&shIe8Ca#IgW(pl&nSt@<5Cg`+Ui|YYIxpIg7sDwRP$wsQD2RL_lzR?q9-J z^DqAXD$NiQE&p5A$@oe{2mnRiCaC$B_N`br8!9sppE%^!UqmQJ**~k9bX^D~z3 z58pluc}9JDyH^T6+OSk|=;|p(okLU$_BO?n z*dlnSc&}L89w>dognrxU!`a$sIejmhka<(7@Ux(!4_O|h9JZ9@*LZt5&N{^ElbV** zu4UQq-eaSv=k(sZ1{vp4cki}0OBbr?JvIP$@@)t{cBywmBtNswpR+RCw@K_QG4~s! z3yV-|c5Kd_d-7Oyky zc~~uq7!0EcBm2TTvM(0ll*Q{UHdAN!^?miM)xuU;=gtf1Fcr;r?TgD7E_+GqNAL1o zFCrnOqm6|=MTa((;!MB!zJNM)T#{?8W&B6V#B<1&J(}|jT`W6_-(ECFJLd0+YrD)Z z&3Nv`Sh(;!#JmNeW?w(?7eT$;&Wp^7Rr&|^( z#OziBl`5>tY|9mzwdDLH^G{aq3H-ojO8EhS8flIYf6n^t9I6@d^;WP-+E%F;uDV$M z}W_;$!)JrowT)Oy9D!h z{Z%GDw#$k}P6K5PoBVZifS+@twOBsqPR}Xpl9wZ>+hP;b+$FNqrCy`}qKzxHjSJ@u z+)VErlme81q(8l^??uXJ2VbM3;0x+mYwtIL;nDCacAy-9qO*g#w+iWI?s&$abGXia zv7mK`5UO6IeFIsF4uMCv+fks=QPBK2f1ocVWbX9_3LWJy521p68JaMmU%MFCC zW}Ezz=s69M)2lsJYn>|UDu8m^>R6%`=-u2K_63BxZ+o&;=es$P1%#Gw`xKW5K)wc| z)LYw4P3@7Y$S*>^|I?b>F%$m%?h3;__3)O&vw@fNmjncaR+@;qb0fbeNX7YQLT=+6#K6i%j1qWGS**ezCqQ2QJH z*Ppq05+*x6*ecX8{lLW+1QUC)4SE3`e=hTk^F?VM%Mmr%}D=H zF!R9WEzs8V_vUBDpCrY-J4{H&!SKkgC~VnY*DNrG0-@Hui&EG56O4o>K<3}LvD z@#4-aE0tI0N|XmREEMdY5-H!)uqEPmbCudfC6SRFzte!B z;87-o8PAOfnf@Lnnx|L})(D0tlP_W(#3!_?YTv)!&wkQUzm3UI)E)b6wBQD8P-<`6 zJ~Q=8r|OWhzd<@(hK4LZoXA%p&Y`9JON zk~#LbzLI(YkemZxog^zo|A$g@FRX89$L9zHR;f9gK%TS3v(vTbN2MR{(QsAzDoC%Z)(@d)`qKQgUC;OW! zEE;DG+v3i)f_@v!ga@SJB~@*NO{D|4!U|8l$>y)LSj~3Y*Q}r3{`mJW5Zg$PIZPD>*hUx$$Rcl-9~-{s@w-^&MSZN__2LJ7jH#%xl;R6-7u zLy2aTdH2Op#wzcPl#k9;^z)Z}Z87z7t)3N^6*^Df=Zog1uz=}=M(IuGT}1XUt?g0< z^Zd5eQvcOEph#dFejb^B^F;ldNAvGIWc!UdWP}hx*2)8|CO6x+=o$E|QG;7fg9P1> z@j{m5tDws)LN8Gpk`zimMxkN$6)%C}LAjc9U$8x|%=NAR2A{qKOd=q-_4@DNcbWeU zF8OzGO3sW03jF2oe~^2@43TPns=Z^5F^92o&o*Lk3de7g*JgkMeOZ6Fv4bN*(s8R|)aY z+xsBeRgZnzRroYt8)-%QkwdTnHL}xmDcUn*?4(9c{^H(<2YB}24@iKM_L7a7r{5*w4%7lOcD^lxL z-d7!Nt@mnROxh5y!97%t7w8VGrj_FWA~iZ7U5t`C6t#KJU029C9nAcE6ebID?BFXw zvAn1t{yq!kacrl1$``N@VGd!NzADl^2qA5Kf9uMA*u_WOsqJ(|xf6H$v@ALcA98GpW}9|dKukA7-oBzss1l4u)tpStU- zpF$A-ApW6S@6)S+k&aHTo53R|lsy8UEGR$z$rtMz(DNuG_|x-=e0I8%^J;X}{vza) zJ#N%?&1D|gVZY{ZYC$^puphH*?>q5yM`%ZCmTi_hZ}PzBsn^2xk2$F`_UilWRijom zfPQur>sBT#-@35;jq~T+YoK#h1Rr0z{3IzYx@UaLl~jq}v8OD5xADjGuHAc4gD=Zt zi+;(Enj4U=NVH_94NFRoUXdNBmZQxeqEFX_IhD$#E>43Vz_Y@Kv)g|EwuyVkec)7X zG)pvVHcQ3V=-VB{p>wjl`Pp)Vqh}Ld4zB6P-k3E_svnddT^zn!z9fB=P5)ph6}!&= zyxS~n@aqF11}-7Gk*Dzwk3JkxK`}RBxx6E3 zf7Ux%V;RUb1>eJeSHA=gm()lV7~$5Xz&Ri2iL_`~&E7kh3JVf?dHK#|rM@ z=1}14fb+e5H#P6n{bu5_Y<6O;%j1mZV&3berp8;f6~& zB^S~-E3+iWxps-=py6zpH5RIn?~7(eORML21Rr=<*v=w@Y`Is30zm;C73$tFS^8#Y z`f2p?iU3Jdj|(8YY|SIZ1|g+`HtIamx5}8dW0^zrT$N9?td{!)EyN+T0cb5eeJ^k6 z25(`}Y(G3N-2>rq@hO9x>(%r7EXasGg*IH+)Lh#MVy|rVx?+z-7WC`?z|Ab&@?_wOynt)zx)L zI5fbz8@}=+sLeeii)n*%Wb>uefWq88svRE-@!>?NR*m{i|DIuV3@9K_yWmF*KnMN~ z0PDZPB$|<3{=!1cBG>nCb_@~k-vmZw%s^3G;0g#Fq@R%uN@okY$kH3PBGvz z5d1mPTRNm0ir$P)xo0g&a*^wA56iiQMQ^OPyPXAHlU+X~KUGfAg~3msg6ycSP}>~A z9B!J5oofk^Xr+`BS)G0*9H?)ov-@jQBzB%-WOKuR7yKz;vY~qVIUI?2hLLnlKamH-vJ8onz|aeq)v`S6vX7!!MpZeoGLB9+1GKvX z0(pQh8r3A-G6oVHGQ;8iwc&8o=Wu)vOE^5p@*!y4n5UyvPdYJ17^2@!U$F5C!_{ax?tx>APY6yJ>M9oO z(K(U;4ulG*R${%eD+g^XmO1uo(c8YDvi3Qg)Iik#LG1qn8qaR^gRY-IY~|!K5$(>P z*^W85RYLt=!sQ>Sf5iP17f^p80=DZr4e`x9F86w@-IDge$ZdkeUAslT!<&|@;9zO( z*?S3>Z*kI9af@?BArp+{r=u4@m(E#c$2RzH8AFiLHm@AFtfW)>rNW~xV!^}xLMHC` z6aa3~TH$IFV$qR{Jtrp1?o6!$8CLZoM-3*c(qT(BrK`FDvwWb^W5-GG-~wWtcKm?h`nJ&2oGJ~8iTeJ`Z7LVu+a{_}L!+U2@-=V0;L z5zW_U0LDEpQ?)}ScWBvd;sN;T3NpqQ#CX*IAkGTShh?6}X`uKMTtIrx-S=IWa1Qhx zFgS%BJk@#FAVHR{f;p%n5x84xNN<(N!i4(y-2Z24Rc{J$owR?fv4mUZ)ujF%g}|TZ zA^F?_fq1@re<+qEgrs%<)Kbn`f0}bNkp`|3JMYgZkt!e%ebR^s zW05o6;LXIW19&PfL9L9J6BY$z!I)USb~uHCsAr|KHQJJj=w$wtH-vPHNc{zHc$0YI zwHr-ch()IS-df(wCO26)U~hebk~m=$RR`_v&t-X7dUFxeV1uE$o_t%gz>sRc1Z4*R zsna`5$}}2KA!@<7)}`?kt>!WaN*tG4AKo&KuIqMbtUwZoV7-DY2bpxJ*oH`PQwDo< zOslHOUbH23EbbS;2Jg6Z&VOf+@%;s%FJp27Y*k*umltq4{oHPIe0?B? zzUT@A><1~HJ0x}R+w7BP$0;SS@SpC5s1jaHcW&pqV7I^$p4$50^PBwvQ;{>jGOii} zqX|z~1D=)j^y_3Pm(_}&D&>a&_sw%!F89D*DHx2D)0m7$w$Kh6;LBAW*|i<5-UkJQ z$)Hk4Zqn5VCmZ%bUC7HJ8)?W$s3aU#z17ID4dNqU3gOPgP_CPBFnswQul!qWdE9N| zYphh{<&fQGidHbG8f@ldD_{OJTHz)#bciFU>7>Gf-NdE$#%StdH`1Tj1@oW#v ztQ7aeb6^?c;!d-qDyt8NtFyxVMKiVA#vcRgj$yTNV&Hi?{rPw73O^>Eg1%?x_PG|} ze)n4oO<>0q@)K#a1pH-iVqwt6k!9Wu1s(xexT+4@#!o0-F=IDYej@BV%^Q^T?C)8> ze4a_ps9=v0&uj`{gQ&7_zEEYMlGvq&1Q2=Dv3813`Ml!&+_L*G4(;r7uD0sMy~2rI z!07{mcyDEW;0Ay4Tz_sYFq+KY8?LyNQL$vZ)WJa|?v^RoN6C_O#Trn4pZsoSluIBx zc!7r6!DUnXx;=k8x)yJ)Dq_PJsr5+hQG@cvOMApTC)WJ*&0Vvlrm0S(8FTBo<;hl~ zFYoGp^vzT1PGhx@{nz*q9(%(}X0;ShA3{OAK`h|r;(ZWzPSh|;$fS1N&Gi^K-eiKQ zG-X2ldG3E^#t5`lV+nyz+0FTTf3KKJPe4Y+U+T+aUYRgm)q_-`iT0=u7bD~F#(+wZ zEX=LpRz8K7x&C9%=YkvDocu<^@cvX}VVtXj;&DS>8HvQd67J)7WPbNKyTxmBCUKPU zt#ZoeELOv5=ON&mA-p!F;N*_pj5E?vxa_MnOd(Dqm=|Od!ke%SO`DtjRg|NQfh$Hw zKeu3MHSFAq1QAC!ieprimjL3DhHFYt#vfI=XXhdEyfm)EQ#*iym7m@YWLAu>nW{rJ z8?Cd-5{ArY74*I#WYPB<_A1sE4-i?I6~~UyhQ-TDxMP{YS%&|918TyjPrrl84emR$ z&@{37jhX?{GaFpRxLw*0uWym~h3T4k&zS%9nL`dID5r_?ziZD=V`>Ia!mQ)u+w8{f zTm7)oH4A3wjGML9%%)|lw&S!*A<1Vbkgt98)a?J2jM08ort=Ep6;#%_9tzg^;RvcP zTiluYgg(2wB&Cli?g)U`DF~*?dLp3KGUsq51h+MC*DfKuqx{E3wkdPXl+q(NT(c#Fl0G%J?pbvJoT4>TdPmjW>kX5L=Xk?UkC23^-5{Lzxikv1|P`f zv7sLd&jmsXHLwA4fPi0!!)?uae5nz+s6m>Z(5bH2Bq!8_Mj+EU>_M^=-#M zmFb3;)>MavCB0ToYn6P0%M!@xSXLouIE7fjmnDm{K|_;XYn40jDRR^a3|bRbN@|-6 zUXw6lUYaHb{uH?W>aB%ZI@<=u&0zxWZ<|WFNd>b4l_ixgq^i(t#yOe6D5(#_K8Li; zx7NGVfLeGYUaLnREEwxf6(SD4vNO|a*Ub!`rc&Jss@J&31a$5*17-BbkQiq!qtGfD zbHkfPnP|(0o!=ybT}rBZp+Orbr7j1X!+KeQjbhsLSt~(yk(mr}ivij`WddY~-^el2 z1}}=6KXfuKTYDmExL!(!j>RYo6gu13f77iO7oSsiE%(%6(w$QG{lzyx)i@Ne!dJ|9 zdM}>(eR}Y(eP4QNRgiUDx^g=J!smD}TG7VhESW$h>fS5Wf;^L=Q*=4w-7mbSy}>*N zkLAPe8Wo2GEajpH0QGievTvEo?5rO@w^p_hIlJrreOt7#GcVoz2dp(Ji6N?jD@Zx0 z)aKxc4&XOsevnmfbYuFPyoCqB*%5`8ZQ9mhA@SxfAU}`j<3LwF05Z6pUMuYE^d1{M zYA7xnIui05`tTx)u_~=_*|oLY#_qygntDGrc3QgSk2e@{(>hPZCB5lBaN8Tg`Lc-< zw+d4UiF;r5VEO_ilX)YLx2k<`Wq*4f8;UbQ_+~^UZMWewYthpDbU{0g z>?JhJqWZ2zl3Pyuere&nU-Uf+KlUn!QRKJ%DNdhqQ1#CO>g^RRz<#Y?C1)j>kosn@ zG!p*{eZ~xh3rLThwwz%OQ*4DUXD%$6HvDbzre4K*OEyN=+lo_Q-WNe*59AeayVK06 zb7>eVv{#A7a)b&paPQ^StBaOcg9GK&)ZwJx2UKR0O%*mVzsuzN_@yTWqBGXYC^ICd zW6fPbO93cmI?J|J@95US%>#gRw?Lp?FSv89fO16u@f(A1rsR9F+pMoeUmWByxb0#$ z$T!hQ5xo1P5wm*g9-|eM9eLK$yM|tI{#>=LwtcE+;#7Sm_elCmFQ;AkO-tVF)FYHK z`B>UM4-_!4kha?CVXy7+sM)7#j$gxT_eMP^Llz*f%B?jiEjU+}UidKh_iK%1y#7N{ z>>}L|r)$`(=V~#~&jIt*Q&RoxpyME!=T>xn`r>}iZ2LtfAkg5O+!dEq3II=8Y0!lB zn#xoa1|h;+TMwI4p;SI&O`?&NZQ8HW&n&==L^D)RAVg&if=^A$S`G5gUBy~^sq8`d zU$4Hi%;ZkA3!Wlz5}xA9j$>R3_0iSRAu8M6X&YgFUs`*mwd(6`09Ow5vv>O|ioS3O zmb9+<+}4U+ewCskg-Iqk3sE8Om{~*>678xY^CTL3t#+r!=mV99m_!bT-Ya=^7%HJG zGoXX0V6aomaUTidNrfz^1A^d`p9B4b<#Vd&Z8mv!3|nWZ0XAI7o8$V2V&Nuhj&z7K za~D*U!_@t4z)VW{hZ$3u6tb4lAp4ij=)t4lHJUQ~{}^ur-18T)nS>e3?^>!^X?z24RJ<+_j~ZUHBwUJTO617ACT`$>NdqOl1xKuU-P{ zomK7BTboijD%%rqDYDMIS{qrGM2})F`d0@?Qn{Z3mqu$*3Yv30i}-r{f8;&z-&*Kj zT~tCY>x?^Ggkm7=n*_lB>hbr~QuJs#TC`Ta84D)m+%X?1q)>_2^A&tU-pdiw{qCIz zc#D5gxK=`rM}U)4tDE?RGDRty`2y~`I1=!=hS+wZppkFb(@|ZZ^}5|`iu4S?A6aTw9@(<{vBv2mY+rzPAW$5gJMaQMzes2{UepXq~=;TdUUr^A_E_ zYFO$iRLQsYA971mFWhf_%u!9L{+uH(EJQ8*HhV^yS}5h2&&#lPW}nJMQ>MYaTtx&N z%7fd)oc7&gb$oTyh|qPc#91F}o+kf8Dop{+e`W^ZQK3E3zxci?>Ne=#q27tTL%GHI zSepcNtn?Uo$2B#bM~$~aIZ=02_E*GNjQ>lIwGF68m2x^hS((RnFhjnklN9qEmR7Bk( z=Vg(c4|XaX)VcnmzrDKJSjHS-Jo=j#p!q8NvuKs$i&bYKJb4e|dL;JrIy-U1m3}tP zY}n@IdU($MC#2pj58VMG|7tbI&*c+0C0OBeFNJf5?EBhq~BDL(tQf8sIifLPzj7A1>l$hE$G?apnN%*FeFGAA9IPxBsf@oN2dv{ZzJNge|m zQ*-_+!2c<@V&9+L;_#XX`XLY#DqUF|^65D5Ev;s%+o#pk=5;OFz@x&W1dvqcs<10I z;-!lwh&`dI&Z8)fsO41cA|Lga*ynZ8PRfRDQW{9Zo%e`OS2?Ek_QbbkS0 zzl=s+LLQLvO@a^qZ&Qrs=xYYhLDrO%l_mSIrS`P9wxVLoE><8|af*0nk}jQQpl~c& zDa5|J?t!-W6Hl|*PevobPb04t`dbEfCZCko1t;p3J@S+axQ6j*zng+}w!`4^5Lj~? z41P$SH^lXX!sq@(XyToXetEp#dZlKHgN`|)$dgZstI7zcn$h-sAV?q^n4iD>#eU;iXW*_Sg`IM^b*>9W4wi2g<) z!OhK(uko;rF7BmhZ*W_XCQ07l$eVY+K5kDqzyC0Aq$x_eyOqTI2w&_ZTadB*Ww}tR z3wj<}eq{0|RZddC%-G93u6(0Ss)iAoohn(;sdLqTL|!0YslX=Hw065R60TIJt$mob z*o-Zi?nnI6r&fTzoC%ib6Fo^Lp@lwqayVD=$KVM@!+{K7fL;28zw+Zm-4$A+1k#*a#IH;B6gYXU7I-RJItqZiU-Bozyi8Az|}u zPACoDC8}oESJz?RN%wy~Yo$K)Fxw-n<7`lC_gmq=+EWR%_vsZG(QvCAMaC=M_11NvV9iMuAbhisx)Jsq5N>-*AYuyGnq#@D#-@W$sM;?gJk9nAZt zUoHoOlLZwgSQ`+O6zF$BHtO>cR?hU3-kblzRHS<nwUL)EYvkH9f7LqWG8L>(+s4l@4Wnf_&V#bCgZm66Dpy!fYP1PofDPr z?odFayI~iKinK^fawsJ&Ejj59Ny!ny=o&D_2E6F~y!Z3|^&ZFe$F^hFbu7;97w6~u ziCNeP>eAL!{wNSz-?Q_a2lS?!GoCO6_F!)2U9Gn}e_@5qY4e-*aWb2Oh}9e9Vd~%N zecr#?d-nGqPaqWn62KJ!J`myL{fBw5zA=d0?=32LXP{4f%C9m!MUL0SL)}F-sW5Y1 z{;Pz#J5euE*=UT5N8h$3QT|mIf%0UZvHfZ!S=;Atth3RI6nf<1?`hq?iexAF2M-C^XBF#`)=Q@Ov0Yu$Jq>M4 z|E_{TR;=3Le1l-R^M4uE4AN z3&bf0PI6Ds^L!4TLNcZOOCo9kIPq^@^Q|A;a#HQ9_y&AzE&Wr*6^de+)ld6ed5I(8 z&QH4H?Emzmajr! zyteD9)qJMQjPKZizXHK!+7{EveBMno7{y{Fm@!0hT4;v*Iokf>nH#Dw=iQa0#{so2c9^+chYR6s|xdPqPnc#B0ZTex{6Goy4Jbuh3UhNDmP~+ zuH#N^yFt&|H!T@DZP~T~{b#++ps#D532LK7zi>}5{A{g4%CI$Wp%0s30nhxvrFpPl z2VQ=J7&s+GV%vxF-M9}kdT%{c6Y-7~Zg&OplOISt#zM}!BYF^Gxkn+?h3t^1h#p^F zVC=jeHy(u$rb@h~(~~c|9g`Rvv0A|Rk`=M|_~=AdFHGUyeb2#&)k+c`CT6^t(b0%i zebx9%UveW694;0{L#2+Nv!S-F577oSSYgzj)5!~%Ty4ATRQ*Qaci z?`zfds_p7xDC*^-9KSmnwoVDvGD~-s0c{}YBPx19n zgtIE7HK*KtT}Zin&M+uxJml>syb;WhJ)V*ibC|_|?eO-I_7NINcCXGtzCZ#L%NWjj zbO^5pf5IRKNKi;HJvv(kX0hh?8NO^{E_!AYV*SsQIkP=er8p z*pnYJY~5B!jhhk4Q1^a=6PFYy#K+~rIsXBt_X{v+wOT__ZFHK$kMt9YEpmCJlY{d^ zAqT!htUJmxm;fU^vP~Mhy9C5EzTDCb8^)~2!$vvieolK+tIQHc_@caJp~M`DHQo-M zqe%!%V?t5QF1I8j?r8FicFsXjk*ko+=`Cz{(Hem~oN*?^vtNP@hx7Q5A$Y0zSY@xE zEeFRo&<-~h1FKi4T+;Q~B0R@%wvh@1SUFy55eTo`7Ccz1d3Kvc9$-v&>#2l>C$NuV z4C=vM^G9nK_O^;<|Kv4eX-D>-$T^UcPnK-kYzUR-X!3PzPj}a?G{Q{zTVYnm@_`KK zHeOw*vd7w5@{DfIfuK(85Z7p9Edg^a>-S}icP1~6W2f=x zlt9pTopyb@;xIl82s;jQYA!o`<%4@Tsu~vVbQ2!#>u<5F@)JIKbjfXtaJ(F%roIZ* z1$!WNTAN1@+qFOA6QXq!Oarrpgfpy)_5pZ1OzLG$fz={)TN0r7A_3c4or!u!kV1hY z4cI04C=955Us?p1J791J{uxw=9Pf&`kaXvIGAlj6dYM< zx_|m9a`WEHRj32~iMq?5&;KBTqDPO~CBChrcI9nXW+Q%In~JFd3ZG7q*GdJCPLDRR zGSKSAn@mN*h`}1_9HPe$Ylad9d>u2ZD(#!v41` zycJw-50~e9Z-3QEcyw!=iZEF4U0HdW@XoDo0;!iRw;qko33!5rU-jC<I;{Z+@96-m|NxBlJP1Aj`#p~Vu_;7Hzm>Umu7+O{4;43~X*?{;tD5yaX(p5ScmkzhaQgj2>QIql)VR z*BDzy6s6b6zj?_=hFE4<7r7$CsVji_gVV^dV2mr@V}( z69V_ZuVUJXR_l1h!^^*M|2guwIhrrOa2=hc61Q3ICt}rH>K8R$k>g!d9#W}Cp0~5h zbE~4iq+;|sM5JV$d2U%`L=0U2mZA$OSv>WlEUrAW$866 zOD+=nKHA)Qy1tAdI&%(8$$U3hIp+lWl=MPxBLYGpgG(y9-Ae_RDIc>YE11lq>`KiHmt8$H)>%=F!pRI1K1XEgrbiHAOgWZp~%_y0Ad z@%%fn)ZY`!4M7s+a5;bqd>o#?Wc{8A@M^-895iqCl-yF}{uZ-=27`I;wI zT7Q?EKjvVOlP#rn0skQqQ7fnT@+7^=VcU zPh`$W%}6*(PVX+5jD6=19PW8Ty(lE6(@Ua}K_YmHTVL%!~jH*0lhyPYKX@5vHr$Pd6Ky z5~5nFQE;fSW7WjiNBOgmZ9QJcXZq!K|) zE7$?kCVw9Y@4JdL=Q&FG(lrxJdEofxJlvcIZutHj!0F!96H>R&aukqu1l$=}tr=PL$Lp$L}4Ym!5FA_R5=NBF^( zK%DJZCNHB-Bl%VJ({Sx>qZx3*tCFr*_r+6MSsYYWbNxoH>(y_msW?qFo0hPtwyY}< zhFdImwTJSLzKQ;~vLCg*j`~(6-Rn!Y<@GU&)aH55Xlig$X(5Jt-80ptLS@pGAlrKHIYGl!*p`TLoJI_duUbL;(!%(Ouk>A&+;T zvP8@zi~U6|UtP5QbZ&XLQ5I|?Ww2!%6;9uTs9z!%#laz*{x{Ps{#Vw2LpyLmO^{#^ zt|;(<5U2RxOfx&&ZBm)8w@AoN`Hh5RmPn7=4;Q|+2(xwamUJ!~BOh8NB7o(+&rC+h zR}%}O7qzaW_N{CCdi2VxjLJ5TZr42~8+<2BZ?DCvLZN=2id`jM`C2;eTf0blsAX2eC^6^;K-7#%I95~94XbJrX5A*cqmv<^Bep0mG}He zo!H9v$qR$%E6YtiD7rT0h@z|WTN$^^)BuKG^BET#D8rN6yS8?g=zOQPkV2o2fbQ7q z6D90iwwB+o5`*>q36jq0E&(BOYnKH9aRYnXf+X2JQBYyNPWX7Daj{_n`Y7B*JbkJ_ zqu))pyx8}>^ux&Ya}Y~-s={Lo z?6;|!V8#(mYMJ;!s07q=%B@lYz<5qZ^?THAoKJ`&Eb|i$vLrHgW}T$1qE|w$9e-RE zzsCf3dI1gTqM{6rI*vf6d|`Ukw&Oq>`&F#domrsd`R3xU03XQ^;^D7-blA#{!bV>RmLH0uss3^@AHSU?>xm{zSh3Yv72 z@;qPeskE8*l$#0abZL$bajjuAx~9O~n^NfY$Pa1WyHirrQBib}u_s&N3JcHJF0OYi zPLQ0}K_~tO43|hT_t#y&m-6bSS}Px6cGvDVbk^&)+`;g41I5++{jkvr7T9ck>Mm+_ z-61efdmIgJPC3c0Pdc-76X-{a&0))V3!LHTltSbP+_l;>y|^D%W8mB3pRwAYHJ0UB zUWmO0v;H-{}o%10gaN$fF_=1Kq2fI zP-v+HNY_0?ZgDLt1KQv+JPP+29$fAnMGKNX(}VMB@`A(z*y8d@!wWWn-Zs z0VDHeJ0P~z`ZK}fFL$#Sc^0Y*L8FWsJL4pTUhdvCxnj)ifar55hnbH%<(MfA{LnH6 z8Q2C#Vm>W}?0!N@>I6xj_Jvhb&4LWj6<49V|K+9W|3cH$fZZR;zAGo;sD?AB99*yT zx?oCf5`1?L8tudt-jZXrw+iOI0Drey1s`4NHIf9jXq~DtC8h5Ymyf2{p0M4u?$uk< z%r0busd0TSxprf_#@-6cVedmXx+?O%XUCx|cdlX~k(=)aS^ph`NAx(EVhp8E6waAX8 zlynG>k68fvKb%T7H1n~GwYe~HF7Bw-F6!&;Tqs@s^%jd%+~#QF9;ZiPQvq33atkZ7 zD*u90lSjYMX%~jF^+bg8gg11{_N2ph)#m#*GAtni}c4R!z=``AMo zuRp@PIG!%mywSR4-fpl&mQ?0Hs%?gahYEVX0WQL+!m$cMh{sz8kRR5L(zLC=2_6op z-A%SRV#@|?YO}r6%Pl{oOn0SA?$#So)(D#&3|D)wWqalw`YSfYH|Z-aZ%DN3pWL6K z*$t0_jaI|e6q9DhH(Y2F#mrzqSxHT!bug#5k zeauZj>+~HwTTRX9QQv~jQQe8F;2e1@D}!lV*PUW>Vyl@-E43C+Ks}7Jm4Ck*#h%j@ zqrp5=t11Dih_@VXwEaO*+5XJ0I-n%(>5KF@nsl-uB~zzyZK0{e&fb&Akxx4HQO;Q> z$lT2S?;d2L)utY5_qGzTY$2Y>JKumUgOUw*DMODY*u|H^&f!iE$)-j=waOj;8i}F& z-Y|y8;pzwqeD|MM@n(feqqBf9n{7Q0l@AAX7rPY z{;qS}NZk3s?=I{Nea!f4Zncf8@GunAnh0ql1BG3JKjZ{nVsxPNXVjTij`9JLAjo@_ z!mAd=iSyzbEybt5$WlC679Y#_)Wu>pcBDSGZa(YrWf*OJ_~bb0_bB-s@3$Q_M+t)+ zzD-9K>6^$46TEYez8JzgEXm`HjLh5*UNhss*FVwUjP6VS%~`_#4FmqoS=2s4wA66L z@htI^J+rBkJF6-1KiiVm%v8U{1)`<|9=svo>WS#K6VJfYd%{Wdn_5tRX6Yfaufj~y zbBR$>v)OG0a@%UF5+OU+gx#?kz*jeLMLupX{C}WD^1W++I7F5us zW!v0{1cNXq&A$aP&+W}ki@#Xwj~lm#EU5=5D@$Y>g08=p#)5|LS7Xwwf8`aD(WPbX z(qR=ZbsD{fDukcazC=)aH+RGidSqW*^$TjNxw}uK-)gQ`sM8fIa+u>}P)~4MY8e#l z>6~0M-{Ni_>gt{k6H1+12eLmRei3Fm%%m8)!8S5j)L-Kp?Ed`8()W{Ci--j$(Lk8& z2~I4N7dnFDt=+!#7RL+knq*(qxFM!kV@;F2<&bkn)tyWBv|(+1IS@3|o_FHKOYddV z37y$Wi~zpt!Xs0RkA=tZ-C5^q!@gCc#5Bj51iskZ44pyL-Bp2xVog!=Xp8FI^Pc-I zGK0uyG_;R7jpoV3BZsWK`U7;4TjQY`{7kAQ!J@I`Et^%u03OcUz33ZzDgL*AAM$_V z-~P=Vwd5d3Op!sTj?)f((zipc>8b`^QAq_+1IIhTI1V6$56U&8}hSERP5^sMV8LT zOGH*8IL{wHQM_YnT(M+jH@05Dy*DzVJ|M-tg{-yl4yjRU08}%#GzHpbi`%-?%$MV!MuSXRx zK^uM{mD-Z`)06OP9e!5%67=qxO7|e7H-MZ_-QW?1SmySsu=K3#9+}RnkPG3v+?{1h zhM%XH6K2ChM4D~y1Qa~u-tEDPgeDS}<)cC(W9beivzCT)-Mvr4A$RatKrK(?mWAd;#;zke|>4)SBtj6IwVpQFiWFe4y)nu%|35@ zZfWp3#?6v1V1F^%M=+3v$GV=)wGCw$j&*Uc%Azx@A0v1e2y3Zd37`@UHBF5QOxJVP zcl52A3CpkP;iIgJ-?W?Q11I{cIGFi$6wNzviUR!w)uMsSDbuc1E_uoN&yz#Ue-r7} zo_6S22Ob#blguSARB;j)bl;nklrUw@uHH~kZ-_YF=JQn-8^NGpKdI1kk zI^7w9qIgy897*Eu{k<-aybTOKH@z)ZaIlg91l%C(vHzx3<^O(9pZ=Xz>8?RCb#a9O z&>fue|Iq8et5o9~dc8(wU6jwW_Su_1)gGep867;>DPKtme{vem(mK}EeqncOT06ka=U{yG+wu$aKyi&1`}yiVt}tR-|E-wl&Jq~b{Jk^ z9HYN=b{^@i@a?rLZH2W#8WZX54Q<}^W@r8U@(FDV2m$%niG-44~P2u8+`` zI))={3S#5+>5jH7TePhT5*_ms^(0Oc4?P$*dUEL(GcH6LJ4QQ2b)%?ARDcLWN97+b4_&dhb~@`=m}|_?8*YH-?P<|&s|P3JPJ=Wg9~YO)f-vZ zyiI<_i$vGNa=e%3VJt~H27Kq@i#SH2)xs2)dp>v3#&FnF|M9_Qn&58-6N}v}SM!hD zC$%v?-yYaKbbTEhTeGKSO-}7atAh0^qgd2?w;+zwim-_@onXxP zjL>Jv>#t5aS@9W>nNDF+6+sm;pA}i%Wz7%e%!YF2YSMBh0_3>Lv? zno8W34ftFLjq#CEO!Cag@}L*`93C~p;LLbaZ1co!!zM^|WFBfreNZ^`>|BKmWbL82 zblJI!?3LB_gBXecz2e8eOSJJ3z(`nEaMVy#mS^egaPZ5|AtRLwlioJj8~7vKy^}sn zQ-$v_Ag3h+n0`oSzjAVS8C*RSx&Vd*L+0Iurxt9AX9xBi(gni8A+udG)Svk(fDR*{ z)>*C&gxs)&B9p{(!2=Ox21H_ITIyq~gnbT0=4>4+7#jdRzj*aAzg2eij9*m!qLgzV zw9Vb`#H9|lR6ADC$pYR%9puH-dm7$3wDcDD^s{fXAH8BZO4nGOQeHJxUQJhC4Sn0y zobnsip(@Hu!hsY^b!cl++o+6jP^?kgKoRzbK@6x+P?c(?CmcI@IS#E^?B<|kwP{0% zxC{4}8Z4(a?R%&HLXgY+pnP&;NK=`v|B^hW+0^01 z>QbG75HdW(wgKap?F;1#Jq`icwIU+E!dER|tNRgxt?pD%v~8R_qexKFCCk<6mr9z? zmyA^n2ww%E0M8NlQfnOL|BG-#_6%|FLzWG3S^tvTM8Ku_V-%tt)&4v5N-8gWY>ROr z|7@{6vYF)R#MS)Yn+1qyOj{rqdX+ZWK_fJ$bU%9oW6d8@cF#PSzO@>2TjY}T4;MjM zt5CK1w?@v^uJ{6}Suaqlm2T`|pMMp-wQ8%;Kp3Uxj6g0jzvQg#qk8lDubIVLd_6=~ zVN4`ifs9AUS6L(R2ispN)*K-rqv%1>yx);HV9+-1<{jNo&?tP_@f(;Lw`{cZ=d#xm z!sW(^h6x;a+o|%-{~+m>tPu!wxtwQcVyleE1Yf4xBzzZO*XhX+lS=d`Y+9X2RJds&E~)_QuE;`Nxo&o z9a}Uk_HaW{s?4b3(laH?iYl1s4^u<%m9wqnHeKp>%O#@%uEKfKws212S4)1Gwt7BU z4>ZhlQk`aA+Wc&Di)l2D&g6!x=Izc+MrYb==G)V1#iV!|tp2PbwTDccl^Y>LTFuz`+IVbzFY&H4cCHOc0e%t?{l_nky z+$J~c`>a0P=54c8eWN2sxskh>HT3~pr3(RfgEr>3`u7BXUk1wj2mGGi+D@C(bR8O{ z0cssuW$ykb)Akcv*qxiBi~k#>{jUTb*DSZe+zhuLm-+su5|__;yID;eF;=N=^%H7* zsFl)$YQrE!|M5xp?PRzggRs3x+xHOfv_%)d?)y#9!hH^j$oE7zhf^U{I5@Y={vP`O zQM}_?OhV!T$ro`F&Rb^qG8cxtsfDD8Kq3fr{AV&o!Qn(_I;5Y=fan-q zl&%&)ag5_`+Q*lyT%|{lM)zc1K80erg7fJU%n(w{K8jdgxM2DTE=!;$VYnsyy1pfR zy)Cri@@R`*o^U>8E3f^mNN!X8&6ILlrb9x|BV&YlLcuo9pxw4ir;p(2q?w9gVoQeZ zVuxG~(DbfB#Q1HXqVZeQixR@hk0u&m*Cy*#sx8UjgVsq-Y^4F@PqScivK#K76Qtb>B*M0S9F-grA35~{jFoCw2dw&1W*mqR zu(Tq#acbc}ldUO7ll2;|_MTTQCqk{h-4*!;<9>DJrFWI#r5>c(5$N+Cc8d`vv>7&f zCmWF53{kubBR&WjJ7pr7aah8<*+&?SUAB^6-Cr8^dfEfMYms=Bdn&_NYs0SeDmE7Q zb}Aof0S}%GnbF$;MT9U#geW@ckM2C6DG(&k8}%hW4fFkm2q%?uylS{%%kS5LBy-O+ znVR!QY;(^hyeF^dp6)fo->~IR_j>Vf*m9a1wp{OqEpPT`|8}YHX6~Sgl`94Elj8eDG)om~%06>{o*N(D?*#>F$R=?r4}?FAa4SKSf03f)`R_ist_AWa~{ z7`oBBDQ+^)HzE&V-1(jpj#;7BG?Bh*gWd-UaL`ljSnfb(>(>1|&+$wQ#{rKHQojb@ zrLli^V=>T;v>>flB-sljXDhihKGX9jM3Bn$ch5yQ_D+R~>_u;YagVKM8?Z)$lzOn_ zDQ)-LbF<}3)2&0?SWn4?=jY#7?EOW&ioRfS0ITr`T{=Y<`OyQ>YobB2% z-r8#Kd-JNLsV(yETW+;vw!nhT;0`i1Cv`ZR!V`@u#*<5?CXEZ3S?Y1^eBGo92?s!E z>)w{2!5Jz!;S=eneGY5gfg|T}(Yb5?8`=J^&K=kG5oF8eCYS<` z0w?o7t!b7+9Dl*`%18VI9U0$}qE6FrqS@Z`;k_J*Jo-frjeB8&H>jKzt3)22(M7BM zLE~OUYy>}-;sg7RWL6JRM)kNpZJLyG4*eUh+=lJzGlz0RW7w6;h?X{L$Zu2%DYAZs z-NBAtTW$LdKfcG(J)s(#ZLk1bKCT)J2Y>m^uI#N;HGC;lrr@*`(3`{_r5L#59<|?c zIkqxt8-A8La+B@qPr%^6eB(8h9(cFQTkm6cmnG5v!Cvhyj4h-JOhQs1e_` z!2plO(eNft+`u1u!Cvc`706QgH6qx6lvVx?{`yw0UwE_pUP{Hxz@klnd*j3)*nI!6 z2?d#N*|)?Ok~o)@Y<_6!kR4HOcBARLtLs4(@|_4d0h>>Q1Fecz8$sp?kkF2g12?wR zb!SC*dr)vfN^^(a8mFvz)7{y3wo%wm#Xo`)=EMR9=~CeEDV zWn14XG&(`KKXG}a>6iBw6QGV2bx-zUu7r4jpf?W-eewbl`^{HaDECp%iBQ0$_v`_D z@Ev6vnQHRQ_fcpo>VEg|)nFsA2|3lgSbvlyhUxz2cBj2@yO%#dle>DPdT^G-pdk8o zz1-CXcr1$=K#=iF(s8UHlZrU#zo zsiNS8)%YQ`KvU&=cSpz4Y0onj&26*Mz&2WTA6>UxQhHYH%Wv-Z z`Cm23-(0cQ=$(raL`CqGU?uYfmLTaAI&ZyMQra8*Xxw2U=;TlT>>-P9JJ%B1 z)$o&f-H}4jP86*qNs@fm>qALxkDM-Z(9s|KmFA8@|IJKAAMZ^ca8T@@+eeo3$3ql~ zSFyNn1sJyQ^Feg4d+R?i|5dpMV`<70f=UOEB$ws@NnO($9W^Yi;ndf+GIkKXQVcQ> zqTGCZgH7M4=%oe=na9qa2k**qkjc6|PgXjiiH;n78>nIkQFLR)=AK&8Gol)*^T_Er zm@L_FS8qJjSQhyZH>@=~3~pDEvzMqSK$)1+XptlB_uH<3?E34AGx$nLYy-M)Ucx{s z5DaXa%6|Aj&3qNVoP@Lltx!tcJU#aO*IJaVWWMgjSKG0RbP)JsP-&E^YRlA$sx3nG zhSQI);Lm5eyivi_spo95GKXdwabPuN0o=<1V@_px<**N zHwAjc*&nxU2XgSa$zN$e8{zD?Ex0ygf!g23w!idyscgGvVK$D(W(vXIAWuu#$y(}G zXx~xZeSH$ixTx$u>H>zkF&x<~9x%yX^gW*<1FoIHwtehwvMM9SU$*{Q%Sq)C) zcAEg`)aTXCT*#FmpZlye8*-YgScC|aqg4$vRkNMEVX$}B z8ssJaV&0-4@^I36h4U>a)4pUBPv} z$sb(W%SHNjbfvbb@WQIKKIj5xe!vy!mkpopT-t4#B-rAQ@^8ul^&+;l1_QH!Ik1T} zEC*2nYaat<4!nVBY;3|jou}`GVcA@k(_Y|3{}4^p?&WYmNw;$O9M-`*Z#G3E^Hfo? zbid`P%~Tsg0abRi6Fe;2IJ-KHWXhQjVd_MhnGCjZn|tNeU%eR&wDBl~Rw8i))n6;a zdX;D9cSSr?kshhOZfD_UGjIzkGeF1$6Yf!mYM2`71ol>~@Tz)DxPDq$s@LmO=ll%8 z+acnhT1MU0vf^*8LsSK_Dx z3a^!c1xA+$cj(G#nrD)4R$W?LFmKHUU9!uEZN3A&B${}~1Je!Z(wz7x@xidAiV#=1 z19@~$cf#69_olx_xJ_(Ke#!*w-ue3Gqk4=qb`yh*2o~Uw4vd@wX_XvRP7v>KzpZ)V~ty<%;q<;dg>d?+7+!Icz&sB>p6$%8=S`6(Yj3QEaDN( z5IfbKYaaVj;2$)}dXe<#;`@hZp}&+#{a$D9i4AuvmVXKTl_;Wlx*8NdZZodfY71Hg zG+cj5w2Om6qBAFptXvF7eduCzQFAqOt2x0mG7}H;(TDup`}*^O(&`LbOrXzwbe_>u zExSZIp$%=5)2%%oe zC{DG@G}z`IKN9DSswCRJtPixZ%H7Zem{rk8FWRnIXZP(=XlwHMgX3@67n3SWLH7O`|Apvjk7QpJ4LS1qW67tHkI4CfVBl zSKiFW9V+s{SZ>bs@6iRfNt+(l8wi1tIM*6Xa>&7nzICUyV^%QP;rK6s< zfxUPjiUZr>M;7{nCkVIG;ij(J+gA7ew{pTfc7hYb8$kPn4TqSVtl{vqO~WM&gTC{4 z>x6c5SYow)X8J3zwQ+Wv)KmDKPn(NNm&K3~x0|%+>R)8RdttS4K20BPDNsfry0jZS57`X*VjI=Oq1c4FELnvA4y{;NZV_OO+IO<1#HSATj5#WHc?O;Hnlvh} z7%+Vww0pnRYk+L~)q_xY(Y;Zwa{JMwG^1=7dx9Tthp+s`w&x$eisH0qbzdu2#`YPh z!@?21I;f)Y^9Q{&A{*^6)XS~}s5CjKH{c0`$a8cDUSE3>S3OO8Mt8hohiiuY~C?9M)j|W7`3%A8Bv5MJ83P~{7{a8*#}`UT@l5e8LjcA^FA45OtvA4i_IYLifN?6gZmSJ4ppKF zU5ZksMz41sa2A6u@MgppSmIo z1DbS0`}c~b5XXMQl^Rgw(DOMlo$=A_%%baH`{wOngC+A24>|ZF1+AE^5>UEPEk0Zx z@tM1RpT~NmqEw+DRu-2j;cP>SQgv^Q)=8;fj|V`4mu2tw`$GvE-KAF~wWn`-tb4?wzi_HFqQ~Dxr-d z5K$6Kaj!<#!usi=sjldp$9+Df`{@?<#LXh)Q!4JiJ)q;$*`DryO8L;Cf#BY8uHEek zM@T0zY5xd_+7Ia0iA!T~eYn?F_Pm9~ygP`1Qw8G;X%oXR_K%!!j+<^Ym|S$6Cl~0( z{pPI`#VBr(Oc1EW?`H8&RWG{LR)4}pqnUg{seKgLP@qWY!%?DOEcqYw&?_hJfsZqW zxlXU+)ra7Fx};uYPu*bT&>)@}l{XTNpXI{^0&Z&l zVe{ZyV9(a|7$}pDHA$5yuQpHAMHVv28DL1}cb&qA(uKbJ{y}_J){8W?uMW$cj_)vq z?5g_C1uR?2w@x*)63D&eCPNCjwI}oq?Fc-yKRjCNTyGlj?s_`C!;TkahpfZ%9#ZCi zXk;P$d)cw;W~Dc@XpKu$^s#%EM8kd1ePvexK+gS{HFYTFXR`1rOnwph>WC;xS;JF6MpgeQ)!1s`a}!Up7>`Z|Y1$ zVWy|_;ib$!s z!L)GWR)?GKD?|}|9b~g0FMcf@`BC`mb7({jqEMi?IDNxGQ)3m_h|i=H8>iAv<3LFl zo**o)<6W`ouN!5k2%@M<_>&o<@mc2txf+F|w_XYAQ{a8AqNF8%@m;fHoZB&dq5y{` z;|A@1_MtG5>Is{sh4stEZu&gMDQ3OMZ=yACzuUDBc-4zO-nHPOBk&veF2NAvDi$Tm zq1Am~+4kG&=hewd;H$3ppIQgy)mjzh!QkZkBnZYNnQ}N6uyS^1w&(P=4;jjm7g)yX zHD*$Q2CNs_Z1?|M*fnNDk$>pJbmLvtIjQ(YW{SU?>a`acokPYOvJh&@SVF$z0t5O) zLoH>6K$Z??)@^||-#`qjiVdv$4WuJk-y&_!pSGypvO>24`%hYCLYf=y--r&#U#tux zA5ONo)dlN_&_8m1X(+pftpi+mny*NP9-zUdQ&`oAkEimLy}2ziE;b!;fcE*|Ppt0~ z$>vI7Oky3j(1^6#ck$=dT_wiJYrHUeOE!8ffsbl?YnHAgV>uG$62a`>YioqroziBpyjP#5RS=KJzjBA?3yixCFPqO|>;&@`vQGf?Yt>ulc9Gl_s_c zg$kDC`)Dc6SFlLGL;XR0wfVX2vq{DG?c9RyojZ6JFD5GzLW`K#mVGOE54>b9LtdbrWEx6N&SOByGNm?hY zC*&696d^{?riKxP(@MAk%ETW9oIKf2k6OIdh++0m#$H%UDUXEr#UB9{g(Eist;_9~ zaM{|H>zqyug!Uz(F@sU|qqkA9$=-yO>_gVXPrc3rfY zT?ds>^^?}Uz;L%rgLr#>6{+o*HcZ*9O@S@q@zGL>f*A_$b`NOk22m}X9YFLr6_=VlfTIC1u_t>2f)~$`L2OY zuuMlas|_=wAK*1$6>QszQA9iG&%NU#AGyvp5mkU#S$^Te|2AP;PXZQJVYI_O=BhI_WY z^`+{j_rX@I0wqP~mD@ZvGf3L&Ur3tDEp&|OseCs-9qhcQN8pMTOw~Q;gGF^~j$fG_ zeLayg!YTvUNOD%KY*l07l)@TDSN5i@gjINrxKpFgr z){V!(Y^FAvjX$y#wFi*u25r4+!OSe{ux6`!fL~Y+8{-W;RO;0j?YtNW4O<5) z{Z7End3glQFher{a%sFV*>TENZxcHD2he;VZrDw_FJexDJ{hcE$;4G zisZ#zixjsO*P=mkN`V5!HFzlQTA(--*WfP2T>}K?rhUKr`|i4b+`En>YjV!anX_gl z^E~tHz5k@@{7n^oqGpFFJ56ygInRjh6tG{FQYZbO>1Q+^$y4;zH-uqCALJf!Efu-T zEz5E|dlNAq2+P4PJ<0Y=x4G6uu{jbG-8h;4eiG_lb&FEFlOtSc!>egw+IajRAk9i$ zF#RQ$uXbCBO?0jASMJ)U0Qxt#_eUi^b=}AxXhBZV_dlPz)z2+IMIYF`2dlcvgvBOZ#0CENZ<679n6|LIIz<7%fa2E#uek;w*iOaMp zc!CdCOo08v7sU?Sq;0Wj#vvR?HS8s5c_5oU>r)nwvfF$ve8q?h-`iJDL9lQq71uT~ zs~M%|9LW%&^R2w0Zfllyf-3%aOq;?dCnr7pvu&A4g3HYj$ioI2)s(~Pn1_dBSY#kF za2ME^b?b>orsqBo0EXlUsI9&IWo2XNl>}>`mGxP|J49B0iEv`*=bW zNI_PF#!sp!;GyP_6)+Z<ygbR!uj6^mhshY7GVPi+J~aQV6gRQl32KsX+WRHBZ9XPtu$ zONyCVfbPwVo++!pIemm^A0Ey;k(_DGfr=bo=B;mHSe3f7!z9}#4rGg*Fs4~ypw*?Z z_%plDR2zEu89#OO29RtNTvgN$2)$PiodgK&9tlHla!*(KFDZ6ugFi?@8^2oSE;|9U zfZ7q>p3-r0|K^o~@1tnDt(Z1E@p1?4Ip_JkBrG+NXOR5W!-Jvuxd?5n&$P4Qv~uHB zzp)|++cTPsG`D!}u2fr@%hOk|1*?P&i5vnP-#Lp(XI;^_8%U~N6 zo$saEpJtA38J?(>y#fo3XAl)f-ZN&11BH^UC)GIB)xNFKlN6N+VoyFBPgLu8Pr!F% zOn9-VI86l+^P8h}g*Sy~F57zhdMHKoEd~=rQ;O_DvU9OwX#-^^i{~$QZ(V!Q2VM4} z67KU)UZK+-Z9FQ6oL4$7_UldIQf*o+WRu1|yqewT#p!Tey}tJu>#fP^F7-Y71t33w zH#fbn0_iK1lNe8{FJLA(*98e&lj9rq^v-GGtInHxNj7dFL}rG5A6cgbTIlqG-J&D) zQ&>Y1xHc-IZIm^0i=}xYXWyO|?684L%ZD!Dv^n`&8*j0(cP*zi*xw85>jEnx@@Iaw zl_LH_AJcbPLn6J01zYNK`l{lY;gdA_iyG`DVP_R@O#7}2hLYA|t4x(Lx(gA^qFPrp9ss-OZ7>egvJqIUq!9Q~qqaZ%^ zh4f(_m%5ULG`hr{${Xsx-cl={)~GAOzllMjk6*+~VOMahK+A`ME`c~3Y9fXuXX%te z6`$Id8zSfL#ueC}inL$k>9ulw4EIYbr!$oOE~J$^oKo4$U`V{#tAQ2JZijCidH` zE%QTfMhBXLh|W4lgy$?_gFuC}TA$cbLsHQtc7w0XZ<+9y{jC2lwDp^tCS*nhz>Kxol(S2TT*{ywMK#&PN)QIle<5E_zsR_+_&E zf?R*&!M=y@uyg7P=+7$DTbw-Ha4X)mJ3G4eEJr3B^!2-=(2hDC~<@m zmg>Ri){+0`nAfK51$YkIc-m)TtR+Mip#}s(AYW}ONL!}3?^Kc%tx4}`iSUGnKJqam zEonNSn+Q1cklqAx$lPZ*bpiaQA6lIve4FyS#^;uj;4nyO!6lx}RrQepdmXZp(%4u_ zRTyMYIyB4wyzrj)1mj7*^cO+#xnsHT7|eV0-s&Qx%g5?#d#$D!AvMlXhy0ECp8)#& zZ*Of>v-tj}CH_a2hWC%{@>L8Cit!cI2tGbQqxee$5ZB}w%Z=MrhV`9VBM?_Va9EgY z7)NR0Vrz`$*~?(`3ba554SYQG$1$~05HyF`>>t?$i6#=!7qV;^cjy?CVdWL&TvT>T z1j%1$DzxHvf@6=k0a1=(H$%qcQ6TQO>-9;hT+p$RudnLe#7K12LI=vpXMCyE@} zSfG!diTGiMSXCj6Wc@*$^XKVrTDKicl#)V}ROij=hPfQ-#QBJEj{?US!5-TW38`x5 zUTXe`-(E-ezahWxGC;#1Pl_X--{3Zc|I$MUC5ymMnPNt?RrD^*Fk;{ph%4R1r_Iy< z81wKUMm^^tb|Yw_%K_sb zG~|{LbK$&taw-$i(}`~?r)Rh!l7SHi1;f(D-`k;^s|t1R-E1)?^Og$B#JtPCDnXFE z{-jbA7%hy*3&Rsgr!s)!dNJjHw1l(p@a(0d{<75l(PGagY%@&hxoiFsVryX{gI{fD!3Vl}6R{)^p`b3KDfr-+ z`DD=Kw}V#{_ZKmr@Ecd{^AnJ#K(tHIKS5e-Er?672s_QnX!kF31bx>-9z%>8si4mJ&yo^U<$%Z|20} z6sWo3!Lp;>8qUI;y zH&Dh>)b{=4e6S-t#d&bEA8KA9x7Xi;Ur@vJqgRWhNI)L&sObJhPO5>8XjWjKuMw&F zXgcIwk@l=A&%A-eBIn25aO!CDGi7E+Yb!bMVcfgfQ_agVK1iuZ{EA~dpo;M7Z^^z1 z>I3C<823ZRF5X{u6B=vYQD1uZZ^k+tG$z(4)m;(PMZkLbL2$Rbf*Xatlz7|Q_`1?s zA((=jSRdd9TB=B}HCs5uEWS2w^8zhZE-o=RD2K3%$Zl4hyzfPf`Wl+7SLb}o(Jrm$ z;rC6%aTFh1-VX~Bv@Ewo9@)-RNy52D_*J=xir%)}IVn}m6Tb9gbcE;Ug&=$--U-n_ z8*b~qLdV4Bbc3g57~zK;njRH9Lv(~jSUZlKnza=>PWVs##c!e56D7r0X82E2o}LLN zx3t|r5Z431;!U11jK_EM6l)9z${dPL^SCW4VZ#)v7K%;;wCPO^h3?;Y(v4lnsV&SE z)pKH1h`wlq@jJk=DVfGWiAfk*-isGbpF;M*YqZ6y=Z%%3Eh5R*^XZOavqg9B@y)y` z3m0FK=hyR$B%FR-G(>zo_~yve`p3|i22p7& z^m@Sc+CT3A2Slb)tO_ozj-Tza_4R~`hokEQXb);*TF+Xzomf41tF&*Mr@yik!ZfL` ze<-Z$V~IIz$N!u{_~^h9V2ZK}gs5aSkHfAGN>|~!RBX<-Z1*@NC;r9P;_;WB)z%H$ zS-Fvk9K62sr`%%^Z-Kx|F}Pb@=gbc=xbG5NqaWc$G;w)$edJcp21hy;j-+_3S4#sd zL$+?uEfB=XhsdfvpUvgQv@Dop-g*i58TduY;pVcBL4*A~Lgc_8E%v&(bh8eoPYxnp zDqG*)8f-8+^fl2>CLTX%+pIhBAun62EjU~~)4RXB5`iO}OL$yR0L{+BpV=E=3go4L zL9}frE7sN@l=6Rf=wdiJ8FVQeo%GM?70(UugloibT;ln5#F?HqBK)r40c80c8>k^3 z=NF!<+L-rcU*3J2NkGHysu6r%X zL%Fwe8?))1vpd1@bva33=i+*!(|hY(7CblQU_<;lmh+@(>xxygrQpXEi3DfG@5w^l zWAal9&7AEdig82h>~{D+sCX20nE6(a+Ao|Oa@QZev`x57dQW}cl(O;* z{p~%OFrB*rTfSSZF54A>S)TIh{HxHbplRKT_c~^RvpaCV95hv%_&y;h9RoFo#ZdXx z&1&NHs51LT<>`A4G1d8TGmhA0QrbVS;ThS@^K#)w7by2X3Z#LC_89zMcv_?k6f+V9 zPvd)t2L6}K6)YDgP6*U5mCluVew|48X_z5X^MNQvfb&-m*K^wE!UIm>C0f=VMf_Wn z-)I#3X&X4Hd4ACqf^0D8xvN1eJzp}J-qO|QvoRN6TIlI3e}_;GG=dM25lP4k+#j~$ z{uz9J6zFWf+d){qQSCbewHt&V8Y+P)p{kP7)F{`Yv4jSJZU^m&jb9>Fq1Rh&Q-X?T ztCcuD=zM7gJWe6IJw$4F;lEv;KYPM8!1~Z?LC7KH-RpjHm$5f$Xg*$#sJ*VXaU{)t z$K(fahF_0U6%MeEh`gu6USY-TGi>iX*MXm|aR z&`&6C`;nxrii@(XDErHKRmvUixy3B|DW(Rk!OCOI+>TqZc3LEqaJNZ@WB-!k3L=v8L(trpc!(e*{uuZNyYfsB&$9NdcN*^ zkkPngGmf1}6eI`49pXjatr#HzwPu~>DSZ@;3+scQQV1pAWSwjQIA=lYdbw^|DzDZ3 zxSG)|;@PX4<{}#k+$T|-CtuHd8^i~(=igZUg8W%;yWDH;3P4AZxc2rXJV~=WlvTq# zYx$?yzO?sEHACuYm}yccwoXZTAJggTDMlUuVM>qI35s`VmKwLE*XW^bqmLz)7)J?&M z-Vn!5vBn#Vzfzfmpl6A-(YQC^Y}Z@n>m{~)p@$8k*Et@tkrF=A~>i!V7esx(qGyv%=moPa&OQfNW5XRzQy z^(~Y_C8}?E|Lt3U8Fga1pusUHMjce&^8OD|@?Z7vgfUwPLrDsf z@<)D8s;i%t)?H3J)&BU>C&3on@nyU`AhRbbGrtwIm||+3_(2_C6ExmK-%s_9%_T*6 zY{%y5xnZJ^%a8{JN;@1~NQVkN>K)^!hXE^5Um#=-M(Y?ZffcP9Kz8lci=;CQ#b%F$ zHaoUAiN=|xUf~65=HHDRK-iWPCi;GySmB4=$}f&=|@>v+Bh`*`L7(N-089jkS>=~?65VC&%+<_)CtcUSPx@1a}279fade9x%tbBj(vyZ%WJ z4lC6M(?LYaSY!Jqgh6aS+q#T@(kG&Q7+K$U;2cj9IAlp7enh3&cj5)_^_Ch6&37IN zKwwz(qL#FAB!7LWzR8N)aaFQh+QeHEzvcXWJcl=nrz~){4ou{_sXm_Q^`20-hGu99 z&GH{39{z+30LK)n(+~Totp`hN_yaHm3l90T{dhinjCD4~P3M@sIIEqS3Cokg_;%WZTNeI}l3msUOzW-o58wcj!- zz6~0lF?ORI-d_I3)WVG0D1ls3s&i<0b|G~r`p>KvHGqoGk}>Iei2Dmv5a9;H{J5dV zRd?~3g|6MwLy;r>YG!8EG9vZ(UF1t?fpqz$h)3Vh4_xi|8h5?e(nD-yBPU~*%3}7{I>W*d$URAR0o02qv#*2 z1#}FDyuI4bY#DUxP0XI|(F<`q_T=VLSK9xKh)bR3kY%WY{Nt+2O*ev;{U#$MyIWu0 zGctX~40AD>E_T!Iu}cn!V9tUGg<#wIJLUhE7a8DKJux)W*U_`QELc_BU1=j=*vp_;;altK zx>sUMfOL$-i5{X{F;blm?Y?peQ9R64SpIg}v5FKt<1m!{8mXk|#h^IT+%{qu*$AN$ zcu&hJ^|U3&!dB4muGA9Ick8QqcQcXWrE_-cX<@&I0G5B|N+bEsv&$;-Dk85kk)EaJ z2CLibZcS69CqJ@Cn;`SMjE#$HXGCRMV-ZBR7yp!B6%c05jql{S^tYK@Dm@+9w>hh- zLq$WKToPt-=1&Nd=vG~I&VRDpc+FGuy>fEHEJS zW6|apON&cW2k`fef`m6;w{}w((YpB

QN|DFE5y!xjKN~vjauUbV`qlmU`J4Cr(NT@o_e^RXs&F z&Vr}fjaqi9BVCVP6ZmXAhP9byRomJ*`n-l1H8owGg_o%{0cY0*OUAe0ahU2Ycmig8 z>pQ-rdh1(lqndH>{UGZg=OFK(;GpQB<e*H9BH4CF&9`y9Th)?BSd4&8HJ;t_UGSC9 zFfeA*?c2PSG`~}oWLbWCnY;Opc?Y4+nV*KdEEEIWII32~TF%U7c2F<(PL$7=)jiX? zh$d*1xV~^5TU7gAf<E0~Cvs9E3w{S9@do14mUbCkw%1@hKJ&FF)fcoE-9e?4KTp;t zjz;drOQTCf&pB!)HJ?y@Mtku01XWBzr-u$Fp_8l3>-hn9AY|?N<(;j^)Ij=s$}@va z-FsRdHhb)?0};b4a~mO}s?_qgFYOZ8GQ3a5wU^$Pi)hx6)&5O!S`|hf>QnwubZd`k z$e@ODC!vG>Wc-5n=$=q5x*<pL>Gr<e+*KxdILJ3^)x+@qqc2D2Tve=ov+hDp)r<M- zvod2c!fivlrhuo=ie%I@yg3;iOU^+%1Jp9Z3PskNH5zh@*;bHEk@tHax*rHQX?@r= zcP0<pJ$ElPSgd(CwSusZu)R?ZE163`F7D5>hl9xu%^VHj)h_h*c+j$Bbc#P&Vp946 z#=kv&N0HL~kB9VMi4ciD149Z|?Orl^3p$na63ISElnH=PGA&tK$Gv7%C>;m{Z|;?) zsD{7_M;<}danN51e8H0Q^Iw3d`^4IxdO^H%vE|)aY9gb@pOG-2MJ;#^qKe@7`@jCL z9>QNv_B6d(qBQhh=+rt*7o20i18!&D>1z?{U{Awvp4>Hf_Yz;fV~nt9D&`IN!|O=` z9K5RTnI55CF3PGaEzHuNd;Bjrcf8S;3^lZ2|H=L-(cftU*Pj}|g8wHX2jh>!)z}qF z4fR3gXhG$wr}Sj>AsW#if7_t8zEzwKZu)|qK#F~_e2obnc9C2GxcsYB3STsD1IjNB z{hfl3SD*_JgmYUxs8Cge`7l{gDul%+{~)}|IDGo+^-idnSyLvM$Fu#P0)@sE`k^GD zdy6U(d*3LP#QPLpL>liVjCXU1s)P0W6Y9yw+>b6EN!;Y&hq|A+y4vk=*jvaQ^w2dV z;rcsyHqlm)2Xg&0@=D*iX4<myH=V!Q_zUMpiSe~$03p(0$A0OhbLb~4F)1_&&H%NE zqq+5q(Ij?k63UypDfSh+2+d=&lx<o_rHR?EUKauVhm`bJX=E8v;jwy!WS>5LW#Lts z&DY5NS|H(xi8>VX4LmIi3_SHw2VOGsF~*hJO&Xu%#&eCNBTm$zu=Q}+SKfKqK2Kx$ zIiRNGNzBC1$Q1viEIsqrZid-1d1mm@5W&>voWySdI<ltA_E}L!5Ng~-A$$_4J?s#V zS<8CLYfYpn%nEY-K3M%)4KZ__+#Rudb)H^od-#;o>^|XwUYOy|c%MC~w%v#rl12W~ zsDM2B!qi**#(3@>PtAGa@9@>lDha-~4uAm3A$K3lRwkgf+aR9zrhDs3O9o-jl?=c} zZd18D0+7R75P)Yj2I-Q85{=%v_O+$JI;;cJ>>^*6$X1VBr3&bkY194)!5a6%`94`o zS-tpr{AwyA9Wx^x&b0$3Z_OY7h`j@z%uIKDa@GhpDOkIIT}?Twc5TjW(-KetDDB)3 z+knWW_RHMIA^Klt0qSwc{Fhl+d;YDS|7^?c`|q4zW|vCxZy_WE8Zevj>tU#e&YHmq z<&$A{sLOd=f8CtnP)zR7LE3&vLn80~t*h<&0{pivx{P;UpfT%{a>Emb+_l@G^~X3W zDdoTYkID#6YPSW>Z>dtik9WNROvlpI$iBO!$S`C5h8Tz)p3!HXM4t}~gGlqHlEkrn zn#7>=-=wUv0KJ&3q!5IQbNdz{GU;_QZtms>R8UTVr6R2(pHsB39F_HadzjJ))KQk5 zuf7~JsX_{7y?XV#usA{o3$66{A{@zySVe;phxy;;ihx>w-|mRsV@CqmqC?0FXLN?! zH~B7~+ai;Vd|F$}C==#CN~EQGV{8(ea2x@=xET+=UFHh+8tT5@rX4sMn(DjHimsi{ z-Ztxz{NNfx8tDbP)=;TCEkK`?F7|G`#iT|5$syNp@v<v>*4km=)Ur6d*swS;Pq(H8 zIomefHQQew6R$7vV~AF&EQRBpa-9#OZe-<2asl08wB`bZ^Y|{B`Q+T2OO@7@#Y5#Y zr__5EPIMgXM~~6aUabF}?Lhwy31WYSgsfPoauzx(kp2P<`X8umaT*G0+cHL)^X135 z6s1r8H!Kq=JgKLNP3b--en+`&Cba7`kCpVET>T(0=A&kzek$GJFOz=iCmX|X9m;^Q z#_(8DNr`TeCgd0&m!8FKa^PlTz{pay<u<LV#YI8b9C-)7D!Z>AxUx8W7nsEdUs|$@ z1vVD52Hla6pEJzLi0>A?w~WPUn~?2N$smU}pV}9K9N&1ZwI0}}RUZzeoRiOZAeVh3 zoKDgP6WC!BxV1|ocGk%yW%UajwJ!5k^FOPv6ZsTX`5MUX57@v}x9Ja&^Io2Fm=c-T z$@a=sD7{GopR*Uni)X!v(w41c;O;a9_=~fx=yx}5m}_dFN3X5lmv-70c04H(-F)3L z>tT?)Yra1t>n1v#?j|v%zmLP&P_eM_vBj#^Ye9C7zU+FaqhF;_=&}rX?{kv7c?fG< zUKIm@2X{dtmnp=}V&IAE7VgWYP0rMt**W7hk@e$Ye$MNJ6!mf#+2i}wEFgn2T;j$& ztHpaELcOO2AlxA*Y1&5k0EAaU9MlWiSho;WiF;U-Q#vtS>Y>2QcHrFl9xkUT#q~NF zP)bZcuzPNoK<#qQF*upUOR)&OZ6CX)R(|K>nat?zDOhv(H0fg*<@|lB8*b^sZi-L- z!fuc!*t^;Br0(1YbgDlKAbj@{+#{z%=MRqSS!WlFkp1qpQ@-3rU+wq7i-21rp~sKS zE0k}2-LpWndsCRzD5hxEQ0(s9Q#WBQ%~a0*)k?%U8_W@C6bYK$H_boBCwE+U>~8Db zsH9V)@6$ZDlH-+a@6$}I$7x%mym)dayh877eL@MlFZ7&AV7v#;e~}-Lk|#GFtVVYC zd#tZfHs8_4I$75!->uxXe1jfi#)2+yJh~LYgKIBghkKqvfCzYG>RPigJGPfVY>6_0 zoYH%lX?m(l(R+$%Yl)cia7w1-41QF0jBhOR^h}JH6HzPk9R>^k6|@$vzJ;7S{sep= z971R|t{K0&Wd-I#JZC6h1%eGoIB&<YxXS!#Ifb1ieu=<BD8FRkZ}`5u;WA)Y2J;<D z9v25}o~hk9&9g0ojVM5LiumbBm*e&mLoDQS!o~N?p8?mE^bpT<s1uALf-+N|e!iA< zCCFO-mv5u)uUjAOU%pLBzivfYynl()%^&*XA6$=BP5~gOBE1g<MUNQkUEP}FC|~XM zi_OIX$H}s-pepB~70fZ8qLc8Y4#$kfuQQIfRU%Ghn`|}EC6A*oyYqsGRYs1>-{yz+ zUfxS*Mwlv$v%Yq-rP^u#{C~Gr5rVC|rK1g?SA*Z}!T-7C-8~wLYe5zxQ+LBbXO6$R z+^6~B9QTb2vm%q}f~pe}SOdwe+Yp!v6p_ZUS?*Ep%F*vJvnGv+BBwmjzs=l}o-ou* zmrg6%NJ{_gD>j*~4ZG6Tx#!u$QvkC$+K=il&Ta{iZe#E5SgO~90mN|R1a?I5q~pAQ ziWy4>;4D~?b7yDp^!?^nuN<)>Xx}jLTij;CT3wM_w~51|-BIX<>FRKszu_%MpW`md zL40fK-(jx5ryuF#8+~oRiyR!&aojbH#neY3K1tu+Htb)7v|}hbYdgA49`pq@XSaj+ zG$^yvtJxiI=Ly7tS9s*Xq;oWo&@H;R<s~>R>%{i&S^{#s=tX^3IXgWD>j*Jb$#EA^ zx~x}0l?9j@m~%sz4FLi;<lu@VRuKWzeF`GSTLFU@-}gfyzqc7@mIYbPkY96&1m3K> zVjNSsp`LXOeZ+686+e<vN{~<E#g8*O{7K`=lI9Q4i}wHrdc9Of_`2fl`^632IA!uE zZ}aPH3ZGw|#>f6^RdQrLH_}a7NMev2*=5_fBT8Lo3quT#^hdNr8vc@-*y#6%>~OMW zA&^_!njm~|gS|7W>as_eaMr6J@?t*F*rp3ZS#ph<f=+BE@X&PhJL~t7s=kO@Jk`Z; z2^8|O)gNk8fUfu85DVH>fUW_AOMH(EK5Y|i!x)hTUmYq=I>Mz5Mw7fhAm|(TEO~WK znE|@3hxcl7<li~04oL5|Htu^FZ<~b999M?@wV``Va_*_IQt4tk>&xDA<LeZ-vJ@*p zze?+CUhKI#44Do^QYvjqVB%8(=}tq0#8^8ks+VDuhTj-Leh*g*uZ{umTx9`p#TzV^ z*1njM-|ZL;gRd<MWo4;eea6(;UPUNC@Lz<Tc7yX(b?t`ypXYk=a`w-8+HIi4K(Clp z>5keN)6R(PP9?MU2~z6u1ykE+w+JZD5^4o5Gez213{Q`cLMwZsxUPYlDNmpMkUzWh z`I1Yq`8)Mz#n@#g?K;3d-QicXatR4PMpY(1wDQyiAM^+A8oo_-3P+l;(dAP4>WZyX zFRsxJWh*j3qHaXG>B3U7c@Y7aA*<JqyqP}WjAPo1hCH&mo$i3TPCD+I$3}`!iGcsP z>F~c0UkQ@As&HE_h+Lw9Q>MQe()t!uo4AriyUxE9dPH>w#MrOcr%BJ@6P(ml-VQ^h z=P;cIUV@ybsT!q29`vJN)t4H#a&f2%nikro3!lA(;{|SY%yK(2Q;NX9v%a_tVWob1 z67L$ik;Le>{g7gAQu@V;><c|$^w_0eq&tQpy}9RM<e*Di4dmi`)SZIcGQGg(g+Oi9 z`}0P_Gy8NvV?hH_Br8a$Q5HuDS}L2Sa>f@Nz$9&vUJ(a7s?iB!n0R!h9LC2io`lwH z6URxQ-~6m-!(S4l^oqKna%;s0l~FEaMqNu8o8h<ncctCc2{lecN5X|5Q9n6;T*cUf zcl4W!7QJqB>QDV(Z;z&ZH>Jf;IA;2_%hlTBHFn@~IY?qIvbsQj<ro_ECRF2ziP08z z<!K$$I&-Hz5gaT~WW3{%MoI3g*T4#?x|vTIEQF`FHv1OympYQ4h8EUNiU_D!6@S(? zj<SE#l;6BD=#Rrj{<Ey5tXb2;DqXA%yz91o+~0^L?7Fra_52_m>0RO2!sEG#c)2x) z^Z|7H3&Fd(<O1(Y%iqIgru6NQ?Uv?Z^kmKcrYuhB)fSw-j>Upy`*|om_qmJO&_QtP z;Es3I?hChru`>h2(5@@!ejCyZh9TyZbzpOI`yuQ#OIJ6<!tmr0m5l%Y2K?ue-_H_1 z^9`n3cvr1Ok}T$_HU$EYXs-{!r;#vg67Z2M2)yqx<y$YxRkzk--vX|*cBf3iDfqvK z{ni3LzmW^go!oN`Mm0vKTqP6UX773%_e<4yOY`d==fz?ppR4%d^^;m<;MTM|_EOIQ zhQui|NA>EyHu$%|6k_{QU1x-qMQ2(e*(Q3>&e#U@b>OGx-fHW6ZLgV8@};)g&ETK9 zB=%@V<4)MZ?{Amrzsk+8T^>pI%8Rd_kbx<l6CyQ+cIP4L{gWe&^g|~x{C=uJ3+9$F zbu}xRRc6a4^LsB9ojDAhw;Oxa315-{9n3qKnCIzXB4TErU{cS?<cz9k{H?Ccj6m>s z#9IPncUh_>th+$YK4hzvGh`a`<fh8z_tgBPqj!xPzl`xEzU7uJyP`o<vulX=$P3Xg z7oS>~wi9UT=iy@8jrI4Wbp@+^ftLK~2Zms6iY$Z51*5oNY$N4!s$?-MbNUTnf^26j zhl!VKGj)zLB)?S*-YypF=D^>D{Ec4^vff^7>2e?-)+_T!?RNfWmsX}@-I>$Sr2MK$ zkpYf8jj8iB?%U0jUAQ(PoN!X?qG;@z!}r0FNR6?5k8kdSlAo>gX5J~nQdGY+s%jj~ zJ7K%YcoQ_`AED-5qG(`}PO1-Z?|08E9*>Vz;bL#ji*X>^3S`E&>N>XhVVNAqhv;r) zoL5Kn&K9yTn?DsSI;hxIUhQ3<M^OZ^Q!o0#OL|WDQ7*5-$T#O;&J{VwNb_ca*`ejT z?5dyp^Q`N}Mp)`9(5?Qag76{r0wOVKWH$gI94Y<gqVk4ux0+7{(1}>tE0~Q?Q-SVu zd~bfAPO5tC)41xI^Gdg1m0Wbm;AdIN6m4y;2B>Dz@{oI0WyOu6o0X(FD~?gc<<yX5 z^)5iC#zWIHA|i{jRv9~D7WFGwbF1!SxBOZ+tM}$X^=aeU$Uh?}mD#4PPTNe;&Tw<P z-BbrKOj5m_{p1^Pu)x|`@4H0L(b~;fCUtc)gkFgGJax7)TPtuZGD`&+bGa<OdD!5y zAh0(6eo0lT1sb1xx|N@esG=zA@O}<?Sx<iuzp3TT9tt6J3u&Gwm3xkAK!xV?LwMVk zjt%%(dS%Yj9@fF|I<l)#&uV@c$H}+3Ip|gH&5-u<R9O^iU`1ui=(1T6z6DFm#GZt5 z7}MH~iAr1U=7$@>drs!xytf)374e0hCv6UU%H}{OCZ#Fc^eRGh#_5l9P>g;<P2aU3 zs1}G@Q9mX9Tsl4JO*-UAn1$V0*!S{Pt$6I*MOyI`e%{8=CfE%=y6CAb1lvvfP{?`4 zoY&t?3Y<nzIEn=YkdVmO%U<TlDMu>&3{*i$b&LeR9l*CN0@xL=PwNc1HW}cWoI4(6 zjVh3?ROF@R9??zlCLST8X^hdvn08~z_b#SKSPt3RmDRiYNwo2kZ$j6)qJ1;yIE3J0 zW?iB-FSil@9A5|%Lf;}q^8lPT6RXdx!$A825Ob@5eo+DYes|Gt>CviOZiw1sP=8-2 zDLQdn=NI}N>$l5?vg5sXt*I#@+AjGep*}gybYuBq#$FIZW?8OS^1(VkkqnFt?-V)T zMmm=h1D?L!Ps#`SaHHKa#=~MnG=YICAdrA^*MjZ$t+nADuz?^8q9Fngp66oRy(qUz z6N5{-K^0%0?w`34KR=nj#RTJ0vDX&_oz<!e4ST)CLZ^livqjR9df!64sWw?E&2_2B zWXt566qIzLB|34uhjw~t)uu<5qT-za^zitFpPpq?^(5)irU9w0t+p|#A&|8@_!gly zzwJ{4ws6md0qL)`l>hf^8TzOS9hanX_Ll%^?JeoAkIwzC#rzjqQ{@Tes6s8|t35<> z|99=p_Yaa3<mPBB*kAHBQ8ye^xLy_Zvk7kcQZXwWuR3Pl$F(d!Ma!&uI9JP-EiN?P z)GFX(Hquv-vX-vY;)j`ftPfp>!Z$=Z?Lv%li-+*05FFtxHUv&@dZpVz^IGN;p00U- z1ugFh_xriSh$*WdJHdv_K>bmZ^RkU$fFbV48%37QL?%me=W>~ijTAaY8hsj<fDdU> z8n_`_RFCDIx_kBnG)w|=69Z(4u<)>iSJrst4a|}Q*PbLj*Z6Wh`YZ1#EabaGVcE+W z4P1E!A`kolEzOvCv?@axsaonZD`IJCmHa$hdr^8eTzeITH`IE!aR3*Sp2n=Ux{9@1 zX4uI_h(#QfRc#h7wv1V=gYBycXkN(N3Sb*E0X0X__}&33HgNpe{6#IR%uT-U2?rz- z@AP;cxC@|F5&zW*Mhq*16IxfiANJ?@iIHqREBB%>CsO&U+vGK{V;nH!8<x1hNuvKQ z^Kp&oU1C#^VERA6;Y9F^x3%(OjI@9*x5V4oMr+z+C=)-t&k@Su9`rWC>23zZ94CMO zH5dD~x#$B0!7FO^!QD4Bjxlk>c&i|S2$IBm6*&v!^Np_Jb<Uhb0tGk8Yo;%J`Ku4c z$#ghhuD~VMPu%)dINzeNv$|VwU_}I#?hN_L*weo<4ieh~ZgDZ#tNo4U+%P<U*J~6c z0|bTUyE;vRZ^TDNI<Zdd7`N;cYF__#Y%N-w+_BHW@N^Xw<<7i(<qC3cKoJr17Z)qo zP3hRTX-Ds3KhPlmT~}9Q`F)ew)1wYlY@vZE(tfSexen`!HCI^F`B3a{0d<ueN=IV~ zZ#*kt1wFO_u*c=UL7Rs&vEH6!Tk`)fI<;TgswJh^1fS+vU`ptO=#Mr1*gl$R$mjB< zBGZe##*szXmeX{u>IQc`HY&4sX)?8XHMJ`DAuLL?k}8&JSygd6gneyF^8N)wp=q@D zGT0AsG`chxp4$J>o%OO<ep8EJ?#yQ>6{Gp070J^K&_2D1A-ZmSa<a+NB>A&8Z>Loq zlvO<J8P%faBE3FrwcAd7Y~ZXxMZ9FSX|7pwyx#VD-bMGN@$j<oB>zvpmUoN&{J`6O z)$pNr3n14B7(E7#4oWNdadl`s6xHuS{`Nc1zy0p7`@QzR(ZcvB=QVVq2Au{Fdx+-w ze=dOg*6nWa#!|%CGsoGES_C9*2uVo9NxyzPldIc2cjCq>i0%KBokmw_gv!fL>YR`1 z8V^ZB{Ze$8uz)Z2nRX?cYd?Sg#?Xfn3$>-dB;HM*O>P$);t&}s7P=jbOi2kM+{d?X zTw`54^x3?tGy(^J57b~)@lVN7D@_T7&y*~C<OQFMOUuUfNzH`!IY`L|7X~SKv8a=i z(eZ@I5qbnuU?uIue71V}?rGK2adAE_{>KFT)ZY%nOv37ibB#CbaYEer;(EnDB<Y3m zO^fsfl@j)NynHDs;})ay)_?6dSUmZMoXpQPBlawX(TJW44xo-(uQ1!<M^MbSW2Klc z$1Kt^q|V>k2Ns#$CN&$}4BXUwyA7jcIOksZJl(#>*deF{QuP@c3hKbLtCgy)h`~BS z`2Id8ZM{UBZ^01bNhdwJh;Bvbw)U>1q8q95o;b0rou$hd0gq0u`KVi#aK^baF&64T zC&*x_7w%=2J;0J}UO#H(n}ZdfrhH@Y)tE@pyomig2Q`Sb<nyPyS&&ei;=Rmf=uKmh zT{^B@k4nOnqtc@9CnJe)K>3Y>$(;~&nxSx)())f&g<cDb`Vn6;aS9ZS)b-=EHjJ|# zgOkDz-z?V5r2MV3wI)hhPhbrP!(GHLedvN2s~Tg=7;u2-Fva~7>8`kDA5U(CspRnD z{O~Kr*(%H29*t%OZ7KgLDT|qD&SVW<y<((s@lmgA+09X);dS2fcopNM2V=8D*4b=D z#>FeAHC-Bt39Nk4<XgVwgh#$Z?T77sJWk8?ok{9Yjn<LlZTpddtYN}gt#_%7uV+d1 zh1*qUGXTMjPxXK^<7rv4%k1n78mu{i?%Bp<+c3AwaKtj&`1LqusZi9Dq1~>o2GxyB zYisFr=l6bn@7kM2)+g`1$dbYWF7ThHJ$l`u*Qet1y@lc&a8kb|YID$g&dz$Hmg4gG z$_DFn=gWvkuY1(Eq?6;E8`Bv$WNhr)2=DgmH#a6CPTDF=$v>!H0gE_GEUd%B;{ggq zuMrQhN3MT8(M(Ty!OreAt_At*cksZ;f>PXEgDcqq;>Q6m`YAmVR<%P4=x}LYp+{o* z9HJzGjsH4_|K(v6`Qsd}PljsMqcZ~}SpUPrXqVdgvb#HioJ=sv&7eSJ*rqO@M*Xoo z0nO+z#1fDAW#)<oG(j<roey0BO%Xl$+?o>n&kD_V+>8=*>f>Rt(+Z7jM=3Cxv#mVd z3Rb95H13b5>zNOh2ZUU@b`1|Z-PJ93@8z3CU4(d-W|mTuE}I=al!1fwc87p@(H5ty zo2z$%GDG&CByUtd+T9MMVdCsHnI9TrB8QY56IYbZ&Tl7#3q8n-hm@+06G<tW8Tfvm z>Iv@6C)d8=A7bWUC5g!S6gRK7-BowfuWZ;bA_;oyifB7d+TN*#9yILClb)Bi={j`O zeOK+YLzFTak=}27-30^;j}G$=pBo19P1$XT!8arWN^1zO$pe2zQk{0@x8R@Ys>>?A zW!$J0pc9`nhsX{bhFuzR-<KpZ#ypxZy9_i!5Qltn<+i?y`MRUnwBs21$@R7M-O1OT z1*0<$DWUo=e4vkBDu^Zf{N_rMYMtAr`W<Wah+Iqld*5$fDrbP!^9fMC%)Zurd8t== z&RU9bPl*tX<VDV7$%`tk09tC9{Qlp85y==R#3qKtiBy#8PcK;fWiPEb#d+-97ds@W z@spF7rJtZ4Wr+FK;PY#&3h!~%-~}9Gyav$4x9QssoeqZ%$EYjAJ3{7`K^WUU1!A}J zP8HHLown9O<qj+zt(tih88f<9L6r6)F1ai8cUAEl(jX<%<VRU%NLCPydzt6+X7v`C zy&+_~nMWukeuJ?WqdRaqnnubDiocrci=2R+fOcdrqtjb%)ZqHfWt*%^V~Du!>iZMp zS;tG&3R32!ge#r?+U%R-6UWhm^AorkATGq{zS}ni<lIfIb2GPO`>33Jyc8Y*gsv1M zpJ5NGzSILOzn|w3mxV4YbdvIXJtUmH-;jXU<_#m3bn-zhoQp3Tkl1I)ww0f$$a#q+ zxJzJj3+cBP9S5;1wA=Si-$iPO`Zg~m!27HndmUIB>6}p~q7r@HAm)2}YwqD=aI|Y9 zMQ%0lYh7macwXggvt;(_Eq+NX0wh85LNL0k8=QU2qqG}{=+8brWwQ2JP$F>@mRofU z=A&?=3x^ZSuey<1-%xzV@}<o_Zi?hvgyqRESH-)Ek>y_2(X5W%NDM8o#JYTHTe|@# zrbe({8*154cm!g+LkQ`O+TMu=9Y$9Q>{F6W|5)}i@?8=`OsAjJ!Y{7N2!zM5g$v0H z6J>E?M_OJ339=bT-jemRP;Dx-2mjfR?p4sH)cZ+IS1r82O&RfcToJjwEE(cdv=4}2 zuj}}RONamQhD9QXpvR%A%ia<++7wl4igYG7N}Lr!1H!mm>AAv*-+yAFe><~Y+$E;; z{vqMUivI1fJ&B0E`dPf{(q!b#mZrT$eVGbi68B{K?dz7{JuVc;;v+p94uMYS*jU2E zLZM^a$|&R+zL4H!A?6P$H2YmkE#dMLdiUC$L1uiaP{p~(q4#H236EPhs!Os?`S-sT z_U|}M2v&lXEoCFPIhgPIoF^XY(R}_<Hs|xAh4*8H=LDJ2HGR~ia;W0!<pjk0vmvh^ zz_(;i`Hjq;+`dM-UeK?@C3H5|*uVSD{=!4HWUQ#pEbBRF;h?r0Qjuz*j8wM4=*p`_ zw6!$pvmvqin&ocpdWwDYfihJIOn*XPA35h$8z?R8=L&q7l0To4U%4A!d_ceOB+AgE zrW7{4)L^>%9_rb3X}_Dh9r0Yfg2}G~7@JhRwv}{-8UMh0DvU1&7q?sZ(XtV+n-eim zua$i}e-JsOW4k(E!oD+$mAy;f5Fwb(Z8WE!kxlC7D(Z-6`e?i}N#wTwXw;|nLPXWx z4rb%%7vu0~^w!&l0+t?W0vvuVF;D9>O-6RTgmt@pm@J_g^k@K8UaNFi3fhqayQ6mw zB1JX|KbQ7;iuI+xsa`j>A8g{m7Rud<tKi)G2=`FMeh<6gZ_-$5Y|1dw8Mk*I)m;eB zsiM+>hyv5(`wNKSi%+3Cd565y5W>N|E9+xzrhTc;W`QM8Yf)(*cZtbrkwK4D8-&;a z(vUQ(GW_$P#~8EN9Gm*^3sn8NNoqH)w;u{19)%ef)ojus66DS#KW9cC^OkBas#2CG zF%I{!A9tMHh-A}ehr#%{n`;jBg<OG0vz}eMIg=-MUjFfTREkmy$&LjwH4o9f?`B9M zOD=H+)#oKz&(9LfKIq7y9siX0Tv6xDce}Lxvgvc{rXt#LJx}xRS{}#)tLJ|-plE=H zs-II+oU$C`7K58Pd{o=dqw)7ePN$8_Hb8Y3!?7(wcN_5y+sVgcLx~sH>YFS+|NMjY z=zn%EJSLJRHnkUjdeFV_1EDhYw%XL&Ds^5^@6!w&B@^5((MEZ_W8vEy;U{b%<m>k{ zaK;qHJ)3i$C(Zcp;woMMAxeSMWv&5Ixe`^;IhKR6r8I~pZnV_{H_@1j)c$w|muGC2 zmnM{wZ*?jziYxr7(~59~8Q7X!s>6Uq&Q%JZVnmzRCW~pYZ8n>&7PO?Np069Ca(r=Z zw-7h|%=z_Av3>6}TzCDI&ol1iA~_#{>F(DblZ#-#xXbCpKDosJw@<HgF5X-E8aGEw z7Vf}`VXv>5kHNJE^3_2n>#xsgbz^^tthkoa*fLf`x}6Eyg20XKWPM%~TGOBi_-vIA z*O-CyWHxTf-*5B=-d``@A$+3xwLcgZ%7T(?OErorBTeU54f-ZjUnAdMUlLNr8#IMo zdz;h;zBm`u0ixZS`^3J|TBf_~Q66)5$}W6l<yrEF?U^3&>sU8?z?1V}mPu!4A}@Xv z!`#xZpAUUtIS~mseJj-QPbq#nZ@}fy{YQJV_#9mCmn%FX*u6=4Vctiv<2ou9%;(^+ zqk&OLH-&V6=TX<vQWDkU*iUCM<}rrY6-mPI-<G(?RSwj>Y{p*zaVE0okY3FgShf<c z+q-!)V&bjDL509wRdbuSte9E6rll{wtqqL4!l1-#Q$=`0xgHp}ARVK+NSeR=H{SnG z?Ef<cKR6mxVfGg)R)^-VJ@Ri1?%z1U_Dg7aJ31TsZ0$ljdMG;W^B?TZaYD0sZ(S}N z?Ha6Mg&kbJ;+`<yjm@P<!o}9O@X>(S(j#Inp;TO(_Wlp$g0%~_$XosHe<OmLp`Na& zQW*c1@~>!?_@60Q7b$e26P+X0K8?1Pp$pvx9Z2;k!U?~$f?e#*{ZO)&zh;`y`81Yr zSgo2Qg6Ir|U;n@GnMixqDmcrh8qT{<ea(a8xc|xo@TK_Rqss35Q})w;V*~zbIrT{V z2^YfFl(w+2Hn;xhU=GG{{Zxz7gP!*Qd-22=P2tZ2_G8wz_MuBW{BO#TCKQ!IUdu9s zuKxIM^55LX2BFv8sN}3M^s|5OSN?PV<W6nYB>KQ(0_Q))W9I)g_%#0fGT#gRGLH@d zh#sQlW1_;6(&F^x;!s#nOO%3C6%T%49?`CNPUyJgw^_l!7~PO@{U-+sdduvy%4|;) ze3-W@i%K2T2wyfm#u6nYT#}WulG8cTt1seI5SOrK3w9qGxKx4$)Zh&r-oOWvk`7a= zXz0WOqyhq5%W0;)S|iZFCU}6|IsX~ZEyAH1-;g<CsJ`xO&mpR#qw6*~qPBm;=V?%l zBM2rBKOm1_|HWA|N6m5YQ;B*53m4NQ4ZrFGH-T+3arQ^*_vw;65A5D+JX=XIP|jNr zh__;$Mq@(|M#UpdsOn7Y!4`J|MJYTXso1IsatWr{-_&36l$a%3m%g?w><x<p#CXgn z9IP9{vh_#5$gF(%0jBl)rSeMPskixiW{$aXHG?1(Q*1onh?}yrCndGpRX^Yb_Zb)a zR~}Dq3RI)-zlw?PzP`fUwrGOBPXYbI?%!1}YYsrWj+48tDXqr{p&8D12I0FCHh6t5 zI;#*dn!G9+q&H^Wy=c!80{!wDuo+hIJ5KDlj)v0`zuRgMqlW1$#8j;fD9Sv_&+Avz zcL#5-uj?uVdUU45$|uaHUiSUto8x*vftwM*QfjPy{H6HGuR61~{JazR<IbYAj)?Ga zCBE=fMML(K4j1o}p_ckC<meIfU8+1jfN?2h&hzZ0&^kuyo5I8m`rDc);8Ms?p>-r! zd=C`TA#V8KsNddVOF!84CxXJcQQ0~OdU~YOY08Y=O(`5~zJTG3qJno?Bj)8ZkD~A@ zbghUz-BRJK0A{Ho7IYff=uM{E-x~CK9ldtx5Dx?Y^VtoT)9A~OPFDI($<%-Lx)-VM z7M`@52v${v%nX2DpIVkX09wvEjJn3a|7z+k*rNQRwShB)Ac!!ufP_*K(k+ej5JO6r z2uODiAV>))-AG8oFn|m(q=XLLpp<lX$MBB)-*cVw9e(%P`&rks)`m`M@M2MtLwUv5 z(smh(xJx#yyoz}KjHPw(t3jUdyM%A{+0?gaqUdZ?AJ=}@yUgwn-je!yb_v#{eNO@- zgyq`3pls*sejYu`XZ~fB<($36>@awVksDMke^|XF)7{CYa6KRyt&^2LG^_u}I_5Sl zFzv8tp+dxrgxqXrHT;h1l-RiwlN-b{yPcF6_~)w3PUcY?Ad1Z9U%MpuK0Q_U=`r}1 zo<*_Lg9X5A2t5`?)qm+RLGRl7mmW`V!57a9=rAd_EXdhQnV44N7WGSwT9lRT>%c4Q z4J?zYQ}F{_ovjSpjQIJH8;rRs^oZWm=LAus?S6@&Ka0bVB(mb~)+#C!#)UdB2Ou_s z{VnHN<Q=EP#(3)7(?DA8j#!LK^F)ZlUfmVM4FWpQDUe!(I^*jJ;+Efl1UFl?Lkds| z8giAa#EGW@xNu*gK7_;4$FMNDvM(pupE1mHQ%q}4towOn-mrvLQYHY+<@%MB97^p( zfgT$QM(qIe%;L~~32)ZK<4GNxm7o}7Fer(eKfNYhzYwWQ&9^%`5ZTkUWytr1PXWTB zx2sbx$26zoCD%ZaG(f<b{FL-DyFcTOPAap5j`v)CO}OYb>#AafXtY_ajh)%|)9@|0 zVQ%R`xghBB<u+D#%cS_|?xee=$sUsgA611S;ov!yu`?Cou9a8LQ~ksBI@K%aU|NAB zoG>WIb;ZkTWxXZ*=BD|}!n)wmbv8s^n4HCuWM2_QCz>X^FBo#ug2}s(Al_Snr>PN< zTEB9jUjC!@(%P##Q5$5b{?czsy6v0F-3T#*H0cyqx{m?~JKflIv8McJ2y3<SHf)Y^ z(;`KC2j9DL=*v{)J4XMC=B2m>u(GFC!bM972X$(mh|(!lx?u8$FXa{VvAhufc>ajJ zbfnD4*YqkTbBHki5}z{B6rbX3e;$aPbNfoLjbHHrXw`g$=Xi#O8GvhOKon#>2hSG$ z+(qWu-*H~#=F$*4vyfLfo7+uxlYQ_@WV=<!a+UzIB3#~=G>MDu#S7CFsi#*%#H3fv zF^s5E3lX*MpBN5VmX7&x&eo86lzIJTpd*n%E{BCz>)V|3t&6ud+g1a`Vp7OQc7cD% zx4q_|wHe<_uf2Q>6xTm?R{ZdT_zP}-&Y@I!8>q))R2+E+>w+W)zQQ455N%knM&`!z zagKBH|LVZ3jH!D$*`!vhQ)}!FRenstY1KG+%|^H}CiYwSH&nX!atu?3V)M%KsaaOR z@;5QMw|SGyYE{wB--{aPj@8^;mhgC`1pPnqW3*um3R&u+&%lHG7!}>eNb_HemYY(Y zmH`rwR7{Mbe=$ndQAHm@WRk~ptmqKE&I~c!kOoSWFz!ml9BOS%^U3mj0~S8PQS3G( ztg{0uV84lB!~fmvaB60#6rO3%xEm_e$i4x<%A5128@nj}<o;mKd(gYpe=zX&!)Kqz z55s(@pW%&=D?O8@kUi^7amb|3$>dU}uz?^8j#o!Icc%Z|7~3Iu5_58tG*nq6%p`Lp zE#1A`NIL(PR|TIg6F-QoFyekI(dSF<k|KlG5=w?iTlO9Y77h#l<)(xGG@MP^_5*hM zG4~{R?pi^tIjE&|Jz8YJhOgcr!mhSJ(E5`BTwAo(JG8&9Dj{8>I4fI#D?VF-FA4&B zN5i6Cv(2JX<IN)5M9L!H6e0Obs2oL)gkI<_(O<OL%?sY)ZpL3OC|!)172o9Fg<m|r zBkhLY!o#|&1P%FoXxk1&+IC>`$37_4eeumDx~U<*S?Gpt>7aJ})G?sZ7~8i+<MR}R z!dGhl%egmJBGV@ef+0o8c+UFKR*2-YT>a8L&PKPnNDOTc-(91Z`$f$N&3PMdgs6Vu z-r7lQ$j<0DxF9y0Rxg&3*u2}*4i;|*Dj)V{CtI^!ed8w8n1}hIf$t8@Cne#l1N`Nx z`Z?*>&kMB+7Z(<DY_*Fb@*?@fsosxJFI4rPm52@4)5;GB%aVmyYI19oC_vuRGl%-F z(mcc5iAW24IB2i00wg-qh(JBrD(R_usR4Ye!ZWENnA67g?M`mOPIj5Wz7?2{NA}^0 z0UD@7+0W5N;BfWADyMwu?OyZ`@@K<Al7rQXF4eM+*O>N_8#I<=IshGv9Wmr?Je2K> zQQTV8JlwF!2|v-l*RQ8IrddS-D&r5ZIyugiW`};3tts5`Z^N2pALk@qU>4BaVN#3J zjG*=I-|PK)ulN3PwpNyEum%u@WMN`_y*~tW#BCGNdVPywt<{#U_#49y$Y9afMkxM5 z$2!L?HgE~KHd!LYr<5%+7uV0xczQBg#IxdJx0JYAoB5BsK`yYwP$D*^<(BosOca%^ zALhCEx;XS&1VRjsXAJ*5OT-)25F&tiBGZL382$4ux;EL((XC1d@}^a2!lcQxMYA;{ zJA2U7&BLq8OT@oj%)yX4f5iRe#Fla-W|v-N3M^w4Atv&RQQlPc0pLtfFr@2d{AShA z82@RQh_rP!rW<Q6)cS#!`pMaypXU_0Yt!k91B|Y=uS)MTug!$%YJZ#^$ylSBW&NqB zsJ$4SsIM)Ukae2{qHIA4%Icg?r|N#n3yk(()HbjhxRXOop{NhfZx@oh=kH_=BW|3@ z&~%yaLeX^T?nr0gH}J4z6!~vHABVQX>9!SD#JVerU|+nOS)wZUyuqy7s6b3ZVtxpB z#f^96R#ImE?%~QYLQ!&oTus{?Q(T1pQu1h8dHpIf0Ae;#)VzWOabWfjFMB%rAZYdu zpD}McUb<B&jrDDMgk+62-f`e*ev9)L@<42gg?iRIP*Ep?gzL1g$tm}TZ8~k^=1iwE z;mh^oBCQCYv-Cz`8P{m*8>87sCuN>KyCdrk=FPV+;=v}%SZzlp71)UB3@E}<Q)9U> zE_AIFQt4}9<l9}1ej^<S@RI9P4^3QD{<YMN+8maWBmM5H%R+yW))e@9RZGQEm?OmO z^5FY%>Qs{x8&S93aI5|Mw(3fR<uvq+qIy@Whs3*sUkN{M>dEf<GBz%b;&!3A%nl<g zqMMGK7D!9_N|zOffRUE;TA&f2YWd!zQlGe0g3VPf^hYOdU>H5n)Kzom*>lD3@T*)= zI^3<ouQ{$+zHk%{#};EPnsDVk;qrUJy8jCBW_qg3CO{UVfr(N6kMORJs%@eSagNk} z&yo@17ZH0M;B^2)$7HtLZ-qZSp_E@_Y3!oAi)6J`Pst9JWZ0h>NJNHyU8j@SU6Khn z$(JB=4yE)59{>P$S=lpfD8dJvC({pigyWsxd3m!)$sUO^0ZDKfqlx`-Uto(6(%s5~ z#aRc<UP9DU6ppO4lhK1%ns#LkP?ySpQh`mgr>D$of4)kYi0<qc^So7(VR9R>VUz#> zgE#o>>_&eUmzgtvSZoOvz}z96_;8`-YEwbt9`#uIQM-|a?ArL)H;?uDj<dL2?)_;d zy<(-03E$Iq>k_`2Cyk%AzpIa{Nt?u>s9jA<E+~Sm<|X5@yn)wPlBm(}@)orSYOOux zr90kxUo`RlO1Rf-llppp(+uHk0C|UEyiJahI^pYmclz!Oz8UYZFz!s%E1q)k^J`a7 zC6gpH44Sk9DQe~A&SQe;DYv-lF29OT&RWM(X<|eA(&uH}F(Cuz3ugE6i_)liDQ4o2 z=-xmaR{gp15&EJhDG8!=&)TttozFAYOyC2@_+*a1MKhVk8_kE?=SDx?y};94i*BCO zL0E8L;$%`dP$l2JRMNi2S$8_NpdO)Z6KrNxT^2Hvg7J9&jcOGCiNKh-Xr2bnCB+5+ zu%`j88Q2`<TyIq=t~L%*8CQPm2ruGHN+2NypUXsoD;68e7;XbA%u|1~vU8-ld%<h{ zv*y;Tr!3lj@ayXFOa<Q#O7>Z_ht_^T$h2l1uRn$Uv4}s0PP(E@*NLk8W_)EVDxD{C z!{W0iifHaIGX1fr(da(>A9Nc3(Cwi26=7K8>1et+qxa0eC3MnGz1&961aka;gsVv) zThf1*=`o?$ka`OL1F)|w4ozWxq@n$;R6fP`uK23c@=<wZn0exGtl-&6dyEf|JBNVo zmCxbg3?~IqP_QBt$UTur3GF_&nHQobImmg#*LFFS8OXiU|FYzq{4{jwx`bf-Hl2h) zOg*QuizG07#;ppHMMR<ZAv{4U%eOj!wJkq7rp%ageXl&2a>AacNTn5B6=2gK|F)=Q zvgcb@cKL--YECMN-^qTKgGuCn5VC4%Fzdg;Phd8i%NQJbitztK_DNIt3%vVnX;kV$ zLL%020V@gtv4PjX-YBPYooCY1ILQNJ6@dM8lRPU8y{?e15napvO}Pv#TGy+Rv1N4) zk-$;AV5~wDln&dKzz3HH`9t=9J=k9LGGs+;5EzP(;`2Z1d>z?J24lIZp)l2o%X1Op zIC+8%F*(r{nGAC`^Z|)}?A(51ar>sm$%BF2g&-os@Zx9va9`R)eRgfLfX7Q}fs89h z{ogc^DVJRk6A)|F4Cyb<dWq_{I;d-D{^m>{Smxb`R7For#PxvEZPU5us`g*ci-4T% zXEi0_;`t7C&im>#g}6NnJh(CZ{V4j(6d(AH(66~X&m(#V#E{;cG6G5xHY62}@T6ps z<ITU^SR9Bs5~rU^%RjUoNvAhRAIuVV@@7`j%+i>t4tWIBNgxf%4u43$emEuj_lIX* zxkDh-NRZOIp?q=$U=DT<-lwk>Qlh`8`T1}eg*oFAcZ3EObPo*nzg2DTSE~IUx~ef? zV!-aJT2kM8^q#ApwnFIVa3Vt&-9{xKO&(ZN#{Lf!?Wv~>)@q;024_g1qBf%TbcKh0 zt*YU|Zz3@!^O%ac3-S0Xw5TxhIwq2%+uddmG^*4dn4NGr;JwB}x~8V$(V{>((n#+p ze~rt8_ldy<HBK@YUK><Z#{=14zwK-p-LbT*Pum1>uQ*>F&(Dc+FMK|sP{lIkwPI%? zjyJ2-Rhx|x89wWlS0+ub9l@9c%R7)OW3~|94#Sd+noLwE_~%buAzSU0G;6Z-zeA>- z8&jzL4tYfpflYTC@#h*2FK9B=kV&)eBrOrtuQ%eKWl&E}FE{*w4M9fcR)WVqgkZng zII$>>7m-*wi5x4$rgdNMm7VCtS$tR~`Gl=kZuJGgC!=f#8yTgUP7%Cb;>TyHdwMDD z+u{BwnX(r738SC0yj8xp%#B^s^o&++HMycjQgtLYPFg0X`rR05$}VZoD9fLtRfpt{ zsWFp;1=~VnzwuVSS)D_Q;?5lv)2#bGg3upWgadm)Hmk6Jf;K8Wua@6ddRu?wog5o) z1OtS)&Ywk>h&Sh3-UyV;`W*B;xIx*18?>};12Wg%v3;Tq<i@`nQx9%e_ecX(>-mGV zww4~8!rB5@i;XW!1Io(>lFiE2%aARh8CI3DySC-H-=hxH^=za&j<i>QDB+gPLB`e= zJZn?>jAkqKJTYh=GcEr9<l@kq=Q)4@!FZ6I^bM^@@m^8sy`uZx*`Z?U&H?&ah(iEI z>Aj+4kgAau@yCTO=;v4^9AJfU1;IcknAlEh+ra*tZhk%dOineQM8;4sjlIaj6(XIt zi>%b_%Kh7&{hrdP)&Umd)I`4C-!I6^tkYCU>XzfXuQnK#&d4aRn-?|gL*N;9^_&Th zO8S$Tebn0b(t-1RJvSQkUl4kXiRXXDGRtEc37rFHjNrj=-HqcTNeEwv&&~I1f$P{v zEKjLv)tcTR1xyiDpe3#niA!z%W9oX!dVTy~i2Z@sbsJ~ymcL<6<5)0$WmUo;aplLt zL+6igC2w}B+$0sj0dI-gx;J!J@`R5f_gxe!d(^GqBYdSpC)v`pTM%Ih^Q)XqnXz*a zX_Q>S*^NxeRUU?bLK!^{@=){A0K-qVj1_a$x<rjYTD#Cs%u@MO?Q6i+6S>veic!ko z8<UBlUk2d82S~~sUY*u{_P!P}6JO$Lmgf#F0-gCZ7Muek8Hw(29krK+{GV>zzWi2b zFVjJ|mM-Dy18FPXR731_tBgN;pNsDXBsibo{>ZMseQ8>nn@G^x+&y-%jaYe2rX@KW z9c@x!5V2{?%!Pup82lE*vz5Ve4y}#(5<U8SkPV)#xcUjb7$x@NymodB{-!ZJ+AN9w z`O}hmv$3t@s>y_#TzXt)M+`#TrD2n?Gos~j(I-X0&S(`f7{Gsx)Bh&e75|-H$8o8` z#{hwUEDG*fB!d1e(fhcN0xe?H!Wto8`&j+C=PR}#Z}6iqB62Ws6<&0ntvv&tfDo~Y z!7ROWXqAD=QfF>QEDD>_sX44YG}dT2E4{HkX}mhManpBA;@w`ljm^uvzx>pAr(7lI zp+CjY;O5A~f)rchK*X73X70kzp>@d3_U37_@C?!XZ*k|5T|b)3$K313;t#u)x##?M zrk+0@r-h|j$Dd#QkBMP$3cxdyAXD|ydhpyd*1C8f5jX&FEWxpCW9FQ=U42(`jx_ck zf;u<vv9BL1M?(?aQoI?luj&-(4xbK|%=nB=+tev-@ytDmlsi|Gg7Dl9d%!mpi=w*n zg8tCs=@Q{f%N6>GXvT#hSuuyT!4lMLy|Ql&F{oK5NP#hBxj0DWAu9G_J{2>JqjOy; zRx2&hr)*|EJ({A4S}FD~ngSTjbq%Kjio$WGIt?;3%Do2Xz>|%(?Ze(%>SZ(ljs)1I zS`Sw$Fu*|2qPxTxBEmSd$GE%uQ%bDYWxr=ikFGQk7EXU1zI-s2)rB@;I2#!~qH86f z0tb1&;GQDT3l4r?vaIZK2LG1t5yd~4dfQ3|*73St>YH!&xHAa>gHriPl*8kZyXcBh zS)aV%`7LGfE<lvc9#A4o9H9V;=a{>~{ZZzBhGrrDAB+Dwg7^LO)1g%VQ*=Ll5%6C} za5w4yRtqdA`^HFu0a;+QCfJibXk0IUvfQ!Ka+F$2o=~AXGUgf!zn%jgO3)$ox0`;k zC;Sg5SCh+_<7QU6JLnU(al_a{(IJGlx=m+4Q&^MLIMCim>vf5wTv#xAuooO7P@&FQ zG{t|spDF}#b2n;ithnZDY&?>v-K*ddp>|X2pFw^Xf0HUjCnNI85nOE+!=rf`(Zc3` zQ!(`cCc@|u$_4;2cWc&W&zmA&*H#@nvhhzGTBUH;eWk{`O?-dY_4jpMb5POl?!uTv zBJzSZ${nc}6f-i_E@!j|T<1~X?bA=;N;zZsZZrqkjFN*^?$unyPCP94uV5jGn4eh> zY~2b1*aqtm`5_t2L^&}687Al@RwJQm_|gT1ew^kqrwzq7D+X7{sH9Qy;90DRMC&)2 z>b}UKxNp##1TcmFi>4C>b6o|hX8umZ6AQLqBhiWcZ&X+)cc}fG)e38X)z8SyW=k8a z*hB3;kQ1a-B0mru?U|0EG%gj+H}-|;1dmlr;tPj}j`UIcPZ}vT<qvr{t{mcL0GQO8 zKQhgCybAMA@c487n2vr{baVDs>3gB9d})T9llCv$ZL_=FZ!+#%Wev(As{@Sh>h5$w J;+6gD{vRD*+BN_H delta 107781 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 G>i+;Eue1sP diff --git a/CI/physmon/reference/trackfinding_4muon_50vertices/performance_vertexing_amvf_grid_time_hist.root b/CI/physmon/reference/trackfinding_4muon_50vertices/performance_vertexing_amvf_grid_time_hist.root index d99436fa0f5fd38dd75867718a816d38f0391b3e..3b33e1bae98829c94714f506f8f7775d8b447717 100644 GIT binary patch delta 16275 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 delta 16399 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 diff --git a/CI/physmon/reference/trackfinding_ttbar_pu200/performance_fitting_ckf.root b/CI/physmon/reference/trackfinding_ttbar_pu200/performance_fitting_ckf.root index 09d2dc033af582712da4c95ff8c659f26e13595d..754dd91bb0a2f22f884d315a9446c6eab3c4108f 100644 GIT binary patch delta 171210 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 delta 170710 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 CI+XkX diff --git a/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp b/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp index f4f56946c84..6d6a62516a7 100644 --- a/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp +++ b/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp @@ -64,15 +64,15 @@ std::optional<BoundVector> estimateTrackParamsFromSeed( } // Convert bField to Tesla - ActsScalar bFieldInTesla = bField.norm() / UnitConstants::T; - ActsScalar bFieldMinInTesla = bFieldMin / UnitConstants::T; + ActsScalar bFieldStrength = bField.norm(); // Check if magnetic field is too small - if (bFieldInTesla < bFieldMinInTesla) { + if (bFieldStrength < bFieldMin) { // @todo shall we use straight-line estimation and use default q/pt in such // case? - ACTS_WARNING("The magnetic field at the bottom space point: B = " - << bFieldInTesla << " T is smaller than |B|_min = " - << bFieldMinInTesla << " T. Estimation is not performed."); + ACTS_WARNING( + "The magnetic field at the bottom space point: B = " + << bFieldStrength / UnitConstants::T << " T is smaller than |B|_min = " + << bFieldMin / UnitConstants::T << " T. Estimation is not performed."); return std::nullopt; } @@ -142,7 +142,7 @@ std::optional<BoundVector> estimateTrackParamsFromSeed( int sign = ia > 0 ? -1 : 1; const ActsScalar R = circleCenter.norm(); ActsScalar invTanTheta = - local2.z() / (2.f * R * std::asin(local2.head<2>().norm() / (2.f * R))); + local2.z() / (2 * R * std::asin(local2.head<2>().norm() / (2 * R))); // The momentum direction in the new frame (the center of the circle has the // coordinate (-1.*A/(2*B), 1./(2*B))) ActsScalar A = -circleCenter(0) / circleCenter(1); @@ -174,7 +174,7 @@ std::optional<BoundVector> estimateTrackParamsFromSeed( // The estimated q/pt in [GeV/c]^-1 (note that the pt is the projection of // momentum on the transverse plane of the new frame) - ActsScalar qOverPt = sign * (UnitConstants::m) / (0.3 * bFieldInTesla * R); + ActsScalar qOverPt = sign / (bFieldStrength * R); // The estimated q/p in [GeV/c]^-1 params[eBoundQOverP] = qOverPt / fastHypot(1., invTanTheta); diff --git a/Examples/Python/tests/root_file_hashes.txt b/Examples/Python/tests/root_file_hashes.txt index c6ed65f4564..45337b2f762 100644 --- a/Examples/Python/tests/root_file_hashes.txt +++ b/Examples/Python/tests/root_file_hashes.txt @@ -3,16 +3,16 @@ test_fatras__particles_simulation.root: bc970873fef0c2efd86ed5413623802353d2cd04 test_fatras__hits.root: 6e4beb045fa1712c4d14c280ba33c3fa13e4aff9de88d55c3e32f62ad226f724 test_geant4__particles_simulation.root: 49926c71a9b54e13aa1cc7596d3302baf3c87d8e2c1d0267cb4523f6abdc0ac2 test_geant4__hits.root: 4c9e704a75f47ed2e61652679a1d6f18fa4d9cf53faa8f8f5bbf7995634207aa -test_seeding__estimatedparams.root: 69c0e268f9025a0991a212ea2a7f26f53112fecf614b475605bd1cb08415ba56 +test_seeding__estimatedparams.root: 6759004f945cabe03098c94b3eea7e3323acd9f37edfa71641797007336643c8 test_seeding__performance_seeding.root: 992f9c611d30dde0d3f3ab676bab19ada61ab6a4442828e27b65ec5e5b7a2880 test_seeding__particles.root: c423bc666df3674f1a1140dec68ea13f44173232b8057e8a02572aee4f3e7d5b test_seeding__particles_simulation.root: f937a4cc474e80cfbb6eac4384e42e9c5c7ac981fcd6870d624cc898d1a0c006 -test_hashing_seeding__estimatedparams.root: 8daa3f04342c265f32f1608ccc921ab0041686a6280b956f811638ad4328330e -test_seeding_orthogonal__estimatedparams.root: ca5896ec325daf5c8012291bc454269c61c32fe3d7e33bd1fa3b812826930299 +test_hashing_seeding__estimatedparams.root: 6b52f27b2feac2fa46a8ed52abacfe6dc8e6319f86e031cdc2f9ba28a0393cb2 +test_seeding_orthogonal__estimatedparams.root: 6cb69ee239e11ff112dd50c2bcfe945a6f7b00e43e13b2cba4e08f1bfcf6a583 test_seeding_orthogonal__performance_seeding.root: 60fbedcf5cb2b37cd8e526251940564432890d3a159d231ed819e915a904682c test_seeding_orthogonal__particles.root: c423bc666df3674f1a1140dec68ea13f44173232b8057e8a02572aee4f3e7d5b test_seeding_orthogonal__particles_simulation.root: f937a4cc474e80cfbb6eac4384e42e9c5c7ac981fcd6870d624cc898d1a0c006 -test_itk_seeding__estimatedparams.root: 1cc05f9f2aefb5f71a85b31e97bc4e5845fedfcef6c53199495a6340c6b6210b +test_itk_seeding__estimatedparams.root: fc042037f12a434f2236df7d225b8ca24209b6910f04a4496ae3a06516a6ff8c test_itk_seeding__performance_seeding.root: 78ebda54cd0f026ba4b7f316724ffd946de56a932735914baf1b7bba9505c29d test_itk_seeding__particles.root: 907ff693262c0db14b12c74b16586cb20d79caf5f03f93b178943e41ed35a1b6 test_itk_seeding__particles_simulation.root: ef0246069aa697019f28a8b270a68de95312cae5f2f2c74848566c3ce4f70363 @@ -33,19 +33,19 @@ test_digitization_example_input[smeared]__particles.root: 669d0304eb8bcf244aa627 test_digitization_example_input[smeared]__measurements.root: 243c2f69b7b0db9dbeaa7494d4ea0f3dd1691dc90f16e10df6c0491ff4dc7d62 test_digitization_example_input[geometric]__particles.root: 669d0304eb8bcf244aa627809a117944e5e3b994fdfcfb8710f2b9a8f9a62d3b test_digitization_example_input[geometric]__measurements.root: 63ec81635979058fb8976f94455bf490cf92b7b142c4a05cc39de6225f5de2fb -test_ckf_tracks_example[generic-full_seeding]__trackstates_ckf.root: 7c48ec32a2cb1723416a9791a8067ef09825fcf71a6cf561c1f6d2ab9dc1c1ad -test_ckf_tracks_example[generic-full_seeding]__tracksummary_ckf.root: e6b9e539998ba007e9b7d2c8d9d022c47726a39e8ab9b1724c52b1d78234be03 +test_ckf_tracks_example[generic-full_seeding]__trackstates_ckf.root: ec6487dfca5f944cfacfef903eb4b9a97f8f6a668d07f77d0c3ec45c68054824 +test_ckf_tracks_example[generic-full_seeding]__tracksummary_ckf.root: 84085bcc63562cfb1b4c70d2665bf06938ac559bb40c2b01c076e1d8b5c7b43b test_ckf_tracks_example[generic-full_seeding]__performance_seeding_trees.root: 0e0676ffafdb27112fbda50d1cf627859fa745760f98073261dcf6db3f2f991e -test_ckf_tracks_example[generic-truth_estimated]__trackstates_ckf.root: df730fd00a7e6a0941f5f94c07ea9cffdb763853272d284d25bec0eb2072bb2e -test_ckf_tracks_example[generic-truth_estimated]__tracksummary_ckf.root: 417f7326e1e1bb4519f1378145ac733bdda6653eb9871fd69e455e0269d996a6 +test_ckf_tracks_example[generic-truth_estimated]__trackstates_ckf.root: 8e15cceeef4b115708596702988925b7506d39e0531dc5534636ec411a9b4ca2 +test_ckf_tracks_example[generic-truth_estimated]__tracksummary_ckf.root: 8e0116c656e1cc67446d54a5205c4a3e2f4c1fc90fa551bb608c881877dfa0ab test_ckf_tracks_example[generic-truth_estimated]__performance_seeding.root: 1facb05c066221f6361b61f015cdf0918e94d9f3fce2269ec7b6a4dffeb2bc7e test_ckf_tracks_example[generic-truth_smeared]__trackstates_ckf.root: 82a6744980553e6274df78eea15f0dec22676b1c04e14afc3828bff9bbf5e1b1 test_ckf_tracks_example[generic-truth_smeared]__tracksummary_ckf.root: 06d6ae1d05cb611b19df3c59531997c9b0108f5ef6027d76c4827bd2d9edb921 -test_ckf_tracks_example[odd-full_seeding]__trackstates_ckf.root: 0fb43661cc3a7973c28940a283dc168ceb13bc60badf1f520096edaa5982a039 -test_ckf_tracks_example[odd-full_seeding]__tracksummary_ckf.root: c2e029e462d4ca77df2c7f8963093da43be66c8279ca2cc9aee8c0bc35259eec +test_ckf_tracks_example[odd-full_seeding]__trackstates_ckf.root: 17c48c5a61b1a5495d91336cdf06f9c24e50d81349c1f31d7c70ffff5810a376 +test_ckf_tracks_example[odd-full_seeding]__tracksummary_ckf.root: b5805e54030ab8ac80a8c0a764700c65433dc659783fc8ff3b2c96e512a1d045 test_ckf_tracks_example[odd-full_seeding]__performance_seeding_trees.root: 43c58577aafe07645e5660c4f43904efadf91d8cda45c5c04c248bbe0f59814f -test_ckf_tracks_example[odd-truth_estimated]__trackstates_ckf.root: 39ac67c47f371c576d7094bca987a04e0315bd286dc79503a63a5f568b58ac97 -test_ckf_tracks_example[odd-truth_estimated]__tracksummary_ckf.root: 59e2c75e9524653a80a9fd62fe99e958f73f80aa09240dcbb4ea469372e4811d +test_ckf_tracks_example[odd-truth_estimated]__trackstates_ckf.root: 86be5a086d2a87dfde9320bb880bd0788d733ea9727cb5ee6dc0282ec4be39f4 +test_ckf_tracks_example[odd-truth_estimated]__tracksummary_ckf.root: ffce6a73f16986cb3f0386d4a8c1e0ff6f0b4130b9bb12d1af0eb905d000e3e9 test_ckf_tracks_example[odd-truth_estimated]__performance_seeding.root: 1a36b7017e59f1c08602ef3c2cb0483c51df248f112e3780c66594110719c575 test_ckf_tracks_example[odd-truth_smeared]__trackstates_ckf.root: 35a65e15a6f479f628a96f56ee78e1ac371d71a686ee0c974944d681499fe6bd test_ckf_tracks_example[odd-truth_smeared]__tracksummary_ckf.root: 3e257de624674fa9a19dcc72598c78c29a52633821acaa56dc2aa39a1395f1b5 From f99c9fa0a81482485ef2e62ed2e337cf46d95590 Mon Sep 17 00:00:00 2001 From: David Weingut <da.we_2003@web.de> Date: Mon, 18 Nov 2024 23:29:37 +0100 Subject: [PATCH 20/49] fix: Potential Out of Bounds in Root file reading (#3870) Fix possible Out of Bounds access on data filled by ROOT The data output by `->Draw` is guaranteed to be properly initialized and filled --- Examples/Io/Root/src/RootMaterialTrackReader.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Examples/Io/Root/src/RootMaterialTrackReader.cpp b/Examples/Io/Root/src/RootMaterialTrackReader.cpp index 8781b134559..d1b1c443c92 100644 --- a/Examples/Io/Root/src/RootMaterialTrackReader.cpp +++ b/Examples/Io/Root/src/RootMaterialTrackReader.cpp @@ -89,6 +89,10 @@ RootMaterialTrackReader::RootMaterialTrackReader(const Config& config, // Sort the entry numbers of the events { + // necessary to guarantee that m_inputChain->GetV1() is valid for the + // entire range + m_inputChain->SetEstimate(nentries); + m_entryNumbers.resize(nentries); m_inputChain->Draw("event_id", "", "goff"); RootUtility::stableSort(m_inputChain->GetEntries(), m_inputChain->GetV1(), From b0690e9904528aa33b4ff85eac27a6d49bf2dc24 Mon Sep 17 00:00:00 2001 From: Andreas Stefl <stefl.andreas@gmail.com> Date: Tue, 19 Nov 2024 08:46:37 +0100 Subject: [PATCH 21/49] feat: Free parameter estimation from seed (#3832) This is a generalization of the bound version `estimateTrackParamsFromSeed`. From the interface one can see what information is really necessary to estimate parameters ```c++ FreeVector estimateTrackParamsFromSeed(const Vector3& sp0, const Vector3& sp1, const Vector3& sp2, const Vector3& bField); template <typename spacepoint_iterator_t> FreeVector estimateTrackParamsFromSeed(spacepoint_iterator_t spBegin, spacepoint_iterator_t spEnd, const Vector3& bField) { ``` vs ```c++ template <typename spacepoint_iterator_t> std::optional<BoundVector> estimateTrackParamsFromSeed( const GeometryContext& gctx, spacepoint_iterator_t spBegin, spacepoint_iterator_t spEnd, const Surface& surface, const Vector3& bField, ActsScalar bFieldMin, const Acts::Logger& logger = getDummyLogger()) { ``` Originally I wanted to make use of this new version inside the bound version but I ended up doing a different error handling which is also more generic IMO. We can unify this with the next breaking change. I would propose to drop the bound version completely and let the user deal with the global to local conversion which makes it very explicit that one needs a surface to put the parameters on. A propagator can then be used to extrapolate parameters to a different reference surface. --- .../Seeding/EstimateTrackParamsFromSeed.hpp | 80 +++++++++++++++++++ .../Seeding/EstimateTrackParamsFromSeed.cpp | 78 ++++++++++++++++++ .../EstimateTrackParamsFromSeedTest.cpp | 17 ++-- 3 files changed, 167 insertions(+), 8 deletions(-) diff --git a/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp b/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp index 6d6a62516a7..5d6b4dbb97c 100644 --- a/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp +++ b/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp @@ -14,15 +14,95 @@ #include "Acts/Surfaces/Surface.hpp" #include "Acts/Utilities/Logger.hpp" #include "Acts/Utilities/MathHelpers.hpp" +#include "Acts/Utilities/Zip.hpp" #include <array> #include <cmath> #include <iostream> #include <iterator> #include <optional> +#include <stdexcept> namespace Acts { +/// Estimate the full track parameters from three space points +/// +/// This method is based on the conformal map transformation. It estimates the +/// full free track parameters, i.e. (x, y, z, t, dx, dy, dz, q/p) at the +/// bottom space point. The bottom space is assumed to be the first element +/// in the range defined by the iterators. The magnetic field (which might be +/// along any direction) is also necessary for the momentum estimation. +/// +/// This is a purely spatial estimation, i.e. the time parameter will be set to +/// 0. +/// +/// It resembles the method used in ATLAS for the track parameters +/// estimated from seed, i.e. the function InDet::SiTrackMaker_xk::getAtaPlane +/// here: +/// https://acode-browser.usatlas.bnl.gov/lxr/source/athena/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx +/// +/// @tparam spacepoint_iterator_t The type of space point iterator +/// +/// @param sp0 is the bottom space point +/// @param sp1 is the middle space point +/// @param sp2 is the top space point +/// @param bField is the magnetic field vector +/// +/// @return the free parameters +FreeVector estimateTrackParamsFromSeed(const Vector3& sp0, const Vector3& sp1, + const Vector3& sp2, + const Vector3& bField); + +/// Estimate the full track parameters from three space points +/// +/// This method is based on the conformal map transformation. It estimates the +/// full free track parameters, i.e. (x, y, z, t, dx, dy, dz, q/p) at the +/// bottom space point. The bottom space is assumed to be the first element +/// in the range defined by the iterators. The magnetic field (which might be +/// along any direction) is also necessary for the momentum estimation. +/// +/// It resembles the method used in ATLAS for the track parameters +/// estimated from seed, i.e. the function InDet::SiTrackMaker_xk::getAtaPlane +/// here: +/// https://acode-browser.usatlas.bnl.gov/lxr/source/athena/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx +/// +/// @tparam spacepoint_iterator_t The type of space point iterator +/// +/// @param spRange is the range of space points +/// @param bField is the magnetic field vector +/// +/// @return the free parameters +template <std::ranges::range spacepoint_range_t> +FreeVector estimateTrackParamsFromSeed(spacepoint_range_t spRange, + const Vector3& bField) { + // Check the number of provided space points + if (spRange.size() != 3) { + throw std::invalid_argument( + "There should be exactly three space points provided."); + } + + // The global positions of the bottom, middle and space points + std::array<Vector3, 3> spPositions = {Vector3::Zero(), Vector3::Zero(), + Vector3::Zero()}; + std::array<std::optional<double>, 3> spTimes = {std::nullopt, std::nullopt, + std::nullopt}; + // The first, second and third space point are assumed to be bottom, middle + // and top space point, respectively + for (auto [sp, spPosition, spTime] : + Acts::zip(spRange, spPositions, spTimes)) { + if (sp == nullptr) { + throw std::invalid_argument("Empty space point found."); + } + spPosition = Vector3(sp->x(), sp->y(), sp->z()); + spTime = sp->t(); + } + + FreeVector params = estimateTrackParamsFromSeed( + spPositions[0], spPositions[1], spPositions[2], bField); + params[eFreeTime] = spTimes[0].value_or(0); + return params; +} + /// Estimate the full track parameters from three space points /// /// This method is based on the conformal map transformation. It estimates the diff --git a/Core/src/Seeding/EstimateTrackParamsFromSeed.cpp b/Core/src/Seeding/EstimateTrackParamsFromSeed.cpp index eebcd1c5760..055691bbb2f 100644 --- a/Core/src/Seeding/EstimateTrackParamsFromSeed.cpp +++ b/Core/src/Seeding/EstimateTrackParamsFromSeed.cpp @@ -12,6 +12,84 @@ #include <numbers> +Acts::FreeVector Acts::estimateTrackParamsFromSeed(const Vector3& sp0, + const Vector3& sp1, + const Vector3& sp2, + const Vector3& bField) { + // Define a new coordinate frame with its origin at the bottom space point, z + // axis long the magnetic field direction and y axis perpendicular to vector + // from the bottom to middle space point. Hence, the projection of the middle + // space point on the transverse plane will be located at the x axis of the + // new frame. + Vector3 relVec = sp1 - sp0; + Vector3 newZAxis = bField.normalized(); + Vector3 newYAxis = newZAxis.cross(relVec).normalized(); + Vector3 newXAxis = newYAxis.cross(newZAxis); + RotationMatrix3 rotation; + rotation.col(0) = newXAxis; + rotation.col(1) = newYAxis; + rotation.col(2) = newZAxis; + // The center of the new frame is at the bottom space point + Translation3 trans(sp0); + // The transform which constructs the new frame + Transform3 transform(trans * rotation); + + // The coordinate of the middle and top space point in the new frame + Vector3 local1 = transform.inverse() * sp1; + Vector3 local2 = transform.inverse() * sp2; + + // In the new frame the bottom sp is at the origin, while the middle + // sp in along the x axis. As such, the x-coordinate of the circle is + // at: x-middle / 2. + // The y coordinate can be found by using the straight line passing + // between the mid point between the middle and top sp and perpendicular to + // the line connecting them + Vector2 circleCenter; + circleCenter(0) = 0.5 * local1(0); + + ActsScalar deltaX21 = local2(0) - local1(0); + ActsScalar sumX21 = local2(0) + local1(0); + // straight line connecting the two points + // y = a * x + c (we don't care about c right now) + // we simply need the slope + // we compute 1./a since this is what we need for the following computation + ActsScalar ia = deltaX21 / local2(1); + // Perpendicular line is then y = -1/a *x + b + // we can evaluate b given we know a already by imposing + // the line passes through P = (0.5 * (x2 + x1), 0.5 * y2) + ActsScalar b = 0.5 * (local2(1) + ia * sumX21); + circleCenter(1) = -ia * circleCenter(0) + b; + // Radius is a signed distance between circleCenter and first sp, which is at + // (0, 0) in the new frame. Sign depends on the slope a (positive vs negative) + int sign = ia > 0 ? -1 : 1; + const ActsScalar R = circleCenter.norm(); + ActsScalar invTanTheta = + local2.z() / (2 * R * std::asin(local2.head<2>().norm() / (2 * R))); + // The momentum direction in the new frame (the center of the circle has the + // coordinate (-1.*A/(2*B), 1./(2*B))) + ActsScalar A = -circleCenter(0) / circleCenter(1); + Vector3 transDirection(1., A, fastHypot(1, A) * invTanTheta); + // Transform it back to the original frame + Vector3 direction = rotation * transDirection.normalized(); + + // Initialize the free parameters vector + FreeVector params = FreeVector::Zero(); + + // The bottom space point position + params.segment<3>(eFreePos0) = sp0; + + // The estimated direction + params.segment<3>(eFreeDir0) = direction; + + // The estimated q/pt in [GeV/c]^-1 (note that the pt is the projection of + // momentum on the transverse plane of the new frame) + ActsScalar qOverPt = sign / (bField.norm() * R); + // The estimated q/p in [GeV/c]^-1 + params[eFreeQOverP] = qOverPt / fastHypot(1., invTanTheta); + + return params; +} + Acts::BoundMatrix Acts::estimateTrackParamCovariance( const EstimateTrackParamCovarianceConfig& config, const BoundVector& params, bool hasTime) { diff --git a/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp b/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp index 6161a8bdd33..e39a6a1a900 100644 --- a/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp +++ b/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp @@ -9,10 +9,8 @@ #include <boost/test/unit_test.hpp> #include "Acts/Definitions/Algebra.hpp" -#include "Acts/Definitions/Direction.hpp" #include "Acts/Definitions/TrackParametrization.hpp" #include "Acts/Definitions/Units.hpp" -#include "Acts/EventData/GenericCurvilinearTrackParameters.hpp" #include "Acts/EventData/TrackParameters.hpp" #include "Acts/EventData/detail/TestSourceLink.hpp" #include "Acts/Geometry/GeometryContext.hpp" @@ -29,7 +27,6 @@ #include "Acts/Tests/CommonHelpers/CylindricalTrackingGeometry.hpp" #include "Acts/Tests/CommonHelpers/FloatComparisons.hpp" #include "Acts/Tests/CommonHelpers/MeasurementsCreator.hpp" -#include "Acts/Utilities/CalibrationContext.hpp" #include "Acts/Utilities/Logger.hpp" #include <algorithm> @@ -39,7 +36,6 @@ #include <map> #include <memory> #include <optional> -#include <ostream> #include <random> #include <utility> #include <vector> @@ -99,8 +95,8 @@ BOOST_AUTO_TEST_CASE(trackparameters_estimation_test) { true, // material false // passive }); - auto field = - std::make_shared<Acts::ConstantBField>(Acts::Vector3(0.0, 0.0, 2._T)); + const Vector3 bField(0, 0, 2._T); + auto field = std::make_shared<Acts::ConstantBField>(bField); ConstantFieldStepper stepper(std::move(field)); ConstantFieldPropagator propagator(std::move(stepper), std::move(navigator)); @@ -172,10 +168,15 @@ BOOST_AUTO_TEST_CASE(trackparameters_estimation_test) { spacePointPtrs.begin(), [](const auto& sp) { return &sp.second; }); - // Test the full track parameters estimator + // Test the free track parameters estimator + FreeVector estFreeParams = + estimateTrackParamsFromSeed(spacePointPtrs, bField); + BOOST_CHECK(!estFreeParams.hasNaN()); + + // Test the bound track parameters estimator auto fullParamsOpt = estimateTrackParamsFromSeed( geoCtx, spacePointPtrs.begin(), spacePointPtrs.end(), - *bottomSurface, Vector3(0, 0, 2._T), 0.1_T, *logger); + *bottomSurface, bField, 0.1_T, *logger); BOOST_REQUIRE(fullParamsOpt.has_value()); const auto& estFullParams = fullParamsOpt.value(); BOOST_TEST_INFO( From be67ec3dbc62d20ecd2e9fbc836299af60b5dc3c Mon Sep 17 00:00:00 2001 From: Andreas Stefl <stefl.andreas@gmail.com> Date: Tue, 19 Nov 2024 10:47:03 +0100 Subject: [PATCH 22/49] fix: Estimate entry size before sorting in ROOT readers (#3871) Extending the fix from here https://github.com/acts-project/acts/pull/3870 to other places. See also discussion here https://mattermost.web.cern.ch/acts/pl/gp9mw1y1njr4bjxmbhurk1b4me blocked by - https://github.com/acts-project/acts/pull/3870 --- Examples/Io/Root/src/RootMaterialTrackReader.cpp | 2 +- Examples/Io/Root/src/RootParticleReader.cpp | 4 ++++ Examples/Io/Root/src/RootTrackSummaryReader.cpp | 4 ++++ Examples/Io/Root/src/RootVertexReader.cpp | 12 +++++++----- Examples/Scripts/TrackingPerformance/TreeReader.h | 9 +++++++-- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/Examples/Io/Root/src/RootMaterialTrackReader.cpp b/Examples/Io/Root/src/RootMaterialTrackReader.cpp index d1b1c443c92..70b2ab8d997 100644 --- a/Examples/Io/Root/src/RootMaterialTrackReader.cpp +++ b/Examples/Io/Root/src/RootMaterialTrackReader.cpp @@ -91,7 +91,7 @@ RootMaterialTrackReader::RootMaterialTrackReader(const Config& config, { // necessary to guarantee that m_inputChain->GetV1() is valid for the // entire range - m_inputChain->SetEstimate(nentries); + m_inputChain->SetEstimate(nentries + 1); m_entryNumbers.resize(nentries); m_inputChain->Draw("event_id", "", "goff"); diff --git a/Examples/Io/Root/src/RootParticleReader.cpp b/Examples/Io/Root/src/RootParticleReader.cpp index a76255dbb4a..631fc25ef3e 100644 --- a/Examples/Io/Root/src/RootParticleReader.cpp +++ b/Examples/Io/Root/src/RootParticleReader.cpp @@ -80,6 +80,10 @@ RootParticleReader::RootParticleReader(const RootParticleReader::Config& config, // Sort the entry numbers of the events { + // necessary to guarantee that m_inputChain->GetV1() is valid for the + // entire range + m_inputChain->SetEstimate(m_events + 1); + m_entryNumbers.resize(m_events); m_inputChain->Draw("event_id", "", "goff"); RootUtility::stableSort(m_inputChain->GetEntries(), m_inputChain->GetV1(), diff --git a/Examples/Io/Root/src/RootTrackSummaryReader.cpp b/Examples/Io/Root/src/RootTrackSummaryReader.cpp index 1827c26ad30..9ff3590271a 100644 --- a/Examples/Io/Root/src/RootTrackSummaryReader.cpp +++ b/Examples/Io/Root/src/RootTrackSummaryReader.cpp @@ -99,6 +99,10 @@ RootTrackSummaryReader::RootTrackSummaryReader( // Sort the entry numbers of the events { + // necessary to guarantee that m_inputChain->GetV1() is valid for the + // entire range + m_inputChain->SetEstimate(m_events + 1); + m_entryNumbers.resize(m_events); m_inputChain->Draw("event_nr", "", "goff"); RootUtility::stableSort(m_inputChain->GetEntries(), m_inputChain->GetV1(), diff --git a/Examples/Io/Root/src/RootVertexReader.cpp b/Examples/Io/Root/src/RootVertexReader.cpp index 336e0364f9b..31a8e6d5bec 100644 --- a/Examples/Io/Root/src/RootVertexReader.cpp +++ b/Examples/Io/Root/src/RootVertexReader.cpp @@ -8,13 +8,12 @@ #include "ActsExamples/Io/Root/RootVertexReader.hpp" -#include "Acts/Definitions/PdgParticle.hpp" #include "Acts/Utilities/Logger.hpp" #include "ActsExamples/EventData/SimParticle.hpp" #include "ActsExamples/Framework/AlgorithmContext.hpp" +#include "ActsExamples/Io/Root/RootUtility.hpp" #include "ActsFatras/EventData/ProcessType.hpp" -#include <algorithm> #include <cstdint> #include <iostream> #include <stdexcept> @@ -64,11 +63,14 @@ RootVertexReader::RootVertexReader(const RootVertexReader::Config& config, // Sort the entry numbers of the events { + // necessary to guarantee that m_inputChain->GetV1() is valid for the + // entire range + m_inputChain->SetEstimate(m_events + 1); + m_entryNumbers.resize(m_events); m_inputChain->Draw("event_id", "", "goff"); - // Sort to get the entry numbers of the ordered events - TMath::Sort(m_inputChain->GetEntries(), m_inputChain->GetV1(), - m_entryNumbers.data(), false); + RootUtility::stableSort(m_inputChain->GetEntries(), m_inputChain->GetV1(), + m_entryNumbers.data(), false); } } diff --git a/Examples/Scripts/TrackingPerformance/TreeReader.h b/Examples/Scripts/TrackingPerformance/TreeReader.h index 4ab47746dc0..b12ce19d373 100644 --- a/Examples/Scripts/TrackingPerformance/TreeReader.h +++ b/Examples/Scripts/TrackingPerformance/TreeReader.h @@ -145,6 +145,7 @@ struct TrackStatesReader : public TreeReader { // It's not necessary if you just need to read one file, but please do it to // synchronize events if multiple root files are read if (sortEvents) { + tree->SetEstimate(tree->GetEntries() + 1); entryNumbers.resize(tree->GetEntries()); tree->Draw("event_nr", "", "goff"); // Sort to get the entry numbers of the ordered events @@ -338,6 +339,7 @@ struct TrackSummaryReader : public TreeReader { // It's not necessary if you just need to read one file, but please do it to // synchronize events if multiple root files are read if (sortEvents) { + tree->SetEstimate(tree->GetEntries() + 1); entryNumbers.resize(tree->GetEntries()); tree->Draw("event_nr", "", "goff"); // Sort to get the entry numbers of the ordered events @@ -368,7 +370,8 @@ struct TrackSummaryReader : public TreeReader { std::vector<std::vector<double>>* outlierLayer = new std::vector<std::vector<double>>; std::vector<unsigned int>* nMajorityHits = new std::vector<unsigned int>; - std::vector<std::uint64_t>* majorityParticleId = new std::vector<std::uint64_t>; + std::vector<std::uint64_t>* majorityParticleId = + new std::vector<std::uint64_t>; std::vector<bool>* hasFittedParams = new std::vector<bool>; @@ -427,6 +430,7 @@ struct ParticleReader : public TreeReader { // It's not necessary if you just need to read one file, but please do it to // synchronize events if multiple root files are read if (sortEvents) { + tree->SetEstimate(tree->GetEntries() + 1); entryNumbers.resize(tree->GetEntries()); tree->Draw("event_id", "", "goff"); // Sort to get the entry numbers of the ordered events @@ -436,7 +440,8 @@ struct ParticleReader : public TreeReader { } // Get all the particles with requested event id - std::vector<ParticleInfo> getParticles(const std::uint32_t& eventNumber) const { + std::vector<ParticleInfo> getParticles( + const std::uint32_t& eventNumber) const { // Find the start entry and the batch size for this event std::string eventNumberStr = std::to_string(eventNumber); std::string findStartEntry = "event_id<" + eventNumberStr; From f2fbbdc737f846a00002a5ebf4c7375681e9c72f Mon Sep 17 00:00:00 2001 From: Paul Gessinger <paul.gessinger@cern.ch> Date: Tue, 19 Nov 2024 13:38:46 +0100 Subject: [PATCH 23/49] fix: User `localtime_r` instead of `localtime` (#3872) This popped up as a warning in the ATLAS build: ``` /builds/acts/acts-athena-ci/acts-install/include/Acts/Utilities/Logger.hpp:485:61: warning: Non reentrant function 'localtime' called. For threadsafe applications it is recommended to use the reentrant replacement function 'localtime_r'. [localtimeCalled] std::strftime(buffer, sizeof(buffer), m_format.c_str(), localtime(&t)); ``` --- Core/include/Acts/Utilities/Logger.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Core/include/Acts/Utilities/Logger.hpp b/Core/include/Acts/Utilities/Logger.hpp index 48cadb49ec4..83dc989ca85 100644 --- a/Core/include/Acts/Utilities/Logger.hpp +++ b/Core/include/Acts/Utilities/Logger.hpp @@ -482,7 +482,9 @@ class TimedOutputDecorator final : public OutputDecorator { char buffer[20]; time_t t{}; std::time(&t); - std::strftime(buffer, sizeof(buffer), m_format.c_str(), localtime(&t)); + struct tm tbuf {}; + std::strftime(buffer, sizeof(buffer), m_format.c_str(), + localtime_r(&t, &tbuf)); return buffer; } From 2cf38f7dda859e624a7f889c0bbcf7e227c49115 Mon Sep 17 00:00:00 2001 From: Ragansu Chakkappai <66349236+Ragansu@users.noreply.github.com> Date: Tue, 19 Nov 2024 15:27:41 +0100 Subject: [PATCH 24/49] refactor!: Rewrote the ambiguity solver for clarity and added Optional Hits Selector (#3805) The Score based solver needed one more feature to be more compatible with Athena, that is optional hit selector. The optional selector enables users to add optional function to the hit selection stage which was previously NOT possible. In order to do this I had to template the existing getCleanedOutTracks. This gave me an opportunity to rewrite the whole solver again for efficiency and clarity. Ragansu Chakkappai. --- .../ScoreBasedAmbiguityResolution.hpp | 67 +++-- .../ScoreBasedAmbiguityResolution.ipp | 251 +++++++++++++----- .../ScoreBasedAmbiguityResolution.cpp | 183 ------------- ...ScoreBasedAmbiguityResolutionAlgorithm.cpp | 10 +- .../ScoreBasedAmbiguityResolutionTest.cpp | 163 ++++++++---- 5 files changed, 348 insertions(+), 326 deletions(-) diff --git a/Core/include/Acts/AmbiguityResolution/ScoreBasedAmbiguityResolution.hpp b/Core/include/Acts/AmbiguityResolution/ScoreBasedAmbiguityResolution.hpp index fbccb611d1a..6ed24a71be8 100644 --- a/Core/include/Acts/AmbiguityResolution/ScoreBasedAmbiguityResolution.hpp +++ b/Core/include/Acts/AmbiguityResolution/ScoreBasedAmbiguityResolution.hpp @@ -12,6 +12,7 @@ #include "Acts/EventData/TrackContainer.hpp" #include "Acts/EventData/TrackContainerFrontendConcept.hpp" #include "Acts/EventData/TrackProxyConcept.hpp" +#include "Acts/EventData/TrackStateProxy.hpp" #include "Acts/Utilities/Delegate.hpp" #include "Acts/Utilities/Logger.hpp" @@ -81,11 +82,17 @@ class ScoreBasedAmbiguityResolution { std::size_t nSharedHits = 0; }; - /// @brief MeasurementInfo : contains the measurement ID and the detector ID - struct MeasurementInfo { - std::size_t iMeasurement = 0; - std::size_t detectorId = 0; - bool isOutlier = false; + enum class TrackStateTypes : std::uint8_t { + // A measurement not yet used in any other track + UnsharedHit, + // A measurement shared with another track + SharedHit, + // A hit that needs to be removed from the track + RejectedHit, + // An outlier, to be copied in case + Outlier, + // Other trackstate types to be copied in case + OtherTrackStateType }; /// @brief Configuration struct : contains the configuration for the ambiguity resolution. @@ -125,11 +132,17 @@ class ScoreBasedAmbiguityResolution { using OptionalScoreModifier = std::function<void(const track_proxy_t&, double&)>; + + using OptionalHitSelection = std::function<void( + const track_proxy_t&, + const typename track_proxy_t::ConstTrackStateProxy&, TrackStateTypes&)>; + std::vector<OptionalFilter> cuts = {}; std::vector<OptionalScoreModifier> weights = {}; /// applied only if useAmbiguityFunction is true std::vector<OptionalScoreModifier> scores = {}; + std::vector<OptionalHitSelection> hitSelections = {}; }; ScoreBasedAmbiguityResolution( @@ -141,16 +154,10 @@ class ScoreBasedAmbiguityResolution { /// Compute the initial state of the tracks. /// /// @param tracks is the input track container - /// @param sourceLinkHash is the source links - /// @param sourceLinkEquality is the equality function for the source links - /// @param trackFeaturesVectors is the trackFeatures map from detector ID to trackFeatures - /// @return a vector of the initial state of the tracks - template <TrackContainerFrontend track_container_t, - typename source_link_hash_t, typename source_link_equality_t> - std::vector<std::vector<MeasurementInfo>> computeInitialState( - const track_container_t& tracks, source_link_hash_t sourceLinkHash, - source_link_equality_t sourceLinkEquality, - std::vector<std::vector<TrackFeatures>>& trackFeaturesVectors) const; + /// @return trackFeaturesVectors is the trackFeatures map from detector ID to trackFeatures + template <TrackContainerFrontend track_container_t> + std::vector<std::vector<TrackFeatures>> computeInitialState( + const track_container_t& tracks) const; /// Compute the score of each track. /// @@ -182,29 +189,35 @@ class ScoreBasedAmbiguityResolution { /// that have a score below a certain threshold or not enough hits. /// /// @brief Remove tracks that are not good enough based on cuts + /// @param track is the input track /// @param trackScore is the score of each track - /// @param trackFeaturesVectors is the trackFeatures map for each track /// @param measurementsPerTrack is the list of measurements for each track + /// @param nTracksPerMeasurement is the number of tracks per measurement + /// @param optionalHitSelections is the optional hit selections to be applied /// @return a vector of IDs of the tracks we want to keep - std::vector<bool> getCleanedOutTracks( - const std::vector<double>& trackScore, - const std::vector<std::vector<TrackFeatures>>& trackFeaturesVectors, - const std::vector<std::vector<MeasurementInfo>>& measurementsPerTrack) - const; + template <TrackProxyConcept track_proxy_t> + bool getCleanedOutTracks( + const track_proxy_t& track, const double& trackScore, + const std::vector<std::size_t>& measurementsPerTrack, + const std::map<std::size_t, std::size_t>& nTracksPerMeasurement, + const std::vector<std::function< + void(const track_proxy_t&, + const typename track_proxy_t::ConstTrackStateProxy&, + TrackStateTypes&)>>& optionalHitSelections = {}) const; /// Remove tracks that are bad based on cuts and weighted scores. /// /// @brief Remove tracks that are not good enough /// @param tracks is the input track container - /// @param measurementsPerTrack is the list of measurements for each track - /// @param trackFeaturesVectors is the map of detector id to trackFeatures for each track + /// @param sourceLinkHash is the source links + /// @param sourceLinkEquality is the equality function for the source links /// @param optionalCuts is the optional cuts to be applied /// @return a vector of IDs of the tracks we want to keep - template <TrackContainerFrontend track_container_t> + template <TrackContainerFrontend track_container_t, + typename source_link_hash_t, typename source_link_equality_t> std::vector<int> solveAmbiguity( - const track_container_t& tracks, - const std::vector<std::vector<MeasurementInfo>>& measurementsPerTrack, - const std::vector<std::vector<TrackFeatures>>& trackFeaturesVectors, + const track_container_t& tracks, source_link_hash_t sourceLinkHash, + source_link_equality_t sourceLinkEquality, const OptionalCuts<typename track_container_t::ConstTrackProxy>& optionalCuts = {}) const; diff --git a/Core/include/Acts/AmbiguityResolution/ScoreBasedAmbiguityResolution.ipp b/Core/include/Acts/AmbiguityResolution/ScoreBasedAmbiguityResolution.ipp index 58742d7d11a..247b767dd3d 100644 --- a/Core/include/Acts/AmbiguityResolution/ScoreBasedAmbiguityResolution.ipp +++ b/Core/include/Acts/AmbiguityResolution/ScoreBasedAmbiguityResolution.ipp @@ -21,27 +21,17 @@ inline const Logger& ScoreBasedAmbiguityResolution::logger() const { return *m_logger; } -template <TrackContainerFrontend track_container_t, typename source_link_hash_t, - typename source_link_equality_t> -std::vector<std::vector<ScoreBasedAmbiguityResolution::MeasurementInfo>> +template <TrackContainerFrontend track_container_t> +std::vector<std::vector<ScoreBasedAmbiguityResolution::TrackFeatures>> ScoreBasedAmbiguityResolution::computeInitialState( - const track_container_t& tracks, source_link_hash_t sourceLinkHash, - source_link_equality_t sourceLinkEquality, - std::vector<std::vector<TrackFeatures>>& trackFeaturesVectors) const { - auto MeasurementIndexMap = - std::unordered_map<SourceLink, std::size_t, source_link_hash_t, - source_link_equality_t>(0, sourceLinkHash, - sourceLinkEquality); - - std::vector<std::vector<MeasurementInfo>> measurementsPerTrack; - measurementsPerTrack.reserve(tracks.size()); + const track_container_t& tracks) const { ACTS_VERBOSE("Starting to compute initial state"); + std::vector<std::vector<TrackFeatures>> trackFeaturesVectors; + trackFeaturesVectors.reserve(tracks.size()); for (const auto& track : tracks) { int numberOfDetectors = m_cfg.detectorConfigs.size(); - int numberOfTrackStates = track.nTrackStates(); - std::vector<MeasurementInfo> measurements; - measurements.reserve(numberOfTrackStates); + std::vector<TrackFeatures> trackFeaturesVector(numberOfDetectors); for (const auto& ts : track.trackStatesReversed()) { @@ -58,43 +48,25 @@ ScoreBasedAmbiguityResolution::computeInitialState( auto detectorId = volume_it->second; if (ts.typeFlags().test(Acts::TrackStateFlag::HoleFlag)) { - ACTS_DEBUG("Track state type is HoleFlag"); + ACTS_VERBOSE("Track state type is HoleFlag"); trackFeaturesVector[detectorId].nHoles++; } else if (ts.typeFlags().test(Acts::TrackStateFlag::OutlierFlag)) { - Acts::SourceLink sourceLink = ts.getUncalibratedSourceLink(); - ACTS_DEBUG("Track state type is OutlierFlag"); + ACTS_VERBOSE("Track state type is OutlierFlag"); trackFeaturesVector[detectorId].nOutliers++; - // assign a new measurement index if the source link was not seen yet - auto emplace = MeasurementIndexMap.try_emplace( - sourceLink, MeasurementIndexMap.size()); - - bool isOutliner = true; - - measurements.push_back({emplace.first->second, detectorId, isOutliner}); } else if (ts.typeFlags().test(Acts::TrackStateFlag::MeasurementFlag)) { - Acts::SourceLink sourceLink = ts.getUncalibratedSourceLink(); - ACTS_DEBUG("Track state type is MeasurementFlag"); + ACTS_VERBOSE("Track state type is MeasurementFlag"); if (ts.typeFlags().test(Acts::TrackStateFlag::SharedHitFlag)) { trackFeaturesVector[detectorId].nSharedHits++; } trackFeaturesVector[detectorId].nHits++; - - // assign a new measurement index if the source link was not seen yet - auto emplace = MeasurementIndexMap.try_emplace( - sourceLink, MeasurementIndexMap.size()); - - bool isoutliner = false; - - measurements.push_back({emplace.first->second, detectorId, isoutliner}); } } - measurementsPerTrack.push_back(std::move(measurements)); trackFeaturesVectors.push_back(std::move(trackFeaturesVector)); } - return measurementsPerTrack; + return trackFeaturesVectors; } template <TrackContainerFrontend track_container_t> @@ -363,12 +335,6 @@ std::vector<double> Acts::ScoreBasedAmbiguityResolution::ambiguityScore( // choosing a scaling factor based on the number of hits in a track per // detector. std::size_t nHits = trackFeatures.nHits; - if (detector.factorHits.size() < nHits) { - ACTS_WARNING("Detector " << detectorId - << " has not enough factorhits in the " - "detector.factorHits vector"); - continue; - } if (nHits > detector.maxHits) { score = score * (detector.maxHits - nHits + 1); // hits are good ! nHits = detector.maxHits; @@ -381,12 +347,6 @@ std::vector<double> Acts::ScoreBasedAmbiguityResolution::ambiguityScore( // choosing a scaling factor based on the number of holes in a track per // detector. std::size_t iHoles = trackFeatures.nHoles; - if (detector.factorHoles.size() < iHoles) { - ACTS_WARNING("Detector " << detectorId - << " has not enough factorholes in the " - "detector.factorHoles vector"); - continue; - } if (iHoles > detector.maxHoles) { score /= (iHoles - detector.maxHoles + 1); // holes are bad ! iHoles = detector.maxHoles; @@ -421,17 +381,20 @@ std::vector<double> Acts::ScoreBasedAmbiguityResolution::ambiguityScore( return trackScore; } -template <TrackContainerFrontend track_container_t> +template <TrackContainerFrontend track_container_t, typename source_link_hash_t, + typename source_link_equality_t> std::vector<int> Acts::ScoreBasedAmbiguityResolution::solveAmbiguity( - const track_container_t& tracks, - const std::vector<std::vector<MeasurementInfo>>& measurementsPerTrack, - const std::vector<std::vector<TrackFeatures>>& trackFeaturesVectors, + const track_container_t& tracks, source_link_hash_t sourceLinkHash, + source_link_equality_t sourceLinkEquality, const OptionalCuts<typename track_container_t::ConstTrackProxy>& optionalCuts) const { ACTS_INFO("Number of tracks before Ambiguty Resolution: " << tracks.size()); // vector of trackFeaturesVectors. where each trackFeaturesVector contains the // number of hits/hole/outliers for each detector in a track. + const std::vector<std::vector<TrackFeatures>> trackFeaturesVectors = + computeInitialState<track_container_t>(tracks); + std::vector<double> trackScore; trackScore.reserve(tracks.size()); if (m_cfg.useAmbiguityFunction) { @@ -440,14 +403,72 @@ std::vector<int> Acts::ScoreBasedAmbiguityResolution::solveAmbiguity( trackScore = simpleScore(tracks, trackFeaturesVectors, optionalCuts); } - std::vector<bool> cleanTracks = getCleanedOutTracks( - trackScore, trackFeaturesVectors, measurementsPerTrack); + auto MeasurementIndexMap = + std::unordered_map<SourceLink, std::size_t, source_link_hash_t, + source_link_equality_t>(0, sourceLinkHash, + sourceLinkEquality); + + std::vector<std::vector<std::size_t>> measurementsPerTrackVector; + std::map<std::size_t, std::size_t> nTracksPerMeasurement; + + // Stores tracks measurement into a vector or vectors + // (measurementsPerTrackVector) and counts the number of tracks per + // measurement.(nTracksPerMeasurement) + + for (const auto& track : tracks) { + std::vector<std::size_t> measurementsPerTrack; + for (const auto& ts : track.trackStatesReversed()) { + if (!ts.typeFlags().test(Acts::TrackStateFlag::OutlierFlag) && + !ts.typeFlags().test(Acts::TrackStateFlag::MeasurementFlag)) { + continue; + } + Acts::SourceLink sourceLink = ts.getUncalibratedSourceLink(); + // assign a new measurement index if the source link was not seen yet + auto emplace = MeasurementIndexMap.try_emplace( + sourceLink, MeasurementIndexMap.size()); + std::size_t iMeasurement = emplace.first->second; + measurementsPerTrack.push_back(iMeasurement); + if (nTracksPerMeasurement.find(iMeasurement) == + nTracksPerMeasurement.end()) { + nTracksPerMeasurement[iMeasurement] = 0; + } + nTracksPerMeasurement[iMeasurement]++; + } + measurementsPerTrackVector.push_back(std::move(measurementsPerTrack)); + } std::vector<int> goodTracks; int cleanTrackIndex = 0; - std::size_t iTrack = 0; - for (const auto& track : tracks) { - if (cleanTracks[iTrack]) { + + auto optionalHitSelections = optionalCuts.hitSelections; + + // Loop over all the tracks in the container + // For each track, check if the track has too many shared hits to be accepted. + // If the track is accepted, remove bad hits and check if the track has a + // score higher than the minimum score for shared tracks. + // If the track is good, add it to the goodTracks vector. + for (std::size_t iTrack = 0; const auto& track : tracks) { + // Check if the track has too many shared hits to be accepted. + auto trackFeaturesVector = trackFeaturesVectors.at(iTrack); + bool trkCouldBeAccepted = true; + for (std::size_t detectorId = 0; detectorId < m_cfg.detectorConfigs.size(); + detectorId++) { + auto detector = m_cfg.detectorConfigs.at(detectorId); + if (trackFeaturesVector[detectorId].nSharedHits > + detector.maxSharedHits) { + trkCouldBeAccepted = false; + break; + } + } + if (!trkCouldBeAccepted) { + iTrack++; + continue; + } + + trkCouldBeAccepted = getCleanedOutTracks( + track, trackScore[iTrack], measurementsPerTrackVector[iTrack], + nTracksPerMeasurement, optionalHitSelections); + if (trkCouldBeAccepted) { cleanTrackIndex++; if (trackScore[iTrack] >= m_cfg.minScore) { goodTracks.push_back(track.index()); @@ -455,10 +476,120 @@ std::vector<int> Acts::ScoreBasedAmbiguityResolution::solveAmbiguity( } iTrack++; } - ACTS_VERBOSE("Number of clean tracks: " << cleanTrackIndex); + ACTS_INFO("Number of clean tracks: " << cleanTrackIndex); ACTS_VERBOSE("Min score: " << m_cfg.minScore); ACTS_INFO("Number of Good tracks: " << goodTracks.size()); return goodTracks; } +template <TrackProxyConcept track_proxy_t> +bool Acts::ScoreBasedAmbiguityResolution::getCleanedOutTracks( + const track_proxy_t& track, const double& trackScore, + const std::vector<std::size_t>& measurementsPerTrack, + const std::map<std::size_t, std::size_t>& nTracksPerMeasurement, + const std::vector< + std::function<void(const track_proxy_t&, + const typename track_proxy_t::ConstTrackStateProxy&, + TrackStateTypes&)>>& optionalHitSelections) const { + // For tracks with shared hits, we need to check and remove bad hits + + std::vector<TrackStateTypes> trackStateTypes; + // Loop over all measurements of the track and for each hit a + // trackStateTypes is assigned. + for (std::size_t index = 0; const auto& ts : track.trackStatesReversed()) { + if (ts.typeFlags().test(Acts::TrackStateFlag::OutlierFlag) || + ts.typeFlags().test(Acts::TrackStateFlag::MeasurementFlag)) { + std::size_t iMeasurement = measurementsPerTrack[index]; + auto it = nTracksPerMeasurement.find(iMeasurement); + if (it == nTracksPerMeasurement.end()) { + trackStateTypes.push_back(TrackStateTypes::OtherTrackStateType); + index++; + continue; + } + + std::size_t nTracksShared = it->second; + auto isoutliner = ts.typeFlags().test(Acts::TrackStateFlag::OutlierFlag); + + if (isoutliner) { + ACTS_VERBOSE("Measurement is outlier on a fitter track, copy it over"); + trackStateTypes.push_back(TrackStateTypes::Outlier); + continue; + } + if (nTracksShared == 1) { + ACTS_VERBOSE("Measurement is not shared, copy it over"); + + trackStateTypes.push_back(TrackStateTypes::UnsharedHit); + continue; + } else if (nTracksShared > 1) { + ACTS_VERBOSE("Measurement is shared, copy it over"); + trackStateTypes.push_back(TrackStateTypes::SharedHit); + continue; + } + } + } + std::vector<std::size_t> newMeasurementsPerTrack; + std::size_t measurement = 0; + std::size_t nshared = 0; + + // Loop over all measurements of the track and process them according to the + // trackStateTypes and other conditions. + // Good measurements are copied to the newMeasurementsPerTrack vector. + for (std::size_t index = 0; auto ts : track.trackStatesReversed()) { + if (ts.typeFlags().test(Acts::TrackStateFlag::OutlierFlag) || + ts.typeFlags().test(Acts::TrackStateFlag::MeasurementFlag)) { + if (!ts.hasReferenceSurface()) { + ACTS_DEBUG("Track state has no reference surface"); + continue; + } + measurement = measurementsPerTrack[index]; + + auto it = nTracksPerMeasurement.find(measurement); + if (it == nTracksPerMeasurement.end()) { + index++; + continue; + } + auto nTracksShared = it->second; + + // Loop over all optionalHitSelections and apply them to trackStateType of + // the TrackState. + + for (const auto& hitSelection : optionalHitSelections) { + hitSelection(track, ts, trackStateTypes[index]); + } + + if (trackStateTypes[index] == TrackStateTypes::RejectedHit) { + ACTS_DEBUG("Dropping rejected hit"); + } else if (trackStateTypes[index] != TrackStateTypes::SharedHit) { + ACTS_DEBUG("Good TSOS, copy hit"); + newMeasurementsPerTrack.push_back(measurement); + + // a counter called nshared is used to keep track of the number of + // shared hits accepted. + } else if (nshared >= m_cfg.maxShared) { + ACTS_DEBUG("Too many shared hit, drop it"); + } + // If the track is shared, the hit is only accepted if the track has + // score higher than the minimum score for shared tracks. + else { + ACTS_DEBUG("Try to recover shared hit "); + if (nTracksShared <= m_cfg.maxSharedTracksPerMeasurement && + trackScore > m_cfg.minScoreSharedTracks) { + ACTS_DEBUG("Accepted hit shared with " << nTracksShared << " tracks"); + newMeasurementsPerTrack.push_back(measurement); + nshared++; + } else { + ACTS_DEBUG("Rejected hit shared with " << nTracksShared << " tracks"); + } + } + index++; + } + } + // Check if the track has enough hits to be accepted. + if (newMeasurementsPerTrack.size() < 3) { + return false; + } else { + return true; + } +} + } // namespace Acts diff --git a/Core/src/AmbiguityResolution/ScoreBasedAmbiguityResolution.cpp b/Core/src/AmbiguityResolution/ScoreBasedAmbiguityResolution.cpp index 4dcbb5071d4..c7e47f41046 100644 --- a/Core/src/AmbiguityResolution/ScoreBasedAmbiguityResolution.cpp +++ b/Core/src/AmbiguityResolution/ScoreBasedAmbiguityResolution.cpp @@ -7,186 +7,3 @@ // file, You can obtain one at https://mozilla.org/MPL/2.0/. #include "Acts/AmbiguityResolution/ScoreBasedAmbiguityResolution.hpp" - -#include "Acts/EventData/SourceLink.hpp" - -#include <stdexcept> - -std::vector<bool> Acts::ScoreBasedAmbiguityResolution::getCleanedOutTracks( - const std::vector<double>& trackScore, - const std::vector<std::vector<TrackFeatures>>& trackFeaturesVectors, - const std::vector<std::vector<MeasurementInfo>>& measurementsPerTrack) - const { - std::vector<bool> cleanTracks(measurementsPerTrack.size(), false); - - ACTS_VERBOSE("Cleaning tracks"); - - if (trackScore.size() != measurementsPerTrack.size()) { - throw std::invalid_argument( - "Track score and measurementsPerTrack size mismatch"); - } - - std::size_t numberOfTracks = measurementsPerTrack.size(); - ACTS_DEBUG("Number of tracks: " << numberOfTracks); - - boost::container::flat_map<std::size_t, - boost::container::flat_set<std::size_t>> - tracksPerMeasurement; - - // Removes bad tracks and counts computes the vector of tracks per - // measurement. - for (std::size_t iTrack = 0; iTrack < numberOfTracks; ++iTrack) { - if (trackScore[iTrack] <= 0) { - continue; - } - for (auto measurementObjects : measurementsPerTrack[iTrack]) { - auto iMeasurement = measurementObjects.iMeasurement; - tracksPerMeasurement[iMeasurement].insert(iTrack); - } - } - - enum TrackStateTypes { - // A measurement not yet used in any other track - UnsharedHit = 1, - // A measurement shared with another track - SharedHit = 2, - // A hit that needs to be removed from the track - RejectedHit = 3, - // an outlier, to be copied in case - Outlier = 4, - // other trackstate types to be copied in case - OtherTrackStateType = 5 - }; - - std::vector<std::vector<std::size_t>> newMeasurements; - // Loop over all tracks in the track container - for (std::size_t iTrack = 0; iTrack < numberOfTracks; ++iTrack) { - double track_score = trackScore[iTrack]; - ACTS_DEBUG("Track score: " << track_score); - - if (track_score <= 0) { - ACTS_DEBUG("Track " << iTrack << " could not be accepted - low score"); - continue; - } - - const auto& trackFeaturesVector = trackFeaturesVectors.at(iTrack); - - bool trkCouldBeAccepted = true; - - // For tracks with shared hits, we need to check and remove bad hits - - std::vector<int> trackStateTypes(measurementsPerTrack[iTrack].size(), - OtherTrackStateType); - int index = 0; - - // Loop over all measurements of the track and for each hit a - // trackStateTypes is assigned. - for (const auto& measurementObjects : measurementsPerTrack[iTrack]) { - auto iMeasurement = measurementObjects.iMeasurement; - auto isoutliner = measurementObjects.isOutlier; - auto detectorId = measurementObjects.detectorId; - - auto detector = m_cfg.detectorConfigs.at(detectorId); - if (isoutliner) { - ACTS_VERBOSE("Measurement is outlier on a fitter track, copy it over"); - trackStateTypes[index] = Outlier; - index++; - continue; - } - if (tracksPerMeasurement[iMeasurement].size() == 1) { - ACTS_VERBOSE("Measurement is not shared, copy it over"); - - trackStateTypes[index] = UnsharedHit; - - index++; - continue; - } - if (tracksPerMeasurement[iMeasurement].size() > 1) { - ACTS_VERBOSE("Measurement is shared, copy it over"); - - if (detector.sharedHitsFlag == true) { - ACTS_VERBOSE("Measurement is shared, Reject it"); - trackStateTypes[index] = RejectedHit; - index++; - continue; - } - - trackStateTypes[index] = SharedHit; - - index++; - continue; - } - } - - std::vector<std::size_t> newMeasurementsPerTrack; - std::size_t measurement = 0; - std::size_t nshared = 0; - - // Loop over all measurements of the track and process them according to the - // trackStateTypes and other conditions. - // Good measurements are copied to the newMeasurementsPerTrack vector. - for (std::size_t i = 0; i < trackStateTypes.size(); i++) { - auto& measurementObjects = measurementsPerTrack[iTrack][i]; - measurement = measurementObjects.iMeasurement; - - if (trackStateTypes[i] == RejectedHit) { - ACTS_DEBUG("Dropping rejected hit"); - } else if (trackStateTypes[i] != SharedHit) { - ACTS_DEBUG("Good TSOS, copy hit"); - newMeasurementsPerTrack.push_back(measurement); - - // a counter called nshared is used to keep track of the number of - // shared hits accepted. - } else if (nshared >= m_cfg.maxShared) { - ACTS_DEBUG("Too many shared hit, drop it"); - } - // If the track is shared, the hit is only accepted if the track has score - // higher than the minimum score for shared tracks. - else { - ACTS_DEBUG("Try to recover shared hit "); - if (tracksPerMeasurement[measurement].size() < - m_cfg.maxSharedTracksPerMeasurement && - track_score > m_cfg.minScoreSharedTracks) { - ACTS_DEBUG("Accepted hit shared with " - << tracksPerMeasurement[measurement].size() << " tracks"); - newMeasurementsPerTrack.push_back(measurement); - nshared++; - } else { - ACTS_DEBUG("Rejected hit shared with " - << tracksPerMeasurement[measurement].size() << " tracks"); - } - } - } - - // Check if the track has enough hits to be accepted. - if (newMeasurementsPerTrack.size() < 3) { - trkCouldBeAccepted = false; - ACTS_DEBUG(std::endl - << "Track " << iTrack - << " could not be accepted - not enough hits"); - ACTS_DEBUG("Number of hits: " << measurementsPerTrack[iTrack].size()); - ACTS_DEBUG("Number of good hits: " << newMeasurementsPerTrack.size()); - continue; - } - - // Check if the track has too many shared hits to be accepted. - for (std::size_t detectorId = 0; detectorId < m_cfg.detectorConfigs.size(); - detectorId++) { - auto detector = m_cfg.detectorConfigs.at(detectorId); - if (trackFeaturesVector[detectorId].nSharedHits > - detector.maxSharedHits) { - trkCouldBeAccepted = false; - break; - } - } - - if (trkCouldBeAccepted) { - cleanTracks[iTrack] = true; - newMeasurements.push_back(newMeasurementsPerTrack); - ACTS_VERBOSE("Track " << iTrack << " is accepted"); - continue; - } - } - - return cleanTracks; -} diff --git a/Examples/Algorithms/AmbiguityResolution/src/ScoreBasedAmbiguityResolutionAlgorithm.cpp b/Examples/Algorithms/AmbiguityResolution/src/ScoreBasedAmbiguityResolutionAlgorithm.cpp index bd3584fa4b2..b1a6e251dba 100644 --- a/Examples/Algorithms/AmbiguityResolution/src/ScoreBasedAmbiguityResolutionAlgorithm.cpp +++ b/Examples/Algorithms/AmbiguityResolution/src/ScoreBasedAmbiguityResolutionAlgorithm.cpp @@ -116,19 +116,11 @@ ActsExamples::ScoreBasedAmbiguityResolutionAlgorithm::execute( const auto& tracks = m_inputTracks(ctx); // Read input data ACTS_VERBOSE("Number of input tracks: " << tracks.size()); - std::vector<std::vector<Acts::ScoreBasedAmbiguityResolution::MeasurementInfo>> - measurementsPerTracks; - - std::vector<std::vector<Acts::ScoreBasedAmbiguityResolution::TrackFeatures>> - trackFeaturesVectors; - measurementsPerTracks = m_ambi.computeInitialState( - tracks, &sourceLinkHash, &sourceLinkEquality, trackFeaturesVectors); - Acts::ScoreBasedAmbiguityResolution::OptionalCuts<ConstTrackProxy> optionalCuts; optionalCuts.cuts.push_back(doubleHolesFilter); std::vector<int> goodTracks = m_ambi.solveAmbiguity( - tracks, measurementsPerTracks, trackFeaturesVectors, optionalCuts); + tracks, &sourceLinkHash, &sourceLinkEquality, optionalCuts); // Prepare the output track collection from the IDs TrackContainer solvedTracks{std::make_shared<Acts::VectorTrackContainer>(), std::make_shared<Acts::VectorMultiTrajectory>()}; diff --git a/Tests/UnitTests/Core/AmbiguityResolution/ScoreBasedAmbiguityResolutionTest.cpp b/Tests/UnitTests/Core/AmbiguityResolution/ScoreBasedAmbiguityResolutionTest.cpp index 568e817031a..55beab4ca2f 100644 --- a/Tests/UnitTests/Core/AmbiguityResolution/ScoreBasedAmbiguityResolutionTest.cpp +++ b/Tests/UnitTests/Core/AmbiguityResolution/ScoreBasedAmbiguityResolutionTest.cpp @@ -18,10 +18,7 @@ #include "Acts/EventData/VectorTrackContainer.hpp" #include "Acts/EventData/detail/TestSourceLink.hpp" #include "Acts/EventData/detail/TestTrackState.hpp" -#include "Acts/Geometry/GeometryContext.hpp" -#include "Acts/Surfaces/PerigeeSurface.hpp" -#include "Acts/TrackFinding/TrackSelector.hpp" -#include "Acts/Utilities/CalibrationContext.hpp" +#include "Acts/Utilities/TrackHelpers.hpp" #include <map> @@ -30,7 +27,6 @@ using Acts::MultiTrajectoryTraits::IndexType; namespace Acts::Test { BOOST_AUTO_TEST_SUITE(ScoreBasedAmbiguityResolutionTest) -using MeasurementInfo = ScoreBasedAmbiguityResolution::MeasurementInfo; // Test fixture for ScoreBasedAmbiguityResolution struct Fixture { @@ -65,64 +61,137 @@ struct Fixture { ~Fixture() = default; }; -// Helper function to create a sample input for getCleanedOutTracks -std::vector<std::vector<MeasurementInfo>> createSampleInput() { - Fixture fixture; - std::vector<std::pair<std::size_t, std::vector<std::size_t>>> trackVolumes = { - {0, {19, 18, 18, 18, 10, 10, 10, 10, 10, 10, 10, 10, 10}}, - {1, {19, 18, 18, 18, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}}, - {2, {13, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}}, - {3, {13, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}}, - {4, {19, 18, 18, 18, 10, 10, 10, 10, 10, 10, 10, 10, 10}}}; - - std::vector<std::vector<MeasurementInfo>> measurementsPerTrack; - // Add sample measurements for each track - - for (const auto& trackVolume : trackVolumes) { - std::vector<MeasurementInfo> measurements; - for (std::size_t i = 0; i < trackVolume.second.size(); ++i) { - std::size_t detectorID = fixture.config.volumeMap[trackVolume.second[i]]; - measurements.push_back({i + 2, detectorID, false}); +template <typename TrackContainer, typename FlagsPerState> +auto createTestTrack(TrackContainer& tc, const FlagsPerState& flagsPerState) { + auto t = tc.makeTrack(); + for (const auto& flags : flagsPerState) { + auto ts = t.appendTrackState(); + for (auto f : flags) { + ts.typeFlags().set(f); } - measurementsPerTrack.push_back(measurements); } - return measurementsPerTrack; + calculateTrackQuantities(t); + + return t; } -BOOST_FIXTURE_TEST_CASE(GetCleanedOutTracksTest, Fixture) { +BOOST_FIXTURE_TEST_CASE(ComputeInitialStateTest, Fixture) { Fixture fixture; // Create an instance of ScoreBasedAmbiguityResolution ScoreBasedAmbiguityResolution tester(fixture.config); - // Create sample input - std::vector<std::vector<MeasurementInfo>> measurementsPerTrack = - createSampleInput(); + VectorTrackContainer mutVtc; + VectorMultiTrajectory mutMtj; - std::vector<double> TrackSore; - for (std::size_t i = 0; i < measurementsPerTrack.size(); i++) { - TrackSore.push_back(60 + 40 * i); - } - std::vector<std::vector<TrackFeatures>> trackFeaturesVectors = { - {{0, 14, 0, 0}, {0, 2, 0, 0}}, - {{0, 15, 0, 0}, {0, 2, 0, 0}}, - {{0, 17, 0, 0}, {0, 2, 0, 0}}, - {{0, 18, 0, 0}, {0, 2, 0, 0}}, - {{0, 14, 0, 0}, {0, 3, 0, 0}}}; + TrackContainer mutTc{mutVtc, mutMtj}; + static_assert(!mutTc.ReadOnly, "Unexpectedly read only"); + + auto t = createTestTrack(mutTc, std::vector<std::vector<TrackStateFlag>>{ + {MeasurementFlag}, + {OutlierFlag}, + {MeasurementFlag, SharedHitFlag}, + {HoleFlag}, + {OutlierFlag}, + {HoleFlag}, + {MeasurementFlag, SharedHitFlag}, + {OutlierFlag}, + }); + + BOOST_CHECK_EQUAL(t.nHoles(), 2); + BOOST_CHECK_EQUAL(t.nMeasurements(), 3); + BOOST_CHECK_EQUAL(t.nOutliers(), 3); + BOOST_CHECK_EQUAL(t.nSharedHits(), 2); + + ConstVectorTrackContainer vtc{std::move(mutVtc)}; + ConstVectorMultiTrajectory mtj{std::move(mutMtj)}; + + TrackContainer ctc{vtc, mtj}; + + std::vector<std::vector<TrackFeatures>> trackFeaturesVectors; + trackFeaturesVectors = tester.computeInitialState(ctc); + + BOOST_CHECK_EQUAL(trackFeaturesVectors.size(), ctc.size()); + + std::vector<double> trackScores; + trackScores = tester.simpleScore(ctc, trackFeaturesVectors); - // Call the function under testBOOST_FIXTURE_TEST_CASE - std::vector<bool> cleanTracks = tester.getCleanedOutTracks( - TrackSore, trackFeaturesVectors, measurementsPerTrack); + BOOST_CHECK_EQUAL(trackScores.size(), ctc.size()); + + trackScores = tester.ambiguityScore(ctc, trackFeaturesVectors); + + BOOST_CHECK_EQUAL(trackScores.size(), ctc.size()); // Assert the expected results - BOOST_CHECK_EQUAL(measurementsPerTrack.size(), 5); +} - for (std::size_t i = 0; i < cleanTracks.size(); i++) { - auto score = TrackSore[i]; - if (cleanTracks[i]) { - BOOST_CHECK_GT(score, fixture.config.minScoreSharedTracks); +BOOST_FIXTURE_TEST_CASE(GetCleanedOutTracksTest, Fixture) { + Fixture fixture; + // Create an instance of ScoreBasedAmbiguityResolution + ScoreBasedAmbiguityResolution tester(fixture.config); + + VectorTrackContainer mutVtc; + VectorMultiTrajectory mutMtj; + + TrackContainer mutTc{mutVtc, mutMtj}; + static_assert(!mutTc.ReadOnly, "Unexpectedly read only"); + + auto t = createTestTrack(mutTc, std::vector<std::vector<TrackStateFlag>>{ + {MeasurementFlag}, + {OutlierFlag}, + {MeasurementFlag, SharedHitFlag}, + {HoleFlag}, + {OutlierFlag}, + {HoleFlag}, + {MeasurementFlag, SharedHitFlag}, + {OutlierFlag}, + }); + + BOOST_CHECK_EQUAL(t.nHoles(), 2); + BOOST_CHECK_EQUAL(t.nMeasurements(), 3); + BOOST_CHECK_EQUAL(t.nOutliers(), 3); + BOOST_CHECK_EQUAL(t.nSharedHits(), 2); + + ConstVectorTrackContainer vtc{std::move(mutVtc)}; + ConstVectorMultiTrajectory mtj{std::move(mutMtj)}; + + TrackContainer ctc{vtc, mtj}; + + std::vector<std::vector<TrackFeatures>> trackFeaturesVectors; + std::vector<std::vector<std::size_t>> measurementsPerTrackVector; + std::map<std::size_t, std::size_t> nTracksPerMeasurement; + + trackFeaturesVectors = tester.computeInitialState(ctc); + + BOOST_CHECK_EQUAL(trackFeaturesVectors.size(), ctc.size()); + + for (std::size_t iMeasurement = 1; const auto& track : ctc) { + std::vector<std::size_t> measurementsPerTrack; + for (auto ts : track.trackStatesReversed()) { + if (ts.typeFlags().test(Acts::TrackStateFlag::OutlierFlag) || + ts.typeFlags().test(Acts::TrackStateFlag::MeasurementFlag)) { + measurementsPerTrack.push_back(iMeasurement); + if (nTracksPerMeasurement.find(iMeasurement) == + nTracksPerMeasurement.end()) { + nTracksPerMeasurement[iMeasurement] = 0; + } + nTracksPerMeasurement[iMeasurement]++; + } + + iMeasurement++; } + measurementsPerTrackVector.push_back(std::move(measurementsPerTrack)); } + + auto trackScore = tester.ambiguityScore(ctc, trackFeaturesVectors); + + const auto& track = ctc.getTrack(0); + std::size_t iTrack = track.index(); + bool accepted = tester.getCleanedOutTracks(track, trackScore[iTrack], + measurementsPerTrackVector[iTrack], + nTracksPerMeasurement); + + BOOST_CHECK_EQUAL(accepted, false); } BOOST_AUTO_TEST_SUITE_END() From 90c9e92b64f4507d1be246631fe393ed0e87f1dc Mon Sep 17 00:00:00 2001 From: Andreas Stefl <stefl.andreas@gmail.com> Date: Wed, 20 Nov 2024 11:16:25 +0100 Subject: [PATCH 25/49] refactor!: Remove `bFieldMin` from `estimateTrackParamsFromSeed` (#3863) This parameter does not have any benefit for the implementation or interface. The user might have checked or guarantees that the magnetic field is strong enough. At the same time we will check for `NaN`s at the end. For this reason I propose to remove this parameter to keep the interface clean and concise. --- .../Seeding/EstimateTrackParamsFromSeed.hpp | 19 ++----------------- .../src/TrackParamsEstimationAlgorithm.cpp | 8 +++++++- .../src/PrototracksToParameters.cpp | 15 ++++++++++----- .../TruthTracking/ParticleSmearing.cpp | 6 ------ .../EstimateTrackParamsFromSeedTest.cpp | 2 +- 5 files changed, 20 insertions(+), 30 deletions(-) diff --git a/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp b/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp index 5d6b4dbb97c..c59a55ad533 100644 --- a/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp +++ b/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp @@ -18,7 +18,6 @@ #include <array> #include <cmath> -#include <iostream> #include <iterator> #include <optional> #include <stdexcept> @@ -126,8 +125,6 @@ FreeVector estimateTrackParamsFromSeed(spacepoint_range_t spRange, /// @param surface is the surface of the bottom space point. The estimated bound /// track parameters will be represented also at this surface /// @param bField is the magnetic field vector -/// @param bFieldMin is the minimum magnetic field required to trigger the -/// estimation of q/pt /// @param logger A logger instance /// /// @return optional bound parameters @@ -135,7 +132,7 @@ template <typename spacepoint_iterator_t> std::optional<BoundVector> estimateTrackParamsFromSeed( const GeometryContext& gctx, spacepoint_iterator_t spBegin, spacepoint_iterator_t spEnd, const Surface& surface, const Vector3& bField, - ActsScalar bFieldMin, const Acts::Logger& logger = getDummyLogger()) { + const Acts::Logger& logger = getDummyLogger()) { // Check the number of provided space points std::size_t numSP = std::distance(spBegin, spEnd); if (numSP != 3) { @@ -143,19 +140,6 @@ std::optional<BoundVector> estimateTrackParamsFromSeed( return std::nullopt; } - // Convert bField to Tesla - ActsScalar bFieldStrength = bField.norm(); - // Check if magnetic field is too small - if (bFieldStrength < bFieldMin) { - // @todo shall we use straight-line estimation and use default q/pt in such - // case? - ACTS_WARNING( - "The magnetic field at the bottom space point: B = " - << bFieldStrength / UnitConstants::T << " T is smaller than |B|_min = " - << bFieldMin / UnitConstants::T << " T. Estimation is not performed."); - return std::nullopt; - } - // The global positions of the bottom, middle and space points std::array<Vector3, 3> spGlobalPositions = {Vector3::Zero(), Vector3::Zero(), Vector3::Zero()}; @@ -252,6 +236,7 @@ std::optional<BoundVector> estimateTrackParamsFromSeed( params[eBoundLoc1] = bottomLocalPos.y(); params[eBoundTime] = spGlobalTimes[0].value_or(0.); + ActsScalar bFieldStrength = bField.norm(); // The estimated q/pt in [GeV/c]^-1 (note that the pt is the projection of // momentum on the transverse plane of the new frame) ActsScalar qOverPt = sign / (bFieldStrength * R); diff --git a/Examples/Algorithms/TrackFinding/src/TrackParamsEstimationAlgorithm.cpp b/Examples/Algorithms/TrackFinding/src/TrackParamsEstimationAlgorithm.cpp index c8a30c7147d..dfb0269a56d 100644 --- a/Examples/Algorithms/TrackFinding/src/TrackParamsEstimationAlgorithm.cpp +++ b/Examples/Algorithms/TrackFinding/src/TrackParamsEstimationAlgorithm.cpp @@ -112,10 +112,16 @@ ProcessCode TrackParamsEstimationAlgorithm::execute( } Acts::Vector3 field = *fieldRes; + if (field.norm() < m_cfg.bFieldMin) { + ACTS_WARNING("Magnetic field at seed " << iseed << " is too small " + << field.norm()); + continue; + } + // Estimate the track parameters from seed auto optParams = Acts::estimateTrackParamsFromSeed( ctx.geoContext, seed.sp().begin(), seed.sp().end(), *surface, field, - m_cfg.bFieldMin, logger()); + logger()); if (!optParams.has_value()) { ACTS_WARNING("Estimation of track parameters for seed " << iseed << " failed."); diff --git a/Examples/Algorithms/TrackFindingExaTrkX/src/PrototracksToParameters.cpp b/Examples/Algorithms/TrackFindingExaTrkX/src/PrototracksToParameters.cpp index c8d34f71bd2..9ffe49ae460 100644 --- a/Examples/Algorithms/TrackFindingExaTrkX/src/PrototracksToParameters.cpp +++ b/Examples/Algorithms/TrackFindingExaTrkX/src/PrototracksToParameters.cpp @@ -154,16 +154,21 @@ ProcessCode PrototracksToParameters::execute( .geometryId(); const auto &surface = *m_cfg.geometry->findSurface(geoId); - auto field = m_cfg.magneticField->getField( + auto fieldRes = m_cfg.magneticField->getField( {bottomSP->x(), bottomSP->y(), bottomSP->z()}, bCache); - if (!field.ok()) { - ACTS_ERROR("Field lookup error: " << field.error()); + if (!fieldRes.ok()) { + ACTS_ERROR("Field lookup error: " << fieldRes.error()); return ProcessCode::ABORT; } + Acts::Vector3 field = *fieldRes; + + if (field.norm() < m_cfg.bFieldMin) { + ACTS_WARNING("Magnetic field at seed is too small " << field.norm()); + continue; + } auto pars = Acts::estimateTrackParamsFromSeed( - ctx.geoContext, seed.sp().begin(), seed.sp().end(), surface, *field, - m_cfg.bFieldMin); + ctx.geoContext, seed.sp().begin(), seed.sp().end(), surface, field); if (not pars) { ACTS_WARNING("Skip track because of bad params"); diff --git a/Examples/Algorithms/TruthTracking/ActsExamples/TruthTracking/ParticleSmearing.cpp b/Examples/Algorithms/TruthTracking/ActsExamples/TruthTracking/ParticleSmearing.cpp index cfc62ab9da9..4c09134ef20 100644 --- a/Examples/Algorithms/TruthTracking/ActsExamples/TruthTracking/ParticleSmearing.cpp +++ b/Examples/Algorithms/TruthTracking/ActsExamples/TruthTracking/ParticleSmearing.cpp @@ -10,21 +10,15 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/TrackParametrization.hpp" -#include "Acts/EventData/ParticleHypothesis.hpp" #include "Acts/Seeding/EstimateTrackParamsFromSeed.hpp" #include "Acts/Surfaces/PerigeeSurface.hpp" #include "Acts/Surfaces/Surface.hpp" -#include "Acts/Utilities/Helpers.hpp" #include "Acts/Utilities/detail/periodic.hpp" #include "ActsExamples/EventData/SimParticle.hpp" #include "ActsExamples/EventData/Track.hpp" #include "ActsExamples/Framework/AlgorithmContext.hpp" #include "ActsExamples/Framework/RandomNumbers.hpp" -#include "ActsExamples/Utilities/GroupBy.hpp" -#include "ActsExamples/Utilities/Range.hpp" -#include "ActsFatras/EventData/Particle.hpp" -#include <algorithm> #include <cmath> #include <ostream> #include <random> diff --git a/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp b/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp index e39a6a1a900..9aab6c1c70b 100644 --- a/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp +++ b/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp @@ -176,7 +176,7 @@ BOOST_AUTO_TEST_CASE(trackparameters_estimation_test) { // Test the bound track parameters estimator auto fullParamsOpt = estimateTrackParamsFromSeed( geoCtx, spacePointPtrs.begin(), spacePointPtrs.end(), - *bottomSurface, bField, 0.1_T, *logger); + *bottomSurface, bField, *logger); BOOST_REQUIRE(fullParamsOpt.has_value()); const auto& estFullParams = fullParamsOpt.value(); BOOST_TEST_INFO( From ea831bf234c7847844b9168b940cfa008c224610 Mon Sep 17 00:00:00 2001 From: Andreas Stefl <stefl.andreas@gmail.com> Date: Wed, 20 Nov 2024 13:04:44 +0100 Subject: [PATCH 26/49] refactor: Digitization cleanup in Examples (#3865) Some cleanup of our digitization code in Examples Pulled out of https://github.com/acts-project/acts/pull/3838 --- .../Digitization/DigitizationAlgorithm.hpp | 84 +++++++--- .../Digitization/DigitizationConfig.hpp | 155 +----------------- .../Digitization/DigitizationConfigurator.hpp | 13 +- .../DigitizationCoordinatesConverter.hpp | 8 +- .../Digitization/GeometricConfig.hpp | 98 +++++++++++ .../Digitization/ModuleClusters.hpp | 3 +- .../ActsExamples/Digitization/Smearers.hpp | 3 - .../src/DigitizationAlgorithm.cpp | 82 ++++----- .../Digitization/src/DigitizationConfig.cpp | 56 +------ .../src/DigitizationConfigurator.cpp | 4 +- .../src/DigitizationCoordinatesConverter.cpp | 17 +- .../ActsExamples/EventData/Cluster.hpp | 2 +- .../Io/Json/JsonDigitizationConfig.hpp | 3 - .../Io/Root/RootMeasurementWriter.hpp | 7 - .../Io/Root/src/RootMeasurementWriter.cpp | 3 - .../Python/python/acts/examples/simulation.py | 9 +- Examples/Python/src/Digitization.cpp | 46 +++--- Examples/Python/src/Output.cpp | 13 +- Examples/Python/tests/conftest.py | 4 +- Examples/Python/tests/test_detectors.py | 4 +- Examples/Python/tests/test_writer.py | 1 - .../Scripts/Python/digitization_config.py | 6 +- 22 files changed, 248 insertions(+), 373 deletions(-) create mode 100644 Examples/Algorithms/Digitization/include/ActsExamples/Digitization/GeometricConfig.hpp diff --git a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationAlgorithm.hpp b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationAlgorithm.hpp index fd8937bd300..331408faa9a 100644 --- a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationAlgorithm.hpp +++ b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationAlgorithm.hpp @@ -8,18 +8,14 @@ #pragma once -#include "Acts/Definitions/Algebra.hpp" -#include "Acts/Definitions/TrackParametrization.hpp" -#include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Geometry/GeometryHierarchyMap.hpp" #include "Acts/Utilities/Logger.hpp" #include "ActsExamples/Digitization/DigitizationConfig.hpp" #include "ActsExamples/Digitization/MeasurementCreation.hpp" -#include "ActsExamples/Digitization/SmearingConfig.hpp" #include "ActsExamples/EventData/Cluster.hpp" -#include "ActsExamples/EventData/Index.hpp" #include "ActsExamples/EventData/Measurement.hpp" #include "ActsExamples/EventData/SimHit.hpp" +#include "ActsExamples/EventData/SimParticle.hpp" #include "ActsExamples/Framework/DataHandle.hpp" #include "ActsExamples/Framework/IAlgorithm.hpp" #include "ActsExamples/Framework/ProcessCode.hpp" @@ -29,28 +25,62 @@ #include "ActsFatras/Digitization/UncorrelatedHitSmearer.hpp" #include <cstddef> -#include <memory> #include <string> -#include <tuple> -#include <utility> #include <variant> #include <vector> -namespace ActsFatras { -class Barcode; -} // namespace ActsFatras - namespace ActsExamples { -struct AlgorithmContext; /// Algorithm that turns simulated hits into measurements by truth smearing. class DigitizationAlgorithm final : public IAlgorithm { public: + class Config { + public: + /// Input collection of simulated hits. + std::string inputSimHits = "simhits"; + /// 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. + std::string outputMeasurementParticlesMap = "measurement_particles_map"; + /// Output collection to map measured hits to simulated hits. + std::string outputMeasurementSimHitsMap = "measurement_simhits_map"; + + /// Map of surface by identifier to allow local - to global + std::unordered_map<Acts::GeometryIdentifier, const Acts::Surface*> + surfaceByIdentifier; + /// Random numbers tool. + std::shared_ptr<const RandomNumbers> randomNumbers = nullptr; + /// Flag to determine whether cell data should be written to the + /// `outputCells` collection; if true, writes (rather voluminous) cell data. + bool doOutputCells = false; + /// Flag to determine whether or not to run the clusterization; if true, + /// clusters, measurements, and sim-hit-maps are output. + bool doClusterization = true; + /// Do we merge hits or not + bool doMerge = false; + /// How close do parameters have to be to consider merged + double mergeNsigma = 1.0; + /// Consider clusters that share a corner as merged (8-cell connectivity) + bool mergeCommonCorner = false; + /// 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, + /// Table 35.10) + /// @NOTE The default is set to 0 because this works only well with Geant4 + double minEnergyDeposit = 0.0; // 1000 * 3.65 * Acts::UnitConstants::eV; + /// The digitizers per GeometryIdentifiers + Acts::GeometryHierarchyMap<DigiComponentsConfig> digitizationConfigs; + }; + /// Construct the smearing algorithm. /// /// @param config is the algorithm configuration /// @param level is the logging level - DigitizationAlgorithm(DigitizationConfig config, Acts::Logging::Level level); + DigitizationAlgorithm(Config config, Acts::Logging::Level level); /// Build measurement from simulation hits at input. /// @@ -59,7 +89,7 @@ class DigitizationAlgorithm final : public IAlgorithm { ProcessCode execute(const AlgorithmContext& ctx) const override; /// Get const access to the config - const DigitizationConfig& config() const { return m_cfg; } + const Config& config() const { return m_cfg; } private: /// Helper method for creating digitized parameters from clusters @@ -89,7 +119,7 @@ class DigitizationAlgorithm final : public IAlgorithm { CombinedDigitizer<4>>; /// Configuration of the Algorithm - DigitizationConfig m_cfg; + Config m_cfg; /// Digitizers within geometry hierarchy Acts::GeometryHierarchyMap<Digitizer> m_digitizers; /// Geometric digtizer @@ -98,17 +128,17 @@ class DigitizationAlgorithm final : public IAlgorithm { using CellsMap = std::map<Acts::GeometryIdentifier, std::vector<Cluster::Cell>>; - ReadDataHandle<SimHitContainer> m_simContainerReadHandle{this, - "SimHitContainer"}; - - 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"}; - WriteDataHandle<IndexMultimap<Index>> m_measurementSimHitsMapWriteHandle{ - this, "MeasurementSimHitsMap"}; + ReadDataHandle<SimHitContainer> m_inputHits{this, "InputHits"}; + + WriteDataHandle<MeasurementContainer> m_outputMeasurements{ + this, "OutputMeasurements"}; + WriteDataHandle<CellsMap> m_outputCells{this, "OutputCells"}; + WriteDataHandle<ClusterContainer> m_outputClusters{this, "OutputClusters"}; + + WriteDataHandle<IndexMultimap<SimBarcode>> m_outputMeasurementParticlesMap{ + this, "OutputMeasurementParticlesMap"}; + WriteDataHandle<IndexMultimap<Index>> m_outputMeasurementSimHitsMap{ + this, "OutputMeasurementSimHitsMap"}; /// Construct a fixed-size smearer from a configuration. /// diff --git a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationConfig.hpp b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationConfig.hpp index 6a933f50075..213abe4d322 100644 --- a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationConfig.hpp +++ b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationConfig.hpp @@ -8,107 +8,12 @@ #pragma once -#include "Acts/Definitions/Algebra.hpp" -#include "Acts/Definitions/TrackParametrization.hpp" -#include "Acts/Definitions/Units.hpp" #include "Acts/Geometry/GeometryHierarchyMap.hpp" -#include "Acts/Utilities/BinUtility.hpp" -#include "Acts/Utilities/BinningType.hpp" -#include "Acts/Utilities/Logger.hpp" -#include "Acts/Utilities/Result.hpp" -#include "ActsExamples/Digitization/DigitizationConfig.hpp" -#include "ActsExamples/Digitization/Smearers.hpp" +#include "ActsExamples/Digitization/GeometricConfig.hpp" #include "ActsExamples/Digitization/SmearingConfig.hpp" -#include "ActsExamples/Framework/RandomNumbers.hpp" -#include "ActsFatras/Digitization/UncorrelatedHitSmearer.hpp" - -#include <algorithm> -#include <cstddef> -#include <functional> -#include <map> -#include <memory> -#include <stdexcept> -#include <string> -#include <system_error> -#include <unordered_map> -#include <utility> -#include <vector> - -namespace Acts { -class GeometryIdentifier; -} // namespace Acts namespace ActsExamples { -/// Configuration struct for geometric digitization -/// -/// If this is defined, then the geometric digitization -/// will create clusters with cells. -/// The BinUtility defines the segmentation and which parameters -/// are defined by this. -/// -struct GeometricConfig { - // The dimensions of the measurement - std::vector<Acts::BoundIndices> indices = {}; - - // The (multidimensional) binning definition for the segmentation of the - // sensor - Acts::BinUtility segmentation; - - // The thickness of the sensor - double thickness = 0.; - - /// The charge smearer - ActsFatras::SingleParameterSmearFunction<ActsExamples::RandomEngine> - chargeSmearer = Digitization::Exact(0); - - // The threshold below a cell activation is ignored - double threshold = 0.; - - // Whether to assume digital readout (activation is either 0 or 1) - bool digital = false; - - // Flag as strip - bool strip = false; - - /// The variances for this digitization - std::map<Acts::BoundIndices, std::vector<Acts::ActsScalar>> varianceMap = {}; - - /// Charge generation (configurable via the chargeSmearer) - Acts::ActsScalar charge(Acts::ActsScalar path, RandomEngine &rng) const { - if (!chargeSmearer) { - return path; - } - auto res = chargeSmearer(path, rng); - if (res.ok()) { - return std::max(0.0, res->first); - } else { - throw std::runtime_error(res.error().message()); - } - } - - /// This generates the variances for a given cluster - /// - /// @note either the variances are directly taken from a pre-read - /// variance map, or they are generated from the pitch size - /// - /// @param csizes is the cluster size in the different dimensions - /// @param cmins is the cluster minimum in the different dimensions - /// - /// @return a vector of variances for the cluster - std::vector<Acts::ActsScalar> variances( - const std::array<std::size_t, 2u> &csizes, - const std::array<std::size_t, 2u> &cmins) const; - - /// Drift generation (currently not implemented) - /// Takes as an argument the position, and a random engine - /// @return drift direction in local 3D coordinates - Acts::Vector3 drift(const Acts::Vector3 & /*position*/, - RandomEngine & /*rng*/) const { - return Acts::Vector3(0., 0., 0.); - }; -}; - /// Configuration struct for the Digitization algorithm /// /// It contains: @@ -116,63 +21,9 @@ struct GeometricConfig { /// - optional SmearingConfig struct DigiComponentsConfig { GeometricConfig geometricDigiConfig; - SmearingConfig smearingDigiConfig = {}; + SmearingConfig smearingDigiConfig; }; -class DigitizationConfig { - public: - DigitizationConfig(bool merge, double sigma, bool commonCorner) - : DigitizationConfig(merge, sigma, commonCorner, - Acts::GeometryHierarchyMap<DigiComponentsConfig>()) { - } - - DigitizationConfig( - bool doMerge, double mergeNsigma, bool mergeCommonCorner, - Acts::GeometryHierarchyMap<DigiComponentsConfig> &&digiCfgs); - - explicit DigitizationConfig( - Acts::GeometryHierarchyMap<DigiComponentsConfig> &&digiCfgs); +using DigiConfigContainer = Acts::GeometryHierarchyMap<DigiComponentsConfig>; - /// Input collection of simulated hits. - std::string inputSimHits = "simhits"; - /// 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. - std::string outputMeasurementParticlesMap = "measurement_particles_map"; - /// Output collection to map measured hits to simulated hits. - std::string outputMeasurementSimHitsMap = "measurement_simhits_map"; - /// Map of surface by identifier to allow local - to global - std::unordered_map<Acts::GeometryIdentifier, const Acts::Surface *> - surfaceByIdentifier; - /// Random numbers tool. - std::shared_ptr<const RandomNumbers> randomNumbers = nullptr; - /// Flag to determine whether cell data should be written to the - /// `outputCells` collection; if true, writes (rather voluminous) cell data. - bool doOutputCells = false; - /// Flag to determine whether or not to run the clusterization; if true, - /// clusters, measurements, and sim-hit-maps are output. - bool doClusterization = true; - /// Do we merge hits or not - bool doMerge; - /// 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; - /// 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, - /// Table 35.10) - /// @NOTE The default is set to 0 because this works only well with Geant4 - double minEnergyDeposit = 0.0; // 1000 * 3.65 * Acts::UnitConstants::eV; - /// The digitizers per GeometryIdentifiers - Acts::GeometryHierarchyMap<DigiComponentsConfig> digitizationConfigs; - - std::vector< - std::pair<Acts::GeometryIdentifier, std::vector<Acts::BoundIndices>>> - getBoundIndices() const; -}; } // namespace ActsExamples diff --git a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationConfigurator.hpp b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationConfigurator.hpp index 55754eb79f7..3e6d01dea0f 100644 --- a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationConfigurator.hpp +++ b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationConfigurator.hpp @@ -11,21 +11,9 @@ #include "Acts/Geometry/GeometryHierarchyMap.hpp" #include "Acts/Geometry/GeometryIdentifier.hpp" #include "Acts/Geometry/TrackingGeometry.hpp" -#include "Acts/Surfaces/AnnulusBounds.hpp" -#include "Acts/Surfaces/DiscTrapezoidBounds.hpp" -#include "Acts/Surfaces/RadialBounds.hpp" -#include "Acts/Surfaces/RectangleBounds.hpp" -#include "Acts/Surfaces/SurfaceBounds.hpp" -#include "Acts/Surfaces/TrapezoidBounds.hpp" -#include "Acts/Utilities/BinUtility.hpp" -#include "Acts/Utilities/BinningData.hpp" -#include "ActsExamples/Digitization/DigitizationAlgorithm.hpp" #include "ActsExamples/Digitization/DigitizationConfig.hpp" #include <map> -#include <memory> -#include <utility> -#include <vector> namespace Acts { class Surface; @@ -66,4 +54,5 @@ struct DigitizationConfigurator { /// it adds an appropriate entry into the digitisation configuration void operator()(const Acts::Surface* surface); }; + } // namespace ActsExamples diff --git a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationCoordinatesConverter.hpp b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationCoordinatesConverter.hpp index 21c4f619b8a..382e113844f 100644 --- a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationCoordinatesConverter.hpp +++ b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/DigitizationCoordinatesConverter.hpp @@ -8,6 +8,7 @@ #pragma once +#include "ActsExamples/Digitization/DigitizationAlgorithm.hpp" #include "ActsExamples/Digitization/DigitizationConfig.hpp" namespace ActsExamples { @@ -18,10 +19,11 @@ class DigitizationCoordinatesConverter final { /// Construct the converter /// /// @param config is the configuration - explicit DigitizationCoordinatesConverter(DigitizationConfig config); + explicit DigitizationCoordinatesConverter( + DigitizationAlgorithm::Config config); /// Get const access to the config - const DigitizationConfig& config() const { return m_cfg; } + const DigitizationAlgorithm::Config& config() const { return m_cfg; } /// Convert the hit coordinates to the local frame. std::tuple<double, double> globalToLocal(std::uint64_t moduleId, double x, @@ -33,7 +35,7 @@ class DigitizationCoordinatesConverter final { private: /// Configuration - DigitizationConfig m_cfg; + DigitizationAlgorithm::Config m_cfg; }; } // namespace ActsExamples diff --git a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/GeometricConfig.hpp b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/GeometricConfig.hpp new file mode 100644 index 00000000000..6b4348e20f6 --- /dev/null +++ b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/GeometricConfig.hpp @@ -0,0 +1,98 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#pragma once + +#include "Acts/Definitions/Algebra.hpp" +#include "Acts/Definitions/TrackParametrization.hpp" +#include "Acts/Utilities/BinUtility.hpp" +#include "Acts/Utilities/Result.hpp" +#include "ActsExamples/Digitization/Smearers.hpp" +#include "ActsExamples/Framework/RandomNumbers.hpp" +#include "ActsFatras/Digitization/UncorrelatedHitSmearer.hpp" + +#include <algorithm> +#include <cstddef> +#include <map> +#include <stdexcept> +#include <system_error> +#include <utility> +#include <vector> + +namespace ActsExamples { + +/// Configuration struct for geometric digitization +/// +/// If this is defined, then the geometric digitization +/// will create clusters with cells. +/// The BinUtility defines the segmentation and which parameters +/// are defined by this. +/// +struct GeometricConfig { + // The dimensions of the measurement + std::vector<Acts::BoundIndices> indices = {}; + + // The (multidimensional) binning definition for the segmentation of the + // sensor + Acts::BinUtility segmentation; + + // The thickness of the sensor + double thickness = 0.; + + /// The charge smearer + ActsFatras::SingleParameterSmearFunction<ActsExamples::RandomEngine> + chargeSmearer = Digitization::Exact(0); + + // The threshold below a cell activation is ignored + double threshold = 0.; + + // Whether to assume digital readout (activation is either 0 or 1) + bool digital = false; + + // Flag as strip + bool strip = false; + + /// The variances for this digitization + std::map<Acts::BoundIndices, std::vector<Acts::ActsScalar>> varianceMap = {}; + + /// Charge generation (configurable via the chargeSmearer) + Acts::ActsScalar charge(Acts::ActsScalar path, RandomEngine &rng) const { + if (!chargeSmearer) { + return path; + } + auto res = chargeSmearer(path, rng); + if (res.ok()) { + return std::max(0.0, res->first); + } else { + throw std::runtime_error(res.error().message()); + } + } + + /// This generates the variances for a given cluster + /// + /// @note either the variances are directly taken from a pre-read + /// variance map, or they are generated from the pitch size + /// + /// @param csizes is the cluster size in the different dimensions + /// @param cmins is the cluster minimum in the different dimensions + /// + /// @return a vector of variances for the cluster + std::vector<Acts::ActsScalar> variances( + const std::array<std::size_t, 2u> &csizes, + const std::array<std::size_t, 2u> &cmins) const; + + /// Drift generation (currently not implemented) + /// Takes as an argument the position, and a random engine + /// @return drift direction in local 3D coordinates + Acts::Vector3 drift(const Acts::Vector3 & /*position*/, + RandomEngine & /*rng*/) const { + return Acts::Vector3(0., 0., 0.); + }; +}; + +} // namespace ActsExamples diff --git a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/ModuleClusters.hpp b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/ModuleClusters.hpp index 675f86af07d..452111db2eb 100644 --- a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/ModuleClusters.hpp +++ b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/ModuleClusters.hpp @@ -16,10 +16,8 @@ #include "ActsExamples/EventData/Cluster.hpp" #include "ActsExamples/EventData/SimHit.hpp" -#include <algorithm> #include <cstddef> #include <set> -#include <unordered_map> #include <utility> #include <variant> #include <vector> @@ -69,4 +67,5 @@ class ModuleClusters { std::vector<std::vector<ModuleValue>> mergeParameters( std::vector<ModuleValue> values); }; + } // namespace ActsExamples diff --git a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/Smearers.hpp b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/Smearers.hpp index c51b8e26b64..8d0130831ae 100644 --- a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/Smearers.hpp +++ b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/Smearers.hpp @@ -12,13 +12,10 @@ #include "Acts/Utilities/Result.hpp" #include "ActsExamples/Framework/RandomNumbers.hpp" #include "ActsFatras/Digitization/DigitizationError.hpp" -#include "ActsFatras/Digitization/UncorrelatedHitSmearer.hpp" #include <cmath> #include <limits> #include <random> -#include <string> -#include <tuple> #include <utility> namespace ActsExamples::Digitization { diff --git a/Examples/Algorithms/Digitization/src/DigitizationAlgorithm.cpp b/Examples/Algorithms/Digitization/src/DigitizationAlgorithm.cpp index 72f3905ab57..07019be74ca 100644 --- a/Examples/Algorithms/Digitization/src/DigitizationAlgorithm.cpp +++ b/Examples/Algorithms/Digitization/src/DigitizationAlgorithm.cpp @@ -11,35 +11,24 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/TrackParametrization.hpp" #include "Acts/Geometry/GeometryIdentifier.hpp" -#include "Acts/Geometry/TrackingGeometry.hpp" -#include "Acts/Surfaces/Surface.hpp" #include "Acts/Utilities/BinUtility.hpp" -#include "Acts/Utilities/Result.hpp" #include "ActsExamples/Digitization/ModuleClusters.hpp" -#include "ActsExamples/EventData/GeometryContainers.hpp" -#include "ActsExamples/EventData/Index.hpp" -#include "ActsExamples/EventData/SimHit.hpp" #include "ActsExamples/Framework/AlgorithmContext.hpp" -#include "ActsExamples/Utilities/GroupBy.hpp" -#include "ActsExamples/Utilities/Range.hpp" #include "ActsFatras/EventData/Barcode.hpp" -#include "ActsFatras/EventData/Hit.hpp" #include <algorithm> #include <array> -#include <cmath> -#include <cstdint> #include <limits> #include <ostream> -#include <set> #include <stdexcept> #include <string> #include <utility> -ActsExamples::DigitizationAlgorithm::DigitizationAlgorithm( - DigitizationConfig config, Acts::Logging::Level level) - : ActsExamples::IAlgorithm("DigitizationAlgorithm", level), - m_cfg(std::move(config)) { +namespace ActsExamples { + +DigitizationAlgorithm::DigitizationAlgorithm(Config config, + Acts::Logging::Level level) + : IAlgorithm("DigitizationAlgorithm", level), m_cfg(std::move(config)) { if (m_cfg.inputSimHits.empty()) { throw std::invalid_argument("Missing simulated hits input collection"); } @@ -69,12 +58,11 @@ ActsExamples::DigitizationAlgorithm::DigitizationAlgorithm( "Missing hit-to-simulated-hits map output collection"); } - m_measurementWriteHandle.initialize(m_cfg.outputMeasurements); - m_clusterWriteHandle.initialize(m_cfg.outputClusters); - m_measurementParticlesMapWriteHandle.initialize( + m_outputMeasurements.initialize(m_cfg.outputMeasurements); + m_outputClusters.initialize(m_cfg.outputClusters); + m_outputMeasurementParticlesMap.initialize( m_cfg.outputMeasurementParticlesMap); - m_measurementSimHitsMapWriteHandle.initialize( - m_cfg.outputMeasurementSimHitsMap); + m_outputMeasurementSimHitsMap.initialize(m_cfg.outputMeasurementSimHitsMap); } if (m_cfg.doOutputCells) { @@ -82,10 +70,10 @@ ActsExamples::DigitizationAlgorithm::DigitizationAlgorithm( throw std::invalid_argument("Missing cell output collection"); } - m_cellsWriteHandle.initialize(m_cfg.outputCells); + m_outputCells.initialize(m_cfg.outputCells); } - m_simContainerReadHandle.initialize(m_cfg.inputSimHits); + m_inputHits.initialize(m_cfg.inputSimHits); // Create the digitizers from the configuration std::vector<std::pair<Acts::GeometryIdentifier, Digitizer>> digitizerInput; @@ -139,16 +127,16 @@ ActsExamples::DigitizationAlgorithm::DigitizationAlgorithm( m_digitizers = Acts::GeometryHierarchyMap<Digitizer>(digitizerInput); } -ActsExamples::ProcessCode ActsExamples::DigitizationAlgorithm::execute( - const AlgorithmContext& ctx) const { +ProcessCode DigitizationAlgorithm::execute(const AlgorithmContext& ctx) const { // Retrieve input - const auto& simHits = m_simContainerReadHandle(ctx); + const auto& simHits = m_inputHits(ctx); ACTS_DEBUG("Loaded " << simHits.size() << " sim hits"); // Prepare output containers // need list here for stable addresses MeasurementContainer measurements; ClusterContainer clusters; + IndexMultimap<ActsFatras::Barcode> measurementParticlesMap; IndexMultimap<Index> measurementSimHitsMap; measurements.reserve(simHits.size()); @@ -271,7 +259,7 @@ ActsExamples::ProcessCode ActsExamples::DigitizationAlgorithm::execute( // Store the cell data into a map. if (m_cfg.doOutputCells) { std::vector<Cluster::Cell> cells; - for (const auto& [dParameters, simhits] : + for (const auto& [dParameters, simHitsIdxs] : digitizeParametersResult) { for (const auto& cell : dParameters.cluster.channels) { cells.push_back(cell); @@ -281,21 +269,18 @@ ActsExamples::ProcessCode ActsExamples::DigitizationAlgorithm::execute( } if (m_cfg.doClusterization) { - 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(); - - createMeasurement(measurements, moduleGeoId, dParameters); + for (auto& [dParameters, simHitsIdxs] : digitizeParametersResult) { + auto measurement = + createMeasurement(measurements, moduleGeoId, dParameters); clusters.emplace_back(std::move(dParameters.cluster)); - // this digitization does hit merging so there can be more than - // one mapping entry for each digitized hit. - for (auto simHitIdx : simhits) { + + for (auto [i, simHitIdx] : Acts::enumerate(simHitsIdxs)) { measurementParticlesMap.emplace_hint( - measurementParticlesMap.end(), measurementIdx, + measurementParticlesMap.end(), measurement.index(), simHits.nth(simHitIdx)->particleId()); measurementSimHitsMap.emplace_hint(measurementSimHitsMap.end(), - measurementIdx, simHitIdx); + measurement.index(), + simHitIdx); } } } @@ -309,23 +294,22 @@ ActsExamples::ProcessCode ActsExamples::DigitizationAlgorithm::execute( << " skipped in Digitization. Enable DEBUG mode to see more details."); } - if (m_cfg.doOutputCells) { - m_cellsWriteHandle(ctx, std::move(cellsMap)); + if (m_cfg.doClusterization) { + m_outputMeasurements(ctx, std::move(measurements)); + m_outputClusters(ctx, std::move(clusters)); + + m_outputMeasurementParticlesMap(ctx, std::move(measurementParticlesMap)); + m_outputMeasurementSimHitsMap(ctx, std::move(measurementSimHitsMap)); } - if (m_cfg.doClusterization) { - m_measurementWriteHandle(ctx, std::move(measurements)); - m_clusterWriteHandle(ctx, std::move(clusters)); - m_measurementParticlesMapWriteHandle(ctx, - std::move(measurementParticlesMap)); - m_measurementSimHitsMapWriteHandle(ctx, std::move(measurementSimHitsMap)); + if (m_cfg.doOutputCells) { + m_outputCells(ctx, std::move(cellsMap)); } return ProcessCode::SUCCESS; } -ActsExamples::DigitizedParameters -ActsExamples::DigitizationAlgorithm::localParameters( +DigitizedParameters DigitizationAlgorithm::localParameters( const GeometricConfig& geoCfg, const std::vector<ActsFatras::Segmentizer::ChannelSegment>& channels, RandomEngine& rng) const { @@ -377,3 +361,5 @@ ActsExamples::DigitizationAlgorithm::localParameters( return dParameters; } + +} // namespace ActsExamples diff --git a/Examples/Algorithms/Digitization/src/DigitizationConfig.cpp b/Examples/Algorithms/Digitization/src/DigitizationConfig.cpp index e19452d1e7a..8c23ba729d1 100644 --- a/Examples/Algorithms/Digitization/src/DigitizationConfig.cpp +++ b/Examples/Algorithms/Digitization/src/DigitizationConfig.cpp @@ -8,59 +8,9 @@ #include "ActsExamples/Digitization/DigitizationConfig.hpp" -#include "Acts/Definitions/TrackParametrization.hpp" -#include "Acts/Geometry/GeometryIdentifier.hpp" -#include "ActsExamples/Digitization/SmearingConfig.hpp" +namespace ActsExamples { -namespace { - -enum SmearingTypes : int { - eGauss = 0, - eGaussTruncated = 1, - eGaussClipped = 2, - eUniform = 3, - eDigital = 4, -}; - -} // namespace - -ActsExamples::DigitizationConfig::DigitizationConfig( - bool merge, double sigma, bool commonCorner, - Acts::GeometryHierarchyMap<DigiComponentsConfig>&& digiCfgs) - : doMerge(merge), mergeNsigma(sigma), mergeCommonCorner(commonCorner) { - digitizationConfigs = std::move(digiCfgs); -} - -ActsExamples::DigitizationConfig::DigitizationConfig( - Acts::GeometryHierarchyMap<DigiComponentsConfig>&& digiCfgs) - : doMerge(false), mergeNsigma(1.0), mergeCommonCorner(false) { - digitizationConfigs = std::move(digiCfgs); -} - -std::vector< - std::pair<Acts::GeometryIdentifier, std::vector<Acts::BoundIndices>>> -ActsExamples::DigitizationConfig::getBoundIndices() const { - std::vector< - std::pair<Acts::GeometryIdentifier, std::vector<Acts::BoundIndices>>> - bIndexInput; - - for (std::size_t ibi = 0; ibi < digitizationConfigs.size(); ++ibi) { - Acts::GeometryIdentifier geoID = digitizationConfigs.idAt(ibi); - const auto dCfg = digitizationConfigs.valueAt(ibi); - std::vector<Acts::BoundIndices> boundIndices; - boundIndices.insert(boundIndices.end(), - dCfg.geometricDigiConfig.indices.begin(), - dCfg.geometricDigiConfig.indices.end()); - // we assume nobody will add multiple smearers to a single bound index - for (const auto& c : dCfg.smearingDigiConfig) { - boundIndices.push_back(c.index); - } - bIndexInput.push_back({geoID, boundIndices}); - } - return bIndexInput; -} - -std::vector<Acts::ActsScalar> ActsExamples::GeometricConfig::variances( +std::vector<Acts::ActsScalar> GeometricConfig::variances( const std::array<std::size_t, 2u>& csizes, const std::array<std::size_t, 2u>& cmins) const { std::vector<Acts::ActsScalar> rVariances; @@ -80,3 +30,5 @@ std::vector<Acts::ActsScalar> ActsExamples::GeometricConfig::variances( } return rVariances; } + +} // namespace ActsExamples diff --git a/Examples/Algorithms/Digitization/src/DigitizationConfigurator.cpp b/Examples/Algorithms/Digitization/src/DigitizationConfigurator.cpp index e7bd2ddfa09..bbf6ec7583b 100644 --- a/Examples/Algorithms/Digitization/src/DigitizationConfigurator.cpp +++ b/Examples/Algorithms/Digitization/src/DigitizationConfigurator.cpp @@ -9,7 +9,6 @@ #include "ActsExamples/Digitization/DigitizationConfigurator.hpp" #include "Acts/Definitions/Algebra.hpp" -#include "Acts/Definitions/TrackParametrization.hpp" #include "Acts/Surfaces/AnnulusBounds.hpp" #include "Acts/Surfaces/DiscTrapezoidBounds.hpp" #include "Acts/Surfaces/RadialBounds.hpp" @@ -25,9 +24,9 @@ #include <algorithm> #include <cmath> -#include <memory> namespace { + /// @note This does not really compare if the configs are equal, therefore /// it is no operator==. The contained std::function types cannot really /// be checked for equality. @@ -47,6 +46,7 @@ bool digiConfigMaybeEqual(ActsExamples::DigiComponentsConfig &a, ag.thickness == bg.thickness && ag.threshold == bg.threshold && ag.digital == bg.digital); } + } // namespace void ActsExamples::DigitizationConfigurator::operator()( diff --git a/Examples/Algorithms/Digitization/src/DigitizationCoordinatesConverter.cpp b/Examples/Algorithms/Digitization/src/DigitizationCoordinatesConverter.cpp index e83e7be995b..b996306fb13 100644 --- a/Examples/Algorithms/Digitization/src/DigitizationCoordinatesConverter.cpp +++ b/Examples/Algorithms/Digitization/src/DigitizationCoordinatesConverter.cpp @@ -10,21 +10,22 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Geometry/GeometryContext.hpp" +#include "ActsExamples/Digitization/DigitizationAlgorithm.hpp" -#include <cmath> #include <stdexcept> #include <utility> -ActsExamples::DigitizationCoordinatesConverter:: - DigitizationCoordinatesConverter(DigitizationConfig config) +namespace ActsExamples { + +DigitizationCoordinatesConverter::DigitizationCoordinatesConverter( + DigitizationAlgorithm::Config config) : m_cfg(std::move(config)) { if (m_cfg.surfaceByIdentifier.empty()) { throw std::invalid_argument("Missing Surface-GeometryID association map"); } } -std::tuple<double, double> -ActsExamples::DigitizationCoordinatesConverter::globalToLocal( +std::tuple<double, double> DigitizationCoordinatesConverter::globalToLocal( std::uint64_t moduleId, double x, double y, double z) const { const Acts::GeometryIdentifier moduleGeoId = moduleId; auto surfaceItr = m_cfg.surfaceByIdentifier.find(moduleGeoId); @@ -44,8 +45,8 @@ ActsExamples::DigitizationCoordinatesConverter::globalToLocal( } std::tuple<double, double, double> -ActsExamples::DigitizationCoordinatesConverter::localToGlobal( - std::uint64_t moduleId, double x, double y) const { +DigitizationCoordinatesConverter::localToGlobal(std::uint64_t moduleId, + double x, double y) const { const Acts::GeometryIdentifier moduleGeoId = moduleId; auto surfaceItr = m_cfg.surfaceByIdentifier.find(moduleGeoId); if (surfaceItr == m_cfg.surfaceByIdentifier.end()) { @@ -61,3 +62,5 @@ ActsExamples::DigitizationCoordinatesConverter::localToGlobal( return {pos2Global.x(), pos2Global.y(), pos2Global.z()}; } + +} // namespace ActsExamples diff --git a/Examples/Framework/include/ActsExamples/EventData/Cluster.hpp b/Examples/Framework/include/ActsExamples/EventData/Cluster.hpp index 3eb850b1214..bfd81c9f130 100644 --- a/Examples/Framework/include/ActsExamples/EventData/Cluster.hpp +++ b/Examples/Framework/include/ActsExamples/EventData/Cluster.hpp @@ -8,10 +8,10 @@ #pragma once +#include "Acts/Definitions/Algebra.hpp" #include "ActsFatras/Digitization/Segmentizer.hpp" #include <numeric> -#include <optional> #include <vector> namespace ActsExamples { diff --git a/Examples/Io/Json/include/ActsExamples/Io/Json/JsonDigitizationConfig.hpp b/Examples/Io/Json/include/ActsExamples/Io/Json/JsonDigitizationConfig.hpp index 11e063acaa8..a67756b1dbc 100644 --- a/Examples/Io/Json/include/ActsExamples/Io/Json/JsonDigitizationConfig.hpp +++ b/Examples/Io/Json/include/ActsExamples/Io/Json/JsonDigitizationConfig.hpp @@ -9,12 +9,10 @@ #pragma once #include "Acts/Geometry/GeometryHierarchyMap.hpp" -#include "Acts/Plugins/Json/ActsJson.hpp" #include "Acts/Plugins/Json/GeometryHierarchyMapJsonConverter.hpp" #include "ActsExamples/Digitization/DigitizationConfig.hpp" #include "ActsExamples/Digitization/SmearingConfig.hpp" -#include <algorithm> #include <string> #include <nlohmann/json.hpp> @@ -44,7 +42,6 @@ void writeDigiConfigToJson( const Acts::GeometryHierarchyMap<DigiComponentsConfig>& cfg, const std::string& path); -using DigiConfigContainer = Acts::GeometryHierarchyMap<DigiComponentsConfig>; using DigiConfigConverter = Acts::GeometryHierarchyMapJsonConverter<DigiComponentsConfig>; diff --git a/Examples/Io/Root/include/ActsExamples/Io/Root/RootMeasurementWriter.hpp b/Examples/Io/Root/include/ActsExamples/Io/Root/RootMeasurementWriter.hpp index 3958e845fb2..a578295e530 100644 --- a/Examples/Io/Root/include/ActsExamples/Io/Root/RootMeasurementWriter.hpp +++ b/Examples/Io/Root/include/ActsExamples/Io/Root/RootMeasurementWriter.hpp @@ -8,9 +8,6 @@ #pragma once -#include "Acts/Definitions/TrackParametrization.hpp" -#include "Acts/Geometry/GeometryContext.hpp" -#include "Acts/Geometry/GeometryHierarchyMap.hpp" #include "Acts/Geometry/GeometryIdentifier.hpp" #include "Acts/Utilities/Logger.hpp" #include "ActsExamples/EventData/Cluster.hpp" @@ -24,7 +21,6 @@ #include <memory> #include <string> #include <unordered_map> -#include <vector> class TFile; class TTree; @@ -34,7 +30,6 @@ class TrackingGeometry; } // namespace Acts namespace ActsExamples { -struct AlgorithmContext; /// @class RootMeasurementWriter /// @@ -64,8 +59,6 @@ class RootMeasurementWriter final : public WriterT<MeasurementContainer> { /// file access mode std::string fileMode = "RECREATE"; - /// The indices for this digitization configurations - Acts::GeometryHierarchyMap<std::vector<Acts::BoundIndices>> boundIndices; /// Map of the geometry identifier to the surface std::unordered_map<Acts::GeometryIdentifier, const Acts::Surface*> surfaceByIdentifier; diff --git a/Examples/Io/Root/src/RootMeasurementWriter.cpp b/Examples/Io/Root/src/RootMeasurementWriter.cpp index b7ab332fdea..df095557664 100644 --- a/Examples/Io/Root/src/RootMeasurementWriter.cpp +++ b/Examples/Io/Root/src/RootMeasurementWriter.cpp @@ -9,20 +9,17 @@ #include "ActsExamples/Io/Root/RootMeasurementWriter.hpp" #include "Acts/Definitions/TrackParametrization.hpp" -#include "Acts/Utilities/Enumerate.hpp" #include "ActsExamples/EventData/AverageSimHits.hpp" #include "ActsExamples/EventData/Index.hpp" #include "ActsExamples/EventData/Measurement.hpp" #include "ActsExamples/Framework/AlgorithmContext.hpp" #include "ActsExamples/Utilities/Range.hpp" -#include <cstddef> #include <ios> #include <limits> #include <memory> #include <stdexcept> #include <utility> -#include <variant> #include <TFile.h> #include <TTree.h> diff --git a/Examples/Python/python/acts/examples/simulation.py b/Examples/Python/python/acts/examples/simulation.py index 21c4149661f..65b6820d8b8 100644 --- a/Examples/Python/python/acts/examples/simulation.py +++ b/Examples/Python/python/acts/examples/simulation.py @@ -778,8 +778,8 @@ def addDigitization( rnd = rnd or acts.examples.RandomNumbers() # Digitization - digiCfg = acts.examples.DigitizationConfig( - acts.examples.readDigiConfigFromJson( + digiCfg = acts.examples.DigitizationAlgorithm.Config( + digitizationConfigs=acts.examples.readDigiConfigFromJson( str(digiConfigFile), ), surfaceByIdentifier=trackingGeometry.geoIdSurfaceMap(), @@ -788,7 +788,9 @@ def addDigitization( outputMeasurements="measurements", outputMeasurementParticlesMap="measurement_particles_map", outputMeasurementSimHitsMap="measurement_simhits_map", - doMerge=doMerge, + **acts.examples.defaultKWArgs( + doMerge=doMerge, + ), ) # Not sure how to do this in our style @@ -811,7 +813,6 @@ def addDigitization( filePath=str(outputDirRoot / f"{digiAlg.config.outputMeasurements}.root"), surfaceByIdentifier=trackingGeometry.geoIdSurfaceMap(), ) - rmwConfig.addBoundIndicesFromDigiConfig(digiAlg.config) s.addWriter(acts.examples.RootMeasurementWriter(rmwConfig, customLogLevel())) if outputDirCsv is not None: diff --git a/Examples/Python/src/Digitization.cpp b/Examples/Python/src/Digitization.cpp index 948bcc9593b..5bcce4b74ca 100644 --- a/Examples/Python/src/Digitization.cpp +++ b/Examples/Python/src/Digitization.cpp @@ -6,33 +6,22 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. -#include "Acts/Definitions/Algebra.hpp" -#include "Acts/Geometry/GeometryHierarchyMap.hpp" #include "Acts/Plugins/Python/Utilities.hpp" #include "Acts/Utilities/Logger.hpp" #include "ActsExamples/Digitization/DigitizationAlgorithm.hpp" #include "ActsExamples/Digitization/DigitizationConfig.hpp" #include "ActsExamples/Digitization/DigitizationConfigurator.hpp" #include "ActsExamples/Digitization/DigitizationCoordinatesConverter.hpp" -#include "ActsExamples/Framework/AlgorithmContext.hpp" #include "ActsExamples/Io/Json/JsonDigitizationConfig.hpp" #include <array> #include <memory> #include <tuple> #include <utility> -#include <vector> #include <pybind11/pybind11.h> #include <pybind11/stl.h> -namespace Acts { -class GeometryIdentifier; -} // namespace Acts -namespace ActsExamples { -class IAlgorithm; -} // namespace ActsExamples - namespace py = pybind11; using namespace ActsExamples; @@ -47,19 +36,18 @@ void addDigitization(Context& ctx) { mex.def("writeDigiConfigToJson", ActsExamples::writeDigiConfigToJson); { - using Config = ActsExamples::DigitizationConfig; + using Config = ActsExamples::DigitizationAlgorithm::Config; - py::class_<ActsExamples::DigitizationAlgorithm, ActsExamples::IAlgorithm, - std::shared_ptr<ActsExamples::DigitizationAlgorithm>>( - mex, "DigitizationAlgorithm") - .def(py::init<Config&, Acts::Logging::Level>(), py::arg("config"), - py::arg("level")) - .def_property_readonly("config", - &ActsExamples::DigitizationAlgorithm::config); + auto a = py::class_<ActsExamples::DigitizationAlgorithm, + ActsExamples::IAlgorithm, + std::shared_ptr<ActsExamples::DigitizationAlgorithm>>( + mex, "DigitizationAlgorithm") + .def(py::init<Config&, Acts::Logging::Level>(), + py::arg("config"), py::arg("level")) + .def_property_readonly( + "config", &ActsExamples::DigitizationAlgorithm::config); - auto c = py::class_<Config>(mex, "DigitizationConfig") - .def(py::init<Acts::GeometryHierarchyMap< - ActsExamples::DigiComponentsConfig>>()); + auto c = py::class_<Config>(a, "Config").def(py::init<>()); ACTS_PYTHON_STRUCT_BEGIN(c, Config); ACTS_PYTHON_MEMBER(inputSimHits); @@ -81,10 +69,15 @@ void addDigitization(Context& ctx) { patchKwargsConstructor(c); - py::class_<DigiComponentsConfig>(mex, "DigiComponentsConfig"); + auto cc = py::class_<DigiComponentsConfig>(mex, "DigiComponentsConfig") + .def(py::init<>()); + + ACTS_PYTHON_STRUCT_BEGIN(cc, DigiComponentsConfig); + ACTS_PYTHON_MEMBER(geometricDigiConfig); + ACTS_PYTHON_MEMBER(smearingDigiConfig); + ACTS_PYTHON_STRUCT_END(); - py::class_<Acts::GeometryHierarchyMap<ActsExamples::DigiComponentsConfig>>( - mex, "GeometryHierarchyMap_DigiComponentsConfig") + py::class_<DigiConfigContainer>(mex, "DigiConfigContainer") .def(py::init<std::vector< std::pair<GeometryIdentifier, DigiComponentsConfig>>>()); } @@ -107,7 +100,8 @@ void addDigitization(Context& ctx) { py::class_<ActsExamples::DigitizationCoordinatesConverter, std::shared_ptr<ActsExamples::DigitizationCoordinatesConverter>>( mex, "DigitizationCoordinatesConverter") - .def(py::init<ActsExamples::DigitizationConfig&>(), py::arg("config")) + .def(py::init<ActsExamples::DigitizationAlgorithm::Config&>(), + py::arg("config")) .def_property_readonly( "config", &ActsExamples::DigitizationCoordinatesConverter::config) .def("globalToLocal", diff --git a/Examples/Python/src/Output.cpp b/Examples/Python/src/Output.cpp index 5adead2a9b4..5f174777429 100644 --- a/Examples/Python/src/Output.cpp +++ b/Examples/Python/src/Output.cpp @@ -12,8 +12,7 @@ #include "Acts/Utilities/Logger.hpp" #include "Acts/Visualization/IVisualization3D.hpp" #include "Acts/Visualization/ViewConfig.hpp" -#include "ActsExamples/Digitization/DigitizationConfig.hpp" -#include "ActsExamples/Framework/ProcessCode.hpp" +#include "ActsExamples/Digitization/DigitizationAlgorithm.hpp" #include "ActsExamples/Io/Csv/CsvBFieldWriter.hpp" #include "ActsExamples/Io/Csv/CsvExaTrkXGraphWriter.hpp" #include "ActsExamples/Io/Csv/CsvMeasurementWriter.hpp" @@ -50,10 +49,8 @@ #include "ActsExamples/Plugins/Obj/ObjPropagationStepsWriter.hpp" #include "ActsExamples/Plugins/Obj/ObjTrackingGeometryWriter.hpp" -#include <array> #include <memory> #include <string> -#include <tuple> #include <vector> #include <pybind11/pybind11.h> @@ -268,13 +265,6 @@ void addOutput(Context& ctx) { auto c = py::class_<Writer::Config>(w, "Config").def(py::init<>()); - c.def("addBoundIndicesFromDigiConfig", - [](Writer::Config& self, const DigitizationConfig& digiCfg) { - self.boundIndices = - Acts::GeometryHierarchyMap<std::vector<Acts::BoundIndices>>( - digiCfg.getBoundIndices()); - }); - ACTS_PYTHON_STRUCT_BEGIN(c, Writer::Config); ACTS_PYTHON_MEMBER(inputMeasurements); ACTS_PYTHON_MEMBER(inputClusters); @@ -282,7 +272,6 @@ void addOutput(Context& ctx) { ACTS_PYTHON_MEMBER(inputMeasurementSimHitsMap); ACTS_PYTHON_MEMBER(filePath); ACTS_PYTHON_MEMBER(fileMode); - ACTS_PYTHON_MEMBER(boundIndices); ACTS_PYTHON_MEMBER(surfaceByIdentifier); ACTS_PYTHON_STRUCT_END(); } diff --git a/Examples/Python/tests/conftest.py b/Examples/Python/tests/conftest.py index b2015c3f6a0..71c0899fe3f 100644 --- a/Examples/Python/tests/conftest.py +++ b/Examples/Python/tests/conftest.py @@ -357,8 +357,8 @@ def _factory(s): s.addAlgorithm(simAlg) # Digitization - digiCfg = acts.examples.DigitizationConfig( - acts.examples.readDigiConfigFromJson( + digiCfg = acts.examples.DigitizationAlgorithm.Config( + digitizationConfigs=acts.examples.readDigiConfigFromJson( str( Path(__file__).parent.parent.parent.parent / "Examples/Algorithms/Digitization/share/default-smearing-config-generic.json" diff --git a/Examples/Python/tests/test_detectors.py b/Examples/Python/tests/test_detectors.py index c4d2c6ea9ed..3de27524db9 100644 --- a/Examples/Python/tests/test_detectors.py +++ b/Examples/Python/tests/test_detectors.py @@ -161,8 +161,8 @@ def eq(self, other): def test_coordinate_converter(trk_geo): - digiCfg = acts.examples.DigitizationConfig( - acts.examples.readDigiConfigFromJson( + digiCfg = acts.examples.DigitizationAlgorithm.Config( + digitizationConfigs=acts.examples.readDigiConfigFromJson( str( Path(__file__).parent.parent.parent.parent / "Examples/Algorithms/Digitization/share/default-smearing-config-generic.json" diff --git a/Examples/Python/tests/test_writer.py b/Examples/Python/tests/test_writer.py index 95cd67decd1..4c9e220f899 100644 --- a/Examples/Python/tests/test_writer.py +++ b/Examples/Python/tests/test_writer.py @@ -165,7 +165,6 @@ def test_root_meas_writer(tmp_path, fatras, trk_geo, assert_root_hash): filePath=str(out), surfaceByIdentifier=trk_geo.geoIdSurfaceMap(), ) - config.addBoundIndicesFromDigiConfig(digiAlg.config) s.addWriter(RootMeasurementWriter(level=acts.logging.INFO, config=config)) s.run() diff --git a/Examples/Scripts/Python/digitization_config.py b/Examples/Scripts/Python/digitization_config.py index dfad1913fd6..1b6de07f477 100755 --- a/Examples/Scripts/Python/digitization_config.py +++ b/Examples/Scripts/Python/digitization_config.py @@ -7,7 +7,7 @@ DigitizationConfigurator, writeDigiConfigToJson, GenericDetector, - GeometryHierarchyMap_DigiComponentsConfig, + DigiConfigContainer, ) @@ -27,9 +27,7 @@ def runDigitizationConfig( trackingGeometry.visitSurfaces(digiConfigurator) - outputConfig = GeometryHierarchyMap_DigiComponentsConfig( - digiConfigurator.outputDigiComponents - ) + outputConfig = DigiConfigContainer(digiConfigurator.outputDigiComponents) writeDigiConfigToJson(outputConfig, str(output)) From a30ab3330174a4c44c76b54d9cfa12f7c364863f Mon Sep 17 00:00:00 2001 From: Tim Adye <T.J.Adye@rl.ac.uk> Date: Wed, 20 Nov 2024 18:37:43 +0100 Subject: [PATCH 27/49] feat: full_chain_test.py config with command-line options (#3811) `full_chain_test.py` supports all options from `ckf_tracks.py` (generic detector), `full_chain_odd.py`, and `full_chain_itk.py`, as well as some new additions to help with testing. The idea is to complement those scripts which provide *examples*, where `full_chain_test.py` simplifies running interactive/batch tests with different options specified on the command-line. With all the options, it is not intended to be an easy-to-read example. The existing example scripts could eventually be simplified, since they no longer need to support those test options they do have. The hope is that, in future, `full_chain_test.py` can be used to test new features and see the result in (at least) ODD and ITk environments. The idea for this initial version is: * `full_chain_test.py` exactly matches `full_chain_odd.py` * ODD configuration is the default * `full_chain_test.py -A -M1 -N2` exactly matches `full_chain_itk.py` * `-A` selects the ATLAS ITk configuration * `-M1 -N2` (or `--gen-nvertices 1 --gen-nparticles 2`) changes to 2 particles per event from `full_chain_odd.py`'s default of 800 (`-M 200 -N 4`) * `full_chain_test.py -G` is similar `ckf_tracks.py` * `-G` selects the generic detector configuration * does not exactly match the more rudimentary `ckf_tracks.py`, and doesn't try to reproduce seeding config. Later, if this becomes a useful development test, we can harmonise the detail setup between ODD and ITk. Also, do we need to support options from `full_chain_itk_Gbts.py` and `full_chain_odd_LRT.py`? --- Examples/Scripts/Python/full_chain_test.py | 805 +++++++++++++++++++++ 1 file changed, 805 insertions(+) create mode 100755 Examples/Scripts/Python/full_chain_test.py diff --git a/Examples/Scripts/Python/full_chain_test.py b/Examples/Scripts/Python/full_chain_test.py new file mode 100755 index 00000000000..f0010bd498e --- /dev/null +++ b/Examples/Scripts/Python/full_chain_test.py @@ -0,0 +1,805 @@ +#!/usr/bin/env python3 + +import sys, os, argparse, pathlib + + +def parse_args(): + from acts.examples.reconstruction import SeedingAlgorithm + + parser = argparse.ArgumentParser( + description=""" +Script to test the full chain ACTS simulation and reconstruction. + +This script is provided for interactive developer testing only. +It is not intended (and not supported) for end user use, automated testing, +and certainly should never be called in production. The Python API is the +proper way to access the ActsExamples from scripts. The other Examples/Scripts +are much better examples of how to do that. physmon in the CI is the proper +way to do automated integration tests. This script is only for the case of +interactive testing with one-off configuration specified by command-line options. +""" + ) + parser.add_argument( + "-G", + "--generic-detector", + action="store_true", + help="Use generic detector geometry and config", + ) + parser.add_argument( + "--odd", + default=True, + action=argparse.BooleanOptionalAction, + help="Use Open Data Detector geometry and config (default unless overridden by -G or -A). Requires ACTS_BUILD_ODD.", + ) + parser.add_argument( + "-A", + "--itk", + action="store_true", + help="Use ATLAS ITk geometry and config. Requires acts-itk/ in current directory.", + ) + parser.add_argument( + "-g", + "--geant4", + action="store_true", + help="Use Geant4 instead of Fatras for detector simulation", + ) + parser.add_argument( + "--edm4hep", + type=pathlib.Path, + help="Use edm4hep inputs", + ) + parser.add_argument( + "-b", + "--bf-constant", + action="store_true", + help="Use constant 2T B-field also for ITk; and don't include material map", + ) + parser.add_argument( + "-j", + "--threads", + type=int, + default=-1, + help="Number of parallel threads, negative for automatic (default).", + ) + parser.add_argument( + "-o", + "--output-dir", + "--output", + default=None, + type=pathlib.Path, + help="Directory to write outputs to", + ) + parser.add_argument( + "-O", + "--output-detail", + action="count", + default=0, + help="fewer output files. Use -OO for more output files. Use -OOO to disable all output.", + ) + parser.add_argument( + "-c", + "--output-csv", + action="count", + default=0, + help="Use CSV output instead of ROOT. Specify -cc to output both.", + ) + parser.add_argument( + "-n", + "--events", + type=int, + default=100, + help="The number of events to process (default=%(default)d).", + ) + parser.add_argument( + "-s", + "--skip", + type=int, + default=0, + help="Number of events to skip (default=%(default)d)", + ) + # Many of the following option names were inherited from the old examples binaries and full_chain_odd.py. + # To maintain compatibility, both option names are supported. + parser.add_argument( + "-N", + "--gen-nparticles", + "--gun-particles", + type=int, + default=4, + help="Number of generated particles per vertex from the particle gun (default=%(default)d).", + ) + parser.add_argument( + "-M", + "--gen-nvertices", + "--gun-multiplicity", + "--ttbar-pu", + type=int, + default=200, + help="Number of vertices per event (multiplicity) from the particle gun; or number of pileup events (default=%(default)d)", + ) + parser.add_argument( + "-t", + "--ttbar-pu200", + "--ttbar", + action="store_true", + help="Generate ttbar + mu=200 pile-up using Pythia8", + ) + parser.add_argument( + "-p", + "--gen-pt-range", + "--gun-pt-range", + default="1:10", + help="transverse momentum (pT) range (min:max) of the particle gun in GeV (default=%(default)s)", + ) + parser.add_argument( + "--gen-eta-range", + "--gun-eta-range", + help="Eta range (min:max) of the particle gun (default -2:2 (Generic), -3:3 (ODD), -4:4 (ITk))", + ) + parser.add_argument( + "--gen-cos-theta", + action="store_true", + help="Sample eta as cos(theta) and not uniform", + ) + parser.add_argument( + "-r", + "--random-seed", + type=int, + default=42, + help="Random number seed (default=%(default)d)", + ) + parser.add_argument( + "-F", + "--disable-fpemon", + action="store_true", + help="sets ACTS_SEQUENCER_DISABLE_FPEMON=1", + ) + parser.add_argument( + "-l", + "--loglevel", + type=int, + default=2, + help="The output log level. Please set the wished number (0 = VERBOSE, 1 = DEBUG, 2 = INFO (default), 3 = WARNING, 4 = ERROR, 5 = FATAL).", + ) + parser.add_argument( + "-d", + "--dump-args-calls", + action="store_true", + help="Show pybind function call details", + ) + parser.add_argument( + "--digi-config", + type=pathlib.Path, + help="Digitization configuration file", + ) + parser.add_argument( + "--material-config", + type=pathlib.Path, + help="Material map configuration file", + ) + parser.add_argument( + "-S", + "--seeding-algorithm", + action=EnumAction, + enum=SeedingAlgorithm, + default=SeedingAlgorithm.Default, + help="Select the seeding algorithm to use", + ) + parser.add_argument( + "--ckf", + default=True, + action=argparse.BooleanOptionalAction, + help="Switch CKF on/off", + ) + parser.add_argument( + "--reco", + default=True, + action=argparse.BooleanOptionalAction, + help="Switch reco on/off", + ) + parser.add_argument( + "--vertexing", + default=True, + action=argparse.BooleanOptionalAction, + help="Switch vertexing on/off", + ) + parser.add_argument( + "--MLSeedFilter", + action="store_true", + help="Use the ML seed filter to select seed after the seeding step", + ) + parser.add_argument( + "--ambi-solver", + type=str, + choices=["greedy", "scoring", "ML", "none"], + default="greedy", + help="Set which ambiguity solver to use (default=%(default)s)", + ) + parser.add_argument( + "--ambi-config", + type=pathlib.Path, + default=pathlib.Path.cwd() / "ambi_config.json", + help="Set the configuration file for the Score Based ambiguity resolution (default=%(default)s)", + ) + return parser.parse_args() + + +def full_chain(args): + import acts + + # keep these in memory after we return the sequence + global detector, trackingGeometry, decorators, field, rnd + global logger + + if args.disable_fpemon: + os.environ["ACTS_SEQUENCER_DISABLE_FPEMON"] = "1" + + if args.dump_args_calls: + acts.examples.dump_args_calls(locals()) + + logger = acts.logging.getLogger("full_chain_test") + + nDetArgs = [args.generic_detector, args.odd, args.itk].count(True) + if nDetArgs == 0: + args.generic_detector = True + elif nDetArgs == 2: + args.odd = False + nDetArgs = [args.generic_detector, args.odd, args.itk].count(True) + if nDetArgs != 1: + logger.fatal("require exactly one of: --generic-detector --odd --itk") + sys.exit(2) + if args.generic_detector: + detname = "gen" + elif args.itk: + detname = "itk" + elif args.odd: + detname = "odd" + + u = acts.UnitConstants + + if args.output_detail == 3: + outputDirLess = None + elif args.output_dir is None: + outputDirLess = pathlib.Path.cwd() / f"{detname}_output" + else: + outputDirLess = args.output_dir + + outputDir = None if args.output_detail == 1 else outputDirLess + outputDirMore = None if args.output_detail in (0, 1) else outputDirLess + + outputDirRoot = outputDir if args.output_csv != 1 else None + outputDirLessRoot = outputDirLess if args.output_csv != 1 else None + outputDirMoreRoot = outputDirMore if args.output_csv != 1 else None + outputDirCsv = outputDir if args.output_csv != 0 else None + outputDirLessCsv = outputDirLess if args.output_csv != 0 else None + outputDirMoreCsv = outputDirMore if args.output_csv != 0 else None + + # fmt: off + if args.generic_detector: + etaRange = (-2.0, 2.0) + ptMin = 0.5 * u.GeV + rhoMax = 24.0 * u.mm + geo_dir = pathlib.Path(acts.__file__).resolve().parent.parent.parent.parent.parent + if args.loglevel <= 2: + logger.info(f"Load Generic Detector from {geo_dir}") + if args.digi_config is None: + args.digi_config = geo_dir / "Examples/Algorithms/Digitization/share/default-smearing-config-generic.json" + seedingConfigFile = geo_dir / "Examples/Algorithms/TrackFinding/share/geoSelection-genericDetector.json" + args.bf_constant = True + detector, trackingGeometry, decorators = acts.examples.GenericDetector.create() + elif args.odd: + import acts.examples.odd + etaRange = (-3.0, 3.0) + ptMin = 1.0 * u.GeV + rhoMax = 24.0 * u.mm + beamTime = 1.0 * u.ns + geo_dir = acts.examples.odd.getOpenDataDetectorDirectory() + if args.loglevel <= 2: + logger.info(f"Load Open Data Detector from {geo_dir.resolve()}") + if args.digi_config is None: + args.digi_config = geo_dir / "config/odd-digi-smearing-config.json" + seedingConfigFile = geo_dir / "config/odd-seeding-config.json" + if args.material_config is None: + args.material_config = geo_dir / "data/odd-material-maps.root" + args.bf_constant = True + detector, trackingGeometry, decorators = acts.examples.odd.getOpenDataDetector( + odd_dir=geo_dir, + mdecorator=acts.IMaterialDecorator.fromFile(args.material_config), + ) + elif args.itk: + import acts.examples.itk as itk + etaRange = (-4.0, 4.0) + ptMin = 1.0 * u.GeV + rhoMax = 28.0 * u.mm + beamTime = 5.0 * u.ns + geo_dir = pathlib.Path("acts-itk") + if args.loglevel <= 2: + logger.info(f"Load ATLAS ITk from {geo_dir.resolve()}") + if args.digi_config is None: + args.digi_config = geo_dir / "itk-hgtd/itk-smearing-config.json" + seedingConfigFile = geo_dir / "itk-hgtd/geoSelection-ITk.json" + # args.material_config defaulted in itk.buildITkGeometry: geo_dir / "itk-hgtd/material-maps-ITk-HGTD.json" + bFieldFile = geo_dir / "bfield/ATLAS-BField-xyz.root" + detector, trackingGeometry, decorators = itk.buildITkGeometry( + geo_dir, + customMaterialFile=args.material_config, + material=not args.bf_constant, + logLevel=acts.logging.Level(args.loglevel), + ) + # fmt: on + + if args.bf_constant: + field = acts.ConstantBField(acts.Vector3(0.0, 0.0, 2.0 * u.T)) + else: + logger.info("Create magnetic field map from %s" % str(bFieldFile)) + field = acts.examples.MagneticFieldMapXyz(str(bFieldFile)) + rnd = acts.examples.RandomNumbers(seed=42) + + from acts.examples.simulation import ( + MomentumConfig, + EtaConfig, + PhiConfig, + ParticleConfig, + ParticleSelectorConfig, + addDigitization, + addParticleSelection, + ) + + s = acts.examples.Sequencer( + events=args.events, + skip=args.skip, + numThreads=args.threads if not (args.geant4 and args.threads == -1) else 1, + logLevel=acts.logging.Level(args.loglevel), + outputDir="" if outputDirLess is None else str(outputDirLess), + ) + + # is this needed? + for d in decorators: + s.addContextDecorator(d) + + preSelectParticles = ( + ParticleSelectorConfig( + rho=(0.0 * u.mm, rhoMax), + absZ=(0.0 * u.mm, 1.0 * u.m), + eta=etaRange, + pt=(150 * u.MeV, None), + ) + if args.edm4hep or args.geant4 or args.ttbar_pu200 + else ParticleSelectorConfig() + ) + + postSelectParticles = ParticleSelectorConfig( + pt=(ptMin, None), + eta=etaRange if not args.generic_detector else (None, None), + measurements=(9, None), + removeNeutral=True, + ) + + if args.edm4hep: + import acts.examples.edm4hep + + edm4hepReader = acts.examples.edm4hep.EDM4hepReader( + inputPath=str(args.edm4hep), + inputSimHits=[ + "PixelBarrelReadout", + "PixelEndcapReadout", + "ShortStripBarrelReadout", + "ShortStripEndcapReadout", + "LongStripBarrelReadout", + "LongStripEndcapReadout", + ], + outputParticlesGenerator="particles_input", + outputParticlesInitial="particles_initial", + outputParticlesFinal="particles_final", + outputSimHits="simhits", + graphvizOutput="graphviz", + dd4hepDetector=detector, + trackingGeometry=trackingGeometry, + sortSimHitsInTime=True, + level=acts.logging.INFO, + ) + s.addReader(edm4hepReader) + s.addWhiteboardAlias("particles", edm4hepReader.config.outputParticlesGenerator) + + addParticleSelection( + s, + config=preSelectParticles, + inputParticles="particles", + outputParticles="particles_selected", + ) + + else: + + if not args.ttbar_pu200: + from acts.examples.simulation import addParticleGun + + addParticleGun( + s, + MomentumConfig( + *strToRange(args.gen_pt_range, "--gen-pt-range", u.GeV), + transverse=True, + ), + EtaConfig( + *( + strToRange(args.gen_eta_range, "--gen-eta-range") + if args.gen_eta_range + else etaRange + ), + uniform=( + not args.gen_cos_theta + if args.gen_cos_theta or not args.odd + else None + ), + ), + PhiConfig(0.0, 360.0 * u.degree) if not args.itk else PhiConfig(), + ParticleConfig( + args.gen_nparticles, acts.PdgParticle.eMuon, randomizeCharge=True + ), + vtxGen=( + acts.examples.GaussianVertexGenerator( + mean=acts.Vector4(0, 0, 0, 0), + stddev=acts.Vector4( + 0.0125 * u.mm, 0.0125 * u.mm, 55.5 * u.mm, 1.0 * u.ns + ), + ) + if args.odd + else None + ), + multiplicity=args.gen_nvertices, + rnd=rnd, + outputDirRoot=outputDirMoreRoot, + outputDirCsv=outputDirMoreCsv, + ) + else: + from acts.examples.simulation import addPythia8 + + addPythia8( + s, + hardProcess=["Top:qqbar2ttbar=on"], + npileup=args.gen_nvertices, + vtxGen=acts.examples.GaussianVertexGenerator( + stddev=acts.Vector4( + 0.0125 * u.mm, 0.0125 * u.mm, 55.5 * u.mm, 5.0 * u.ns + ), + mean=acts.Vector4(0, 0, 0, 0), + ), + rnd=rnd, + outputDirRoot=outputDirRoot, + outputDirCsv=outputDirCsv, + ) + + if not args.geant4: + from acts.examples.simulation import addFatras + + addFatras( + s, + trackingGeometry, + field, + rnd=rnd, + preSelectParticles=preSelectParticles, + postSelectParticles=postSelectParticles, + outputDirRoot=outputDirRoot, + outputDirCsv=outputDirCsv, + ) + else: + if s.config.numThreads != 1: + logger.fatal( + f"Geant 4 simulation does not support multi-threading (threads={s.config.numThreads})" + ) + sys.exit(2) + + from acts.examples.simulation import addGeant4 + + # Pythia can sometime simulate particles outside the world volume, a cut on the Z of the track help mitigate this effect + # Older version of G4 might not work, this as has been tested on version `geant4-11-00-patch-03` + # For more detail see issue #1578 + addGeant4( + s, + detector, + trackingGeometry, + field, + rnd=rnd, + preSelectParticles=preSelectParticles, + postSelectParticles=postSelectParticles, + killVolume=trackingGeometry.highestTrackingVolume, + killAfterTime=25 * u.ns, + outputDirRoot=outputDirRoot, + outputDirCsv=outputDirCsv, + ) + + addDigitization( + s, + trackingGeometry, + field, + digiConfigFile=args.digi_config, + rnd=rnd, + outputDirRoot=outputDirRoot, + outputDirCsv=outputDirCsv, + ) + + if not args.reco: + return s + + from acts.examples.reconstruction import ( + addSeeding, + ParticleSmearingSigmas, + addCKFTracks, + CkfConfig, + SeedingAlgorithm, + TrackSelectorConfig, + addAmbiguityResolution, + AmbiguityResolutionConfig, + addVertexFitting, + VertexFinder, + ) + + if args.itk and args.seeding_algorithm == SeedingAlgorithm.Default: + seedingAlgConfig = itk.itkSeedingAlgConfig( + itk.InputSpacePointsType.PixelSpacePoints + ) + else: + seedingAlgConfig = [] + + addSeeding( + s, + trackingGeometry, + field, + *seedingAlgConfig, + seedingAlgorithm=args.seeding_algorithm, + **( + dict( + particleSmearingSigmas=ParticleSmearingSigmas(ptRel=0.01), + rnd=rnd, + ) + if args.seeding_algorithm == SeedingAlgorithm.TruthSmeared + else {} + ), + initialSigmas=[ + 1 * u.mm, + 1 * u.mm, + 1 * u.degree, + 1 * u.degree, + 0.1 * u.e / u.GeV, + 1 * u.ns, + ], + initialSigmaPtRel=0.1, + initialVarInflation=[1.0] * 6, + geoSelectionConfigFile=seedingConfigFile, + outputDirRoot=outputDirLessRoot, + outputDirCsv=outputDirLessCsv, + ) + + if args.MLSeedFilter: + from acts.examples.reconstruction import ( + addSeedFilterML, + SeedFilterMLDBScanConfig, + ) + + addSeedFilterML( + s, + SeedFilterMLDBScanConfig( + epsilonDBScan=0.03, minPointsDBScan=2, minSeedScore=0.1 + ), + onnxModelFile=str( + geo_dir + / "Examples/Scripts/Python/MLAmbiguityResolution/seedDuplicateClassifier.onnx" + ), + outputDirRoot=outputDirLessRoot, + outputDirCsv=outputDirLessCsv, + ) + + if not args.ckf: + return s + + if args.seeding_algorithm != SeedingAlgorithm.TruthSmeared: + ckfConfig = CkfConfig( + seedDeduplication=True, + stayOnSeed=True, + ) + else: + ckfConfig = CkfConfig() + + if not args.itk: + trackSelectorConfig = TrackSelectorConfig( + pt=(ptMin if args.ttbar_pu200 else 0.0, None), + absEta=(None, 3.0), + loc0=(-4.0 * u.mm, 4.0 * u.mm), + nMeasurementsMin=7, + maxHoles=2, + maxOutliers=2, + ) + ckfConfig = ckfConfig._replace( + chi2CutOffMeasurement=15.0, + chi2CutOffOutlier=25.0, + numMeasurementsCutOff=10, + ) + else: + # fmt: off + trackSelectorConfig = ( + TrackSelectorConfig(absEta=(None, 2.0), pt=(0.9 * u.GeV, None), nMeasurementsMin=9, maxHoles=2, maxOutliers=2, maxSharedHits=2), + TrackSelectorConfig(absEta=(None, 2.6), pt=(0.4 * u.GeV, None), nMeasurementsMin=8, maxHoles=2, maxOutliers=2, maxSharedHits=2), + TrackSelectorConfig(absEta=(None, 4.0), pt=(0.4 * u.GeV, None), nMeasurementsMin=7, maxHoles=2, maxOutliers=2, maxSharedHits=2), + ) + # fmt: on + + if args.odd: + ckfConfig = ckfConfig._replace( + pixelVolumes=[16, 17, 18], + stripVolumes=[23, 24, 25], + maxPixelHoles=1, + maxStripHoles=2, + constrainToVolumes=[ + 2, # beam pipe + 32, + 4, # beam pip gap + 16, + 17, + 18, # pixel + 20, # PST + 23, + 24, + 25, # short strip + 26, + 8, # long strip gap + 28, + 29, + 30, # long strip + ], + ) + elif args.itk: + ckfConfig = ckfConfig._replace( + # ITk volumes from Noemi's plot + pixelVolumes=[8, 9, 10, 13, 14, 15, 16, 18, 19, 20], + stripVolumes=[22, 23, 24], + maxPixelHoles=1, + maxStripHoles=2, + ) + + if args.output_detail == 1: + writeDetail = dict(writeTrackSummary=False) + elif args.output_detail == 2: + writeDetail = dict(writeTrackStates=True) + else: + writeDetail = {} + + if args.odd and args.output_detail != 1: + writeCovMat = dict(writeCovMat=True) + else: + writeCovMat = {} + + addCKFTracks( + s, + trackingGeometry, + field, + trackSelectorConfig=trackSelectorConfig, + ckfConfig=ckfConfig, + **writeDetail, + **writeCovMat, + outputDirRoot=outputDirLessRoot, + outputDirCsv=outputDirLessCsv, + ) + + if args.ambi_solver == "ML": + + from acts.examples.reconstruction import ( + addAmbiguityResolutionML, + AmbiguityResolutionMLConfig, + ) + + addAmbiguityResolutionML( + s, + AmbiguityResolutionMLConfig( + maximumSharedHits=3, maximumIterations=1000000, nMeasurementsMin=7 + ), + onnxModelFile=str( + geo_dir + / "Examples/Scripts/Python/MLAmbiguityResolution/duplicateClassifier.onnx" + ), + outputDirRoot=outputDirLessRoot, + outputDirCsv=outputDirLessCsv, + ) + + elif args.ambi_solver == "scoring": + + from acts.examples.reconstruction import ( + addScoreBasedAmbiguityResolution, + ScoreBasedAmbiguityResolutionConfig, + ) + import math + + addScoreBasedAmbiguityResolution( + s, + ScoreBasedAmbiguityResolutionConfig( + minScore=0, + minScoreSharedTracks=1, + maxShared=2, + maxSharedTracksPerMeasurement=2, + pTMax=1400, + pTMin=0.5, + phiMax=math.pi, + phiMin=-math.pi, + etaMax=4, + etaMin=-4, + useAmbiguityFunction=False, + ), + ambiVolumeFile=args.ambi_config, + **writeCovMat, + outputDirRoot=outputDirLessRoot, + outputDirCsv=outputDirLessCsv, + ) + + elif args.ambi_solver == "greedy": + + addAmbiguityResolution( + s, + AmbiguityResolutionConfig( + maximumSharedHits=3, + maximumIterations=10000 if args.itk else 1000000, + nMeasurementsMin=6 if args.itk else 7, + ), + **writeDetail, + **writeCovMat, + outputDirRoot=outputDirLessRoot, + outputDirCsv=outputDirLessCsv, + ) + + if args.vertexing: + addVertexFitting( + s, + field, + vertexFinder=VertexFinder.AMVF, + outputDirRoot=outputDirLessRoot, + ) + + return s + + +def strToRange(s: str, optName: str, unit: float = 1.0): + global logger + try: + range = [float(e) * unit if e != "" else None for e in s.split(":")] + except ValueError: + range = [] + if len(range) == 1: + range.append(range[0]) # 100 -> 100:100 + if len(range) != 2: + logger.fatal(f"bad option value: {optName} {s}") + sys.exit(2) + return range + + +# Graciously taken from https://stackoverflow.com/a/60750535/4280680 (via seeding.py) +class EnumAction(argparse.Action): + """ + Argparse action for handling Enums + """ + + def __init__(self, **kwargs): + import enum + + # Pop off the type value + enum_type = kwargs.pop("enum", None) + + # Ensure an Enum subclass is provided + if enum_type is None: + raise ValueError("type must be assigned an Enum when using EnumAction") + if not issubclass(enum_type, enum.Enum): + raise TypeError("type must be an Enum when using EnumAction") + + # Generate choices from the Enum + kwargs.setdefault("choices", tuple(e.name for e in enum_type)) + + super(EnumAction, self).__init__(**kwargs) + + self._enum = enum_type + + def __call__(self, parser, namespace, values, option_string=None): + for e in self._enum: + if e.name == values: + setattr(namespace, self.dest, e) + break + else: + raise ValueError("%s is not a validly enumerated algorithm." % values) + + +# main program: parse arguments, setup sequence, and run the full chain +full_chain(parse_args()).run() From 11746d11c294c1a94ee9d66afbf6061eceb29a98 Mon Sep 17 00:00:00 2001 From: "Alexander J. Pfleger" <70842573+AJPfleger@users.noreply.github.com> Date: Thu, 21 Nov 2024 11:12:47 +0100 Subject: [PATCH 28/49] chore: move requirements file for fpe-masks (#3884) This way, all requirements files have the same name and just different location. Easier for maintaining them. --- .github/workflows/checks.yml | 2 +- CI/{requirements_fpe_masks.in => fpe_masks/requirements.in} | 0 CI/{requirements_fpe_masks.txt => fpe_masks/requirements.txt} | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename CI/{requirements_fpe_masks.in => fpe_masks/requirements.in} (100%) rename CI/{requirements_fpe_masks.txt => fpe_masks/requirements.txt} (100%) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index edd31d051a4..e84044776a8 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -145,7 +145,7 @@ jobs: python-version: '3.12' - name: Install dependencies run: > - pip install -r CI/requirements_fpe_masks.txt + pip install -r CI/fpe_masks/requirements.txt - name: Check run: > CI/check_fpe_masks.py --token ${{ secrets.GITHUB_TOKEN }} diff --git a/CI/requirements_fpe_masks.in b/CI/fpe_masks/requirements.in similarity index 100% rename from CI/requirements_fpe_masks.in rename to CI/fpe_masks/requirements.in diff --git a/CI/requirements_fpe_masks.txt b/CI/fpe_masks/requirements.txt similarity index 100% rename from CI/requirements_fpe_masks.txt rename to CI/fpe_masks/requirements.txt From 863240e0e6da493f669efd9904f9d4b204c2db0a Mon Sep 17 00:00:00 2001 From: "Alexander J. Pfleger" <70842573+AJPfleger@users.noreply.github.com> Date: Thu, 21 Nov 2024 15:56:38 +0100 Subject: [PATCH 29/49] chore: bump Python requirements (#3875) Seems to work smoothly, only `sphinx` does not work without problems since `7.4.0`. Therefore set to last working version. I will look into this, to get `sphinx` to `8.x.x` in a followup PR. blocked: - https://github.com/acts-project/acts/pull/3884 --- CI/clang_tidy/requirements.txt | 20 +++--- CI/fpe_masks/requirements.txt | 54 ++++++++------ Examples/Python/tests/requirements.txt | 28 ++++---- Examples/Scripts/requirements.txt | 74 +++++++++++-------- docs/requirements.in | 2 +- docs/requirements.txt | 98 +++++++++++++------------- 6 files changed, 153 insertions(+), 123 deletions(-) diff --git a/CI/clang_tidy/requirements.txt b/CI/clang_tidy/requirements.txt index 6bd13b68d95..d0d78f5904e 100644 --- a/CI/clang_tidy/requirements.txt +++ b/CI/clang_tidy/requirements.txt @@ -4,41 +4,41 @@ # # pip-compile CI/clang_tidy/requirements.in # -annotated-types==0.6.0 +annotated-types==0.7.0 # via pydantic appdirs==1.4.4 # via fs -codereport==0.3.2 +codereport==0.4.0 # via -r CI/clang_tidy/requirements.in fs==2.4.16 # via codereport -jinja2==3.1.2 +jinja2==3.1.4 # via codereport markdown-it-py==3.0.0 # via rich -markupsafe==2.1.3 +markupsafe==3.0.2 # via jinja2 mdurl==0.1.2 # via markdown-it-py -pydantic==2.5.2 +pydantic==2.9.2 # via -r CI/clang_tidy/requirements.in -pydantic-core==2.14.5 +pydantic-core==2.23.4 # via pydantic -pygments==2.17.2 +pygments==2.18.0 # via # codereport # rich python-slugify==6.1.2 # via codereport -pyyaml==6.0.1 +pyyaml==6.0.2 # via -r CI/clang_tidy/requirements.in -rich==13.7.0 +rich==13.9.4 # via -r CI/clang_tidy/requirements.in six==1.16.0 # via fs text-unidecode==1.3 # via python-slugify -typing-extensions==4.8.0 +typing-extensions==4.12.2 # via # pydantic # pydantic-core diff --git a/CI/fpe_masks/requirements.txt b/CI/fpe_masks/requirements.txt index 07e86bd58d5..01f945e3d74 100644 --- a/CI/fpe_masks/requirements.txt +++ b/CI/fpe_masks/requirements.txt @@ -2,49 +2,61 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile CI/requirements_fpe_masks.in +# pip-compile CI/fpe_masks/requirements.in # -aiohttp==3.9.1 - # via -r CI/requirements_fpe_masks.in +aiohappyeyeballs==2.4.3 + # via aiohttp +aiohttp==3.11.6 + # via -r CI/fpe_masks/requirements.in aiosignal==1.3.1 # via aiohttp -attrs==23.1.0 +attrs==24.2.0 # via aiohttp -cffi==1.15.1 +cffi==1.17.1 # via cryptography -click==8.1.4 +click==8.1.7 # via typer -cryptography==41.0.1 +cryptography==43.0.3 # via pyjwt -frozenlist==1.4.0 +frozenlist==1.5.0 # via # aiohttp # aiosignal gidgethub==5.3.0 - # via -r CI/requirements_fpe_masks.in -idna==3.4 + # via -r CI/fpe_masks/requirements.in +idna==3.10 # via yarl markdown-it-py==3.0.0 # via rich mdurl==0.1.2 # via markdown-it-py -multidict==6.0.4 +multidict==6.1.0 + # via + # aiohttp + # yarl +propcache==0.2.0 # via # aiohttp # yarl -pycparser==2.21 +pycparser==2.22 # via cffi -pygments==2.15.1 +pygments==2.18.0 # via rich -pyjwt[crypto]==2.7.0 - # via gidgethub -rich==13.4.2 - # via -r CI/requirements_fpe_masks.in -typer==0.9.0 - # via -r CI/requirements_fpe_masks.in -typing-extensions==4.7.1 +pyjwt[crypto]==2.10.0 + # via + # gidgethub + # pyjwt +rich==13.9.4 + # via + # -r CI/fpe_masks/requirements.in + # typer +shellingham==1.5.4 + # via typer +typer==0.13.1 + # via -r CI/fpe_masks/requirements.in +typing-extensions==4.12.2 # via typer uritemplate==4.1.1 # via gidgethub -yarl==1.9.2 +yarl==1.17.2 # via aiohttp diff --git a/Examples/Python/tests/requirements.txt b/Examples/Python/tests/requirements.txt index c4067c4adf6..535d3458274 100644 --- a/Examples/Python/tests/requirements.txt +++ b/Examples/Python/tests/requirements.txt @@ -4,42 +4,46 @@ # # pip-compile Examples/Python/tests/requirements.in # -awkward==2.6.1 +awkward==2.7.0 # via # -r Examples/Python/tests/requirements.in # uproot -awkward-cpp==29 +awkward-cpp==41 # via awkward -execnet==2.0.2 +cramjam==2.9.0 + # via uproot +execnet==2.1.1 # via pytest-xdist -fsspec==2024.2.0 +fsspec==2024.10.0 # via # awkward # uproot iniconfig==2.0.0 # via pytest -numpy==1.26.4 +numpy==2.1.3 # via # awkward # awkward-cpp # uproot -packaging==23.2 +packaging==24.2 # via # awkward # pytest # uproot -pluggy==1.4.0 +pluggy==1.5.0 # via pytest -pytest==8.0.0 +pytest==8.3.3 # via # -r Examples/Python/tests/requirements.in # pytest-check # pytest-xdist -pytest-check==2.3.1 +pytest-check==2.4.1 # via -r Examples/Python/tests/requirements.in -pytest-xdist==3.5.0 +pytest-xdist==3.6.1 # via -r Examples/Python/tests/requirements.in -pyyaml==6.0.1 +pyyaml==6.0.2 # via -r Examples/Python/tests/requirements.in -uproot==5.2.2 +uproot==5.5.0 # via -r Examples/Python/tests/requirements.in +xxhash==3.5.0 + # via uproot diff --git a/Examples/Scripts/requirements.txt b/Examples/Scripts/requirements.txt index 371122cba63..05f1e49374f 100644 --- a/Examples/Scripts/requirements.txt +++ b/Examples/Scripts/requirements.txt @@ -4,45 +4,51 @@ # # pip-compile Examples/Scripts/requirements.in # -annotated-types==0.6.0 +annotated-types==0.7.0 # via pydantic -awkward==2.5.0 +awkward==2.7.0 # via # -r Examples/Scripts/requirements.in # uproot -awkward-cpp==26 +awkward-cpp==41 # via awkward -boost-histogram==1.4.0 +boost-histogram==1.5.0 # via hist click==8.1.7 # via # histoprint # typer -contourpy==1.2.0 +contourpy==1.3.1 # via matplotlib +cramjam==2.9.0 + # via uproot cycler==0.12.1 # via matplotlib -fonttools==4.46.0 +fonttools==4.55.0 # via matplotlib -hist==2.7.2 +fsspec==2024.10.0 + # via + # awkward + # uproot +hist==2.8.0 # via -r Examples/Scripts/requirements.in -histoprint==2.4.0 +histoprint==2.5.0 # via hist -kiwisolver==1.4.5 +kiwisolver==1.4.7 # via matplotlib markdown-it-py==3.0.0 # via rich -matplotlib==3.8.2 +matplotlib==3.9.2 # via # -r Examples/Scripts/requirements.in # mplhep mdurl==0.1.2 # via markdown-it-py -mplhep==0.3.31 +mplhep==0.3.55 # via -r Examples/Scripts/requirements.in -mplhep-data==0.0.3 +mplhep-data==0.0.4 # via mplhep -numpy==1.26.2 +numpy==2.1.3 # via # awkward # awkward-cpp @@ -56,50 +62,56 @@ numpy==1.26.2 # scipy # uhi # uproot -packaging==23.2 +packaging==24.2 # via # awkward # matplotlib # mplhep # uproot -pandas==2.1.3 +pandas==2.2.3 # via -r Examples/Scripts/requirements.in -pillow==10.1.0 +pillow==11.0.0 # via matplotlib -pydantic==2.5.2 +pydantic==2.9.2 # via -r Examples/Scripts/requirements.in -pydantic-core==2.14.5 +pydantic-core==2.23.4 # via pydantic -pygments==2.17.2 +pygments==2.18.0 # via rich -pyparsing==3.1.1 +pyparsing==3.2.0 # via matplotlib -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # matplotlib # pandas -pytz==2023.3.post1 +pytz==2024.2 # via pandas -pyyaml==6.0.1 - # via -r Examples/Scripts/requirements.in -rich==13.7.0 +pyyaml==6.0.2 # via -r Examples/Scripts/requirements.in -scipy==1.11.4 +rich==13.9.4 + # via + # -r Examples/Scripts/requirements.in + # typer +scipy==1.14.1 # via -r Examples/Scripts/requirements.in +shellingham==1.5.4 + # via typer six==1.16.0 # via python-dateutil -typer==0.9.0 +typer==0.13.1 # via -r Examples/Scripts/requirements.in -typing-extensions==4.8.0 +typing-extensions==4.12.2 # via # pydantic # pydantic-core # typer -tzdata==2023.3 +tzdata==2024.2 # via pandas -uhi==0.4.0 +uhi==0.5.0 # via # histoprint # mplhep -uproot==5.1.2 +uproot==5.5.0 # via -r Examples/Scripts/requirements.in +xxhash==3.5.0 + # via uproot diff --git a/docs/requirements.in b/docs/requirements.in index cd5b9dff585..1633d176167 100644 --- a/docs/requirements.in +++ b/docs/requirements.in @@ -1,6 +1,6 @@ breathe myst-parser -sphinx +sphinx==7.3.7 sphinx_rtd_theme docutils rich diff --git a/docs/requirements.txt b/docs/requirements.txt index dd60e5e5724..0ac5d41d6b6 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -4,52 +4,54 @@ # # pip-compile docs/requirements.in # -aiohttp==3.9.1 +aiohappyeyeballs==2.4.3 + # via aiohttp +aiohttp==3.11.5 # via -r docs/requirements.in aiosignal==1.3.1 # via aiohttp -alabaster==0.7.13 +alabaster==0.7.16 # via sphinx -annotated-types==0.6.0 +annotated-types==0.7.0 # via pydantic -attrs==23.1.0 +attrs==24.2.0 # via aiohttp -babel==2.13.1 +babel==2.16.0 # via sphinx breathe==4.35.0 # via -r docs/requirements.in -certifi==2023.11.17 +certifi==2024.8.30 # via requests -cffi==1.16.0 +cffi==1.17.1 # via cryptography -charset-normalizer==3.3.2 +charset-normalizer==3.4.0 # via requests click==8.1.7 # via typer -cryptography==41.0.7 +cryptography==43.0.3 # via pyjwt -docutils==0.20.1 +docutils==0.21.2 # via # -r docs/requirements.in # breathe # myst-parser # sphinx # sphinx-rtd-theme -frozenlist==1.4.0 +frozenlist==1.5.0 # via # aiohttp # aiosignal -fsspec==2023.12.0 +fsspec==2024.10.0 # via -r docs/requirements.in gidgethub==5.3.0 # via -r docs/requirements.in -idna==3.6 +idna==3.10 # via # requests # yarl imagesize==1.4.1 # via sphinx -jinja2==3.1.2 +jinja2==3.1.4 # via # -r docs/requirements.in # myst-parser @@ -59,85 +61,85 @@ markdown-it-py==3.0.0 # mdit-py-plugins # myst-parser # rich -markupsafe==2.1.3 +markupsafe==3.0.2 # via jinja2 -mdit-py-plugins==0.4.0 +mdit-py-plugins==0.4.2 # via myst-parser mdurl==0.1.2 # via markdown-it-py -multidict==6.0.4 +multidict==6.1.0 # via # aiohttp # yarl -myst-parser==2.0.0 +myst-parser==4.0.0 # via -r docs/requirements.in -packaging==23.2 +packaging==24.2 # via sphinx -pycparser==2.21 +propcache==0.2.0 + # via + # aiohttp + # yarl +pycparser==2.22 # via cffi -pydantic==2.5.2 +pydantic==2.9.2 # via -r docs/requirements.in -pydantic-core==2.14.5 +pydantic-core==2.23.4 # via pydantic -pygments==2.17.2 +pygments==2.18.0 # via # rich # sphinx -pyjwt[crypto]==2.8.0 +pyjwt[crypto]==2.10.0 # via gidgethub -python-dotenv==1.0.0 +python-dotenv==1.0.1 # via -r docs/requirements.in -pyyaml==6.0.1 +pyyaml==6.0.2 # via myst-parser -requests==2.31.0 +requests==2.32.3 # via sphinx -rich==13.7.0 - # via -r docs/requirements.in +rich==13.9.4 + # via + # -r docs/requirements.in + # typer +shellingham==1.5.4 + # via typer snowballstemmer==2.2.0 # via sphinx -sphinx==7.2.6 +sphinx==7.3.7 # via # -r docs/requirements.in # breathe # myst-parser # sphinx-rtd-theme - # sphinxcontrib-applehelp - # sphinxcontrib-devhelp - # sphinxcontrib-htmlhelp # sphinxcontrib-jquery - # sphinxcontrib-qthelp - # sphinxcontrib-serializinghtml -sphinx-rtd-theme==2.0.0 +sphinx-rtd-theme==3.0.2 # via -r docs/requirements.in -sphinxcontrib-applehelp==1.0.7 +sphinxcontrib-applehelp==2.0.0 # via sphinx -sphinxcontrib-devhelp==1.0.5 +sphinxcontrib-devhelp==2.0.0 # via sphinx -sphinxcontrib-htmlhelp==2.0.4 +sphinxcontrib-htmlhelp==2.1.0 # via sphinx sphinxcontrib-jquery==4.1 # via sphinx-rtd-theme sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-qthelp==1.0.6 +sphinxcontrib-qthelp==2.0.0 # via sphinx -sphinxcontrib-serializinghtml==1.1.9 +sphinxcontrib-serializinghtml==2.0.0 # via sphinx toml==0.10.2 # via -r docs/requirements.in -typer==0.9.0 +typer==0.13.1 # via -r docs/requirements.in -typing-extensions==4.8.0 +typing-extensions==4.12.2 # via # pydantic # pydantic-core # typer uritemplate==4.1.1 # via gidgethub -urllib3==2.1.0 +urllib3==2.2.3 # via requests -yarl==1.9.3 +yarl==1.17.2 # via aiohttp - -# The following packages are considered to be unsafe in a requirements file: -# setuptools From 3a033ae828bc665dc82d1e7eee37240f35c5bb12 Mon Sep 17 00:00:00 2001 From: "Alexander J. Pfleger" <70842573+AJPfleger@users.noreply.github.com> Date: Thu, 21 Nov 2024 17:51:33 +0100 Subject: [PATCH 30/49] chore: add action for all pip requirements updates (#3883) I was not happy with the dependabot implementation, since only the packages specified in `requirements.in` were checked for. My current implementation does a full `pip-compile` and updates also all dependencies. This job will run weekly. If any updates are possible, a PR will be created by the action. blocked by: - https://github.com/acts-project/acts/pull/3875 - https://github.com/acts-project/acts/pull/3884 --- .github/workflows/update-pip-requirements.yml | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100755 .github/workflows/update-pip-requirements.yml diff --git a/.github/workflows/update-pip-requirements.yml b/.github/workflows/update-pip-requirements.yml new file mode 100755 index 00000000000..444ade7b287 --- /dev/null +++ b/.github/workflows/update-pip-requirements.yml @@ -0,0 +1,76 @@ +name: Update Pip Requirements + +on: + workflow_dispatch: # Allow running on-demand + schedule: + # Runs every Sunday at 1:23 UTC + - cron: '23 1 * * 0' + +jobs: + update-pip-requirements: + # This action checks all monitored (specified in `folder_list` below) requirements.in + # files and generates a new requirements.txt file with pip-compile. If any + # requirements changed, a PR is created with the changes. + runs-on: ubuntu-latest + env: + # This branch will receive updates each time the workflow runs + # It doesn't matter if it's deleted when merged, it'll be re-created + BRANCH_NAME: auto-dependency-upgrades + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: 3.12 + + - name: Install pip-tools + run: pip install pip-tools + + - name: Compile all requirements.txt + run: | + # Update this list after adding/removing requirements-files + folder_list=( + CI/clang_tidy + CI/fpe_masks + docs + Examples/Python/tests/ + Examples/Scripts + ) + for folder in "${folder_list[@]}"; do + pip-compile "${folder}/requirements.in" > "${folder}/requirements.txt" + done + + - name: Detect changes + id: changes + run: + # This output boolean tells us if the dependencies have actually changed + echo "count=$(git status --porcelain=v1 2>/dev/null | wc -l)" >> $GITHUB_OUTPUT + + - name: Commit & push changes + # Only push if changes exist + if: steps.changes.outputs.count > 0 + run: | + git config user.name github-actions + git config user.email github-actions@github.com + git add . + git commit -m "Weekly Update: Regenerate requirements.txt" + git push -f origin ${{ github.ref_name }}:$BRANCH_NAME + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Open pull request if needed + if: steps.changes.outputs.count > 0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # Only open a PR if the branch is not attached to an existing one + run: | + PR=$(gh pr list --head $BRANCH_NAME --json number -q '.[0].number') + if [ -z $PR ]; then + gh pr create \ + --head $BRANCH_NAME \ + --title "chore: automated python requirements upgrades" \ + --body "Full log: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" + else + echo "Pull request already exists, won't create a new one." + fi From ca44b3fbaaee26fc7b9702da114d6f9fd698bf9e Mon Sep 17 00:00:00 2001 From: Paul Gessinger <paul.gessinger@cern.ch> Date: Thu, 21 Nov 2024 19:53:39 +0100 Subject: [PATCH 31/49] ci: Add milestone workflow (#3887) This is a GitHub Actions based alternative to the milestone bot that we run. The actions setup will - When a PR is opened or reopened, and has no milestone associated, it will assign the `next` milestone - When a PR is milestoned or demilestoned, it will add a status to the PR like the current bot does it. This should allow us to require a milestone to be set before merging, without having to host the bot anymore. --- .github/workflows/milestone.yml | 58 +++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .github/workflows/milestone.yml diff --git a/.github/workflows/milestone.yml b/.github/workflows/milestone.yml new file mode 100644 index 00000000000..de5ee80356c --- /dev/null +++ b/.github/workflows/milestone.yml @@ -0,0 +1,58 @@ +name: Check PR milestone + +on: + pull_request_target: + types: [milestoned, demilestoned, opened, reopened] + branches: + - main + +jobs: + check_milestone: + if: ${{ github.event.issue.pull_request || github.event.pull_request }} + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: "Check for milestone on PR" + uses: actions/github-script@v7 + with: + script: | + let milestone = context.payload.pull_request.milestone; + + if(context.payload.action === 'opened' || context.payload.action === 'reopened') { + if(milestone !== null) { + core.notice(`Milestone is ${milestone.title}`); + } else { + const milestones = await github.rest.issues.listMilestones({ + owner: context.repo.owner, + repo: context.repo.repo, + state: "open" + }); + for (const default_milestone of milestones.data) { + if (default_milestone.title === "next") { + core.notice(`No milestone set, setting default milestone: ${default_milestone.title}`); + + await github.rest.issues.update({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + milestone: default_milestone.number + }); + return; + } + } + + core.warning("Could not find default milestone named 'next'"); + + } + + } + else { + if(milestone !== null) { + core.notice(`Milestone is ${milestone.title}`); + } else { + core.setFailed("No milestone: Please add a version milestone"); + } + } From f6e95c2999adbf5188af7ce1dcf8a1671168bb1a Mon Sep 17 00:00:00 2001 From: Paul Gessinger <paul.gessinger@cern.ch> Date: Thu, 21 Nov 2024 22:43:24 +0100 Subject: [PATCH 32/49] refactor: Reduce abort output in GX2F to DEBUG (#3888) I think outputs that run on every single event should generally not be INFO. --- Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp b/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp index 8442071a23f..a7b28d5e8f3 100644 --- a/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp +++ b/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp @@ -1408,9 +1408,9 @@ class Gx2Fitter { if ((gx2fOptions.relChi2changeCutOff != 0) && (nUpdate > 0) && (std::abs(extendedSystem.chi2() / oldChi2sum - 1) < gx2fOptions.relChi2changeCutOff)) { - ACTS_INFO("Abort with relChi2changeCutOff after " - << nUpdate + 1 << "/" << gx2fOptions.nUpdateMax - << " iterations."); + ACTS_DEBUG("Abort with relChi2changeCutOff after " + << nUpdate + 1 << "/" << gx2fOptions.nUpdateMax + << " iterations."); updateGx2fCovarianceParams(fullCovariancePredicted, extendedSystem); break; } From 6ff7d492dc0b8cbc65487edbc7c0a6fe7e3bedf3 Mon Sep 17 00:00:00 2001 From: ssdetlab <113530373+ssdetlab@users.noreply.github.com> Date: Fri, 22 Nov 2024 00:59:53 +0200 Subject: [PATCH 33/49] feat: Track parameters lookup estimation examples (#3823) The PR adding the simulation based track parameter estimation. The algorithm runs the `Fatras` simulation of the detector setup. A set of grids is imposed onto the user-defined reference layers of the tracking detector (e.g. first tracking layers sensitive surfaces). `CurvilinearTrackParameters` at the vertex and the reference tracking layers are recorded for the simulated particles and stored into the bins of the grids. After the simulation is finished, the contents of the grids' bins are averaged and the grids containing the correspondence between the particles' intersection points at the reference layers, track parameters at the vertex and track parameters at the reference layers are constructed. The constructed grids are stored into the json files. The grids are then readout and used for track parameters estimation in seeding algorithms, e.g. connected to the `PathSeeder`. This PR contains the lookup generation part of the algorithm. When the interfaces, realisation and the general idea are agreed upon, the second part with the validation of the estimated lookups is going to be put up. --- .../EventData/detail/TrackParametersUtils.hpp | 49 ++++ .../TrackParamsLookupAccumulator.hpp | 179 ++++++++++++++ .../Algorithms/TrackFinding/CMakeLists.txt | 1 + .../TrackFinding/ITrackParamsLookupReader.hpp | 27 +++ .../TrackFinding/ITrackParamsLookupWriter.hpp | 27 +++ .../TrackParamsLookupEstimation.hpp | 78 +++++++ .../TrackFinding/TrackParamsLookupTable.hpp | 44 ++++ .../src/TrackParamsLookupEstimation.cpp | 104 +++++++++ .../Io/Json/JsonTrackParamsLookupReader.hpp | 101 ++++++++ .../Io/Json/JsonTrackParamsLookupWriter.hpp | 69 ++++++ Examples/Python/src/Json.cpp | 51 ++++ Examples/Python/src/Output.cpp | 10 + Examples/Python/src/TrackFinding.cpp | 6 + ...elescope_track_params_lookup_generation.py | 111 +++++++++ .../Json/TrackParametersJsonConverter.hpp | 31 +-- .../Core/TrackFinding/CMakeLists.txt | 1 + .../TrackParamsLookupAccumulatorTests.cpp | 221 ++++++++++++++++++ 17 files changed, 1087 insertions(+), 23 deletions(-) create mode 100644 Core/include/Acts/EventData/detail/TrackParametersUtils.hpp create mode 100644 Core/include/Acts/TrackFinding/TrackParamsLookupAccumulator.hpp create mode 100644 Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/ITrackParamsLookupReader.hpp create mode 100644 Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/ITrackParamsLookupWriter.hpp create mode 100644 Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/TrackParamsLookupEstimation.hpp create mode 100644 Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/TrackParamsLookupTable.hpp create mode 100644 Examples/Algorithms/TrackFinding/src/TrackParamsLookupEstimation.cpp create mode 100644 Examples/Io/Json/include/ActsExamples/Io/Json/JsonTrackParamsLookupReader.hpp create mode 100644 Examples/Io/Json/include/ActsExamples/Io/Json/JsonTrackParamsLookupWriter.hpp create mode 100644 Examples/Scripts/Python/telescope_track_params_lookup_generation.py create mode 100644 Tests/UnitTests/Core/TrackFinding/TrackParamsLookupAccumulatorTests.cpp diff --git a/Core/include/Acts/EventData/detail/TrackParametersUtils.hpp b/Core/include/Acts/EventData/detail/TrackParametersUtils.hpp new file mode 100644 index 00000000000..2efcef0e763 --- /dev/null +++ b/Core/include/Acts/EventData/detail/TrackParametersUtils.hpp @@ -0,0 +1,49 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#pragma once + +#include "Acts/EventData/GenericBoundTrackParameters.hpp" +#include "Acts/EventData/TrackParametersConcept.hpp" + +namespace Acts::detail { + +/// @brief Shorthand for Bound or Free track parameters +template <class parameters_t> +concept isBoundOrFreeTrackParams = + Acts::FreeTrackParametersConcept<parameters_t> || + Acts::BoundTrackParametersConcept<parameters_t>; + +/// @brief Shorthand for GenericBoundTrackParameters +template <class parameters_t> +concept isGenericBoundTrackParams = + std::same_as<parameters_t, Acts::GenericBoundTrackParameters< + typename parameters_t::ParticleHypothesis>>; + +/// @brief Concept that restricts the type of the +/// accumulation grid cell +template <typename grid_t> +concept TrackParamsGrid = requires { + typename grid_t::value_type::first_type; + typename grid_t::value_type::second_type; + + requires isBoundOrFreeTrackParams< + typename grid_t::value_type::first_type::element_type>; + requires isBoundOrFreeTrackParams< + typename grid_t::value_type::second_type::element_type>; + + requires requires(typename grid_t::value_type val) { + { + val.first + } -> std::same_as< + std::shared_ptr<typename decltype(val.first)::element_type>&>; + { val.second } -> std::same_as<decltype(val.first)&>; + }; +}; + +} // namespace Acts::detail diff --git a/Core/include/Acts/TrackFinding/TrackParamsLookupAccumulator.hpp b/Core/include/Acts/TrackFinding/TrackParamsLookupAccumulator.hpp new file mode 100644 index 00000000000..a1e1173335d --- /dev/null +++ b/Core/include/Acts/TrackFinding/TrackParamsLookupAccumulator.hpp @@ -0,0 +1,179 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#pragma once + +#include "Acts/EventData/detail/TrackParametersUtils.hpp" +#include "Acts/Geometry/GeometryContext.hpp" + +#include <map> +#include <memory> +#include <mutex> +#include <stdexcept> +#include <utility> + +namespace Acts { + +/// @brief Class to accumulate and average track lookup tables +/// +/// @tparam Grid type for track parameters accumulation +/// +/// This class is used to accumulate track parameters in +/// reference layer grids and average them to create a lookup +/// table for track parameter estimation in seeding +/// +/// @note Geometry context is left to be handled by the user +/// outside of accumulation +template <detail::TrackParamsGrid grid_t> +class TrackParamsLookupAccumulator { + public: + using LookupGrid = grid_t; + using TrackParameters = typename std::pointer_traits< + typename grid_t::value_type::first_type>::element_type; + + /// @brief Constructor + explicit TrackParamsLookupAccumulator(grid_t grid) + : m_grid(std::move(grid)) {} + + /// @brief Add track parameters to the accumulator + /// + /// @param ipTrackParameters Track parameters at the IP + /// @param refTrackParameters Track parameters at the reference layer + /// @param position Local position of the track hit on the reference layer + void addTrack(const TrackParameters& ipTrackParameters, + const TrackParameters& refTrackParameters, + const Vector2& position) { + std::lock_guard<std::mutex> lock(m_gridMutex); + + auto bin = m_grid.localBinsFromPosition(position); + + if (m_countGrid[bin] == 0) { + m_grid.atLocalBins(bin).first = + std::make_shared<TrackParameters>(ipTrackParameters); + m_grid.atLocalBins(bin).second = + std::make_shared<TrackParameters>(refTrackParameters); + + m_countGrid.at(bin)++; + return; + } + + *m_grid.atLocalBins(bin).first = + addTrackParameters(*m_grid.atLocalBins(bin).first, ipTrackParameters); + *m_grid.atLocalBins(bin).second = + addTrackParameters(*m_grid.atLocalBins(bin).second, refTrackParameters); + m_countGrid.at(bin)++; + } + + /// @brief Finalize the lookup table + /// + /// @return Grid with the bin track parameters averaged + LookupGrid finalizeLookup() { + auto meanTrack = [&](const TrackParameters& track, std::size_t count) { + if constexpr (detail::isGenericBoundTrackParams<TrackParameters>) { + Acts::GeometryContext gctx; + + auto res = TrackParameters::create( + track.referenceSurface().getSharedPtr(), gctx, + track.fourPosition(gctx) / count, track.momentum().normalized(), + count * track.charge() / track.momentum().norm(), + track.covariance(), track.particleHypothesis()); + + if (!res.ok()) { + throw std::invalid_argument("Bound track grid finalization failed"); + } + return res.value(); + } else { + return TrackParameters(track.fourPosition() / count, + track.momentum().normalized(), + count * track.charge() / track.momentum().norm(), + track.covariance(), track.particleHypothesis()); + } + }; + + for (auto [bin, count] : m_countGrid) { + if (count == 0) { + continue; + } + *m_grid.atLocalBins(bin).first = + meanTrack(*m_grid.atLocalBins(bin).first, count); + *m_grid.atLocalBins(bin).second = + meanTrack(*m_grid.atLocalBins(bin).second, count); + } + + return m_grid; + } + + private: + /// @brief Add two track parameters + /// + /// @param a First track parameter in the sum + /// @param b Second track parameter in the sum + /// + /// @return Sum of track parameters a + b + /// + /// @note Covariances of the track parameters + /// are not added and instead assumed to be + /// generated by the same random process for + /// both a and b, making its averaging redundant + TrackParameters addTrackParameters(const TrackParameters& a, + const TrackParameters& b) { + if (a.particleHypothesis() != b.particleHypothesis()) { + throw std::invalid_argument( + "Cannot accumulate track parameters with different particle " + "hypotheses"); + } + if (a.charge() != b.charge()) { + throw std::invalid_argument( + "Cannot accumulate track parameters with different charges"); + } + if constexpr (detail::isGenericBoundTrackParams<TrackParameters>) { + if (a.referenceSurface() != b.referenceSurface()) { + throw std::invalid_argument( + "Cannot accumulate bound track parameters with different reference " + "surfaces"); + } + } + + Acts::Vector3 momentum = a.momentum() + b.momentum(); + + // Assume track parameters being i.i.d. + if constexpr (detail::isGenericBoundTrackParams<TrackParameters>) { + Acts::GeometryContext gctx; + + Acts::Vector4 fourPosition = a.fourPosition(gctx) + b.fourPosition(gctx); + + auto res = TrackParameters::create( + a.referenceSurface().getSharedPtr(), gctx, fourPosition, + momentum.normalized(), a.charge() / momentum.norm(), a.covariance(), + a.particleHypothesis()); + + if (!res.ok()) { + throw std::runtime_error("Invalid bound track parameters"); + } + return res.value(); + } else { + Acts::Vector4 fourPosition = a.fourPosition() + b.fourPosition(); + return TrackParameters(fourPosition, momentum.normalized(), + a.charge() / momentum.norm(), a.covariance(), + a.particleHypothesis()); + } + } + + /// Grids to accumulate IP and reference + /// layer track parameters + LookupGrid m_grid; + + /// Mutex for protecting grid access + std::mutex m_gridMutex; + + /// Map to keep the accumulation count + /// in the occupied grid bins + std::map<std::array<std::size_t, LookupGrid::DIM>, std::size_t> m_countGrid; +}; + +} // namespace Acts diff --git a/Examples/Algorithms/TrackFinding/CMakeLists.txt b/Examples/Algorithms/TrackFinding/CMakeLists.txt index 38781494068..33b924e35aa 100644 --- a/Examples/Algorithms/TrackFinding/CMakeLists.txt +++ b/Examples/Algorithms/TrackFinding/CMakeLists.txt @@ -10,6 +10,7 @@ add_library( src/TrackParamsEstimationAlgorithm.cpp src/MuonHoughSeeder.cpp src/GbtsSeedingAlgorithm.cpp + src/TrackParamsLookupEstimation.cpp ) target_include_directories( diff --git a/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/ITrackParamsLookupReader.hpp b/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/ITrackParamsLookupReader.hpp new file mode 100644 index 00000000000..5777f90ef18 --- /dev/null +++ b/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/ITrackParamsLookupReader.hpp @@ -0,0 +1,27 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#pragma once + +#include "ActsExamples/TrackFinding/TrackParamsLookupTable.hpp" + +namespace ActsExamples { + +/// @brief Interface for reading track parameter lookup tables +class ITrackParamsLookupReader { + public: + /// Virtual Destructor + virtual ~ITrackParamsLookupReader() = default; + + /// Reader method + /// + /// @param path the path to the file to read + virtual TrackParamsLookup readLookup(const std::string& path) const = 0; +}; + +} // namespace ActsExamples diff --git a/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/ITrackParamsLookupWriter.hpp b/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/ITrackParamsLookupWriter.hpp new file mode 100644 index 00000000000..9cddadae062 --- /dev/null +++ b/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/ITrackParamsLookupWriter.hpp @@ -0,0 +1,27 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#pragma once + +#include "ActsExamples/TrackFinding/TrackParamsLookupTable.hpp" + +namespace ActsExamples { + +/// @brief Interface for writing track parameter lookup tables +class ITrackParamsLookupWriter { + public: + /// Virtual Destructor + virtual ~ITrackParamsLookupWriter() = default; + + /// Writer method + /// + /// @param lookup track lookup to write + virtual void writeLookup(const TrackParamsLookup& lookup) const = 0; +}; + +} // namespace ActsExamples diff --git a/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/TrackParamsLookupEstimation.hpp b/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/TrackParamsLookupEstimation.hpp new file mode 100644 index 00000000000..e50991cd944 --- /dev/null +++ b/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/TrackParamsLookupEstimation.hpp @@ -0,0 +1,78 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#pragma once + +#include "Acts/TrackFinding/TrackParamsLookupAccumulator.hpp" +#include "ActsExamples/EventData/SimHit.hpp" +#include "ActsExamples/EventData/SimParticle.hpp" +#include "ActsExamples/Framework/DataHandle.hpp" +#include "ActsExamples/Framework/IAlgorithm.hpp" +#include "ActsExamples/TrackFinding/ITrackParamsLookupWriter.hpp" + +#include <memory> + +namespace ActsExamples { + +/// @brief Algorithm to estimate track parameters lookup tables +/// +/// This algorithm is used to estimate track parameters lookup tables +/// for track parameter estimation in seeding. The algorithm imposes +/// grids onto the reference tracking layers and accumulates track +/// parameters in the grid bins. The track parameters are then averaged +/// to create a lookup table for track parameter estimation in seeding. +class TrackParamsLookupEstimation : public IAlgorithm { + public: + using TrackParamsLookupAccumulator = + Acts::TrackParamsLookupAccumulator<TrackParamsLookupGrid>; + + /// @brief Nested configuration struct + struct Config { + /// Reference tracking layers + std::unordered_map<Acts::GeometryIdentifier, const Acts::Surface*> + refLayers; + /// Binning of the grid to be emposed + /// onto the reference layers + std::pair<std::size_t, std::size_t> bins; + /// Input SimHit container + std::string inputHits = "InputHits"; + /// Input SimParticle container + std::string inputParticles = "InputParticles"; + /// Track lookup writers + std::vector<std::shared_ptr<ITrackParamsLookupWriter>> + trackLookupGridWriters{}; + }; + + /// @brief Constructor + TrackParamsLookupEstimation(const Config& config, Acts::Logging::Level level); + + /// @brief The execute method + ProcessCode execute(const AlgorithmContext& ctx) const override; + + ProcessCode finalize() override; + + /// Get readonly access to the config parameters + const Config& config() const { return m_cfg; } + + private: + /// Configuration + Config m_cfg; + + /// Input data handles + ReadDataHandle<SimParticleContainer> m_inputParticles{this, + "InputSimParticles"}; + + ReadDataHandle<SimHitContainer> m_inputSimHits{this, "InputSimHits"}; + + /// Accumulators for the track parameters + std::unordered_map<Acts::GeometryIdentifier, + std::unique_ptr<TrackParamsLookupAccumulator>> + m_accumulators; +}; + +} // namespace ActsExamples diff --git a/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/TrackParamsLookupTable.hpp b/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/TrackParamsLookupTable.hpp new file mode 100644 index 00000000000..5b9c1fabd83 --- /dev/null +++ b/Examples/Algorithms/TrackFinding/include/ActsExamples/TrackFinding/TrackParamsLookupTable.hpp @@ -0,0 +1,44 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#pragma once + +#include "Acts/EventData/TrackParameters.hpp" +#include "Acts/Utilities/Grid.hpp" +#include "Acts/Utilities/GridAxisGenerators.hpp" + +#include <memory> +#include <unordered_map> + +namespace ActsExamples { + +using TrackParamsLookupPair = + std::pair<std::shared_ptr<Acts::CurvilinearTrackParameters>, + std::shared_ptr<Acts::CurvilinearTrackParameters>>; + +/// @brief Track parameters lookup table axis used +/// in the track estimation algorithm +using TrackParamsLookupAxis = + Acts::Axis<Acts::AxisType::Equidistant, Acts::AxisBoundaryType::Open>; + +/// @brief Track parameters lookup table axis generator +/// used in the track estimation algorithm +using TrackParamsLookupAxisGen = Acts::GridAxisGenerators::EqOpenEqOpen; + +/// @brief Lookup grid for track parameters estimation +/// in a given layer +using TrackParamsLookupGrid = + Acts::Grid<TrackParamsLookupPair, TrackParamsLookupAxis, + TrackParamsLookupAxis>; + +/// @brief Lookup table for track parameters estimation +/// in the track estimation algorithm +using TrackParamsLookup = + std::unordered_map<Acts::GeometryIdentifier, TrackParamsLookupGrid>; + +} // namespace ActsExamples diff --git a/Examples/Algorithms/TrackFinding/src/TrackParamsLookupEstimation.cpp b/Examples/Algorithms/TrackFinding/src/TrackParamsLookupEstimation.cpp new file mode 100644 index 00000000000..4e4b283ddf9 --- /dev/null +++ b/Examples/Algorithms/TrackFinding/src/TrackParamsLookupEstimation.cpp @@ -0,0 +1,104 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#include "ActsExamples/TrackFinding/TrackParamsLookupEstimation.hpp" + +#include "Acts/Surfaces/RectangleBounds.hpp" +#include "ActsExamples/Framework/ProcessCode.hpp" + +ActsExamples::TrackParamsLookupEstimation::TrackParamsLookupEstimation( + const Config& config, Acts::Logging::Level level) + : IAlgorithm("TrackParamsLookupEstimation", level), m_cfg(config) { + // Iterate over the reference layers and create + // track parameter accumulators + for (const auto& [geoId, refSurface] : m_cfg.refLayers) { + // Get bounds to construct the accumulator grid + auto bounds = + dynamic_cast<const Acts::RectangleBounds*>(&refSurface->bounds()); + + if (bounds == nullptr) { + throw std::invalid_argument("Only rectangle bounds supported"); + } + if (refSurface->type() != Acts::Surface::SurfaceType::Plane) { + throw std::invalid_argument("Only plane surfaces supported"); + } + + // Initialize the accumulator grid + auto halfX = bounds->halfLengthX(); + auto halfY = bounds->halfLengthY(); + + TrackParamsLookupAxisGen axisGen{ + {-halfX, halfX}, m_cfg.bins.first, {-halfY, halfY}, m_cfg.bins.second}; + + // Each reference layer has its own accumulator + m_accumulators[geoId] = std::make_unique<TrackParamsLookupAccumulator>( + TrackParamsLookupGrid(axisGen())); + } + + m_inputParticles.initialize(m_cfg.inputParticles); + m_inputSimHits.initialize(m_cfg.inputHits); +} + +ActsExamples::ProcessCode +ActsExamples::TrackParamsLookupEstimation::finalize() { + // Finiliaze the lookup tables and write them + ActsExamples::TrackParamsLookup lookup; + for (auto& [id, acc] : m_accumulators) { + lookup.insert({id, acc->finalizeLookup()}); + } + for (const auto& writer : m_cfg.trackLookupGridWriters) { + writer->writeLookup(lookup); + } + + return ActsExamples::ProcessCode::SUCCESS; +}; + +ActsExamples::ProcessCode ActsExamples::TrackParamsLookupEstimation::execute( + const ActsExamples::AlgorithmContext& ctx) const { + // Get the particles and hits + const auto& particles = m_inputParticles(ctx); + const auto& hits = m_inputSimHits(ctx); + + // Iterate over the reference layer hits and + // accumulate the track parameters + for (const auto& [geoId, refSurface] : m_cfg.refLayers) { + // Get reference layer hits + auto refLayerHits = hits.equal_range(geoId); + + for (auto hit = refLayerHits.first; hit != refLayerHits.second; ++hit) { + // Get the corresponding particle + const auto& id = hit->particleId(); + const auto& particle = particles.find(id); + + if (particle == particles.end()) { + throw std::invalid_argument("Particle not found"); + } + + // Hit stores the reference layer parameters + auto refLayerPars = Acts::CurvilinearTrackParameters( + hit->fourPosition(), hit->direction(), particle->qOverP(), + std::nullopt, particle->hypothesis()); + + // Particle stores the IP parameters + auto ipPars = Acts::CurvilinearTrackParameters( + particle->fourPosition(), particle->direction(), particle->qOverP(), + std::nullopt, particle->hypothesis()); + + // Get the local position of the hit + auto localPos = refSurface + ->globalToLocal(ctx.geoContext, hit->position(), + Acts::Vector3{0, 1, 0}) + .value(); + + // Add the track parameters to the accumulator grid + m_accumulators.at(geoId)->addTrack(ipPars, refLayerPars, localPos); + } + } + + return ActsExamples::ProcessCode::SUCCESS; +} diff --git a/Examples/Io/Json/include/ActsExamples/Io/Json/JsonTrackParamsLookupReader.hpp b/Examples/Io/Json/include/ActsExamples/Io/Json/JsonTrackParamsLookupReader.hpp new file mode 100644 index 00000000000..94abea8b903 --- /dev/null +++ b/Examples/Io/Json/include/ActsExamples/Io/Json/JsonTrackParamsLookupReader.hpp @@ -0,0 +1,101 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#pragma once + +#include "Acts/Plugins/Json/GridJsonConverter.hpp" +#include "Acts/Surfaces/RectangleBounds.hpp" +#include "ActsExamples/TrackFinding/ITrackParamsLookupReader.hpp" + +#include <fstream> + +#include <nlohmann/json.hpp> + +namespace ActsExamples { + +/// @brief Json reader for track parameter lookup tables +/// +/// This reader is used to read track parameter lookup tables +/// from a json file to be later used in track parameter estimation +/// for seeding +class JsonTrackParamsLookupReader final : public ITrackParamsLookupReader { + public: + /// @brief Nested configuration struct + struct Config { + /// Reference tracking layers + std::unordered_map<Acts::GeometryIdentifier, const Acts::Surface*> + refLayers; + /// Binning of the grid to be emposed + /// onto the reference layers + std::pair<std::size_t, std::size_t> bins; + }; + + explicit JsonTrackParamsLookupReader(const Config& config) : m_cfg(config) {}; + + ~JsonTrackParamsLookupReader() override = default; + + /// @brief Read the lookup from a json file + /// + /// @param path path to the json file + /// + /// @return lookup table for track parameter estimation + TrackParamsLookup readLookup(const std::string& path) const override { + // Read the json file + std::ifstream ifj(path); + nlohmann::json jLookup; + ifj >> jLookup; + + TrackParamsLookup lookup; + // Iterate over the json and deserialize the grids + for (const auto& jGrid : jLookup) { + Acts::GeometryIdentifier id(jGrid["geo_id"]); + + if (!m_cfg.refLayers.contains(id)) { + throw std::invalid_argument("Geometry identifier not found"); + } + + const auto* refSurface = m_cfg.refLayers.at(id); + + // Get bounds to construct the lookup grid + auto bounds = + dynamic_cast<const Acts::RectangleBounds*>(&refSurface->bounds()); + + if (bounds == nullptr) { + throw std::invalid_argument("Only rectangle bounds supported"); + } + + // Axis is not deserilizable, so we need to recreate it + auto halfX = bounds->halfLengthX(); + auto halfY = bounds->halfLengthY(); + + TrackParamsLookupAxisGen axisGen{{-halfX, halfX}, + m_cfg.bins.first, + {-halfY, halfY}, + m_cfg.bins.second}; + + // Deserialize the grid + TrackParamsLookupGrid grid = + Acts::GridJsonConverter::fromJson<TrackParamsLookupAxisGen, + TrackParamsLookupPair>( + jGrid["grid"], axisGen); + + lookup.try_emplace(id, std::move(grid)); + } + + return lookup; + }; + + /// Readonly access to the config + const Config& config() const { return m_cfg; } + + private: + /// The config of the writer + Config m_cfg; +}; + +} // namespace ActsExamples diff --git a/Examples/Io/Json/include/ActsExamples/Io/Json/JsonTrackParamsLookupWriter.hpp b/Examples/Io/Json/include/ActsExamples/Io/Json/JsonTrackParamsLookupWriter.hpp new file mode 100644 index 00000000000..63a2c083618 --- /dev/null +++ b/Examples/Io/Json/include/ActsExamples/Io/Json/JsonTrackParamsLookupWriter.hpp @@ -0,0 +1,69 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#pragma once + +#include "Acts/Plugins/Json/GridJsonConverter.hpp" +#include "ActsExamples/TrackFinding/ITrackParamsLookupWriter.hpp" + +#include <fstream> + +#include <nlohmann/json.hpp> + +namespace ActsExamples { + +/// @brief Json writer for track parameter lookup tables +/// +/// This writer is used to write track parameter lookup tables +/// to a json file to be later used in track parameter estimation +/// for seeding +class JsonTrackParamsLookupWriter final : public ITrackParamsLookupWriter { + public: + /// @brief Nested configuration struct + struct Config { + /// Output file name + std::string path; + }; + + /// Constructor + /// + /// @param config The configuration struct of the writer + explicit JsonTrackParamsLookupWriter(const Config& config) : m_cfg(config) {}; + + /// Virtual destructor + ~JsonTrackParamsLookupWriter() override = default; + + /// Write out track parameters lookup table + /// + /// @param lookup The lookup to write + void writeLookup(const TrackParamsLookup& lookup) const override { + nlohmann::json jLookup; + + // Iterate over the lookup and serialize the grids + for (const auto& [id, grid] : lookup) { + nlohmann::json jGrid; + jGrid["geo_id"] = id.value(); + jGrid["grid"] = Acts::GridJsonConverter::toJson(grid); + + jLookup.push_back(jGrid); + } + + // Write the json file + std::ofstream ofj(m_cfg.path, std::ios::out); + ofj << std::setw(4) << jLookup << std::endl; + }; + + /// Readonly access to the config + const Config& config() const { return m_cfg; } + + private: + /// The config of the writer + Config m_cfg; +}; + +} // namespace ActsExamples diff --git a/Examples/Python/src/Json.cpp b/Examples/Python/src/Json.cpp index be367612ac2..12baaa9f6d3 100644 --- a/Examples/Python/src/Json.cpp +++ b/Examples/Python/src/Json.cpp @@ -19,6 +19,8 @@ #include "ActsExamples/Io/Json/JsonMaterialWriter.hpp" #include "ActsExamples/Io/Json/JsonSurfacesReader.hpp" #include "ActsExamples/Io/Json/JsonSurfacesWriter.hpp" +#include "ActsExamples/Io/Json/JsonTrackParamsLookupReader.hpp" +#include "ActsExamples/Io/Json/JsonTrackParamsLookupWriter.hpp" #include <fstream> #include <initializer_list> @@ -37,6 +39,11 @@ class IMaterialDecorator; namespace ActsExamples { class IMaterialWriter; class IWriter; + +namespace Experimental { +class ITrackParamsLookupWriter; +} // namespace Experimental + } // namespace ActsExamples namespace py = pybind11; @@ -111,6 +118,50 @@ void addJson(Context& ctx) { ACTS_PYTHON_STRUCT_END(); } + { + using IWriter = ActsExamples::ITrackParamsLookupWriter; + using Writer = ActsExamples::JsonTrackParamsLookupWriter; + using Config = Writer::Config; + + auto cls = py::class_<Writer, IWriter, std::shared_ptr<Writer>>( + mex, "JsonTrackParamsLookupWriter") + .def(py::init<const Config&>(), py::arg("config")) + .def("writeLookup", &Writer::writeLookup) + .def_property_readonly("config", &Writer::config); + + auto c = py::class_<Config>(cls, "Config") + .def(py::init<>()) + .def(py::init<const std::string&>(), py::arg("path")); + + ACTS_PYTHON_STRUCT_BEGIN(c, Config); + ACTS_PYTHON_MEMBER(path); + ACTS_PYTHON_STRUCT_END(); + } + + { + using IReader = ActsExamples::ITrackParamsLookupReader; + using Reader = ActsExamples::JsonTrackParamsLookupReader; + using Config = Reader::Config; + + auto cls = py::class_<Reader, IReader, std::shared_ptr<Reader>>( + mex, "JsonTrackParamsLookupReader") + .def(py::init<const Config&>(), py::arg("config")) + .def("readLookup", &Reader::readLookup) + .def_property_readonly("config", &Reader::config); + + auto c = py::class_<Config>(cls, "Config") + .def(py::init<>()) + .def(py::init<std::unordered_map<Acts::GeometryIdentifier, + const Acts::Surface*>, + std::pair<Acts::ActsScalar, Acts::ActsScalar>>(), + py::arg("refLayers"), py::arg("bins")); + + ACTS_PYTHON_STRUCT_BEGIN(c, Config); + ACTS_PYTHON_MEMBER(refLayers); + ACTS_PYTHON_MEMBER(bins); + ACTS_PYTHON_STRUCT_END(); + } + { auto cls = py::class_<JsonSurfacesWriter, IWriter, diff --git a/Examples/Python/src/Output.cpp b/Examples/Python/src/Output.cpp index 5f174777429..4281f2db26e 100644 --- a/Examples/Python/src/Output.cpp +++ b/Examples/Python/src/Output.cpp @@ -48,6 +48,8 @@ #include "ActsExamples/MaterialMapping/IMaterialWriter.hpp" #include "ActsExamples/Plugins/Obj/ObjPropagationStepsWriter.hpp" #include "ActsExamples/Plugins/Obj/ObjTrackingGeometryWriter.hpp" +#include "ActsExamples/TrackFinding/ITrackParamsLookupReader.hpp" +#include "ActsExamples/TrackFinding/ITrackParamsLookupWriter.hpp" #include <memory> #include <string> @@ -279,6 +281,14 @@ void addOutput(Context& ctx) { py::class_<IMaterialWriter, std::shared_ptr<IMaterialWriter>>( mex, "IMaterialWriter"); + py::class_<ActsExamples::ITrackParamsLookupWriter, + std::shared_ptr<ActsExamples::ITrackParamsLookupWriter>>( + mex, "ITrackParamsLookupWriter"); + + py::class_<ActsExamples::ITrackParamsLookupReader, + std::shared_ptr<ActsExamples::ITrackParamsLookupReader>>( + mex, "ITrackParamsLookupReader"); + { using Writer = ActsExamples::RootMaterialWriter; auto w = py::class_<Writer, IMaterialWriter, std::shared_ptr<Writer>>( diff --git a/Examples/Python/src/TrackFinding.cpp b/Examples/Python/src/TrackFinding.cpp index ad3ad364ce7..54eb7e76641 100644 --- a/Examples/Python/src/TrackFinding.cpp +++ b/Examples/Python/src/TrackFinding.cpp @@ -28,6 +28,7 @@ #include "ActsExamples/TrackFinding/SpacePointMaker.hpp" #include "ActsExamples/TrackFinding/TrackFindingAlgorithm.hpp" #include "ActsExamples/TrackFinding/TrackParamsEstimationAlgorithm.hpp" +#include "ActsExamples/TrackFinding/TrackParamsLookupEstimation.hpp" #include <array> #include <cstddef> @@ -293,6 +294,11 @@ void addTrackFinding(Context& ctx) { magneticField, bFieldMin, initialSigmas, initialSigmaPtRel, initialVarInflation, noTimeVarInflation, particleHypothesis); + ACTS_PYTHON_DECLARE_ALGORITHM(ActsExamples::TrackParamsLookupEstimation, mex, + "TrackParamsLookupEstimation", refLayers, bins, + inputHits, inputParticles, + trackLookupGridWriters); + { using Alg = ActsExamples::TrackFindingAlgorithm; using Config = Alg::Config; diff --git a/Examples/Scripts/Python/telescope_track_params_lookup_generation.py b/Examples/Scripts/Python/telescope_track_params_lookup_generation.py new file mode 100644 index 00000000000..ecdffc20ec3 --- /dev/null +++ b/Examples/Scripts/Python/telescope_track_params_lookup_generation.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python3 + +import argparse + +import acts +import acts.examples +from acts.examples.simulation import ( + addParticleGun, + addFatras, + MomentumConfig, + EtaConfig, + PhiConfig, + ParticleConfig, +) + +u = acts.UnitConstants + + +def estimateLookup(trackingGeometry, numEvents, outputPath): + + # Set up the dipole magnetic field + field = acts.ConstantBField(acts.Vector3(50 * u.T, 0, 0)) + + # Fatras simulation of muons + rnd = acts.examples.RandomNumbers(seed=42) + + s = acts.examples.Sequencer( + events=numEvents, numThreads=1, logLevel=acts.logging.INFO + ) + + vertexGen = acts.examples.GaussianVertexGenerator( + stddev=acts.Vector4(0, 0, 0, 0), mean=acts.Vector4(0, 9, 0, 0) + ) + + addParticleGun( + s=s, + etaConfig=EtaConfig(10.0, 10.0), + phiConfig=PhiConfig(0, 0), + momentumConfig=MomentumConfig(0.5 * u.GeV, 10 * u.GeV), + particleConfig=ParticleConfig(1, acts.PdgParticle.eMuon, False), + multiplicity=1, + rnd=rnd, + vtxGen=vertexGen, + ) + + addFatras( + s, + trackingGeometry, + field, + inputParticles="particles_input", + outputSimHits="sim_hits", + rnd=rnd, + preSelectParticles=None, + ) + + # Set up the track lookup grid writer + jsonWriterConfig = acts.examples.JsonTrackParamsLookupWriter.Config(path=outputPath) + jsonWriter = acts.examples.JsonTrackParamsLookupWriter(jsonWriterConfig) + + # Set up the track estimation algorithm + surfaces = list(trackingGeometry.geoIdSurfaceMap().values()) + refSurface = surfaces[0] + refGeometryId = refSurface.geometryId() + + trackEstConfig = acts.examples.TrackParamsLookupEstimation.Config( + refLayers={refGeometryId: refSurface}, + bins=(1, 1000), + inputHits="sim_hits", + inputParticles="particles_input", + trackLookupGridWriters=[jsonWriter], + ) + trackEstAlg = acts.examples.TrackParamsLookupEstimation( + trackEstConfig, acts.logging.INFO + ) + + s.addAlgorithm(trackEstAlg) + + s.run() + + +if __name__ == "__main__": + p = argparse.ArgumentParser() + + p.add_argument( + "-n", + "--events", + type=int, + default=100000, + help="Number of events for lookup estimation", + ) + p.add_argument( + "-o", + "--output", + type=str, + default="lookup.json", + help="Output lookup file name", + ) + + args = p.parse_args() + + # Initialize the geometry + detector, trackingGeometry, decorators = acts.examples.TelescopeDetector.create( + bounds=[4, 10], + positions=[30, 60, 90], + stereos=[0, 0, 0], + binValue=2, + surfaceType=0, + ) + + # Estimate the lookup + estimateLookup(trackingGeometry, args.events, args.output) diff --git a/Plugins/Json/include/Acts/Plugins/Json/TrackParametersJsonConverter.hpp b/Plugins/Json/include/Acts/Plugins/Json/TrackParametersJsonConverter.hpp index ebf7d5c6054..d9670858566 100644 --- a/Plugins/Json/include/Acts/Plugins/Json/TrackParametersJsonConverter.hpp +++ b/Plugins/Json/include/Acts/Plugins/Json/TrackParametersJsonConverter.hpp @@ -8,28 +8,13 @@ #pragma once -#include "Acts/EventData/TrackParameters.hpp" -#include "Acts/Plugins/Json/ActsJson.hpp" +#include "Acts/Definitions/PdgParticle.hpp" +#include "Acts/EventData/GenericBoundTrackParameters.hpp" +#include "Acts/EventData/detail/TrackParametersUtils.hpp" #include "Acts/Plugins/Json/SurfaceJsonConverter.hpp" #include <nlohmann/json.hpp> -namespace { - -// Alias to bound adl_serializer specialization -// only to track parameters -template <class parameters_t> -concept TrackParameters = Acts::FreeTrackParametersConcept<parameters_t> || - Acts::BoundTrackParametersConcept<parameters_t>; - -// Shorthand for bound track parameters -template <class parameters_t> -concept IsGenericBound = - std::same_as<parameters_t, Acts::GenericBoundTrackParameters< - typename parameters_t::ParticleHypothesis>>; - -} // namespace - namespace Acts { NLOHMANN_JSON_SERIALIZE_ENUM(Acts::PdgParticle, @@ -67,7 +52,7 @@ namespace nlohmann { /// convention is followed. /// /// @tparam parameters_t The track parameters type -template <TrackParameters parameters_t> +template <Acts::detail::isBoundOrFreeTrackParams parameters_t> struct adl_serializer<parameters_t> { /// Covariance matrix type attached to the parameters using CovarianceMatrix = typename parameters_t::CovarianceMatrix; @@ -101,7 +86,7 @@ struct adl_serializer<parameters_t> { // Bound track parameters have // reference surface attached // and position takes a geometry context - if constexpr (IsGenericBound<parameters_t>) { + if constexpr (Acts::detail::isGenericBoundTrackParams<parameters_t>) { Acts::GeometryContext gctx; j["position"] = t.fourPosition(gctx); @@ -152,7 +137,7 @@ struct adl_serializer<parameters_t> { // reference surface attached // and constructor is hidden // behind a factory method - if constexpr (IsGenericBound<parameters_t>) { + if constexpr (Acts::detail::isGenericBoundTrackParams<parameters_t>) { Acts::GeometryContext gctx; auto referenceSurface = Acts::SurfaceJsonConverter::fromJson(j.at("referenceSurface")); @@ -178,7 +163,7 @@ struct adl_serializer<parameters_t> { /// convention is followed. /// /// @tparam parameters_t The track parameters type -template <TrackParameters parameters_t> +template <Acts::detail::isBoundOrFreeTrackParams parameters_t> struct adl_serializer<std::shared_ptr<parameters_t>> { using CovarianceMatrix = typename parameters_t::CovarianceMatrix; static void to_json(nlohmann::json& j, @@ -202,7 +187,7 @@ struct adl_serializer<std::shared_ptr<parameters_t>> { /// convention is followed. /// /// @tparam parameters_t The track parameters type -template <TrackParameters parameters_t> +template <Acts::detail::isBoundOrFreeTrackParams parameters_t> struct adl_serializer<std::unique_ptr<parameters_t>> { using CovarianceMatrix = typename parameters_t::CovarianceMatrix; static void to_json(nlohmann::json& j, diff --git a/Tests/UnitTests/Core/TrackFinding/CMakeLists.txt b/Tests/UnitTests/Core/TrackFinding/CMakeLists.txt index 523200299ac..bf0c520d672 100644 --- a/Tests/UnitTests/Core/TrackFinding/CMakeLists.txt +++ b/Tests/UnitTests/Core/TrackFinding/CMakeLists.txt @@ -1,2 +1,3 @@ add_unittest(CombinatorialKalmanFilter CombinatorialKalmanFilterTests.cpp) add_unittest(TrackSelector TrackSelectorTests.cpp) +add_unittest(TrackParamsLookupAccumulator TrackParamsLookupAccumulatorTests.cpp) diff --git a/Tests/UnitTests/Core/TrackFinding/TrackParamsLookupAccumulatorTests.cpp b/Tests/UnitTests/Core/TrackFinding/TrackParamsLookupAccumulatorTests.cpp new file mode 100644 index 00000000000..10e12747fce --- /dev/null +++ b/Tests/UnitTests/Core/TrackFinding/TrackParamsLookupAccumulatorTests.cpp @@ -0,0 +1,221 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#include <boost/test/tools/detail/fwd.hpp> +#include <boost/test/tools/old/interface.hpp> +#include <boost/test/unit_test.hpp> + +#include "Acts/Definitions/Algebra.hpp" +#include "Acts/EventData/ParticleHypothesis.hpp" +#include "Acts/EventData/TrackParameters.hpp" +#include "Acts/Geometry/GeometryContext.hpp" +#include "Acts/Surfaces/PlaneSurface.hpp" +#include "Acts/Surfaces/RectangleBounds.hpp" +#include "Acts/Surfaces/Surface.hpp" +#include "Acts/Tests/CommonHelpers/FloatComparisons.hpp" +#include "Acts/TrackFinding/TrackParamsLookupAccumulator.hpp" +#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/Grid.hpp" +#include "Acts/Utilities/GridAxisGenerators.hpp" + +#include <cmath> +#include <cstddef> +#include <numbers> +#include <optional> +#include <stdexcept> +#include <vector> + +BOOST_AUTO_TEST_SUITE(TrackParamsLookupAccumulator) + +Acts::GeometryContext gctx; + +using Axis = + Acts::Axis<Acts::AxisType::Equidistant, Acts::AxisBoundaryType::Open>; +using AxisGen = Acts::GridAxisGenerators::EqOpenEqOpen; + +using CellBound = std::pair<std::shared_ptr<Acts::BoundTrackParameters>, + std::shared_ptr<Acts::BoundTrackParameters>>; + +using GridBound = Acts::Grid<CellBound, Axis, Axis>; +using AccBound = Acts::TrackParamsLookupAccumulator<GridBound>; + +using CellCurvilinear = + std::pair<std::shared_ptr<Acts::CurvilinearTrackParameters>, + std::shared_ptr<Acts::CurvilinearTrackParameters>>; + +using GridCurvilinear = Acts::Grid<CellCurvilinear, Axis, Axis>; +using AccCurvilinear = Acts::TrackParamsLookupAccumulator<GridCurvilinear>; + +using CellFree = std::pair<std::shared_ptr<Acts::FreeTrackParameters>, + std::shared_ptr<Acts::FreeTrackParameters>>; + +using GridFree = Acts::Grid<CellFree, Axis, Axis>; +using AccFree = Acts::TrackParamsLookupAccumulator<GridFree>; + +AxisGen axisGen{{-1, 1}, 2, {-1, 1}, 2}; + +BOOST_AUTO_TEST_CASE(Exceptions) { + // Instantiate grid + GridBound grid(axisGen()); + AccBound acc(grid); + + // Create a reference surface for bound parameters + auto transform = Acts::Transform3::Identity(); + auto bounds1 = std::make_shared<Acts::RectangleBounds>(1, 1); + auto bounds2 = std::make_shared<Acts::RectangleBounds>(2, 2); + + auto surf1 = + Acts::Surface::makeShared<Acts::PlaneSurface>(transform, bounds1); + + auto surf2 = + Acts::Surface::makeShared<Acts::PlaneSurface>(transform, bounds2); + + // Create parameters to accumulate + Acts::Vector4 pos{1, 2, 0, 4}; + Acts::Vector3 dir{1, 0, 0}; + Acts::ActsScalar P = 1; + + auto hypothesis1 = Acts::ParticleHypothesis::electron(); + auto hypothesis2 = Acts::ParticleHypothesis::muon(); + + auto pars1 = Acts::BoundTrackParameters::create(surf1, gctx, pos, dir, 1. / P, + std::nullopt, hypothesis1) + .value(); + + auto pars2 = Acts::BoundTrackParameters::create(surf2, gctx, pos, dir, 1. / P, + std::nullopt, hypothesis1) + .value(); + + auto pars3 = Acts::BoundTrackParameters::create(surf1, gctx, pos, dir, 1. / P, + std::nullopt, hypothesis2) + .value(); + + auto pars4 = Acts::BoundTrackParameters::create( + surf1, gctx, pos, dir, -1. / P, std::nullopt, hypothesis2) + .value(); + + // Get the point of the grid + auto bin = grid.localBinsFromGlobalBin(2); + auto center = grid.binCenter(bin); + Acts::Vector2 loc{center.at(0), center.at(1)}; + + // Fill in grid + acc.addTrack(pars1, pars1, loc); + + // Different reference surfaces + BOOST_CHECK_THROW(acc.addTrack(pars2, pars2, loc), std::invalid_argument); + + // Different particle hypotheses + BOOST_CHECK_THROW(acc.addTrack(pars3, pars3, loc), std::invalid_argument); + + // Different charges + BOOST_CHECK_THROW(acc.addTrack(pars4, pars4, loc), std::invalid_argument); +} + +BOOST_AUTO_TEST_CASE(Accumulation) { + // Instantiate grids + GridBound gridBound(axisGen()); + AccBound accBound(gridBound); + + GridCurvilinear gridCurvilinear(axisGen()); + AccCurvilinear accCurvilinear(gridCurvilinear); + + GridFree gridFree(axisGen()); + AccFree accFree(gridFree); + + // Create a reference surface for bound parameters + auto transform = Acts::Transform3::Identity(); + auto bounds = std::make_shared<Acts::RectangleBounds>(1, 1); + auto surf = Acts::Surface::makeShared<Acts::PlaneSurface>(transform, bounds); + + auto hypothesis = Acts::ParticleHypothesis::electron(); + + std::vector<Acts::Vector4> avgPoss; + std::vector<Acts::Vector3> avgMoms; + Acts::Vector4 pos{1, 2, 0, 4}; + for (std::size_t i = 0; i < gridBound.size(); i++) { + // Create parameters to accumulate + std::array<Acts::Vector4, 4> fourPositions = {pos * (i + 1), pos * (i + 2), + pos * (i + 3), pos * (i + 4)}; + + std::array<Acts::ActsScalar, 4> thetas = { + std::numbers::pi / (i + 1), std::numbers::pi / (i + 2), + std::numbers::pi / (i + 3), std::numbers::pi / (i + 4)}; + + std::array<Acts::ActsScalar, 4> phis = { + 2 * std::numbers::pi / (i + 1), 2 * std::numbers::pi / (i + 2), + 2 * std::numbers::pi / (i + 3), 2 * std::numbers::pi / (i + 4)}; + + Acts::ActsScalar P = 1.5 * (i + 1); + + // Get the point of the grid + auto bin = gridBound.localBinsFromGlobalBin(i); + auto center = gridBound.binCenter(bin); + Acts::Vector2 loc{center.at(0), center.at(1)}; + + // Accumulate + Acts::Vector4 avgPos{0, 0, 0, 0}; + Acts::Vector3 avgMom{0, 0, 0}; + for (std::size_t j = 0; j < 4; j++) { + Acts::Vector3 direction{std::sin(thetas.at(j)) * std::cos(phis.at(j)), + std::sin(thetas.at(j)) * std::sin(phis.at(j)), + std::cos(thetas.at(j))}; + + avgPos += fourPositions.at(j); + avgMom += P * direction; + + // Fill in each grid + auto parsBound = Acts::BoundTrackParameters::create( + surf, gctx, fourPositions.at(j), direction, 1. / P, + std::nullopt, hypothesis) + .value(); + + auto parsCurvilinear = Acts::CurvilinearTrackParameters( + fourPositions.at(j), direction, 1. / P, std::nullopt, hypothesis); + + auto parsFree = Acts::FreeTrackParameters( + fourPositions.at(j), direction, 1. / P, std::nullopt, hypothesis); + + accBound.addTrack(parsBound, parsBound, loc); + accCurvilinear.addTrack(parsCurvilinear, parsCurvilinear, loc); + accFree.addTrack(parsFree, parsFree, loc); + } + avgPoss.push_back(avgPos / fourPositions.size()); + avgMoms.push_back(avgMom / fourPositions.size()); + } + + // Finalize and compare + GridBound avgGridBound = accBound.finalizeLookup(); + GridCurvilinear avgGridCurvilinear = accCurvilinear.finalizeLookup(); + GridFree avgGridFree = accFree.finalizeLookup(); + for (std::size_t i = 0; i < avgGridBound.size(); i++) { + auto [ipBound, refBound] = avgGridBound.at(i); + auto [ipCurvilinear, refCurvilinear] = avgGridCurvilinear.at(i); + auto [ipFree, refFree] = avgGridFree.at(i); + + Acts::Vector4 avgPos = avgPoss.at(i); + + Acts::Vector3 avgMom = avgMoms.at(i); + Acts::Vector3 avgDir = avgMom.normalized(); + Acts::ActsScalar avgP = avgMom.norm(); + + CHECK_CLOSE_ABS(ipBound->fourPosition(gctx), avgPos, 1e-3); + CHECK_CLOSE_ABS(ipBound->direction(), avgDir, 1e-3); + CHECK_CLOSE_ABS(ipBound->absoluteMomentum(), avgP, 1e-3); + + CHECK_CLOSE_ABS(ipCurvilinear->fourPosition(), avgPos, 1e-3); + CHECK_CLOSE_ABS(ipCurvilinear->direction(), avgDir, 1e-3); + CHECK_CLOSE_ABS(ipCurvilinear->absoluteMomentum(), avgP, 1e-3); + + CHECK_CLOSE_ABS(ipFree->fourPosition(), avgPos, 1e-3); + CHECK_CLOSE_ABS(ipFree->direction(), avgDir, 1e-3); + CHECK_CLOSE_ABS(ipFree->absoluteMomentum(), avgP, 1e-3); + } +} + +BOOST_AUTO_TEST_SUITE_END() From 5c3a8b81117927452c50c0947d2b47e6f76c1721 Mon Sep 17 00:00:00 2001 From: Andreas Stefl <stefl.andreas@gmail.com> Date: Fri, 22 Nov 2024 08:31:15 +0100 Subject: [PATCH 34/49] refactor!: Deduplicate `estimateTrackParamsFromSeed` code (#3866) After a couple of iterations we can deduplicate the code with the free param estimation blocked by - https://github.com/acts-project/acts/pull/3835 - https://github.com/acts-project/acts/pull/3832 - https://github.com/acts-project/acts/pull/3863 --- .../Seeding/EstimateTrackParamsFromSeed.hpp | 172 ++++-------------- .../Seeding/EstimateTrackParamsFromSeed.cpp | 1 + .../src/TrackParamsEstimationAlgorithm.cpp | 16 +- .../src/PrototracksToParameters.cpp | 10 +- Examples/Python/tests/root_file_hashes.txt | 8 +- .../EstimateTrackParamsFromSeedTest.cpp | 9 +- 6 files changed, 55 insertions(+), 161 deletions(-) diff --git a/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp b/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp index c59a55ad533..e4618296b50 100644 --- a/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp +++ b/Core/include/Acts/Seeding/EstimateTrackParamsFromSeed.hpp @@ -8,17 +8,14 @@ #pragma once +#include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/TrackParametrization.hpp" #include "Acts/Definitions/Units.hpp" #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Surfaces/Surface.hpp" -#include "Acts/Utilities/Logger.hpp" -#include "Acts/Utilities/MathHelpers.hpp" #include "Acts/Utilities/Zip.hpp" #include <array> -#include <cmath> -#include <iterator> #include <optional> #include <stdexcept> @@ -27,17 +24,16 @@ namespace Acts { /// Estimate the full track parameters from three space points /// /// This method is based on the conformal map transformation. It estimates the -/// full free track parameters, i.e. (x, y, z, t, dx, dy, dz, q/p) at the -/// bottom space point. The bottom space is assumed to be the first element -/// in the range defined by the iterators. The magnetic field (which might be -/// along any direction) is also necessary for the momentum estimation. +/// full free track parameters, i.e. (x, y, z, t, dx, dy, dz, q/p) at the bottom +/// space point. The bottom space is assumed to be the first element in the +/// range defined by the iterators. The magnetic field (which might be along any +/// direction) is also necessary for the momentum estimation. /// /// This is a purely spatial estimation, i.e. the time parameter will be set to /// 0. /// -/// It resembles the method used in ATLAS for the track parameters -/// estimated from seed, i.e. the function InDet::SiTrackMaker_xk::getAtaPlane -/// here: +/// It resembles the method used in ATLAS for the track parameters estimated +/// from seed, i.e. the function InDet::SiTrackMaker_xk::getAtaPlane here: /// https://acode-browser.usatlas.bnl.gov/lxr/source/athena/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx /// /// @tparam spacepoint_iterator_t The type of space point iterator @@ -55,14 +51,13 @@ FreeVector estimateTrackParamsFromSeed(const Vector3& sp0, const Vector3& sp1, /// Estimate the full track parameters from three space points /// /// This method is based on the conformal map transformation. It estimates the -/// full free track parameters, i.e. (x, y, z, t, dx, dy, dz, q/p) at the -/// bottom space point. The bottom space is assumed to be the first element -/// in the range defined by the iterators. The magnetic field (which might be -/// along any direction) is also necessary for the momentum estimation. +/// full free track parameters, i.e. (x, y, z, t, dx, dy, dz, q/p) at the bottom +/// space point. The bottom space is assumed to be the first element in the +/// range defined by the iterators. The magnetic field (which might be along any +/// direction) is also necessary for the momentum estimation. /// -/// It resembles the method used in ATLAS for the track parameters -/// estimated from seed, i.e. the function InDet::SiTrackMaker_xk::getAtaPlane -/// here: +/// It resembles the method used in ATLAS for the track parameters estimated +/// from seed, i.e. the function InDet::SiTrackMaker_xk::getAtaPlane here: /// https://acode-browser.usatlas.bnl.gov/lxr/source/athena/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx /// /// @tparam spacepoint_iterator_t The type of space point iterator @@ -107,150 +102,53 @@ FreeVector estimateTrackParamsFromSeed(spacepoint_range_t spRange, /// This method is based on the conformal map transformation. It estimates the /// full bound track parameters, i.e. (loc0, loc1, phi, theta, q/p, t) at the /// bottom space point. The bottom space is assumed to be the first element -/// in the range defined by the iterators. It must lie on the surface -/// provided for the representation of the bound track parameters. The magnetic -/// field (which might be along any direction) is also necessary for the -/// momentum estimation. +/// in the range defined by the iterators. It must lie on the surface provided +/// for the representation of the bound track parameters. The magnetic field +/// (which might be along any direction) is also necessary for the momentum +/// estimation. /// -/// It resembles the method used in ATLAS for the track parameters -/// estimated from seed, i.e. the function InDet::SiTrackMaker_xk::getAtaPlane -/// here: +/// It resembles the method used in ATLAS for the track parameters estimated +/// from seed, i.e. the function InDet::SiTrackMaker_xk::getAtaPlane here: /// https://acode-browser.usatlas.bnl.gov/lxr/source/athena/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx /// /// @tparam spacepoint_iterator_t The type of space point iterator /// /// @param gctx is the geometry context -/// @param spBegin is the begin iterator for the space points -/// @param spEnd is the end iterator for the space points +/// @param spRange is the range of space points /// @param surface is the surface of the bottom space point. The estimated bound /// track parameters will be represented also at this surface /// @param bField is the magnetic field vector -/// @param logger A logger instance /// -/// @return optional bound parameters -template <typename spacepoint_iterator_t> -std::optional<BoundVector> estimateTrackParamsFromSeed( - const GeometryContext& gctx, spacepoint_iterator_t spBegin, - spacepoint_iterator_t spEnd, const Surface& surface, const Vector3& bField, - const Acts::Logger& logger = getDummyLogger()) { - // Check the number of provided space points - std::size_t numSP = std::distance(spBegin, spEnd); - if (numSP != 3) { - ACTS_ERROR("There should be exactly three space points provided."); - return std::nullopt; - } - - // The global positions of the bottom, middle and space points - std::array<Vector3, 3> spGlobalPositions = {Vector3::Zero(), Vector3::Zero(), - Vector3::Zero()}; - std::array<std::optional<float>, 3> spGlobalTimes = { - std::nullopt, std::nullopt, std::nullopt}; - // The first, second and third space point are assumed to be bottom, middle - // and top space point, respectively - for (std::size_t isp = 0; isp < 3; ++isp) { - spacepoint_iterator_t it = std::next(spBegin, isp); - if (*it == nullptr) { - ACTS_ERROR("Empty space point found. This should not happen."); - return std::nullopt; - } - const auto& sp = *it; - spGlobalPositions[isp] = Vector3(sp->x(), sp->y(), sp->z()); - spGlobalTimes[isp] = sp->t(); - } - - // Define a new coordinate frame with its origin at the bottom space point, z - // axis long the magnetic field direction and y axis perpendicular to vector - // from the bottom to middle space point. Hence, the projection of the middle - // space point on the transverse plane will be located at the x axis of the - // new frame. - Vector3 relVec = spGlobalPositions[1] - spGlobalPositions[0]; - Vector3 newZAxis = bField.normalized(); - Vector3 newYAxis = newZAxis.cross(relVec).normalized(); - Vector3 newXAxis = newYAxis.cross(newZAxis); - RotationMatrix3 rotation; - rotation.col(0) = newXAxis; - rotation.col(1) = newYAxis; - rotation.col(2) = newZAxis; - // The center of the new frame is at the bottom space point - Translation3 trans(spGlobalPositions[0]); - // The transform which constructs the new frame - Transform3 transform(trans * rotation); - - // The coordinate of the middle and top space point in the new frame - Vector3 local1 = transform.inverse() * spGlobalPositions[1]; - Vector3 local2 = transform.inverse() * spGlobalPositions[2]; - - // In the new frame the bottom sp is at the origin, while the middle - // sp in along the x axis. As such, the x-coordinate of the circle is - // at: x-middle / 2. - // The y coordinate can be found by using the straight line passing - // between the mid point between the middle and top sp and perpendicular to - // the line connecting them - Vector2 circleCenter; - circleCenter(0) = 0.5 * local1(0); +/// @return bound parameters +template <std::ranges::range spacepoint_range_t> +Result<BoundVector> estimateTrackParamsFromSeed(const GeometryContext& gctx, + spacepoint_range_t spRange, + const Surface& surface, + const Vector3& bField) { + FreeVector freeParams = estimateTrackParamsFromSeed(spRange, bField); - ActsScalar deltaX21 = local2(0) - local1(0); - ActsScalar sumX21 = local2(0) + local1(0); - // straight line connecting the two points - // y = a * x + c (we don't care about c right now) - // we simply need the slope - // we compute 1./a since this is what we need for the following computation - ActsScalar ia = deltaX21 / local2(1); - // Perpendicular line is then y = -1/a *x + b - // we can evaluate b given we know a already by imposing - // the line passes through P = (0.5 * (x2 + x1), 0.5 * y2) - ActsScalar b = 0.5 * (local2(1) + ia * sumX21); - circleCenter(1) = -ia * circleCenter(0) + b; - // Radius is a signed distance between circleCenter and first sp, which is at - // (0, 0) in the new frame. Sign depends on the slope a (positive vs negative) - int sign = ia > 0 ? -1 : 1; - const ActsScalar R = circleCenter.norm(); - ActsScalar invTanTheta = - local2.z() / (2 * R * std::asin(local2.head<2>().norm() / (2 * R))); - // The momentum direction in the new frame (the center of the circle has the - // coordinate (-1.*A/(2*B), 1./(2*B))) - ActsScalar A = -circleCenter(0) / circleCenter(1); - Vector3 transDirection(1., A, fastHypot(1, A) * invTanTheta); - // Transform it back to the original frame - Vector3 direction = rotation * transDirection.normalized(); + const auto* sp0 = *spRange.begin(); + Vector3 origin = Vector3(sp0->x(), sp0->y(), sp0->z()); + Vector3 direction = freeParams.segment<3>(eFreeDir0); - // Initialize the bound parameters vector BoundVector params = BoundVector::Zero(); - - // The estimated phi and theta params[eBoundPhi] = VectorHelpers::phi(direction); params[eBoundTheta] = VectorHelpers::theta(direction); + params[eBoundQOverP] = freeParams[eFreeQOverP]; // Transform the bottom space point to local coordinates of the provided // surface - auto lpResult = surface.globalToLocal(gctx, spGlobalPositions[0], direction); + auto lpResult = surface.globalToLocal(gctx, origin, direction); if (!lpResult.ok()) { - ACTS_ERROR( - "Global to local transformation did not succeed. Please make sure the " - "bottom space point lies on the provided surface."); - return std::nullopt; + return Result<BoundVector>::failure(lpResult.error()); } Vector2 bottomLocalPos = lpResult.value(); // The estimated loc0 and loc1 params[eBoundLoc0] = bottomLocalPos.x(); params[eBoundLoc1] = bottomLocalPos.y(); - params[eBoundTime] = spGlobalTimes[0].value_or(0.); - - ActsScalar bFieldStrength = bField.norm(); - // The estimated q/pt in [GeV/c]^-1 (note that the pt is the projection of - // momentum on the transverse plane of the new frame) - ActsScalar qOverPt = sign / (bFieldStrength * R); - // The estimated q/p in [GeV/c]^-1 - params[eBoundQOverP] = qOverPt / fastHypot(1., invTanTheta); + params[eBoundTime] = sp0->t().value_or(0); - if (params.hasNaN()) { - ACTS_ERROR( - "The NaN value exists at the estimated track parameters from seed with" - << "\nbottom sp: " << spGlobalPositions[0] << "\nmiddle sp: " - << spGlobalPositions[1] << "\ntop sp: " << spGlobalPositions[2]); - return std::nullopt; - } - return params; + return Result<BoundVector>::success(params); } /// Configuration for the estimation of the covariance matrix of the track diff --git a/Core/src/Seeding/EstimateTrackParamsFromSeed.cpp b/Core/src/Seeding/EstimateTrackParamsFromSeed.cpp index 055691bbb2f..b071d5dd7e6 100644 --- a/Core/src/Seeding/EstimateTrackParamsFromSeed.cpp +++ b/Core/src/Seeding/EstimateTrackParamsFromSeed.cpp @@ -9,6 +9,7 @@ #include "Acts/Seeding/EstimateTrackParamsFromSeed.hpp" #include "Acts/Definitions/TrackParametrization.hpp" +#include "Acts/Utilities/MathHelpers.hpp" #include <numbers> diff --git a/Examples/Algorithms/TrackFinding/src/TrackParamsEstimationAlgorithm.cpp b/Examples/Algorithms/TrackFinding/src/TrackParamsEstimationAlgorithm.cpp index dfb0269a56d..f2711ce1d1a 100644 --- a/Examples/Algorithms/TrackFinding/src/TrackParamsEstimationAlgorithm.cpp +++ b/Examples/Algorithms/TrackFinding/src/TrackParamsEstimationAlgorithm.cpp @@ -21,12 +21,10 @@ #include "ActsExamples/EventData/Track.hpp" #include "ActsExamples/Framework/AlgorithmContext.hpp" -#include <cmath> #include <cstddef> #include <optional> #include <ostream> #include <stdexcept> -#include <system_error> #include <utility> #include <vector> @@ -119,16 +117,14 @@ ProcessCode TrackParamsEstimationAlgorithm::execute( } // Estimate the track parameters from seed - auto optParams = Acts::estimateTrackParamsFromSeed( - ctx.geoContext, seed.sp().begin(), seed.sp().end(), *surface, field, - logger()); - if (!optParams.has_value()) { - ACTS_WARNING("Estimation of track parameters for seed " << iseed - << " failed."); + const auto paramsResult = Acts::estimateTrackParamsFromSeed( + ctx.geoContext, seed.sp(), *surface, field); + if (!paramsResult.ok()) { + ACTS_WARNING("Skip track because param estimation failed " + << paramsResult.error()); continue; } - - const auto& params = optParams.value(); + const auto& params = *paramsResult; Acts::EstimateTrackParamCovarianceConfig config{ .initialSigmas = diff --git a/Examples/Algorithms/TrackFindingExaTrkX/src/PrototracksToParameters.cpp b/Examples/Algorithms/TrackFindingExaTrkX/src/PrototracksToParameters.cpp index 9ffe49ae460..53fe1cdbdad 100644 --- a/Examples/Algorithms/TrackFindingExaTrkX/src/PrototracksToParameters.cpp +++ b/Examples/Algorithms/TrackFindingExaTrkX/src/PrototracksToParameters.cpp @@ -167,17 +167,17 @@ ProcessCode PrototracksToParameters::execute( continue; } - auto pars = Acts::estimateTrackParamsFromSeed( - ctx.geoContext, seed.sp().begin(), seed.sp().end(), surface, field); - - if (not pars) { + auto parsResult = Acts::estimateTrackParamsFromSeed( + ctx.geoContext, seed.sp(), surface, field); + if (!parsResult.ok()) { ACTS_WARNING("Skip track because of bad params"); } + const auto &pars = *parsResult; seededTracks.push_back(track); seeds.emplace_back(std::move(seed)); parameters.push_back(Acts::BoundTrackParameters( - surface.getSharedPtr(), *pars, m_covariance, m_cfg.particleHypothesis)); + surface.getSharedPtr(), pars, m_covariance, m_cfg.particleHypothesis)); } if (skippedTracks > 0) { diff --git a/Examples/Python/tests/root_file_hashes.txt b/Examples/Python/tests/root_file_hashes.txt index 45337b2f762..4674ce1ce2e 100644 --- a/Examples/Python/tests/root_file_hashes.txt +++ b/Examples/Python/tests/root_file_hashes.txt @@ -41,11 +41,11 @@ test_ckf_tracks_example[generic-truth_estimated]__tracksummary_ckf.root: 8e0116c test_ckf_tracks_example[generic-truth_estimated]__performance_seeding.root: 1facb05c066221f6361b61f015cdf0918e94d9f3fce2269ec7b6a4dffeb2bc7e test_ckf_tracks_example[generic-truth_smeared]__trackstates_ckf.root: 82a6744980553e6274df78eea15f0dec22676b1c04e14afc3828bff9bbf5e1b1 test_ckf_tracks_example[generic-truth_smeared]__tracksummary_ckf.root: 06d6ae1d05cb611b19df3c59531997c9b0108f5ef6027d76c4827bd2d9edb921 -test_ckf_tracks_example[odd-full_seeding]__trackstates_ckf.root: 17c48c5a61b1a5495d91336cdf06f9c24e50d81349c1f31d7c70ffff5810a376 -test_ckf_tracks_example[odd-full_seeding]__tracksummary_ckf.root: b5805e54030ab8ac80a8c0a764700c65433dc659783fc8ff3b2c96e512a1d045 +test_ckf_tracks_example[odd-full_seeding]__trackstates_ckf.root: 53a96c225ed78bd7da1491ae3ff4173f0e6c8bffe27e3eab1ab7adfe55426080 +test_ckf_tracks_example[odd-full_seeding]__tracksummary_ckf.root: 2a98d8ec8fae97e18f4661580b71885f558d7222f94bca5edfbf5cdb595021f7 test_ckf_tracks_example[odd-full_seeding]__performance_seeding_trees.root: 43c58577aafe07645e5660c4f43904efadf91d8cda45c5c04c248bbe0f59814f -test_ckf_tracks_example[odd-truth_estimated]__trackstates_ckf.root: 86be5a086d2a87dfde9320bb880bd0788d733ea9727cb5ee6dc0282ec4be39f4 -test_ckf_tracks_example[odd-truth_estimated]__tracksummary_ckf.root: ffce6a73f16986cb3f0386d4a8c1e0ff6f0b4130b9bb12d1af0eb905d000e3e9 +test_ckf_tracks_example[odd-truth_estimated]__trackstates_ckf.root: 7ec5f4b24fa69bfc9d812a6f224d74d36df2d0a42aef791ae0116f309d6f1433 +test_ckf_tracks_example[odd-truth_estimated]__tracksummary_ckf.root: 1eaae038ced2cc5c757480ca42eab60cdaff14d812c34a807a841267d6bfa110 test_ckf_tracks_example[odd-truth_estimated]__performance_seeding.root: 1a36b7017e59f1c08602ef3c2cb0483c51df248f112e3780c66594110719c575 test_ckf_tracks_example[odd-truth_smeared]__trackstates_ckf.root: 35a65e15a6f479f628a96f56ee78e1ac371d71a686ee0c974944d681499fe6bd test_ckf_tracks_example[odd-truth_smeared]__tracksummary_ckf.root: 3e257de624674fa9a19dcc72598c78c29a52633821acaa56dc2aa39a1395f1b5 diff --git a/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp b/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp index 9aab6c1c70b..45dbbd9d0bb 100644 --- a/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp +++ b/Tests/UnitTests/Core/Seeding/EstimateTrackParamsFromSeedTest.cpp @@ -174,11 +174,10 @@ BOOST_AUTO_TEST_CASE(trackparameters_estimation_test) { BOOST_CHECK(!estFreeParams.hasNaN()); // Test the bound track parameters estimator - auto fullParamsOpt = estimateTrackParamsFromSeed( - geoCtx, spacePointPtrs.begin(), spacePointPtrs.end(), - *bottomSurface, bField, *logger); - BOOST_REQUIRE(fullParamsOpt.has_value()); - const auto& estFullParams = fullParamsOpt.value(); + auto estFullParamsResult = estimateTrackParamsFromSeed( + geoCtx, spacePointPtrs, *bottomSurface, bField); + BOOST_CHECK(estFullParamsResult.ok()); + const auto& estFullParams = estFullParamsResult.value(); BOOST_TEST_INFO( "The estimated full track parameters at the bottom space point: " "\n" From c3c4bf5209ac59430e45a9cf0d2acf9cfde2d914 Mon Sep 17 00:00:00 2001 From: "Alexander J. Pfleger" <70842573+AJPfleger@users.noreply.github.com> Date: Fri, 22 Nov 2024 08:39:19 +0100 Subject: [PATCH 35/49] docs(sphinx): remove outdated warnings from ignore list (#3878) --- docs/known-warnings.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/known-warnings.txt b/docs/known-warnings.txt index fa1e28dcb70..2138dc11bb9 100644 --- a/docs/known-warnings.txt +++ b/docs/known-warnings.txt @@ -3,8 +3,6 @@ .*Duplicate C\+\+ declaration.* .*Duplicate ID: .* .*Duplicate explicit target name: .* -.*doxygenfile: Found multiple matches for file \"SeedFinder.hpp.* -.*Duplicate explicit target name: .*class_acts_1_1_axis_aligned_bounding_box_.* .*undefined label: .*class_acts_1_1_convex_polygon_bounds_3_01_polygon_dynamic_01_4.* .*undefined label: .*class_acts_1_1_grid_surface_material_t.* # I think these are because we use specialization From 6e3a9a683e66cb28169f15f8d8f6c8390e01651d Mon Sep 17 00:00:00 2001 From: Paul Gessinger <paul.gessinger@cern.ch> Date: Fri, 22 Nov 2024 12:19:39 +0100 Subject: [PATCH 36/49] refactor: Avoid `new`/`delete` in a number of places. (#3828) --- .../Acts/Geometry/SurfaceArrayCreator.hpp | 16 +++--- Core/include/Acts/Seeding/GbtsDataStorage.hpp | 55 +++++++------------ Core/include/Acts/Seeding/GbtsGeometry.hpp | 38 ++++--------- Core/include/Acts/Seeding/SeedFinderGbts.ipp | 28 ++++------ .../Acts/TrackFinding/GbtsConnector.hpp | 9 +-- Core/src/Geometry/LayerCreator.cpp | 3 +- Core/src/TrackFinding/GbtsConnector.cpp | 19 ++----- .../GenericDetector/ProtoLayerCreatorT.hpp | 15 +++-- .../MagneticField/src/FieldMapRootIo.cpp | 6 +- .../Io/Root/RootAthenaNTupleReader.hpp | 4 +- .../Io/Root/RootMaterialTrackReader.hpp | 2 +- .../Io/Root/RootParticleReader.hpp | 2 +- .../ActsExamples/Io/Root/RootSimHitReader.hpp | 4 +- .../Io/Root/RootTrackSummaryReader.hpp | 2 +- .../ActsExamples/Io/Root/RootVertexReader.hpp | 2 +- .../Io/Root/src/RootAthenaNTupleReader.cpp | 4 +- Examples/Io/Root/src/RootBFieldWriter.cpp | 7 +-- .../Io/Root/src/RootMaterialTrackReader.cpp | 4 +- Examples/Io/Root/src/RootParticleReader.cpp | 2 +- Examples/Io/Root/src/RootSimHitReader.cpp | 4 +- .../Io/Root/src/RootTrackSummaryReader.cpp | 2 +- Examples/Io/Root/src/RootVertexReader.cpp | 2 +- .../NuclearInteractionParametrisation.cpp | 13 +++-- 23 files changed, 100 insertions(+), 143 deletions(-) diff --git a/Core/include/Acts/Geometry/SurfaceArrayCreator.hpp b/Core/include/Acts/Geometry/SurfaceArrayCreator.hpp index 584e8ee6992..9906fda7939 100644 --- a/Core/include/Acts/Geometry/SurfaceArrayCreator.hpp +++ b/Core/include/Acts/Geometry/SurfaceArrayCreator.hpp @@ -381,8 +381,8 @@ class SurfaceArrayCreator { Axis<AxisType::Equidistant, bdtB> axisB(pAxisB.min, pAxisB.max, pAxisB.nBins); using SGL = SurfaceArray::SurfaceGridLookup<decltype(axisA), decltype(axisB)>; - ptr = std::unique_ptr<ISGL>(static_cast<ISGL*>( - new SGL(globalToLocal, localToGlobal, std::make_tuple(axisA, axisB), {pAxisA.bValue, pAxisB.bValue}))); + ptr = std::make_unique<SGL>( + globalToLocal, localToGlobal, std::pair{axisA, axisB}, std::vector{pAxisA.bValue, pAxisB.bValue}); } else if (pAxisA.bType == equidistant && pAxisB.bType == arbitrary) { @@ -390,8 +390,8 @@ class SurfaceArrayCreator { Axis<AxisType::Variable, bdtB> axisB(pAxisB.binEdges); using SGL = SurfaceArray::SurfaceGridLookup<decltype(axisA), decltype(axisB)>; - ptr = std::unique_ptr<ISGL>(static_cast<ISGL*>( - new SGL(globalToLocal, localToGlobal, std::make_tuple(axisA, axisB), {pAxisA.bValue, pAxisB.bValue}))); + ptr = std::make_unique<SGL>( + globalToLocal, localToGlobal, std::pair{axisA, axisB}, std::vector{pAxisA.bValue, pAxisB.bValue}); } else if (pAxisA.bType == arbitrary && pAxisB.bType == equidistant) { @@ -399,8 +399,8 @@ class SurfaceArrayCreator { Axis<AxisType::Equidistant, bdtB> axisB(pAxisB.min, pAxisB.max, pAxisB.nBins); using SGL = SurfaceArray::SurfaceGridLookup<decltype(axisA), decltype(axisB)>; - ptr = std::unique_ptr<ISGL>(static_cast<ISGL*>( - new SGL(globalToLocal, localToGlobal, std::make_tuple(axisA, axisB), {pAxisA.bValue, pAxisB.bValue}))); + ptr = std::make_unique<SGL>( + globalToLocal, localToGlobal, std::pair{axisA, axisB}, std::vector{pAxisA.bValue, pAxisB.bValue}); } else /*if (pAxisA.bType == arbitrary && pAxisB.bType == arbitrary)*/ { @@ -408,8 +408,8 @@ class SurfaceArrayCreator { Axis<AxisType::Variable, bdtB> axisB(pAxisB.binEdges); using SGL = SurfaceArray::SurfaceGridLookup<decltype(axisA), decltype(axisB)>; - ptr = std::unique_ptr<ISGL>(static_cast<ISGL*>( - new SGL(globalToLocal, localToGlobal, std::make_tuple(axisA, axisB), {pAxisA.bValue, pAxisB.bValue}))); + ptr = std::make_unique<SGL>( + globalToLocal, localToGlobal, std::pair{axisA, axisB}, std::vector{pAxisA.bValue, pAxisB.bValue}); } // clang-format on diff --git a/Core/include/Acts/Seeding/GbtsDataStorage.hpp b/Core/include/Acts/Seeding/GbtsDataStorage.hpp index c28b0cc2413..8c7ba861bcd 100644 --- a/Core/include/Acts/Seeding/GbtsDataStorage.hpp +++ b/Core/include/Acts/Seeding/GbtsDataStorage.hpp @@ -13,6 +13,7 @@ #include "Acts/Seeding/GbtsGeometry.hpp" #include <algorithm> +#include <iostream> #include <map> #include <numbers> #include <vector> @@ -47,13 +48,6 @@ struct GbtsSP { template <typename space_point_t> class GbtsNode { public: - struct CompareByPhi { - bool operator()(const GbtsNode<space_point_t> *n1, - const GbtsNode<space_point_t> *n2) { - return (n1->m_spGbts.phi() < n2->m_spGbts.phi()); - } - }; - GbtsNode(const GbtsSP<space_point_t> &spGbts, float minT = -100.0, float maxT = 100.0) : m_spGbts(spGbts), m_minCutOnTau(minT), m_maxCutOnTau(maxT) {} @@ -97,27 +91,20 @@ class GbtsEtaBin { public: GbtsEtaBin() { m_vn.clear(); } - ~GbtsEtaBin() { - for (typename std::vector<GbtsNode<space_point_t> *>::iterator it = - m_vn.begin(); - it != m_vn.end(); ++it) { - delete (*it); - } - } - void sortByPhi() { - std::ranges::sort(m_vn, - typename Acts::GbtsNode<space_point_t>::CompareByPhi()); + std::ranges::sort(m_vn, [](const auto &n1, const auto &n2) { + return (n1->m_spGbts.phi() < n2->m_spGbts.phi()); + }); } bool empty() const { return m_vn.empty(); } void generatePhiIndexing(float dphi) { for (unsigned int nIdx = 0; nIdx < m_vn.size(); nIdx++) { - GbtsNode<space_point_t> *pN = m_vn.at(nIdx); + GbtsNode<space_point_t> &pN = *m_vn.at(nIdx); // float phi = pN->m_sp.phi(); // float phi = (std::atan(pN->m_sp.x() / pN->m_sp.y())); - float phi = pN->m_spGbts.phi(); + float phi = pN.m_spGbts.phi(); if (phi <= std::numbers::pi_v<float> - dphi) { continue; } @@ -127,14 +114,14 @@ class GbtsEtaBin { } for (unsigned int nIdx = 0; nIdx < m_vn.size(); nIdx++) { - GbtsNode<space_point_t> *pN = m_vn.at(nIdx); - float phi = pN->m_spGbts.phi(); + GbtsNode<space_point_t> &pN = *m_vn.at(nIdx); + float phi = pN.m_spGbts.phi(); m_vPhiNodes.push_back(std::pair<float, unsigned int>(phi, nIdx)); } for (unsigned int nIdx = 0; nIdx < m_vn.size(); nIdx++) { - GbtsNode<space_point_t> *pN = m_vn.at(nIdx); - float phi = pN->m_spGbts.phi(); + GbtsNode<space_point_t> &pN = *m_vn.at(nIdx); + float phi = pN.m_spGbts.phi(); if (phi >= -std::numbers::pi_v<float> + dphi) { break; } @@ -143,9 +130,7 @@ class GbtsEtaBin { } } - std::vector<GbtsNode<space_point_t> *> m_vn; - // TODO change to - // std::vector<std::unique_ptr<GbtsNode<space_point_t>>> m_vn; + std::vector<std::unique_ptr<GbtsNode<space_point_t>>> m_vn; std::vector<std::pair<float, unsigned int>> m_vPhiNodes; }; @@ -186,8 +171,9 @@ class GbtsDataStorage { 1.6 + 0.15 / (cluster_width + 0.2) + 6.1 * (cluster_width - 0.2); } - m_etaBins.at(binIndex).m_vn.push_back(new GbtsNode<space_point_t>( - sp, min_tau, max_tau)); // adding ftf member to nodes + m_etaBins.at(binIndex).m_vn.push_back( + std::make_unique<GbtsNode<space_point_t>>( + sp, min_tau, max_tau)); // adding ftf member to nodes } else { if (useClusterWidth) { float cluster_width = 1; // temporary while cluster width not available @@ -195,7 +181,8 @@ class GbtsDataStorage { return -3; } } - m_etaBins.at(binIndex).m_vn.push_back(new GbtsNode<space_point_t>(sp)); + m_etaBins.at(binIndex).m_vn.push_back( + std::make_unique<GbtsNode<space_point_t>>(sp)); } return 0; @@ -218,16 +205,14 @@ class GbtsDataStorage { vn.clear(); vn.reserve(numberOfNodes()); for (const auto &b : m_etaBins) { - for (typename std::vector<GbtsNode<space_point_t> *>::const_iterator nIt = - b.m_vn.begin(); - nIt != b.m_vn.end(); ++nIt) { - if ((*nIt)->m_in.empty()) { + for (const auto &n : b.m_vn) { + if (n->m_in.empty()) { continue; } - if ((*nIt)->m_out.empty()) { + if (n->m_out.empty()) { continue; } - vn.push_back(*nIt); + vn.push_back(n.get()); } } } diff --git a/Core/include/Acts/Seeding/GbtsGeometry.hpp b/Core/include/Acts/Seeding/GbtsGeometry.hpp index 54931b200b8..cc1af647d28 100644 --- a/Core/include/Acts/Seeding/GbtsGeometry.hpp +++ b/Core/include/Acts/Seeding/GbtsGeometry.hpp @@ -13,6 +13,7 @@ #include <algorithm> #include <cmath> +#include <iostream> #include <map> #include <memory> #include <vector> @@ -277,15 +278,10 @@ class GbtsGeometry { // calculating bin tables in the connector... - for (std::map<int, std::vector<GbtsConnection *>>::const_iterator it = - m_connector->m_connMap.begin(); - it != m_connector->m_connMap.end(); ++it) { - const std::vector<GbtsConnection *> &vConn = (*it).second; - - for (std::vector<GbtsConnection *>::const_iterator cIt = vConn.begin(); - cIt != vConn.end(); ++cIt) { - unsigned int src = (*cIt)->m_src; // n2 : the new connectors - unsigned int dst = (*cIt)->m_dst; // n1 + for (auto &[_, vConn] : m_connector->m_connMap) { + for (auto &c : vConn) { + unsigned int src = c->m_src; // n2 : the new connectors + unsigned int dst = c->m_dst; // n1 const GbtsLayer<space_point_t> *pL1 = getGbtsLayerByKey(dst); const GbtsLayer<space_point_t> *pL2 = getGbtsLayerByKey(src); @@ -301,7 +297,7 @@ class GbtsGeometry { int nSrcBins = pL2->m_bins.size(); int nDstBins = pL1->m_bins.size(); - (*cIt)->m_binTable.resize(nSrcBins * nDstBins, 0); + c->m_binTable.resize(nSrcBins * nDstBins, 0); for (int b1 = 0; b1 < nDstBins; b1++) { // loop over bins in Layer 1 for (int b2 = 0; b2 < nSrcBins; b2++) { // loop over bins in Layer 2 @@ -309,7 +305,7 @@ class GbtsGeometry { continue; } int address = b1 + b2 * nDstBins; - (*cIt)->m_binTable.at(address) = 1; + c->m_binTable.at(address) = 1; } } } @@ -322,17 +318,6 @@ class GbtsGeometry { GbtsGeometry(const GbtsGeometry &) = delete; GbtsGeometry &operator=(const GbtsGeometry &) = delete; - ~GbtsGeometry() { - for (typename std::vector<GbtsLayer<space_point_t> *>::iterator it = - m_layArray.begin(); - it != m_layArray.end(); ++it) { - delete (*it); - } - - m_layMap.clear(); - m_layArray.clear(); - } - const GbtsLayer<space_point_t> *getGbtsLayerByKey(unsigned int key) const { typename std::map<unsigned int, GbtsLayer<space_point_t> *>::const_iterator it = m_layMap.find(key); @@ -344,7 +329,7 @@ class GbtsGeometry { } const GbtsLayer<space_point_t> *getGbtsLayerByIndex(int idx) const { - return m_layArray.at(idx); + return m_layArray.at(idx).get(); } int num_bins() const { return m_nEtaBins; } @@ -357,18 +342,19 @@ class GbtsGeometry { unsigned int layerKey = l.m_subdet; // this should be combined ID float ew = m_etaBinWidth; - GbtsLayer<space_point_t> *pHL = new GbtsLayer<space_point_t>(l, ew, bin0); + auto upHL = std::make_unique<GbtsLayer<space_point_t>>(l, ew, bin0); + auto *pHL = upHL.get(); m_layMap.insert( std::pair<unsigned int, GbtsLayer<space_point_t> *>(layerKey, pHL)); - m_layArray.push_back(pHL); + m_layArray.push_back(std::move(upHL)); return pHL; } float m_etaBinWidth{}; std::map<unsigned int, GbtsLayer<space_point_t> *> m_layMap; - std::vector<GbtsLayer<space_point_t> *> m_layArray; + std::vector<std::unique_ptr<GbtsLayer<space_point_t>>> m_layArray; int m_nEtaBins{0}; diff --git a/Core/include/Acts/Seeding/SeedFinderGbts.ipp b/Core/include/Acts/Seeding/SeedFinderGbts.ipp index ed2fe157acf..fb2722db616 100644 --- a/Core/include/Acts/Seeding/SeedFinderGbts.ipp +++ b/Core/include/Acts/Seeding/SeedFinderGbts.ipp @@ -160,12 +160,7 @@ void SeedFinderGbts<external_spacepoint_t>::runGbts_TrackFinder( } unsigned int first_it = 0; - for (typename std::vector< - GbtsNode<external_spacepoint_t>*>::const_iterator n1It = - B1.m_vn.begin(); - n1It != B1.m_vn.end(); ++n1It) { // loop over nodes in Layer 1 - - GbtsNode<external_spacepoint_t>* n1 = (*n1It); + for (const auto& n1 : B1.m_vn) { // loop over nodes in Layer 1 if (n1->m_in.size() >= MAX_SEG_PER_NODE) { continue; @@ -195,7 +190,7 @@ void SeedFinderGbts<external_spacepoint_t>::runGbts_TrackFinder( } GbtsNode<external_spacepoint_t>* n2 = - B2.m_vn.at(B2.m_vPhiNodes.at(n2PhiIdx).second); + B2.m_vn.at(B2.m_vPhiNodes.at(n2PhiIdx).second).get(); if (n2->m_out.size() >= MAX_SEG_PER_NODE) { continue; @@ -304,8 +299,8 @@ void SeedFinderGbts<external_spacepoint_t>::runGbts_TrackFinder( float dPhi1 = std::asin(curv * r1); if (nEdges < m_config.MaxEdges) { - edgeStorage.emplace_back(n1, n2, exp_eta, curv, phi1 + dPhi1, - phi2 + dPhi2); + edgeStorage.emplace_back(n1.get(), n2, exp_eta, curv, + phi1 + dPhi1, phi2 + dPhi2); n1->addIn(nEdges); n2->addOut(nEdges); @@ -332,21 +327,20 @@ void SeedFinderGbts<external_spacepoint_t>::runGbts_TrackFinder( int nNodes = vNodes.size(); for (int nodeIdx = 0; nodeIdx < nNodes; nodeIdx++) { - const GbtsNode<external_spacepoint_t>* pN = vNodes.at(nodeIdx); + const GbtsNode<external_spacepoint_t>& pN = *vNodes.at(nodeIdx); std::vector<std::pair<float, int>> in_sort, out_sort; - in_sort.resize(pN->m_in.size()); - out_sort.resize(pN->m_out.size()); + in_sort.resize(pN.m_in.size()); + out_sort.resize(pN.m_out.size()); - for (int inIdx = 0; inIdx < static_cast<int>(pN->m_in.size()); inIdx++) { - int inEdgeIdx = pN->m_in.at(inIdx); + for (int inIdx = 0; inIdx < static_cast<int>(pN.m_in.size()); inIdx++) { + int inEdgeIdx = pN.m_in.at(inIdx); Acts::GbtsEdge<external_spacepoint_t>* pS = &(edgeStorage.at(inEdgeIdx)); in_sort[inIdx].second = inEdgeIdx; in_sort[inIdx].first = pS->m_p[0]; } - for (int outIdx = 0; outIdx < static_cast<int>(pN->m_out.size()); - outIdx++) { - int outEdgeIdx = pN->m_out.at(outIdx); + for (int outIdx = 0; outIdx < static_cast<int>(pN.m_out.size()); outIdx++) { + int outEdgeIdx = pN.m_out.at(outIdx); Acts::GbtsEdge<external_spacepoint_t>* pS = &(edgeStorage.at(outEdgeIdx)); out_sort[outIdx].second = outEdgeIdx; out_sort[outIdx].first = pS->m_p[0]; diff --git a/Core/include/Acts/TrackFinding/GbtsConnector.hpp b/Core/include/Acts/TrackFinding/GbtsConnector.hpp index f4cddd2527b..d4724929ac2 100644 --- a/Core/include/Acts/TrackFinding/GbtsConnector.hpp +++ b/Core/include/Acts/TrackFinding/GbtsConnector.hpp @@ -11,8 +11,8 @@ // TODO: update to C++17 style // Consider to moving to detail subdirectory #include <fstream> -#include <iostream> #include <map> +#include <memory> #include <vector> namespace Acts { @@ -39,15 +39,10 @@ class GbtsConnector { GbtsConnector(std::ifstream &inFile); - ~GbtsConnector(); - float m_etaBin{}; std::map<int, std::vector<struct LayerGroup>> m_layerGroups; - std::map<int, std::vector<Acts::GbtsConnection *>> m_connMap; - // TODO: change to std::map<int, std::vector<Acts::GbtsConnection> > - // m_connMap; or std::map<int, - // std::vector<std::unique_ptr<Acts::GbtsConnection>> > m_connMap; + std::map<int, std::vector<std::unique_ptr<Acts::GbtsConnection>>> m_connMap; }; } // namespace Acts diff --git a/Core/src/Geometry/LayerCreator.cpp b/Core/src/Geometry/LayerCreator.cpp index 632274c671f..e24ff8e0661 100644 --- a/Core/src/Geometry/LayerCreator.cpp +++ b/Core/src/Geometry/LayerCreator.cpp @@ -407,8 +407,7 @@ Acts::MutableLayerPtr Acts::LayerCreator::planeLayer( } // create the layer and push it back - std::shared_ptr<const PlanarBounds> pBounds( - new RectangleBounds(layerHalf1, layerHalf2)); + auto pBounds = std::make_shared<RectangleBounds>(layerHalf1, layerHalf2); // create the layer MutableLayerPtr pLayer = diff --git a/Core/src/TrackFinding/GbtsConnector.cpp b/Core/src/TrackFinding/GbtsConnector.cpp index d947894871c..69e0f7919e5 100644 --- a/Core/src/TrackFinding/GbtsConnector.cpp +++ b/Core/src/TrackFinding/GbtsConnector.cpp @@ -9,7 +9,6 @@ // TODO: update to C++17 style #include "Acts/TrackFinding/GbtsConnector.hpp" -#include <algorithm> #include <fstream> #include <iostream> #include <list> @@ -34,7 +33,7 @@ GbtsConnector::GbtsConnector(std::ifstream &inFile) { inFile >> lIdx >> stage >> src >> dst >> height >> width >> nEntries; - GbtsConnection *pC = new GbtsConnection(src, dst); + auto pC = std::make_unique<GbtsConnection>(src, dst); int dummy{}; @@ -47,19 +46,17 @@ GbtsConnector::GbtsConnector(std::ifstream &inFile) { int vol_id = src / 1000; if (vol_id == 13 || vol_id == 12 || vol_id == 14) { - delete pC; continue; } vol_id = dst / 1000; if (vol_id == 13 || vol_id == 12 || vol_id == 14) { - delete pC; continue; } auto &connections = m_connMap[stage]; - connections.push_back(pC); + connections.push_back(std::move(pC)); } // re-arrange the connection stages @@ -69,7 +66,9 @@ GbtsConnector::GbtsConnector(std::ifstream &inFile) { std::map<int, std::vector<const GbtsConnection *>> newConnMap; for (const auto &[_, value] : m_connMap) { - std::ranges::copy(value, std::back_inserter(lConns)); + for (const auto &conn : value) { + lConns.push_back(conn.get()); + } } int stageCounter = 0; @@ -172,12 +171,4 @@ GbtsConnector::GbtsConnector(std::ifstream &inFile) { newConnMap.clear(); } -GbtsConnector::~GbtsConnector() { - m_layerGroups.clear(); - for (const auto &[_, connections] : m_connMap) { - for (auto *conn : connections) { - delete conn; - } - } -} } // namespace Acts diff --git a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/ProtoLayerCreatorT.hpp b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/ProtoLayerCreatorT.hpp index fc4fa4c1459..977c11d9121 100644 --- a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/ProtoLayerCreatorT.hpp +++ b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/ProtoLayerCreatorT.hpp @@ -218,8 +218,8 @@ ProtoLayerCreatorT<detector_element_t>::centralProtoLayers( double moduleHalfY = m_cfg.centralModuleHalfY.at(icl); double moduleThickness = m_cfg.centralModuleThickness.at(icl); // create the shared module - std::shared_ptr<const Acts::PlanarBounds> moduleBounds( - new Acts::RectangleBounds(moduleHalfX, moduleHalfY)); + auto moduleBounds = + std::make_shared<Acts::RectangleBounds>(moduleHalfX, moduleHalfY); std::size_t nCentralModules = m_cfg.centralModuleBinningSchema.at(icl).first * m_cfg.centralModuleBinningSchema.at(icl).second; @@ -414,15 +414,14 @@ ProtoLayerCreatorT<detector_element_t>::createProtoLayers( double moduleHalfY = m_cfg.posnegModuleHalfY.at(ipnl).at(ipnR); // (1) module bounds // create the bounds - Acts::PlanarBounds* pBounds = nullptr; + std::shared_ptr<const Acts::PlanarBounds> moduleBounds; if (moduleMaxHalfX != 0. && moduleMinHalfX != moduleMaxHalfX) { - pBounds = new Acts::TrapezoidBounds(moduleMinHalfX, moduleMaxHalfX, - moduleHalfY); + moduleBounds = std::make_shared<Acts::TrapezoidBounds>( + moduleMinHalfX, moduleMaxHalfX, moduleHalfY); } else { - pBounds = new Acts::RectangleBounds(moduleMinHalfX, moduleHalfY); + moduleBounds = std::make_shared<Acts::RectangleBounds>(moduleMinHalfX, + moduleHalfY); } - // now create the shared bounds from it - std::shared_ptr<const Acts::PlanarBounds> moduleBounds(pBounds); // (2)) module material // create the Module material from input std::shared_ptr<const Acts::ISurfaceMaterial> moduleMaterialPtr = diff --git a/Examples/Detectors/MagneticField/src/FieldMapRootIo.cpp b/Examples/Detectors/MagneticField/src/FieldMapRootIo.cpp index bcc93238364..48e2e634d65 100644 --- a/Examples/Detectors/MagneticField/src/FieldMapRootIo.cpp +++ b/Examples/Detectors/MagneticField/src/FieldMapRootIo.cpp @@ -32,7 +32,7 @@ ActsExamples::makeMagneticFieldMapRzFromRoot( // components of magnetic field on grid points std::vector<Acts::Vector2> bField; // [1] Read in file and fill values - TFile* inputFile = TFile::Open(fieldMapFile.c_str()); + std::unique_ptr<TFile> inputFile(TFile::Open(fieldMapFile.c_str())); if (inputFile == nullptr) { throw std::runtime_error("file does not exist"); } @@ -62,7 +62,6 @@ ActsExamples::makeMagneticFieldMapRzFromRoot( zPos.push_back(z); bField.push_back(Acts::Vector2(Br, Bz)); } - delete inputFile; /// [2] use helper function in core return Acts::fieldMapRZ(localToGlobalBin, rPos, zPos, bField, lengthUnit, BFieldUnit, firstQuadrant); @@ -84,7 +83,7 @@ ActsExamples::makeMagneticFieldMapXyzFromRoot( // components of magnetic field on grid points std::vector<Acts::Vector3> bField; // [1] Read in file and fill values - TFile* inputFile = TFile::Open(fieldMapFile.c_str()); + std::unique_ptr<TFile> inputFile(TFile::Open(fieldMapFile.c_str())); if (inputFile == nullptr) { throw std::runtime_error("file does not exist"); } @@ -118,7 +117,6 @@ ActsExamples::makeMagneticFieldMapXyzFromRoot( zPos.push_back(z); bField.push_back(Acts::Vector3(Bx, By, Bz)); } - delete inputFile; return Acts::fieldMapXYZ(localToGlobalBin, xPos, yPos, zPos, bField, lengthUnit, BFieldUnit, firstOctant); diff --git a/Examples/Io/Root/include/ActsExamples/Io/Root/RootAthenaNTupleReader.hpp b/Examples/Io/Root/include/ActsExamples/Io/Root/RootAthenaNTupleReader.hpp index 7f4d6f7bc73..e6bba0782eb 100644 --- a/Examples/Io/Root/include/ActsExamples/Io/Root/RootAthenaNTupleReader.hpp +++ b/Examples/Io/Root/include/ActsExamples/Io/Root/RootAthenaNTupleReader.hpp @@ -178,6 +178,8 @@ class RootAthenaNTupleReader : public ActsExamples::IReader { /// @param config The Configuration struct RootAthenaNTupleReader(const Config &config, Acts::Logging::Level level); + ~RootAthenaNTupleReader() override; + /// Framework name() method std::string name() const final { return "RootAthenaNTupleReader"; } @@ -214,7 +216,7 @@ class RootAthenaNTupleReader : public ActsExamples::IReader { std::size_t m_events = 0; /// The input tree name - TChain *m_inputChain = nullptr; + std::unique_ptr<TChain> m_inputChain; /// The handle to branches in current event BranchPointerWrapper m_branches; diff --git a/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialTrackReader.hpp b/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialTrackReader.hpp index 3c3bf2aece3..4c95c7e8d1d 100644 --- a/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialTrackReader.hpp +++ b/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialTrackReader.hpp @@ -94,7 +94,7 @@ class RootMaterialTrackReader : public IReader { std::size_t m_batchSize = 0; /// The input tree name - TChain* m_inputChain = nullptr; + std::unique_ptr<TChain> m_inputChain; /// Event identifier. std::uint32_t m_eventId = 0; diff --git a/Examples/Io/Root/include/ActsExamples/Io/Root/RootParticleReader.hpp b/Examples/Io/Root/include/ActsExamples/Io/Root/RootParticleReader.hpp index 0bcd108570c..1e1e4f2adde 100644 --- a/Examples/Io/Root/include/ActsExamples/Io/Root/RootParticleReader.hpp +++ b/Examples/Io/Root/include/ActsExamples/Io/Root/RootParticleReader.hpp @@ -83,7 +83,7 @@ class RootParticleReader : public IReader { std::size_t m_events = 0; /// The input tree name - TChain* m_inputChain = nullptr; + std::unique_ptr<TChain> m_inputChain; /// Event identifier. std::uint32_t m_eventId = 0; diff --git a/Examples/Io/Root/include/ActsExamples/Io/Root/RootSimHitReader.hpp b/Examples/Io/Root/include/ActsExamples/Io/Root/RootSimHitReader.hpp index bf05678cd8f..7b784b87a58 100644 --- a/Examples/Io/Root/include/ActsExamples/Io/Root/RootSimHitReader.hpp +++ b/Examples/Io/Root/include/ActsExamples/Io/Root/RootSimHitReader.hpp @@ -48,6 +48,8 @@ class RootSimHitReader : public IReader { /// @param config The Configuration struct RootSimHitReader(const Config &config, Acts::Logging::Level level); + ~RootSimHitReader() override; + /// Framework name() method std::string name() const override { return "RootSimHitReader"; } @@ -79,7 +81,7 @@ class RootSimHitReader : public IReader { std::vector<std::tuple<std::uint32_t, std::size_t, std::size_t>> m_eventMap; /// The input tree name - TChain *m_inputChain = nullptr; + std::unique_ptr<TChain> m_inputChain; /// The keys we have in the ROOT file constexpr static std::array<const char *, 12> m_floatKeys = { diff --git a/Examples/Io/Root/include/ActsExamples/Io/Root/RootTrackSummaryReader.hpp b/Examples/Io/Root/include/ActsExamples/Io/Root/RootTrackSummaryReader.hpp index 71ff807fb32..1f43918c82b 100644 --- a/Examples/Io/Root/include/ActsExamples/Io/Root/RootTrackSummaryReader.hpp +++ b/Examples/Io/Root/include/ActsExamples/Io/Root/RootTrackSummaryReader.hpp @@ -92,7 +92,7 @@ class RootTrackSummaryReader : public IReader { std::size_t m_events = 0; /// The input tree name - TChain* m_inputChain = nullptr; + std::unique_ptr<TChain> m_inputChain; /// the event number std::uint32_t m_eventNr{0}; diff --git a/Examples/Io/Root/include/ActsExamples/Io/Root/RootVertexReader.hpp b/Examples/Io/Root/include/ActsExamples/Io/Root/RootVertexReader.hpp index 46afe962bdb..b40c0b9ba6b 100644 --- a/Examples/Io/Root/include/ActsExamples/Io/Root/RootVertexReader.hpp +++ b/Examples/Io/Root/include/ActsExamples/Io/Root/RootVertexReader.hpp @@ -82,7 +82,7 @@ class RootVertexReader : public IReader { std::size_t m_events = 0; /// The input tree name - TChain* m_inputChain = nullptr; + std::unique_ptr<TChain> m_inputChain; /// Event identifier. std::uint32_t m_eventId = 0; diff --git a/Examples/Io/Root/src/RootAthenaNTupleReader.cpp b/Examples/Io/Root/src/RootAthenaNTupleReader.cpp index ac06349c595..bf61b919c5b 100644 --- a/Examples/Io/Root/src/RootAthenaNTupleReader.cpp +++ b/Examples/Io/Root/src/RootAthenaNTupleReader.cpp @@ -43,7 +43,7 @@ ActsExamples::RootAthenaNTupleReader::RootAthenaNTupleReader( m_outputRecoVtxParameters.initialize(m_cfg.outputRecoVtxParameters); m_outputBeamspotConstraint.initialize(m_cfg.outputBeamspotConstraint); - m_inputChain = new TChain(m_cfg.inputTreeName.c_str()); + m_inputChain = std::make_unique<TChain>(m_cfg.inputTreeName.c_str()); // unused event identifier std::int32_t eventNumber = 0; @@ -116,6 +116,8 @@ ActsExamples::RootAthenaNTupleReader::RootAthenaNTupleReader( ACTS_DEBUG("The full chain has " << m_events << " entries."); } +ActsExamples::RootAthenaNTupleReader::~RootAthenaNTupleReader() = default; + ActsExamples::ProcessCode ActsExamples::RootAthenaNTupleReader::read( const ActsExamples::AlgorithmContext& context) { ACTS_DEBUG("Trying to read track parameters from ntuple."); diff --git a/Examples/Io/Root/src/RootBFieldWriter.cpp b/Examples/Io/Root/src/RootBFieldWriter.cpp index b8cb8b6c104..894636d61c9 100644 --- a/Examples/Io/Root/src/RootBFieldWriter.cpp +++ b/Examples/Io/Root/src/RootBFieldWriter.cpp @@ -48,13 +48,13 @@ void RootBFieldWriter::run(const Config& config, // Setup ROOT I/O ACTS_INFO("Registering new ROOT output File : " << config.fileName); - TFile* outputFile = - TFile::Open(config.fileName.c_str(), config.fileMode.c_str()); + std::unique_ptr<TFile> outputFile( + TFile::Open(config.fileName.c_str(), config.fileMode.c_str())); if (outputFile == nullptr) { throw std::ios_base::failure("Could not open '" + config.fileName + "'"); } TTree* outputTree = new TTree(config.treeName.c_str(), - config.treeName.c_str(), 99, outputFile); + config.treeName.c_str(), 99, outputFile.get()); if (outputTree == nullptr) { throw std::bad_alloc(); } @@ -277,6 +277,5 @@ void RootBFieldWriter::run(const Config& config, // Tear down ROOT I/O ACTS_INFO("Closing and Writing ROOT output File : " << config.fileName); outputTree->Write(); - delete outputFile; } } // namespace ActsExamples diff --git a/Examples/Io/Root/src/RootMaterialTrackReader.cpp b/Examples/Io/Root/src/RootMaterialTrackReader.cpp index 70b2ab8d997..b7e5e0ef4f2 100644 --- a/Examples/Io/Root/src/RootMaterialTrackReader.cpp +++ b/Examples/Io/Root/src/RootMaterialTrackReader.cpp @@ -34,7 +34,7 @@ RootMaterialTrackReader::RootMaterialTrackReader(const Config& config, throw std::invalid_argument{"No input files given"}; } - m_inputChain = new TChain(m_cfg.treeName.c_str()); + m_inputChain = std::make_unique<TChain>(m_cfg.treeName.c_str()); // loop over the input files for (const auto& inputFile : m_cfg.fileList) { @@ -103,8 +103,6 @@ RootMaterialTrackReader::RootMaterialTrackReader(const Config& config, } RootMaterialTrackReader::~RootMaterialTrackReader() { - delete m_inputChain; - delete m_step_x; delete m_step_y; delete m_step_z; diff --git a/Examples/Io/Root/src/RootParticleReader.cpp b/Examples/Io/Root/src/RootParticleReader.cpp index 631fc25ef3e..0eafeaa666b 100644 --- a/Examples/Io/Root/src/RootParticleReader.cpp +++ b/Examples/Io/Root/src/RootParticleReader.cpp @@ -28,7 +28,7 @@ RootParticleReader::RootParticleReader(const RootParticleReader::Config& config, : IReader(), m_cfg(config), m_logger(Acts::getDefaultLogger(name(), level)) { - m_inputChain = new TChain(m_cfg.treeName.c_str()); + m_inputChain = std::make_unique<TChain>(m_cfg.treeName.c_str()); if (m_cfg.filePath.empty()) { throw std::invalid_argument("Missing input filename"); diff --git a/Examples/Io/Root/src/RootSimHitReader.cpp b/Examples/Io/Root/src/RootSimHitReader.cpp index 4f0d805dc7e..407c70c5dea 100644 --- a/Examples/Io/Root/src/RootSimHitReader.cpp +++ b/Examples/Io/Root/src/RootSimHitReader.cpp @@ -29,7 +29,7 @@ RootSimHitReader::RootSimHitReader(const RootSimHitReader::Config& config, : IReader(), m_cfg(config), m_logger(Acts::getDefaultLogger(name(), level)) { - m_inputChain = new TChain(m_cfg.treeName.c_str()); + m_inputChain = std::make_unique<TChain>(m_cfg.treeName.c_str()); if (m_cfg.filePath.empty()) { throw std::invalid_argument("Missing input filename"); @@ -103,6 +103,8 @@ RootSimHitReader::RootSimHitReader(const RootSimHitReader::Config& config, << availableEvents().second); } +RootSimHitReader::~RootSimHitReader() = default; + std::pair<std::size_t, std::size_t> RootSimHitReader::availableEvents() const { return {std::get<0>(m_eventMap.front()), std::get<0>(m_eventMap.back()) + 1}; } diff --git a/Examples/Io/Root/src/RootTrackSummaryReader.cpp b/Examples/Io/Root/src/RootTrackSummaryReader.cpp index 9ff3590271a..33da0026ef7 100644 --- a/Examples/Io/Root/src/RootTrackSummaryReader.cpp +++ b/Examples/Io/Root/src/RootTrackSummaryReader.cpp @@ -31,7 +31,7 @@ RootTrackSummaryReader::RootTrackSummaryReader( : IReader(), m_logger{Acts::getDefaultLogger(name(), level)}, m_cfg(config) { - m_inputChain = new TChain(m_cfg.treeName.c_str()); + m_inputChain = std::make_unique<TChain>(m_cfg.treeName.c_str()); if (m_cfg.filePath.empty()) { throw std::invalid_argument("Missing input filename"); diff --git a/Examples/Io/Root/src/RootVertexReader.cpp b/Examples/Io/Root/src/RootVertexReader.cpp index 31a8e6d5bec..d2d2848749d 100644 --- a/Examples/Io/Root/src/RootVertexReader.cpp +++ b/Examples/Io/Root/src/RootVertexReader.cpp @@ -28,7 +28,7 @@ RootVertexReader::RootVertexReader(const RootVertexReader::Config& config, : IReader(), m_cfg(config), m_logger(Acts::getDefaultLogger(name(), level)) { - m_inputChain = new TChain(m_cfg.treeName.c_str()); + m_inputChain = std::make_unique<TChain>(m_cfg.treeName.c_str()); if (m_cfg.filePath.empty()) { throw std::invalid_argument("Missing input filename"); diff --git a/Examples/Io/Root/src/detail/NuclearInteractionParametrisation.cpp b/Examples/Io/Root/src/detail/NuclearInteractionParametrisation.cpp index 174f3648ce1..eb1bbe838e8 100644 --- a/Examples/Io/Root/src/detail/NuclearInteractionParametrisation.cpp +++ b/Examples/Io/Root/src/detail/NuclearInteractionParametrisation.cpp @@ -32,15 +32,20 @@ namespace { /// @return The location in a standard normal distribution float gaussianValue(TH1F const* histo, const float mom) { // Get the cumulative probability distribution - TH1F* normalised = static_cast<TH1F*>(histo->DrawNormalized()); - TH1F* cumulative = static_cast<TH1F*>(normalised->GetCumulative()); + + // DrawNormalized and GetCumulative return pointers to histograms where ROOT + // transfers ownership to the caller. + std::unique_ptr<TH1F> normalised( + dynamic_cast<TH1F*>(histo->DrawNormalized())); + std::unique_ptr<TH1F> cumulative( + dynamic_cast<TH1F*>(normalised->GetCumulative())); + assert(cumulative); + assert(normalised); // Find the cumulative probability const float binContent = cumulative->GetBinContent(cumulative->FindBin(mom)); // Transform the probability to an entry in a standard normal distribution const float value = TMath::ErfInverse(2. * binContent - 1.); - delete (normalised); - delete (cumulative); return value; } From edad4c94bd83e100419d4a6d2f40f603fceaab7e Mon Sep 17 00:00:00 2001 From: Paul Gessinger <paul.gessinger@cern.ch> Date: Fri, 22 Nov 2024 13:50:15 +0100 Subject: [PATCH 37/49] feat(util): Add `overloaded` helper (#3816) This is useful in combination with `std::visit`. With this, you can do something like ```cpp struct A {}; std::variant<int, double, A> var; var = 42; std::visit(overloaded{ [](int) { BOOST_CHECK(true); }, [](double) { BOOST_CHECK(false); }, [](A) { BOOST_CHECK(false); }, }, var); ``` which can be convenient. I'm using this in https://github.com/acts-project/acts/pull/3869 --- Core/include/Acts/Utilities/Helpers.hpp | 17 +++++++++++++++++ Tests/UnitTests/Core/Utilities/HelpersTests.cpp | 15 +++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/Core/include/Acts/Utilities/Helpers.hpp b/Core/include/Acts/Utilities/Helpers.hpp index 4bf9d1c89c3..c59555fd848 100644 --- a/Core/include/Acts/Utilities/Helpers.hpp +++ b/Core/include/Acts/Utilities/Helpers.hpp @@ -204,4 +204,21 @@ bool rangeContainsValue(const R& range, const T& value) { return std::ranges::find(range, value) != std::ranges::end(range); } +/// Helper struct that can turn a set of lambdas into a single entity with +/// overloaded call operator. This can be useful for example in a std::visit +/// call. +/// ```cpp +/// std::visit(overloaded{ +/// [](const int& i) { std::cout << "int: " << i << std::endl; }, +/// [](const std::string& s) { std::cout << "string: " << s << std::endl; }, +/// }, variant); +/// ``` +template <class... Ts> +struct overloaded : Ts... { + using Ts::operator()...; +}; + +template <class... Ts> +overloaded(Ts...) -> overloaded<Ts...>; + } // namespace Acts diff --git a/Tests/UnitTests/Core/Utilities/HelpersTests.cpp b/Tests/UnitTests/Core/Utilities/HelpersTests.cpp index 85e8454d052..67064306967 100644 --- a/Tests/UnitTests/Core/Utilities/HelpersTests.cpp +++ b/Tests/UnitTests/Core/Utilities/HelpersTests.cpp @@ -27,6 +27,7 @@ #include <string> #include <tuple> #include <utility> +#include <variant> #include <vector> using namespace Acts::VectorHelpers; @@ -310,6 +311,20 @@ BOOST_AUTO_TEST_CASE(incidentAnglesTest) { } } +BOOST_AUTO_TEST_CASE(Overloaded) { + struct A {}; + std::variant<int, double, A> var; + + var = 42; + + std::visit(overloaded{ + [](int) { BOOST_CHECK(true); }, + [](double) { BOOST_CHECK(false); }, + [](A) { BOOST_CHECK(false); }, + }, + var); +} + BOOST_AUTO_TEST_SUITE_END() } // namespace Acts::Test From 306ae23993fea1e8fb848228ecee874ca50f3faa Mon Sep 17 00:00:00 2001 From: Pierfrancesco Butti <pierfrancesco.butti@gmail.com> Date: Fri, 22 Nov 2024 19:05:08 +0100 Subject: [PATCH 38/49] fix: Add check on expected measurements on surface before marking as hole (#3892) Check expected measurement during track finding before marking state as hole @andiwand --- Core/include/Acts/TrackFinding/CombinatorialKalmanFilter.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/include/Acts/TrackFinding/CombinatorialKalmanFilter.hpp b/Core/include/Acts/TrackFinding/CombinatorialKalmanFilter.hpp index 35acbc49feb..315dd2379b0 100644 --- a/Core/include/Acts/TrackFinding/CombinatorialKalmanFilter.hpp +++ b/Core/include/Acts/TrackFinding/CombinatorialKalmanFilter.hpp @@ -739,7 +739,7 @@ class CombinatorialKalmanFilter { slRange = m_sourceLinkAccessor(*surface); hasMeasurements = slRange->first != slRange->second; } - bool isHole = isSensitive && !hasMeasurements; + bool isHole = isSensitive && expectMeasurements && !hasMeasurements; if (isHole) { ACTS_VERBOSE("Detected hole before measurement selection on surface " From b30f8dfe86e2ed940fac02bbe54efdfe2cddaac0 Mon Sep 17 00:00:00 2001 From: Andreas Stefl <stefl.andreas@gmail.com> Date: Sat, 23 Nov 2024 10:18:35 +0100 Subject: [PATCH 39/49] feat: Add statistics to propagation (#3450) This is an attempt to centralize statistics about the propagation which includes stepping and navigation. The intention is to monitor these quantities in the CI and to use them as comparison for different stepper / navigator implementations. --- .../Acts/Navigation/DetectorNavigator.hpp | 4 +++ Core/include/Acts/Propagator/AtlasStepper.hpp | 4 +++ .../Acts/Propagator/DirectNavigator.hpp | 4 +++ Core/include/Acts/Propagator/EigenStepper.hpp | 5 ++- Core/include/Acts/Propagator/EigenStepper.ipp | 15 +++++++- .../Acts/Propagator/MultiEigenStepperLoop.hpp | 4 +++ Core/include/Acts/Propagator/Navigator.hpp | 11 +++--- .../Acts/Propagator/NavigatorStatistics.hpp | 26 ++++++++++++++ Core/include/Acts/Propagator/Propagator.ipp | 3 ++ .../Acts/Propagator/PropagatorResult.hpp | 4 +++ .../Acts/Propagator/PropagatorState.hpp | 4 +++ .../Acts/Propagator/PropagatorStatistics.hpp | 26 ++++++++++++++ .../Acts/Propagator/StepperStatistics.hpp | 34 ++++++++++++++++++ .../Acts/Propagator/StraightLineStepper.hpp | 14 +++++++- Core/include/Acts/Propagator/SympyStepper.hpp | 12 ++----- .../Acts/Propagator/TryAllNavigator.hpp | 4 +++ .../include/Acts/Propagator/VoidNavigator.hpp | 4 +++ Core/src/Propagator/SympyStepper.cpp | 12 ++++++- .../Propagation/PropagatorInterface.hpp | 2 ++ .../EventData/PropagationSummary.hpp | 4 +++ .../Io/Root/RootPropagationSummaryWriter.hpp | 19 +++++----- .../Root/src/RootPropagationStepsWriter.cpp | 7 ++-- .../Root/src/RootPropagationSummaryWriter.cpp | 36 +++++++++++-------- Examples/Python/tests/root_file_hashes.txt | 2 +- .../Core/Propagator/SympyStepperTests.cpp | 23 ------------ 25 files changed, 214 insertions(+), 69 deletions(-) create mode 100644 Core/include/Acts/Propagator/NavigatorStatistics.hpp create mode 100644 Core/include/Acts/Propagator/PropagatorStatistics.hpp create mode 100644 Core/include/Acts/Propagator/StepperStatistics.hpp diff --git a/Core/include/Acts/Navigation/DetectorNavigator.hpp b/Core/include/Acts/Navigation/DetectorNavigator.hpp index 61d8525106c..0ffcf1446bc 100644 --- a/Core/include/Acts/Navigation/DetectorNavigator.hpp +++ b/Core/include/Acts/Navigation/DetectorNavigator.hpp @@ -17,6 +17,7 @@ #include "Acts/Geometry/Layer.hpp" #include "Acts/Navigation/NavigationState.hpp" #include "Acts/Propagator/NavigatorOptions.hpp" +#include "Acts/Propagator/NavigatorStatistics.hpp" #include "Acts/Propagator/Propagator.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" #include "Acts/Surfaces/Surface.hpp" @@ -68,6 +69,9 @@ class DetectorNavigator { bool targetReached = false; /// Navigation state : a break has been detected bool navigationBreak = false; + + /// Navigation statistics + NavigatorStatistics statistics; }; /// Constructor with configuration object diff --git a/Core/include/Acts/Propagator/AtlasStepper.hpp b/Core/include/Acts/Propagator/AtlasStepper.hpp index f31aadbffab..88cfd39e548 100644 --- a/Core/include/Acts/Propagator/AtlasStepper.hpp +++ b/Core/include/Acts/Propagator/AtlasStepper.hpp @@ -21,6 +21,7 @@ #include "Acts/MagneticField/MagneticFieldProvider.hpp" #include "Acts/Propagator/ConstrainedStep.hpp" #include "Acts/Propagator/StepperOptions.hpp" +#include "Acts/Propagator/StepperStatistics.hpp" #include "Acts/Propagator/detail/SteppingHelper.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Utilities/Intersection.hpp" @@ -305,6 +306,9 @@ class AtlasStepper { /// buffer & formatting for consistent output std::size_t debugPfxWidth = 30; std::size_t debugMsgWidth = 50; + + /// The statistics of the stepper + StepperStatistics statistics; }; explicit AtlasStepper(std::shared_ptr<const MagneticFieldProvider> bField) diff --git a/Core/include/Acts/Propagator/DirectNavigator.hpp b/Core/include/Acts/Propagator/DirectNavigator.hpp index eb9db91e71f..3356ab395c4 100644 --- a/Core/include/Acts/Propagator/DirectNavigator.hpp +++ b/Core/include/Acts/Propagator/DirectNavigator.hpp @@ -14,6 +14,7 @@ #include "Acts/Geometry/TrackingGeometry.hpp" #include "Acts/Geometry/TrackingVolume.hpp" #include "Acts/Propagator/NavigatorOptions.hpp" +#include "Acts/Propagator/NavigatorStatistics.hpp" #include "Acts/Propagator/Propagator.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" #include "Acts/Surfaces/Surface.hpp" @@ -75,6 +76,9 @@ class DirectNavigator { /// Navigation state - external interface: a break has been detected bool navigationBreak = false; + /// Navigation statistics + NavigatorStatistics statistics; + const Surface* navSurface() const { return options.surfaces.at(surfaceIndex); } diff --git a/Core/include/Acts/Propagator/EigenStepper.hpp b/Core/include/Acts/Propagator/EigenStepper.hpp index fb1062b0c9b..09df3ce3167 100644 --- a/Core/include/Acts/Propagator/EigenStepper.hpp +++ b/Core/include/Acts/Propagator/EigenStepper.hpp @@ -13,7 +13,6 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/Tolerance.hpp" -#include "Acts/Definitions/Units.hpp" #include "Acts/EventData/TrackParameters.hpp" #include "Acts/EventData/detail/CorrectedTransformationFreeToBound.hpp" #include "Acts/Geometry/GeometryContext.hpp" @@ -23,6 +22,7 @@ #include "Acts/Propagator/EigenStepperDefaultExtension.hpp" #include "Acts/Propagator/PropagatorTraits.hpp" #include "Acts/Propagator/StepperOptions.hpp" +#include "Acts/Propagator/StepperStatistics.hpp" #include "Acts/Propagator/detail/SteppingHelper.hpp" #include "Acts/Utilities/Intersection.hpp" #include "Acts/Utilities/Result.hpp" @@ -164,6 +164,9 @@ class EigenStepper { /// k_i elements of the momenta std::array<double, 4> kQoP{}; } stepData; + + /// Statistics of the stepper + StepperStatistics statistics; }; /// Constructor requires knowledge of the detector's magnetic field diff --git a/Core/include/Acts/Propagator/EigenStepper.ipp b/Core/include/Acts/Propagator/EigenStepper.ipp index 84b305ae431..4ee3a41b04a 100644 --- a/Core/include/Acts/Propagator/EigenStepper.ipp +++ b/Core/include/Acts/Propagator/EigenStepper.ipp @@ -6,6 +6,7 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. +#include "Acts/Definitions/Direction.hpp" #include "Acts/EventData/TransformationHelpers.hpp" #include "Acts/Propagator/ConstrainedStep.hpp" #include "Acts/Propagator/EigenStepperError.hpp" @@ -259,7 +260,9 @@ Acts::Result<double> Acts::EigenStepper<E>::step( // Select and adjust the appropriate Runge-Kutta step size as given // ATL-SOFT-PUB-2009-001 while (true) { - nStepTrials++; + ++nStepTrials; + ++state.stepping.statistics.nAttemptedSteps; + auto res = tryRungeKuttaStep(h); if (!res.ok()) { return res.error(); @@ -268,6 +271,8 @@ Acts::Result<double> Acts::EigenStepper<E>::step( break; } + ++state.stepping.statistics.nRejectedSteps; + const double stepSizeScaling = calcStepSizeScaling(errorEstimate); h *= stepSizeScaling; @@ -351,6 +356,14 @@ Acts::Result<double> Acts::EigenStepper<E>::step( ++state.stepping.nSteps; state.stepping.nStepTrials += nStepTrials; + ++state.stepping.statistics.nSuccessfulSteps; + if (state.options.direction != + Direction::fromScalarZeroAsPositive(initialH)) { + ++state.stepping.statistics.nReverseSteps; + } + state.stepping.statistics.pathLength += h; + state.stepping.statistics.absolutePathLength += std::abs(h); + const double stepSizeScaling = calcStepSizeScaling(errorEstimate); const double nextAccuracy = std::abs(h * stepSizeScaling); const double previousAccuracy = std::abs(state.stepping.stepSize.accuracy()); diff --git a/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp b/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp index 1bb4ab8f55a..e21bdb2365e 100644 --- a/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp +++ b/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp @@ -25,6 +25,7 @@ #include "Acts/Propagator/MultiStepperError.hpp" #include "Acts/Propagator/Propagator.hpp" #include "Acts/Propagator/StepperOptions.hpp" +#include "Acts/Propagator/StepperStatistics.hpp" #include "Acts/Propagator/detail/LoopStepperUtils.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Utilities/Intersection.hpp" @@ -219,6 +220,9 @@ class MultiEigenStepperLoop : public EigenStepper<extension_t> { /// reached a surface std::optional<std::size_t> stepCounterAfterFirstComponentOnSurface; + /// The stepper statistics + StepperStatistics statistics; + /// No default constructor is provided State() = delete; diff --git a/Core/include/Acts/Propagator/Navigator.hpp b/Core/include/Acts/Propagator/Navigator.hpp index c2a9427257c..a02e0958160 100644 --- a/Core/include/Acts/Propagator/Navigator.hpp +++ b/Core/include/Acts/Propagator/Navigator.hpp @@ -8,13 +8,13 @@ #pragma once -#include "Acts/Definitions/Units.hpp" #include "Acts/Geometry/GeometryIdentifier.hpp" #include "Acts/Geometry/Layer.hpp" #include "Acts/Geometry/TrackingGeometry.hpp" #include "Acts/Geometry/TrackingVolume.hpp" #include "Acts/Propagator/ConstrainedStep.hpp" #include "Acts/Propagator/NavigatorOptions.hpp" +#include "Acts/Propagator/NavigatorStatistics.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Utilities/Logger.hpp" @@ -176,9 +176,12 @@ class Navigator { bool targetReached = false; /// Navigation state : a break has been detected bool navigationBreak = false; - // The navigation stage (@todo: integrate break, target) + /// The navigation stage (@todo: integrate break, target) Stage navigationStage = Stage::undefined; + /// Navigation statistics + NavigatorStatistics statistics; + void reset() { navSurfaces.clear(); navSurfaceIndex = navSurfaces.size(); @@ -427,6 +430,7 @@ class Navigator { << "No targets found, we got lost! Attempt renavigation."); state.navigation.reset(); + ++state.navigation.statistics.nRenavigations; // We might have punched through a boundary and entered another volume // so we have to reinitialize @@ -576,6 +580,7 @@ class Navigator { state.navigation.navBoundaries.clear(); state.navigation.navBoundaryIndex = state.navigation.navBoundaries.size(); + ++state.navigation.statistics.nVolumeSwitches; } } else { // Set the navigation stage back to boundary target @@ -772,8 +777,6 @@ class Navigator { /// @return boolean return triggers exit to stepper template <typename propagator_state_t, typename stepper_t> bool targetLayers(propagator_state_t& state, const stepper_t& stepper) const { - using namespace UnitLiterals; - if (state.navigation.navigationBreak) { return false; } diff --git a/Core/include/Acts/Propagator/NavigatorStatistics.hpp b/Core/include/Acts/Propagator/NavigatorStatistics.hpp new file mode 100644 index 00000000000..fd73d36c568 --- /dev/null +++ b/Core/include/Acts/Propagator/NavigatorStatistics.hpp @@ -0,0 +1,26 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#pragma once + +#include <cstddef> + +namespace Acts { + +/// @struct NavigatorStatistics +/// +/// @brief A struct to hold statistics of the navigator +struct NavigatorStatistics { + /// Number of renavigation attempts + std::size_t nRenavigations = 0; + + /// Number of volume switches + std::size_t nVolumeSwitches = 0; +}; + +} // namespace Acts diff --git a/Core/include/Acts/Propagator/Propagator.ipp b/Core/include/Acts/Propagator/Propagator.ipp index a7c12309bb7..8a7c560a725 100644 --- a/Core/include/Acts/Propagator/Propagator.ipp +++ b/Core/include/Acts/Propagator/Propagator.ipp @@ -341,6 +341,9 @@ void Acts::Propagator<S, N>::moveStateToResult(propagator_state_t& state, result.steps = state.steps; result.pathLength = state.pathLength; + + result.statistics.stepping = state.stepping.statistics; + result.statistics.navigation = state.navigation.statistics; } template <typename derived_t> diff --git a/Core/include/Acts/Propagator/PropagatorResult.hpp b/Core/include/Acts/Propagator/PropagatorResult.hpp index 232211b8495..a67543f7b4b 100644 --- a/Core/include/Acts/Propagator/PropagatorResult.hpp +++ b/Core/include/Acts/Propagator/PropagatorResult.hpp @@ -9,6 +9,7 @@ #pragma once #include "Acts/Definitions/TrackParametrization.hpp" +#include "Acts/Propagator/PropagatorStatistics.hpp" #include "Acts/Utilities/detail/Extendable.hpp" #include <optional> @@ -36,6 +37,9 @@ struct PropagatorResult : private detail::Extendable<result_list...> { /// Signed distance over which the parameters were propagated double pathLength = 0.; + + /// Propagator statistics + PropagatorStatistics statistics; }; } // namespace Acts diff --git a/Core/include/Acts/Propagator/PropagatorState.hpp b/Core/include/Acts/Propagator/PropagatorState.hpp index 29e1baeeb30..03346cfd57d 100644 --- a/Core/include/Acts/Propagator/PropagatorState.hpp +++ b/Core/include/Acts/Propagator/PropagatorState.hpp @@ -9,6 +9,7 @@ #pragma once #include "Acts/Geometry/GeometryContext.hpp" +#include "Acts/Propagator/PropagatorStatistics.hpp" #include "Acts/Utilities/detail/Extendable.hpp" #include <functional> @@ -72,6 +73,9 @@ struct PropagatorState : private detail::Extendable<extension_state_t...> { /// Signed distance over which the parameters were propagated double pathLength = 0.; + + /// Statistics of the propagation + PropagatorStatistics statistics; }; } // namespace Acts diff --git a/Core/include/Acts/Propagator/PropagatorStatistics.hpp b/Core/include/Acts/Propagator/PropagatorStatistics.hpp new file mode 100644 index 00000000000..843be215bd9 --- /dev/null +++ b/Core/include/Acts/Propagator/PropagatorStatistics.hpp @@ -0,0 +1,26 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#pragma once + +#include <Acts/Propagator/NavigatorStatistics.hpp> +#include <Acts/Propagator/StepperStatistics.hpp> + +namespace Acts { + +/// @struct PropagatorStatistics +/// +/// @brief A struct to hold statistics of the propagator +struct PropagatorStatistics { + /// Statistics of the stepper + StepperStatistics stepping; + /// Statistics of the navigator + NavigatorStatistics navigation; +}; + +} // namespace Acts diff --git a/Core/include/Acts/Propagator/StepperStatistics.hpp b/Core/include/Acts/Propagator/StepperStatistics.hpp new file mode 100644 index 00000000000..64abf5bde00 --- /dev/null +++ b/Core/include/Acts/Propagator/StepperStatistics.hpp @@ -0,0 +1,34 @@ +// This file is part of the ACTS project. +// +// Copyright (C) 2016 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 https://mozilla.org/MPL/2.0/. + +#pragma once + +#include <cstddef> + +namespace Acts { + +/// @struct StepperStatistics +/// +/// @brief A struct to hold statistics of the stepper +struct StepperStatistics { + /// Number of attempted steps + std::size_t nAttemptedSteps = 0; + /// Number of rejected steps + std::size_t nRejectedSteps = 0; + /// Number of successful steps + std::size_t nSuccessfulSteps = 0; + /// Number of steps that were reversed + std::size_t nReverseSteps = 0; + + /// Signed sum of the step lengths + double pathLength = 0; + /// Unsigned sum of the step lengths + double absolutePathLength = 0; +}; + +} // namespace Acts diff --git a/Core/include/Acts/Propagator/StraightLineStepper.hpp b/Core/include/Acts/Propagator/StraightLineStepper.hpp index 8ba0d72fe81..18904797fdd 100644 --- a/Core/include/Acts/Propagator/StraightLineStepper.hpp +++ b/Core/include/Acts/Propagator/StraightLineStepper.hpp @@ -23,6 +23,7 @@ #include "Acts/Propagator/ConstrainedStep.hpp" #include "Acts/Propagator/PropagatorTraits.hpp" #include "Acts/Propagator/StepperOptions.hpp" +#include "Acts/Propagator/StepperStatistics.hpp" #include "Acts/Propagator/detail/SteppingHelper.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" #include "Acts/Surfaces/Surface.hpp" @@ -142,6 +143,9 @@ class StraightLineStepper { // Cache the geometry context of this propagation std::reference_wrapper<const GeometryContext> geoContext; + + /// Statistics of the stepper + StepperStatistics statistics; }; StraightLineStepper() = default; @@ -430,6 +434,7 @@ class StraightLineStepper { Vector3 dir = direction(state.stepping); state.stepping.pars.template segment<3>(eFreePos0) += h * dir; state.stepping.pars[eFreeTime] += h * dtds; + // Propagate the jacobian if (state.stepping.covTransport) { // The step transport matrix in global coordinates @@ -450,7 +455,14 @@ class StraightLineStepper { ++state.stepping.nSteps; ++state.stepping.nStepTrials; - // return h + ++state.stepping.statistics.nAttemptedSteps; + ++state.stepping.statistics.nSuccessfulSteps; + if (state.options.direction != Direction::fromScalarZeroAsPositive(h)) { + ++state.stepping.statistics.nReverseSteps; + } + state.stepping.statistics.pathLength += h; + state.stepping.statistics.absolutePathLength += std::abs(h); + return h; } }; diff --git a/Core/include/Acts/Propagator/SympyStepper.hpp b/Core/include/Acts/Propagator/SympyStepper.hpp index 1e771a53ba7..3b1a2125a41 100644 --- a/Core/include/Acts/Propagator/SympyStepper.hpp +++ b/Core/include/Acts/Propagator/SympyStepper.hpp @@ -22,6 +22,7 @@ #include "Acts/Propagator/ConstrainedStep.hpp" #include "Acts/Propagator/PropagatorTraits.hpp" #include "Acts/Propagator/StepperOptions.hpp" +#include "Acts/Propagator/StepperStatistics.hpp" #include "Acts/Propagator/detail/SteppingHelper.hpp" namespace Acts { @@ -132,15 +133,8 @@ class SympyStepper { /// The geometry context std::reference_wrapper<const GeometryContext> geoContext; - /// @brief Storage of magnetic field and the sub steps during a RKN4 step - struct { - /// Magnetic field evaulations - Vector3 B_first, B_middle, B_last; - /// k_i of the RKN4 algorithm - Vector3 k1, k2, k3, k4; - /// k_i elements of the momenta - std::array<double, 4> kQoP{}; - } stepData; + /// Statistics of the stepper + StepperStatistics statistics; }; /// Constructor requires knowledge of the detector's magnetic field diff --git a/Core/include/Acts/Propagator/TryAllNavigator.hpp b/Core/include/Acts/Propagator/TryAllNavigator.hpp index 83d7cbc64a4..09f6fb25e25 100644 --- a/Core/include/Acts/Propagator/TryAllNavigator.hpp +++ b/Core/include/Acts/Propagator/TryAllNavigator.hpp @@ -14,6 +14,7 @@ #include "Acts/Geometry/TrackingVolume.hpp" #include "Acts/Propagator/ConstrainedStep.hpp" #include "Acts/Propagator/NavigatorOptions.hpp" +#include "Acts/Propagator/NavigatorStatistics.hpp" #include "Acts/Propagator/detail/NavigationHelpers.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" #include "Acts/Surfaces/Surface.hpp" @@ -86,6 +87,9 @@ class TryAllNavigatorBase { bool targetReached = false; /// If a break has been detected bool navigationBreak = false; + + /// Navigation statistics + NavigatorStatistics statistics; }; /// Constructor with configuration object diff --git a/Core/include/Acts/Propagator/VoidNavigator.hpp b/Core/include/Acts/Propagator/VoidNavigator.hpp index d6732998d4b..6b461f79210 100644 --- a/Core/include/Acts/Propagator/VoidNavigator.hpp +++ b/Core/include/Acts/Propagator/VoidNavigator.hpp @@ -9,6 +9,7 @@ #pragma once #include "Acts/Propagator/NavigatorOptions.hpp" +#include "Acts/Propagator/NavigatorStatistics.hpp" namespace Acts { class Surface; @@ -30,6 +31,9 @@ struct VoidNavigator { /// @brief Nested State struct, minimal requirement struct State { Options options; + + /// Navigation statistics + NavigatorStatistics statistics; }; State makeState(const Options& options) const { diff --git a/Core/src/Propagator/SympyStepper.cpp b/Core/src/Propagator/SympyStepper.cpp index a33e1f567bb..d55c073a851 100644 --- a/Core/src/Propagator/SympyStepper.cpp +++ b/Core/src/Propagator/SympyStepper.cpp @@ -144,7 +144,8 @@ Result<double> SympyStepper::stepImpl( double errorEstimate = 0.; while (true) { - nStepTrials++; + ++nStepTrials; + ++state.statistics.nAttemptedSteps; // For details about the factor 4 see ATL-SOFT-PUB-2009-001 Result<bool> res = @@ -164,6 +165,8 @@ Result<double> SympyStepper::stepImpl( break; } + ++state.statistics.nRejectedSteps; + const double stepSizeScaling = calcStepSizeScaling(errorEstimate); h *= stepSizeScaling; @@ -186,6 +189,13 @@ Result<double> SympyStepper::stepImpl( ++state.nSteps; state.nStepTrials += nStepTrials; + ++state.statistics.nSuccessfulSteps; + if (stepDirection != Direction::fromScalarZeroAsPositive(initialH)) { + ++state.statistics.nReverseSteps; + } + state.statistics.pathLength += h; + state.statistics.absolutePathLength += std::abs(h); + const double stepSizeScaling = calcStepSizeScaling(errorEstimate); const double nextAccuracy = std::abs(h * stepSizeScaling); const double previousAccuracy = std::abs(state.stepSize.accuracy()); diff --git a/Examples/Algorithms/Propagation/include/ActsExamples/Propagation/PropagatorInterface.hpp b/Examples/Algorithms/Propagation/include/ActsExamples/Propagation/PropagatorInterface.hpp index 2aa3b2292ac..7f113d47b56 100644 --- a/Examples/Algorithms/Propagation/include/ActsExamples/Propagation/PropagatorInterface.hpp +++ b/Examples/Algorithms/Propagation/include/ActsExamples/Propagation/PropagatorInterface.hpp @@ -117,6 +117,8 @@ class ConcretePropagator : public PropagatorInterface { resultValue.template get<SteppingLogger::result_type>(); summary.steps = std::move(steppingResults.steps); + summary.statistics = resultValue.statistics; + // Also set the material recording result - if configured if (cfg.recordMaterialInteractions) { auto materialResult = diff --git a/Examples/Framework/include/ActsExamples/EventData/PropagationSummary.hpp b/Examples/Framework/include/ActsExamples/EventData/PropagationSummary.hpp index aa9a736675f..1d1ef44f499 100644 --- a/Examples/Framework/include/ActsExamples/EventData/PropagationSummary.hpp +++ b/Examples/Framework/include/ActsExamples/EventData/PropagationSummary.hpp @@ -10,6 +10,7 @@ #include "Acts/EventData/TrackParameters.hpp" #include "Acts/Propagator/MaterialInteractor.hpp" +#include "Acts/Propagator/PropagatorStatistics.hpp" #include "Acts/Propagator/detail/SteppingLogger.hpp" #include <vector> @@ -34,6 +35,9 @@ struct PropagationSummary { /// Steps std::vector<Acts::detail::Step> steps; + + /// Propagation statistics + Acts::PropagatorStatistics statistics; }; using PropagationSummaries = std::vector<PropagationSummary>; diff --git a/Examples/Io/Root/include/ActsExamples/Io/Root/RootPropagationSummaryWriter.hpp b/Examples/Io/Root/include/ActsExamples/Io/Root/RootPropagationSummaryWriter.hpp index c1f6afe9059..f9eea212b12 100644 --- a/Examples/Io/Root/include/ActsExamples/Io/Root/RootPropagationSummaryWriter.hpp +++ b/Examples/Io/Root/include/ActsExamples/Io/Root/RootPropagationSummaryWriter.hpp @@ -8,22 +8,18 @@ #pragma once -#include "Acts/Propagator/detail/SteppingLogger.hpp" #include "Acts/Utilities/Logger.hpp" #include "ActsExamples/Framework/ProcessCode.hpp" #include "ActsExamples/Framework/WriterT.hpp" #include "ActsExamples/Propagation/PropagationAlgorithm.hpp" -#include <cstddef> #include <mutex> #include <string> -#include <vector> class TFile; class TTree; namespace ActsExamples { -struct AlgorithmContext; /// @class RootPropagationSummaryWriter /// @@ -110,10 +106,17 @@ class RootPropagationSummaryWriter : public WriterT<PropagationSummaries> { int m_nMaterials = 0; int m_nPortals = 0; - // steper statistics - int m_nSteps = 0; - int m_nStepTrials = 0; - int m_pathLength = 0; + // stepper statistics + std::size_t m_nAttemptedSteps = 0; + std::size_t m_nRejectedSteps = 0; + std::size_t m_nSuccessfulSteps = 0; + std::size_t m_nReverseSteps = 0; + double m_pathLength = 0; + double m_absolutePathLength = 0; + + // navigator statistics + std::size_t m_nRenavigations = 0; + std::size_t m_nVolumeSwitches = 0; }; } // namespace ActsExamples diff --git a/Examples/Io/Root/src/RootPropagationStepsWriter.cpp b/Examples/Io/Root/src/RootPropagationStepsWriter.cpp index c7866e056eb..643956a6ed1 100644 --- a/Examples/Io/Root/src/RootPropagationStepsWriter.cpp +++ b/Examples/Io/Root/src/RootPropagationStepsWriter.cpp @@ -9,15 +9,12 @@ #include "ActsExamples/Io/Root/RootPropagationStepsWriter.hpp" #include "Acts/Definitions/Algebra.hpp" +#include "Acts/Geometry/GeometryIdentifier.hpp" +#include "Acts/Propagator/ConstrainedStep.hpp" #include "Acts/Utilities/Helpers.hpp" #include "Acts/Utilities/VectorHelpers.hpp" #include "ActsExamples/EventData/PropagationSummary.hpp" #include "ActsExamples/Framework/AlgorithmContext.hpp" -#include <Acts/Geometry/GeometryIdentifier.hpp> -#include <Acts/Geometry/TrackingVolume.hpp> -#include <Acts/Propagator/ConstrainedStep.hpp> -#include <Acts/Surfaces/Surface.hpp> -#include <Acts/Utilities/Helpers.hpp> #include <ios> #include <memory> diff --git a/Examples/Io/Root/src/RootPropagationSummaryWriter.cpp b/Examples/Io/Root/src/RootPropagationSummaryWriter.cpp index 07a1cfa105f..7df19539c57 100644 --- a/Examples/Io/Root/src/RootPropagationSummaryWriter.cpp +++ b/Examples/Io/Root/src/RootPropagationSummaryWriter.cpp @@ -8,19 +8,11 @@ #include "ActsExamples/Io/Root/RootPropagationSummaryWriter.hpp" -#include "Acts/Definitions/Algebra.hpp" -#include "Acts/Utilities/Helpers.hpp" #include "Acts/Utilities/VectorHelpers.hpp" #include "ActsExamples/Framework/AlgorithmContext.hpp" #include "ActsExamples/Propagation/PropagationAlgorithm.hpp" -#include <Acts/Geometry/GeometryIdentifier.hpp> -#include <Acts/Geometry/TrackingVolume.hpp> -#include <Acts/Propagator/ConstrainedStep.hpp> -#include <Acts/Surfaces/Surface.hpp> -#include <Acts/Utilities/Helpers.hpp> #include <ios> -#include <memory> #include <ostream> #include <stdexcept> @@ -77,9 +69,15 @@ RootPropagationSummaryWriter::RootPropagationSummaryWriter( m_outputTree->Branch("nMaterials", &m_nMaterials); m_outputTree->Branch("nPortals", &m_nPortals); - m_outputTree->Branch("nSteps", &m_nSteps); - m_outputTree->Branch("nStepTrials", &m_nStepTrials); + m_outputTree->Branch("nAttemptedSteps", &m_nAttemptedSteps); + m_outputTree->Branch("nRejectedSteps", &m_nRejectedSteps); + m_outputTree->Branch("nSuccessfulSteps", &m_nSuccessfulSteps); + m_outputTree->Branch("nReverseSteps", &m_nReverseSteps); m_outputTree->Branch("pathLength", &m_pathLength); + m_outputTree->Branch("absolutePathLength", &m_absolutePathLength); + + m_outputTree->Branch("nRenavigations", &m_nRenavigations); + m_outputTree->Branch("nVolumeSwitches", &m_nVolumeSwitches); } RootPropagationSummaryWriter::~RootPropagationSummaryWriter() { @@ -133,11 +131,6 @@ ProcessCode RootPropagationSummaryWriter::writeT( m_pt = static_cast<float>(startParameters.transverseMomentum()); m_p = static_cast<float>(startParameters.absoluteMomentum()); - // Stepper statistics - m_nSteps = static_cast<int>(summary.steps.size()); - m_nStepTrials = static_cast<int>(summary.nStepTrials); - m_pathLength = static_cast<int>(summary.pathLength); - m_nMaterials = 0; m_nSensitives = 0; m_nPortals = 0; @@ -160,6 +153,19 @@ ProcessCode RootPropagationSummaryWriter::writeT( } } }); + + // Stepper statistics + m_nAttemptedSteps = summary.statistics.stepping.nAttemptedSteps; + m_nRejectedSteps = summary.statistics.stepping.nRejectedSteps; + m_nSuccessfulSteps = summary.statistics.stepping.nSuccessfulSteps; + m_nReverseSteps = summary.statistics.stepping.nReverseSteps; + m_pathLength = summary.statistics.stepping.pathLength; + m_absolutePathLength = summary.statistics.stepping.absolutePathLength; + + // Navigator statistics + m_nRenavigations = summary.statistics.navigation.nRenavigations; + m_nVolumeSwitches = summary.statistics.navigation.nVolumeSwitches; + m_outputTree->Fill(); } diff --git a/Examples/Python/tests/root_file_hashes.txt b/Examples/Python/tests/root_file_hashes.txt index 4674ce1ce2e..666cb676c39 100644 --- a/Examples/Python/tests/root_file_hashes.txt +++ b/Examples/Python/tests/root_file_hashes.txt @@ -16,7 +16,7 @@ test_itk_seeding__estimatedparams.root: fc042037f12a434f2236df7d225b8ca24209b691 test_itk_seeding__performance_seeding.root: 78ebda54cd0f026ba4b7f316724ffd946de56a932735914baf1b7bba9505c29d test_itk_seeding__particles.root: 907ff693262c0db14b12c74b16586cb20d79caf5f03f93b178943e41ed35a1b6 test_itk_seeding__particles_simulation.root: ef0246069aa697019f28a8b270a68de95312cae5f2f2c74848566c3ce4f70363 -test_propagation__propagation_summary.root: 280c1a6fcfe71974ac39587b4afad27a31640bec42ca6537cc92e2d5e09d7ed6 +test_propagation__propagation_summary.root: 400043dfeed9eda16512ec5fd4a1389f94b98565083f06f439c7b7b59e46c544 test_material_recording__geant4_material_tracks.root: c022b9362249b29f57a07926b20644e3ab4ab8ebcf03f773fbf46c446fc1a0a1 test_truth_tracking_gsf[generic]__trackstates_gsf.root: 4df2c69d5dd7d5446a547651e4e962daf17924f5c8617165a93a3223c8ba18fd test_truth_tracking_gsf[generic]__tracksummary_gsf.root: 8c01d139cb865afa1959c62dbca76f3a1fb8b684c57ea4c2968baa6ffedadb6f diff --git a/Tests/UnitTests/Core/Propagator/SympyStepperTests.cpp b/Tests/UnitTests/Core/Propagator/SympyStepperTests.cpp index fcdf13e9f8a..7ed2255afdc 100644 --- a/Tests/UnitTests/Core/Propagator/SympyStepperTests.cpp +++ b/Tests/UnitTests/Core/Propagator/SympyStepperTests.cpp @@ -12,52 +12,30 @@ #include "Acts/Definitions/Direction.hpp" #include "Acts/Definitions/TrackParametrization.hpp" #include "Acts/Definitions/Units.hpp" -#include "Acts/EventData/Charge.hpp" #include "Acts/EventData/GenericBoundTrackParameters.hpp" #include "Acts/EventData/GenericCurvilinearTrackParameters.hpp" #include "Acts/EventData/ParticleHypothesis.hpp" #include "Acts/EventData/TrackParameters.hpp" #include "Acts/EventData/TransformationHelpers.hpp" -#include "Acts/Geometry/BoundarySurfaceT.hpp" -#include "Acts/Geometry/CuboidVolumeBuilder.hpp" #include "Acts/Geometry/GeometryContext.hpp" -#include "Acts/Geometry/TrackingGeometry.hpp" -#include "Acts/Geometry/TrackingGeometryBuilder.hpp" -#include "Acts/Geometry/TrackingVolume.hpp" #include "Acts/MagneticField/ConstantBField.hpp" #include "Acts/MagneticField/MagneticFieldContext.hpp" #include "Acts/MagneticField/MagneticFieldProvider.hpp" -#include "Acts/MagneticField/NullBField.hpp" -#include "Acts/Material/HomogeneousSurfaceMaterial.hpp" -#include "Acts/Material/HomogeneousVolumeMaterial.hpp" -#include "Acts/Material/MaterialSlab.hpp" -#include "Acts/Propagator/ActorList.hpp" #include "Acts/Propagator/ConstrainedStep.hpp" -#include "Acts/Propagator/MaterialInteractor.hpp" -#include "Acts/Propagator/Navigator.hpp" -#include "Acts/Propagator/Propagator.hpp" #include "Acts/Propagator/SympyStepper.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" #include "Acts/Surfaces/CurvilinearSurface.hpp" #include "Acts/Surfaces/PlaneSurface.hpp" -#include "Acts/Surfaces/RectangleBounds.hpp" -#include "Acts/Surfaces/Surface.hpp" #include "Acts/Tests/CommonHelpers/FloatComparisons.hpp" -#include "Acts/Tests/CommonHelpers/PredefinedMaterials.hpp" #include "Acts/Utilities/Logger.hpp" #include "Acts/Utilities/Result.hpp" -#include "Acts/Utilities/UnitVectors.hpp" #include <algorithm> -#include <array> #include <cmath> -#include <functional> #include <limits> -#include <map> #include <memory> #include <optional> #include <string> -#include <tuple> #include <type_traits> #include <utility> #include <vector> @@ -363,7 +341,6 @@ BOOST_AUTO_TEST_CASE(sympy_stepper_test) { state.fieldCache.template as<typename field_t::Cache>()); copy.geoContext = state.geoContext; - copy.stepData = state.stepData; return copy; }; From be307864cd59c6cee5d1dff755ec2873a6f3662e Mon Sep 17 00:00:00 2001 From: "Alexander J. Pfleger" <70842573+AJPfleger@users.noreply.github.com> Date: Sat, 23 Nov 2024 11:48:41 +0100 Subject: [PATCH 40/49] refactor!: explicit `isPresent()` in cylinder volume builder (#3796) Breaking: The operator `bool()` is removed from the struct `VolumeConfig`. --- .../Acts/Geometry/CylinderVolumeBuilder.hpp | 66 +++++++++---------- Core/src/Geometry/CylinderVolumeBuilder.cpp | 16 ++--- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/Core/include/Acts/Geometry/CylinderVolumeBuilder.hpp b/Core/include/Acts/Geometry/CylinderVolumeBuilder.hpp index 1e09b95e114..4356e26f313 100644 --- a/Core/include/Acts/Geometry/CylinderVolumeBuilder.hpp +++ b/Core/include/Acts/Geometry/CylinderVolumeBuilder.hpp @@ -65,9 +65,9 @@ struct VolumeConfig { /// Adapt to the dimensions of another config in Z /// it will take the maximum/minimum values and just overwrite them /// - /// @param [in] lConfig is the config to which it should be adapded + /// @param [in] lConfig is the config to which it should be adapted void adaptZ(const VolumeConfig& lConfig) { - if (lConfig) { + if (lConfig.present) { zMin = std::min(zMin, lConfig.zMin); zMax = std::max(zMax, lConfig.zMax); } @@ -76,9 +76,9 @@ struct VolumeConfig { /// Adapt to the dimensions of another config in R /// it will take the maximum/minimum values and just overwrite them /// - /// @param [in] lConfig is the config to which it should be adapded + /// @param [in] lConfig is the config to which it should be adapted void adaptR(const VolumeConfig& lConfig) { - if (lConfig) { + if (lConfig.present) { rMin = std::min(rMin, lConfig.rMin); rMax = std::max(rMax, lConfig.rMax); } @@ -87,7 +87,7 @@ struct VolumeConfig { /// Adapt to the dimensions of another config /// it will take the maximum/minimum values and just overwrite them /// - /// @param [in] lConfig is the config to which it should be adapded + /// @param [in] lConfig is the config to which it should be adapted void adapt(const VolumeConfig& lConfig) { adaptZ(lConfig); adaptR(lConfig); @@ -184,9 +184,6 @@ struct VolumeConfig { sl << rMin << ", " << rMax << " / " << zMin << ", " << zMax; return sl.str(); } - - /// Conversion operator to bool - operator bool() const { return present; } }; /// @brief The WrappingSetup that is happening here @@ -222,39 +219,40 @@ struct WrappingConfig { containerVolumeConfig.present = true; std::string wConditionAddon = ""; // if we have more than one config present - if ((nVolumeConfig && cVolumeConfig) || (cVolumeConfig && pVolumeConfig) || - (nVolumeConfig && pVolumeConfig)) { + if ((nVolumeConfig.present && cVolumeConfig.present) || + (cVolumeConfig.present && pVolumeConfig.present) || + (nVolumeConfig.present && pVolumeConfig.present)) { wCondition = Wrapping; wConditionScreen = "grouped to "; } // adapt the new volume config to the existing configs - if (nVolumeConfig) { + if (nVolumeConfig.present) { containerVolumeConfig.adapt(nVolumeConfig); wConditionScreen += "[n]"; } - if (cVolumeConfig) { + if (cVolumeConfig.present) { containerVolumeConfig.adapt(cVolumeConfig); wConditionScreen += "[c]"; } - if (pVolumeConfig) { + if (pVolumeConfig.present) { containerVolumeConfig.adapt(pVolumeConfig); wConditionScreen += "[p]"; } // adapt the external one - if (externalVolumeConfig) { + if (externalVolumeConfig.present) { containerVolumeConfig.adapt(externalVolumeConfig); } // attach the volume configs - if (nVolumeConfig && cVolumeConfig) { + if (nVolumeConfig.present && cVolumeConfig.present) { nVolumeConfig.midPointAttachZ(cVolumeConfig); } - if (cVolumeConfig && pVolumeConfig) { + if (cVolumeConfig.present && pVolumeConfig.present) { cVolumeConfig.midPointAttachZ(pVolumeConfig); } // adapt r afterwards // - easy if no existing volume // - possible if no central volume - if (!existingVolumeConfig || !cVolumeConfig) { + if (!existingVolumeConfig.present || !cVolumeConfig.present) { nVolumeConfig.adaptR(containerVolumeConfig); cVolumeConfig.adaptR(containerVolumeConfig); pVolumeConfig.adaptR(containerVolumeConfig); @@ -265,17 +263,19 @@ struct WrappingConfig { void wrapInsertAttach() { // action is only needed if an existing volume // is present - if (existingVolumeConfig) { + if (existingVolumeConfig.present) { // 0 - simple attachment case - if (!cVolumeConfig) { + if (!cVolumeConfig.present) { // check if it can be easily attached - if (nVolumeConfig && nVolumeConfig.zMax < existingVolumeConfig.zMin) { + if (nVolumeConfig.present && + nVolumeConfig.zMax < existingVolumeConfig.zMin) { nVolumeConfig.attachZ(existingVolumeConfig); // will attach the new volume(s) wCondition = Attaching; wConditionScreen = "[n attached]"; } - if (pVolumeConfig && pVolumeConfig.zMin > existingVolumeConfig.zMax) { + if (pVolumeConfig.present && + pVolumeConfig.zMin > existingVolumeConfig.zMax) { pVolumeConfig.attachZ(existingVolumeConfig); // will attach the new volume(s) wCondition = Attaching; @@ -385,9 +385,9 @@ struct WrappingConfig { fGapVolumeConfig.zMax = existingVolumeConfig.zMin; } else { // adapt lower z boundary - if (nVolumeConfig) { + if (nVolumeConfig.present) { nVolumeConfig.zMin = existingVolumeConfig.zMin; - } else if (cVolumeConfig) { + } else if (cVolumeConfig.present) { cVolumeConfig.zMin = existingVolumeConfig.zMin; } } @@ -399,9 +399,9 @@ struct WrappingConfig { sGapVolumeConfig.zMax = referenceVolume.zMax; } else { // adapt higher z boundary - if (pVolumeConfig) { + if (pVolumeConfig.present) { pVolumeConfig.zMax = existingVolumeConfig.zMax; - } else if (cVolumeConfig) { + } else if (cVolumeConfig.present) { cVolumeConfig.zMax = existingVolumeConfig.zMax; } } @@ -414,31 +414,31 @@ struct WrappingConfig { std::string toString() const { // for screen output std::stringstream sl; - if (containerVolumeConfig) { + if (containerVolumeConfig.present) { sl << "New container built with configuration: " << containerVolumeConfig.toString() << '\n'; } // go through the new ones first - if (nVolumeConfig) { + if (nVolumeConfig.present) { sl << " - n: Negative Endcap, current configuration: " << nVolumeConfig.toString() << '\n'; } - if (cVolumeConfig) { + if (cVolumeConfig.present) { sl << " - c: Barrel, current configuration: " << cVolumeConfig.toString() << '\n'; } - if (pVolumeConfig) { + if (pVolumeConfig.present) { sl << " - p: Negative Endcap, current configuration: " << pVolumeConfig.toString() << '\n'; } - if (existingVolumeConfig) { + if (existingVolumeConfig.present) { sl << "Existing volume with configuration: " << existingVolumeConfig.toString() << '\n'; - if (fGapVolumeConfig) { + if (fGapVolumeConfig.present) { sl << " - g1: First gap volume, configuration : " << fGapVolumeConfig.toString() << '\n'; } - if (sGapVolumeConfig) { + if (sGapVolumeConfig.present) { sl << " - g2: Second gap volume, configuration : " << sGapVolumeConfig.toString() << '\n'; } @@ -452,7 +452,7 @@ struct WrappingConfig { /// @class CylinderVolumeBuilder /// -/// A volume builder to be used for building a concentrical cylindrical volumes +/// A volume builder to be used for building concentric cylinder volumes /// - a) configured volume /// - b) wrapping around a cylindrical/disk layer config /// diff --git a/Core/src/Geometry/CylinderVolumeBuilder.cpp b/Core/src/Geometry/CylinderVolumeBuilder.cpp index 47de379d9be..4f99a77eabd 100644 --- a/Core/src/Geometry/CylinderVolumeBuilder.cpp +++ b/Core/src/Geometry/CylinderVolumeBuilder.cpp @@ -171,7 +171,7 @@ Acts::CylinderVolumeBuilder::trackingVolume( } std::string layerConfiguration = "|"; - if (wConfig.nVolumeConfig) { + if (wConfig.nVolumeConfig.present) { // negative layers are present ACTS_VERBOSE("Negative layers are present: rmin, rmax | zmin, zmax = " << wConfig.nVolumeConfig.toString()); @@ -185,7 +185,7 @@ Acts::CylinderVolumeBuilder::trackingVolume( // add to the string output layerConfiguration += " Negative Endcap |"; } - if (wConfig.cVolumeConfig) { + if (wConfig.cVolumeConfig.present) { // central layers are present ACTS_VERBOSE("Central layers are present: rmin, rmax | zmin, zmax = " << wConfig.cVolumeConfig.toString()); @@ -199,7 +199,7 @@ Acts::CylinderVolumeBuilder::trackingVolume( // add to the string output layerConfiguration += " Barrel |"; } - if (wConfig.pVolumeConfig) { + if (wConfig.pVolumeConfig.present) { // positive layers are present ACTS_VERBOSE("Positive layers are present: rmin, rmax | zmin, zmax = " << wConfig.pVolumeConfig.toString()); @@ -226,7 +226,7 @@ Acts::CylinderVolumeBuilder::trackingVolume( << '\n' << wConfig.toString()); // now let's understand the wrapping if needed - if (wConfig.existingVolumeConfig) { + if (wConfig.existingVolumeConfig.present) { wConfig.wrapInsertAttach(); ACTS_VERBOSE("Configuration after wrapping, insertion, attachment " << '\n' @@ -242,7 +242,7 @@ Acts::CylinderVolumeBuilder::trackingVolume( auto tvHelper = m_cfg.trackingVolumeHelper; // the barrel is always created auto barrel = - wConfig.cVolumeConfig + wConfig.cVolumeConfig.present ? tvHelper->createTrackingVolume( gctx, wConfig.cVolumeConfig.layers, wConfig.cVolumeConfig.volumes, m_cfg.volumeMaterial, @@ -258,7 +258,7 @@ Acts::CylinderVolumeBuilder::trackingVolume( [&](VolumeConfig& centralConfig, VolumeConfig& endcapConfig, const std::string& endcapName) -> MutableTrackingVolumePtr { // No config - no volume - if (!endcapConfig) { + if (!endcapConfig.present) { return nullptr; } // Check for ring layout @@ -478,7 +478,7 @@ Acts::CylinderVolumeBuilder::trackingVolume( if (existingVolumeCp) { // Check if gaps are needed std::vector<TrackingVolumePtr> existingContainer; - if (wConfig.fGapVolumeConfig) { + if (wConfig.fGapVolumeConfig.present) { // create the gap volume auto fGap = tvHelper->createGapTrackingVolume( gctx, wConfig.cVolumeConfig.volumes, m_cfg.volumeMaterial, @@ -489,7 +489,7 @@ Acts::CylinderVolumeBuilder::trackingVolume( existingContainer.push_back(fGap); } existingContainer.push_back(existingVolumeCp); - if (wConfig.sGapVolumeConfig) { + if (wConfig.sGapVolumeConfig.present) { // create the gap volume auto sGap = tvHelper->createGapTrackingVolume( gctx, wConfig.cVolumeConfig.volumes, m_cfg.volumeMaterial, From cafee589c1f1bcbec1e08354127f54dbfe21d321 Mon Sep 17 00:00:00 2001 From: Andreas Stefl <stefl.andreas@gmail.com> Date: Sat, 23 Nov 2024 13:17:49 +0100 Subject: [PATCH 41/49] chore: Cleanup some Geant4 Examples code (#3895) Accumulated changes I wanted to branch out from https://github.com/acts-project/acts/pull/3498 - Improve namespaces - Use namespaces in source files - Clean includes --- .../DDG4/DDG4DetectorConstruction.hpp | 10 +- .../Geant4/DetectorConstructionFactory.hpp | 4 +- .../ActsExamples/Geant4/EventStore.hpp | 6 +- .../Geant4/GdmlDetectorConstruction.hpp | 10 +- .../ActsExamples/Geant4/Geant4Manager.hpp | 12 +- .../ActsExamples/Geant4/Geant4Simulation.hpp | 18 +-- .../Geant4/MagneticFieldWrapper.hpp | 4 +- .../Geant4/MaterialPhysicsList.hpp | 5 +- .../Geant4/MaterialSteppingAction.hpp | 4 +- .../Geant4/ParticleKillAction.hpp | 4 +- .../Geant4/ParticleTrackingAction.hpp | 5 +- .../Geant4/PhysicsListFactory.hpp | 4 +- .../ActsExamples/Geant4/RegionCreator.hpp | 6 +- .../Geant4/SensitiveSteppingAction.hpp | 4 +- .../Geant4/SensitiveSurfaceMapper.hpp | 5 +- .../Geant4/SimParticleTranslation.hpp | 4 +- .../Geant4/SteppingActionList.hpp | 11 +- .../GeoModelDetectorConstruction.hpp | 12 +- .../TelescopeG4DetectorConstruction.hpp | 10 +- .../Geant4/src/DDG4DetectorConstruction.cpp | 26 +++-- .../Geant4/src/GdmlDetectorConstruction.cpp | 6 +- .../Algorithms/Geant4/src/Geant4Manager.cpp | 18 +-- .../Geant4/src/Geant4Simulation.cpp | 107 +++++++++--------- .../src/GeoModelDetectorConstruction.cpp | 6 +- .../Geant4/src/MagneticFieldWrapper.cpp | 13 ++- .../Geant4/src/MaterialPhysicsList.cpp | 12 +- .../Geant4/src/MaterialSteppingAction.cpp | 11 +- .../Geant4/src/ParticleKillAction.cpp | 8 +- .../Geant4/src/ParticleTrackingAction.cpp | 23 ++-- .../Geant4/src/PhysicsListFactory.cpp | 4 +- .../Algorithms/Geant4/src/RegionCreator.cpp | 6 +- .../Geant4/src/SensitiveSteppingAction.cpp | 12 +- .../Geant4/src/SensitiveSurfaceMapper.cpp | 18 +-- .../Geant4/src/SimParticleTranslation.cpp | 12 +- .../src/TelescopeG4DetectorConstruction.cpp | 23 ++-- .../Geant4HepMC/EventRecording.hpp | 12 +- .../Geant4HepMC/src/EventRecording.cpp | 38 +++---- Examples/Python/src/Geant4Component.cpp | 48 ++++---- Examples/Python/src/Geant4DD4hepComponent.cpp | 8 +- .../Python/src/Geant4GeoModelComponent.cpp | 8 +- .../Geant4/Geant4DetectorSurfaceFactory.hpp | 2 +- Plugins/Geant4/src/Geant4DetectorElement.cpp | 21 ++-- .../GeoModel/GeoModelDetectorElementITk.hpp | 8 -- .../src/GeoModelDetectorElementITk.cpp | 8 -- .../GeoModelDetectorElementITkTests.cpp | 8 -- 45 files changed, 304 insertions(+), 300 deletions(-) diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/DDG4/DDG4DetectorConstruction.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/DDG4/DDG4DetectorConstruction.hpp index 529a3725980..54c590ac4d3 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/DDG4/DDG4DetectorConstruction.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/DDG4/DDG4DetectorConstruction.hpp @@ -31,7 +31,7 @@ class DDG4DetectorConstruction final : public G4VUserDetectorConstruction { public: DDG4DetectorConstruction( std::shared_ptr<DD4hep::DD4hepDetector> detector, - std::vector<std::shared_ptr<RegionCreator>> regionCreators = {}); + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators = {}); ~DDG4DetectorConstruction() final; /// Convert the stored DD4hep detector to a Geant4 description. @@ -47,7 +47,7 @@ class DDG4DetectorConstruction final : public G4VUserDetectorConstruction { /// The Acts DD4hep detector instance std::shared_ptr<DD4hep::DD4hepDetector> m_detector; /// Region creators - std::vector<std::shared_ptr<RegionCreator>> m_regionCreators; + std::vector<std::shared_ptr<Geant4::RegionCreator>> m_regionCreators; /// The world volume G4VPhysicalVolume* m_world = nullptr; @@ -56,11 +56,11 @@ class DDG4DetectorConstruction final : public G4VUserDetectorConstruction { }; class DDG4DetectorConstructionFactory final - : public DetectorConstructionFactory { + : public Geant4::DetectorConstructionFactory { public: DDG4DetectorConstructionFactory( std::shared_ptr<DD4hep::DD4hepDetector> detector, - std::vector<std::shared_ptr<RegionCreator>> regionCreators = {}); + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators = {}); ~DDG4DetectorConstructionFactory() final; std::unique_ptr<G4VUserDetectorConstruction> factorize() const override; @@ -69,7 +69,7 @@ class DDG4DetectorConstructionFactory final /// The Acts DD4hep detector instance std::shared_ptr<DD4hep::DD4hepDetector> m_detector; /// Region creators - std::vector<std::shared_ptr<RegionCreator>> m_regionCreators; + std::vector<std::shared_ptr<Geant4::RegionCreator>> m_regionCreators; }; } // namespace ActsExamples diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/DetectorConstructionFactory.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/DetectorConstructionFactory.hpp index a0f5b3e41cd..16cb2c3eae6 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/DetectorConstructionFactory.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/DetectorConstructionFactory.hpp @@ -12,7 +12,7 @@ #include <G4VUserDetectorConstruction.hh> -namespace ActsExamples { +namespace ActsExamples::Geant4 { /// Silly Geant4 will destroy the detector construction after the run manager is /// destructed. This class works around it by factorizing a factory. @@ -23,4 +23,4 @@ class DetectorConstructionFactory { virtual std::unique_ptr<G4VUserDetectorConstruction> factorize() const = 0; }; -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/EventStore.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/EventStore.hpp index a46512ce299..7ca1775b81a 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/EventStore.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/EventStore.hpp @@ -21,8 +21,10 @@ #include "G4Types.hh" namespace ActsExamples { - class WhiteBoard; +} + +namespace ActsExamples::Geant4 { /// Common event store for all Geant4 related sub algorithms struct EventStore { @@ -80,4 +82,4 @@ struct EventStore { std::unordered_map<BarcodeWithoutSubparticle, std::size_t> subparticleMap; }; -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/GdmlDetectorConstruction.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/GdmlDetectorConstruction.hpp index 24924bd7867..69156e94e06 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/GdmlDetectorConstruction.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/GdmlDetectorConstruction.hpp @@ -26,7 +26,7 @@ class GdmlDetectorConstruction final : public G4VUserDetectorConstruction { /// @param regionCreators are the region creators GdmlDetectorConstruction( std::string path, - std::vector<std::shared_ptr<RegionCreator>> regionCreators = {}); + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators = {}); /// Read the file and parse it to construct the Geant4 description /// @@ -38,17 +38,17 @@ class GdmlDetectorConstruction final : public G4VUserDetectorConstruction { /// Path to the Gdml file std::string m_path; /// Region creators - std::vector<std::shared_ptr<RegionCreator>> m_regionCreators; + std::vector<std::shared_ptr<Geant4::RegionCreator>> m_regionCreators; /// Cached world volume G4VPhysicalVolume* m_world = nullptr; }; class GdmlDetectorConstructionFactory final - : public DetectorConstructionFactory { + : public Geant4::DetectorConstructionFactory { public: GdmlDetectorConstructionFactory( std::string path, - std::vector<std::shared_ptr<RegionCreator>> regionCreators = {}); + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators = {}); std::unique_ptr<G4VUserDetectorConstruction> factorize() const override; @@ -56,7 +56,7 @@ class GdmlDetectorConstructionFactory final /// Path to the Gdml file std::string m_path; /// Region creators - std::vector<std::shared_ptr<RegionCreator>> m_regionCreators; + std::vector<std::shared_ptr<Geant4::RegionCreator>> m_regionCreators; }; } // namespace ActsExamples diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/Geant4Manager.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/Geant4Manager.hpp index c3db1c3f2fe..bdf9ab7bb82 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/Geant4Manager.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/Geant4Manager.hpp @@ -18,8 +18,10 @@ class G4VUserPhysicsList; namespace ActsExamples { -class PhysicsListFactory; class Geant4Manager; +namespace Geant4 { +class PhysicsListFactory; +} /// Manages the life time of G4RunManager and G4VUserPhysicsList. /// @@ -75,12 +77,14 @@ class Geant4Manager { /// Registers a named physics list factory to the manager for easy /// instantiation when needed. void registerPhysicsListFactory( - std::string name, std::shared_ptr<PhysicsListFactory> physicsListFactory); + std::string name, + std::shared_ptr<Geant4::PhysicsListFactory> physicsListFactory); std::unique_ptr<G4VUserPhysicsList> createPhysicsList( const std::string &name) const; /// Get the current list of physics list factories. - const std::unordered_map<std::string, std::shared_ptr<PhysicsListFactory>> & + const std::unordered_map<std::string, + std::shared_ptr<Geant4::PhysicsListFactory>> & getPhysicsListFactories() const; private: @@ -89,7 +93,7 @@ class Geant4Manager { bool m_created = false; std::weak_ptr<Geant4Handle> m_handle; - std::unordered_map<std::string, std::shared_ptr<PhysicsListFactory>> + std::unordered_map<std::string, std::shared_ptr<Geant4::PhysicsListFactory>> m_physicsListFactories; }; diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/Geant4Simulation.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/Geant4Simulation.hpp index f735dcd3859..88f526fff4f 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/Geant4Simulation.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/Geant4Simulation.hpp @@ -39,14 +39,15 @@ class MagneticFieldProvider; class Volume; } // namespace Acts -class G4VUserDetectorConstruction; - namespace ActsExamples { +struct Geant4Handle; +namespace Geant4 { class DetectorConstructionFactory; class SensitiveSurfaceMapper; struct EventStore; -struct Geant4Handle; +class RegionCreator; +} // namespace Geant4 /// Abstracts common Geant4 Acts algorithm behaviour. class Geant4SimulationBase : public IAlgorithm { @@ -61,7 +62,8 @@ class Geant4SimulationBase : public IAlgorithm { /// Detector construction object. /// G4RunManager will take care of deletion - std::shared_ptr<DetectorConstructionFactory> detectorConstructionFactory; + std::shared_ptr<Geant4::DetectorConstructionFactory> + detectorConstructionFactory; /// Optional Geant4 instance overwrite. std::shared_ptr<Geant4Handle> geant4Handle; @@ -91,11 +93,11 @@ class Geant4SimulationBase : public IAlgorithm { G4RunManager& runManager() const; - EventStore& eventStore() const; + Geant4::EventStore& eventStore() const; std::unique_ptr<const Acts::Logger> m_logger; - std::shared_ptr<EventStore> m_eventStore; + std::shared_ptr<Geant4::EventStore> m_eventStore; int m_geant4Level{}; @@ -122,8 +124,8 @@ class Geant4Simulation final : public Geant4SimulationBase { std::string outputParticles = "particles_simulated"; /// The ACTS sensitive surfaces in a mapper, used for hit creation - std::shared_ptr<const SensitiveSurfaceMapper> sensitiveSurfaceMapper = - nullptr; + std::shared_ptr<const Geant4::SensitiveSurfaceMapper> + sensitiveSurfaceMapper = nullptr; /// The ACTS Magnetic field provider std::shared_ptr<const Acts::MagneticFieldProvider> magneticField = nullptr; diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/MagneticFieldWrapper.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/MagneticFieldWrapper.hpp index a73663fb503..7581d5b6cf5 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/MagneticFieldWrapper.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/MagneticFieldWrapper.hpp @@ -18,7 +18,7 @@ namespace Acts { class MagneticFieldProvider; } -namespace ActsExamples { +namespace ActsExamples::Geant4 { /// A magnetic field wrapper for the Acts magnetic field /// to be used with Geant4. @@ -58,4 +58,4 @@ class MagneticFieldWrapper : public G4MagneticField { std::unique_ptr<const Acts::Logger> m_logger; }; -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/MaterialPhysicsList.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/MaterialPhysicsList.hpp index 9cfb45d0453..924c1b54e59 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/MaterialPhysicsList.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/MaterialPhysicsList.hpp @@ -12,11 +12,10 @@ #include <memory> #include <string> -#include <vector> #include <G4VUserPhysicsList.hh> -namespace ActsExamples { +namespace ActsExamples::Geant4 { /// @class MaterialPhysicsList /// @@ -57,4 +56,4 @@ class MaterialPhysicsList final : public G4VUserPhysicsList { std::unique_ptr<const Acts::Logger> m_logger; }; -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/MaterialSteppingAction.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/MaterialSteppingAction.hpp index 8b21c41a7ce..23ccb88764e 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/MaterialSteppingAction.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/MaterialSteppingAction.hpp @@ -19,7 +19,7 @@ class G4Step; -namespace ActsExamples { +namespace ActsExamples::Geant4 { /// @class MaterialSteppingAction /// @@ -66,4 +66,4 @@ class MaterialSteppingAction final : public G4UserSteppingAction { std::unique_ptr<const Acts::Logger> m_logger; }; -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/ParticleKillAction.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/ParticleKillAction.hpp index 4eb45d4f6ec..fe15a2d185c 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/ParticleKillAction.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/ParticleKillAction.hpp @@ -22,7 +22,7 @@ namespace Acts { class Volume; } // namespace Acts -namespace ActsExamples { +namespace ActsExamples::Geant4 { /// A G4SteppingAction that is called for every step in the simulation process. /// @@ -67,4 +67,4 @@ class ParticleKillAction : public G4UserSteppingAction { std::unique_ptr<const Acts::Logger> m_logger; }; -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/ParticleTrackingAction.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/ParticleTrackingAction.hpp index acf07ec75dc..4ff1d413f34 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/ParticleTrackingAction.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/ParticleTrackingAction.hpp @@ -9,7 +9,6 @@ #pragma once #include "Acts/Utilities/Logger.hpp" -#include "ActsExamples/EventData/SimHit.hpp" #include "ActsExamples/EventData/SimParticle.hpp" #include "ActsExamples/Geant4/EventStore.hpp" @@ -22,7 +21,7 @@ class G4Track; -namespace ActsExamples { +namespace ActsExamples::Geant4 { /// The G4UserTrackingAction that is called for every track in /// the simulation process. @@ -82,4 +81,4 @@ class ParticleTrackingAction : public G4UserTrackingAction { std::unique_ptr<const Acts::Logger> m_logger; }; -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/PhysicsListFactory.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/PhysicsListFactory.hpp index 6bbc39b4f04..e248beaffd4 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/PhysicsListFactory.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/PhysicsListFactory.hpp @@ -13,7 +13,7 @@ class G4VUserPhysicsList; -namespace ActsExamples { +namespace ActsExamples::Geant4 { /// A factory around G4VUserPhysicsList which allows on demand instantiation. class PhysicsListFactory { @@ -36,4 +36,4 @@ class PhysicsListFactoryFunction final : public PhysicsListFactory { Function m_function; }; -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/RegionCreator.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/RegionCreator.hpp index b141948ec90..5327e4f37eb 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/RegionCreator.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/RegionCreator.hpp @@ -13,7 +13,7 @@ #include <string> #include <vector> -namespace ActsExamples { +namespace ActsExamples::Geant4 { /// Geant4 Region Creator /// @@ -49,7 +49,7 @@ class RegionCreator { Acts::Logging::Level level); /// Construct the region - void Construct(); + void construct(); /// Readonly access to the configuration const Config& config() const { return m_cfg; } @@ -68,4 +68,4 @@ class RegionCreator { std::unique_ptr<const Acts::Logger> m_logger; }; -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SensitiveSteppingAction.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SensitiveSteppingAction.hpp index 664522349df..d415e77e940 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SensitiveSteppingAction.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SensitiveSteppingAction.hpp @@ -23,7 +23,7 @@ namespace Acts { class Surface; } -namespace ActsExamples { +namespace ActsExamples::Geant4 { /// The G4SteppingAction that is called for every step in /// the simulation process. @@ -83,4 +83,4 @@ class SensitiveSteppingAction : public G4UserSteppingAction { m_surfaceMapping; }; -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SensitiveSurfaceMapper.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SensitiveSurfaceMapper.hpp index 60f86d0d4e3..7614635ff93 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SensitiveSurfaceMapper.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SensitiveSurfaceMapper.hpp @@ -12,7 +12,6 @@ #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Geometry/GeometryIdentifier.hpp" #include "Acts/Geometry/TrackingGeometry.hpp" -#include "Acts/Utilities/GridAccessHelpers.hpp" #include "Acts/Utilities/Logger.hpp" #include <map> @@ -26,7 +25,7 @@ namespace Acts { class Surface; } -namespace ActsExamples { +namespace ActsExamples::Geant4 { struct SensitiveCandidatesBase { /// Get the sensitive surfaces for a given position @@ -148,4 +147,4 @@ class SensitiveSurfaceMapper { std::unique_ptr<const Acts::Logger> m_logger; }; -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SimParticleTranslation.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SimParticleTranslation.hpp index 8a20f91ae39..5b43102d812 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SimParticleTranslation.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SimParticleTranslation.hpp @@ -20,7 +20,7 @@ class G4Event; -namespace ActsExamples { +namespace ActsExamples::Geant4 { /// @class SimParticleTranslation /// @@ -81,4 +81,4 @@ class SimParticleTranslation final : public G4VUserPrimaryGeneratorAction { std::unique_ptr<const Acts::Logger> m_logger; }; -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SteppingActionList.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SteppingActionList.hpp index b4a6d7e5d68..807417cf1f4 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SteppingActionList.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/Geant4/SteppingActionList.hpp @@ -8,17 +8,12 @@ #pragma once -#include "Acts/Utilities/Logger.hpp" -#include "ActsExamples/EventData/SimHit.hpp" -#include "ActsExamples/EventData/SimParticle.hpp" - #include <memory> -#include <optional> -#include <string> +#include <vector> #include <G4UserSteppingAction.hh> -namespace ActsExamples { +namespace ActsExamples::Geant4 { /// Geant4 only allows one user action of each type. This simple wrapper /// dispatches multiple actions to Geant4. @@ -42,4 +37,4 @@ class SteppingActionList : public G4UserSteppingAction { Config m_cfg; }; -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/GeoModelG4/GeoModelDetectorConstruction.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/GeoModelG4/GeoModelDetectorConstruction.hpp index a919d2866b0..d3070bbc590 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/GeoModelG4/GeoModelDetectorConstruction.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/GeoModelG4/GeoModelDetectorConstruction.hpp @@ -12,8 +12,6 @@ #include "ActsExamples/Geant4/DetectorConstructionFactory.hpp" #include "ActsExamples/Geant4/RegionCreator.hpp" -#include <string> - #include <G4VUserDetectorConstruction.hh> class G4VPhysicalVolume; @@ -27,7 +25,7 @@ class GeoModelDetectorConstruction final : public G4VUserDetectorConstruction { /// @param regionCreators are the region creators GeoModelDetectorConstruction( const Acts::GeoModelTree& geoModelTree, - std::vector<std::shared_ptr<RegionCreator>> regionCreators = {}); + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators = {}); /// Read the file and parse it to construct the Geant4 description /// @@ -39,17 +37,17 @@ class GeoModelDetectorConstruction final : public G4VUserDetectorConstruction { /// The GeoModel tree Acts::GeoModelTree m_geoModelTree; /// Region creators - std::vector<std::shared_ptr<RegionCreator>> m_regionCreators; + std::vector<std::shared_ptr<Geant4::RegionCreator>> m_regionCreators; /// The world volume G4VPhysicalVolume* m_g4World = nullptr; }; class GeoModelDetectorConstructionFactory final - : public DetectorConstructionFactory { + : public Geant4::DetectorConstructionFactory { public: GeoModelDetectorConstructionFactory( const Acts::GeoModelTree& geoModelTree, - std::vector<std::shared_ptr<RegionCreator>> regionCreators = {}); + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators = {}); std::unique_ptr<G4VUserDetectorConstruction> factorize() const override; @@ -57,7 +55,7 @@ class GeoModelDetectorConstructionFactory final /// The GeoModel tree Acts::GeoModelTree m_geoModelTree; /// Region creators - std::vector<std::shared_ptr<RegionCreator>> m_regionCreators; + std::vector<std::shared_ptr<Geant4::RegionCreator>> m_regionCreators; }; } // namespace ActsExamples diff --git a/Examples/Algorithms/Geant4/include/ActsExamples/TelescopeDetector/TelescopeG4DetectorConstruction.hpp b/Examples/Algorithms/Geant4/include/ActsExamples/TelescopeDetector/TelescopeG4DetectorConstruction.hpp index 66fc363fe53..0d0fc522217 100644 --- a/Examples/Algorithms/Geant4/include/ActsExamples/TelescopeDetector/TelescopeG4DetectorConstruction.hpp +++ b/Examples/Algorithms/Geant4/include/ActsExamples/TelescopeDetector/TelescopeG4DetectorConstruction.hpp @@ -24,7 +24,7 @@ class TelescopeG4DetectorConstruction final public: TelescopeG4DetectorConstruction( const TelescopeDetector::Config& cfg, - std::vector<std::shared_ptr<RegionCreator>> regionCreators = {}); + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators = {}); G4VPhysicalVolume* Construct() final; @@ -32,17 +32,17 @@ class TelescopeG4DetectorConstruction final /// The configuration of the telescope detector TelescopeDetector::Config m_cfg; /// Region creators - std::vector<std::shared_ptr<RegionCreator>> m_regionCreators; + std::vector<std::shared_ptr<Geant4::RegionCreator>> m_regionCreators; /// The world volume G4VPhysicalVolume* m_world{}; }; class TelescopeG4DetectorConstructionFactory final - : public DetectorConstructionFactory { + : public Geant4::DetectorConstructionFactory { public: TelescopeG4DetectorConstructionFactory( const TelescopeDetector::Config& cfg, - std::vector<std::shared_ptr<RegionCreator>> regionCreators = {}); + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators = {}); std::unique_ptr<G4VUserDetectorConstruction> factorize() const override; @@ -50,7 +50,7 @@ class TelescopeG4DetectorConstructionFactory final /// The configuration of the telescope detector TelescopeDetector::Config m_cfg; /// Region creators - std::vector<std::shared_ptr<RegionCreator>> m_regionCreators; + std::vector<std::shared_ptr<Geant4::RegionCreator>> m_regionCreators; }; } // namespace ActsExamples::Telescope diff --git a/Examples/Algorithms/Geant4/src/DDG4DetectorConstruction.cpp b/Examples/Algorithms/Geant4/src/DDG4DetectorConstruction.cpp index ae6a4609180..2868fbb3a63 100644 --- a/Examples/Algorithms/Geant4/src/DDG4DetectorConstruction.cpp +++ b/Examples/Algorithms/Geant4/src/DDG4DetectorConstruction.cpp @@ -22,22 +22,23 @@ class G4VPhysicalVolume; -ActsExamples::DDG4DetectorConstruction::DDG4DetectorConstruction( +namespace ActsExamples { + +DDG4DetectorConstruction::DDG4DetectorConstruction( std::shared_ptr<DD4hep::DD4hepDetector> detector, - std::vector<std::shared_ptr<RegionCreator>> regionCreators) + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators) : G4VUserDetectorConstruction(), m_detector(std::move(detector)), m_regionCreators(std::move(regionCreators)) {} -ActsExamples::DDG4DetectorConstruction::~DDG4DetectorConstruction() = default; +DDG4DetectorConstruction::~DDG4DetectorConstruction() = default; -dd4hep::Detector& ActsExamples::DDG4DetectorConstruction::dd4hepDetector() - const { +dd4hep::Detector& DDG4DetectorConstruction::dd4hepDetector() const { return m_detector->geometryService->detector(); } // See DD4hep::Simulation::Geant4DetectorConstruction::Construct() -G4VPhysicalVolume* ActsExamples::DDG4DetectorConstruction::Construct() { +G4VPhysicalVolume* DDG4DetectorConstruction::Construct() { if (m_world == nullptr) { dd4hep::sim::Geant4Mapping& g4map = dd4hep::sim::Geant4Mapping::instance(); auto conv = dd4hep::sim::Geant4Converter(dd4hepDetector(), @@ -52,23 +53,24 @@ G4VPhysicalVolume* ActsExamples::DDG4DetectorConstruction::Construct() { // Create regions for (const auto& regionCreator : m_regionCreators) { - regionCreator->Construct(); + regionCreator->construct(); } } return m_world; } -ActsExamples::DDG4DetectorConstructionFactory::DDG4DetectorConstructionFactory( +DDG4DetectorConstructionFactory::DDG4DetectorConstructionFactory( std::shared_ptr<DD4hep::DD4hepDetector> detector, - std::vector<std::shared_ptr<RegionCreator>> regionCreators) + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators) : m_detector(std::move(detector)), m_regionCreators(std::move(regionCreators)) {} -ActsExamples::DDG4DetectorConstructionFactory:: - ~DDG4DetectorConstructionFactory() = default; +DDG4DetectorConstructionFactory::~DDG4DetectorConstructionFactory() = default; std::unique_ptr<G4VUserDetectorConstruction> -ActsExamples::DDG4DetectorConstructionFactory::factorize() const { +DDG4DetectorConstructionFactory::factorize() const { return std::make_unique<DDG4DetectorConstruction>(m_detector, m_regionCreators); } + +} // namespace ActsExamples diff --git a/Examples/Algorithms/Geant4/src/GdmlDetectorConstruction.cpp b/Examples/Algorithms/Geant4/src/GdmlDetectorConstruction.cpp index 5a10933bb3f..242597ac175 100644 --- a/Examples/Algorithms/Geant4/src/GdmlDetectorConstruction.cpp +++ b/Examples/Algorithms/Geant4/src/GdmlDetectorConstruction.cpp @@ -18,7 +18,7 @@ using namespace ActsExamples; GdmlDetectorConstruction::GdmlDetectorConstruction( std::string path, - std::vector<std::shared_ptr<RegionCreator>> regionCreators) + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators) : G4VUserDetectorConstruction(), m_path(std::move(path)), m_regionCreators(std::move(regionCreators)) {} @@ -32,7 +32,7 @@ G4VPhysicalVolume* GdmlDetectorConstruction::Construct() { // Create regions for (const auto& regionCreator : m_regionCreators) { - regionCreator->Construct(); + regionCreator->construct(); } } return m_world; @@ -40,7 +40,7 @@ G4VPhysicalVolume* GdmlDetectorConstruction::Construct() { GdmlDetectorConstructionFactory::GdmlDetectorConstructionFactory( std::string path, - std::vector<std::shared_ptr<RegionCreator>> regionCreators) + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators) : m_path(std::move(path)), m_regionCreators(std::move(regionCreators)) {} std::unique_ptr<G4VUserDetectorConstruction> diff --git a/Examples/Algorithms/Geant4/src/Geant4Manager.cpp b/Examples/Algorithms/Geant4/src/Geant4Manager.cpp index fb981704561..13e7428ac60 100644 --- a/Examples/Algorithms/Geant4/src/Geant4Manager.cpp +++ b/Examples/Algorithms/Geant4/src/Geant4Manager.cpp @@ -109,7 +109,8 @@ std::shared_ptr<Geant4Handle> Geant4Manager::createHandle( } void Geant4Manager::registerPhysicsListFactory( - std::string name, std::shared_ptr<PhysicsListFactory> physicsListFactory) { + std::string name, + std::shared_ptr<Geant4::PhysicsListFactory> physicsListFactory) { if (m_physicsListFactories.contains(name)) { throw std::invalid_argument("name already mapped"); } @@ -126,22 +127,23 @@ std::unique_ptr<G4VUserPhysicsList> Geant4Manager::createPhysicsList( return it->second->factorize(); } -const std::unordered_map<std::string, std::shared_ptr<PhysicsListFactory>>& +const std::unordered_map<std::string, + std::shared_ptr<Geant4::PhysicsListFactory>>& Geant4Manager::getPhysicsListFactories() const { return m_physicsListFactories; } Geant4Manager::Geant4Manager() { registerPhysicsListFactory( - "FTFP_BERT", std::make_shared<PhysicsListFactoryFunction>( + "FTFP_BERT", std::make_shared<Geant4::PhysicsListFactoryFunction>( []() { return std::make_unique<FTFP_BERT>(); })); registerPhysicsListFactory( - "FTFP_BERT_ATL", std::make_shared<PhysicsListFactoryFunction>( + "FTFP_BERT_ATL", std::make_shared<Geant4::PhysicsListFactoryFunction>( []() { return std::make_unique<FTFP_BERT_ATL>(); })); - registerPhysicsListFactory("MaterialPhysicsList", - std::make_shared<PhysicsListFactoryFunction>([]() { - return std::make_unique<MaterialPhysicsList>(); - })); + registerPhysicsListFactory( + "MaterialPhysicsList", + std::make_shared<Geant4::PhysicsListFactoryFunction>( + []() { return std::make_unique<Geant4::MaterialPhysicsList>(); })); } Geant4Manager::~Geant4Manager() = default; diff --git a/Examples/Algorithms/Geant4/src/Geant4Simulation.cpp b/Examples/Algorithms/Geant4/src/Geant4Simulation.cpp index 795ddad78fa..bbc5c533e5c 100644 --- a/Examples/Algorithms/Geant4/src/Geant4Simulation.cpp +++ b/Examples/Algorithms/Geant4/src/Geant4Simulation.cpp @@ -28,7 +28,6 @@ #include "ActsExamples/Geant4/SimParticleTranslation.hpp" #include "ActsExamples/Geant4/SteppingActionList.hpp" -#include <iostream> #include <stdexcept> #include <utility> @@ -47,22 +46,24 @@ #include <Randomize.hh> #include <boost/version.hpp> -ActsExamples::Geant4SimulationBase::Geant4SimulationBase( - const Config& cfg, std::string name, Acts::Logging::Level level) +namespace ActsExamples { + +Geant4SimulationBase::Geant4SimulationBase(const Config& cfg, std::string name, + Acts::Logging::Level level) : IAlgorithm(std::move(name), level) { if (cfg.inputParticles.empty()) { throw std::invalid_argument("Missing input particle collection"); } - if (!cfg.detectorConstructionFactory) { + if (cfg.detectorConstructionFactory == nullptr) { throw std::invalid_argument("Missing detector construction factory"); } - if (!cfg.randomNumbers) { + if (cfg.randomNumbers == nullptr) { throw std::invalid_argument("Missing random numbers"); } m_logger = Acts::getDefaultLogger("Geant4", level); - m_eventStore = std::make_shared<EventStore>(); + m_eventStore = std::make_shared<Geant4::EventStore>(); // tweak logging // If we are in VERBOSE mode, set the verbose level in Geant4 to 2. @@ -70,9 +71,9 @@ ActsExamples::Geant4SimulationBase::Geant4SimulationBase( m_geant4Level = logger().level() == Acts::Logging::VERBOSE ? 2 : 0; } -ActsExamples::Geant4SimulationBase::~Geant4SimulationBase() = default; +Geant4SimulationBase::~Geant4SimulationBase() = default; -void ActsExamples::Geant4SimulationBase::commonInitialization() { +void Geant4SimulationBase::commonInitialization() { // Set the detector construction { // Clear detector construction if it exists @@ -89,24 +90,22 @@ void ActsExamples::Geant4SimulationBase::commonInitialization() { m_geant4Instance->tweakLogging(m_geant4Level); } -G4RunManager& ActsExamples::Geant4SimulationBase::runManager() const { +G4RunManager& Geant4SimulationBase::runManager() const { return *m_geant4Instance->runManager.get(); } -ActsExamples::EventStore& ActsExamples::Geant4SimulationBase::eventStore() - const { +Geant4::EventStore& Geant4SimulationBase::eventStore() const { return *m_eventStore; } -ActsExamples::ProcessCode ActsExamples::Geant4SimulationBase::initialize() { +ProcessCode Geant4SimulationBase::initialize() { // Initialize the Geant4 run manager runManager().Initialize(); - return ActsExamples::ProcessCode::SUCCESS; + return ProcessCode::SUCCESS; } -ActsExamples::ProcessCode ActsExamples::Geant4SimulationBase::execute( - const ActsExamples::AlgorithmContext& ctx) const { +ProcessCode Geant4SimulationBase::execute(const AlgorithmContext& ctx) const { // Ensure exclusive access to the Geant4 run manager std::lock_guard<std::mutex> guard(m_geant4Instance->mutex); @@ -114,7 +113,7 @@ ActsExamples::ProcessCode ActsExamples::Geant4SimulationBase::execute( G4Random::setTheSeed(config().randomNumbers->generateSeed(ctx)); // Get and reset event registry state - eventStore() = EventStore{}; + eventStore() = Geant4::EventStore{}; // Register the current event store to the registry // this will allow access from the User*Actions @@ -153,16 +152,15 @@ ActsExamples::ProcessCode ActsExamples::Geant4SimulationBase::execute( "Step merging: max hits per hit: " << eventStore().maxStepsForHit); } - return ActsExamples::ProcessCode::SUCCESS; + return ProcessCode::SUCCESS; } -std::shared_ptr<ActsExamples::Geant4Handle> -ActsExamples::Geant4SimulationBase::geant4Handle() const { +std::shared_ptr<Geant4Handle> Geant4SimulationBase::geant4Handle() const { return m_geant4Instance; } -ActsExamples::Geant4Simulation::Geant4Simulation(const Config& cfg, - Acts::Logging::Level level) +Geant4Simulation::Geant4Simulation(const Config& cfg, + Acts::Logging::Level level) : Geant4SimulationBase(cfg, "Geant4Simulation", level), m_cfg(cfg) { m_geant4Instance = m_cfg.geant4Handle @@ -180,10 +178,10 @@ ActsExamples::Geant4Simulation::Geant4Simulation(const Config& cfg, if (runManager().GetUserPrimaryGeneratorAction() != nullptr) { delete runManager().GetUserPrimaryGeneratorAction(); } - SimParticleTranslation::Config prCfg; + Geant4::SimParticleTranslation::Config prCfg; prCfg.eventStore = m_eventStore; // G4RunManager will take care of deletion - auto primaryGeneratorAction = new SimParticleTranslation( + auto primaryGeneratorAction = new Geant4::SimParticleTranslation( prCfg, m_logger->cloneWithSuffix("SimParticleTranslation")); // Set the primary generator action runManager().SetUserAction(primaryGeneratorAction); @@ -195,48 +193,49 @@ ActsExamples::Geant4Simulation::Geant4Simulation(const Config& cfg, if (runManager().GetUserTrackingAction() != nullptr) { delete runManager().GetUserTrackingAction(); } - ParticleTrackingAction::Config trackingCfg; + Geant4::ParticleTrackingAction::Config trackingCfg; trackingCfg.eventStore = m_eventStore; trackingCfg.keepParticlesWithoutHits = cfg.keepParticlesWithoutHits; // G4RunManager will take care of deletion - auto trackingAction = new ParticleTrackingAction( + auto trackingAction = new Geant4::ParticleTrackingAction( trackingCfg, m_logger->cloneWithSuffix("ParticleTracking")); runManager().SetUserAction(trackingAction); } // Stepping actions - SensitiveSteppingAction* sensitiveSteppingActionAccess = nullptr; + Geant4::SensitiveSteppingAction* sensitiveSteppingActionAccess = nullptr; { // Clear stepping action if it exists if (runManager().GetUserSteppingAction() != nullptr) { delete runManager().GetUserSteppingAction(); } - ParticleKillAction::Config particleKillCfg; + Geant4::ParticleKillAction::Config particleKillCfg; particleKillCfg.eventStore = m_eventStore; particleKillCfg.volume = cfg.killVolume; particleKillCfg.maxTime = cfg.killAfterTime; particleKillCfg.secondaries = cfg.killSecondaries; - SensitiveSteppingAction::Config stepCfg; + Geant4::SensitiveSteppingAction::Config stepCfg; stepCfg.eventStore = m_eventStore; stepCfg.charged = true; stepCfg.neutral = cfg.recordHitsOfNeutrals; stepCfg.primary = true; stepCfg.secondary = cfg.recordHitsOfSecondaries; - SteppingActionList::Config steppingCfg; - steppingCfg.actions.push_back(std::make_unique<ParticleKillAction>( + Geant4::SteppingActionList::Config steppingCfg; + steppingCfg.actions.push_back(std::make_unique<Geant4::ParticleKillAction>( particleKillCfg, m_logger->cloneWithSuffix("Killer"))); - auto sensitiveSteppingAction = std::make_unique<SensitiveSteppingAction>( - stepCfg, m_logger->cloneWithSuffix("SensitiveStepping")); + auto sensitiveSteppingAction = + std::make_unique<Geant4::SensitiveSteppingAction>( + stepCfg, m_logger->cloneWithSuffix("SensitiveStepping")); sensitiveSteppingActionAccess = sensitiveSteppingAction.get(); steppingCfg.actions.push_back(std::move(sensitiveSteppingAction)); // G4RunManager will take care of deletion - auto steppingAction = new SteppingActionList(steppingCfg); + auto steppingAction = new Geant4::SteppingActionList(steppingCfg); runManager().SetUserAction(steppingAction); } @@ -251,9 +250,10 @@ ActsExamples::Geant4Simulation::Geant4Simulation(const Config& cfg, if (cfg.magneticField) { ACTS_INFO("Setting ACTS configured field to Geant4."); - MagneticFieldWrapper::Config g4FieldCfg; + Geant4::MagneticFieldWrapper::Config g4FieldCfg; g4FieldCfg.magneticField = cfg.magneticField; - m_magneticField = std::make_unique<MagneticFieldWrapper>(g4FieldCfg); + m_magneticField = + std::make_unique<Geant4::MagneticFieldWrapper>(g4FieldCfg); // Set the field or the G4Field manager m_fieldManager = std::make_unique<G4FieldManager>(); @@ -266,7 +266,7 @@ ActsExamples::Geant4Simulation::Geant4Simulation(const Config& cfg, // ACTS sensitive surfaces are provided, so hit creation is turned on if (cfg.sensitiveSurfaceMapper != nullptr) { - SensitiveSurfaceMapper::State sState; + Geant4::SensitiveSurfaceMapper::State sState; ACTS_INFO( "Remapping selected volumes from Geant4 to Acts::Surface::GeometryID"); cfg.sensitiveSurfaceMapper->remapSensitiveNames( @@ -288,10 +288,9 @@ ActsExamples::Geant4Simulation::Geant4Simulation(const Config& cfg, m_outputParticles.initialize(cfg.outputParticles); } -ActsExamples::Geant4Simulation::~Geant4Simulation() = default; +Geant4Simulation::~Geant4Simulation() = default; -ActsExamples::ProcessCode ActsExamples::Geant4Simulation::execute( - const ActsExamples::AlgorithmContext& ctx) const { +ProcessCode Geant4Simulation::execute(const AlgorithmContext& ctx) const { auto ret = Geant4SimulationBase::execute(ctx); if (ret != ProcessCode::SUCCESS) { return ret; @@ -313,18 +312,18 @@ ActsExamples::ProcessCode ActsExamples::Geant4Simulation::execute( ctx, SimHitContainer(eventStore().hits.begin(), eventStore().hits.end())); #endif - return ActsExamples::ProcessCode::SUCCESS; + return ProcessCode::SUCCESS; } -ActsExamples::Geant4MaterialRecording::Geant4MaterialRecording( - const Config& cfg, Acts::Logging::Level level) +Geant4MaterialRecording::Geant4MaterialRecording(const Config& cfg, + Acts::Logging::Level level) : Geant4SimulationBase(cfg, "Geant4Simulation", level), m_cfg(cfg) { auto physicsListName = "MaterialPhysicsList"; m_geant4Instance = m_cfg.geant4Handle ? m_cfg.geant4Handle : Geant4Manager::instance().createHandle( - std::make_unique<MaterialPhysicsList>( + std::make_unique<Geant4::MaterialPhysicsList>( m_logger->cloneWithSuffix("MaterialPhysicsList")), physicsListName); if (m_geant4Instance->physicsListName != physicsListName) { @@ -340,14 +339,14 @@ ActsExamples::Geant4MaterialRecording::Geant4MaterialRecording( delete runManager().GetUserPrimaryGeneratorAction(); } - SimParticleTranslation::Config prCfg; + Geant4::SimParticleTranslation::Config prCfg; prCfg.eventStore = m_eventStore; prCfg.forcedPdgCode = 0; prCfg.forcedCharge = 0.; prCfg.forcedMass = 0.; // G4RunManager will take care of deletion - auto primaryGeneratorAction = new SimParticleTranslation( + auto primaryGeneratorAction = new Geant4::SimParticleTranslation( prCfg, m_logger->cloneWithSuffix("SimParticleTranslation")); // Set the primary generator action runManager().SetUserAction(primaryGeneratorAction); @@ -359,11 +358,11 @@ ActsExamples::Geant4MaterialRecording::Geant4MaterialRecording( if (runManager().GetUserTrackingAction() != nullptr) { delete runManager().GetUserTrackingAction(); } - ParticleTrackingAction::Config trackingCfg; + Geant4::ParticleTrackingAction::Config trackingCfg; trackingCfg.eventStore = m_eventStore; trackingCfg.keepParticlesWithoutHits = true; // G4RunManager will take care of deletion - auto trackingAction = new ParticleTrackingAction( + auto trackingAction = new Geant4::ParticleTrackingAction( trackingCfg, m_logger->cloneWithSuffix("ParticleTracking")); runManager().SetUserAction(trackingAction); } @@ -374,11 +373,11 @@ ActsExamples::Geant4MaterialRecording::Geant4MaterialRecording( if (runManager().GetUserSteppingAction() != nullptr) { delete runManager().GetUserSteppingAction(); } - MaterialSteppingAction::Config steppingCfg; + Geant4::MaterialSteppingAction::Config steppingCfg; steppingCfg.eventStore = m_eventStore; steppingCfg.excludeMaterials = m_cfg.excludeMaterials; // G4RunManager will take care of deletion - auto steppingAction = new MaterialSteppingAction( + auto steppingAction = new Geant4::MaterialSteppingAction( steppingCfg, m_logger->cloneWithSuffix("MaterialSteppingAction")); runManager().SetUserAction(steppingAction); } @@ -389,10 +388,10 @@ ActsExamples::Geant4MaterialRecording::Geant4MaterialRecording( m_outputMaterialTracks.initialize(cfg.outputMaterialTracks); } -ActsExamples::Geant4MaterialRecording::~Geant4MaterialRecording() = default; +Geant4MaterialRecording::~Geant4MaterialRecording() = default; -ActsExamples::ProcessCode ActsExamples::Geant4MaterialRecording::execute( - const ActsExamples::AlgorithmContext& ctx) const { +ProcessCode Geant4MaterialRecording::execute( + const AlgorithmContext& ctx) const { const auto ret = Geant4SimulationBase::execute(ctx); if (ret != ProcessCode::SUCCESS) { return ret; @@ -402,5 +401,7 @@ ActsExamples::ProcessCode ActsExamples::Geant4MaterialRecording::execute( m_outputMaterialTracks( ctx, decltype(eventStore().materialTracks)(eventStore().materialTracks)); - return ActsExamples::ProcessCode::SUCCESS; + return ProcessCode::SUCCESS; } + +} // namespace ActsExamples diff --git a/Examples/Algorithms/Geant4/src/GeoModelDetectorConstruction.cpp b/Examples/Algorithms/Geant4/src/GeoModelDetectorConstruction.cpp index c3ad0eea6de..8d33622714b 100644 --- a/Examples/Algorithms/Geant4/src/GeoModelDetectorConstruction.cpp +++ b/Examples/Algorithms/Geant4/src/GeoModelDetectorConstruction.cpp @@ -21,7 +21,7 @@ using namespace ActsExamples; GeoModelDetectorConstruction::GeoModelDetectorConstruction( const Acts::GeoModelTree& geoModelTree, - std::vector<std::shared_ptr<RegionCreator>> regionCreators) + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators) : G4VUserDetectorConstruction(), m_geoModelTree(geoModelTree), m_regionCreators(std::move(regionCreators)) { @@ -42,7 +42,7 @@ G4VPhysicalVolume* GeoModelDetectorConstruction::Construct() { // Create regions for (const auto& regionCreator : m_regionCreators) { - regionCreator->Construct(); + regionCreator->construct(); } } return m_g4World; @@ -50,7 +50,7 @@ G4VPhysicalVolume* GeoModelDetectorConstruction::Construct() { GeoModelDetectorConstructionFactory::GeoModelDetectorConstructionFactory( const Acts::GeoModelTree& geoModelTree, - std::vector<std::shared_ptr<RegionCreator>> regionCreators) + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators) : m_geoModelTree(geoModelTree), m_regionCreators(std::move(regionCreators)) {} diff --git a/Examples/Algorithms/Geant4/src/MagneticFieldWrapper.cpp b/Examples/Algorithms/Geant4/src/MagneticFieldWrapper.cpp index 33f15fa6586..757cac35fea 100644 --- a/Examples/Algorithms/Geant4/src/MagneticFieldWrapper.cpp +++ b/Examples/Algorithms/Geant4/src/MagneticFieldWrapper.cpp @@ -12,21 +12,20 @@ #include "Acts/Definitions/Units.hpp" #include "Acts/MagneticField/MagneticFieldContext.hpp" #include "Acts/MagneticField/MagneticFieldProvider.hpp" -#include "Acts/Utilities/Result.hpp" -#include <ostream> -#include <system_error> #include <utility> #include <G4SystemOfUnits.hh> #include <G4UnitsTable.hh> -ActsExamples::MagneticFieldWrapper::MagneticFieldWrapper( +namespace ActsExamples::Geant4 { + +MagneticFieldWrapper::MagneticFieldWrapper( const Config& cfg, std::unique_ptr<const Acts::Logger> logger) : G4MagneticField(), m_cfg(cfg), m_logger(std::move(logger)) {} -void ActsExamples::MagneticFieldWrapper::GetFieldValue(const G4double Point[4], - G4double* Bfield) const { +void MagneticFieldWrapper::GetFieldValue(const G4double Point[4], + G4double* Bfield) const { constexpr double convertLength = CLHEP::mm / Acts::UnitConstants::mm; constexpr double convertField = CLHEP::tesla / Acts::UnitConstants::T; @@ -47,3 +46,5 @@ void ActsExamples::MagneticFieldWrapper::GetFieldValue(const G4double Point[4], Bfield[1] = convertField * field[1]; Bfield[2] = convertField * field[2]; } + +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/src/MaterialPhysicsList.cpp b/Examples/Algorithms/Geant4/src/MaterialPhysicsList.cpp index d115e9e1794..bc0d228e87d 100644 --- a/Examples/Algorithms/Geant4/src/MaterialPhysicsList.cpp +++ b/Examples/Algorithms/Geant4/src/MaterialPhysicsList.cpp @@ -15,27 +15,31 @@ #include <G4ProcessVector.hh> #include <G4UnitsTable.hh> -ActsExamples::MaterialPhysicsList::MaterialPhysicsList( +namespace ActsExamples::Geant4 { + +MaterialPhysicsList::MaterialPhysicsList( std::unique_ptr<const Acts::Logger> logger) : G4VUserPhysicsList(), m_logger(std::move(logger)) { defaultCutValue = 1.0 * CLHEP::cm; } -void ActsExamples::MaterialPhysicsList::ConstructParticle() { +void MaterialPhysicsList::ConstructParticle() { ACTS_DEBUG("Construct Geantinos and Charged Geantinos."); G4Geantino::GeantinoDefinition(); G4ChargedGeantino::ChargedGeantinoDefinition(); } -void ActsExamples::MaterialPhysicsList::ConstructProcess() { +void MaterialPhysicsList::ConstructProcess() { ACTS_DEBUG("Adding Transport as single supperted Process."); AddTransportation(); } -void ActsExamples::MaterialPhysicsList::SetCuts() { +void MaterialPhysicsList::SetCuts() { SetCutsWithDefault(); if (verboseLevel > 0) { DumpCutValuesTable(); } } + +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/src/MaterialSteppingAction.cpp b/Examples/Algorithms/Geant4/src/MaterialSteppingAction.cpp index c4f0e6528bd..6773079dcd7 100644 --- a/Examples/Algorithms/Geant4/src/MaterialSteppingAction.cpp +++ b/Examples/Algorithms/Geant4/src/MaterialSteppingAction.cpp @@ -24,14 +24,15 @@ #include <G4RunManager.hh> #include <G4Step.hh> -ActsExamples::MaterialSteppingAction::MaterialSteppingAction( +namespace ActsExamples::Geant4 { + +MaterialSteppingAction::MaterialSteppingAction( const Config& cfg, std::unique_ptr<const Acts::Logger> logger) : G4UserSteppingAction(), m_cfg(cfg), m_logger(std::move(logger)) {} -ActsExamples::MaterialSteppingAction::~MaterialSteppingAction() = default; +MaterialSteppingAction::~MaterialSteppingAction() = default; -void ActsExamples::MaterialSteppingAction::UserSteppingAction( - const G4Step* step) { +void MaterialSteppingAction::UserSteppingAction(const G4Step* step) { // Get the material & check if it is present G4Material* material = step->GetPreStepPoint()->GetMaterial(); if (material == nullptr) { @@ -111,3 +112,5 @@ void ActsExamples::MaterialSteppingAction::UserSteppingAction( mInteraction); } } + +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/src/ParticleKillAction.cpp b/Examples/Algorithms/Geant4/src/ParticleKillAction.cpp index 5090a74dafa..bbc55390c69 100644 --- a/Examples/Algorithms/Geant4/src/ParticleKillAction.cpp +++ b/Examples/Algorithms/Geant4/src/ParticleKillAction.cpp @@ -23,11 +23,13 @@ #include <G4UnitsTable.hh> #include <G4VPhysicalVolume.hh> -ActsExamples::ParticleKillAction::ParticleKillAction( +namespace ActsExamples::Geant4 { + +ParticleKillAction::ParticleKillAction( const Config& cfg, std::unique_ptr<const Acts::Logger> logger) : G4UserSteppingAction(), m_cfg(cfg), m_logger(std::move(logger)) {} -void ActsExamples::ParticleKillAction::UserSteppingAction(const G4Step* step) { +void ParticleKillAction::UserSteppingAction(const G4Step* step) { constexpr double convertLength = Acts::UnitConstants::mm / CLHEP::mm; constexpr double convertTime = Acts::UnitConstants::ns / CLHEP::ns; @@ -72,3 +74,5 @@ void ActsExamples::ParticleKillAction::UserSteppingAction(const G4Step* step) { } } } + +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/src/ParticleTrackingAction.cpp b/Examples/Algorithms/Geant4/src/ParticleTrackingAction.cpp index ba59debc893..886646a3655 100644 --- a/Examples/Algorithms/Geant4/src/ParticleTrackingAction.cpp +++ b/Examples/Algorithms/Geant4/src/ParticleTrackingAction.cpp @@ -25,12 +25,13 @@ #include <G4Track.hh> #include <G4UnitsTable.hh> -ActsExamples::ParticleTrackingAction::ParticleTrackingAction( +namespace ActsExamples::Geant4 { + +ParticleTrackingAction::ParticleTrackingAction( const Config& cfg, std::unique_ptr<const Acts::Logger> logger) : G4UserTrackingAction(), m_cfg(cfg), m_logger(std::move(logger)) {} -void ActsExamples::ParticleTrackingAction::PreUserTrackingAction( - const G4Track* aTrack) { +void ParticleTrackingAction::PreUserTrackingAction(const G4Track* aTrack) { // If this is not the case, there are unhandled cases of particle stopping in // the SensitiveSteppingAction // TODO We could also merge the remaining hits to a hit here, but it would be @@ -66,8 +67,7 @@ void ActsExamples::ParticleTrackingAction::PreUserTrackingAction( } } -void ActsExamples::ParticleTrackingAction::PostUserTrackingAction( - const G4Track* aTrack) { +void ParticleTrackingAction::PostUserTrackingAction(const G4Track* aTrack) { // The initial particle maybe was not registered because of a particle ID // collision if (!eventStore().trackIdMapping.contains(aTrack->GetTrackID())) { @@ -83,7 +83,7 @@ void ActsExamples::ParticleTrackingAction::PostUserTrackingAction( if (!m_cfg.keepParticlesWithoutHits && !hasHits) { [[maybe_unused]] auto n = eventStore().particlesSimulated.erase( - ActsExamples::SimParticle(barcode, Acts::PdgParticle::eInvalid)); + SimParticle(barcode, Acts::PdgParticle::eInvalid)); assert(n == 1); return; } @@ -107,8 +107,8 @@ void ActsExamples::ParticleTrackingAction::PostUserTrackingAction( } } -ActsExamples::SimParticleState ActsExamples::ParticleTrackingAction::convert( - const G4Track& aTrack, SimBarcode particleId) const { +SimParticleState ParticleTrackingAction::convert(const G4Track& aTrack, + SimBarcode particleId) const { // Unit conversions G4->::ACTS constexpr double convertTime = Acts::UnitConstants::ns / CLHEP::ns; constexpr double convertLength = Acts::UnitConstants::mm / CLHEP::mm; @@ -147,9 +147,8 @@ ActsExamples::SimParticleState ActsExamples::ParticleTrackingAction::convert( return aParticle; } -std::optional<ActsExamples::SimBarcode> -ActsExamples::ParticleTrackingAction::makeParticleId(G4int trackId, - G4int parentId) const { +std::optional<SimBarcode> ParticleTrackingAction::makeParticleId( + G4int trackId, G4int parentId) const { // We already have this particle registered (it is one of the input particles // or we are making a final particle state) if (eventStore().trackIdMapping.contains(trackId)) { @@ -174,3 +173,5 @@ ActsExamples::ParticleTrackingAction::makeParticleId(G4int trackId, return pid; } + +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/src/PhysicsListFactory.cpp b/Examples/Algorithms/Geant4/src/PhysicsListFactory.cpp index 95866efa188..e1b88971b5b 100644 --- a/Examples/Algorithms/Geant4/src/PhysicsListFactory.cpp +++ b/Examples/Algorithms/Geant4/src/PhysicsListFactory.cpp @@ -10,7 +10,7 @@ #include <G4VUserPhysicsList.hh> -namespace ActsExamples { +namespace ActsExamples::Geant4 { PhysicsListFactoryFunction::PhysicsListFactoryFunction(Function function) : m_function(std::move(function)) {} @@ -20,4 +20,4 @@ std::unique_ptr<G4VUserPhysicsList> PhysicsListFactoryFunction::factorize() return m_function(); } -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/src/RegionCreator.cpp b/Examples/Algorithms/Geant4/src/RegionCreator.cpp index 4e3384a98b7..c38dcf83078 100644 --- a/Examples/Algorithms/Geant4/src/RegionCreator.cpp +++ b/Examples/Algorithms/Geant4/src/RegionCreator.cpp @@ -13,7 +13,7 @@ #include <G4ProductionCuts.hh> #include <G4Region.hh> -namespace ActsExamples { +namespace ActsExamples::Geant4 { RegionCreator::RegionCreator(const Config& cfg, std::string name, Acts::Logging::Level level) @@ -21,7 +21,7 @@ RegionCreator::RegionCreator(const Config& cfg, std::string name, m_cfg(cfg), m_logger(Acts::getDefaultLogger(m_name, level)) {} -void RegionCreator::Construct() { +void RegionCreator::construct() { // create a new G4Region G4Region* region = new G4Region(m_name); @@ -68,4 +68,4 @@ void RegionCreator::Construct() { region->SetProductionCuts(cuts); } -} // namespace ActsExamples +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/src/SensitiveSteppingAction.cpp b/Examples/Algorithms/Geant4/src/SensitiveSteppingAction.cpp index 17df42bdb21..098cce7b3aa 100644 --- a/Examples/Algorithms/Geant4/src/SensitiveSteppingAction.cpp +++ b/Examples/Algorithms/Geant4/src/SensitiveSteppingAction.cpp @@ -13,7 +13,6 @@ #include "Acts/Geometry/GeometryIdentifier.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Utilities/MultiIndex.hpp" -#include "ActsExamples/EventData/SimHit.hpp" #include "ActsExamples/Geant4/EventStore.hpp" #include "ActsExamples/Geant4/SensitiveSurfaceMapper.hpp" #include "ActsFatras/EventData/Barcode.hpp" @@ -33,8 +32,6 @@ #include <G4VTouchable.hh> #include <boost/version.hpp> -class G4PrimaryParticle; - #if BOOST_VERSION >= 107800 #include <boost/describe.hpp> @@ -95,12 +92,13 @@ ActsFatras::Hit hitFromStep(const G4StepPoint* preStepPoint, } } // namespace -ActsExamples::SensitiveSteppingAction::SensitiveSteppingAction( +namespace ActsExamples::Geant4 { + +SensitiveSteppingAction::SensitiveSteppingAction( const Config& cfg, std::unique_ptr<const Acts::Logger> logger) : G4UserSteppingAction(), m_cfg(cfg), m_logger(std::move(logger)) {} -void ActsExamples::SensitiveSteppingAction::UserSteppingAction( - const G4Step* step) { +void SensitiveSteppingAction::UserSteppingAction(const G4Step* step) { // Unit conversions G4->::ACTS static constexpr double convertLength = Acts::UnitConstants::mm / CLHEP::mm; @@ -279,3 +277,5 @@ void ActsExamples::SensitiveSteppingAction::UserSteppingAction( assert(false && "should never reach this"); } + +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/src/SensitiveSurfaceMapper.cpp b/Examples/Algorithms/Geant4/src/SensitiveSurfaceMapper.cpp index 2fd1a924d94..924a898c238 100644 --- a/Examples/Algorithms/Geant4/src/SensitiveSurfaceMapper.cpp +++ b/Examples/Algorithms/Geant4/src/SensitiveSurfaceMapper.cpp @@ -63,6 +63,7 @@ struct access<Eigen::Matrix<T, D, 1>, Index> { } // namespace boost::geometry::traits namespace { + void writeG4Polyhedron( Acts::IVisualization3D& visualizer, const G4Polyhedron& polyhedron, const Acts::Transform3& trafo = Acts::Transform3::Identity(), @@ -89,10 +90,12 @@ void writeG4Polyhedron( visualizer.face(faces, color); } } + } // namespace -std::vector<const Acts::Surface*> -ActsExamples::SensitiveCandidates::queryPosition( +namespace ActsExamples::Geant4 { + +std::vector<const Acts::Surface*> SensitiveCandidates::queryPosition( const Acts::GeometryContext& gctx, const Acts::Vector3& position) const { std::vector<const Acts::Surface*> surfaces; @@ -119,8 +122,7 @@ ActsExamples::SensitiveCandidates::queryPosition( return surfaces; } -std::vector<const Acts::Surface*> ActsExamples::SensitiveCandidates::queryAll() - const { +std::vector<const Acts::Surface*> SensitiveCandidates::queryAll() const { std::vector<const Acts::Surface*> surfaces; const bool restrictToSensitives = true; @@ -130,11 +132,11 @@ std::vector<const Acts::Surface*> ActsExamples::SensitiveCandidates::queryAll() return surfaces; } -ActsExamples::SensitiveSurfaceMapper::SensitiveSurfaceMapper( +SensitiveSurfaceMapper::SensitiveSurfaceMapper( const Config& cfg, std::unique_ptr<const Acts::Logger> logger) : m_cfg(cfg), m_logger(std::move(logger)) {} -void ActsExamples::SensitiveSurfaceMapper::remapSensitiveNames( +void SensitiveSurfaceMapper::remapSensitiveNames( State& state, const Acts::GeometryContext& gctx, G4VPhysicalVolume* g4PhysicalVolume, const Acts::Transform3& motherTransform) const { @@ -291,7 +293,7 @@ void ActsExamples::SensitiveSurfaceMapper::remapSensitiveNames( state.g4VolumeToSurfaces.insert({g4PhysicalVolume, mappedSurface}); } -bool ActsExamples::SensitiveSurfaceMapper::checkMapping( +bool SensitiveSurfaceMapper::checkMapping( const State& state, const Acts::GeometryContext& gctx, bool writeMissingG4VolsAsObj, bool writeMissingSurfacesAsObj) const { auto allSurfaces = m_cfg.candidateSurfaces->queryAll(); @@ -343,3 +345,5 @@ bool ActsExamples::SensitiveSurfaceMapper::checkMapping( return missing.empty(); } + +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/src/SimParticleTranslation.cpp b/Examples/Algorithms/Geant4/src/SimParticleTranslation.cpp index 8b8156ff3e4..e505edafa76 100644 --- a/Examples/Algorithms/Geant4/src/SimParticleTranslation.cpp +++ b/Examples/Algorithms/Geant4/src/SimParticleTranslation.cpp @@ -28,19 +28,17 @@ #include <G4PrimaryVertex.hh> #include <G4UnitsTable.hh> -namespace ActsExamples { -class WhiteBoard; -} // namespace ActsExamples +namespace ActsExamples::Geant4 { -ActsExamples::SimParticleTranslation::SimParticleTranslation( +SimParticleTranslation::SimParticleTranslation( const Config& cfg, std::unique_ptr<const Acts::Logger> logger) : G4VUserPrimaryGeneratorAction(), m_cfg(cfg), m_logger(std::move(logger)) {} -ActsExamples::SimParticleTranslation::~SimParticleTranslation() = default; +SimParticleTranslation::~SimParticleTranslation() = default; -void ActsExamples::SimParticleTranslation::GeneratePrimaries(G4Event* anEvent) { +void SimParticleTranslation::GeneratePrimaries(G4Event* anEvent) { anEvent->SetEventID(m_eventNr++); unsigned int eventID = anEvent->GetEventID(); @@ -158,3 +156,5 @@ void ActsExamples::SimParticleTranslation::GeneratePrimaries(G4Event* anEvent) { << lastVertex->transpose()); } } + +} // namespace ActsExamples::Geant4 diff --git a/Examples/Algorithms/Geant4/src/TelescopeG4DetectorConstruction.cpp b/Examples/Algorithms/Geant4/src/TelescopeG4DetectorConstruction.cpp index 423acf7e2a5..9d309932fbe 100644 --- a/Examples/Algorithms/Geant4/src/TelescopeG4DetectorConstruction.cpp +++ b/Examples/Algorithms/Geant4/src/TelescopeG4DetectorConstruction.cpp @@ -26,18 +26,18 @@ #include "G4RunManager.hh" #include "G4SystemOfUnits.hh" -ActsExamples::Telescope::TelescopeG4DetectorConstruction:: - TelescopeG4DetectorConstruction( - const TelescopeDetector::Config& cfg, - std::vector<std::shared_ptr<RegionCreator>> regionCreators) +namespace ActsExamples { + +Telescope::TelescopeG4DetectorConstruction::TelescopeG4DetectorConstruction( + const TelescopeDetector::Config& cfg, + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators) : m_cfg(cfg), m_regionCreators(std::move(regionCreators)) { throw_assert(cfg.surfaceType == static_cast<int>(Telescope::TelescopeSurfaceType::Plane), "only plan is supported right now"); } -G4VPhysicalVolume* -ActsExamples::Telescope::TelescopeG4DetectorConstruction::Construct() { +G4VPhysicalVolume* Telescope::TelescopeG4DetectorConstruction::Construct() { if (m_world != nullptr) { return m_world; } @@ -162,21 +162,22 @@ ActsExamples::Telescope::TelescopeG4DetectorConstruction::Construct() { // Create regions for (const auto& regionCreator : m_regionCreators) { - regionCreator->Construct(); + regionCreator->construct(); } return m_world; } -ActsExamples::Telescope::TelescopeG4DetectorConstructionFactory:: +Telescope::TelescopeG4DetectorConstructionFactory:: TelescopeG4DetectorConstructionFactory( const TelescopeDetector::Config& cfg, - std::vector<std::shared_ptr<RegionCreator>> regionCreators) + std::vector<std::shared_ptr<Geant4::RegionCreator>> regionCreators) : m_cfg(cfg), m_regionCreators(std::move(regionCreators)) {} std::unique_ptr<G4VUserDetectorConstruction> -ActsExamples::Telescope::TelescopeG4DetectorConstructionFactory::factorize() - const { +Telescope::TelescopeG4DetectorConstructionFactory::factorize() const { return std::make_unique<TelescopeG4DetectorConstruction>(m_cfg, m_regionCreators); } + +} // namespace ActsExamples diff --git a/Examples/Algorithms/Geant4HepMC/include/ActsExamples/Geant4HepMC/EventRecording.hpp b/Examples/Algorithms/Geant4HepMC/include/ActsExamples/Geant4HepMC/EventRecording.hpp index 256a82a4471..6f45940182c 100644 --- a/Examples/Algorithms/Geant4HepMC/include/ActsExamples/Geant4HepMC/EventRecording.hpp +++ b/Examples/Algorithms/Geant4HepMC/include/ActsExamples/Geant4HepMC/EventRecording.hpp @@ -8,8 +8,6 @@ #pragma once -#include "Acts/Definitions/Algebra.hpp" -#include "Acts/Propagator/MaterialInteractor.hpp" #include "Acts/Utilities/Logger.hpp" #include "ActsExamples/EventData/SimParticle.hpp" #include "ActsExamples/Framework/DataHandle.hpp" @@ -24,9 +22,12 @@ class G4RunManager; -namespace ActsExamples { - +namespace ActsExamples::Geant4 { class DetectorConstructionFactory; +class RegionCreator; +} // namespace ActsExamples::Geant4 + +namespace ActsExamples { class EventRecording final : public ActsExamples::IAlgorithm { public: @@ -37,7 +38,8 @@ class EventRecording final : public ActsExamples::IAlgorithm { /// The recorded events output std::string outputHepMcTracks = "geant-outcome-tracks"; - std::shared_ptr<DetectorConstructionFactory> detectorConstructionFactory; + std::shared_ptr<Geant4::DetectorConstructionFactory> + detectorConstructionFactory; /// random number seed 1 int seed1 = 12345; diff --git a/Examples/Algorithms/Geant4HepMC/src/EventRecording.cpp b/Examples/Algorithms/Geant4HepMC/src/EventRecording.cpp index e4900f63c05..93c27b0c1c1 100644 --- a/Examples/Algorithms/Geant4HepMC/src/EventRecording.cpp +++ b/Examples/Algorithms/Geant4HepMC/src/EventRecording.cpp @@ -11,9 +11,7 @@ #include "ActsExamples/EventData/SimParticle.hpp" #include "ActsExamples/Framework/WhiteBoard.hpp" #include "ActsExamples/Geant4/DetectorConstructionFactory.hpp" -#include "ActsExamples/Geant4/GdmlDetectorConstruction.hpp" -#include <iostream> #include <stdexcept> #include <FTFP_BERT.hh> @@ -26,14 +24,15 @@ #include "RunAction.hpp" #include "SteppingAction.hpp" -ActsExamples::EventRecording::~EventRecording() { +namespace ActsExamples { + +EventRecording::~EventRecording() { m_runManager = nullptr; } -ActsExamples::EventRecording::EventRecording( - const ActsExamples::EventRecording::Config& config, - Acts::Logging::Level level) - : ActsExamples::IAlgorithm("EventRecording", level), +EventRecording::EventRecording(const EventRecording::Config& config, + Acts::Logging::Level level) + : IAlgorithm("EventRecording", level), m_cfg(config), m_runManager(std::make_unique<G4RunManager>()) { if (m_cfg.inputParticles.empty()) { @@ -42,7 +41,7 @@ ActsExamples::EventRecording::EventRecording( if (m_cfg.outputHepMcTracks.empty()) { throw std::invalid_argument("Missing output event collection"); } - if (!m_cfg.detectorConstructionFactory) { + if (m_cfg.detectorConstructionFactory == nullptr) { throw std::invalid_argument("Missing detector construction object"); } @@ -55,19 +54,17 @@ ActsExamples::EventRecording::EventRecording( m_runManager->SetUserInitialization( m_cfg.detectorConstructionFactory->factorize().release()); m_runManager->SetUserInitialization(new FTFP_BERT); - m_runManager->SetUserAction(new ActsExamples::Geant4::HepMC3::RunAction()); + m_runManager->SetUserAction(new Geant4::HepMC3::RunAction()); m_runManager->SetUserAction( - new ActsExamples::Geant4::HepMC3::EventAction(m_cfg.processesCombine)); + new Geant4::HepMC3::EventAction(m_cfg.processesCombine)); m_runManager->SetUserAction( - new ActsExamples::Geant4::HepMC3::PrimaryGeneratorAction(m_cfg.seed1, - m_cfg.seed2)); + new Geant4::HepMC3::PrimaryGeneratorAction(m_cfg.seed1, m_cfg.seed2)); m_runManager->SetUserAction( - new ActsExamples::Geant4::HepMC3::SteppingAction(m_cfg.processesReject)); + new Geant4::HepMC3::SteppingAction(m_cfg.processesReject)); m_runManager->Initialize(); } -ActsExamples::ProcessCode ActsExamples::EventRecording::execute( - const ActsExamples::AlgorithmContext& context) const { +ProcessCode EventRecording::execute(const AlgorithmContext& context) const { // ensure exclusive access to the geant run manager std::lock_guard<std::mutex> guard(m_runManagerLock); @@ -80,8 +77,8 @@ ActsExamples::ProcessCode ActsExamples::EventRecording::execute( for (const auto& part : initialParticles) { // Prepare the particle gun - ActsExamples::Geant4::HepMC3::PrimaryGeneratorAction::instance() - ->prepareParticleGun(part); + Geant4::HepMC3::PrimaryGeneratorAction::instance()->prepareParticleGun( + part); // Begin with the simulation m_runManager->BeamOn(1); @@ -92,8 +89,7 @@ ActsExamples::ProcessCode ActsExamples::EventRecording::execute( } // Set event start time - HepMC3::GenEvent event = - ActsExamples::Geant4::HepMC3::EventAction::instance()->event(); + HepMC3::GenEvent event = Geant4::HepMC3::EventAction::instance()->event(); HepMC3::FourVector shift(0., 0., 0., part.time() / Acts::UnitConstants::mm); event.shift_position_by(shift); @@ -174,5 +170,7 @@ ActsExamples::ProcessCode ActsExamples::EventRecording::execute( // Write the recorded material to the event store m_outputEvents(context, std::move(events)); - return ActsExamples::ProcessCode::SUCCESS; + return ProcessCode::SUCCESS; } + +} // namespace ActsExamples diff --git a/Examples/Python/src/Geant4Component.cpp b/Examples/Python/src/Geant4Component.cpp index 1a7edd58e7f..abba9cefe98 100644 --- a/Examples/Python/src/Geant4Component.cpp +++ b/Examples/Python/src/Geant4Component.cpp @@ -16,7 +16,6 @@ #include "Acts/Plugins/Python/Utilities.hpp" #include "Acts/Surfaces/SurfaceVisitorConcept.hpp" #include "Acts/Utilities/Logger.hpp" -#include "ActsExamples/Framework/AlgorithmContext.hpp" #include "ActsExamples/Framework/IContextDecorator.hpp" #include "ActsExamples/Geant4/DetectorConstructionFactory.hpp" #include "ActsExamples/Geant4/GdmlDetectorConstruction.hpp" @@ -65,7 +64,8 @@ namespace Acts::Python { void addGeant4HepMC3(Context& ctx); } -struct ExperimentalSensitiveCandidates : public SensitiveCandidatesBase { +struct ExperimentalSensitiveCandidates + : public Geant4::SensitiveCandidatesBase { std::shared_ptr<const Experimental::Detector> detector; /// Find the sensitive surfaces for a given position @@ -97,8 +97,8 @@ struct ExperimentalSensitiveCandidates : public SensitiveCandidatesBase { }; PYBIND11_MODULE(ActsPythonBindingsGeant4, mod) { - py::class_<DetectorConstructionFactory, - std::shared_ptr<DetectorConstructionFactory>>( + py::class_<Geant4::DetectorConstructionFactory, + std::shared_ptr<Geant4::DetectorConstructionFactory>>( mod, "DetectorConstructionFactory"); py::class_<Geant4Manager, std::unique_ptr<Geant4Manager, py::nodelete>>( @@ -129,14 +129,14 @@ PYBIND11_MODULE(ActsPythonBindingsGeant4, mod) { } { - using Config = SensitiveSurfaceMapper::Config; - using State = SensitiveSurfaceMapper::State; + using Config = Geant4::SensitiveSurfaceMapper::Config; + using State = Geant4::SensitiveSurfaceMapper::State; auto sm = - py::class_<SensitiveSurfaceMapper, - std::shared_ptr<SensitiveSurfaceMapper>>( + py::class_<Geant4::SensitiveSurfaceMapper, + std::shared_ptr<Geant4::SensitiveSurfaceMapper>>( mod, "SensitiveSurfaceMapper") .def(py::init([](const Config& cfg, Acts::Logging::Level level) { - return std::make_shared<SensitiveSurfaceMapper>( + return std::make_shared<Geant4::SensitiveSurfaceMapper>( cfg, getDefaultLogger("SensitiveSurfaceMapper", level)); })); @@ -155,10 +155,10 @@ PYBIND11_MODULE(ActsPythonBindingsGeant4, mod) { // Set a new surface finder Config ccfg = cfg; auto candidateSurfaces = - std::make_shared<ActsExamples::SensitiveCandidates>(); + std::make_shared<Geant4::SensitiveCandidates>(); candidateSurfaces->trackingGeometry = tGeometry; ccfg.candidateSurfaces = candidateSurfaces; - return std::make_shared<SensitiveSurfaceMapper>( + return std::make_shared<Geant4::SensitiveSurfaceMapper>( ccfg, getDefaultLogger("SensitiveSurfaceMapper", level)); }); @@ -173,20 +173,21 @@ PYBIND11_MODULE(ActsPythonBindingsGeant4, mod) { std::make_shared<ExperimentalSensitiveCandidates>(); candidateSurfaces->detector = detector; ccfg.candidateSurfaces = candidateSurfaces; - return std::make_shared<SensitiveSurfaceMapper>( + return std::make_shared<Geant4::SensitiveSurfaceMapper>( ccfg, getDefaultLogger("SensitiveSurfaceMapper", level)); }); sm.def( "remapSensitiveNames", - [](SensitiveSurfaceMapper& self, State& state, GeometryContext& gctx, - DetectorConstructionFactory& factory, Transform3& transform) { + [](Geant4::SensitiveSurfaceMapper& self, State& state, + GeometryContext& gctx, Geant4::DetectorConstructionFactory& factory, + Transform3& transform) { return self.remapSensitiveNames( state, gctx, factory.factorize()->Construct(), transform); }, "state"_a, "gctx"_a, "g4physicalVolume"_a, "motherTransform"_a); - sm.def("checkMapping", &SensitiveSurfaceMapper::checkMapping, "state"_a, - "gctx"_a, "writeMappedAsObj"_a, "writeMissingAsObj"_a); + sm.def("checkMapping", &Geant4::SensitiveSurfaceMapper::checkMapping, + "state"_a, "gctx"_a, "writeMappedAsObj"_a, "writeMissingAsObj"_a); } { @@ -237,27 +238,28 @@ PYBIND11_MODULE(ActsPythonBindingsGeant4, mod) { } { - py::class_<GdmlDetectorConstructionFactory, DetectorConstructionFactory, + py::class_<GdmlDetectorConstructionFactory, + Geant4::DetectorConstructionFactory, std::shared_ptr<GdmlDetectorConstructionFactory>>( mod, "GdmlDetectorConstructionFactory") .def(py::init<std::string, - std::vector<std::shared_ptr<RegionCreator>>>(), + std::vector<std::shared_ptr<Geant4::RegionCreator>>>(), py::arg("path"), py::arg("regionCreators") = - std::vector<std::shared_ptr<RegionCreator>>()); + std::vector<std::shared_ptr<Geant4::RegionCreator>>()); } { py::class_< Telescope::TelescopeG4DetectorConstructionFactory, - DetectorConstructionFactory, + Geant4::DetectorConstructionFactory, std::shared_ptr<Telescope::TelescopeG4DetectorConstructionFactory>>( mod, "TelescopeG4DetectorConstructionFactory") .def(py::init<const Telescope::TelescopeDetector::Config&, - std::vector<std::shared_ptr<RegionCreator>>>(), + std::vector<std::shared_ptr<Geant4::RegionCreator>>>(), py::arg("cfg"), py::arg("regionCreators") = - std::vector<std::shared_ptr<RegionCreator>>()); + std::vector<std::shared_ptr<Geant4::RegionCreator>>()); } { @@ -412,7 +414,7 @@ PYBIND11_MODULE(ActsPythonBindingsGeant4, mod) { } { - using Tool = RegionCreator; + using Tool = Geant4::RegionCreator; using Config = Tool::Config; auto tool = py::class_<Tool, std::shared_ptr<Tool>>(mod, "RegionCreator") .def(py::init<const Config&, std::string, Logging::Level>(), diff --git a/Examples/Python/src/Geant4DD4hepComponent.cpp b/Examples/Python/src/Geant4DD4hepComponent.cpp index 16ed3b40223..f8dec7d35d1 100644 --- a/Examples/Python/src/Geant4DD4hepComponent.cpp +++ b/Examples/Python/src/Geant4DD4hepComponent.cpp @@ -8,7 +8,6 @@ #include "ActsExamples/DD4hepDetector/DD4hepDetector.hpp" #include "ActsExamples/DDG4/DDG4DetectorConstruction.hpp" -#include "ActsExamples/Framework/ProcessCode.hpp" #include "ActsExamples/Geant4/RegionCreator.hpp" #include <G4VUserDetectorConstruction.hh> @@ -25,12 +24,13 @@ using namespace Acts; PYBIND11_MODULE(ActsPythonBindingsDDG4, m) { py::module_::import("acts.ActsPythonBindingsGeant4"); - py::class_<DDG4DetectorConstructionFactory, DetectorConstructionFactory, + py::class_<DDG4DetectorConstructionFactory, + Geant4::DetectorConstructionFactory, std::shared_ptr<DDG4DetectorConstructionFactory>>( m, "DDG4DetectorConstructionFactory") .def(py::init<std::shared_ptr<DD4hep::DD4hepDetector>, - std::vector<std::shared_ptr<RegionCreator>>>(), + std::vector<std::shared_ptr<Geant4::RegionCreator>>>(), py::arg("detector"), py::arg("regionCreators") = - std::vector<std::shared_ptr<RegionCreator>>()); + std::vector<std::shared_ptr<Geant4::RegionCreator>>()); } diff --git a/Examples/Python/src/Geant4GeoModelComponent.cpp b/Examples/Python/src/Geant4GeoModelComponent.cpp index 80f6f89eec8..d9c372984db 100644 --- a/Examples/Python/src/Geant4GeoModelComponent.cpp +++ b/Examples/Python/src/Geant4GeoModelComponent.cpp @@ -6,7 +6,6 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. -#include "ActsExamples/Framework/ProcessCode.hpp" #include "ActsExamples/Geant4/DetectorConstructionFactory.hpp" #include "ActsExamples/Geant4/RegionCreator.hpp" #include "ActsExamples/GeoModelG4/GeoModelDetectorConstruction.hpp" @@ -25,12 +24,13 @@ using namespace Acts; PYBIND11_MODULE(ActsPythonBindingsGeoModelG4, m) { py::module_::import("acts.ActsPythonBindingsGeant4"); - py::class_<GeoModelDetectorConstructionFactory, DetectorConstructionFactory, + py::class_<GeoModelDetectorConstructionFactory, + Geant4::DetectorConstructionFactory, std::shared_ptr<GeoModelDetectorConstructionFactory>>( m, "GeoModelDetectorConstructionFactory") .def(py::init<const Acts::GeoModelTree&, - std::vector<std::shared_ptr<RegionCreator>>>(), + std::vector<std::shared_ptr<Geant4::RegionCreator>>>(), py::arg("geoModelTree"), py::arg("regionCreators") = - std::vector<std::shared_ptr<RegionCreator>>()); + std::vector<std::shared_ptr<Geant4::RegionCreator>>()); } diff --git a/Plugins/Geant4/include/Acts/Plugins/Geant4/Geant4DetectorSurfaceFactory.hpp b/Plugins/Geant4/include/Acts/Plugins/Geant4/Geant4DetectorSurfaceFactory.hpp index d06c77412e4..e5868effd19 100644 --- a/Plugins/Geant4/include/Acts/Plugins/Geant4/Geant4DetectorSurfaceFactory.hpp +++ b/Plugins/Geant4/include/Acts/Plugins/Geant4/Geant4DetectorSurfaceFactory.hpp @@ -9,7 +9,6 @@ #pragma once #include "Acts/Definitions/Algebra.hpp" -#include "Acts/Definitions/Common.hpp" #include "Acts/Plugins/Geant4/Geant4PhysicalVolumeSelectors.hpp" #include "Acts/Surfaces/Surface.hpp" @@ -91,4 +90,5 @@ class Geant4DetectorSurfaceFactory { void construct(Cache& cache, const G4Transform3D& g4ToGlobal, const G4VPhysicalVolume& g4PhysVol, const Options& option); }; + } // namespace Acts diff --git a/Plugins/Geant4/src/Geant4DetectorElement.cpp b/Plugins/Geant4/src/Geant4DetectorElement.cpp index d5410d3b3de..179b351d50e 100644 --- a/Plugins/Geant4/src/Geant4DetectorElement.cpp +++ b/Plugins/Geant4/src/Geant4DetectorElement.cpp @@ -12,31 +12,36 @@ #include <utility> -Acts::Geant4DetectorElement::Geant4DetectorElement( - std::shared_ptr<Acts::Surface> surface, const G4VPhysicalVolume& g4physVol, - const Acts::Transform3& toGlobal, Acts::ActsScalar thickness) +namespace Acts { + +Geant4DetectorElement::Geant4DetectorElement(std::shared_ptr<Surface> surface, + const G4VPhysicalVolume& g4physVol, + const Transform3& toGlobal, + ActsScalar thickness) : m_surface(std::move(surface)), m_g4physVol(&g4physVol), m_toGlobal(toGlobal), m_thickness(thickness) {} -const Acts::Transform3& Acts::Geant4DetectorElement::transform( +const Transform3& Geant4DetectorElement::transform( const GeometryContext& /*gctx*/) const { return m_toGlobal; } -const Acts::Surface& Acts::Geant4DetectorElement::surface() const { +const Surface& Geant4DetectorElement::surface() const { return *m_surface; } -Acts::Surface& Acts::Geant4DetectorElement::surface() { +Surface& Geant4DetectorElement::surface() { return *m_surface; } -Acts::ActsScalar Acts::Geant4DetectorElement::thickness() const { +ActsScalar Geant4DetectorElement::thickness() const { return m_thickness; } -const G4VPhysicalVolume& Acts::Geant4DetectorElement::g4PhysicalVolume() const { +const G4VPhysicalVolume& Geant4DetectorElement::g4PhysicalVolume() const { return *m_g4physVol; } + +} // namespace Acts diff --git a/Plugins/GeoModel/include/Acts/Plugins/GeoModel/GeoModelDetectorElementITk.hpp b/Plugins/GeoModel/include/Acts/Plugins/GeoModel/GeoModelDetectorElementITk.hpp index 31cce3360e9..bbd12562eac 100644 --- a/Plugins/GeoModel/include/Acts/Plugins/GeoModel/GeoModelDetectorElementITk.hpp +++ b/Plugins/GeoModel/include/Acts/Plugins/GeoModel/GeoModelDetectorElementITk.hpp @@ -6,14 +6,6 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. -// This file is part of the Acts project. -// -// Copyright (C) 2024 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/Plugins/GeoModel/GeoModelDetectorElement.hpp" diff --git a/Plugins/GeoModel/src/GeoModelDetectorElementITk.cpp b/Plugins/GeoModel/src/GeoModelDetectorElementITk.cpp index f671386dec6..1f45a10d391 100644 --- a/Plugins/GeoModel/src/GeoModelDetectorElementITk.cpp +++ b/Plugins/GeoModel/src/GeoModelDetectorElementITk.cpp @@ -6,14 +6,6 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. -// This file is part of the Acts project. -// -// Copyright (C) 2024 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/. - #include "Acts/Plugins/GeoModel/GeoModelDetectorElementITk.hpp" #include "Acts/Surfaces/AnnulusBounds.hpp" diff --git a/Tests/UnitTests/Plugins/GeoModel/GeoModelDetectorElementITkTests.cpp b/Tests/UnitTests/Plugins/GeoModel/GeoModelDetectorElementITkTests.cpp index 0c945ebb6dd..f3e96e4a6f8 100644 --- a/Tests/UnitTests/Plugins/GeoModel/GeoModelDetectorElementITkTests.cpp +++ b/Tests/UnitTests/Plugins/GeoModel/GeoModelDetectorElementITkTests.cpp @@ -6,14 +6,6 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. -// This file is part of the Acts project. -// -// Copyright (C) 2024 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/. - #include <boost/test/unit_test.hpp> #include "Acts/Plugins/GeoModel/GeoModelDetectorElementITk.hpp" From 195dca3f46b12800f3f2ea408c905fa840be42fe Mon Sep 17 00:00:00 2001 From: Andreas Stefl <stefl.andreas@gmail.com> Date: Sat, 23 Nov 2024 22:54:43 +0100 Subject: [PATCH 42/49] refactor!: Single type/alias for intersection status (#3898) Seems more concise and consistent --- .../Acts/Navigation/DetectorNavigator.hpp | 4 +- .../Acts/Navigation/NavigationStream.hpp | 2 +- Core/include/Acts/Propagator/AtlasStepper.hpp | 2 +- .../Acts/Propagator/DirectNavigator.hpp | 12 ++-- Core/include/Acts/Propagator/EigenStepper.hpp | 2 +- .../Acts/Propagator/MultiEigenStepperLoop.hpp | 12 ++-- .../Acts/Propagator/MultiEigenStepperLoop.ipp | 9 ++- .../Acts/Propagator/MultiStepperAborters.hpp | 8 +-- Core/include/Acts/Propagator/Navigator.hpp | 10 +-- .../Acts/Propagator/StandardAborters.hpp | 2 +- .../Acts/Propagator/StraightLineStepper.hpp | 2 +- Core/include/Acts/Propagator/SympyStepper.hpp | 2 +- .../Acts/Propagator/TryAllNavigator.hpp | 8 +-- .../Acts/Propagator/detail/SteppingHelper.hpp | 10 +-- .../Acts/Surfaces/detail/PlanarHelper.hpp | 6 +- .../Acts/TrackFitting/GaussianSumFitter.hpp | 3 +- .../Acts/TrackFitting/detail/GsfActor.hpp | 31 ++++----- Core/include/Acts/Utilities/Intersection.hpp | 23 +++---- Core/src/Surfaces/ConeSurface.cpp | 16 ++--- Core/src/Surfaces/CylinderSurface.cpp | 22 +++--- Core/src/Surfaces/DiscSurface.cpp | 6 +- Core/src/Surfaces/IntersectionHelper2D.cpp | 18 ++--- Core/src/Surfaces/LineSurface.cpp | 8 +-- Core/src/Surfaces/PlaneSurface.cpp | 4 +- Core/src/Utilities/Intersection.cpp | 2 + .../Core/Propagator/MultiStepperTests.cpp | 20 +++--- .../Core/Propagator/NavigatorTests.cpp | 2 +- .../Core/Surfaces/CylinderSurfaceTests.cpp | 2 +- .../Core/Surfaces/DiscSurfaceTests.cpp | 2 +- .../Core/Surfaces/PlaneSurfaceTests.cpp | 2 +- .../Surfaces/SurfaceIntersectionTests.cpp | 67 +++++++------------ Tests/UnitTests/Core/Surfaces/SurfaceStub.hpp | 2 +- .../Core/Utilities/IntersectionTests.cpp | 55 +++++++-------- 33 files changed, 169 insertions(+), 207 deletions(-) diff --git a/Core/include/Acts/Navigation/DetectorNavigator.hpp b/Core/include/Acts/Navigation/DetectorNavigator.hpp index 0ffcf1446bc..3bc324e187f 100644 --- a/Core/include/Acts/Navigation/DetectorNavigator.hpp +++ b/Core/include/Acts/Navigation/DetectorNavigator.hpp @@ -223,7 +223,7 @@ class DetectorNavigator { ACTS_VERBOSE(volInfo(state) << posInfo(state, stepper) << "surface status is " << surfaceStatus); - if (surfaceStatus == Intersection3D::Status::reachable) { + if (surfaceStatus == IntersectionStatus::reachable) { ACTS_VERBOSE(volInfo(state) << posInfo(state, stepper) << "surface " << surface.center(state.geoContext).transpose() @@ -292,7 +292,7 @@ class DetectorNavigator { state.options.surfaceTolerance, logger()); // Check if we are at a surface - if (surfaceStatus == Intersection3D::Status::onSurface) { + if (surfaceStatus == IntersectionStatus::onSurface) { ACTS_VERBOSE(volInfo(state) << posInfo(state, stepper) << "landed on surface"); diff --git a/Core/include/Acts/Navigation/NavigationStream.hpp b/Core/include/Acts/Navigation/NavigationStream.hpp index 97e154214d7..d579c0d7392 100644 --- a/Core/include/Acts/Navigation/NavigationStream.hpp +++ b/Core/include/Acts/Navigation/NavigationStream.hpp @@ -9,13 +9,13 @@ #pragma once #include "Acts/Definitions/Algebra.hpp" +#include "Acts/Definitions/Tolerance.hpp" #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Geometry/Portal.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" #include "Acts/Utilities/Intersection.hpp" #include <span> -#include <tuple> #include <vector> namespace Acts { diff --git a/Core/include/Acts/Propagator/AtlasStepper.hpp b/Core/include/Acts/Propagator/AtlasStepper.hpp index 88cfd39e548..50fd78de145 100644 --- a/Core/include/Acts/Propagator/AtlasStepper.hpp +++ b/Core/include/Acts/Propagator/AtlasStepper.hpp @@ -419,7 +419,7 @@ class AtlasStepper { /// @param [in] boundaryTolerance The boundary check for this status update /// @param [in] surfaceTolerance Surface tolerance used for intersection /// @param [in] logger Logger instance to use - Intersection3D::Status updateSurfaceStatus( + IntersectionStatus updateSurfaceStatus( State& state, const Surface& surface, std::uint8_t index, Direction navDir, const BoundaryTolerance& boundaryTolerance, ActsScalar surfaceTolerance = s_onSurfaceTolerance, diff --git a/Core/include/Acts/Propagator/DirectNavigator.hpp b/Core/include/Acts/Propagator/DirectNavigator.hpp index 3356ab395c4..d2f66468168 100644 --- a/Core/include/Acts/Propagator/DirectNavigator.hpp +++ b/Core/include/Acts/Propagator/DirectNavigator.hpp @@ -9,20 +9,18 @@ #pragma once #include "Acts/Definitions/Direction.hpp" -#include "Acts/Geometry/BoundarySurfaceT.hpp" +#include "Acts/Definitions/Units.hpp" #include "Acts/Geometry/Layer.hpp" #include "Acts/Geometry/TrackingGeometry.hpp" #include "Acts/Geometry/TrackingVolume.hpp" +#include "Acts/Propagator/ConstrainedStep.hpp" #include "Acts/Propagator/NavigatorOptions.hpp" #include "Acts/Propagator/NavigatorStatistics.hpp" -#include "Acts/Propagator/Propagator.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Utilities/Intersection.hpp" #include "Acts/Utilities/Logger.hpp" -#include <algorithm> -#include <iterator> #include <limits> #include <memory> #include <vector> @@ -259,7 +257,7 @@ class DirectNavigator { state.stepping, surface, index, state.options.direction, BoundaryTolerance::Infinite(), state.options.surfaceTolerance, *m_logger); - if (surfaceStatus == Intersection3D::Status::unreachable) { + if (surfaceStatus == IntersectionStatus::unreachable) { ACTS_VERBOSE( "Surface not reachable anymore, switching to next one in " "sequence"); @@ -313,7 +311,7 @@ class DirectNavigator { state.stepping, surface, index, state.options.direction, BoundaryTolerance::Infinite(), state.options.surfaceTolerance, *m_logger); - if (surfaceStatus == Intersection3D::Status::onSurface) { + if (surfaceStatus == IntersectionStatus::onSurface) { // Set the current surface state.navigation.currentSurface = state.navigation.navSurface(); ACTS_VERBOSE("Current surface set to " @@ -326,7 +324,7 @@ class DirectNavigator { .at(state.navigation.surfaceIndex) ->geometryId()); } - } else if (surfaceStatus == Intersection3D::Status::reachable) { + } else if (surfaceStatus == IntersectionStatus::reachable) { ACTS_VERBOSE("Next surface reachable at distance " << stepper.outputStepSize(state.stepping)); } diff --git a/Core/include/Acts/Propagator/EigenStepper.hpp b/Core/include/Acts/Propagator/EigenStepper.hpp index 09df3ce3167..47f2db687b6 100644 --- a/Core/include/Acts/Propagator/EigenStepper.hpp +++ b/Core/include/Acts/Propagator/EigenStepper.hpp @@ -270,7 +270,7 @@ class EigenStepper { /// @param [in] boundaryTolerance The boundary check for this status update /// @param [in] surfaceTolerance Surface tolerance used for intersection /// @param [in] logger A @c Logger instance - Intersection3D::Status updateSurfaceStatus( + IntersectionStatus updateSurfaceStatus( State& state, const Surface& surface, std::uint8_t index, Direction navDir, const BoundaryTolerance& boundaryTolerance, ActsScalar surfaceTolerance = s_onSurfaceTolerance, diff --git a/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp b/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp index e21bdb2365e..dff30746cf6 100644 --- a/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp +++ b/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp @@ -197,7 +197,7 @@ class MultiEigenStepperLoop : public EigenStepper<extension_t> { struct Component { SingleState state; ActsScalar weight; - Intersection3D::Status status; + IntersectionStatus status; }; /// Particle hypothesis @@ -255,7 +255,7 @@ class MultiEigenStepperLoop : public EigenStepper<extension_t> { const auto& [weight, singlePars] = multipars[i]; components.push_back( {SingleState(gctx, bfield->makeCache(mctx), singlePars, ssize), - weight, Intersection3D::Status::onSurface}); + weight, IntersectionStatus::onSurface}); } if (std::get<2>(multipars.components().front())) { @@ -398,7 +398,7 @@ class MultiEigenStepperLoop : public EigenStepper<extension_t> { void removeMissedComponents(State& state) const { auto new_end = std::remove_if( state.components.begin(), state.components.end(), [](const auto& cmp) { - return cmp.status == Intersection3D::Status::missed; + return cmp.status == IntersectionStatus::missed; }); state.components.erase(new_end, state.components.end()); @@ -441,7 +441,7 @@ class MultiEigenStepperLoop : public EigenStepper<extension_t> { {SingleState(state.geoContext, SingleStepper::m_bField->makeCache(state.magContext), pars), - weight, Intersection3D::Status::onSurface}); + weight, IntersectionStatus::onSurface}); return ComponentProxy{state.components.back(), state}; } @@ -520,12 +520,12 @@ class MultiEigenStepperLoop : public EigenStepper<extension_t> { /// @param [in] boundaryTolerance The boundary check for this status update /// @param [in] surfaceTolerance Surface tolerance used for intersection /// @param [in] logger A @c Logger instance - Intersection3D::Status updateSurfaceStatus( + IntersectionStatus updateSurfaceStatus( State& state, const Surface& surface, std::uint8_t index, Direction navDir, const BoundaryTolerance& boundaryTolerance, ActsScalar surfaceTolerance = s_onSurfaceTolerance, const Logger& logger = getDummyLogger()) const { - using Status = Intersection3D::Status; + using Status = IntersectionStatus; std::array<int, 3> counts = {0, 0, 0}; diff --git a/Core/include/Acts/Propagator/MultiEigenStepperLoop.ipp b/Core/include/Acts/Propagator/MultiEigenStepperLoop.ipp index fab3e3f0779..67aa98e94bb 100644 --- a/Core/include/Acts/Propagator/MultiEigenStepperLoop.ipp +++ b/Core/include/Acts/Propagator/MultiEigenStepperLoop.ipp @@ -93,7 +93,7 @@ template <typename E, typename R> template <typename propagator_state_t, typename navigator_t> Result<double> MultiEigenStepperLoop<E, R>::step( propagator_state_t& state, const navigator_t& navigator) const { - using Status = Acts::Intersection3D::Status; + using Status = Acts::IntersectionStatus; State& stepping = state.stepping; auto& components = stepping.components; @@ -137,10 +137,9 @@ Result<double> MultiEigenStepperLoop<E, R>::step( // If at least one component is on a surface, we can remove all missed // components before the step. If not, we must keep them for the case that all // components miss and we need to retarget - const auto cmpsOnSurface = - std::count_if(components.cbegin(), components.cend(), [&](auto& cmp) { - return cmp.status == Intersection3D::Status::onSurface; - }); + const auto cmpsOnSurface = std::count_if( + components.cbegin(), components.cend(), + [&](auto& cmp) { return cmp.status == IntersectionStatus::onSurface; }); if (cmpsOnSurface > 0) { removeMissedComponents(stepping); diff --git a/Core/include/Acts/Propagator/MultiStepperAborters.hpp b/Core/include/Acts/Propagator/MultiStepperAborters.hpp index 0e28375df94..e42d3387e2f 100644 --- a/Core/include/Acts/Propagator/MultiStepperAborters.hpp +++ b/Core/include/Acts/Propagator/MultiStepperAborters.hpp @@ -59,12 +59,12 @@ struct MultiStepperSurfaceReached : public SurfaceReached { averageOnSurfaceTolerance) .closest(); - if (sIntersection.status() == Intersection3D::Status::onSurface) { + if (sIntersection.status() == IntersectionStatus::onSurface) { ACTS_VERBOSE( "MultiStepperSurfaceReached aborter | " "Reached target in average mode"); for (auto cmp : stepper.componentIterable(state.stepping)) { - cmp.status() = Intersection3D::Status::onSurface; + cmp.status() = IntersectionStatus::onSurface; } return true; @@ -84,10 +84,10 @@ struct MultiStepperSurfaceReached : public SurfaceReached { if (!SurfaceReached::checkAbort(singleState, singleStepper, navigator, logger)) { - cmp.status() = Acts::Intersection3D::Status::reachable; + cmp.status() = Acts::IntersectionStatus::reachable; reached = false; } else { - cmp.status() = Acts::Intersection3D::Status::onSurface; + cmp.status() = Acts::IntersectionStatus::onSurface; } } diff --git a/Core/include/Acts/Propagator/Navigator.hpp b/Core/include/Acts/Propagator/Navigator.hpp index a02e0958160..504912b507f 100644 --- a/Core/include/Acts/Propagator/Navigator.hpp +++ b/Core/include/Acts/Propagator/Navigator.hpp @@ -649,7 +649,7 @@ class Navigator { auto surfaceStatus = stepper.updateSurfaceStatus( state.stepping, *surface, intersection.index(), state.options.direction, BoundaryTolerance::None(), state.options.surfaceTolerance, logger()); - if (surfaceStatus == Intersection3D::Status::onSurface) { + if (surfaceStatus == IntersectionStatus::onSurface) { ACTS_VERBOSE(volInfo(state) << "Status Surface successfully hit, storing it."); // Set in navigation state, so actors and aborters can access it @@ -725,7 +725,7 @@ class Navigator { state.stepping, *surface, intersection.index(), state.options.direction, boundaryTolerance, state.options.surfaceTolerance, logger()); - if (surfaceStatus == Intersection3D::Status::reachable) { + if (surfaceStatus == IntersectionStatus::reachable) { ACTS_VERBOSE(volInfo(state) << "Surface reachable, step size updated to " << stepper.outputStepSize(state.stepping)); @@ -815,7 +815,7 @@ class Navigator { state.stepping, *layerSurface, intersection.index(), state.options.direction, BoundaryTolerance::None(), state.options.surfaceTolerance, logger()); - if (layerStatus == Intersection3D::Status::reachable) { + if (layerStatus == IntersectionStatus::reachable) { ACTS_VERBOSE(volInfo(state) << "Layer reachable, step size updated to " << stepper.outputStepSize(state.stepping)); return true; @@ -937,7 +937,7 @@ class Navigator { state.stepping, *boundarySurface, intersection.index(), state.options.direction, BoundaryTolerance::None(), state.options.surfaceTolerance, logger()); - if (boundaryStatus == Intersection3D::Status::reachable) { + if (boundaryStatus == IntersectionStatus::reachable) { ACTS_VERBOSE(volInfo(state) << "Boundary reachable, step size updated to " << stepper.outputStepSize(state.stepping)); @@ -1160,7 +1160,7 @@ class Navigator { state.options.direction, BoundaryTolerance::None(), state.options.surfaceTolerance, logger()); // the only advance could have been to the target - if (targetStatus == Intersection3D::Status::onSurface) { + if (targetStatus == IntersectionStatus::onSurface) { // set the target surface state.navigation.currentSurface = state.navigation.targetSurface; ACTS_VERBOSE(volInfo(state) diff --git a/Core/include/Acts/Propagator/StandardAborters.hpp b/Core/include/Acts/Propagator/StandardAborters.hpp index 706b0ce0697..271ebd85239 100644 --- a/Core/include/Acts/Propagator/StandardAborters.hpp +++ b/Core/include/Acts/Propagator/StandardAborters.hpp @@ -118,7 +118,7 @@ struct SurfaceReached { bool reached = false; - if (closest.status() == Intersection3D::Status::onSurface) { + if (closest.status() == IntersectionStatus::onSurface) { const double distance = closest.pathLength(); ACTS_VERBOSE( "SurfaceReached aborter | " diff --git a/Core/include/Acts/Propagator/StraightLineStepper.hpp b/Core/include/Acts/Propagator/StraightLineStepper.hpp index 18904797fdd..59f10b1d980 100644 --- a/Core/include/Acts/Propagator/StraightLineStepper.hpp +++ b/Core/include/Acts/Propagator/StraightLineStepper.hpp @@ -242,7 +242,7 @@ class StraightLineStepper { /// @param [in] boundaryTolerance The boundary check for this status update /// @param [in] surfaceTolerance Surface tolerance used for intersection /// @param [in] logger A logger instance - Intersection3D::Status updateSurfaceStatus( + IntersectionStatus updateSurfaceStatus( State& state, const Surface& surface, std::uint8_t index, Direction navDir, const BoundaryTolerance& boundaryTolerance, ActsScalar surfaceTolerance = s_onSurfaceTolerance, diff --git a/Core/include/Acts/Propagator/SympyStepper.hpp b/Core/include/Acts/Propagator/SympyStepper.hpp index 3b1a2125a41..f5773a8a409 100644 --- a/Core/include/Acts/Propagator/SympyStepper.hpp +++ b/Core/include/Acts/Propagator/SympyStepper.hpp @@ -237,7 +237,7 @@ class SympyStepper { /// @param [in] boundaryTolerance The boundary check for this status update /// @param [in] surfaceTolerance Surface tolerance used for intersection /// @param [in] logger A @c Logger instance - Intersection3D::Status updateSurfaceStatus( + IntersectionStatus updateSurfaceStatus( State& state, const Surface& surface, std::uint8_t index, Direction navDir, const BoundaryTolerance& boundaryTolerance, ActsScalar surfaceTolerance = s_onSurfaceTolerance, diff --git a/Core/include/Acts/Propagator/TryAllNavigator.hpp b/Core/include/Acts/Propagator/TryAllNavigator.hpp index 09f6fb25e25..7470fa0da0c 100644 --- a/Core/include/Acts/Propagator/TryAllNavigator.hpp +++ b/Core/include/Acts/Propagator/TryAllNavigator.hpp @@ -434,7 +434,7 @@ class TryAllNavigator : public TryAllNavigatorBase { const auto& intersection = candidate.intersection; const Surface& surface = *intersection.object(); - Intersection3D::Status surfaceStatus = stepper.updateSurfaceStatus( + IntersectionStatus surfaceStatus = stepper.updateSurfaceStatus( state.stepping, surface, intersection.index(), state.options.direction, BoundaryTolerance::Infinite(), state.options.surfaceTolerance, logger()); @@ -463,7 +463,7 @@ class TryAllNavigator : public TryAllNavigatorBase { const auto& intersection = candidate.intersection; const Surface& surface = *intersection.object(); - Intersection3D::Status surfaceStatus = stepper.updateSurfaceStatus( + IntersectionStatus surfaceStatus = stepper.updateSurfaceStatus( state.stepping, surface, intersection.index(), state.options.direction, BoundaryTolerance::None(), state.options.surfaceTolerance, logger()); @@ -788,7 +788,7 @@ class TryAllOverstepNavigator : public TryAllNavigatorBase { const auto& intersection = candidate.intersection; const Surface& surface = *intersection.object(); - Intersection3D::Status surfaceStatus = stepper.updateSurfaceStatus( + IntersectionStatus surfaceStatus = stepper.updateSurfaceStatus( state.stepping, surface, intersection.index(), state.options.direction, BoundaryTolerance::Infinite(), state.options.surfaceTolerance, logger()); @@ -815,7 +815,7 @@ class TryAllOverstepNavigator : public TryAllNavigatorBase { const auto& intersection = candidate.intersection; const Surface& surface = *intersection.object(); - Intersection3D::Status surfaceStatus = stepper.updateSurfaceStatus( + IntersectionStatus surfaceStatus = stepper.updateSurfaceStatus( state.stepping, surface, intersection.index(), state.options.direction, BoundaryTolerance::None(), state.options.surfaceTolerance, logger()); diff --git a/Core/include/Acts/Propagator/detail/SteppingHelper.hpp b/Core/include/Acts/Propagator/detail/SteppingHelper.hpp index c78f0ea1f51..c0589d739c7 100644 --- a/Core/include/Acts/Propagator/detail/SteppingHelper.hpp +++ b/Core/include/Acts/Propagator/detail/SteppingHelper.hpp @@ -32,7 +32,7 @@ namespace Acts::detail { /// @param surface [in] The surface provided /// @param boundaryTolerance [in] The boundary check for this status update template <typename stepper_t> -Acts::Intersection3D::Status updateSingleSurfaceStatus( +Acts::IntersectionStatus updateSingleSurfaceStatus( const stepper_t& stepper, typename stepper_t::State& state, const Surface& surface, std::uint8_t index, Direction navDir, const BoundaryTolerance& boundaryTolerance, ActsScalar surfaceTolerance, @@ -46,11 +46,11 @@ Acts::Intersection3D::Status updateSingleSurfaceStatus( surfaceTolerance)[index]; // The intersection is on surface already - if (sIntersection.status() == Intersection3D::Status::onSurface) { + if (sIntersection.status() == IntersectionStatus::onSurface) { // Release navigation step size state.stepSize.release(ConstrainedStep::actor); ACTS_VERBOSE("Intersection: state is ON SURFACE"); - return Intersection3D::Status::onSurface; + return IntersectionStatus::onSurface; } const double nearLimit = std::numeric_limits<double>::lowest(); @@ -62,11 +62,11 @@ Acts::Intersection3D::Status updateSingleSurfaceStatus( ACTS_VERBOSE("Surface is reachable"); stepper.updateStepSize(state, sIntersection.pathLength(), ConstrainedStep::actor); - return Intersection3D::Status::reachable; + return IntersectionStatus::reachable; } ACTS_VERBOSE("Surface is NOT reachable"); - return Intersection3D::Status::unreachable; + return IntersectionStatus::unreachable; } /// Update the Step size - single component diff --git a/Core/include/Acts/Surfaces/detail/PlanarHelper.hpp b/Core/include/Acts/Surfaces/detail/PlanarHelper.hpp index f7b21a960aa..99e1803126f 100644 --- a/Core/include/Acts/Surfaces/detail/PlanarHelper.hpp +++ b/Core/include/Acts/Surfaces/detail/PlanarHelper.hpp @@ -35,9 +35,9 @@ inline Intersection3D intersect(const Transform3& transform, // Translate that into a path ActsScalar path = (pnormal.dot((pcenter - position))) / (denom); // Is valid hence either on surface or reachable - Intersection3D::Status status = std::abs(path) < std::abs(tolerance) - ? Intersection3D::Status::onSurface - : Intersection3D::Status::reachable; + IntersectionStatus status = std::abs(path) < std::abs(tolerance) + ? IntersectionStatus::onSurface + : IntersectionStatus::reachable; // Return the intersection return Intersection3D{(position + path * direction), path, status}; } diff --git a/Core/include/Acts/TrackFitting/GaussianSumFitter.hpp b/Core/include/Acts/TrackFitting/GaussianSumFitter.hpp index f6c990a696d..4efcd82e4c4 100644 --- a/Core/include/Acts/TrackFitting/GaussianSumFitter.hpp +++ b/Core/include/Acts/TrackFitting/GaussianSumFitter.hpp @@ -14,6 +14,7 @@ #include "Acts/Propagator/Navigator.hpp" #include "Acts/Propagator/StandardAborters.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" +#include "Acts/TrackFitting/GsfError.hpp" #include "Acts/TrackFitting/GsfOptions.hpp" #include "Acts/TrackFitting/detail/GsfActor.hpp" #include "Acts/Utilities/Helpers.hpp" @@ -217,7 +218,7 @@ struct GaussianSumFitter { .closest() .status(); - if (intersectionStatusStartSurface != Intersection3D::Status::onSurface) { + if (intersectionStatusStartSurface != IntersectionStatus::onSurface) { ACTS_DEBUG( "Surface intersection of start parameters WITH bound-check failed"); } diff --git a/Core/include/Acts/TrackFitting/detail/GsfActor.hpp b/Core/include/Acts/TrackFitting/detail/GsfActor.hpp index 92c5529d319..eeb7636103b 100644 --- a/Core/include/Acts/TrackFitting/detail/GsfActor.hpp +++ b/Core/include/Acts/TrackFitting/detail/GsfActor.hpp @@ -12,14 +12,9 @@ #include "Acts/EventData/MultiComponentTrackParameters.hpp" #include "Acts/EventData/MultiTrajectory.hpp" #include "Acts/EventData/MultiTrajectoryHelpers.hpp" -#include "Acts/MagneticField/MagneticFieldProvider.hpp" -#include "Acts/Material/ISurfaceMaterial.hpp" -#include "Acts/Surfaces/CylinderSurface.hpp" +#include "Acts/Propagator/detail/PointwiseMaterialInteraction.hpp" #include "Acts/Surfaces/Surface.hpp" -#include "Acts/TrackFitting/BetheHeitlerApprox.hpp" -#include "Acts/TrackFitting/GsfError.hpp" #include "Acts/TrackFitting/GsfOptions.hpp" -#include "Acts/TrackFitting/KalmanFitter.hpp" #include "Acts/TrackFitting/detail/GsfComponentMerging.hpp" #include "Acts/TrackFitting/detail/GsfUtils.hpp" #include "Acts/TrackFitting/detail/KalmanUpdateHelpers.hpp" @@ -28,7 +23,6 @@ #include <ios> #include <map> -#include <numeric> namespace Acts::detail { @@ -53,8 +47,8 @@ struct GsfResult { std::size_t measurementHoles = 0; std::size_t processedStates = 0; - std::vector<const Acts::Surface*> visitedSurfaces; - std::vector<const Acts::Surface*> surfacesVisitedBwdAgain; + std::vector<const Surface*> visitedSurfaces; + std::vector<const Surface*> surfacesVisitedBwdAgain; /// Statistics about material encounterings Updatable<std::size_t> nInvalidBetheHeitler; @@ -74,7 +68,7 @@ struct GsfActor { /// Enforce default construction GsfActor() = default; - using ComponentCache = Acts::GsfComponent; + using ComponentCache = GsfComponent; /// Broadcast the result_type using result_type = GsfResult<traj_t>; @@ -189,7 +183,7 @@ struct GsfActor { // All components must have status "on surface". It is however possible, // that currentSurface is nullptr and all components are "on surface" (e.g., // for surfaces excluded from the navigation) - using Status [[maybe_unused]] = Acts::Intersection3D::Status; + using Status [[maybe_unused]] = IntersectionStatus; assert(std::all_of( stepperComponents.begin(), stepperComponents.end(), [](const auto& cmp) { return cmp.status() == Status::onSurface; })); @@ -484,7 +478,7 @@ struct GsfActor { // we set ignored components to missed, so we can remove them after // the loop if (tmpStates.weights.at(idx) < m_cfg.weightCutoff) { - cmp.status() = Intersection3D::Status::missed; + cmp.status() = IntersectionStatus::missed; continue; } @@ -534,9 +528,9 @@ struct GsfActor { state.geoContext, freeParams.template segment<3>(eFreePos0), freeParams.template segment<3>(eFreeDir0)); cmp.pathAccumulated() = state.stepping.pathAccumulated; - cmp.jacobian() = Acts::BoundMatrix::Identity(); - cmp.derivative() = Acts::FreeVector::Zero(); - cmp.jacTransport() = Acts::FreeMatrix::Identity(); + cmp.jacobian() = BoundMatrix::Identity(); + cmp.derivative() = FreeVector::Zero(); + cmp.jacTransport() = FreeMatrix::Identity(); } } @@ -574,8 +568,7 @@ struct GsfActor { // If at least one component is no outlier, we consider the whole thing // as a measurementState - if (trackStateProxy.typeFlags().test( - Acts::TrackStateFlag::MeasurementFlag)) { + if (trackStateProxy.typeFlags().test(TrackStateFlag::MeasurementFlag)) { is_valid_measurement = true; } @@ -621,7 +614,7 @@ struct GsfActor { stepper.particleHypothesis(state.stepping)); // Return success - return Acts::Result<void>::success(); + return Result<void>::success(); } template <typename propagator_state_t, typename stepper_t, @@ -790,7 +783,7 @@ struct GsfActor { /// Set the relevant options that can be set from the Options struct all in /// one place - void setOptions(const Acts::GsfOptions<traj_t>& options) { + void setOptions(const GsfOptions<traj_t>& options) { m_cfg.maxComponents = options.maxComponents; m_cfg.extensions = options.extensions; m_cfg.abortOnError = options.abortOnError; diff --git a/Core/include/Acts/Utilities/Intersection.hpp b/Core/include/Acts/Utilities/Intersection.hpp index 6276538ed5e..11adf0bdece 100644 --- a/Core/include/Acts/Utilities/Intersection.hpp +++ b/Core/include/Acts/Utilities/Intersection.hpp @@ -9,7 +9,6 @@ #pragma once #include "Acts/Definitions/Algebra.hpp" -#include "Acts/Definitions/Tolerance.hpp" #include "Acts/Utilities/Logger.hpp" #include <algorithm> @@ -47,8 +46,6 @@ class Intersection { public: /// Position type using Position = ActsVector<DIM>; - /// Status enum - using Status = IntersectionStatus; /// Constructor with arguments /// @@ -56,11 +53,13 @@ class Intersection { /// @param pathLength is the path length to the intersection /// @param status is an enum indicating the status of the intersection constexpr Intersection(const Position& position, double pathLength, - Status status) + IntersectionStatus status) : m_position(position), m_pathLength(pathLength), m_status(status) {} /// Returns whether the intersection was successful or not - constexpr bool isValid() const { return m_status != Status::missed; } + constexpr bool isValid() const { + return m_status != IntersectionStatus::missed; + } /// Returns the position of the interseciton constexpr const Position& position() const { return m_position; } @@ -69,7 +68,7 @@ class Intersection { constexpr ActsScalar pathLength() const { return m_pathLength; } /// Returns the intersection status enum - constexpr Status status() const { return m_status; } + constexpr IntersectionStatus status() const { return m_status; } /// Static factory to creae an invalid instesection constexpr static Intersection invalid() { return Intersection(); } @@ -87,12 +86,12 @@ class Intersection { /// be first. constexpr static bool closestOrder(const Intersection& aIntersection, const Intersection& bIntersection) { - if ((aIntersection.status() == Status::unreachable) && - (bIntersection.status() != Status::unreachable)) { + if ((aIntersection.status() == IntersectionStatus::unreachable) && + (bIntersection.status() != IntersectionStatus::unreachable)) { return false; } - if ((aIntersection.status() != Status::unreachable) && - (bIntersection.status() == Status::unreachable)) { + if ((aIntersection.status() != IntersectionStatus::unreachable) && + (bIntersection.status() == IntersectionStatus::unreachable)) { return true; } // both are reachable or onSurface now @@ -117,7 +116,7 @@ class Intersection { /// Signed path length to the intersection (if valid) ActsScalar m_pathLength = std::numeric_limits<double>::infinity(); /// The Status of the intersection - Status m_status = Status::unreachable; + IntersectionStatus m_status = IntersectionStatus::unreachable; constexpr Intersection() = default; }; @@ -161,7 +160,7 @@ class ObjectIntersection { } /// Returns the status of the interseciton - constexpr Intersection3D::Status status() const { + constexpr IntersectionStatus status() const { return m_intersection.status(); } diff --git a/Core/src/Surfaces/ConeSurface.cpp b/Core/src/Surfaces/ConeSurface.cpp index b6d04e87e06..0ad869f2a4e 100644 --- a/Core/src/Surfaces/ConeSurface.cpp +++ b/Core/src/Surfaces/ConeSurface.cpp @@ -295,23 +295,23 @@ Acts::SurfaceMultiIntersection Acts::ConeSurface::intersect( // Check the validity of the first solution Vector3 solution1 = position + qe.first * direction; - Intersection3D::Status status1 = std::abs(qe.first) < std::abs(tolerance) - ? Intersection3D::Status::onSurface - : Intersection3D::Status::reachable; + IntersectionStatus status1 = std::abs(qe.first) < std::abs(tolerance) + ? IntersectionStatus::onSurface + : IntersectionStatus::reachable; if (!boundaryTolerance.isInfinite() && !isOnSurface(gctx, solution1, direction, boundaryTolerance)) { - status1 = Intersection3D::Status::missed; + status1 = IntersectionStatus::missed; } // Check the validity of the second solution Vector3 solution2 = position + qe.first * direction; - Intersection3D::Status status2 = std::abs(qe.second) < std::abs(tolerance) - ? Intersection3D::Status::onSurface - : Intersection3D::Status::reachable; + IntersectionStatus status2 = std::abs(qe.second) < std::abs(tolerance) + ? IntersectionStatus::onSurface + : IntersectionStatus::reachable; if (!boundaryTolerance.isInfinite() && !isOnSurface(gctx, solution2, direction, boundaryTolerance)) { - status2 = Intersection3D::Status::missed; + status2 = IntersectionStatus::missed; } const auto& tf = transform(gctx); diff --git a/Core/src/Surfaces/CylinderSurface.cpp b/Core/src/Surfaces/CylinderSurface.cpp index 4b3cd2db7be..d34726c2a7f 100644 --- a/Core/src/Surfaces/CylinderSurface.cpp +++ b/Core/src/Surfaces/CylinderSurface.cpp @@ -243,14 +243,13 @@ Acts::SurfaceMultiIntersection Acts::CylinderSurface::intersect( // Check the validity of the first solution Vector3 solution1 = position + qe.first * direction; - Intersection3D::Status status1 = std::abs(qe.first) < std::abs(tolerance) - ? Intersection3D::Status::onSurface - : Intersection3D::Status::reachable; + IntersectionStatus status1 = std::abs(qe.first) < std::abs(tolerance) + ? IntersectionStatus::onSurface + : IntersectionStatus::reachable; // Helper method for boundary check - auto boundaryCheck = - [&](const Vector3& solution, - Intersection3D::Status status) -> Intersection3D::Status { + auto boundaryCheck = [&](const Vector3& solution, + IntersectionStatus status) -> IntersectionStatus { // No check to be done, return current status if (boundaryTolerance.isInfinite()) { return status; @@ -266,12 +265,11 @@ Acts::SurfaceMultiIntersection Acts::CylinderSurface::intersect( double cZ = vecLocal.dot(tMatrix.block<3, 1>(0, 2)); double modifiedTolerance = tolerance + absoluteBound->tolerance1; double hZ = cBounds.get(CylinderBounds::eHalfLengthZ) + modifiedTolerance; - return std::abs(cZ) < std::abs(hZ) ? status - : Intersection3D::Status::missed; + return std::abs(cZ) < std::abs(hZ) ? status : IntersectionStatus::missed; } return isOnSurface(gctx, solution, direction, boundaryTolerance) ? status - : Intersection3D::Status::missed; + : IntersectionStatus::missed; }; // Check first solution for boundary compatibility status1 = boundaryCheck(solution1, status1); @@ -282,9 +280,9 @@ Acts::SurfaceMultiIntersection Acts::CylinderSurface::intersect( } // Check the validity of the second solution Vector3 solution2 = position + qe.second * direction; - Intersection3D::Status status2 = std::abs(qe.second) < std::abs(tolerance) - ? Intersection3D::Status::onSurface - : Intersection3D::Status::reachable; + IntersectionStatus status2 = std::abs(qe.second) < std::abs(tolerance) + ? IntersectionStatus::onSurface + : IntersectionStatus::reachable; // Check first solution for boundary compatibility status2 = boundaryCheck(solution2, status2); Intersection3D second(solution2, qe.second, status2); diff --git a/Core/src/Surfaces/DiscSurface.cpp b/Core/src/Surfaces/DiscSurface.cpp index da1aa2b54bc..9e957346965 100644 --- a/Core/src/Surfaces/DiscSurface.cpp +++ b/Core/src/Surfaces/DiscSurface.cpp @@ -286,7 +286,7 @@ Acts::SurfaceMultiIntersection Acts::DiscSurface::intersect( PlanarHelper::intersect(gctxTransform, position, direction, tolerance); auto status = intersection.status(); // Evaluate boundary check if requested (and reachable) - if (intersection.status() != Intersection3D::Status::unreachable && + if (intersection.status() != IntersectionStatus::unreachable && m_bounds != nullptr && !boundaryTolerance.isInfinite()) { // Built-in local to global for speed reasons const auto& tMatrix = gctxTransform.matrix(); @@ -297,11 +297,11 @@ Acts::SurfaceMultiIntersection Acts::DiscSurface::intersect( double modifiedTolerance = tolerance + absoluteBound->tolerance0; if (!m_bounds->insideRadialBounds(VectorHelpers::perp(lcartesian), modifiedTolerance)) { - status = Intersection3D::Status::missed; + status = IntersectionStatus::missed; } } else if (!insideBounds(localCartesianToPolar(lcartesian), boundaryTolerance)) { - status = Intersection3D::Status::missed; + status = IntersectionStatus::missed; } } return {{Intersection3D(intersection.position(), intersection.pathLength(), diff --git a/Core/src/Surfaces/IntersectionHelper2D.cpp b/Core/src/Surfaces/IntersectionHelper2D.cpp index 1053021034f..c196b1a4131 100644 --- a/Core/src/Surfaces/IntersectionHelper2D.cpp +++ b/Core/src/Surfaces/IntersectionHelper2D.cpp @@ -30,11 +30,11 @@ Acts::Intersection2D Acts::detail::IntersectionHelper2D::intersectSegment( auto d = line.intersectionParameter(Plane::Through(s0, s1)); Vector2 intersection(origin + d * dir); - Intersection2D::Status status = Intersection2D::Status::reachable; + IntersectionStatus status = IntersectionStatus::reachable; if (boundCheck) { auto edgeToSol = intersection - s0; if (edgeToSol.dot(edge) < 0. || edgeToSol.norm() > (edge).norm()) { - status = Intersection2D::Status::unreachable; + status = IntersectionStatus::unreachable; } } return Intersection2D(intersection, d, status); @@ -55,11 +55,11 @@ Acts::detail::IntersectionHelper2D::intersectEllipse(ActsScalar Rx, ActsScalar altD = std::copysign(toAltD.norm(), toAltD.dot(dir)); if (std::abs(solD) < std::abs(altD)) { - return {Intersection2D(sol, solD, Intersection2D::Status::reachable), - Intersection2D(alt, altD, Intersection2D::Status::reachable)}; + return {Intersection2D(sol, solD, IntersectionStatus::reachable), + Intersection2D(alt, altD, IntersectionStatus::reachable)}; } - return {Intersection2D(alt, altD, Intersection2D::Status::reachable), - Intersection2D(sol, solD, Intersection2D::Status::reachable)}; + return {Intersection2D(alt, altD, IntersectionStatus::reachable), + Intersection2D(sol, solD, IntersectionStatus::reachable)}; }; // Special cases first @@ -73,7 +73,7 @@ Acts::detail::IntersectionHelper2D::intersectEllipse(ActsScalar Rx, return createSolution(sol, alt); } else if (std::abs(D) < s_epsilon) { return {Intersection2D(Vector2(solx, 0.), -origin.y(), - Intersection2D::Status::reachable), + IntersectionStatus::reachable), Intersection2D::invalid()}; } return {Intersection2D::invalid(), Intersection2D::invalid()}; @@ -87,7 +87,7 @@ Acts::detail::IntersectionHelper2D::intersectEllipse(ActsScalar Rx, return createSolution(sol, alt); } else if (std::abs(D) < s_epsilon) { return {Intersection2D(Vector2(0., soly), -origin.x(), - Intersection2D::Status::reachable), + IntersectionStatus::reachable), Intersection2D::invalid()}; } return {Intersection2D::invalid(), Intersection2D::invalid()}; @@ -105,7 +105,7 @@ Acts::detail::IntersectionHelper2D::intersectEllipse(ActsScalar Rx, Vector2 sol(x, k * x + d); Vector2 toSolD(sol - origin); ActsScalar solD = std::copysign(toSolD.norm(), toSolD.dot(dir)); - return {Intersection2D(sol, solD, Intersection2D::Status::reachable), + return {Intersection2D(sol, solD, IntersectionStatus::reachable), Intersection2D::invalid()}; } else if (solver.solutions > 1) { ActsScalar x0 = solver.first; diff --git a/Core/src/Surfaces/LineSurface.cpp b/Core/src/Surfaces/LineSurface.cpp index f67fe038aa9..00d1fc6dd17 100644 --- a/Core/src/Surfaces/LineSurface.cpp +++ b/Core/src/Surfaces/LineSurface.cpp @@ -174,9 +174,9 @@ Acts::SurfaceMultiIntersection Acts::LineSurface::intersect( double u = (mab.dot(ea) - mab.dot(eb) * eaTeb) / denom; // Check if we are on the surface already - Intersection3D::Status status = std::abs(u) > std::abs(tolerance) - ? Intersection3D::Status::reachable - : Intersection3D::Status::onSurface; + IntersectionStatus status = std::abs(u) > std::abs(tolerance) + ? IntersectionStatus::reachable + : IntersectionStatus::onSurface; Vector3 result = ma + u * ea; // Evaluate the boundary check if requested // m_bounds == nullptr prevents unnecessary calculations for PerigeeSurface @@ -185,7 +185,7 @@ Acts::SurfaceMultiIntersection Acts::LineSurface::intersect( double cZ = vecLocal.dot(eb); double cR = (vecLocal - cZ * eb).norm(); if (!m_bounds->inside({cR, cZ}, boundaryTolerance)) { - status = Intersection3D::Status::missed; + status = IntersectionStatus::missed; } } diff --git a/Core/src/Surfaces/PlaneSurface.cpp b/Core/src/Surfaces/PlaneSurface.cpp index 658920e6686..db21709a192 100644 --- a/Core/src/Surfaces/PlaneSurface.cpp +++ b/Core/src/Surfaces/PlaneSurface.cpp @@ -168,14 +168,14 @@ Acts::SurfaceMultiIntersection Acts::PlaneSurface::intersect( PlanarHelper::intersect(gctxTransform, position, direction, tolerance); auto status = intersection.status(); // Evaluate boundary check if requested (and reachable) - if (intersection.status() != Intersection3D::Status::unreachable) { + if (intersection.status() != IntersectionStatus::unreachable) { // Built-in local to global for speed reasons const auto& tMatrix = gctxTransform.matrix(); // Create the reference vector in local const Vector3 vecLocal(intersection.position() - tMatrix.block<3, 1>(0, 3)); if (!insideBounds(tMatrix.block<3, 2>(0, 0).transpose() * vecLocal, boundaryTolerance)) { - status = Intersection3D::Status::missed; + status = IntersectionStatus::missed; } } return {{Intersection3D(intersection.position(), intersection.pathLength(), diff --git a/Core/src/Utilities/Intersection.cpp b/Core/src/Utilities/Intersection.cpp index 23378f0b381..8a99870b282 100644 --- a/Core/src/Utilities/Intersection.cpp +++ b/Core/src/Utilities/Intersection.cpp @@ -8,6 +8,8 @@ #include "Acts/Utilities/Intersection.hpp" +#include "Acts/Definitions/Tolerance.hpp" + namespace Acts { bool detail::checkPathLength(double pathLength, double nearLimit, diff --git a/Tests/UnitTests/Core/Propagator/MultiStepperTests.cpp b/Tests/UnitTests/Core/Propagator/MultiStepperTests.cpp index 3fee9d4b6dd..a851d7592d9 100644 --- a/Tests/UnitTests/Core/Propagator/MultiStepperTests.cpp +++ b/Tests/UnitTests/Core/Propagator/MultiStepperTests.cpp @@ -308,7 +308,7 @@ void test_multi_stepper_vs_eigen_stepper() { SingleStepper single_stepper(defaultBField); for (auto cmp : multi_stepper.componentIterable(multi_state)) { - cmp.status() = Acts::Intersection3D::Status::reachable; + cmp.status() = Acts::IntersectionStatus::reachable; } // Do some steps and check that the results match @@ -483,14 +483,14 @@ void test_multi_stepper_surface_status_update() { multi_state, *right_surface, 0, Direction::Forward, BoundaryTolerance::Infinite()); - BOOST_CHECK_EQUAL(status, Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(status, IntersectionStatus::reachable); auto cmp_iterable = multi_stepper.constComponentIterable(multi_state); auto cmp_1 = *cmp_iterable.begin(); auto cmp_2 = *(++cmp_iterable.begin()); - BOOST_CHECK_EQUAL(cmp_1.status(), Intersection3D::Status::reachable); - BOOST_CHECK_EQUAL(cmp_2.status(), Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(cmp_1.status(), IntersectionStatus::reachable); + BOOST_CHECK_EQUAL(cmp_2.status(), IntersectionStatus::reachable); BOOST_CHECK_EQUAL(cmp_1.cmp.state.stepSize.value(), 1.0); BOOST_CHECK_EQUAL(cmp_2.cmp.state.stepSize.value(), -1.0); @@ -512,14 +512,14 @@ void test_multi_stepper_surface_status_update() { multi_state, *right_surface, 0, Direction::Forward, BoundaryTolerance::Infinite()); - BOOST_CHECK_EQUAL(status, Intersection3D::Status::onSurface); + BOOST_CHECK_EQUAL(status, IntersectionStatus::onSurface); auto cmp_iterable = multi_stepper.constComponentIterable(multi_state); auto cmp_1 = *cmp_iterable.begin(); auto cmp_2 = *(++cmp_iterable.begin()); - BOOST_CHECK_EQUAL(cmp_1.status(), Intersection3D::Status::onSurface); - BOOST_CHECK_EQUAL(cmp_2.status(), Intersection3D::Status::onSurface); + BOOST_CHECK_EQUAL(cmp_1.status(), IntersectionStatus::onSurface); + BOOST_CHECK_EQUAL(cmp_2.status(), IntersectionStatus::onSurface); } // Start surface should be reachable @@ -528,14 +528,14 @@ void test_multi_stepper_surface_status_update() { multi_state, *start_surface, 0, Direction::Forward, BoundaryTolerance::Infinite()); - BOOST_CHECK_EQUAL(status, Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(status, IntersectionStatus::reachable); auto cmp_iterable = multi_stepper.constComponentIterable(multi_state); auto cmp_1 = *cmp_iterable.begin(); auto cmp_2 = *(++cmp_iterable.begin()); - BOOST_CHECK_EQUAL(cmp_1.status(), Intersection3D::Status::reachable); - BOOST_CHECK_EQUAL(cmp_2.status(), Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(cmp_1.status(), IntersectionStatus::reachable); + BOOST_CHECK_EQUAL(cmp_2.status(), IntersectionStatus::reachable); BOOST_CHECK_EQUAL(cmp_1.cmp.state.stepSize.value(), -1.0); BOOST_CHECK_EQUAL(cmp_2.cmp.state.stepSize.value(), 1.0); diff --git a/Tests/UnitTests/Core/Propagator/NavigatorTests.cpp b/Tests/UnitTests/Core/Propagator/NavigatorTests.cpp index b9c6fdf87df..e47589c7c63 100644 --- a/Tests/UnitTests/Core/Propagator/NavigatorTests.cpp +++ b/Tests/UnitTests/Core/Propagator/NavigatorTests.cpp @@ -140,7 +140,7 @@ struct PropagatorState { return s_onSurfaceTolerance; } - Intersection3D::Status updateSurfaceStatus( + IntersectionStatus updateSurfaceStatus( State& state, const Surface& surface, std::uint8_t index, Direction navDir, const BoundaryTolerance& boundaryTolerance, ActsScalar surfaceTolerance, const Logger& logger) const { diff --git a/Tests/UnitTests/Core/Surfaces/CylinderSurfaceTests.cpp b/Tests/UnitTests/Core/Surfaces/CylinderSurfaceTests.cpp index 4dd6f7f6905..152ec791201 100644 --- a/Tests/UnitTests/Core/Surfaces/CylinderSurfaceTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/CylinderSurfaceTests.cpp @@ -199,7 +199,7 @@ BOOST_AUTO_TEST_CASE(CylinderSurfaceProperties) { auto sfIntersection = cylinderSurfaceObject->intersect( testContext, offSurface, direction, BoundaryTolerance::Infinite()); Intersection3D expectedIntersect{Vector3{1, 1, 2}, 99., - Intersection3D::Status::reachable}; + IntersectionStatus::reachable}; BOOST_CHECK(sfIntersection[0].isValid()); CHECK_CLOSE_ABS(sfIntersection[0].position(), expectedIntersect.position(), 1e-9); diff --git a/Tests/UnitTests/Core/Surfaces/DiscSurfaceTests.cpp b/Tests/UnitTests/Core/Surfaces/DiscSurfaceTests.cpp index b5d1eec5f43..401b6e5bf12 100644 --- a/Tests/UnitTests/Core/Surfaces/DiscSurfaceTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/DiscSurfaceTests.cpp @@ -217,7 +217,7 @@ BOOST_AUTO_TEST_CASE(DiscSurfaceProperties) { BoundaryTolerance::Infinite()) .closest(); Intersection3D expectedIntersect{Vector3{1.2, 0., 0.}, 10., - Intersection3D::Status::reachable}; + IntersectionStatus::reachable}; BOOST_CHECK(sfIntersection.isValid()); CHECK_CLOSE_ABS(sfIntersection.position(), expectedIntersect.position(), 1e-9); diff --git a/Tests/UnitTests/Core/Surfaces/PlaneSurfaceTests.cpp b/Tests/UnitTests/Core/Surfaces/PlaneSurfaceTests.cpp index 99d0569b9d2..de2a87483e0 100644 --- a/Tests/UnitTests/Core/Surfaces/PlaneSurfaceTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/PlaneSurfaceTests.cpp @@ -172,7 +172,7 @@ BOOST_AUTO_TEST_CASE(PlaneSurfaceProperties) { BoundaryTolerance::None()) .closest(); Intersection3D expectedIntersect{Vector3{0, 1, 2}, 4., - Intersection3D::Status::reachable}; + IntersectionStatus::reachable}; BOOST_CHECK(sfIntersection.isValid()); BOOST_CHECK_EQUAL(sfIntersection.position(), expectedIntersect.position()); BOOST_CHECK_EQUAL(sfIntersection.pathLength(), diff --git a/Tests/UnitTests/Core/Surfaces/SurfaceIntersectionTests.cpp b/Tests/UnitTests/Core/Surfaces/SurfaceIntersectionTests.cpp index e6294fc27ca..0fcabe9ad81 100644 --- a/Tests/UnitTests/Core/Surfaces/SurfaceIntersectionTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/SurfaceIntersectionTests.cpp @@ -71,15 +71,13 @@ BOOST_AUTO_TEST_CASE(CylinderIntersectionTests) { // Check the validity of the intersection BOOST_CHECK(aIntersection[0].isValid()); // The status of this one should be on surface - BOOST_CHECK_EQUAL(aIntersection[0].status(), - Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(aIntersection[0].status(), IntersectionStatus::reachable); // The intersection is at 2 meter distance CHECK_CLOSE_ABS(aIntersection[0].pathLength(), -2_m, s_onSurfaceTolerance); // There MUST be a second solution BOOST_CHECK(aIntersection[1].isValid()); // The other intersection MUST be reachable - BOOST_CHECK_EQUAL(aIntersection[1].status(), - Intersection3D::Status::onSurface); + BOOST_CHECK_EQUAL(aIntersection[1].status(), IntersectionStatus::onSurface); // Intersect from the center auto cIntersection = aCylinder->intersect(tgContext, atCenter, alongX, @@ -88,13 +86,11 @@ BOOST_AUTO_TEST_CASE(CylinderIntersectionTests) { // Check the validity of the intersection BOOST_CHECK(cIntersection[0].isValid()); // The status of this one MUST be reachable - BOOST_CHECK_EQUAL(cIntersection[0].status(), - Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(cIntersection[0].status(), IntersectionStatus::reachable); // There MUST be a second solution BOOST_CHECK(cIntersection[1].isValid()); // The other intersection MUST be reachable - BOOST_CHECK_EQUAL(cIntersection[1].status(), - Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(cIntersection[1].status(), IntersectionStatus::reachable); // There MUST be one forward one backwards solution BOOST_CHECK_LT( cIntersection[1].pathLength() * cIntersection[0].pathLength(), 0); @@ -106,13 +102,11 @@ BOOST_AUTO_TEST_CASE(CylinderIntersectionTests) { // Check the validity of the intersection BOOST_CHECK(oIntersection[0].isValid()); // The status of this one MUST be reachable - BOOST_CHECK_EQUAL(oIntersection[0].status(), - Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(oIntersection[0].status(), IntersectionStatus::reachable); // There MUST be a second solution BOOST_CHECK(oIntersection[1].isValid()); // The other intersection MUST be reachable - BOOST_CHECK_EQUAL(oIntersection[1].status(), - Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(oIntersection[1].status(), IntersectionStatus::reachable); // There MUST be one forward one backwards solution BOOST_CHECK_GT( oIntersection[1].pathLength() * oIntersection[0].pathLength(), 0); @@ -133,13 +127,11 @@ BOOST_AUTO_TEST_CASE(CylinderIntersectionTests) { // This should be the positive one BOOST_CHECK_LT(eIntersection[0].pathLength(), 0.); // The status of this one should be reachable - BOOST_CHECK_EQUAL(eIntersection[0].status(), - Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(eIntersection[0].status(), IntersectionStatus::reachable); // There MUST be a second solution BOOST_CHECK(eIntersection[1].isValid()); // The other intersection MUST be reachable - BOOST_CHECK_EQUAL(eIntersection[1].status(), - Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(eIntersection[1].status(), IntersectionStatus::reachable); // And be the negative one BOOST_CHECK_GT(eIntersection[1].pathLength(), 0.); @@ -149,13 +141,11 @@ BOOST_AUTO_TEST_CASE(CylinderIntersectionTests) { // This should be the negative one BOOST_CHECK_LT(eIntersection[0].pathLength(), 0.); // The status of this one should be reachable - BOOST_CHECK_EQUAL(eIntersection[0].status(), - Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(eIntersection[0].status(), IntersectionStatus::reachable); // There MUST be a second solution BOOST_CHECK(!eIntersection[1].isValid()); // The other intersection MUST NOT be reachable - BOOST_CHECK_EQUAL(eIntersection[1].status(), - Intersection3D::Status::missed); + BOOST_CHECK_EQUAL(eIntersection[1].status(), IntersectionStatus::missed); // And be the positive one BOOST_CHECK_GT(eIntersection[1].pathLength(), 0.); }; @@ -196,15 +186,13 @@ BOOST_AUTO_TEST_CASE(ConeIntersectionTest) { // Check the validity of the intersection BOOST_CHECK(aIntersection[0].isValid()); // The status of this one should be on surface - BOOST_CHECK_EQUAL(aIntersection[0].status(), - Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(aIntersection[0].status(), IntersectionStatus::reachable); // The intersection is at 4 mm distance CHECK_CLOSE_ABS(aIntersection[0].pathLength(), -4., s_onSurfaceTolerance); // There MUST be a second solution BOOST_CHECK(aIntersection[1].isValid()); // The other intersection MUST be reachable - BOOST_CHECK_EQUAL(aIntersection[1].status(), - Intersection3D::Status::onSurface); + BOOST_CHECK_EQUAL(aIntersection[1].status(), IntersectionStatus::onSurface); // Intersection from outside without chance of hitting the cylinder auto iIntersection = aCone->intersect(tgContext, outCone, perpXY, @@ -254,8 +242,7 @@ BOOST_AUTO_TEST_CASE(PlanarIntersectionTest) { // The intersection MUST be valid BOOST_CHECK(fIntersection[0].isValid()); // The intersection MUST be reachable - BOOST_CHECK_EQUAL(fIntersection[0].status(), - Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(fIntersection[0].status(), IntersectionStatus::reachable); // The path length MUST be positive BOOST_CHECK_GT(fIntersection[0].pathLength(), 0.); // The intersection MUST be unique @@ -267,8 +254,7 @@ BOOST_AUTO_TEST_CASE(PlanarIntersectionTest) { // The intersection MUST be valid BOOST_CHECK(oIntersection[0].isValid()); // The intersection MUST be reachable - BOOST_CHECK_EQUAL(oIntersection[0].status(), - Intersection3D::Status::onSurface); + BOOST_CHECK_EQUAL(oIntersection[0].status(), IntersectionStatus::onSurface); // The path length MUST be positive BOOST_CHECK_LT(std::abs(oIntersection[0].pathLength()), s_onSurfaceTolerance); @@ -281,8 +267,7 @@ BOOST_AUTO_TEST_CASE(PlanarIntersectionTest) { // The intersection MUST be valid BOOST_CHECK(bIntersection[0].isValid()); // The intersection MUST be reachable - BOOST_CHECK_EQUAL(bIntersection[0].status(), - Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(bIntersection[0].status(), IntersectionStatus::reachable); // The path length MUST be negative BOOST_CHECK_LT(bIntersection[0].pathLength(), 0.); // The intersection MUST be unique @@ -294,8 +279,7 @@ BOOST_AUTO_TEST_CASE(PlanarIntersectionTest) { // The intersection MUST NOT be valid BOOST_CHECK(!mIntersection[0].isValid()); // The intersection MUST be reachable - BOOST_CHECK_EQUAL(mIntersection[0].status(), - Intersection3D::Status::missed); + BOOST_CHECK_EQUAL(mIntersection[0].status(), IntersectionStatus::missed); // The path length MUST be negative BOOST_CHECK_GT(mIntersection[0].pathLength(), 0.); // The intersection MUST be unique @@ -308,7 +292,7 @@ BOOST_AUTO_TEST_CASE(PlanarIntersectionTest) { BOOST_CHECK(!iIntersection[0].isValid()); // The intersection MUST be reachable BOOST_CHECK_EQUAL(iIntersection[0].status(), - Intersection3D::Status::unreachable); + IntersectionStatus::unreachable); // The intersection MUST be unique BOOST_CHECK(!iIntersection[1].isValid()); }; @@ -352,8 +336,7 @@ BOOST_AUTO_TEST_CASE(LineIntersectionTest) { // The intersection MUST be valid BOOST_CHECK(fIntersection[0].isValid()); // The intersection MUST be reachable - BOOST_CHECK_EQUAL(fIntersection[0].status(), - Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(fIntersection[0].status(), IntersectionStatus::reachable); // The path length MUST be positive BOOST_CHECK_GT(fIntersection[0].pathLength(), 0.); // The intersection MUST be unique @@ -365,8 +348,7 @@ BOOST_AUTO_TEST_CASE(LineIntersectionTest) { // The intersection MUST be valid BOOST_CHECK(oIntersection[0].isValid()); // The intersection MUST be reachable - BOOST_CHECK_EQUAL(oIntersection[0].status(), - Intersection3D::Status::onSurface); + BOOST_CHECK_EQUAL(oIntersection[0].status(), IntersectionStatus::onSurface); // The path length MUST be positive BOOST_CHECK_LT(std::abs(oIntersection[0].pathLength()), s_onSurfaceTolerance); @@ -379,8 +361,7 @@ BOOST_AUTO_TEST_CASE(LineIntersectionTest) { // The intersection MUST be valid BOOST_CHECK(oIntersection[0].isValid()); // The intersection MUST be reachable - BOOST_CHECK_EQUAL(oIntersection[0].status(), - Intersection3D::Status::onSurface); + BOOST_CHECK_EQUAL(oIntersection[0].status(), IntersectionStatus::onSurface); // The path length MUST be positive BOOST_CHECK_LT(std::abs(oIntersection[0].pathLength()), s_onSurfaceTolerance); @@ -393,8 +374,7 @@ BOOST_AUTO_TEST_CASE(LineIntersectionTest) { // The intersection MUST be valid BOOST_CHECK(bIntersection[0].isValid()); // The intersection MUST be reachable - BOOST_CHECK_EQUAL(bIntersection[0].status(), - Intersection3D::Status::reachable); + BOOST_CHECK_EQUAL(bIntersection[0].status(), IntersectionStatus::reachable); // The path length MUST be negative BOOST_CHECK_LT(bIntersection[0].pathLength(), 0.); // The intersection MUST be unique @@ -406,8 +386,7 @@ BOOST_AUTO_TEST_CASE(LineIntersectionTest) { // The intersection MUST NOT be valid BOOST_CHECK(!mIntersection[0].isValid()); // The intersection MUST be reachable - BOOST_CHECK_EQUAL(mIntersection[0].status(), - Intersection3D::Status::missed); + BOOST_CHECK_EQUAL(mIntersection[0].status(), IntersectionStatus::missed); // The path length MUST be negative BOOST_CHECK_LT(mIntersection[0].pathLength(), 0.); // The intersection MUST be unique @@ -420,7 +399,7 @@ BOOST_AUTO_TEST_CASE(LineIntersectionTest) { BOOST_CHECK(!iIntersection[0].isValid()); // The intersection MUST be reachable BOOST_CHECK_EQUAL(iIntersection[0].status(), - Intersection3D::Status::unreachable); + IntersectionStatus::unreachable); // The intersection MUST be unique BOOST_CHECK(!iIntersection[1].isValid()); }; diff --git a/Tests/UnitTests/Core/Surfaces/SurfaceStub.hpp b/Tests/UnitTests/Core/Surfaces/SurfaceStub.hpp index c61508a6d89..72ad444fd8a 100644 --- a/Tests/UnitTests/Core/Surfaces/SurfaceStub.hpp +++ b/Tests/UnitTests/Core/Surfaces/SurfaceStub.hpp @@ -89,7 +89,7 @@ class SurfaceStub : public RegularSurface { const BoundaryTolerance& /*boundaryTolerance*/, const ActsScalar /*tolerance*/) const final { Intersection3D stubIntersection(Vector3(20., 0., 0.), 20., - Intersection3D::Status::reachable); + IntersectionStatus::reachable); return SurfaceMultiIntersection( {stubIntersection, Intersection3D::invalid()}, this); } diff --git a/Tests/UnitTests/Core/Utilities/IntersectionTests.cpp b/Tests/UnitTests/Core/Utilities/IntersectionTests.cpp index 41581b08b8d..bda4cad2da2 100644 --- a/Tests/UnitTests/Core/Utilities/IntersectionTests.cpp +++ b/Tests/UnitTests/Core/Utilities/IntersectionTests.cpp @@ -32,19 +32,15 @@ class Object {}; BOOST_AUTO_TEST_CASE(IntersectionTest) { // a few valid intersections // all positively sortered - Intersection3D fIp(Vector3(0., 1., 0.), 1., - Intersection3D::Status::reachable); - Intersection3D sIp(Vector3(0., 2., 0.), 2., - Intersection3D::Status::reachable); - Intersection3D tIp(Vector3(0., 3., 0.), 3., - Intersection3D::Status::reachable); + Intersection3D fIp(Vector3(0., 1., 0.), 1., IntersectionStatus::reachable); + Intersection3D sIp(Vector3(0., 2., 0.), 2., IntersectionStatus::reachable); + Intersection3D tIp(Vector3(0., 3., 0.), 3., IntersectionStatus::reachable); BOOST_CHECK(fIp.isValid()); BOOST_CHECK(sIp.isValid()); BOOST_CHECK(tIp.isValid()); // a non-valid intersection - Intersection3D nIp(Vector3(3., 3., 0.), 3., - Intersection3D::Status::unreachable); + Intersection3D nIp(Vector3(3., 3., 0.), 3., IntersectionStatus::unreachable); BOOST_CHECK(!nIp.isValid()); std::vector<Intersection3D> fstpIntersections = {fIp, sIp, tIp}; @@ -82,12 +78,9 @@ BOOST_AUTO_TEST_CASE(IntersectionTest) { tfnsnpIntersections[2].pathLength()); /// let's make a bunch of negative solution - Intersection3D fIn(Vector3(0., -1., 0.), -1., - Intersection3D::Status::reachable); - Intersection3D sIn(Vector3(0., -2., 0.), -2., - Intersection3D::Status::reachable); - Intersection3D tIn(Vector3(0., -3., 0.), -3., - Intersection3D::Status::reachable); + Intersection3D fIn(Vector3(0., -1., 0.), -1., IntersectionStatus::reachable); + Intersection3D sIn(Vector3(0., -2., 0.), -2., IntersectionStatus::reachable); + Intersection3D tIn(Vector3(0., -3., 0.), -3., IntersectionStatus::reachable); std::vector<Intersection3D> tsfnIntersections = {tIn, sIn, fIn}; std::vector<Intersection3D> fstnIntersections = {fIn, sIn, tIn}; @@ -113,7 +106,7 @@ BOOST_AUTO_TEST_CASE(IntersectionTest) { BOOST_CHECK_EQUAL(pnsolutions[5].pathLength(), 3.); // sort intersections with zero path length - Intersection3D zI(Vector3(0., 0., 0.), 0., Intersection3D::Status::onSurface); + Intersection3D zI(Vector3(0., 0., 0.), 0., IntersectionStatus::onSurface); std::vector<Intersection3D> tszfpIntersections = {tIp, sIp, zI, fIp}; std::ranges::sort(tszfpIntersections, Intersection3D::pathLengthOrder); @@ -147,25 +140,25 @@ BOOST_AUTO_TEST_CASE(ObjectIntersectionTest) { using PlaneIntersection = ObjectIntersection<PlaneSurface>; - PlaneIntersection int6(Intersection3D(Vector3(6., 0., 0.), 6., - Intersection3D::Status::reachable), - psf6.get()); - PlaneIntersection int7(Intersection3D(Vector3(7., 0., 0.), 7., - Intersection3D::Status::reachable), - psf7.get()); - PlaneIntersection int8(Intersection3D(Vector3(8., 0., 0.), 8., - Intersection3D::Status::reachable), - psf8.get()); - PlaneIntersection int9a(Intersection3D(Vector3(9., 0., 0.), 9., - Intersection3D::Status::reachable), - psf9.get()); + PlaneIntersection int6( + Intersection3D(Vector3(6., 0., 0.), 6., IntersectionStatus::reachable), + psf6.get()); + PlaneIntersection int7( + Intersection3D(Vector3(7., 0., 0.), 7., IntersectionStatus::reachable), + psf7.get()); + PlaneIntersection int8( + Intersection3D(Vector3(8., 0., 0.), 8., IntersectionStatus::reachable), + psf8.get()); + PlaneIntersection int9a( + Intersection3D(Vector3(9., 0., 0.), 9., IntersectionStatus::reachable), + psf9.get()); PlaneIntersection int9b( Intersection3D(Vector3(9., 1., 0.), std::hypot(9., 1.), - Intersection3D::Status::reachable), + IntersectionStatus::reachable), psf9.get()); - PlaneIntersection int10(Intersection3D(Vector3(10., 0., 0.), 10., - Intersection3D::Status::reachable), - psf10.get()); + PlaneIntersection int10( + Intersection3D(Vector3(10., 0., 0.), 10., IntersectionStatus::reachable), + psf10.get()); std::vector<PlaneIntersection> firstSet = {int6, int7, int9b, int10}; std::vector<PlaneIntersection> secondSet = {int8, int9a, int9b, int10}; From f17f64094e958d8821921e117e06cb00c997844c Mon Sep 17 00:00:00 2001 From: "Alexander J. Pfleger" <70842573+AJPfleger@users.noreply.github.com> Date: Sun, 24 Nov 2024 09:12:28 +0100 Subject: [PATCH 43/49] fix: boost progress include fails on next boost major release (#3896) Fix for the rare case, that boost will make a major release. --- Examples/Scripts/MaterialMapping/MaterialComposition.cpp | 2 +- Examples/Scripts/TrackingPerformance/TrackSummary.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Examples/Scripts/MaterialMapping/MaterialComposition.cpp b/Examples/Scripts/MaterialMapping/MaterialComposition.cpp index 348a4912f29..7e7731af846 100644 --- a/Examples/Scripts/MaterialMapping/MaterialComposition.cpp +++ b/Examples/Scripts/MaterialMapping/MaterialComposition.cpp @@ -24,7 +24,7 @@ #include <nlohmann/json.hpp> #define BOOST_AVAILABLE 1 -#if ((BOOST_VERSION / 100) % 1000) <= 71 +#if BOOST_VERSION < 107200 // Boost <=1.71 and lower do not have progress_display.hpp as a replacement yet #include <boost/progress.hpp> diff --git a/Examples/Scripts/TrackingPerformance/TrackSummary.cpp b/Examples/Scripts/TrackingPerformance/TrackSummary.cpp index deba72311d5..0e806ff0a90 100644 --- a/Examples/Scripts/TrackingPerformance/TrackSummary.cpp +++ b/Examples/Scripts/TrackingPerformance/TrackSummary.cpp @@ -27,7 +27,7 @@ #include <nlohmann/json.hpp> #define BOOST_AVAILABLE 1 -#if ((BOOST_VERSION / 100) % 1000) <= 71 +#if BOOST_VERSION < 107200 // Boost <=1.71 and lower do not have progress_display.hpp as a replacement yet #include <boost/progress.hpp> From 7b64bace6f77642f1b608b0c4729f96db9720531 Mon Sep 17 00:00:00 2001 From: "Alexander J. Pfleger" <70842573+AJPfleger@users.noreply.github.com> Date: Sun, 24 Nov 2024 21:24:37 +0100 Subject: [PATCH 44/49] ci: wrong directory formating in update-pip bot (#3903) --- .github/workflows/update-pip-requirements.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-pip-requirements.yml b/.github/workflows/update-pip-requirements.yml index 444ade7b287..e205abc75ce 100755 --- a/.github/workflows/update-pip-requirements.yml +++ b/.github/workflows/update-pip-requirements.yml @@ -34,7 +34,7 @@ jobs: CI/clang_tidy CI/fpe_masks docs - Examples/Python/tests/ + Examples/Python/tests Examples/Scripts ) for folder in "${folder_list[@]}"; do From 0e64ff54eb53333f371a99e8f134312f9765ecd1 Mon Sep 17 00:00:00 2001 From: "Alexander J. Pfleger" <70842573+AJPfleger@users.noreply.github.com> Date: Sun, 24 Nov 2024 22:51:34 +0100 Subject: [PATCH 45/49] docs: remove http-relics for license (#3902) We had the docs test failing quite frequently during the last week, like in here: https://github.com/acts-project/acts/actions/runs/11990353442/job/33427764861?pr=3896 due to ``` ( license: line 4) broken http://mozilla.org/MPL/2.0/ - 404 Client Error: Not Found for url: https://www.mozilla.org/en-US/mpl/2.0/ ``` It seems, that mozilla forwards http sometimes to the wrong address with everything lovercase, which makes problems with `mpl` vs `MPL`. --- .../ITkModuleSplitting/ITkModuleSplitting.hpp | 8 -------- README.md | 2 +- docs/license.rst | 2 +- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/Examples/Detectors/ITkModuleSplitting/include/ActsExamples/ITkModuleSplitting/ITkModuleSplitting.hpp b/Examples/Detectors/ITkModuleSplitting/include/ActsExamples/ITkModuleSplitting/ITkModuleSplitting.hpp index 591671bffb7..61a827ca29d 100644 --- a/Examples/Detectors/ITkModuleSplitting/include/ActsExamples/ITkModuleSplitting/ITkModuleSplitting.hpp +++ b/Examples/Detectors/ITkModuleSplitting/include/ActsExamples/ITkModuleSplitting/ITkModuleSplitting.hpp @@ -6,14 +6,6 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. -// This file is part of the Acts project. -// -// Copyright (C) 2024 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/Definitions/Algebra.hpp" diff --git a/README.md b/README.md index 7b75acee190..5337e811908 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Contributors to the Acts project are listed in the [AUTHORS](AUTHORS) file. The Acts project is published under the terms of the Mozilla Public License, v. 2.0. A copy of the license can be found in the [LICENSE](LICENSE) file or at -http://mozilla.org/MPL/2.0/ . +https://mozilla.org/MPL/2.0/ . The Acts project contains copies of the following external packages: diff --git a/docs/license.rst b/docs/license.rst index dd058963b4b..90f69479545 100644 --- a/docs/license.rst +++ b/docs/license.rst @@ -2,7 +2,7 @@ License ======= ACTS is licensed under the `Mozilla Public License Version 2.0 -<http://mozilla.org/MPL/2.0/>`_. The full text of the license can be found +<https://mozilla.org/MPL/2.0/>`_. The full text of the license can be found below. .. literalinclude:: ../LICENSE From d6b1ee3fcd87b264e4307d4c6693972135f23888 Mon Sep 17 00:00:00 2001 From: "Alexander J. Pfleger" <70842573+AJPfleger@users.noreply.github.com> Date: Mon, 25 Nov 2024 10:34:29 +0100 Subject: [PATCH 46/49] refactor: remove custom scalar in classes (#3894) --- .../EventData/GenericBoundTrackParameters.hpp | 21 ++- .../GenericCurvilinearTrackParameters.hpp | 7 +- .../EventData/GenericFreeTrackParameters.hpp | 27 ++-- .../MultiComponentTrackParameters.hpp | 21 ++- .../Acts/EventData/TrackParametersConcept.hpp | 1 - .../Acts/EventData/TrackStateProxy.hpp | 22 ++- .../Acts/Propagator/ConstrainedStep.hpp | 36 +++-- .../EigenStepperDefaultExtension.hpp | 14 +- .../Propagator/EigenStepperDenseExtension.hpp | 42 +++--- .../ParametricParticleGenerator.cpp | 4 +- .../Generators/Pythia8ProcessGenerator.cpp | 3 +- .../ActsExamples/EventData/DriftCircle.hpp | 22 ++- .../ActsExamples/EventData/SimParticle.hpp | 12 +- .../ActsExamples/EventData/SimSpacePoint.hpp | 44 +++--- .../ActsExamples/EventData/SimVertex.hpp | 9 +- Examples/Io/Csv/src/CsvDriftCircleReader.cpp | 7 +- Examples/Io/Csv/src/CsvMuonSimHitReader.cpp | 22 ++- Examples/Io/Csv/src/CsvSimHitReader.cpp | 6 +- .../include/ActsFatras/Geant4/Geant4Decay.hpp | 18 ++- Fatras/Geant4/src/Geant4Decay.cpp | 4 +- .../Digitization/DigitizationData.hpp | 5 +- .../Digitization/UncorrelatedHitSmearer.hpp | 2 - Fatras/include/ActsFatras/EventData/Hit.hpp | 30 ++-- .../include/ActsFatras/EventData/Particle.hpp | 86 ++++++----- .../ActsFatras/Kernel/InteractionList.hpp | 10 +- .../include/ActsFatras/Kernel/Simulation.hpp | 4 +- .../ActsFatras/Kernel/SimulationResult.hpp | 7 +- .../Kernel/detail/SimulationActor.hpp | 4 +- .../ActsFatras/Physics/Decay/NoDecay.hpp | 4 +- .../Physics/ElectroMagnetic/BetheHeitler.hpp | 11 +- .../ElectroMagnetic/PhotonConversion.hpp | 136 +++++++++--------- .../NuclearInteraction/NuclearInteraction.hpp | 29 ++-- .../Selectors/ParticleSelectors.hpp | 8 +- Fatras/src/Physics/BetheHeitler.cpp | 16 +-- .../NuclearInteraction/NuclearInteraction.cpp | 14 +- Fatras/src/Physics/PhotonConversion.cpp | 5 +- .../Acts/Plugins/Hashing/HashingAnnoy.ipp | 22 ++- .../Acts/Plugins/Hashing/HashingTraining.ipp | 18 ++- .../Core/Seeding/HoughTransformTest.cpp | 15 +- .../Core/Utilities/BoundingBoxTest.cpp | 129 ++++++++--------- Tests/UnitTests/Fatras/EventData/HitTests.cpp | 64 +++++---- .../Fatras/EventData/ParticleTests.cpp | 36 +++-- .../Fatras/Kernel/InteractionListTests.cpp | 23 ++- .../Fatras/Kernel/SimulationActorTests.cpp | 35 ++--- .../Fatras/Physics/PhotonConversionTests.cpp | 28 ++-- 45 files changed, 499 insertions(+), 584 deletions(-) diff --git a/Core/include/Acts/EventData/GenericBoundTrackParameters.hpp b/Core/include/Acts/EventData/GenericBoundTrackParameters.hpp index 38f297764b1..22567d8adf5 100644 --- a/Core/include/Acts/EventData/GenericBoundTrackParameters.hpp +++ b/Core/include/Acts/EventData/GenericBoundTrackParameters.hpp @@ -36,7 +36,6 @@ namespace Acts { template <class particle_hypothesis_t> class GenericBoundTrackParameters { public: - using Scalar = ActsScalar; using ParametersVector = BoundVector; using CovarianceMatrix = BoundSquareMatrix; using ParticleHypothesis = particle_hypothesis_t; @@ -92,10 +91,10 @@ class GenericBoundTrackParameters { /// successfully be converted to on-surface parameters. static Result<GenericBoundTrackParameters> create( std::shared_ptr<const Surface> surface, const GeometryContext& geoCtx, - const Vector4& pos4, const Vector3& dir, Scalar qOverP, + const Vector4& pos4, const Vector3& dir, double qOverP, std::optional<CovarianceMatrix> cov, ParticleHypothesis particleHypothesis, - ActsScalar tolerance = s_onSurfaceTolerance) { + double tolerance = s_onSurfaceTolerance) { Result<BoundVector> bound = transformFreeToBoundParameters(pos4.segment<3>(ePos0), pos4[eTime], dir, qOverP, *surface, geoCtx, tolerance); @@ -168,7 +167,7 @@ class GenericBoundTrackParameters { /// /// @tparam kIndex Track parameter index template <BoundIndices kIndex> - Scalar get() const { + double get() const { return m_params[kIndex]; } @@ -203,14 +202,14 @@ class GenericBoundTrackParameters { return m_surface->localToGlobal(geoCtx, localPosition(), direction()); } /// Time coordinate. - Scalar time() const { return m_params[eBoundTime]; } + double time() const { return m_params[eBoundTime]; } /// Phi direction. - Scalar phi() const { return m_params[eBoundPhi]; } + double phi() const { return m_params[eBoundPhi]; } /// Theta direction. - Scalar theta() const { return m_params[eBoundTheta]; } + double theta() const { return m_params[eBoundTheta]; } /// Charge over momentum. - Scalar qOverP() const { return m_params[eBoundQOverP]; } + double qOverP() const { return m_params[eBoundQOverP]; } /// Unit direction three-vector, i.e. the normalized momentum /// three-vector. @@ -219,18 +218,18 @@ class GenericBoundTrackParameters { m_params[eBoundTheta]); } /// Absolute momentum. - Scalar absoluteMomentum() const { + double absoluteMomentum() const { return m_particleHypothesis.extractMomentum(m_params[eBoundQOverP]); } /// Transverse momentum. - Scalar transverseMomentum() const { + double transverseMomentum() const { return std::sin(m_params[eBoundTheta]) * absoluteMomentum(); } /// Momentum three-vector. Vector3 momentum() const { return absoluteMomentum() * direction(); } /// Particle electric charge. - Scalar charge() const { + double charge() const { return m_particleHypothesis.extractCharge(get<eBoundQOverP>()); } diff --git a/Core/include/Acts/EventData/GenericCurvilinearTrackParameters.hpp b/Core/include/Acts/EventData/GenericCurvilinearTrackParameters.hpp index 6e4ed9bae7a..9764ad68cfc 100644 --- a/Core/include/Acts/EventData/GenericCurvilinearTrackParameters.hpp +++ b/Core/include/Acts/EventData/GenericCurvilinearTrackParameters.hpp @@ -30,7 +30,6 @@ class GenericCurvilinearTrackParameters using Base = GenericBoundTrackParameters<particle_hypothesis_t>; public: - using Scalar = ActsScalar; using ParametersVector = BoundVector; using CovarianceMatrix = BoundSquareMatrix; using ParticleHypothesis = particle_hypothesis_t; @@ -43,7 +42,7 @@ class GenericCurvilinearTrackParameters /// @param cov Curvilinear bound parameters covariance matrix /// @param particleHypothesis Particle hypothesis GenericCurvilinearTrackParameters(const Vector4& pos4, const Vector3& dir, - Scalar qOverP, + double qOverP, std::optional<CovarianceMatrix> cov, ParticleHypothesis particleHypothesis) : Base(CurvilinearSurface(pos4.segment<3>(ePos0), dir).surface(), @@ -58,8 +57,8 @@ class GenericCurvilinearTrackParameters /// @param qOverP Charge over momentum /// @param cov Curvilinear bound parameters covariance matrix /// @param particleHypothesis Particle hypothesis - GenericCurvilinearTrackParameters(const Vector4& pos4, Scalar phi, - Scalar theta, Scalar qOverP, + GenericCurvilinearTrackParameters(const Vector4& pos4, double phi, + double theta, double qOverP, std::optional<CovarianceMatrix> cov, ParticleHypothesis particleHypothesis) : Base(CurvilinearSurface(pos4.segment<3>(ePos0), diff --git a/Core/include/Acts/EventData/GenericFreeTrackParameters.hpp b/Core/include/Acts/EventData/GenericFreeTrackParameters.hpp index 7a2b4b46522..b0499dd3137 100644 --- a/Core/include/Acts/EventData/GenericFreeTrackParameters.hpp +++ b/Core/include/Acts/EventData/GenericFreeTrackParameters.hpp @@ -33,7 +33,6 @@ namespace Acts { template <class particle_hypothesis_t> class GenericFreeTrackParameters { public: - using Scalar = ActsScalar; using ParametersVector = FreeVector; using CovarianceMatrix = FreeSquareMatrix; using ParticleHypothesis = particle_hypothesis_t; @@ -66,7 +65,7 @@ class GenericFreeTrackParameters { /// @param cov Free parameters covariance matrix /// @param particleHypothesis Particle hypothesis GenericFreeTrackParameters(const Vector4& pos4, const Vector3& dir, - Scalar qOverP, std::optional<CovarianceMatrix> cov, + double qOverP, std::optional<CovarianceMatrix> cov, ParticleHypothesis particleHypothesis) : m_params(FreeVector::Zero()), m_cov(std::move(cov)), @@ -91,8 +90,8 @@ class GenericFreeTrackParameters { /// @param qOverP Charge over momentum /// @param cov Free parameters covariance matrix /// @param particleHypothesis Particle hypothesis - GenericFreeTrackParameters(const Vector4& pos4, Scalar phi, Scalar theta, - Scalar qOverP, std::optional<CovarianceMatrix> cov, + GenericFreeTrackParameters(const Vector4& pos4, double phi, double theta, + double qOverP, std::optional<CovarianceMatrix> cov, ParticleHypothesis particleHypothesis) : m_params(FreeVector::Zero()), m_cov(std::move(cov)), @@ -146,7 +145,7 @@ class GenericFreeTrackParameters { /// /// @tparam kIndex Track parameter index template <FreeIndices kIndex> - Scalar get() const { + double get() const { return m_params[kIndex]; } @@ -162,33 +161,33 @@ class GenericFreeTrackParameters { /// Spatial position three-vector. Vector3 position() const { return m_params.segment<3>(eFreePos0); } /// Time coordinate. - Scalar time() const { return m_params[eFreeTime]; } + double time() const { return m_params[eFreeTime]; } /// Phi direction. - Scalar phi() const { return VectorHelpers::phi(direction()); } + double phi() const { return VectorHelpers::phi(direction()); } /// Theta direction. - Scalar theta() const { return VectorHelpers::theta(direction()); } + double theta() const { return VectorHelpers::theta(direction()); } /// Charge over momentum. - Scalar qOverP() const { return m_params[eFreeQOverP]; } + double qOverP() const { return m_params[eFreeQOverP]; } /// Unit direction three-vector, i.e. the normalized momentum three-vector. Vector3 direction() const { return m_params.segment<3>(eFreeDir0).normalized(); } /// Absolute momentum. - Scalar absoluteMomentum() const { + double absoluteMomentum() const { return m_particleHypothesis.extractMomentum(m_params[eFreeQOverP]); } /// Transverse momentum. - Scalar transverseMomentum() const { + double transverseMomentum() const { // direction vector w/ arbitrary normalization can be parametrized as // [f*sin(theta)*cos(phi), f*sin(theta)*sin(phi), f*cos(theta)] // w/ f,sin(theta) positive, the transverse magnitude is then // sqrt(f^2*sin^2(theta)) = f*sin(theta) - Scalar transverseMagnitude2 = + double transverseMagnitude2 = square(m_params[eFreeDir0]) + square(m_params[eFreeDir1]); // absolute magnitude is f by construction - Scalar magnitude2 = transverseMagnitude2 + square(m_params[eFreeDir2]); + double magnitude2 = transverseMagnitude2 + square(m_params[eFreeDir2]); // such that we can extract sin(theta) = f*sin(theta) / f return std::sqrt(transverseMagnitude2 / magnitude2) * absoluteMomentum(); } @@ -196,7 +195,7 @@ class GenericFreeTrackParameters { Vector3 momentum() const { return absoluteMomentum() * direction(); } /// Particle electric charge. - Scalar charge() const { + double charge() const { return m_particleHypothesis.extractCharge(get<eFreeQOverP>()); } diff --git a/Core/include/Acts/EventData/MultiComponentTrackParameters.hpp b/Core/include/Acts/EventData/MultiComponentTrackParameters.hpp index 70ad87f8d77..cf932fc0470 100644 --- a/Core/include/Acts/EventData/MultiComponentTrackParameters.hpp +++ b/Core/include/Acts/EventData/MultiComponentTrackParameters.hpp @@ -34,7 +34,6 @@ class MultiComponentBoundTrackParameters { public: using Parameters = BoundTrackParameters; using ParticleHypothesis = Parameters::ParticleHypothesis; - using Scalar = typename Parameters::Scalar; using ParametersVector = typename Parameters::ParametersVector; using CovarianceMatrix = typename Parameters::CovarianceMatrix; @@ -159,7 +158,7 @@ class MultiComponentBoundTrackParameters { /// /// @tparam kIndex Track parameter index template <BoundIndices kIndex> - Scalar get() const { + double get() const { return reduce([&](const Parameters& p) { return p.get<kIndex>(); }); } @@ -180,7 +179,7 @@ class MultiComponentBoundTrackParameters { } /// Time coordinate. - Scalar time() const { + double time() const { return reduce([](const Parameters& p) { return p.time(); }); } @@ -192,21 +191,21 @@ class MultiComponentBoundTrackParameters { } /// Phi direction. - Scalar phi() const { return VectorHelpers::phi(direction()); } + double phi() const { return VectorHelpers::phi(direction()); } /// Theta direction. - Scalar theta() const { return VectorHelpers::theta(direction()); } + double theta() const { return VectorHelpers::theta(direction()); } /// Charge over momentum. - Scalar qOverP() const { return get<eBoundQOverP>(); } + double qOverP() const { return get<eBoundQOverP>(); } /// Absolute momentum. - Scalar absoluteMomentum() const { + double absoluteMomentum() const { return reduce([](const Parameters& p) { return p.absoluteMomentum(); }); } /// Transverse momentum. - Scalar transverseMomentum() const { + double transverseMomentum() const { return reduce([](const Parameters& p) { return p.transverseMomentum(); }); } @@ -216,7 +215,7 @@ class MultiComponentBoundTrackParameters { } /// Particle electric charge. - Scalar charge() const { + double charge() const { return reduce([](const Parameters& p) { return p.charge(); }); } @@ -238,8 +237,8 @@ class MultiComponentCurvilinearTrackParameters using covariance_t = BoundSquareMatrix; public: - using ConstructionTuple = std::tuple<double, Acts::Vector4, Acts::Vector3, - ActsScalar, covariance_t>; + using ConstructionTuple = + std::tuple<double, Acts::Vector4, Acts::Vector3, double, covariance_t>; private: using Base = MultiComponentBoundTrackParameters; diff --git a/Core/include/Acts/EventData/TrackParametersConcept.hpp b/Core/include/Acts/EventData/TrackParametersConcept.hpp index 5e4982545a4..4369fe57141 100644 --- a/Core/include/Acts/EventData/TrackParametersConcept.hpp +++ b/Core/include/Acts/EventData/TrackParametersConcept.hpp @@ -21,7 +21,6 @@ class Surface; namespace Concepts { template <typename Parameters> concept BasicTrackParameters = requires { - typename Parameters::Scalar; typename Parameters::ParametersVector; typename Parameters::CovarianceMatrix; diff --git a/Core/include/Acts/EventData/TrackStateProxy.hpp b/Core/include/Acts/EventData/TrackStateProxy.hpp index 741bfa5b511..b7b991fa2ee 100644 --- a/Core/include/Acts/EventData/TrackStateProxy.hpp +++ b/Core/include/Acts/EventData/TrackStateProxy.hpp @@ -82,17 +82,15 @@ template <std::size_t Size, bool ReadOnlyMaps = true> struct FixedSizeTypes { constexpr static auto Flags = Eigen::ColMajor | Eigen::AutoAlign; - using Scalar = ActsScalar; - // single items - using Coefficients = Eigen::Matrix<Scalar, Size, 1, Flags>; - using Covariance = Eigen::Matrix<Scalar, Size, Size, Flags>; + using Coefficients = Eigen::Matrix<double, Size, 1, Flags>; + using Covariance = Eigen::Matrix<double, Size, Size, Flags>; using CoefficientsMap = Eigen::Map<ConstIf<Coefficients, ReadOnlyMaps>>; using CovarianceMap = Eigen::Map<ConstIf<Covariance, ReadOnlyMaps>>; - using DynamicCoefficients = Eigen::Matrix<Scalar, Eigen::Dynamic, 1, Flags>; + using DynamicCoefficients = Eigen::Matrix<double, Eigen::Dynamic, 1, Flags>; using DynamicCovariance = - Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, Flags>; + Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Flags>; using DynamicCoefficientsMap = Eigen::Map<ConstIf<DynamicCoefficients, ReadOnlyMaps>>; using DynamicCovarianceMap = @@ -105,11 +103,9 @@ template <bool ReadOnlyMaps = true> struct DynamicSizeTypes { constexpr static auto Flags = Eigen::ColMajor | Eigen::AutoAlign; - using Scalar = ActsScalar; - - using Coefficients = Eigen::Matrix<Scalar, Eigen::Dynamic, 1, Flags>; + using Coefficients = Eigen::Matrix<double, Eigen::Dynamic, 1, Flags>; using Covariance = - Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, Flags>; + Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Flags>; using CoefficientsMap = Eigen::Map<ConstIf<Coefficients, ReadOnlyMaps>>; using CovarianceMap = Eigen::Map<ConstIf<Covariance, ReadOnlyMaps>>; }; @@ -119,8 +115,6 @@ struct DynamicSizeTypes { // This is public template <std::size_t M, bool ReadOnly = true> struct TrackStateTraits { - using Scalar = ActsScalar; - using Parameters = typename detail_lt::FixedSizeTypes<eBoundSize, ReadOnly>::CoefficientsMap; using Covariance = @@ -135,8 +129,8 @@ struct TrackStateTraits { typename detail_lt::DynamicSizeTypes<ReadOnly>::CovarianceMap; constexpr static auto ProjectorFlags = Eigen::RowMajor | Eigen::AutoAlign; - using Projector = Eigen::Matrix<Scalar, M, eBoundSize, ProjectorFlags>; - using EffectiveProjector = Eigen::Matrix<Scalar, Eigen::Dynamic, eBoundSize, + using Projector = Eigen::Matrix<double, M, eBoundSize, ProjectorFlags>; + using EffectiveProjector = Eigen::Matrix<double, Eigen::Dynamic, eBoundSize, ProjectorFlags, M, eBoundSize>; }; diff --git a/Core/include/Acts/Propagator/ConstrainedStep.hpp b/Core/include/Acts/Propagator/ConstrainedStep.hpp index e957b001281..412f308bac9 100644 --- a/Core/include/Acts/Propagator/ConstrainedStep.hpp +++ b/Core/include/Acts/Propagator/ConstrainedStep.hpp @@ -40,11 +40,9 @@ namespace Acts { /// The hierarchy is: /// - Overstepping resolution / backpropagation /// - Convergence -/// - Step into the void with `std::numeric_limits<Scalar>::max()` +/// - Step into the void with `std::numeric_limits<double>::max()` class ConstrainedStep { public: - using Scalar = ActsScalar; - /// the types of constraints /// from actor - this would be a typical navigation step /// from aborter - this would be a target condition @@ -53,26 +51,26 @@ class ConstrainedStep { constexpr ConstrainedStep() = default; - /// constructor from Scalar + /// constructor /// @param value is the user given initial value - constexpr explicit ConstrainedStep(Scalar value) { setUser(value); } + constexpr explicit ConstrainedStep(double value) { setUser(value); } - /// set accuracy by one Scalar + /// set accuracy /// /// this will set only the accuracy, as this is the most /// exposed to the Propagator /// /// @param value is the new accuracy value - constexpr void setAccuracy(Scalar value) { + constexpr void setAccuracy(double value) { assert(value > 0 && "ConstrainedStep accuracy must be > 0."); // set the accuracy value m_accuracy = value; } - /// set user by one Scalar + /// set user /// /// @param value is the new user value - constexpr void setUser(Scalar value) { + constexpr void setUser(double value) { // TODO enable assert; see https://github.com/acts-project/acts/issues/2543 // assert(value != 0 && "ConstrainedStep user must be != 0."); // set the user value @@ -80,20 +78,20 @@ class ConstrainedStep { } /// returns the min step size - constexpr Scalar value() const { - Scalar min = *std::min_element(m_values.begin(), m_values.end()); + constexpr double value() const { + double min = *std::min_element(m_values.begin(), m_values.end()); // accuracy is always positive and therefore handled separately - Scalar result = std::min(std::abs(min), m_accuracy); + double result = std::min(std::abs(min), m_accuracy); return std::signbit(min) ? -result : result; } /// Access a specific value /// /// @param type is the requested parameter type - constexpr Scalar value(Type type) const { return m_values[type]; } + constexpr double value(Type type) const { return m_values[type]; } /// Access the accuracy value - constexpr Scalar accuracy() const { return m_accuracy; } + constexpr double accuracy() const { return m_accuracy; } /// release a certain constraint value /// @@ -111,7 +109,7 @@ class ConstrainedStep { /// @param value is the new value to be updated /// @param type is the constraint type /// @param releaseStep Allow step size to increase again - constexpr void update(Scalar value, Type type, bool releaseStep = false) { + constexpr void update(double value, Type type, bool releaseStep = false) { if (releaseStep) { release(type); } @@ -127,7 +125,7 @@ class ConstrainedStep { std::ostream& toStream(std::ostream& os) const { // Helper method to avoid unreadable screen output - auto streamValue = [&](Scalar val) { + auto streamValue = [&](double val) { os << std::setw(5); if (std::abs(val) == kNotSet) { os << (val > 0 ? "+∞" : "-∞"); @@ -156,12 +154,12 @@ class ConstrainedStep { } private: - static constexpr auto kNotSet = std::numeric_limits<Scalar>::max(); + static constexpr auto kNotSet = std::numeric_limits<double>::max(); /// the step size tuple - std::array<Scalar, 3> m_values = {kNotSet, kNotSet, kNotSet}; + std::array<double, 3> m_values = {kNotSet, kNotSet, kNotSet}; /// the accuracy value - this can vary up and down given a good step estimator - Scalar m_accuracy = kNotSet; + double m_accuracy = kNotSet; }; inline std::ostream& operator<<(std::ostream& os, const ConstrainedStep& step) { diff --git a/Core/include/Acts/Propagator/EigenStepperDefaultExtension.hpp b/Core/include/Acts/Propagator/EigenStepperDefaultExtension.hpp index 2810b11a2a2..cb7939534f5 100644 --- a/Core/include/Acts/Propagator/EigenStepperDefaultExtension.hpp +++ b/Core/include/Acts/Propagator/EigenStepperDefaultExtension.hpp @@ -16,14 +16,10 @@ namespace Acts { -/// @brief Default evaluater of the k_i's and elements of the transport matrix +/// @brief Default evaluator of the k_i's and elements of the transport matrix /// D of the RKN4 stepping. This is a pure implementation by textbook. struct EigenStepperDefaultExtension { - using Scalar = ActsScalar; - /// @brief Vector3 replacement for the custom scalar type - using ThisVector3 = Eigen::Matrix<Scalar, 3, 1>; - - /// @brief Evaluater of the k_i's of the RKN4. For the case of i = 0 this + /// @brief Evaluator of the k_i's of the RKN4. For the case of i = 0 this /// step sets up qop, too. /// /// @tparam i Index of the k_i, i = [0, 3] @@ -43,9 +39,9 @@ struct EigenStepperDefaultExtension { template <int i, typename propagator_state_t, typename stepper_t, typename navigator_t> bool k(const propagator_state_t& state, const stepper_t& stepper, - const navigator_t& /*navigator*/, ThisVector3& knew, - const Vector3& bField, std::array<Scalar, 4>& kQoP, - const double h = 0., const ThisVector3& kprev = ThisVector3::Zero()) + const navigator_t& /*navigator*/, Vector3& knew, const Vector3& bField, + std::array<double, 4>& kQoP, const double h = 0., + const Vector3& kprev = Vector3::Zero()) requires(i >= 0 && i <= 3) { auto qop = stepper.qOverP(state.stepping); diff --git a/Core/include/Acts/Propagator/EigenStepperDenseExtension.hpp b/Core/include/Acts/Propagator/EigenStepperDenseExtension.hpp index 70dbb1cb820..a3d88ea1997 100644 --- a/Core/include/Acts/Propagator/EigenStepperDenseExtension.hpp +++ b/Core/include/Acts/Propagator/EigenStepperDenseExtension.hpp @@ -21,44 +21,40 @@ namespace Acts { -/// @brief Evaluater of the k_i's and elements of the transport matrix +/// @brief Evaluator of the k_i's and elements of the transport matrix /// D of the RKN4 stepping. This implementation involves energy loss due to -/// ioninisation, bremsstrahlung, pair production and photonuclear interaction -/// in the propagation and the jacobian. These effects will only occur if the +/// ionisation, bremsstrahlung, pair production and photonuclear interaction +/// in the propagation and the Jacobian. These effects will only occur if the /// propagation is in a TrackingVolume with attached material. struct EigenStepperDenseExtension { - using Scalar = ActsScalar; - /// @brief Vector3 replacement for the custom scalar type - using ThisVector3 = Eigen::Matrix<Scalar, 3, 1>; - /// Fallback extension EigenStepperDefaultExtension defaultExtension; /// Momentum at a certain point - Scalar currentMomentum = 0.; + double currentMomentum = 0.; /// Particles momentum at k1 - Scalar initialMomentum = 0.; + double initialMomentum = 0.; /// Material that will be passed /// TODO : Might not be needed anymore Material material; /// Derivatives dLambda''dlambda at each sub-step point - std::array<Scalar, 4> dLdl{}; + std::array<double, 4> dLdl{}; /// q/p at each sub-step - std::array<Scalar, 4> qop{}; + std::array<double, 4> qop{}; /// Derivatives dPds at each sub-step - std::array<Scalar, 4> dPds{}; + std::array<double, 4> dPds{}; /// Derivative d(dEds)d(q/p) evaluated at the initial point - Scalar dgdqopValue = 0.; + double dgdqopValue = 0.; /// Derivative dEds at the initial point - Scalar g = 0.; + double g = 0.; /// k_i equivalent for the time propagation - std::array<Scalar, 4> tKi{}; + std::array<double, 4> tKi{}; /// Lambda''_i - std::array<Scalar, 4> Lambdappi{}; + std::array<double, 4> Lambdappi{}; /// Energy at each sub-step - std::array<Scalar, 4> energy{}; + std::array<double, 4> energy{}; - /// @brief Evaluater of the k_i's of the RKN4. For the case of i = 0 this + /// @brief Evaluator of the k_i's of the RKN4. For the case of i = 0 this /// step sets up member parameters, too. /// /// @tparam i Index of the k_i, i = [0, 3] @@ -79,9 +75,9 @@ struct EigenStepperDenseExtension { template <int i, typename propagator_state_t, typename stepper_t, typename navigator_t> bool k(const propagator_state_t& state, const stepper_t& stepper, - const navigator_t& navigator, ThisVector3& knew, const Vector3& bField, - std::array<Scalar, 4>& kQoP, const double h = 0., - const ThisVector3& kprev = ThisVector3::Zero()) + const navigator_t& navigator, Vector3& knew, const Vector3& bField, + std::array<double, 4>& kQoP, const double h = 0., + const Vector3& kprev = Vector3::Zero()) requires(i >= 0 && i <= 3) { const auto* volumeMaterial = @@ -98,7 +94,7 @@ struct EigenStepperDenseExtension { // i = 0 is used for setup and evaluation of k if constexpr (i == 0) { // Set up for energy loss - ThisVector3 position = stepper.position(state.stepping); + Vector3 position = stepper.position(state.stepping); material = volumeMaterial->material(position.template cast<double>()); initialMomentum = stepper.absoluteMomentum(state.stepping); currentMomentum = initialMomentum; @@ -217,7 +213,7 @@ struct EigenStepperDenseExtension { } private: - /// @brief Evaluates the transport matrix D for the jacobian + /// @brief Evaluates the transport matrix D for the Jacobian /// /// @tparam propagator_state_t Type of the state of the propagator /// @tparam stepper_t Type of the stepper diff --git a/Examples/Algorithms/Generators/ActsExamples/Generators/ParametricParticleGenerator.cpp b/Examples/Algorithms/Generators/ActsExamples/Generators/ParametricParticleGenerator.cpp index 34363410f42..00411fc64c3 100644 --- a/Examples/Algorithms/Generators/ActsExamples/Generators/ParametricParticleGenerator.cpp +++ b/Examples/Algorithms/Generators/ActsExamples/Generators/ParametricParticleGenerator.cpp @@ -92,8 +92,8 @@ ParametricParticleGenerator::operator()(RandomEngine& rng) { SimParticleContainer::sequence_type particles; // create the primary vertex - auto& primaryVertex = vertices.emplace_back( - SimVertexBarcode{0}, SimVertex::Vector4(0., 0., 0., 0.)); + auto& primaryVertex = + vertices.emplace_back(SimVertexBarcode{0}, Acts::Vector4(0., 0., 0., 0.)); // counter will be reused as barcode particle number which must be non-zero. for (std::size_t ip = 1; ip <= m_cfg.numParticles; ++ip) { diff --git a/Examples/Algorithms/GeneratorsPythia8/ActsExamples/Generators/Pythia8ProcessGenerator.cpp b/Examples/Algorithms/GeneratorsPythia8/ActsExamples/Generators/Pythia8ProcessGenerator.cpp index cd80d64bf08..1b774a7bdf0 100644 --- a/Examples/Algorithms/GeneratorsPythia8/ActsExamples/Generators/Pythia8ProcessGenerator.cpp +++ b/Examples/Algorithms/GeneratorsPythia8/ActsExamples/Generators/Pythia8ProcessGenerator.cpp @@ -121,8 +121,7 @@ Pythia8Generator::operator()(RandomEngine& rng) { } // create the primary vertex - vertices.emplace_back(SimVertexBarcode{0}, - SimVertex::Vector4(0., 0., 0., 0.)); + vertices.emplace_back(SimVertexBarcode{0}, Acts::Vector4(0., 0., 0., 0.)); // convert generated final state particles into internal format for (int ip = 0; ip < m_pythia8->event.size(); ++ip) { diff --git a/Examples/Framework/include/ActsExamples/EventData/DriftCircle.hpp b/Examples/Framework/include/ActsExamples/EventData/DriftCircle.hpp index 88cad84fffe..3d9ab8c241f 100644 --- a/Examples/Framework/include/ActsExamples/EventData/DriftCircle.hpp +++ b/Examples/Framework/include/ActsExamples/EventData/DriftCircle.hpp @@ -23,8 +23,6 @@ namespace ActsExamples { /// representation of a drift circle measurement used for track finding class DriftCircle { - using Scalar = Acts::ActsScalar; - public: /// Construct the drift circle from the drift radius and tube location /// @@ -52,11 +50,11 @@ class DriftCircle { m_tubeLayer(tubeLayer), m_tube(tube) {} - constexpr Scalar x() const { return m_x; } - constexpr Scalar y() const { return m_y; } - constexpr Scalar z() const { return m_z; } - constexpr Scalar rDrift() const { return m_rho; } - constexpr Scalar rDriftError() const { return m_sigmaRho; } + constexpr double x() const { return m_x; } + constexpr double y() const { return m_y; } + constexpr double z() const { return m_z; } + constexpr double rDrift() const { return m_rho; } + constexpr double rDriftError() const { return m_sigmaRho; } constexpr int stationName() const { return m_stationName; } constexpr int stationEta() const { return m_stationEta; } constexpr int stationPhi() const { return m_stationPhi; } @@ -66,11 +64,11 @@ class DriftCircle { private: // Global position - Scalar m_x = 0.0f; - Scalar m_y = 0.0f; - Scalar m_z = 0.0f; - Scalar m_rho = 0.0f; - Scalar m_sigmaRho = 0.0f; + double m_x = 0.; + double m_y = 0.; + double m_z = 0.; + double m_rho = 0.; + double m_sigmaRho = 0.; int m_stationName = 0; int m_stationEta = 0; int m_stationPhi = 0; diff --git a/Examples/Framework/include/ActsExamples/EventData/SimParticle.hpp b/Examples/Framework/include/ActsExamples/EventData/SimParticle.hpp index cfcf8a5e25e..2bf9dcc8cbc 100644 --- a/Examples/Framework/include/ActsExamples/EventData/SimParticle.hpp +++ b/Examples/Framework/include/ActsExamples/EventData/SimParticle.hpp @@ -23,10 +23,6 @@ using SimParticleState = ::ActsFatras::Particle; class SimParticle final { public: - using Scalar = Acts::ActsScalar; - using Vector3 = Acts::ActsVector<3>; - using Vector4 = Acts::ActsVector<4>; - /// Construct a default particle with invalid identity. SimParticle() = default; @@ -39,8 +35,8 @@ class SimParticle final { /// /// @warning It is the users responsibility that charge and mass match /// the PDG particle number. - SimParticle(SimBarcode particleId, Acts::PdgParticle pdg, Scalar charge, - Scalar mass) + SimParticle(SimBarcode particleId, Acts::PdgParticle pdg, double charge, + double mass) : m_initial(particleId, pdg, charge, mass), m_final(particleId, pdg, charge, mass) {} @@ -89,13 +85,13 @@ class SimParticle final { return *this; } /// Set the charge. - SimParticle& setCharge(Scalar charge) { + SimParticle& setCharge(double charge) { initial().setCharge(charge); final().setCharge(charge); return *this; } /// Set the mass. - SimParticle& setMass(Scalar mass) { + SimParticle& setMass(double mass) { initial().setMass(mass); final().setMass(mass); return *this; diff --git a/Examples/Framework/include/ActsExamples/EventData/SimSpacePoint.hpp b/Examples/Framework/include/ActsExamples/EventData/SimSpacePoint.hpp index 0359913199f..bf5780c5a76 100644 --- a/Examples/Framework/include/ActsExamples/EventData/SimSpacePoint.hpp +++ b/Examples/Framework/include/ActsExamples/EventData/SimSpacePoint.hpp @@ -23,8 +23,6 @@ namespace ActsExamples { /// Space point representation of a measurement suitable for track seeding. class SimSpacePoint { - using Scalar = Acts::ActsScalar; - public: /// Construct the space point from global position and selected variances. /// @@ -44,10 +42,10 @@ class SimSpacePoint { /// @param validDoubleMeasurementDetails boolean to check if double measurements are valid template <typename position_t> SimSpacePoint( - const Eigen::MatrixBase<position_t>& pos, std::optional<Scalar> t, - Scalar varRho, Scalar varZ, std::optional<Scalar> varT, + const Eigen::MatrixBase<position_t>& pos, std::optional<double> t, + double varRho, double varZ, std::optional<double> varT, boost::container::static_vector<Acts::SourceLink, 2> sourceLinks, - Scalar topHalfStripLength, Scalar bottomHalfStripLength, + double topHalfStripLength, double bottomHalfStripLength, const Acts::Vector3& topStripDirection, const Acts::Vector3& bottomStripDirection, const Acts::Vector3& stripCenterDistance, @@ -82,8 +80,8 @@ class SimSpacePoint { /// @param sourceLinks sourceLinks of the measurements template <typename position_t> SimSpacePoint( - const Eigen::MatrixBase<position_t>& pos, std::optional<Scalar> t, - Scalar varRho, Scalar varZ, std::optional<Scalar> varT, + const Eigen::MatrixBase<position_t>& pos, std::optional<double> t, + double varRho, double varZ, std::optional<double> varT, boost::container::static_vector<Acts::SourceLink, 2> sourceLinks) : m_x(pos[Acts::ePos0]), m_y(pos[Acts::ePos1]), @@ -97,14 +95,14 @@ class SimSpacePoint { EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(position_t, 3); } - constexpr Scalar x() const { return m_x; } - constexpr Scalar y() const { return m_y; } - constexpr Scalar z() const { return m_z; } - constexpr std::optional<Scalar> t() const { return m_t; } - constexpr Scalar r() const { return m_rho; } - constexpr Scalar varianceR() const { return m_varianceRho; } - constexpr Scalar varianceZ() const { return m_varianceZ; } - constexpr std::optional<Scalar> varianceT() const { return m_varianceT; } + constexpr double x() const { return m_x; } + constexpr double y() const { return m_y; } + constexpr double z() const { return m_z; } + constexpr std::optional<double> t() const { return m_t; } + constexpr double r() const { return m_rho; } + constexpr double varianceR() const { return m_varianceRho; } + constexpr double varianceZ() const { return m_varianceZ; } + constexpr std::optional<double> varianceT() const { return m_varianceT; } const boost::container::static_vector<Acts::SourceLink, 2>& sourceLinks() const { @@ -127,15 +125,15 @@ class SimSpacePoint { private: // Global position - Scalar m_x; - Scalar m_y; - Scalar m_z; - std::optional<Scalar> m_t; - Scalar m_rho; + double m_x; + double m_y; + double m_z; + std::optional<double> m_t; + double m_rho; // Variance in rho/z of the global coordinates - Scalar m_varianceRho; - Scalar m_varianceZ; - std::optional<Scalar> m_varianceT; + double m_varianceRho; + double m_varianceZ; + std::optional<double> m_varianceT; // SourceLinks of the corresponding measurements. A Pixel (strip) SP has one // (two) sourceLink(s). boost::container::static_vector<Acts::SourceLink, 2> m_sourceLinks; diff --git a/Examples/Framework/include/ActsExamples/EventData/SimVertex.hpp b/Examples/Framework/include/ActsExamples/EventData/SimVertex.hpp index 0bdfbb4925c..db906790e8b 100644 --- a/Examples/Framework/include/ActsExamples/EventData/SimVertex.hpp +++ b/Examples/Framework/include/ActsExamples/EventData/SimVertex.hpp @@ -77,13 +77,10 @@ class SimVertexBarcode { /// A simulated vertex e.g. from a physics process. struct SimVertex { - using Scalar = Acts::ActsScalar; - using Vector4 = Acts::ActsVector<4>; - /// The vertex ID SimVertexBarcode id; /// The vertex four-position - Vector4 position4 = Vector4::Zero(); + Acts::Vector4 position4 = Acts::Vector4::Zero(); /// The vertex process type ActsFatras::ProcessType process = ActsFatras::ProcessType::eUndefined; /// The incoming particles into the vertex @@ -99,7 +96,7 @@ struct SimVertex { /// Associated particles are left empty by default and must be filled by the /// user after construction. SimVertex( - SimVertexBarcode id_, const Vector4& position4_, + SimVertexBarcode id_, const Acts::Vector4& position4_, ActsFatras::ProcessType process_ = ActsFatras::ProcessType::eUndefined) : id(id_), position4(position4_), process(process_) {} // explicitly default rule-of-five. @@ -113,7 +110,7 @@ struct SimVertex { /// The vertex three-position. auto position() const { return position4.head<3>(); } /// The vertex time. - Scalar time() const { return position4[3]; } + double time() const { return position4[3]; } }; namespace detail { diff --git a/Examples/Io/Csv/src/CsvDriftCircleReader.cpp b/Examples/Io/Csv/src/CsvDriftCircleReader.cpp index ce179d9d5be..ad2500637ed 100644 --- a/Examples/Io/Csv/src/CsvDriftCircleReader.cpp +++ b/Examples/Io/Csv/src/CsvDriftCircleReader.cpp @@ -61,10 +61,9 @@ ActsExamples::ProcessCode ActsExamples::CsvDriftCircleReader::read( MuonDriftCircleData data; while (reader.read(data)) { - ActsFatras::Hit::Vector3 tube_pos{ - data.tubePositionx * Acts::UnitConstants::mm, - data.tubePositiony * Acts::UnitConstants::mm, - data.tubePositionz * Acts::UnitConstants::mm}; + Acts::Vector3 tube_pos{data.tubePositionx * Acts::UnitConstants::mm, + data.tubePositiony * Acts::UnitConstants::mm, + data.tubePositionz * Acts::UnitConstants::mm}; DriftCircles.push_back(DriftCircle(std::move(tube_pos), data.driftRadius, 0.0f, data.stationName, data.stationEta, diff --git a/Examples/Io/Csv/src/CsvMuonSimHitReader.cpp b/Examples/Io/Csv/src/CsvMuonSimHitReader.cpp index 58240dcecce..28836dc48de 100644 --- a/Examples/Io/Csv/src/CsvMuonSimHitReader.cpp +++ b/Examples/Io/Csv/src/CsvMuonSimHitReader.cpp @@ -61,18 +61,16 @@ ActsExamples::ProcessCode ActsExamples::CsvMuonSimHitReader::read( SimHitContainer::sequence_type unordered; while (reader.read(data)) { - ActsFatras::Hit::Vector4 pos{ - data.LocalPositionExtrx * Acts::UnitConstants::mm, - data.LocalPositionExtry * Acts::UnitConstants::mm, - data.LocalPositionExtrz * Acts::UnitConstants::mm, 0}; - ActsFatras::Hit::Vector4 mom{ - data.LocalDirectionx * Acts::UnitConstants::GeV, - data.LocalDirectiony * Acts::UnitConstants::GeV, - data.LocalDirectionz * Acts::UnitConstants::GeV, - std::sqrt(data.LocalDirectionx * data.LocalDirectionx + - data.LocalDirectiony * data.LocalDirectiony + - data.LocalDirectionz * data.LocalDirectionz) * - Acts::UnitConstants::GeV}; + Acts::Vector4 pos{data.LocalPositionExtrx * Acts::UnitConstants::mm, + data.LocalPositionExtry * Acts::UnitConstants::mm, + data.LocalPositionExtrz * Acts::UnitConstants::mm, 0}; + Acts::Vector4 mom{data.LocalDirectionx * Acts::UnitConstants::GeV, + data.LocalDirectiony * Acts::UnitConstants::GeV, + data.LocalDirectionz * Acts::UnitConstants::GeV, + std::sqrt(data.LocalDirectionx * data.LocalDirectionx + + data.LocalDirectiony * data.LocalDirectiony + + data.LocalDirectionz * data.LocalDirectionz) * + Acts::UnitConstants::GeV}; MuonMdtIdentifierFields f; f.multilayer = 0; f.tube = 0; diff --git a/Examples/Io/Csv/src/CsvSimHitReader.cpp b/Examples/Io/Csv/src/CsvSimHitReader.cpp index 949b6d4ce5c..ca77c7e0aa4 100644 --- a/Examples/Io/Csv/src/CsvSimHitReader.cpp +++ b/Examples/Io/Csv/src/CsvSimHitReader.cpp @@ -66,19 +66,19 @@ ActsExamples::ProcessCode ActsExamples::CsvSimHitReader::read( // TODO validate geo id consistency const auto particleId = ActsFatras::Barcode(data.particle_id); - ActsFatras::Hit::Vector4 pos4{ + Acts::Vector4 pos4{ data.tx * Acts::UnitConstants::mm, data.ty * Acts::UnitConstants::mm, data.tz * Acts::UnitConstants::mm, data.tt * Acts::UnitConstants::mm, }; - ActsFatras::Hit::Vector4 mom4{ + Acts::Vector4 mom4{ data.tpx * Acts::UnitConstants::GeV, data.tpy * Acts::UnitConstants::GeV, data.tpz * Acts::UnitConstants::GeV, data.te * Acts::UnitConstants::GeV, }; - ActsFatras::Hit::Vector4 delta4{ + Acts::Vector4 delta4{ data.deltapx * Acts::UnitConstants::GeV, data.deltapy * Acts::UnitConstants::GeV, data.deltapz * Acts::UnitConstants::GeV, diff --git a/Fatras/Geant4/include/ActsFatras/Geant4/Geant4Decay.hpp b/Fatras/Geant4/include/ActsFatras/Geant4/Geant4Decay.hpp index 177e3ac6221..758df351071 100644 --- a/Fatras/Geant4/include/ActsFatras/Geant4/Geant4Decay.hpp +++ b/Fatras/Geant4/include/ActsFatras/Geant4/Geant4Decay.hpp @@ -27,8 +27,6 @@ namespace ActsFatras { /// Handle particle decays using the Geant4 decay models. class Geant4Decay { public: - using Scalar = Particle::Scalar; - /// Constructor Geant4Decay(); @@ -40,7 +38,7 @@ class Geant4Decay { /// /// @return Proper time limit of the particle template <typename generator_t> - Scalar generateProperTimeLimit(generator_t& generator, + double generateProperTimeLimit(generator_t& generator, const Particle& particle) const; /// Decay the particle and create the decay products. @@ -67,13 +65,13 @@ class Geant4Decay { }; template <typename generator_t> -Particle::Scalar Geant4Decay::generateProperTimeLimit( - generator_t& generator, const Particle& particle) const { +double Geant4Decay::generateProperTimeLimit(generator_t& generator, + const Particle& particle) const { // Get the particle properties const Acts::PdgParticle pdgCode = particle.pdg(); // Keep muons stable if (makeAbsolutePdgParticle(pdgCode) == Acts::PdgParticle::eMuon) { - return std::numeric_limits<Scalar>::infinity(); + return std::numeric_limits<double>::infinity(); } // Get the Geant4 particle @@ -81,14 +79,14 @@ Particle::Scalar Geant4Decay::generateProperTimeLimit( // Fast exit if the particle is stable if (!pDef || pDef->GetPDGStable()) { - return std::numeric_limits<Scalar>::infinity(); + return std::numeric_limits<double>::infinity(); } // Get average lifetime - constexpr Scalar convertTime = Acts::UnitConstants::mm / CLHEP::s; - const Scalar tau = pDef->GetPDGLifeTime() * convertTime; + constexpr double convertTime = Acts::UnitConstants::mm / CLHEP::s; + const double tau = pDef->GetPDGLifeTime() * convertTime; // Sample & return the lifetime - std::uniform_real_distribution<Scalar> uniformDistribution{0., 1.}; + std::uniform_real_distribution<double> uniformDistribution{0., 1.}; return -tau * std::log(uniformDistribution(generator)); } diff --git a/Fatras/Geant4/src/Geant4Decay.cpp b/Fatras/Geant4/src/Geant4Decay.cpp index 41b5a3656b1..bf23566aa05 100644 --- a/Fatras/Geant4/src/Geant4Decay.cpp +++ b/Fatras/Geant4/src/Geant4Decay.cpp @@ -50,7 +50,7 @@ std::vector<ActsFatras::Particle> ActsFatras::Geant4Decay::decayParticle( } // Boost the decay products using the parents four-momentum - const Particle::Vector4 mom4 = parent.fourMomentum(); + const Acts::Vector4 mom4 = parent.fourMomentum(); products->Boost(mom4[Acts::eMom0] / mom4[Acts::eEnergy], mom4[Acts::eMom1] / mom4[Acts::eEnergy], mom4[Acts::eMom2] / mom4[Acts::eEnergy]); @@ -64,7 +64,7 @@ std::vector<ActsFatras::Particle> ActsFatras::Geant4Decay::decayParticle( // Convert the decay product from Geant4 to Acts const G4ThreeVector& mom = prod->GetMomentum(); - constexpr Scalar convertEnergy = Acts::UnitConstants::GeV / CLHEP::GeV; + constexpr double convertEnergy = Acts::UnitConstants::GeV / CLHEP::GeV; Acts::Vector3 amgMom(mom.x(), mom.y(), mom.z()); amgMom *= convertEnergy; const std::int32_t pdg = prod->GetPDGcode(); diff --git a/Fatras/include/ActsFatras/Digitization/DigitizationData.hpp b/Fatras/include/ActsFatras/Digitization/DigitizationData.hpp index 314cbcc5eb1..f2e808e00cb 100644 --- a/Fatras/include/ActsFatras/Digitization/DigitizationData.hpp +++ b/Fatras/include/ActsFatras/Digitization/DigitizationData.hpp @@ -17,7 +17,7 @@ namespace ActsFatras { /// A single cell definition: index, cell central value -using Cell = std::pair<unsigned int, Acts::ActsScalar>; +using Cell = std::pair<unsigned int, double>; /// A channel definition: Cell identification, readout word, links /// @@ -35,7 +35,7 @@ struct Channel { /// Channel constructor /// - /// @param cellId_ The Cell idenficiation and position + /// @param cellId_ The Cell identification and position /// @param value_ The Cell value /// @param links_ The (optional) links to e.g. truth indices Channel(std::array<Cell, kSize> cellId_, signal_t value_, @@ -51,7 +51,6 @@ struct Channel { /// @tparam kSize Number of cluster coordinates template <typename signal_t, std::size_t kSize> struct Cluster { - using Scalar = Acts::ActsScalar; using ParametersVector = Acts::ActsVector<kSize>; using CovarianceMatrix = Acts::ActsSquareMatrix<kSize>; diff --git a/Fatras/include/ActsFatras/Digitization/UncorrelatedHitSmearer.hpp b/Fatras/include/ActsFatras/Digitization/UncorrelatedHitSmearer.hpp index 4420c8a6200..caf5efa8c61 100644 --- a/Fatras/include/ActsFatras/Digitization/UncorrelatedHitSmearer.hpp +++ b/Fatras/include/ActsFatras/Digitization/UncorrelatedHitSmearer.hpp @@ -41,7 +41,6 @@ using SingleParameterSmearFunction = /// vector and associated covariance matrix. template <typename generator_t, std::size_t kSize> struct BoundParametersSmearer { - using Scalar = Acts::ActsScalar; using ParametersVector = Acts::ActsVector<kSize>; using CovarianceMatrix = Acts::ActsSquareMatrix<kSize>; using Result = Acts::Result<std::pair<ParametersVector, CovarianceMatrix>>; @@ -116,7 +115,6 @@ struct BoundParametersSmearer { /// individually is not recommended template <typename generator_t, std::size_t kSize> struct FreeParametersSmearer { - using Scalar = Acts::ActsScalar; using ParametersVector = Acts::ActsVector<kSize>; using CovarianceMatrix = Acts::ActsSquareMatrix<kSize>; using Result = Acts::Result<std::pair<ParametersVector, CovarianceMatrix>>; diff --git a/Fatras/include/ActsFatras/EventData/Hit.hpp b/Fatras/include/ActsFatras/EventData/Hit.hpp index d5eb25662f8..b3838299ca6 100644 --- a/Fatras/include/ActsFatras/EventData/Hit.hpp +++ b/Fatras/include/ActsFatras/EventData/Hit.hpp @@ -26,10 +26,6 @@ namespace ActsFatras { /// thus stored as two separate four-vectors. class Hit { public: - using Scalar = Acts::ActsScalar; - using Vector3 = Acts::ActsVector<3>; - using Vector4 = Acts::ActsVector<4>; - /// Construct default hit with (mostly) invalid information. Hit() = default; /// Construct from four-position and four-momenta. @@ -45,8 +41,8 @@ class Hit { /// users responsibility to ensure that the position correspond to a /// position on the given surface. Hit(Acts::GeometryIdentifier geometryId, Barcode particleId, - const Vector4& pos4, const Vector4& before4, const Vector4& after4, - std::int32_t index_ = -1) + const Acts::Vector4& pos4, const Acts::Vector4& before4, + const Acts::Vector4& after4, std::int32_t index_ = -1) : m_geometryId(geometryId), m_particleId(particleId), m_index(index_), @@ -68,26 +64,26 @@ class Hit { constexpr std::int32_t index() const { return m_index; } /// Space-time position four-vector. - const Vector4& fourPosition() const { return m_pos4; } + const Acts::Vector4& fourPosition() const { return m_pos4; } /// Three-position, i.e. spatial coordinates without the time. auto position() const { return m_pos4.segment<3>(Acts::ePos0); } /// Time coordinate. - Scalar time() const { return m_pos4[Acts::eTime]; } + double time() const { return m_pos4[Acts::eTime]; } /// Particle four-momentum before the hit. - const Vector4& momentum4Before() const { return m_before4; } + const Acts::Vector4& momentum4Before() const { return m_before4; } /// Particle four-momentum after the hit. - const Vector4& momentum4After() const { return m_after4; } + const Acts::Vector4& momentum4After() const { return m_after4; } /// Normalized particle direction vector before the hit. - Vector3 directionBefore() const { + Acts::Vector3 directionBefore() const { return m_before4.segment<3>(Acts::eMom0).normalized(); } /// Normalized particle direction vector the hit. - Vector3 directionAfter() const { + Acts::Vector3 directionAfter() const { return m_after4.segment<3>(Acts::eMom0).normalized(); } /// Average normalized particle direction vector through the surface. - Vector3 direction() const { + Acts::Vector3 direction() const { auto dir0 = m_before4.segment<3>(Acts::eMom0).normalized(); auto dir1 = m_after4.segment<3>(Acts::eMom0).normalized(); return ((dir0 + dir1) / 2.).segment<3>(Acts::eMom0).normalized(); @@ -96,7 +92,7 @@ class Hit { /// /// @retval positive if the particle lost energy when it passed the surface /// @retval negative if magic was involved - Scalar depositedEnergy() const { + double depositedEnergy() const { return m_before4[Acts::eEnergy] - m_after4[Acts::eEnergy]; } @@ -108,11 +104,11 @@ class Hit { /// Index of the hit along the particle trajectory. std::int32_t m_index = -1; /// Global space-time position four-vector. - Vector4 m_pos4 = Vector4::Zero(); + Acts::Vector4 m_pos4 = Acts::Vector4::Zero(); /// Global particle energy-momentum four-vector before the hit. - Vector4 m_before4 = Vector4::Zero(); + Acts::Vector4 m_before4 = Acts::Vector4::Zero(); /// Global particle energy-momentum four-vector after the hit. - Vector4 m_after4 = Vector4::Zero(); + Acts::Vector4 m_after4 = Acts::Vector4::Zero(); }; } // namespace ActsFatras diff --git a/Fatras/include/ActsFatras/EventData/Particle.hpp b/Fatras/include/ActsFatras/EventData/Particle.hpp index 5b6eb2f7a61..fbf9244fcea 100644 --- a/Fatras/include/ActsFatras/EventData/Particle.hpp +++ b/Fatras/include/ActsFatras/EventData/Particle.hpp @@ -32,10 +32,6 @@ namespace ActsFatras { /// Also stores some simulation-specific properties. class Particle { public: - using Scalar = Acts::ActsScalar; - using Vector3 = Acts::ActsVector<3>; - using Vector4 = Acts::ActsVector<4>; - /// Construct a default particle with invalid identity. Particle() = default; /// Construct a particle at rest with explicit mass and charge. @@ -47,8 +43,8 @@ class Particle { /// /// @warning It is the users responsibility that charge and mass match /// the PDG particle number. - Particle(Barcode particleId, Acts::PdgParticle pdg, Scalar charge, - Scalar mass) + Particle(Barcode particleId, Acts::PdgParticle pdg, double charge, + double mass) : m_particleId(particleId), m_pdg(pdg), m_charge(charge), m_mass(mass) {} /// Construct a particle at rest from a PDG particle number. /// @@ -84,12 +80,12 @@ class Particle { return *this; } /// Set the charge. - Particle setCharge(Scalar charge) { + Particle setCharge(double charge) { m_charge = charge; return *this; } /// Set the mass. - Particle setMass(Scalar mass) { + Particle setMass(double mass) { m_mass = mass; return *this; } @@ -99,18 +95,18 @@ class Particle { return *this; } /// Set the space-time position four-vector. - Particle &setPosition4(const Vector4 &pos4) { + Particle &setPosition4(const Acts::Vector4 &pos4) { m_position4 = pos4; return *this; } /// Set the space-time position four-vector from three-position and time. - Particle &setPosition4(const Vector3 &position, Scalar time) { + Particle &setPosition4(const Acts::Vector3 &position, double time) { m_position4.segment<3>(Acts::ePos0) = position; m_position4[Acts::eTime] = time; return *this; } /// Set the space-time position four-vector from scalar components. - Particle &setPosition4(Scalar x, Scalar y, Scalar z, Scalar time) { + Particle &setPosition4(double x, double y, double z, double time) { m_position4[Acts::ePos0] = x; m_position4[Acts::ePos1] = y; m_position4[Acts::ePos2] = z; @@ -118,13 +114,13 @@ class Particle { return *this; } /// Set the direction three-vector - Particle &setDirection(const Vector3 &direction) { + Particle &setDirection(const Acts::Vector3 &direction) { m_direction = direction; m_direction.normalize(); return *this; } /// Set the direction three-vector from scalar components. - Particle &setDirection(Scalar dx, Scalar dy, Scalar dz) { + Particle &setDirection(double dx, double dy, double dz) { m_direction[Acts::ePos0] = dx; m_direction[Acts::ePos1] = dy; m_direction[Acts::ePos2] = dz; @@ -132,7 +128,7 @@ class Particle { return *this; } /// Set the absolute momentum. - Particle &setAbsoluteMomentum(Scalar absMomentum) { + Particle &setAbsoluteMomentum(double absMomentum) { m_absMomentum = absMomentum; return *this; } @@ -142,10 +138,10 @@ class Particle { /// Energy loss corresponds to a negative change. If the updated energy /// would result in an unphysical value, the particle is put to rest, i.e. /// its absolute momentum is set to zero. - Particle &correctEnergy(Scalar delta) { + Particle &correctEnergy(double delta) { const auto newEnergy = std::hypot(m_mass, m_absMomentum) + delta; if (newEnergy <= m_mass) { - m_absMomentum = Scalar{0}; + m_absMomentum = 0.; } else { m_absMomentum = std::sqrt(newEnergy * newEnergy - m_mass * m_mass); } @@ -163,30 +159,30 @@ class Particle { return Acts::makeAbsolutePdgParticle(pdg()); } /// Particle charge. - Scalar charge() const { return m_charge; } + double charge() const { return m_charge; } /// Particle absolute charge. - Scalar absoluteCharge() const { return std::abs(m_charge); } + double absoluteCharge() const { return std::abs(m_charge); } /// Particle mass. - Scalar mass() const { return m_mass; } + double mass() const { return m_mass; } /// Particle hypothesis. Acts::ParticleHypothesis hypothesis() const { return Acts::ParticleHypothesis(absolutePdg(), mass(), absoluteCharge()); } /// Particl qOverP. - Scalar qOverP() const { + double qOverP() const { return hypothesis().qOverP(absoluteMomentum(), charge()); } /// Space-time position four-vector. - const Vector4 &fourPosition() const { return m_position4; } + const Acts::Vector4 &fourPosition() const { return m_position4; } /// Three-position, i.e. spatial coordinates without the time. auto position() const { return m_position4.segment<3>(Acts::ePos0); } /// Time coordinate. - Scalar time() const { return m_position4[Acts::eTime]; } + double time() const { return m_position4[Acts::eTime]; } /// Energy-momentum four-vector. - Vector4 fourMomentum() const { - Vector4 mom4; + Acts::Vector4 fourMomentum() const { + Acts::Vector4 mom4; // stored direction is always normalized mom4[Acts::eMom0] = m_absMomentum * m_direction[Acts::ePos0]; mom4[Acts::eMom1] = m_absMomentum * m_direction[Acts::ePos1]; @@ -195,24 +191,24 @@ class Particle { return mom4; } /// Unit three-direction, i.e. the normalized momentum three-vector. - const Vector3 &direction() const { return m_direction; } + const Acts::Vector3 &direction() const { return m_direction; } /// Polar angle. - Scalar theta() const { return Acts::VectorHelpers::theta(direction()); } + double theta() const { return Acts::VectorHelpers::theta(direction()); } /// Azimuthal angle. - Scalar phi() const { return Acts::VectorHelpers::phi(direction()); } + double phi() const { return Acts::VectorHelpers::phi(direction()); } /// Absolute momentum in the x-y plane. - Scalar transverseMomentum() const { + double transverseMomentum() const { return m_absMomentum * m_direction.segment<2>(Acts::eMom0).norm(); } /// Absolute momentum. - Scalar absoluteMomentum() const { return m_absMomentum; } + double absoluteMomentum() const { return m_absMomentum; } /// Absolute momentum. - Vector3 momentum() const { return absoluteMomentum() * direction(); } + Acts::Vector3 momentum() const { return absoluteMomentum() * direction(); } /// Total energy, i.e. norm of the four-momentum. - Scalar energy() const { return std::hypot(m_mass, m_absMomentum); } + double energy() const { return std::hypot(m_mass, m_absMomentum); } /// Check if the particle is alive, i.e. is not at rest. - bool isAlive() const { return Scalar{0} < m_absMomentum; } + bool isAlive() const { return 0. < m_absMomentum; } /// Check if this is a secondary particle. bool isSecondary() const { @@ -225,26 +221,26 @@ class Particle { /// Set the proper time in the particle rest frame. /// /// @param properTime passed proper time in the rest frame - Particle &setProperTime(Scalar properTime) { + Particle &setProperTime(double properTime) { m_properTime = properTime; return *this; } /// Proper time in the particle rest frame. - Scalar properTime() const { return m_properTime; } + double properTime() const { return m_properTime; } /// Set the accumulated material measured in radiation/interaction lengths. /// /// @param pathInX0 accumulated material measured in radiation lengths /// @param pathInL0 accumulated material measured in interaction lengths - Particle &setMaterialPassed(Scalar pathInX0, Scalar pathInL0) { + Particle &setMaterialPassed(double pathInX0, double pathInL0) { m_pathInX0 = pathInX0; m_pathInL0 = pathInL0; return *this; } /// Accumulated path within material measured in radiation lengths. - Scalar pathInX0() const { return m_pathInX0; } + double pathInX0() const { return m_pathInX0; } /// Accumulated path within material measured in interaction lengths. - Scalar pathInL0() const { return m_pathInL0; } + double pathInL0() const { return m_pathInL0; } /// Set the reference surface. /// @@ -314,17 +310,17 @@ class Particle { /// PDG particle number. Acts::PdgParticle m_pdg = Acts::PdgParticle::eInvalid; // Particle charge and mass. - Scalar m_charge = Scalar{0}; - Scalar m_mass = Scalar{0}; + double m_charge = 0.; + double m_mass = 0.; // kinematics, i.e. things that change over the particle lifetime. - Vector3 m_direction = Vector3::UnitZ(); - Scalar m_absMomentum = Scalar{0}; - Vector4 m_position4 = Vector4::Zero(); + Acts::Vector3 m_direction = Acts::Vector3::UnitZ(); + double m_absMomentum = 0.; + Acts::Vector4 m_position4 = Acts::Vector4::Zero(); /// proper time in the particle rest frame - Scalar m_properTime = Scalar{0}; + double m_properTime = 0.; // accumulated material - Scalar m_pathInX0 = Scalar{0}; - Scalar m_pathInL0 = Scalar{0}; + double m_pathInX0 = 0.; + double m_pathInL0 = 0.; /// number of hits std::uint32_t m_numberOfHits = 0; /// reference surface diff --git a/Fatras/include/ActsFatras/Kernel/InteractionList.hpp b/Fatras/include/ActsFatras/Kernel/InteractionList.hpp index eb6816c490a..b8faaf7f0ad 100644 --- a/Fatras/include/ActsFatras/Kernel/InteractionList.hpp +++ b/Fatras/include/ActsFatras/Kernel/InteractionList.hpp @@ -83,9 +83,7 @@ template <typename process_t> concept PointLikeProcessConcept = requires( const process_t& p, std::uniform_int_distribution<unsigned int>& rng, const Particle& prt) { - { - p.generatePathLimits(rng, prt) - } -> std::same_as<std::pair<Particle::Scalar, Particle::Scalar>>; + { p.generatePathLimits(rng, prt) } -> std::same_as<std::pair<double, double>>; }; template <typename process_t> @@ -177,10 +175,8 @@ class InteractionList { public: /// Point-like interaction selection. struct Selection { - Particle::Scalar x0Limit = - std::numeric_limits<Particle::Scalar>::infinity(); - Particle::Scalar l0Limit = - std::numeric_limits<Particle::Scalar>::infinity(); + double x0Limit = std::numeric_limits<double>::infinity(); + double l0Limit = std::numeric_limits<double>::infinity(); std::size_t x0Process = std::numeric_limits<std::size_t>::max(); std::size_t l0Process = std::numeric_limits<std::size_t>::max(); }; diff --git a/Fatras/include/ActsFatras/Kernel/Simulation.hpp b/Fatras/include/ActsFatras/Kernel/Simulation.hpp index b6975c34172..07c03bb5d40 100644 --- a/Fatras/include/ActsFatras/Kernel/Simulation.hpp +++ b/Fatras/include/ActsFatras/Kernel/Simulation.hpp @@ -224,7 +224,7 @@ struct Simulation { // only need to switch between charged/neutral. SingleParticleSimulationResult result = SingleParticleSimulationResult::success({}); - if (initialParticle.charge() != Particle::Scalar{0}) { + if (initialParticle.charge() != 0.) { result = charged.simulate(geoCtx, magCtx, generator, initialParticle); } else { result = neutral.simulate(geoCtx, magCtx, generator, initialParticle); @@ -267,7 +267,7 @@ struct Simulation { private: /// Select if the particle should be simulated at all. bool selectParticle(const Particle &particle) const { - if (particle.charge() != Particle::Scalar{0}) { + if (particle.charge() != 0.) { return selectCharged(particle); } else { return selectNeutral(particle); diff --git a/Fatras/include/ActsFatras/Kernel/SimulationResult.hpp b/Fatras/include/ActsFatras/Kernel/SimulationResult.hpp index 2750e01b616..fa6cf211673 100644 --- a/Fatras/include/ActsFatras/Kernel/SimulationResult.hpp +++ b/Fatras/include/ActsFatras/Kernel/SimulationResult.hpp @@ -38,11 +38,10 @@ struct SimulationResult { // Whether the particle is still alive and the simulation should continue bool isAlive = true; // Proper time limit before decay. - Particle::Scalar properTimeLimit = - std::numeric_limits<Particle::Scalar>::quiet_NaN(); + double properTimeLimit = std::numeric_limits<double>::quiet_NaN(); // Accumulated radiation/interaction length limit before next interaction. - Particle::Scalar x0Limit = std::numeric_limits<Particle::Scalar>::quiet_NaN(); - Particle::Scalar l0Limit = std::numeric_limits<Particle::Scalar>::quiet_NaN(); + double x0Limit = std::numeric_limits<double>::quiet_NaN(); + double l0Limit = std::numeric_limits<double>::quiet_NaN(); // Process selection for the next interaction. std::size_t x0Process = std::numeric_limits<std::size_t>::max(); std::size_t l0Process = std::numeric_limits<std::size_t>::max(); diff --git a/Fatras/include/ActsFatras/Kernel/detail/SimulationActor.hpp b/Fatras/include/ActsFatras/Kernel/detail/SimulationActor.hpp index acbaaaa713d..bee570485b0 100644 --- a/Fatras/include/ActsFatras/Kernel/detail/SimulationActor.hpp +++ b/Fatras/include/ActsFatras/Kernel/detail/SimulationActor.hpp @@ -53,7 +53,7 @@ struct SimulationActor { Particle initialParticle; /// Relative tolerance of the particles proper time limit - Particle::Scalar properTimeRelativeTolerance = 1e-3; + double properTimeRelativeTolerance = 1e-3; /// Simulate the interaction with a single surface. /// @@ -180,7 +180,7 @@ struct SimulationActor { result.hits.emplace_back( surface.geometryId(), before.particleId(), // the interaction could potentially modify the particle position - Hit::Scalar{0.5} * (before.fourPosition() + after.fourPosition()), + 0.5 * (before.fourPosition() + after.fourPosition()), before.fourMomentum(), after.fourMomentum(), result.hits.size()); after.setNumberOfHits(result.hits.size()); diff --git a/Fatras/include/ActsFatras/Physics/Decay/NoDecay.hpp b/Fatras/include/ActsFatras/Physics/Decay/NoDecay.hpp index 17aefd7341b..11889f3af06 100644 --- a/Fatras/include/ActsFatras/Physics/Decay/NoDecay.hpp +++ b/Fatras/include/ActsFatras/Physics/Decay/NoDecay.hpp @@ -21,9 +21,9 @@ struct NoDecay { /// /// @returns Always returns infinity as limit. template <typename generator_t> - constexpr Particle::Scalar generateProperTimeLimit( + constexpr double generateProperTimeLimit( generator_t& /* rng */, const Particle& /* particle */) const { - return std::numeric_limits<Particle::Scalar>::infinity(); + return std::numeric_limits<double>::infinity(); } /// Decay the particle without generating any descendant particles. template <typename generator_t> diff --git a/Fatras/include/ActsFatras/Physics/ElectroMagnetic/BetheHeitler.hpp b/Fatras/include/ActsFatras/Physics/ElectroMagnetic/BetheHeitler.hpp index d0529837b7f..6cfbce087c9 100644 --- a/Fatras/include/ActsFatras/Physics/ElectroMagnetic/BetheHeitler.hpp +++ b/Fatras/include/ActsFatras/Physics/ElectroMagnetic/BetheHeitler.hpp @@ -25,9 +25,6 @@ namespace ActsFatras { /// "A Gaussian-mixture approximation of the Bethe–Heitler model of electron /// energy loss by bremsstrahlung" R. Frühwirth struct BetheHeitler { - using Scalar = Particle::Scalar; - using Vector3 = Particle::Vector3; - /// A scaling factor to double scaleFactor = 1.; @@ -42,9 +39,9 @@ struct BetheHeitler { /// @param [in] rndTheta1 Random number for the polar angle /// @param [in] rndTheta2 Random number for the polar angle /// @param [in] rndTheta3 Random number for the polar angle - Particle bremPhoton(const Particle &particle, Scalar gammaE, Scalar rndPsi, - Scalar rndTheta1, Scalar rndTheta2, - Scalar rndTheta3) const; + Particle bremPhoton(const Particle &particle, double gammaE, double rndPsi, + double rndTheta1, double rndTheta2, + double rndTheta3) const; /// Simulate energy loss and update the particle parameters. /// @@ -67,7 +64,7 @@ struct BetheHeitler { const auto sampledEnergyLoss = std::abs(scaleFactor * particle.energy() * (z - 1.)); - std::uniform_real_distribution<Scalar> uDist(0., 1.); + std::uniform_real_distribution<double> uDist(0., 1.); // Build the produced photon Particle photon = bremPhoton(particle, sampledEnergyLoss, uDist(generator), diff --git a/Fatras/include/ActsFatras/Physics/ElectroMagnetic/PhotonConversion.hpp b/Fatras/include/ActsFatras/Physics/ElectroMagnetic/PhotonConversion.hpp index d54b17e7407..af45481258e 100644 --- a/Fatras/include/ActsFatras/Physics/ElectroMagnetic/PhotonConversion.hpp +++ b/Fatras/include/ActsFatras/Physics/ElectroMagnetic/PhotonConversion.hpp @@ -34,12 +34,10 @@ namespace ActsFatras { /// interaction itself. class PhotonConversion { public: - using Scalar = ActsFatras::Particle::Scalar; - /// Scaling factor of children energy - Scalar childEnergyScaleFactor = 2.; + double childEnergyScaleFactor = 2.; /// Scaling factor for photon conversion probability - Scalar conversionProbScaleFactor = 0.98; + double conversionProbScaleFactor = 0.98; /// Method for evaluating the distance after which the photon /// conversion will occur. @@ -50,7 +48,7 @@ class PhotonConversion { /// /// @return valid X0 limit and no limit on L0 template <typename generator_t> - std::pair<Scalar, Scalar> generatePathLimits(generator_t& generator, + std::pair<double, double> generatePathLimits(generator_t& generator, const Particle& particle) const; /// This method evaluates the final state due to the photon conversion. @@ -74,8 +72,8 @@ class PhotonConversion { /// /// @return Array containing the produced leptons std::array<Particle, 2> generateChildren( - const Particle& photon, Scalar childEnergy, - const Particle::Vector3& childDirection) const; + const Particle& photon, double childEnergy, + const Acts::Vector3& childDirection) const; /// Generate the energy fraction of the first child particle. /// @@ -85,8 +83,8 @@ class PhotonConversion { /// /// @return The energy of the child particle template <typename generator_t> - Scalar generateFirstChildEnergyFraction(generator_t& generator, - Scalar gammaMom) const; + double generateFirstChildEnergyFraction(generator_t& generator, + double gammaMom) const; /// Generate the direction of the child particles. /// @@ -96,27 +94,27 @@ class PhotonConversion { /// /// @return The direction vector of the child particle template <typename generator_t> - Particle::Vector3 generateChildDirection(generator_t& generator, - const Particle& particle) const; + Acts::Vector3 generateChildDirection(generator_t& generator, + const Particle& particle) const; /// Helper methods for momentum evaluation /// @note These methods are taken from the Geant4 class /// G4PairProductionRelModel - Scalar screenFunction1(Scalar delta) const; - Scalar screenFunction2(Scalar delta) const; + double screenFunction1(double delta) const; + double screenFunction2(double delta) const; /// Electron mass. This is an static constant and not a member variable so the /// struct has no internal state. Otherwise, the interaction list breaks. - static const Scalar kElectronMass; + static const double kElectronMass; }; -inline Particle::Scalar PhotonConversion::screenFunction1(Scalar delta) const { +inline double PhotonConversion::screenFunction1(double delta) const { // Compute the value of the screening function 3*PHI1(delta) - PHI2(delta) return (delta > 1.4) ? 42.038 - 8.29 * std::log(delta + 0.958) : 42.184 - delta * (7.444 - 1.623 * delta); } -inline Particle::Scalar PhotonConversion::screenFunction2(Scalar delta) const { +inline double PhotonConversion::screenFunction2(double delta) const { // Compute the value of the screening function 1.5*PHI1(delta) // +0.5*PHI2(delta) return (delta > 1.4) ? 42.038 - 8.29 * std::log(delta + 0.958) @@ -124,16 +122,15 @@ inline Particle::Scalar PhotonConversion::screenFunction2(Scalar delta) const { } template <typename generator_t> -std::pair<Particle::Scalar, Particle::Scalar> -PhotonConversion::generatePathLimits(generator_t& generator, - const Particle& particle) const { +std::pair<double, double> PhotonConversion::generatePathLimits( + generator_t& generator, const Particle& particle) const { /// This method is based upon the Athena class PhotonConversionTool // Fast exit if not a photon or the energy is too low if (particle.pdg() != Acts::PdgParticle::eGamma || particle.absoluteMomentum() < (2 * kElectronMass)) { - return std::make_pair(std::numeric_limits<Scalar>::infinity(), - std::numeric_limits<Scalar>::infinity()); + return std::make_pair(std::numeric_limits<double>::infinity(), + std::numeric_limits<double>::infinity()); } // Use for the moment only Al data - Yung Tsai - Rev.Mod.Particle Physics Vol. @@ -149,73 +146,73 @@ PhotonConversion::generatePathLimits(generator_t& generator, // 1 p0 -7.01612e-03 8.43478e-01 1.62766e-04 1.11914e-05 // 2 p1 7.69040e-02 1.00059e+00 8.90718e-05 -8.41167e-07 // 3 p2 -6.07682e-01 5.13256e+00 6.07228e-04 -9.44448e-07 - constexpr Scalar p0 = -7.01612e-03; - constexpr Scalar p1 = 7.69040e-02; - constexpr Scalar p2 = -6.07682e-01; + constexpr double p0 = -7.01612e-03; + constexpr double p1 = 7.69040e-02; + constexpr double p2 = -6.07682e-01; // Calculate xi - const Scalar xi = p0 + p1 * std::pow(particle.absoluteMomentum(), p2); + const double xi = p0 + p1 * std::pow(particle.absoluteMomentum(), p2); - std::uniform_real_distribution<Scalar> uniformDistribution{0., 1.}; + std::uniform_real_distribution<double> uniformDistribution{0., 1.}; // This is a transformation of eq. 3.75 return std::make_pair(-9. / 7. * std::log(conversionProbScaleFactor * (1 - uniformDistribution(generator))) / (1. - xi), - std::numeric_limits<Scalar>::infinity()); + std::numeric_limits<double>::infinity()); } template <typename generator_t> -Particle::Scalar PhotonConversion::generateFirstChildEnergyFraction( - generator_t& generator, Scalar gammaMom) const { +double PhotonConversion::generateFirstChildEnergyFraction( + generator_t& generator, double gammaMom) const { /// This method is based upon the Geant4 class G4PairProductionRelModel /// @note This method is from the Geant4 class G4Element // // Compute Coulomb correction factor (Phys Rev. D50 3-1 (1994) page 1254) - constexpr Scalar k1 = 0.0083; - constexpr Scalar k2 = 0.20206; - constexpr Scalar k3 = 0.0020; // This term is missing in Athena - constexpr Scalar k4 = 0.0369; - constexpr Scalar alphaEM = 1. / 137.; - constexpr Scalar m_Z = 13.; // Aluminium - constexpr Scalar az2 = (alphaEM * m_Z) * (alphaEM * m_Z); - constexpr Scalar az4 = az2 * az2; - constexpr Scalar coulombFactor = + constexpr double k1 = 0.0083; + constexpr double k2 = 0.20206; + constexpr double k3 = 0.0020; // This term is missing in Athena + constexpr double k4 = 0.0369; + constexpr double alphaEM = 1. / 137.; + constexpr double m_Z = 13.; // Aluminium + constexpr double az2 = (alphaEM * m_Z) * (alphaEM * m_Z); + constexpr double az4 = az2 * az2; + constexpr double coulombFactor = (k1 * az4 + k2 + 1. / (1. + az2)) * az2 - (k3 * az4 + k4) * az4; - const Scalar logZ13 = std::log(m_Z) * 1. / 3.; - const Scalar FZ = 8. * (logZ13 + coulombFactor); - const Scalar deltaMax = exp((42.038 - FZ) * 0.1206) - 0.958; + const double logZ13 = std::log(m_Z) * 1. / 3.; + const double FZ = 8. * (logZ13 + coulombFactor); + const double deltaMax = std::exp((42.038 - FZ) * 0.1206) - 0.958; - const Scalar deltaPreFactor = 136. / std::pow(m_Z, 1. / 3.); - const Scalar eps0 = kElectronMass / gammaMom; - const Scalar deltaFactor = deltaPreFactor * eps0; - const Scalar deltaMin = 4. * deltaFactor; + const double deltaPreFactor = 136. / std::pow(m_Z, 1. / 3.); + const double eps0 = kElectronMass / gammaMom; + const double deltaFactor = deltaPreFactor * eps0; + const double deltaMin = 4. * deltaFactor; // Compute the limits of eps - const Scalar epsMin = + const double epsMin = std::max(eps0, 0.5 - 0.5 * std::sqrt(1. - deltaMin / deltaMax)); - const Scalar epsRange = 0.5 - epsMin; + const double epsRange = 0.5 - epsMin; // Sample the energy rate (eps) of the created electron (or positron) - const Scalar F10 = screenFunction1(deltaMin) - FZ; - const Scalar F20 = screenFunction2(deltaMin) - FZ; - const Scalar NormF1 = F10 * epsRange * epsRange; - const Scalar NormF2 = 1.5 * F20; + const double F10 = screenFunction1(deltaMin) - FZ; + const double F20 = screenFunction2(deltaMin) - FZ; + const double NormF1 = F10 * epsRange * epsRange; + const double NormF2 = 1.5 * F20; // We will need 3 uniform random number for each trial of sampling - Scalar greject = 0.; - Scalar eps = 0.; - std::uniform_real_distribution<Scalar> rndmEngine; + double greject = 0.; + double eps = 0.; + std::uniform_real_distribution<double> rndmEngine; do { if (NormF1 > rndmEngine(generator) * (NormF1 + NormF2)) { eps = 0.5 - epsRange * std::pow(rndmEngine(generator), 1. / 3.); - const Scalar delta = deltaFactor / (eps * (1. - eps)); + const double delta = deltaFactor / (eps * (1. - eps)); greject = (screenFunction1(delta) - FZ) / F10; } else { eps = epsMin + epsRange * rndmEngine(generator); - const Scalar delta = deltaFactor / (eps * (1. - eps)); + const double delta = deltaFactor / (eps * (1. - eps)); greject = (screenFunction2(delta) - FZ) / F20; } } while (greject < rndmEngine(generator)); @@ -224,16 +221,16 @@ Particle::Scalar PhotonConversion::generateFirstChildEnergyFraction( } template <typename generator_t> -Particle::Vector3 PhotonConversion::generateChildDirection( +Acts::Vector3 PhotonConversion::generateChildDirection( generator_t& generator, const Particle& particle) const { /// This method is based upon the Athena class PhotonConversionTool // Following the Geant4 approximation from L. Urban // the azimutal angle - Scalar theta = kElectronMass / particle.energy(); + double theta = kElectronMass / particle.energy(); - std::uniform_real_distribution<Scalar> uniformDistribution{0., 1.}; - const Scalar u = -std::log(uniformDistribution(generator) * + std::uniform_real_distribution<double> uniformDistribution{0., 1.}; + const double u = -std::log(uniformDistribution(generator) * uniformDistribution(generator)) * 1.6; @@ -257,20 +254,20 @@ Particle::Vector3 PhotonConversion::generateChildDirection( } inline std::array<Particle, 2> PhotonConversion::generateChildren( - const Particle& photon, Scalar childEnergy, - const Particle::Vector3& childDirection) const { + const Particle& photon, double childEnergy, + const Acts::Vector3& childDirection) const { using namespace Acts::UnitLiterals; // Calculate the child momentum - const Scalar massChild = kElectronMass; - const Scalar momentum1 = + const double massChild = kElectronMass; + const double momentum1 = sqrt(childEnergy * childEnergy - massChild * massChild); // Use energy-momentum conservation for the other child - const Particle::Vector3 vtmp = + const Acts::Vector3 vtmp = photon.fourMomentum().template segment<3>(Acts::eMom0) - momentum1 * childDirection; - const Scalar momentum2 = vtmp.norm(); + const double momentum2 = vtmp.norm(); // The daughter particles are created with the explicit electron mass used in // the calculations for consistency. Using the full Particle constructor with @@ -304,17 +301,16 @@ bool PhotonConversion::run(generator_t& generator, Particle& particle, } // Fast exit if momentum is too low - const Scalar p = particle.absoluteMomentum(); + const double p = particle.absoluteMomentum(); if (p < (2 * kElectronMass)) { return false; } // Get one child energy - const Scalar childEnergy = p * generateFirstChildEnergyFraction(generator, p); + const double childEnergy = p * generateFirstChildEnergyFraction(generator, p); // Now get the deflection - const Particle::Vector3 childDir = - generateChildDirection(generator, particle); + const Acts::Vector3 childDir = generateChildDirection(generator, particle); // Produce the final state const std::array<Particle, 2> finalState = diff --git a/Fatras/include/ActsFatras/Physics/NuclearInteraction/NuclearInteraction.hpp b/Fatras/include/ActsFatras/Physics/NuclearInteraction/NuclearInteraction.hpp index 89072e78536..d372cf8ffc9 100644 --- a/Fatras/include/ActsFatras/Physics/NuclearInteraction/NuclearInteraction.hpp +++ b/Fatras/include/ActsFatras/Physics/NuclearInteraction/NuclearInteraction.hpp @@ -38,7 +38,6 @@ namespace ActsFatras { /// interaction. Either the initial particle survives (soft) or it gets /// destroyed (hard) by this process. struct NuclearInteraction { - using Scalar = Particle::Scalar; /// The storage of the parameterisation detail::MultiParticleNuclearInteractionParametrisation multiParticleParameterisation; @@ -55,12 +54,12 @@ struct NuclearInteraction { /// /// @return valid X0 limit and no limit on L0 template <typename generator_t> - std::pair<Scalar, Scalar> generatePathLimits(generator_t& generator, + std::pair<double, double> generatePathLimits(generator_t& generator, const Particle& particle) const { // Fast exit: No parameterisation provided if (multiParticleParameterisation.empty()) { - return std::make_pair(std::numeric_limits<Scalar>::infinity(), - std::numeric_limits<Scalar>::infinity()); + return std::make_pair(std::numeric_limits<double>::infinity(), + std::numeric_limits<double>::infinity()); } // Find the parametrisation that corresponds to the particle type for (const auto& particleParametrisation : multiParticleParameterisation) { @@ -79,14 +78,14 @@ struct NuclearInteraction { const auto& distribution = parametrisation.nuclearInteractionProbability; auto limits = - std::make_pair(std::numeric_limits<Scalar>::infinity(), + std::make_pair(std::numeric_limits<double>::infinity(), sampleContinuousValues( uniformDistribution(generator), distribution)); return limits; } } - return std::make_pair(std::numeric_limits<Scalar>::infinity(), - std::numeric_limits<Scalar>::infinity()); + return std::make_pair(std::numeric_limits<double>::infinity(), + std::numeric_limits<double>::infinity()); } /// This method performs a nuclear interaction. @@ -292,10 +291,8 @@ struct NuclearInteraction { /// /// @return Azimuthal and polar angle of the second particle in the global /// coordinate system - std::pair<ActsFatras::Particle::Scalar, ActsFatras::Particle::Scalar> - globalAngle(ActsFatras::Particle::Scalar phi1, - ActsFatras::Particle::Scalar theta1, float phi2, - float theta2) const; + std::pair<double, double> globalAngle(double phi1, double theta1, float phi2, + float theta2) const; /// Converter from sampled numbers to a vector of particles /// @@ -337,7 +334,7 @@ struct NuclearInteraction { /// neighbouring bins should be performed instead of a bin lookup /// /// @return The sampled value - Scalar sampleContinuousValues( + double sampleContinuousValues( double rnd, const detail::NuclearInteractionParameters::CumulativeDistribution& distribution, @@ -416,8 +413,8 @@ Acts::ActsDynamicVector NuclearInteraction::sampleInvariantMasses( // Sample in the eigenspace for (unsigned int i = 0; i < size; i++) { float variance = parametrisation.eigenvaluesInvariantMass[i]; - std::normal_distribution<Acts::ActsScalar> dist{ - parametrisation.meanInvariantMass[i], std::sqrt(variance)}; + std::normal_distribution<double> dist{parametrisation.meanInvariantMass[i], + std::sqrt(variance)}; parameters[i] = dist(generator); } // Transform to multivariate normal distribution @@ -446,8 +443,8 @@ Acts::ActsDynamicVector NuclearInteraction::sampleMomenta( // Sample in the eigenspace for (unsigned int i = 0; i < size; i++) { float variance = parametrisation.eigenvaluesMomentum[i]; - std::normal_distribution<Acts::ActsScalar> dist{ - parametrisation.meanMomentum[i], std::sqrt(variance)}; + std::normal_distribution<double> dist{parametrisation.meanMomentum[i], + std::sqrt(variance)}; parameters[i] = dist(generator); } diff --git a/Fatras/include/ActsFatras/Selectors/ParticleSelectors.hpp b/Fatras/include/ActsFatras/Selectors/ParticleSelectors.hpp index 4deb110969e..d784048abbd 100644 --- a/Fatras/include/ActsFatras/Selectors/ParticleSelectors.hpp +++ b/Fatras/include/ActsFatras/Selectors/ParticleSelectors.hpp @@ -21,28 +21,28 @@ struct EveryParticle { /// Select neutral particles. struct NeutralSelector { bool operator()(const Particle &particle) const { - return (particle.charge() == Particle::Scalar{0}); + return (particle.charge() == 0.); } }; /// Select all charged particles. struct ChargedSelector { bool operator()(const Particle &particle) const { - return (particle.charge() != Particle::Scalar{0}); + return (particle.charge() != 0.); } }; /// Select positively charged particles. struct PositiveSelector { bool operator()(const Particle &particle) const { - return (Particle::Scalar{0} < particle.charge()); + return (0. < particle.charge()); } }; /// Select negatively charged particles. struct NegativeSelector { bool operator()(const Particle &particle) const { - return (particle.charge() < Particle::Scalar{0}); + return (particle.charge() < 0.); } }; diff --git a/Fatras/src/Physics/BetheHeitler.cpp b/Fatras/src/Physics/BetheHeitler.cpp index af8cbd2711f..bb635ecb934 100644 --- a/Fatras/src/Physics/BetheHeitler.cpp +++ b/Fatras/src/Physics/BetheHeitler.cpp @@ -20,8 +20,8 @@ #include <utility> ActsFatras::Particle ActsFatras::BetheHeitler::bremPhoton( - const Particle &particle, Scalar gammaE, Scalar rndPsi, Scalar rndTheta1, - Scalar rndTheta2, Scalar rndTheta3) const { + const Particle &particle, double gammaE, double rndPsi, double rndTheta1, + double rndTheta2, double rndTheta3) const { // ------------------------------------------------------ // simple approach // (a) simulate theta uniform within the opening angle of the relativistic @@ -31,10 +31,10 @@ ActsFatras::Particle ActsFatras::BetheHeitler::bremPhoton( // later // the azimutal angle - Scalar psi = 2. * std::numbers::pi * rndPsi; + double psi = 2. * std::numbers::pi * rndPsi; // the start of the equation - Scalar theta = 0.; + double theta = 0.; if (uniformHertzDipoleAngle) { // the simplest simulation theta = particle.mass() / particle.energy() * rndTheta1; @@ -42,13 +42,13 @@ ActsFatras::Particle ActsFatras::BetheHeitler::bremPhoton( // -----> theta = particle.mass() / particle.energy(); // follow - constexpr Scalar a = 0.625; // 5/8 - Scalar u = -log(rndTheta2 * rndTheta3) / a; + constexpr double a = 0.625; // 5/8 + double u = -log(rndTheta2 * rndTheta3) / a; theta *= (rndTheta1 < 0.25) ? u : u / 3.; // 9./(9.+27) = 0.25 } - Vector3 particleDirection = particle.direction(); - Vector3 photonDirection = particleDirection; + Acts::Vector3 particleDirection = particle.direction(); + Acts::Vector3 photonDirection = particleDirection; // construct the combined rotation to the scattered direction Acts::RotationMatrix3 rotation( diff --git a/Fatras/src/Physics/NuclearInteraction/NuclearInteraction.cpp b/Fatras/src/Physics/NuclearInteraction/NuclearInteraction.cpp index 1515fc3c626..84ab93921fe 100644 --- a/Fatras/src/Physics/NuclearInteraction/NuclearInteraction.cpp +++ b/Fatras/src/Physics/NuclearInteraction/NuclearInteraction.cpp @@ -67,14 +67,14 @@ unsigned int NuclearInteraction::sampleDiscreteValues( return static_cast<unsigned int>(distribution.first[iBin]); } -Particle::Scalar NuclearInteraction::sampleContinuousValues( +double NuclearInteraction::sampleContinuousValues( double rnd, const detail::NuclearInteractionParameters::CumulativeDistribution& distribution, bool interpolate) const { // Fast exit if (distribution.second.empty()) { - return std::numeric_limits<Scalar>::infinity(); + return std::numeric_limits<double>::infinity(); } // Find the bin @@ -82,7 +82,7 @@ Particle::Scalar NuclearInteraction::sampleContinuousValues( std::numeric_limits<std::uint32_t>::max() * rnd); // Fast exit for non-normalised CDFs like interaction probability if (int_rnd > distribution.second.back()) { - return std::numeric_limits<Scalar>::infinity(); + return std::numeric_limits<double>::infinity(); } const auto it = std::upper_bound(distribution.second.begin(), distribution.second.end(), int_rnd); @@ -111,10 +111,10 @@ unsigned int NuclearInteraction::finalStateMultiplicity( return sampleDiscreteValues(rnd, distribution); } -std::pair<ActsFatras::Particle::Scalar, ActsFatras::Particle::Scalar> -NuclearInteraction::globalAngle(ActsFatras::Particle::Scalar phi1, - ActsFatras::Particle::Scalar theta1, float phi2, - float theta2) const { +std::pair<double, double> NuclearInteraction::globalAngle(double phi1, + double theta1, + float phi2, + float theta2) const { // Rotation around the global y-axis Acts::SquareMatrix3 rotY = Acts::SquareMatrix3::Zero(); rotY(0, 0) = std::cos(theta1); diff --git a/Fatras/src/Physics/PhotonConversion.cpp b/Fatras/src/Physics/PhotonConversion.cpp index 73bb83ad413..bf71af4cae2 100644 --- a/Fatras/src/Physics/PhotonConversion.cpp +++ b/Fatras/src/Physics/PhotonConversion.cpp @@ -10,6 +10,5 @@ #include "Acts/Definitions/ParticleData.hpp" -const ActsFatras::PhotonConversion::Scalar - ActsFatras::PhotonConversion::kElectronMass = - Acts::findMass(Acts::PdgParticle::eElectron).value(); +const double ActsFatras::PhotonConversion::kElectronMass = + Acts::findMass(Acts::PdgParticle::eElectron).value(); diff --git a/Plugins/Hashing/include/Acts/Plugins/Hashing/HashingAnnoy.ipp b/Plugins/Hashing/include/Acts/Plugins/Hashing/HashingAnnoy.ipp index d5e4f28f3a5..223fc3c4573 100644 --- a/Plugins/Hashing/include/Acts/Plugins/Hashing/HashingAnnoy.ipp +++ b/Plugins/Hashing/include/Acts/Plugins/Hashing/HashingAnnoy.ipp @@ -28,8 +28,6 @@ void HashingAnnoy<external_spacepoint_t, SpacePointContainer>:: const unsigned int phiBins, const double layerRMin, const double layerRMax, const double layerZMin, const double layerZMax) { - using Scalar = Acts::ActsScalar; - static thread_local std::vector<std::set<external_spacepoint_t>> bucketsSetSPMap; bucketsSetSPMap.clear(); @@ -61,21 +59,21 @@ void HashingAnnoy<external_spacepoint_t, SpacePointContainer>:: }; // Functions to get the bin index - auto getBinIndexZ = [&zBins, &layerZMin, &layerZMax](Scalar z) { - Scalar binSize = (layerZMax - layerZMin) / zBins; + auto getBinIndexZ = [&zBins, &layerZMin, &layerZMax](double z) { + double binSize = (layerZMax - layerZMin) / zBins; auto binIndex = static_cast<int>((z - layerZMin + 0.5 * binSize) / binSize); return binIndex; }; - auto getBinIndexPhi = [&phiBins](Scalar phi) { - Scalar binSize = 2 * std::numbers::pi / phiBins; + auto getBinIndexPhi = [&phiBins](double phi) { + double binSize = 2 * std::numbers::pi / phiBins; auto binIndex = static_cast<int>((phi + std::numbers::pi) / binSize); return binIndex; }; // Function pointers to a unified bin index function for z and phi auto getBinIndex = [&zBins, &phiBins, &getBinIndexZ, &getBinIndexPhi]( - Scalar z, Scalar phi) -> int { + double z, double phi) -> int { if (zBins > 0) { return getBinIndexZ(z); } else if (phiBins > 0) { @@ -89,16 +87,16 @@ void HashingAnnoy<external_spacepoint_t, SpacePointContainer>:: for (unsigned int spacePointIndex = 0; spacePointIndex < spacePoints.size(); spacePointIndex++) { external_spacepoint_t spacePoint = spacePoints[spacePointIndex]; - Scalar x = spacePoint->x() / Acts::UnitConstants::mm; - Scalar y = spacePoint->y() / Acts::UnitConstants::mm; - Scalar z = spacePoint->z() / Acts::UnitConstants::mm; + double x = spacePoint->x() / Acts::UnitConstants::mm; + double y = spacePoint->y() / Acts::UnitConstants::mm; + double z = spacePoint->z() / Acts::UnitConstants::mm; // Helix transform - if (Scalar r2 = x * x + y * y; !layerSelection(r2, z)) { + if (double r2 = x * x + y * y; !layerSelection(r2, z)) { continue; } - Scalar phi = atan2(y, x); + double phi = atan2(y, x); int binIndex = getBinIndex(z, phi); if (binIndex < 0 || static_cast<unsigned int>(binIndex) >= nBins) { diff --git a/Plugins/Hashing/include/Acts/Plugins/Hashing/HashingTraining.ipp b/Plugins/Hashing/include/Acts/Plugins/Hashing/HashingTraining.ipp index 3e24e828177..b3abefa2a11 100644 --- a/Plugins/Hashing/include/Acts/Plugins/Hashing/HashingTraining.ipp +++ b/Plugins/Hashing/include/Acts/Plugins/Hashing/HashingTraining.ipp @@ -40,18 +40,16 @@ AnnoyModel HashingTrainingAlgorithm<SpacePointContainer>::execute( auto annoyModel = AnnoyModel(f); - using Scalar = Acts::ActsScalar; - annoyModel.set_seed(annoySeed); unsigned int spacePointIndex = 0; // Add spacePoints parameters to Annoy for (const auto& spacePoint : spacePoints) { - Scalar x = spacePoint->x() / Acts::UnitConstants::mm; - Scalar y = spacePoint->y() / Acts::UnitConstants::mm; + double x = spacePoint->x() / Acts::UnitConstants::mm; + double y = spacePoint->y() / Acts::UnitConstants::mm; // Helix transform - Scalar phi = std::atan2(y, x); + double phi = std::atan2(y, x); std::vector<double> vec(f); // Avoid potential null pointer dereference @@ -59,11 +57,11 @@ AnnoyModel HashingTrainingAlgorithm<SpacePointContainer>::execute( vec[0] = phi; } if (f >= 2) { - Scalar z = spacePoint->z() / Acts::UnitConstants::mm; - Scalar r2 = x * x + y * y; - Scalar rho = std::sqrt(r2 + z * z); - Scalar theta = std::acos(z / rho); - Scalar eta = Acts::AngleHelpers::etaFromTheta(theta); + double z = spacePoint->z() / Acts::UnitConstants::mm; + double r2 = x * x + y * y; + double rho = std::sqrt(r2 + z * z); + double theta = std::acos(z / rho); + double eta = Acts::AngleHelpers::etaFromTheta(theta); vec[1] = eta; } diff --git a/Tests/UnitTests/Core/Seeding/HoughTransformTest.cpp b/Tests/UnitTests/Core/Seeding/HoughTransformTest.cpp index 30e3164f62c..b469c6d7c1c 100644 --- a/Tests/UnitTests/Core/Seeding/HoughTransformTest.cpp +++ b/Tests/UnitTests/Core/Seeding/HoughTransformTest.cpp @@ -19,17 +19,16 @@ namespace Acts::Test { -using Scalar = Acts::ActsScalar; auto logger = Acts::getDefaultLogger("UnitTests", Acts::Logging::VERBOSE); struct DriftCircle { - Scalar y{0.}; - Scalar z{0.}; - Scalar rDrift{0.}; - Scalar rDriftError{0.}; + double y{0.}; + double z{0.}; + double rDrift{0.}; + double rDriftError{0.}; - DriftCircle(const Scalar _y, const Scalar _z, const Scalar _r, - const Scalar _rUncert) + DriftCircle(const double _y, const double _z, const double _r, + const double _rUncert) : y{_y}, z{_z}, rDrift{_r}, rDriftError{_rUncert} {} }; @@ -92,7 +91,7 @@ BOOST_AUTO_TEST_CASE(hough_transform_seeder) { Acts::HoughTransformUtils::HoughPlane<Acts::GeometryIdentifier::Value> houghPlane(planeCfg); - // also insantiate the peak finder + // also instantiate the peak finder Acts::HoughTransformUtils::PeakFinders::IslandsAroundMax< Acts::GeometryIdentifier::Value> peakFinder(peakFinderCfg); diff --git a/Tests/UnitTests/Core/Utilities/BoundingBoxTest.cpp b/Tests/UnitTests/Core/Utilities/BoundingBoxTest.cpp index 675d7d49320..b65d533acfa 100644 --- a/Tests/UnitTests/Core/Utilities/BoundingBoxTest.cpp +++ b/Tests/UnitTests/Core/Utilities/BoundingBoxTest.cpp @@ -37,13 +37,11 @@ namespace Acts::Test { struct Object {}; -using BoundingBoxScalar = ActsScalar; +using ObjectBBox = Acts::AxisAlignedBoundingBox<Object, double, 3>; -using ObjectBBox = Acts::AxisAlignedBoundingBox<Object, BoundingBoxScalar, 3>; - -using Vector2F = Eigen::Matrix<BoundingBoxScalar, 2, 1>; -using Vector3F = Eigen::Matrix<BoundingBoxScalar, 3, 1>; -using AngleAxis3F = Eigen::AngleAxis<BoundingBoxScalar>; +using Vector2F = Eigen::Matrix<double, 2, 1>; +using Vector3F = Eigen::Matrix<double, 3, 1>; +using AngleAxis3F = Eigen::AngleAxis<double>; std::filesystem::path tmp_path = []() { auto tmpPath = std::filesystem::temp_directory_path() / "acts_unit_tests"; @@ -59,11 +57,11 @@ std::ofstream tmp(const std::string& path) { BOOST_AUTO_TEST_CASE(box_construction) { BOOST_TEST_CONTEXT("2D") { Object o; - using Box = Acts::AxisAlignedBoundingBox<Object, BoundingBoxScalar, 2>; + using Box = Acts::AxisAlignedBoundingBox<Object, double, 2>; Box bb(&o, {-1, -1}, {2, 2}); typename Box::transform_type rot; - rot = Eigen::Rotation2D<BoundingBoxScalar>(std::numbers::pi / 7.); + rot = Eigen::Rotation2D<double>(std::numbers::pi / 7.); Box bb_rot = bb.transformed(rot); CHECK_CLOSE_ABS(bb_rot.min(), Vector2F(-1.76874, -1.33485), 1e-4); @@ -72,7 +70,7 @@ BOOST_AUTO_TEST_CASE(box_construction) { BOOST_TEST_CONTEXT("3D") { Object o; - using Box = Acts::AxisAlignedBoundingBox<Object, BoundingBoxScalar, 3>; + using Box = Acts::AxisAlignedBoundingBox<Object, double, 3>; Box bb(&o, {-1, -1, -1}, {2, 2, 2}); typename Box::transform_type rot; @@ -141,14 +139,14 @@ BOOST_AUTO_TEST_CASE(intersect_points) { BOOST_AUTO_TEST_CASE(intersect_rays) { BOOST_TEST_CONTEXT("2D") { - using Box = AxisAlignedBoundingBox<Object, BoundingBoxScalar, 2>; + using Box = AxisAlignedBoundingBox<Object, double, 2>; Object o; Box bb(&o, {-1, -1}, {1, 1}); // ray in positive x direction - Ray<BoundingBoxScalar, 2> ray({-2, 0}, {1, 0}); + Ray<double, 2> ray({-2, 0}, {1, 0}); BOOST_CHECK(bb.intersect(ray)); ray = {{-2, 2}, {1, 0}}; @@ -273,10 +271,10 @@ BOOST_AUTO_TEST_CASE(intersect_rays) { // let's make sure it also works in 3d ObjectBBox bb3(&o, {-1, -1, -1}, {1, 1, 1}); - Ray<BoundingBoxScalar, 3> ray3({0, 0, -2}, {0, 0, 1}); + Ray<double, 3> ray3({0, 0, -2}, {0, 0, 1}); BOOST_CHECK(bb3.intersect(ray3)); - PlyVisualization3D<BoundingBoxScalar> ply; + PlyVisualization3D<double> ply; ray3.draw(ply); auto os = tmp("ray3d.ply"); @@ -290,7 +288,7 @@ BOOST_AUTO_TEST_CASE(intersect_rays) { // let's make sure it also works in 3d ObjectBBox bb3(&o, {-1, -1, -1}, {1, 1, 1}); - Ray<BoundingBoxScalar, 3> ray3({0, 0, -2}, {0, 0, 1}); + Ray<double, 3> ray3({0, 0, -2}, {0, 0, 1}); BOOST_CHECK(bb3.intersect(ray3)); // facing away from box @@ -451,7 +449,7 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { return os; }; - using Frustum2 = Frustum<BoundingBoxScalar, 2, 2>; + using Frustum2 = Frustum<double, 2, 2>; std::ofstream os; @@ -460,19 +458,18 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { const std::size_t nSteps = 10; // Visualise the parameters - const BoundingBoxScalar min = -20; - const BoundingBoxScalar max = 20; + const double min = -20; + const double max = 20; os = make_svg("frust2d_parameters.svg", svgWidth, svgHeight); - const BoundingBoxScalar step = (max - min) / nSteps; + const double step = (max - min) / nSteps; for (std::size_t i = 0; i <= nSteps; i++) { for (std::size_t j = 0; j <= nSteps; j++) { Vector2F dir(1, 0); Vector2F origin(min + step * i, min + step * j); origin.x() *= 1.10; - Eigen::Rotation2D<BoundingBoxScalar> rot(2 * std::numbers::pi / nSteps * - i); - BoundingBoxScalar angle = std::numbers::pi / 2. / nSteps * j; + Eigen::Rotation2D<double> rot(2 * std::numbers::pi / nSteps * i); + double angle = std::numbers::pi / 2. / nSteps * j; Frustum2 fr(origin, rot * dir, angle); fr.svg(os, svgWidth, svgHeight, 2); } @@ -481,18 +478,18 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { os << "</svg>"; os.close(); - const BoundingBoxScalar unit = 20; + const double unit = 20.; - using Box = AxisAlignedBoundingBox<Object, BoundingBoxScalar, 2>; + using Box = AxisAlignedBoundingBox<Object, double, 2>; Object o; - Box::Size size(Eigen::Matrix<BoundingBoxScalar, 2, 1>(2, 2)); + Box::Size size(Eigen::Matrix<double, 2, 1>(2, 2)); - const BoundingBoxScalar minX = -20; - const BoundingBoxScalar minY = -20; - const BoundingBoxScalar maxX = 20; - const BoundingBoxScalar maxY = 20; - const BoundingBoxScalar stepX = (maxX - minX) / nSteps; - const BoundingBoxScalar stepY = (maxY - minY) / nSteps; + const double minX = -20.; + const double minY = -20.; + const double maxX = 20.; + const double maxY = 20.; + const double stepX = (maxX - minX) / nSteps; + const double stepY = (maxY - minY) / nSteps; std::set<std::size_t> idxsAct; @@ -579,10 +576,10 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { boxes.reserve((nSteps + 1) * (nSteps + 1)); for (std::size_t i = 0; i <= nSteps; i++) { for (std::size_t j = 0; j <= nSteps; j++) { - boxes.emplace_back(&o, - Eigen::Matrix<BoundingBoxScalar, 2, 1>{ - minX + i * stepX, minY + j * stepY}, - size); + boxes.emplace_back( + &o, + Eigen::Matrix<double, 2, 1>{minX + i * stepX, minY + j * stepY}, + size); std::stringstream st; st << boxes.size() - 1; @@ -605,9 +602,9 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { } } - PlyVisualization3D<BoundingBoxScalar> helper; + PlyVisualization3D<double> helper; BOOST_TEST_CONTEXT("3D - 3 Sides") { - using Frustum3 = Frustum<BoundingBoxScalar, 3, 3>; + using Frustum3 = Frustum<double, 3, 3>; std::ofstream os; std::size_t n = 10; const std::size_t nSteps = 5; @@ -619,7 +616,7 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { auto make = [&](double angle, const Vector3F& origin, std::ofstream& osTmp) { helper.clear(); - BoundingBoxScalar far = 1; + double far = 1.; Frustum3 fr(origin, {0, 0, 1}, angle); fr.draw(helper, far); fr = Frustum3(origin, {0, 0, -1}, angle); @@ -655,7 +652,7 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { for (std::size_t i = 0; i <= n; i++) { Vector3F origin(i * 4, 0, 0); AngleAxis3F rot(std::numbers::pi / n * i, Vector3F::UnitY()); - BoundingBoxScalar angle = (std::numbers::pi / 2.) / n * (1 + i); + double angle = (std::numbers::pi / 2.) / n * (1 + i); Vector3F dir(1, 0, 0); Frustum3 fr(origin, rot * dir, angle); fr.draw(helper, 2); @@ -850,16 +847,16 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { step = (max - min) / n; Object o; - using Box = AxisAlignedBoundingBox<Object, BoundingBoxScalar, 3>; - Box::Size size(Eigen::Matrix<BoundingBoxScalar, 3, 1>(2, 2, 2)); + using Box = AxisAlignedBoundingBox<Object, double, 3>; + Box::Size size(Eigen::Matrix<double, 3, 1>(2, 2, 2)); std::size_t idx = 0; for (std::size_t i = 0; i <= n; i++) { for (std::size_t j = 0; j <= n; j++) { for (std::size_t k = 0; k <= n; k++) { - Eigen::Matrix<BoundingBoxScalar, 3, 1> pos( - min + i * step, min + j * step, min + k * step); + Eigen::Matrix<double, 3, 1> pos(min + i * step, min + j * step, + min + k * step); Box bb(&o, pos, size); Color color = {255, 0, 0}; @@ -883,7 +880,7 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { } BOOST_TEST_CONTEXT("3D - 4 Sides") { - using Frustum34 = Frustum<BoundingBoxScalar, 3, 4>; + using Frustum34 = Frustum<double, 3, 4>; const std::size_t n = 10; double min = -10; double max = 10; @@ -902,7 +899,7 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { Vector3F origin(min + i * step, min + j * step, min + k * step); Vector3F dir(1, 0, 0); - BoundingBoxScalar piOverS = std::numbers::pi_v<BoundingBoxScalar> / s; + double piOverS = std::numbers::pi / s; AngleAxis3F rot; rot = AngleAxis3F(piOverS * i, Vector3F::UnitX()) * AngleAxis3F(piOverS * j, Vector3F::UnitY()) * @@ -1104,15 +1101,15 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { fr.draw(helper, 50); Object o; - using Box = AxisAlignedBoundingBox<Object, BoundingBoxScalar, 3>; - Box::Size size(Eigen::Matrix<BoundingBoxScalar, 3, 1>(2, 2, 2)); + using Box = AxisAlignedBoundingBox<Object, double, 3>; + Box::Size size(Eigen::Matrix<double, 3, 1>(2, 2, 2)); std::size_t idx = 0; for (std::size_t i = 0; i <= n; i++) { for (std::size_t j = 0; j <= n; j++) { for (std::size_t k = 0; k <= n; k++) { - Eigen::Matrix<BoundingBoxScalar, 3, 1> pos( - min + i * step, min + j * step, min + k * step); + Eigen::Matrix<double, 3, 1> pos(min + i * step, min + j * step, + min + k * step); Box bb(&o, pos, size); Color color = {255, 0, 0}; @@ -1136,13 +1133,13 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { } BOOST_TEST_CONTEXT("3D - 5 Sides") { - using Frustum = Frustum<BoundingBoxScalar, 3, 5>; - using Box = AxisAlignedBoundingBox<Object, BoundingBoxScalar, 3>; - Box::Size size(Eigen::Matrix<BoundingBoxScalar, 3, 1>(2, 2, 2)); + using Frustum = Frustum<double, 3, 5>; + using Box = AxisAlignedBoundingBox<Object, double, 3>; + Box::Size size(Acts::Vector3(2, 2, 2)); Object o; - PlyVisualization3D<BoundingBoxScalar> ply; + PlyVisualization3D<double> ply; Frustum fr({0, 0, 0}, {0, 0, 1}, std::numbers::pi / 8.); fr.draw(ply, 10); @@ -1158,17 +1155,16 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { } BOOST_TEST_CONTEXT("3D - 10 Sides") { - using Frustum = Frustum<BoundingBoxScalar, 3, 10>; - using Box = AxisAlignedBoundingBox<Object, BoundingBoxScalar, 3>; - using vec3 = Eigen::Matrix<BoundingBoxScalar, 3, 1>; - Box::Size size(vec3(2, 2, 2)); + using Frustum = Frustum<double, 3, 10>; + using Box = AxisAlignedBoundingBox<Object, double, 3>; + Box::Size size(Acts::Vector3(2, 2, 2)); Object o; - PlyVisualization3D<BoundingBoxScalar> ply; + PlyVisualization3D<double> ply; - vec3 pos = {-12.4205, 29.3578, 44.6207}; - vec3 dir = {-0.656862, 0.48138, 0.58035}; + Acts::Vector3 pos = {-12.4205, 29.3578, 44.6207}; + Acts::Vector3 dir = {-0.656862, 0.48138, 0.58035}; Frustum fr(pos, dir, 0.972419); fr.draw(ply, 10); @@ -1183,20 +1179,19 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { } BOOST_TEST_CONTEXT("3D - 4 Sides - Big box") { - using Frustum = Frustum<BoundingBoxScalar, 3, 4>; - using Box = AxisAlignedBoundingBox<Object, BoundingBoxScalar, 3>; - using vec3 = Eigen::Matrix<BoundingBoxScalar, 3, 1>; + using Frustum = Frustum<double, 3, 4>; + using Box = AxisAlignedBoundingBox<Object, double, 3>; Object o; - PlyVisualization3D<BoundingBoxScalar> ply; + PlyVisualization3D<double> ply; - vec3 pos = {0, 0, 0}; - vec3 dir = {0, 0, 1}; + Acts::Vector3 pos = {0, 0, 0}; + Acts::Vector3 dir = {0, 0, 1}; Frustum fr(pos, dir, 0.972419); fr.draw(ply, 10); - Box::Size size(vec3(100, 100, 2)); + Box::Size size(Acts::Vector3(100, 100, 2)); Box bb(&o, pos + dir * 7, size); bb.draw(ply); @@ -1210,7 +1205,7 @@ BOOST_AUTO_TEST_CASE(frustum_intersect) { BOOST_AUTO_TEST_CASE(ostream_operator) { Object o; - using Box = Acts::AxisAlignedBoundingBox<Object, BoundingBoxScalar, 2>; + using Box = Acts::AxisAlignedBoundingBox<Object, double, 2>; Box bb(&o, {-1, -1}, {2, 2}); std::stringstream ss; diff --git a/Tests/UnitTests/Fatras/EventData/HitTests.cpp b/Tests/UnitTests/Fatras/EventData/HitTests.cpp index 765db8378a8..4fc89f8b686 100644 --- a/Tests/UnitTests/Fatras/EventData/HitTests.cpp +++ b/Tests/UnitTests/Fatras/EventData/HitTests.cpp @@ -18,7 +18,7 @@ using namespace ActsFatras; namespace { -constexpr auto eps = std::numeric_limits<Hit::Scalar>::epsilon(); +constexpr auto eps = std::numeric_limits<double>::epsilon(); const auto pid = Barcode().setVertexPrimary(12).setParticle(23); const auto gid = Acts::GeometryIdentifier().setVolume(1).setLayer(2).setSensitive(3); @@ -28,93 +28,95 @@ BOOST_AUTO_TEST_SUITE(FatrasHit) BOOST_AUTO_TEST_CASE(WithoutInteraction) { // some hit position - auto p4 = Hit::Vector4(1, 2, 3, 4); + auto p4 = Acts::Vector4(1, 2, 3, 4); // before/after four-momenta are the same - auto m4 = Hit::Vector4(1, 1, 1, 4); + auto m4 = Acts::Vector4(1, 1, 1, 4); auto h = Hit(gid, pid, p4, m4, m4, 12u); BOOST_CHECK_EQUAL(h.geometryId(), gid); BOOST_CHECK_EQUAL(h.particleId(), pid); BOOST_CHECK_EQUAL(h.index(), 12u); CHECK_CLOSE_REL(h.fourPosition(), p4, eps); - CHECK_CLOSE_REL(h.position(), Hit::Vector3(1, 2, 3), eps); + CHECK_CLOSE_REL(h.position(), Acts::Vector3(1, 2, 3), eps); CHECK_CLOSE_REL(h.time(), 4, eps); CHECK_CLOSE_REL(h.momentum4Before(), m4, eps); CHECK_CLOSE_REL(h.momentum4After(), m4, eps); - CHECK_CLOSE_REL(h.directionBefore(), Hit::Vector3(1, 1, 1).normalized(), eps); - CHECK_CLOSE_REL(h.directionAfter(), Hit::Vector3(1, 1, 1).normalized(), eps); - CHECK_CLOSE_REL(h.direction(), Hit::Vector3(1, 1, 1).normalized(), eps); + CHECK_CLOSE_REL(h.directionBefore(), Acts::Vector3(1, 1, 1).normalized(), + eps); + CHECK_CLOSE_REL(h.directionAfter(), Acts::Vector3(1, 1, 1).normalized(), eps); + CHECK_CLOSE_REL(h.direction(), Acts::Vector3(1, 1, 1).normalized(), eps); CHECK_SMALL(h.depositedEnergy(), eps); } BOOST_AUTO_TEST_CASE(WithEnergyLoss) { // some hit position - auto p4 = Hit::Vector4(1, 2, 3, 4); + auto p4 = Acts::Vector4(1, 2, 3, 4); // before/after four-momenta differ by energy loss, use zero mass to simplify - auto m40 = Hit::Vector4(2, 0, 0, 2); - auto m41 = Hit::Vector4(1.5, 0, 0, 1.5); + auto m40 = Acts::Vector4(2, 0, 0, 2); + auto m41 = Acts::Vector4(1.5, 0, 0, 1.5); auto h = Hit(gid, pid, p4, m40, m41, 13u); BOOST_CHECK_EQUAL(h.geometryId(), gid); BOOST_CHECK_EQUAL(h.particleId(), pid); BOOST_CHECK_EQUAL(h.index(), 13u); CHECK_CLOSE_REL(h.fourPosition(), p4, eps); - CHECK_CLOSE_REL(h.position(), Hit::Vector3(1, 2, 3), eps); + CHECK_CLOSE_REL(h.position(), Acts::Vector3(1, 2, 3), eps); CHECK_CLOSE_REL(h.time(), 4, eps); CHECK_CLOSE_OR_SMALL(h.momentum4Before(), m40, eps, eps); CHECK_CLOSE_OR_SMALL(h.momentum4After(), m41, eps, eps); - CHECK_CLOSE_OR_SMALL(h.directionBefore(), Hit::Vector3(1, 0, 0), eps, eps); - CHECK_CLOSE_OR_SMALL(h.directionAfter(), Hit::Vector3(1, 0, 0), eps, eps); - CHECK_CLOSE_OR_SMALL(h.direction(), Hit::Vector3(1, 0, 0), eps, eps); + CHECK_CLOSE_OR_SMALL(h.directionBefore(), Acts::Vector3(1, 0, 0), eps, eps); + CHECK_CLOSE_OR_SMALL(h.directionAfter(), Acts::Vector3(1, 0, 0), eps, eps); + CHECK_CLOSE_OR_SMALL(h.direction(), Acts::Vector3(1, 0, 0), eps, eps); CHECK_CLOSE_REL(h.depositedEnergy(), 0.5, eps); } BOOST_AUTO_TEST_CASE(WithScattering) { // some hit position - auto p4 = Hit::Vector4(1, 2, 3, 4); + auto p4 = Acts::Vector4(1, 2, 3, 4); // before/after four-momenta differ only by direction - auto m40 = Hit::Vector4(2, 0, 2, 5); - auto m41 = Hit::Vector4(0, -2, 2, 5); + auto m40 = Acts::Vector4(2, 0, 2, 5); + auto m41 = Acts::Vector4(0, -2, 2, 5); auto h = Hit(gid, pid, p4, m40, m41, 42u); BOOST_CHECK_EQUAL(h.geometryId(), gid); BOOST_CHECK_EQUAL(h.particleId(), pid); BOOST_CHECK_EQUAL(h.index(), 42u); CHECK_CLOSE_REL(h.fourPosition(), p4, eps); - CHECK_CLOSE_REL(h.position(), Hit::Vector3(1, 2, 3), eps); + CHECK_CLOSE_REL(h.position(), Acts::Vector3(1, 2, 3), eps); CHECK_CLOSE_REL(h.time(), 4, eps); CHECK_CLOSE_OR_SMALL(h.momentum4Before(), m40, eps, eps); CHECK_CLOSE_OR_SMALL(h.momentum4After(), m41, eps, eps); - CHECK_CLOSE_OR_SMALL(h.directionBefore(), Hit::Vector3(1, 0, 1).normalized(), + CHECK_CLOSE_OR_SMALL(h.directionBefore(), Acts::Vector3(1, 0, 1).normalized(), eps, eps); - CHECK_CLOSE_OR_SMALL(h.directionAfter(), Hit::Vector3(0, -1, 1).normalized(), + CHECK_CLOSE_OR_SMALL(h.directionAfter(), Acts::Vector3(0, -1, 1).normalized(), eps, eps); - CHECK_CLOSE_REL(h.direction(), Hit::Vector3(1, -1, 2).normalized(), eps); + CHECK_CLOSE_REL(h.direction(), Acts::Vector3(1, -1, 2).normalized(), eps); CHECK_SMALL(h.depositedEnergy(), eps); } BOOST_AUTO_TEST_CASE(WithEverything) { // some hit position - auto p4 = Hit::Vector4(1, 2, 3, 4); + auto p4 = Acts::Vector4(1, 2, 3, 4); // before/after four-momenta differ by direction and norm - auto m40 = Hit::Vector4(3, 2, 2, 5); - auto m41 = Hit::Vector4(2, 1, 2, 4); + auto m40 = Acts::Vector4(3, 2, 2, 5); + auto m41 = Acts::Vector4(2, 1, 2, 4); auto h = Hit(gid, pid, p4, m40, m41, 1u); BOOST_CHECK_EQUAL(h.geometryId(), gid); BOOST_CHECK_EQUAL(h.particleId(), pid); BOOST_CHECK_EQUAL(h.index(), 1u); CHECK_CLOSE_REL(h.fourPosition(), p4, eps); - CHECK_CLOSE_REL(h.position(), Hit::Vector3(1, 2, 3), eps); + CHECK_CLOSE_REL(h.position(), Acts::Vector3(1, 2, 3), eps); CHECK_CLOSE_REL(h.time(), 4, eps); CHECK_CLOSE_OR_SMALL(h.momentum4Before(), m40, eps, eps); CHECK_CLOSE_OR_SMALL(h.momentum4After(), m41, eps, eps); - CHECK_CLOSE_REL(h.directionBefore(), Hit::Vector3(3, 2, 2).normalized(), eps); - CHECK_CLOSE_REL(h.directionAfter(), Hit::Vector3(2, 1, 2).normalized(), eps); - CHECK_CLOSE_REL( - h.direction(), - Hit::Vector3(0.7023994590205035, 0.41229136135810396, 0.5802161953247991), - eps); + CHECK_CLOSE_REL(h.directionBefore(), Acts::Vector3(3, 2, 2).normalized(), + eps); + CHECK_CLOSE_REL(h.directionAfter(), Acts::Vector3(2, 1, 2).normalized(), eps); + CHECK_CLOSE_REL(h.direction(), + Acts::Vector3(0.7023994590205035, 0.41229136135810396, + 0.5802161953247991), + eps); CHECK_CLOSE_REL(h.depositedEnergy(), 1, eps); } diff --git a/Tests/UnitTests/Fatras/EventData/ParticleTests.cpp b/Tests/UnitTests/Fatras/EventData/ParticleTests.cpp index a6858dacc74..e3fce039dab 100644 --- a/Tests/UnitTests/Fatras/EventData/ParticleTests.cpp +++ b/Tests/UnitTests/Fatras/EventData/ParticleTests.cpp @@ -23,7 +23,7 @@ using ActsFatras::Particle; using namespace Acts::UnitLiterals; namespace { -constexpr auto eps = std::numeric_limits<Particle::Scalar>::epsilon(); +constexpr auto eps = std::numeric_limits<double>::epsilon(); } BOOST_AUTO_TEST_SUITE(FatrasParticle) @@ -35,17 +35,17 @@ BOOST_AUTO_TEST_CASE(Construct) { BOOST_CHECK_EQUAL(particle.particleId(), pid); BOOST_CHECK_EQUAL(particle.pdg(), PdgParticle::eProton); // particle is at rest at the origin - BOOST_CHECK_EQUAL(particle.fourPosition(), Particle::Vector4::Zero()); - BOOST_CHECK_EQUAL(particle.position(), Particle::Vector3::Zero()); - BOOST_CHECK_EQUAL(particle.time(), Particle::Scalar{0}); + BOOST_CHECK_EQUAL(particle.fourPosition(), Acts::Vector4::Zero()); + BOOST_CHECK_EQUAL(particle.position(), Acts::Vector3::Zero()); + BOOST_CHECK_EQUAL(particle.time(), 0.); BOOST_CHECK_EQUAL(particle.fourPosition().x(), particle.position().x()); BOOST_CHECK_EQUAL(particle.fourPosition().y(), particle.position().y()); BOOST_CHECK_EQUAL(particle.fourPosition().z(), particle.position().z()); BOOST_CHECK_EQUAL(particle.fourPosition().w(), particle.time()); // particle direction is undefined, but must be normalized CHECK_CLOSE_REL(particle.direction().norm(), 1, eps); - BOOST_CHECK_EQUAL(particle.transverseMomentum(), Particle::Scalar{0}); - BOOST_CHECK_EQUAL(particle.absoluteMomentum(), Particle::Scalar{0}); + BOOST_CHECK_EQUAL(particle.transverseMomentum(), 0.); + BOOST_CHECK_EQUAL(particle.absoluteMomentum(), 0.); // particle is created at rest and thus not alive BOOST_CHECK(!particle.isAlive()); } @@ -53,7 +53,7 @@ BOOST_AUTO_TEST_CASE(Construct) { BOOST_AUTO_TEST_CASE(CorrectEnergy) { const auto pid = Barcode().setVertexPrimary(1).setParticle(42); auto particle = Particle(pid, PdgParticle::eProton, 1_e, 1_GeV) - .setDirection(Particle::Vector3::UnitX()) + .setDirection(Acts::Vector3::UnitX()) .setAbsoluteMomentum(2_GeV); BOOST_CHECK_EQUAL(particle.mass(), 1_GeV); @@ -68,39 +68,37 @@ BOOST_AUTO_TEST_CASE(CorrectEnergy) { // particle direction must be normalized CHECK_CLOSE_REL(particle.direction().norm(), 1, eps); - // loose some energy + // lose some energy particle.correctEnergy(-100_MeV); BOOST_CHECK_LT(particle.transverseMomentum(), 2_GeV); BOOST_CHECK_LT(particle.absoluteMomentum(), 2_GeV); - BOOST_CHECK_EQUAL(particle.energy(), - Particle::Scalar{std::hypot(1_GeV, 2_GeV) - 100_MeV}); + BOOST_CHECK_EQUAL(particle.energy(), std::hypot(1_GeV, 2_GeV) - 100_MeV); CHECK_CLOSE_REL(particle.direction().norm(), 1, eps); // particle is still alive BOOST_CHECK(particle.isAlive()); - // loose some more energy + // lose some more energy particle.correctEnergy(-200_MeV); BOOST_CHECK_LT(particle.transverseMomentum(), 2_GeV); BOOST_CHECK_LT(particle.absoluteMomentum(), 2_GeV); - BOOST_CHECK_EQUAL(particle.energy(), - Particle::Scalar{std::hypot(1_GeV, 2_GeV) - 300_MeV}); + BOOST_CHECK_EQUAL(particle.energy(), std::hypot(1_GeV, 2_GeV) - 300_MeV); CHECK_CLOSE_REL(particle.direction().norm(), 1, eps); // particle is still alive BOOST_CHECK(particle.isAlive()); - // loose a lot of energy + // lose a lot of energy particle.correctEnergy(-3_GeV); - BOOST_CHECK_EQUAL(particle.transverseMomentum(), Particle::Scalar{0}); - BOOST_CHECK_EQUAL(particle.absoluteMomentum(), Particle::Scalar{0}); + BOOST_CHECK_EQUAL(particle.transverseMomentum(), 0.); + BOOST_CHECK_EQUAL(particle.absoluteMomentum(), 0.); BOOST_CHECK_EQUAL(particle.energy(), particle.mass()); CHECK_CLOSE_REL(particle.direction().norm(), 1, eps); // particle is not alive anymore BOOST_CHECK(!particle.isAlive()); - // lossing even more energy does nothing + // losing even more energy does nothing particle.correctEnergy(-10_GeV); - BOOST_CHECK_EQUAL(particle.transverseMomentum(), Particle::Scalar{0}); - BOOST_CHECK_EQUAL(particle.absoluteMomentum(), Particle::Scalar{0}); + BOOST_CHECK_EQUAL(particle.transverseMomentum(), 0.); + BOOST_CHECK_EQUAL(particle.absoluteMomentum(), 0.); BOOST_CHECK_EQUAL(particle.energy(), particle.mass()); CHECK_CLOSE_REL(particle.direction().norm(), 1, eps); // particle is still not alive diff --git a/Tests/UnitTests/Fatras/Kernel/InteractionListTests.cpp b/Tests/UnitTests/Fatras/Kernel/InteractionListTests.cpp index 167025ad739..0364fe810d6 100644 --- a/Tests/UnitTests/Fatras/Kernel/InteractionListTests.cpp +++ b/Tests/UnitTests/Fatras/Kernel/InteractionListTests.cpp @@ -25,7 +25,6 @@ using namespace Acts::UnitLiterals; using namespace ActsFatras; using Acts::MaterialSlab; -using Scalar = Particle::Scalar; namespace { @@ -63,9 +62,9 @@ static_assert(!detail::PointLikeProcessConcept<FatalContinuousProcess>, /// Each run call creates one descendant particle. struct X0PointLikeProcess { template <typename generator_t> - std::pair<Scalar, Scalar> generatePathLimits( + std::pair<double, double> generatePathLimits( generator_t & /*generator*/, const Particle & /*particle*/) const { - return {0.5, std::numeric_limits<Scalar>::infinity()}; + return {0.5, std::numeric_limits<double>::infinity()}; } template <typename generator_t> @@ -87,9 +86,9 @@ static_assert(detail::PointLikeProcessConcept<X0PointLikeProcess>, /// Each run call creates two descendant particles. struct L0PointLikeProcess { template <typename generator_t> - std::pair<Scalar, Scalar> generatePathLimits( + std::pair<double, double> generatePathLimits( generator_t & /*generator*/, const Particle & /*particle*/) const { - return {std::numeric_limits<Scalar>::infinity(), 1.5}; + return {std::numeric_limits<double>::infinity(), 1.5}; } template <typename generator_t> @@ -129,8 +128,8 @@ BOOST_AUTO_TEST_CASE(Empty) { // w/o processes there should be no selection auto sel = l.armPointLike(f.rng, f.incoming); - BOOST_CHECK_EQUAL(sel.x0Limit, std::numeric_limits<Scalar>::infinity()); - BOOST_CHECK_EQUAL(sel.l0Limit, std::numeric_limits<Scalar>::infinity()); + BOOST_CHECK_EQUAL(sel.x0Limit, std::numeric_limits<double>::infinity()); + BOOST_CHECK_EQUAL(sel.l0Limit, std::numeric_limits<double>::infinity()); BOOST_CHECK_EQUAL(sel.x0Process, std::numeric_limits<std::size_t>::max()); BOOST_CHECK_EQUAL(sel.l0Process, std::numeric_limits<std::size_t>::max()); @@ -179,7 +178,7 @@ BOOST_AUTO_TEST_CASE(PointLikeX0) { // w/o processes the list should never abort auto sel = l.armPointLike(f.rng, f.incoming); BOOST_CHECK_EQUAL(sel.x0Limit, 0.5); - BOOST_CHECK_EQUAL(sel.l0Limit, std::numeric_limits<Scalar>::infinity()); + BOOST_CHECK_EQUAL(sel.l0Limit, std::numeric_limits<double>::infinity()); BOOST_CHECK_EQUAL(sel.x0Process, 0u); BOOST_CHECK_EQUAL(sel.l0Process, std::numeric_limits<std::size_t>::max()); @@ -198,7 +197,7 @@ BOOST_AUTO_TEST_CASE(PointLikeL0) { // w/o processes the list should never abort auto sel = l.armPointLike(f.rng, f.incoming); - BOOST_CHECK_EQUAL(sel.x0Limit, std::numeric_limits<Scalar>::infinity()); + BOOST_CHECK_EQUAL(sel.x0Limit, std::numeric_limits<double>::infinity()); BOOST_CHECK_EQUAL(sel.l0Limit, 1.5); BOOST_CHECK_EQUAL(sel.x0Process, std::numeric_limits<std::size_t>::max()); BOOST_CHECK_EQUAL(sel.l0Process, 0u); @@ -253,7 +252,7 @@ BOOST_AUTO_TEST_CASE(Disable) { l.disable<X0PointLikeProcess>(); { auto sel = l.armPointLike(f.rng, f.incoming); - BOOST_CHECK_EQUAL(sel.x0Limit, std::numeric_limits<Scalar>::infinity()); + BOOST_CHECK_EQUAL(sel.x0Limit, std::numeric_limits<double>::infinity()); BOOST_CHECK_EQUAL(sel.l0Limit, 1.5); BOOST_CHECK_EQUAL(sel.x0Process, std::numeric_limits<std::size_t>::max()); BOOST_CHECK_EQUAL(sel.l0Process, 3u); @@ -271,8 +270,8 @@ BOOST_AUTO_TEST_CASE(Disable) { l.disable<L0PointLikeProcess>(); { auto sel = l.armPointLike(f.rng, f.incoming); - BOOST_CHECK_EQUAL(sel.x0Limit, std::numeric_limits<Scalar>::infinity()); - BOOST_CHECK_EQUAL(sel.l0Limit, std::numeric_limits<Scalar>::infinity()); + BOOST_CHECK_EQUAL(sel.x0Limit, std::numeric_limits<double>::infinity()); + BOOST_CHECK_EQUAL(sel.l0Limit, std::numeric_limits<double>::infinity()); BOOST_CHECK_EQUAL(sel.x0Process, std::numeric_limits<std::size_t>::max()); BOOST_CHECK_EQUAL(sel.l0Process, std::numeric_limits<std::size_t>::max()); diff --git a/Tests/UnitTests/Fatras/Kernel/SimulationActorTests.cpp b/Tests/UnitTests/Fatras/Kernel/SimulationActorTests.cpp index 3306c5702d6..c31f33547e0 100644 --- a/Tests/UnitTests/Fatras/Kernel/SimulationActorTests.cpp +++ b/Tests/UnitTests/Fatras/Kernel/SimulationActorTests.cpp @@ -44,15 +44,15 @@ using namespace ActsFatras; namespace { -constexpr auto tol = 4 * std::numeric_limits<Particle::Scalar>::epsilon(); -constexpr auto inf = std::numeric_limits<Particle::Scalar>::infinity(); +constexpr auto tol = 4 * std::numeric_limits<double>::epsilon(); +constexpr auto inf = std::numeric_limits<double>::infinity(); struct MockDecay { - Particle::Scalar properTimeLimit = inf; + double properTimeLimit = inf; template <typename generator_t> - constexpr Particle::Scalar generateProperTimeLimit( - generator_t & /*generator*/, const Particle &particle) const { + constexpr double generateProperTimeLimit(generator_t & /*generator*/, + const Particle &particle) const { return particle.properTime() + properTimeLimit; } template <typename generator_t> @@ -97,26 +97,21 @@ struct MockInteractionList { }; struct MockStepperState { - using Scalar = Acts::ActsScalar; - using Vector3 = Acts::ActsVector<3>; - - Vector3 pos = Vector3::Zero(); - Scalar time = 0; - Vector3 dir = Vector3::Zero(); - Scalar p = 0; + Acts::Vector3 pos = Acts::Vector3::Zero(); + double time = 0; + Acts::Vector3 dir = Acts::Vector3::Zero(); + double p = 0; }; struct MockStepper { using State = MockStepperState; - using Scalar = MockStepperState::Scalar; - using Vector3 = MockStepperState::Vector3; auto position(const State &state) const { return state.pos; } auto time(const State &state) const { return state.time; } auto direction(const State &state) const { return state.dir; } auto absoluteMomentum(const State &state) const { return state.p; } - void update(State &state, const Vector3 &pos, const Vector3 &dir, Scalar qop, - Scalar time) { + void update(State &state, const Acts::Vector3 &pos, const Acts::Vector3 &dir, + double qop, double time) { state.pos = pos; state.time = time; state.dir = dir; @@ -181,10 +176,10 @@ struct Fixture { Barcode pid = Barcode().setVertexPrimary(12u).setParticle(3u); ProcessType proc = ProcessType::eUndefined; Acts::PdgParticle pdg = Acts::PdgParticle::eProton; - Particle::Scalar q = 1_e; - Particle::Scalar m = 1_GeV; - Particle::Scalar p = 1_GeV; - Particle::Scalar e; + double q = 1_e; + double m = 1_GeV; + double p = 1_GeV; + double e; Generator generator; std::shared_ptr<Acts::Surface> surface; Actor actor; diff --git a/Tests/UnitTests/Fatras/Physics/PhotonConversionTests.cpp b/Tests/UnitTests/Fatras/Physics/PhotonConversionTests.cpp index f5340ab4cc7..3b7d6fe1b1c 100644 --- a/Tests/UnitTests/Fatras/Physics/PhotonConversionTests.cpp +++ b/Tests/UnitTests/Fatras/Physics/PhotonConversionTests.cpp @@ -32,7 +32,6 @@ BOOST_AUTO_TEST_SUITE(FatrasPhotonConversion) BOOST_DATA_TEST_CASE(NoPhoton, Dataset::parametersPhotonConversion, phi, theta, seed) { - using Scalar = ActsFatras::PhotonConversion::Scalar; using namespace Acts::UnitLiterals; Generator gen(seed); @@ -45,10 +44,10 @@ BOOST_DATA_TEST_CASE(NoPhoton, Dataset::parametersPhotonConversion, phi, theta, ActsFatras::PhotonConversion pc; // No limits should be set - std::pair<Scalar, Scalar> limits; + std::pair<double, double> limits; limits = pc.generatePathLimits(gen, particle); - BOOST_CHECK_EQUAL(limits.first, std::numeric_limits<Scalar>::infinity()); - BOOST_CHECK_EQUAL(limits.second, std::numeric_limits<Scalar>::infinity()); + BOOST_CHECK_EQUAL(limits.first, std::numeric_limits<double>::infinity()); + BOOST_CHECK_EQUAL(limits.second, std::numeric_limits<double>::infinity()); // No particles should be generated std::vector<ActsFatras::Particle> generated; @@ -65,7 +64,6 @@ BOOST_DATA_TEST_CASE(NoPhoton, Dataset::parametersPhotonConversion, phi, theta, BOOST_DATA_TEST_CASE(DeadPhoton, Dataset::parametersPhotonConversion, phi, theta, seed) { - using Scalar = ActsFatras::PhotonConversion::Scalar; using namespace Acts::UnitLiterals; Generator gen(seed); @@ -78,9 +76,9 @@ BOOST_DATA_TEST_CASE(DeadPhoton, Dataset::parametersPhotonConversion, phi, ActsFatras::PhotonConversion pc; // No limits should be set - momentum too low - std::pair<Scalar, Scalar> limits = pc.generatePathLimits(gen, particle); - BOOST_CHECK_EQUAL(limits.first, std::numeric_limits<Scalar>::infinity()); - BOOST_CHECK_EQUAL(limits.second, std::numeric_limits<Scalar>::infinity()); + std::pair<double, double> limits = pc.generatePathLimits(gen, particle); + BOOST_CHECK_EQUAL(limits.first, std::numeric_limits<double>::infinity()); + BOOST_CHECK_EQUAL(limits.second, std::numeric_limits<double>::infinity()); // No particles should be generated - momentum too low std::vector<ActsFatras::Particle> generated; @@ -97,7 +95,6 @@ BOOST_DATA_TEST_CASE(DeadPhoton, Dataset::parametersPhotonConversion, phi, BOOST_DATA_TEST_CASE(LowMomentumPhoton, Dataset::parametersPhotonConversion, phi, theta, seed) { - using Scalar = ActsFatras::PhotonConversion::Scalar; using namespace Acts::UnitLiterals; Generator gen(seed); @@ -110,9 +107,9 @@ BOOST_DATA_TEST_CASE(LowMomentumPhoton, Dataset::parametersPhotonConversion, ActsFatras::PhotonConversion pc; // No limits should be set - momentum too low - std::pair<Scalar, Scalar> limits = pc.generatePathLimits(gen, particle); - BOOST_CHECK_EQUAL(limits.first, std::numeric_limits<Scalar>::infinity()); - BOOST_CHECK_EQUAL(limits.second, std::numeric_limits<Scalar>::infinity()); + std::pair<double, double> limits = pc.generatePathLimits(gen, particle); + BOOST_CHECK_EQUAL(limits.first, std::numeric_limits<double>::infinity()); + BOOST_CHECK_EQUAL(limits.second, std::numeric_limits<double>::infinity()); // No particles should be generated - momentum too low std::vector<ActsFatras::Particle> generated; @@ -129,7 +126,6 @@ BOOST_DATA_TEST_CASE(LowMomentumPhoton, Dataset::parametersPhotonConversion, BOOST_DATA_TEST_CASE(HighMomentumPhoton, Dataset::parametersPhotonConversion, phi, theta, seed) { - using Scalar = ActsFatras::PhotonConversion::Scalar; using namespace Acts::UnitLiterals; Generator gen(seed); @@ -142,9 +138,9 @@ BOOST_DATA_TEST_CASE(HighMomentumPhoton, Dataset::parametersPhotonConversion, ActsFatras::PhotonConversion pc; // No limits should be set - momentum too low - std::pair<Scalar, Scalar> limits = pc.generatePathLimits(gen, particle); - BOOST_CHECK_NE(limits.first, std::numeric_limits<Scalar>::infinity()); - BOOST_CHECK_EQUAL(limits.second, std::numeric_limits<Scalar>::infinity()); + std::pair<double, double> limits = pc.generatePathLimits(gen, particle); + BOOST_CHECK_NE(limits.first, std::numeric_limits<double>::infinity()); + BOOST_CHECK_EQUAL(limits.second, std::numeric_limits<double>::infinity()); // No particles should be generated - momentum too low std::vector<ActsFatras::Particle> generated; From c5391bec86cd97573fdbfce7edd1d6997fa4ad43 Mon Sep 17 00:00:00 2001 From: Andreas Stefl <stefl.andreas@gmail.com> Date: Mon, 25 Nov 2024 13:01:21 +0100 Subject: [PATCH 47/49] chore!: Clean some Material code (#3897) Accumulated changed from https://github.com/acts-project/acts/pull/3862 - use namespaces in source files - remove operator overloads (breaking) - move some implementations to source --- .../Acts/Material/BinnedSurfaceMaterial.hpp | 8 ++-- .../Acts/Material/GridSurfaceMaterial.hpp | 14 +++---- .../Material/HomogeneousSurfaceMaterial.hpp | 41 ++++++++----------- .../Material/HomogeneousVolumeMaterial.hpp | 31 +++++++------- .../Acts/Material/ISurfaceMaterial.hpp | 17 ++++---- Core/include/Acts/Material/Material.hpp | 14 +++++-- Core/include/Acts/Material/MaterialSlab.hpp | 9 ++++ .../Acts/Material/ProtoSurfaceMaterial.hpp | 5 +-- Core/src/Material/BinnedSurfaceMaterial.cpp | 5 +-- .../Material/HomogeneousSurfaceMaterial.cpp | 31 ++++++++++---- .../Material/HomogeneousVolumeMaterial.cpp | 17 +++++--- Core/src/Material/Material.cpp | 30 ++++++++------ Core/src/Material/MaterialSlab.cpp | 1 - .../Io/Root/src/RootMaterialTrackWriter.cpp | 3 -- .../Plugins/Json/MaterialJsonConverter.hpp | 2 +- .../Material/GridSurfaceMaterialTests.cpp | 8 ++-- .../HomogeneousSurfaceMaterialTests.cpp | 2 +- .../Core/Material/ISurfaceMaterialTests.cpp | 3 +- 18 files changed, 131 insertions(+), 110 deletions(-) diff --git a/Core/include/Acts/Material/BinnedSurfaceMaterial.hpp b/Core/include/Acts/Material/BinnedSurfaceMaterial.hpp index 97d3347c9e1..d5534803d08 100644 --- a/Core/include/Acts/Material/BinnedSurfaceMaterial.hpp +++ b/Core/include/Acts/Material/BinnedSurfaceMaterial.hpp @@ -13,9 +13,7 @@ #include "Acts/Material/MaterialSlab.hpp" #include "Acts/Utilities/BinUtility.hpp" -#include <cstddef> #include <iosfwd> -#include <vector> namespace Acts { @@ -83,10 +81,10 @@ class BinnedSurfaceMaterial : public ISurfaceMaterial { /// Destructor ~BinnedSurfaceMaterial() override = default; - /// Scale operator + /// Scale operation /// - /// @param scale is the scale factor for the full material - BinnedSurfaceMaterial& operator*=(double scale) final; + /// @param factor is the scale factor for the full material + BinnedSurfaceMaterial& scale(double factor) final; /// Return the BinUtility const BinUtility& binUtility() const; diff --git a/Core/include/Acts/Material/GridSurfaceMaterial.hpp b/Core/include/Acts/Material/GridSurfaceMaterial.hpp index 6c2d6045ca2..d27912c85f3 100644 --- a/Core/include/Acts/Material/GridSurfaceMaterial.hpp +++ b/Core/include/Acts/Material/GridSurfaceMaterial.hpp @@ -11,10 +11,8 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Material/ISurfaceMaterial.hpp" #include "Acts/Material/MaterialSlab.hpp" -#include "Acts/Utilities/BinningType.hpp" #include "Acts/Utilities/Delegate.hpp" #include "Acts/Utilities/GridAccessHelpers.hpp" -#include "Acts/Utilities/VectorHelpers.hpp" #include <ostream> #include <stdexcept> @@ -44,7 +42,7 @@ struct GridMaterialAccessor { /// /// @note this is not particularly fast template <typename grid_type> - void scale(grid_type& grid, ActsScalar scale) { + void scale(grid_type& grid, double scale) { // Loop through the grid bins, get the indices and scale the material for (std::size_t ib = 0; ib < grid.size(); ++ib) { grid.at(ib).scaleThickness(scale); @@ -74,7 +72,7 @@ struct IndexedMaterialAccessor { /// /// @param scale the amount of the scaling template <typename grid_type> - void scale(grid_type& /*grid*/, ActsScalar scale) { + void scale(grid_type& /*grid*/, double scale) { for (auto& m : material) { m.scaleThickness(scale); } @@ -118,7 +116,7 @@ struct GloballyIndexedMaterialAccessor { /// outcome is unpredictable. /// template <typename grid_type> - void scale(grid_type& grid, ActsScalar scale) { + void scale(grid_type& grid, double scale) { if (sharedEntries) { throw std::invalid_argument( "GloballyIndexedMaterialAccessor: shared entry scaling is not " @@ -197,9 +195,9 @@ class GridSurfaceMaterialT : public ISurfaceMaterial { /// Scale operator /// - /// @param scale is the scale factor applied - ISurfaceMaterial& operator*=(ActsScalar scale) final { - m_materialAccessor.scale(m_grid, scale); + /// @param factor is the scale factor applied + ISurfaceMaterial& scale(double factor) final { + m_materialAccessor.scale(m_grid, factor); return (*this); } diff --git a/Core/include/Acts/Material/HomogeneousSurfaceMaterial.hpp b/Core/include/Acts/Material/HomogeneousSurfaceMaterial.hpp index 1ea14e632ac..37cad2a18d6 100644 --- a/Core/include/Acts/Material/HomogeneousSurfaceMaterial.hpp +++ b/Core/include/Acts/Material/HomogeneousSurfaceMaterial.hpp @@ -12,7 +12,6 @@ #include "Acts/Material/ISurfaceMaterial.hpp" #include "Acts/Material/MaterialSlab.hpp" -#include <cstddef> #include <iosfwd> namespace Acts { @@ -62,13 +61,8 @@ class HomogeneousSurfaceMaterial : public ISurfaceMaterial { /// Scale operator /// - it is effectively a thickness scaling /// - /// @param scale is the scale factor - HomogeneousSurfaceMaterial& operator*=(double scale) final; - - /// Equality operator - /// - /// @param hsm is the source material - bool operator==(const HomogeneousSurfaceMaterial& hsm) const; + /// @param factor is the scale factor + HomogeneousSurfaceMaterial& scale(double factor) final; /// @copydoc ISurfaceMaterial::materialSlab(const Vector2&) const /// @@ -94,22 +88,21 @@ class HomogeneousSurfaceMaterial : public ISurfaceMaterial { private: /// The five different MaterialSlab - MaterialSlab m_fullMaterial = MaterialSlab(); -}; - -inline const MaterialSlab& HomogeneousSurfaceMaterial::materialSlab( - const Vector2& /*lp*/) const { - return (m_fullMaterial); -} + MaterialSlab m_fullMaterial; -inline const MaterialSlab& HomogeneousSurfaceMaterial::materialSlab( - const Vector3& /*gp*/) const { - return (m_fullMaterial); -} - -inline bool HomogeneousSurfaceMaterial::operator==( - const HomogeneousSurfaceMaterial& hsm) const { - return (m_fullMaterial == hsm.m_fullMaterial); -} + /// @brief Check if two materials are exactly equal. + /// + /// This is a strict equality check, i.e. the materials must have identical + /// properties. + /// + /// @param lhs is the left hand side material + /// @param rhs is the right hand side material + /// + /// @return true if the materials are equal + friend constexpr bool operator==(const HomogeneousSurfaceMaterial& lhs, + const HomogeneousSurfaceMaterial& rhs) { + return lhs.m_fullMaterial == rhs.m_fullMaterial; + } +}; } // namespace Acts diff --git a/Core/include/Acts/Material/HomogeneousVolumeMaterial.hpp b/Core/include/Acts/Material/HomogeneousVolumeMaterial.hpp index 91005dcae55..2034387e764 100644 --- a/Core/include/Acts/Material/HomogeneousVolumeMaterial.hpp +++ b/Core/include/Acts/Material/HomogeneousVolumeMaterial.hpp @@ -46,11 +46,6 @@ class HomogeneousVolumeMaterial : public IVolumeMaterial { HomogeneousVolumeMaterial& operator=(const HomogeneousVolumeMaterial& hvm) = default; - /// Equality operator - /// - /// @param hvm is the source material - bool operator==(const HomogeneousVolumeMaterial& hvm) const; - /// Access to actual material /// /// @param position is the request position for the material call @@ -64,17 +59,21 @@ class HomogeneousVolumeMaterial : public IVolumeMaterial { std::ostream& toStream(std::ostream& sl) const final; private: - Material m_material = Material(); -}; - -inline const Material HomogeneousVolumeMaterial::material( - const Vector3& /*position*/) const { - return (m_material); -} + Material m_material; -inline bool HomogeneousVolumeMaterial::operator==( - const HomogeneousVolumeMaterial& hvm) const { - return (m_material == hvm.m_material); -} + /// @brief Check if two materials are exactly equal. + /// + /// This is a strict equality check, i.e. the materials must have identical + /// properties. + /// + /// @param lhs is the left hand side material + /// @param rhs is the right hand side material + /// + /// @return true if the materials are equal + friend constexpr bool operator==(const HomogeneousVolumeMaterial& lhs, + const HomogeneousVolumeMaterial& rhs) { + return lhs.m_material == rhs.m_material; + } +}; } // namespace Acts diff --git a/Core/include/Acts/Material/ISurfaceMaterial.hpp b/Core/include/Acts/Material/ISurfaceMaterial.hpp index a379e18e715..cad6832441a 100644 --- a/Core/include/Acts/Material/ISurfaceMaterial.hpp +++ b/Core/include/Acts/Material/ISurfaceMaterial.hpp @@ -11,12 +11,9 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/Common.hpp" #include "Acts/Definitions/Direction.hpp" -#include "Acts/Geometry/GeometryIdentifier.hpp" #include "Acts/Material/MaterialSlab.hpp" -#include <memory> #include <sstream> -#include <vector> namespace Acts { @@ -50,10 +47,10 @@ class ISurfaceMaterial { /// Destructor virtual ~ISurfaceMaterial() = default; - /// Scale operator + /// Scale material /// - /// @param scale is the scale factor applied - virtual ISurfaceMaterial& operator*=(double scale) = 0; + /// @param factor is the scale factor applied + virtual ISurfaceMaterial& scale(double factor) = 0; /// Return method for full material description of the Surface /// - from local coordinate on the surface @@ -128,9 +125,11 @@ class ISurfaceMaterial { } protected: - double m_splitFactor{1.}; //!< the split factor in favour of oppositePre - MappingType m_mappingType{ - Acts::MappingType::Default}; //!< Use the default mapping type by default + /// the split factor in favour of oppositePre + double m_splitFactor{1.}; + + /// Use the default mapping type by default + MappingType m_mappingType{Acts::MappingType::Default}; }; inline double ISurfaceMaterial::factor(Direction pDir, diff --git a/Core/include/Acts/Material/Material.hpp b/Core/include/Acts/Material/Material.hpp index ae42e08cf68..1caf59e97ec 100644 --- a/Core/include/Acts/Material/Material.hpp +++ b/Core/include/Acts/Material/Material.hpp @@ -8,11 +8,10 @@ #pragma once -#include "Acts/Definitions/Algebra.hpp" - #include <iosfwd> #include <limits> -#include <utility> + +#include <Eigen/Dense> namespace Acts { @@ -112,6 +111,15 @@ class Material { float m_z = 0.0f; float m_molarRho = 0.0f; + /// @brief Check if two materials are exactly equal. + /// + /// This is a strict equality check, i.e. the materials must have identical + /// properties. + /// + /// @param lhs is the left hand side material + /// @param rhs is the right hand side material + /// + /// @return true if the materials are equal friend constexpr bool operator==(const Material& lhs, const Material& rhs) { return (lhs.m_x0 == rhs.m_x0) && (lhs.m_l0 == rhs.m_l0) && (lhs.m_ar == rhs.m_ar) && (lhs.m_z == rhs.m_z) && diff --git a/Core/include/Acts/Material/MaterialSlab.hpp b/Core/include/Acts/Material/MaterialSlab.hpp index 71c56c1a154..63fd7378e8b 100644 --- a/Core/include/Acts/Material/MaterialSlab.hpp +++ b/Core/include/Acts/Material/MaterialSlab.hpp @@ -79,6 +79,15 @@ class MaterialSlab { float m_thicknessInX0 = 0.0f; float m_thicknessInL0 = 0.0f; + /// @brief Check if two materials are exactly equal. + /// + /// This is a strict equality check, i.e. the materials must have identical + /// properties. + /// + /// @param lhs is the left hand side material + /// @param rhs is the right hand side material + /// + /// @return true if the materials are equal friend constexpr bool operator==(const MaterialSlab& lhs, const MaterialSlab& rhs) { // t/X0 and t/L0 are dependent variables and need not be checked diff --git a/Core/include/Acts/Material/ProtoSurfaceMaterial.hpp b/Core/include/Acts/Material/ProtoSurfaceMaterial.hpp index 58dee9d01c7..8b6dfed3287 100644 --- a/Core/include/Acts/Material/ProtoSurfaceMaterial.hpp +++ b/Core/include/Acts/Material/ProtoSurfaceMaterial.hpp @@ -14,7 +14,6 @@ #include "Acts/Material/MaterialSlab.hpp" #include "Acts/Utilities/BinUtility.hpp" -#include <cstddef> #include <iosfwd> namespace Acts { @@ -67,9 +66,9 @@ class ProtoSurfaceMaterialT : public ISurfaceMaterial { ProtoSurfaceMaterialT<BinningType>& operator=( ProtoSurfaceMaterialT<BinningType>&& smproxy) = default; - /// Scale operator - dummy implementation + /// Scale operation - dummy implementation /// - ProtoSurfaceMaterialT<BinningType>& operator*=(double /*scale*/) final { + ProtoSurfaceMaterialT<BinningType>& scale(double /*factor*/) final { return (*this); } diff --git a/Core/src/Material/BinnedSurfaceMaterial.cpp b/Core/src/Material/BinnedSurfaceMaterial.cpp index 0113e89a6e3..aae46bd02d7 100644 --- a/Core/src/Material/BinnedSurfaceMaterial.cpp +++ b/Core/src/Material/BinnedSurfaceMaterial.cpp @@ -29,11 +29,10 @@ Acts::BinnedSurfaceMaterial::BinnedSurfaceMaterial( m_binUtility(binUtility), m_fullMaterial(std::move(fullProperties)) {} -Acts::BinnedSurfaceMaterial& Acts::BinnedSurfaceMaterial::operator*=( - double scale) { +Acts::BinnedSurfaceMaterial& Acts::BinnedSurfaceMaterial::scale(double factor) { for (auto& materialVector : m_fullMaterial) { for (auto& materialBin : materialVector) { - materialBin.scaleThickness(scale); + materialBin.scaleThickness(factor); } } return (*this); diff --git a/Core/src/Material/HomogeneousSurfaceMaterial.cpp b/Core/src/Material/HomogeneousSurfaceMaterial.cpp index ec56cfd4c81..c3bef1f9de3 100644 --- a/Core/src/Material/HomogeneousSurfaceMaterial.cpp +++ b/Core/src/Material/HomogeneousSurfaceMaterial.cpp @@ -12,20 +12,33 @@ #include <ostream> -Acts::HomogeneousSurfaceMaterial::HomogeneousSurfaceMaterial( - const MaterialSlab& full, double splitFactor, Acts::MappingType mappingType) +namespace Acts { + +HomogeneousSurfaceMaterial::HomogeneousSurfaceMaterial(const MaterialSlab& full, + double splitFactor, + MappingType mappingType) : ISurfaceMaterial(splitFactor, mappingType), m_fullMaterial(full) {} -Acts::HomogeneousSurfaceMaterial& Acts::HomogeneousSurfaceMaterial::operator*=( - double scale) { - m_fullMaterial.scaleThickness(scale); - return (*this); +HomogeneousSurfaceMaterial& HomogeneousSurfaceMaterial::scale(double factor) { + m_fullMaterial.scaleThickness(factor); + return *this; +} + +const MaterialSlab& HomogeneousSurfaceMaterial::materialSlab( + const Vector2& /*lp*/) const { + return m_fullMaterial; } -std::ostream& Acts::HomogeneousSurfaceMaterial::toStream( - std::ostream& sl) const { - sl << "Acts::HomogeneousSurfaceMaterial : " << std::endl; +const MaterialSlab& HomogeneousSurfaceMaterial::materialSlab( + const Vector3& /*gp*/) const { + return m_fullMaterial; +} + +std::ostream& HomogeneousSurfaceMaterial::toStream(std::ostream& sl) const { + sl << "HomogeneousSurfaceMaterial : " << std::endl; sl << " - fullMaterial : " << m_fullMaterial << std::endl; sl << " - split factor : " << m_splitFactor << std::endl; return sl; } + +} // namespace Acts diff --git a/Core/src/Material/HomogeneousVolumeMaterial.cpp b/Core/src/Material/HomogeneousVolumeMaterial.cpp index 574859bb648..a5ea578f0ce 100644 --- a/Core/src/Material/HomogeneousVolumeMaterial.cpp +++ b/Core/src/Material/HomogeneousVolumeMaterial.cpp @@ -12,13 +12,20 @@ #include <ostream> -Acts::HomogeneousVolumeMaterial::HomogeneousVolumeMaterial( - const Material& material) +namespace Acts { + +HomogeneousVolumeMaterial::HomogeneousVolumeMaterial(const Material& material) : m_material(material) {} -std::ostream& Acts::HomogeneousVolumeMaterial::toStream( - std::ostream& sl) const { - sl << "Acts::HomogeneousVolumeMaterial : " << std::endl; +const Material HomogeneousVolumeMaterial::material( + const Vector3& /*position*/) const { + return m_material; +} + +std::ostream& HomogeneousVolumeMaterial::toStream(std::ostream& sl) const { + sl << "HomogeneousVolumeMaterial : " << std::endl; sl << " - material : " << m_material << std::endl; return sl; } + +} // namespace Acts diff --git a/Core/src/Material/Material.cpp b/Core/src/Material/Material.cpp index dd8c1e5cca1..29d9502fde9 100644 --- a/Core/src/Material/Material.cpp +++ b/Core/src/Material/Material.cpp @@ -13,6 +13,8 @@ #include <cmath> #include <ostream> +namespace Acts { + namespace { enum MaterialClassificationNumberIndices { eRadiationLength = 0, @@ -23,12 +25,12 @@ enum MaterialClassificationNumberIndices { }; // Avogadro constant -constexpr double kAvogadro = 6.02214076e23 / Acts::UnitConstants::mol; +constexpr double kAvogadro = 6.02214076e23 / UnitConstants::mol; } // namespace -Acts::Material Acts::Material::fromMassDensity(float x0, float l0, float ar, - float z, float massRho) { - using namespace Acts::UnitLiterals; +Material Material::fromMassDensity(float x0, float l0, float ar, float z, + float massRho) { + using namespace UnitLiterals; Material mat; mat.m_x0 = x0; @@ -51,8 +53,8 @@ Acts::Material Acts::Material::fromMassDensity(float x0, float l0, float ar, return mat; } -Acts::Material Acts::Material::fromMolarDensity(float x0, float l0, float ar, - float z, float molarRho) { +Material Material::fromMolarDensity(float x0, float l0, float ar, float z, + float molarRho) { Material mat; mat.m_x0 = x0; mat.m_l0 = l0; @@ -62,15 +64,15 @@ Acts::Material Acts::Material::fromMolarDensity(float x0, float l0, float ar, return mat; } -Acts::Material::Material(const ParametersVector& parameters) +Material::Material(const ParametersVector& parameters) : m_x0(parameters[eRadiationLength]), m_l0(parameters[eInteractionLength]), m_ar(parameters[eRelativeAtomicMass]), m_z(parameters[eNuclearCharge]), m_molarRho(parameters[eMolarDensity]) {} -float Acts::Material::massDensity() const { - using namespace Acts::UnitLiterals; +float Material::massDensity() const { + using namespace UnitLiterals; // perform computations in double precision to avoid loss of precision const double atomicMass = static_cast<double>(m_ar) * 1_u; @@ -78,14 +80,14 @@ float Acts::Material::massDensity() const { return atomicMass * numberDensity; } -float Acts::Material::meanExcitationEnergy() const { - using namespace Acts::UnitLiterals; +float Material::meanExcitationEnergy() const { + using namespace UnitLiterals; // use approximative computation as defined in ATL-SOFT-PUB-2008-003 return 16_eV * std::pow(m_z, 0.9f); } -Acts::Material::ParametersVector Acts::Material::parameters() const { +Material::ParametersVector Material::parameters() const { ParametersVector parameters; parameters[eRadiationLength] = m_x0; parameters[eInteractionLength] = m_l0; @@ -95,7 +97,7 @@ Acts::Material::ParametersVector Acts::Material::parameters() const { return parameters; } -std::ostream& Acts::operator<<(std::ostream& os, const Material& material) { +std::ostream& operator<<(std::ostream& os, const Material& material) { if (!material.isValid()) { os << "vacuum"; } else { @@ -107,3 +109,5 @@ std::ostream& Acts::operator<<(std::ostream& os, const Material& material) { } return os; } + +} // namespace Acts diff --git a/Core/src/Material/MaterialSlab.cpp b/Core/src/Material/MaterialSlab.cpp index acfd7064936..4fad731c6c1 100644 --- a/Core/src/Material/MaterialSlab.cpp +++ b/Core/src/Material/MaterialSlab.cpp @@ -11,7 +11,6 @@ #include "Acts/Material/detail/AverageMaterials.hpp" #include <limits> -#include <numeric> #include <ostream> #include <stdexcept> diff --git a/Examples/Io/Root/src/RootMaterialTrackWriter.cpp b/Examples/Io/Root/src/RootMaterialTrackWriter.cpp index a7a5ee39f8c..bec096d2ca7 100644 --- a/Examples/Io/Root/src/RootMaterialTrackWriter.cpp +++ b/Examples/Io/Root/src/RootMaterialTrackWriter.cpp @@ -10,7 +10,6 @@ #include "Acts/Geometry/GeometryIdentifier.hpp" #include "Acts/Geometry/TrackingVolume.hpp" -#include "Acts/Geometry/Volume.hpp" #include "Acts/Material/Material.hpp" #include "Acts/Material/MaterialInteraction.hpp" #include "Acts/Material/MaterialSlab.hpp" @@ -23,11 +22,9 @@ #include "Acts/Utilities/VectorHelpers.hpp" #include "ActsExamples/Framework/AlgorithmContext.hpp" -#include <algorithm> #include <cstddef> #include <ios> #include <stdexcept> -#include <type_traits> #include <TFile.h> #include <TTree.h> diff --git a/Plugins/Json/include/Acts/Plugins/Json/MaterialJsonConverter.hpp b/Plugins/Json/include/Acts/Plugins/Json/MaterialJsonConverter.hpp index 1c49376e421..3aa1ddac0af 100644 --- a/Plugins/Json/include/Acts/Plugins/Json/MaterialJsonConverter.hpp +++ b/Plugins/Json/include/Acts/Plugins/Json/MaterialJsonConverter.hpp @@ -8,7 +8,6 @@ #pragma once -#include "Acts/Definitions/Algebra.hpp" #include "Acts/Material/ISurfaceMaterial.hpp" #include "Acts/Material/IVolumeMaterial.hpp" #include "Acts/Material/Material.hpp" @@ -21,6 +20,7 @@ // can not match our naming guidelines. namespace Acts { +class Surface; class ISurfaceMaterial; class IVolumeMaterial; class BinUtility; diff --git a/Tests/UnitTests/Core/Material/GridSurfaceMaterialTests.cpp b/Tests/UnitTests/Core/Material/GridSurfaceMaterialTests.cpp index fbce80b8d5e..c66df1d6027 100644 --- a/Tests/UnitTests/Core/Material/GridSurfaceMaterialTests.cpp +++ b/Tests/UnitTests/Core/Material/GridSurfaceMaterialTests.cpp @@ -178,7 +178,7 @@ BOOST_AUTO_TEST_CASE(GridIndexedMaterial1D) { BOOST_CHECK_EQUAL(ml4.material().X0(), 21.); // Now scale it - and access again - ism *= 2.; + ism.scale(2.); const Acts::MaterialSlab& sml0 = ism.materialSlab(l0); const Acts::MaterialSlab& sml1 = ism.materialSlab(l1); const Acts::MaterialSlab& sml2 = ism.materialSlab(l2); @@ -337,7 +337,7 @@ BOOST_AUTO_TEST_CASE(GridGloballyIndexedMaterialNonShared) { BOOST_CHECK_EQUAL(ml0g1.material().X0(), 31.); // Scale - ism1 *= 2.; + ism1.scale(2.); const Acts::MaterialSlab& sml0g1 = ism1.materialSlab(l0g1); BOOST_CHECK_EQUAL(sml0g1.thickness(), 8.); @@ -400,7 +400,7 @@ BOOST_AUTO_TEST_CASE(GridGloballyIndexedMaterialShared) { BOOST_CHECK_EQUAL(ml0g1.material().X0(), 1.); // scaling shared material should throw a std::invalid_argument - BOOST_CHECK_THROW(ism1 *= 2., std::invalid_argument); + BOOST_CHECK_THROW(ism1.scale(2.), std::invalid_argument); } // This test covers the grid material (non-indexed accessor) @@ -472,7 +472,7 @@ BOOST_AUTO_TEST_CASE(GridSurfaceMaterialTests) { BOOST_CHECK_EQUAL(ml4.thickness(), 4.); // Now scale it - and access again - gsm *= 2.; + gsm.scale(2.); const Acts::MaterialSlab& sml0 = gsm.materialSlab(l0); const Acts::MaterialSlab& sml1 = gsm.materialSlab(l1); diff --git a/Tests/UnitTests/Core/Material/HomogeneousSurfaceMaterialTests.cpp b/Tests/UnitTests/Core/Material/HomogeneousSurfaceMaterialTests.cpp index 7c310b7c11a..10db0c4b689 100644 --- a/Tests/UnitTests/Core/Material/HomogeneousSurfaceMaterialTests.cpp +++ b/Tests/UnitTests/Core/Material/HomogeneousSurfaceMaterialTests.cpp @@ -53,7 +53,7 @@ BOOST_AUTO_TEST_CASE(HomogeneousSurfaceMaterial_scaling_test) { matHalf.scaleThickness(0.5); HomogeneousSurfaceMaterial hsm(mat, 1.); - hsm *= 0.5; + hsm.scale(0.5); auto matBin = hsm.materialSlab(Vector3(0., 0., 0.)); diff --git a/Tests/UnitTests/Core/Material/ISurfaceMaterialTests.cpp b/Tests/UnitTests/Core/Material/ISurfaceMaterialTests.cpp index 067e460b71f..1bdb2cef716 100644 --- a/Tests/UnitTests/Core/Material/ISurfaceMaterialTests.cpp +++ b/Tests/UnitTests/Core/Material/ISurfaceMaterialTests.cpp @@ -14,7 +14,6 @@ #include "Acts/Material/ISurfaceMaterial.hpp" #include "Acts/Material/MaterialSlab.hpp" -#include <cstddef> #include <ostream> namespace Acts::Test { @@ -22,7 +21,7 @@ namespace Acts::Test { class SurfaceMaterialStub : public ISurfaceMaterial { using ISurfaceMaterial::ISurfaceMaterial; - ISurfaceMaterial& operator*=(double /*scale*/) override { return *this; }; + ISurfaceMaterial& scale(double /*factor*/) override { return *this; }; const MaterialSlab& materialSlab(const Vector2& /*lp*/) const override { return m_fullMaterial; From b0f6bded5b56a8a9ec72943ab79f0f9acce196e8 Mon Sep 17 00:00:00 2001 From: Andreas Stefl <stefl.andreas@gmail.com> Date: Mon, 25 Nov 2024 14:36:55 +0100 Subject: [PATCH 48/49] refactor!: Remove alias `IntersectionStatus::missed` (#3899) I believe such an alias is increasing confusing. I propose to remove `IntersectionStatus::missed` and replace it by `IntersectionStatus::unreachable` --- .../include/Acts/Propagator/MultiEigenStepperLoop.hpp | 11 ++--------- .../include/Acts/Propagator/MultiEigenStepperLoop.ipp | 3 ++- Core/include/Acts/TrackFitting/detail/GsfActor.hpp | 2 +- Core/include/Acts/Utilities/Intersection.hpp | 3 +-- Core/src/Surfaces/ConeSurface.cpp | 4 ++-- Core/src/Surfaces/CylinderSurface.cpp | 5 +++-- Core/src/Surfaces/DiscSurface.cpp | 4 ++-- Core/src/Surfaces/LineSurface.cpp | 2 +- Core/src/Surfaces/PlaneSurface.cpp | 2 +- .../Core/Surfaces/SurfaceIntersectionTests.cpp | 9 ++++++--- Tests/UnitTests/Core/Utilities/IntersectionTests.cpp | 2 +- 11 files changed, 22 insertions(+), 25 deletions(-) diff --git a/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp b/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp index dff30746cf6..613b1d77d8c 100644 --- a/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp +++ b/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp @@ -14,16 +14,12 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/Direction.hpp" #include "Acts/Definitions/TrackParametrization.hpp" -#include "Acts/Definitions/Units.hpp" #include "Acts/EventData/MultiComponentTrackParameters.hpp" #include "Acts/EventData/TrackParameters.hpp" #include "Acts/EventData/detail/CorrectedTransformationFreeToBound.hpp" #include "Acts/MagneticField/MagneticFieldProvider.hpp" #include "Acts/Propagator/ConstrainedStep.hpp" #include "Acts/Propagator/EigenStepper.hpp" -#include "Acts/Propagator/EigenStepperError.hpp" -#include "Acts/Propagator/MultiStepperError.hpp" -#include "Acts/Propagator/Propagator.hpp" #include "Acts/Propagator/StepperOptions.hpp" #include "Acts/Propagator/StepperStatistics.hpp" #include "Acts/Propagator/detail/LoopStepperUtils.hpp" @@ -36,7 +32,6 @@ #include <cstddef> #include <functional> #include <limits> -#include <numeric> #include <sstream> #include <vector> @@ -398,7 +393,7 @@ class MultiEigenStepperLoop : public EigenStepper<extension_t> { void removeMissedComponents(State& state) const { auto new_end = std::remove_if( state.components.begin(), state.components.end(), [](const auto& cmp) { - return cmp.status == IntersectionStatus::missed; + return cmp.status == IntersectionStatus::unreachable; }); state.components.erase(new_end, state.components.end()); @@ -581,10 +576,8 @@ class MultiEigenStepperLoop : public EigenStepper<extension_t> { } else if (counts[static_cast<std::size_t>(Status::onSurface)] > 0) { state.stepCounterAfterFirstComponentOnSurface.reset(); return Status::onSurface; - } else if (counts[static_cast<std::size_t>(Status::unreachable)] > 0) { - return Status::unreachable; } else { - return Status::missed; + return Status::unreachable; } } diff --git a/Core/include/Acts/Propagator/MultiEigenStepperLoop.ipp b/Core/include/Acts/Propagator/MultiEigenStepperLoop.ipp index 67aa98e94bb..a583719bb79 100644 --- a/Core/include/Acts/Propagator/MultiEigenStepperLoop.ipp +++ b/Core/include/Acts/Propagator/MultiEigenStepperLoop.ipp @@ -7,6 +7,7 @@ // file, You can obtain one at https://mozilla.org/MPL/2.0/. #include "Acts/Propagator/MultiEigenStepperLoop.hpp" +#include "Acts/Propagator/MultiStepperError.hpp" #include "Acts/Utilities/Logger.hpp" namespace Acts { @@ -112,7 +113,7 @@ Result<double> MultiEigenStepperLoop<E, R>::step( m_stepLimitAfterFirstComponentOnSurface) { for (auto& cmp : components) { if (cmp.status != Status::onSurface) { - cmp.status = Status::missed; + cmp.status = Status::unreachable; } } diff --git a/Core/include/Acts/TrackFitting/detail/GsfActor.hpp b/Core/include/Acts/TrackFitting/detail/GsfActor.hpp index eeb7636103b..6d5ac68d8b9 100644 --- a/Core/include/Acts/TrackFitting/detail/GsfActor.hpp +++ b/Core/include/Acts/TrackFitting/detail/GsfActor.hpp @@ -478,7 +478,7 @@ struct GsfActor { // we set ignored components to missed, so we can remove them after // the loop if (tmpStates.weights.at(idx) < m_cfg.weightCutoff) { - cmp.status() = IntersectionStatus::missed; + cmp.status() = IntersectionStatus::unreachable; continue; } diff --git a/Core/include/Acts/Utilities/Intersection.hpp b/Core/include/Acts/Utilities/Intersection.hpp index 11adf0bdece..837be8574e4 100644 --- a/Core/include/Acts/Utilities/Intersection.hpp +++ b/Core/include/Acts/Utilities/Intersection.hpp @@ -23,7 +23,6 @@ namespace Acts { /// Status enum enum class IntersectionStatus : int { - missed = 0, unreachable = 0, reachable = 1, onSurface = 2 @@ -58,7 +57,7 @@ class Intersection { /// Returns whether the intersection was successful or not constexpr bool isValid() const { - return m_status != IntersectionStatus::missed; + return m_status != IntersectionStatus::unreachable; } /// Returns the position of the interseciton diff --git a/Core/src/Surfaces/ConeSurface.cpp b/Core/src/Surfaces/ConeSurface.cpp index 0ad869f2a4e..baad55237df 100644 --- a/Core/src/Surfaces/ConeSurface.cpp +++ b/Core/src/Surfaces/ConeSurface.cpp @@ -301,7 +301,7 @@ Acts::SurfaceMultiIntersection Acts::ConeSurface::intersect( if (!boundaryTolerance.isInfinite() && !isOnSurface(gctx, solution1, direction, boundaryTolerance)) { - status1 = IntersectionStatus::missed; + status1 = IntersectionStatus::unreachable; } // Check the validity of the second solution @@ -311,7 +311,7 @@ Acts::SurfaceMultiIntersection Acts::ConeSurface::intersect( : IntersectionStatus::reachable; if (!boundaryTolerance.isInfinite() && !isOnSurface(gctx, solution2, direction, boundaryTolerance)) { - status2 = IntersectionStatus::missed; + status2 = IntersectionStatus::unreachable; } const auto& tf = transform(gctx); diff --git a/Core/src/Surfaces/CylinderSurface.cpp b/Core/src/Surfaces/CylinderSurface.cpp index d34726c2a7f..56d3895b080 100644 --- a/Core/src/Surfaces/CylinderSurface.cpp +++ b/Core/src/Surfaces/CylinderSurface.cpp @@ -265,11 +265,12 @@ Acts::SurfaceMultiIntersection Acts::CylinderSurface::intersect( double cZ = vecLocal.dot(tMatrix.block<3, 1>(0, 2)); double modifiedTolerance = tolerance + absoluteBound->tolerance1; double hZ = cBounds.get(CylinderBounds::eHalfLengthZ) + modifiedTolerance; - return std::abs(cZ) < std::abs(hZ) ? status : IntersectionStatus::missed; + return std::abs(cZ) < std::abs(hZ) ? status + : IntersectionStatus::unreachable; } return isOnSurface(gctx, solution, direction, boundaryTolerance) ? status - : IntersectionStatus::missed; + : IntersectionStatus::unreachable; }; // Check first solution for boundary compatibility status1 = boundaryCheck(solution1, status1); diff --git a/Core/src/Surfaces/DiscSurface.cpp b/Core/src/Surfaces/DiscSurface.cpp index 9e957346965..b1ad72bd1cc 100644 --- a/Core/src/Surfaces/DiscSurface.cpp +++ b/Core/src/Surfaces/DiscSurface.cpp @@ -297,11 +297,11 @@ Acts::SurfaceMultiIntersection Acts::DiscSurface::intersect( double modifiedTolerance = tolerance + absoluteBound->tolerance0; if (!m_bounds->insideRadialBounds(VectorHelpers::perp(lcartesian), modifiedTolerance)) { - status = IntersectionStatus::missed; + status = IntersectionStatus::unreachable; } } else if (!insideBounds(localCartesianToPolar(lcartesian), boundaryTolerance)) { - status = IntersectionStatus::missed; + status = IntersectionStatus::unreachable; } } return {{Intersection3D(intersection.position(), intersection.pathLength(), diff --git a/Core/src/Surfaces/LineSurface.cpp b/Core/src/Surfaces/LineSurface.cpp index 00d1fc6dd17..d26697cc5e4 100644 --- a/Core/src/Surfaces/LineSurface.cpp +++ b/Core/src/Surfaces/LineSurface.cpp @@ -185,7 +185,7 @@ Acts::SurfaceMultiIntersection Acts::LineSurface::intersect( double cZ = vecLocal.dot(eb); double cR = (vecLocal - cZ * eb).norm(); if (!m_bounds->inside({cR, cZ}, boundaryTolerance)) { - status = IntersectionStatus::missed; + status = IntersectionStatus::unreachable; } } diff --git a/Core/src/Surfaces/PlaneSurface.cpp b/Core/src/Surfaces/PlaneSurface.cpp index db21709a192..040e3cac1e2 100644 --- a/Core/src/Surfaces/PlaneSurface.cpp +++ b/Core/src/Surfaces/PlaneSurface.cpp @@ -175,7 +175,7 @@ Acts::SurfaceMultiIntersection Acts::PlaneSurface::intersect( const Vector3 vecLocal(intersection.position() - tMatrix.block<3, 1>(0, 3)); if (!insideBounds(tMatrix.block<3, 2>(0, 0).transpose() * vecLocal, boundaryTolerance)) { - status = IntersectionStatus::missed; + status = IntersectionStatus::unreachable; } } return {{Intersection3D(intersection.position(), intersection.pathLength(), diff --git a/Tests/UnitTests/Core/Surfaces/SurfaceIntersectionTests.cpp b/Tests/UnitTests/Core/Surfaces/SurfaceIntersectionTests.cpp index 0fcabe9ad81..14b432d2945 100644 --- a/Tests/UnitTests/Core/Surfaces/SurfaceIntersectionTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/SurfaceIntersectionTests.cpp @@ -145,7 +145,8 @@ BOOST_AUTO_TEST_CASE(CylinderIntersectionTests) { // There MUST be a second solution BOOST_CHECK(!eIntersection[1].isValid()); // The other intersection MUST NOT be reachable - BOOST_CHECK_EQUAL(eIntersection[1].status(), IntersectionStatus::missed); + BOOST_CHECK_EQUAL(eIntersection[1].status(), + IntersectionStatus::unreachable); // And be the positive one BOOST_CHECK_GT(eIntersection[1].pathLength(), 0.); }; @@ -279,7 +280,8 @@ BOOST_AUTO_TEST_CASE(PlanarIntersectionTest) { // The intersection MUST NOT be valid BOOST_CHECK(!mIntersection[0].isValid()); // The intersection MUST be reachable - BOOST_CHECK_EQUAL(mIntersection[0].status(), IntersectionStatus::missed); + BOOST_CHECK_EQUAL(mIntersection[0].status(), + IntersectionStatus::unreachable); // The path length MUST be negative BOOST_CHECK_GT(mIntersection[0].pathLength(), 0.); // The intersection MUST be unique @@ -386,7 +388,8 @@ BOOST_AUTO_TEST_CASE(LineIntersectionTest) { // The intersection MUST NOT be valid BOOST_CHECK(!mIntersection[0].isValid()); // The intersection MUST be reachable - BOOST_CHECK_EQUAL(mIntersection[0].status(), IntersectionStatus::missed); + BOOST_CHECK_EQUAL(mIntersection[0].status(), + IntersectionStatus::unreachable); // The path length MUST be negative BOOST_CHECK_LT(mIntersection[0].pathLength(), 0.); // The intersection MUST be unique diff --git a/Tests/UnitTests/Core/Utilities/IntersectionTests.cpp b/Tests/UnitTests/Core/Utilities/IntersectionTests.cpp index bda4cad2da2..f1b4e1356e4 100644 --- a/Tests/UnitTests/Core/Utilities/IntersectionTests.cpp +++ b/Tests/UnitTests/Core/Utilities/IntersectionTests.cpp @@ -176,7 +176,7 @@ BOOST_AUTO_TEST_CASE(ObjectIntersectionTest) { BOOST_AUTO_TEST_CASE(IntersectionStatusPrinting) { std::array<IntersectionStatus, 4> status_values = { - {IntersectionStatus::missed, IntersectionStatus::unreachable, + {IntersectionStatus::unreachable, IntersectionStatus::unreachable, IntersectionStatus::reachable, IntersectionStatus::onSurface}}; std::array<std::string, 4> expected_messages = { {"missed/unreachable", "missed/unreachable", "reachable", "onSurface"}}; From 4656a8d5a69da616c613858ffe0b9ecf17686d3e Mon Sep 17 00:00:00 2001 From: Paul Gessinger <paul.gessinger@cern.ch> Date: Mon, 25 Nov 2024 18:15:42 +0100 Subject: [PATCH 49/49] build: Update `FindFilesystem.cmake` (#3905) Vector-of-bool's `FindFilesystem.cmake` was updated at some point to include and explicit `CMAKE_CXX_STANDARD=17`. We've observed occasionally that on macOS, the find module would fail because it would default to C++14, where `std::filesystem` is not available (and I guess the experimental implementation has since been removed). This PR updates the `FindFilesystem.cmake` to include this. Fixes #3900 --- cmake/FindFilesystem.cmake | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/cmake/FindFilesystem.cmake b/cmake/FindFilesystem.cmake index 93cc9b9c8a3..1d0eb52641a 100644 --- a/cmake/FindFilesystem.cmake +++ b/cmake/FindFilesystem.cmake @@ -103,6 +103,8 @@ if(TARGET std::filesystem) return() endif() +cmake_minimum_required(VERSION 3.10) + include(CMakePushCheckState) include(CheckIncludeFileCXX) @@ -124,6 +126,13 @@ cmake_push_check_state() set(CMAKE_REQUIRED_QUIET ${Filesystem_FIND_QUIETLY}) +# All of our tests required C++17 or later +if(DEFINED CMAKE_CXX_STANDARD) + set(_prior_cmake_cxx_standard ${CMAKE_CXX_STANDARD}) +endif() + +set(CMAKE_CXX_STANDARD 17) + # Normalize and check the component list we were given set(want_components ${Filesystem_FIND_COMPONENTS}) if(Filesystem_FIND_COMPONENTS STREQUAL "") @@ -282,6 +291,12 @@ set(Filesystem_FOUND FORCE ) +if(DEFINED _prior_cmake_cxx_standard) + set(CMAKE_CXX_STANDARD ${_prior_cmake_cxx_standard}) +else() + unset(CMAKE_CXX_STANDARD) +endif() + if(Filesystem_FIND_REQUIRED AND NOT Filesystem_FOUND) message(FATAL_ERROR "Cannot run simple program using std::filesystem") endif()

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⁢N+8 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 diff --git a/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp b/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp index 0728c4a3a5a..8442071a23f 100644 --- a/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp +++ b/Core/include/Acts/TrackFitting/GlobalChiSquareFitter.hpp @@ -1297,7 +1297,7 @@ class Gx2Fitter { auto& gx2fActor = propagatorOptions.actorList.template get(); gx2fActor.inputMeasurements = &inputMeasurements; - gx2fActor.multipleScattering = multipleScattering; + gx2fActor.multipleScattering = false; gx2fActor.extensions = gx2fOptions.extensions; gx2fActor.calibrationContext = &gx2fOptions.calibrationContext.get(); gx2fActor.actorLogger = m_actorLogger.get(); @@ -1354,10 +1354,7 @@ class Gx2Fitter { // Count the material surfaces, to set up the system. In the multiple // scattering case, we need to extend our system. - const std::size_t nMaterialSurfaces = - multipleScattering - ? countMaterialStates(track, scatteringMap, *m_addToSumLogger) - : 0u; + const std::size_t nMaterialSurfaces = 0u; // We need 6 dimensions for the bound parameters and 2 * nMaterialSurfaces // dimensions for the scattering angles. @@ -1373,8 +1370,8 @@ class Gx2Fitter { // all stored material in each propagation. std::vector geoIdVector; - fillGx2fSystem(track, extendedSystem, multipleScattering, scatteringMap, - geoIdVector, *m_addToSumLogger); + fillGx2fSystem(track, extendedSystem, false, scatteringMap, geoIdVector, + *m_addToSumLogger); chi2sum = extendedSystem.chi2(); @@ -1419,10 +1416,7 @@ class Gx2Fitter { } if (extendedSystem.chi2() > oldChi2sum + 1e-5) { - ACTS_DEBUG("chi2 not converging monotonically"); - - updateGx2fCovarianceParams(fullCovariancePredicted, extendedSystem); - break; + ACTS_DEBUG("chi2 not converging monotonically in update " << nUpdate); } // If this is the final iteration, update the covariance and break. @@ -1453,6 +1447,144 @@ class Gx2Fitter { ACTS_VERBOSE("Final parameters: " << params.parameters().transpose()); /// Finish Fitting ///////////////////////////////////////////////////////// + /// Actual MATERIAL Fitting //////////////////////////////////////////////// + ACTS_DEBUG("Start to evaluate material"); + if (multipleScattering) { + // set up propagator and co + Acts::GeometryContext geoCtx = gx2fOptions.geoContext; + Acts::MagneticFieldContext magCtx = gx2fOptions.magFieldContext; + // Set options for propagator + PropagatorOptions propagatorOptions(geoCtx, magCtx); + + // Add the measurement surface as external surface to the navigator. + // We will try to hit those surface by ignoring boundary checks. + for (const auto& [surfaceId, _] : inputMeasurements) { + propagatorOptions.navigation.insertExternalSurface(surfaceId); + } + + auto& gx2fActor = propagatorOptions.actorList.template get(); + gx2fActor.inputMeasurements = &inputMeasurements; + gx2fActor.multipleScattering = true; + gx2fActor.extensions = gx2fOptions.extensions; + gx2fActor.calibrationContext = &gx2fOptions.calibrationContext.get(); + gx2fActor.actorLogger = m_actorLogger.get(); + gx2fActor.scatteringMap = &scatteringMap; + gx2fActor.parametersWithHypothesis = ¶ms; + + auto propagatorState = m_propagator.makeState(params, propagatorOptions); + + auto& r = propagatorState.template get>(); + r.fittedStates = &trajectoryTempBackend; + + // Clear the track container. It could be more performant to update the + // existing states, but this needs some more thinking. + trackContainerTemp.clear(); + + auto propagationResult = m_propagator.propagate(propagatorState); + + // Run the fitter + auto result = + m_propagator.makeResult(std::move(propagatorState), propagationResult, + propagatorOptions, false); + + if (!result.ok()) { + ACTS_ERROR("Propagation failed: " << result.error()); + return result.error(); + } + + // TODO Improve Propagator + Actor [allocate before loop], rewrite + // makeMeasurements + auto& propRes = *result; + GX2FResult gx2fResult = std::move(propRes.template get()); + + if (!gx2fResult.result.ok()) { + ACTS_INFO("GlobalChiSquareFitter failed in actor: " + << gx2fResult.result.error() << ", " + << gx2fResult.result.error().message()); + return gx2fResult.result.error(); + } + + auto track = trackContainerTemp.makeTrack(); + tipIndex = gx2fResult.lastMeasurementIndex; + + // It could happen, that no measurements were found. Then the track would + // be empty and the following operations would be invalid. Usually, this + // only happens during the first iteration, due to bad initial parameters. + if (tipIndex == Acts::MultiTrajectoryTraits::kInvalid) { + ACTS_INFO("Did not find any measurements in material fit."); + return Experimental::GlobalChiSquareFitterError::NotEnoughMeasurements; + } + + track.tipIndex() = tipIndex; + track.linkForward(); + + // Count the material surfaces, to set up the system. In the multiple + // scattering case, we need to extend our system. + const std::size_t nMaterialSurfaces = + countMaterialStates(track, scatteringMap, *m_addToSumLogger); + + // We need 6 dimensions for the bound parameters and 2 * nMaterialSurfaces + // dimensions for the scattering angles. + const std::size_t dimsExtendedParams = eBoundSize + 2 * nMaterialSurfaces; + + // System that we fill with the information gathered by the actor and + // evaluate later + Gx2fSystem extendedSystem{dimsExtendedParams}; + + // This vector stores the IDs for each visited material in order. We use + // it later for updating the scattering angles. We cannot use + // scatteringMap directly, since we cannot guarantee, that we will visit + // all stored material in each propagation. + std::vector geoIdVector; + + fillGx2fSystem(track, extendedSystem, true, scatteringMap, geoIdVector, + *m_addToSumLogger); + + chi2sum = extendedSystem.chi2(); + + // This check takes into account the evaluated dimensions of the + // measurements. To fit, we need at least NDF+1 measurements. However, we + // count n-dimensional measurements for n measurements, reducing the + // effective number of needed measurements. We might encounter the case, + // where we cannot use some (parts of a) measurements, maybe if we do not + // support that kind of measurement. This is also taken into account here. + // We skip the check during the first iteration, since we cannot guarantee + // to hit all/enough measurement surfaces with the initial parameter + // guess. + if ((nUpdate > 0) && !extendedSystem.isWellDefined()) { + ACTS_INFO("Not enough measurements. Require " + << extendedSystem.findRequiredNdf() + 1 << ", but only " + << extendedSystem.ndf() << " could be used."); + return Experimental::GlobalChiSquareFitterError::NotEnoughMeasurements; + } + + // calculate delta params [a] * delta = b + Eigen::VectorXd deltaParamsExtended = + extendedSystem.aMatrix().colPivHouseholderQr().solve( + extendedSystem.bVector()); + + ACTS_VERBOSE("aMatrix:\n" + << extendedSystem.aMatrix() << "\n" + << "bVector:\n" + << extendedSystem.bVector() << "\n" + << "deltaParamsExtended:\n" + << deltaParamsExtended << "\n" + << "oldChi2sum = " << oldChi2sum << "\n" + << "chi2sum = " << extendedSystem.chi2()); + + chi2sum = extendedSystem.chi2(); + + updateGx2fParams(params, deltaParamsExtended, nMaterialSurfaces, + scatteringMap, geoIdVector); + ACTS_VERBOSE("Updated parameters: " << params.parameters().transpose()); + + updateGx2fCovarianceParams(fullCovariancePredicted, extendedSystem); + } + ACTS_DEBUG("Finished to evaluate material"); + ACTS_VERBOSE( + "Final parameters after material: " << params.parameters().transpose()); + /// Finish MATERIAL Fitting //////////////////////////////////////////////// + ACTS_VERBOSE("Final scattering angles:"); for (const auto& [key, value] : scatteringMap) { if (!value.materialIsValid()) { diff --git a/Tests/UnitTests/Core/TrackFitting/Gx2fTests.cpp b/Tests/UnitTests/Core/TrackFitting/Gx2fTests.cpp index e3dbe1d4cde..71b2bf2b1f8 100644 --- a/Tests/UnitTests/Core/TrackFitting/Gx2fTests.cpp +++ b/Tests/UnitTests/Core/TrackFitting/Gx2fTests.cpp @@ -1108,15 +1108,15 @@ BOOST_AUTO_TEST_CASE(Material) { // Parameters // We need quite coarse checks here, since on different builds // the created measurements differ in the randomness - BOOST_CHECK_CLOSE(track.parameters()[eBoundLoc0], -11., 7e0); - BOOST_CHECK_CLOSE(track.parameters()[eBoundLoc1], -15., 6e0); - BOOST_CHECK_CLOSE(track.parameters()[eBoundPhi], 1e-5, 1e3); + BOOST_CHECK_CLOSE(track.parameters()[eBoundLoc0], -11., 26e0); + BOOST_CHECK_CLOSE(track.parameters()[eBoundLoc1], -15., 15e0); + BOOST_CHECK_CLOSE(track.parameters()[eBoundPhi], 1e-5, 1.1e3); BOOST_CHECK_CLOSE(track.parameters()[eBoundTheta], std::numbers::pi / 2, - 1e-3); + 2e-2); BOOST_CHECK_EQUAL(track.parameters()[eBoundQOverP], 1); BOOST_CHECK_CLOSE(track.parameters()[eBoundTime], startParametersFit.parameters()[eBoundTime], 1e-6); - // BOOST_CHECK_CLOSE(track.covariance().determinant(), 1e-27, 4e0); + BOOST_CHECK_CLOSE(track.covariance().determinant(), 3.5e-27, 1e1); // Convergence BOOST_CHECK_EQUAL( From 2f25b25c7a8f10ba69afb14601d9412420ca4edc Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Thu, 14 Nov 2024 17:40:48 +0100 Subject: [PATCH 15/49] fix: `RandomSeed` with 32 bit in Examples (#3860) Right now we have a 64 bit seed but only use a 32 bit RNG. Here I align them by using 32 bit for both. Discovered in https://github.com/acts-project/acts/pull/3849 --- .../ActsExamples/Framework/RandomNumbers.hpp | 17 +++++------------ .../Framework/src/Framework/RandomNumbers.cpp | 19 +++++++------------ 2 files changed, 12 insertions(+), 24 deletions(-) diff --git a/Examples/Framework/include/ActsExamples/Framework/RandomNumbers.hpp b/Examples/Framework/include/ActsExamples/Framework/RandomNumbers.hpp index 6f9f9abbcd6..a94bac778f6 100644 --- a/Examples/Framework/include/ActsExamples/Framework/RandomNumbers.hpp +++ b/Examples/Framework/include/ActsExamples/Framework/RandomNumbers.hpp @@ -6,18 +6,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. -// -// RandomNumbers.hpp -// ActsExamples -// -// Created by Andreas Salzburger on 17/05/16. -// -// - #pragma once -#include "ActsExamples/Framework/AlgorithmContext.hpp" - #include #include @@ -27,6 +17,9 @@ struct AlgorithmContext; /// The random number generator used in the framework. using RandomEngine = std::mt19937; ///< Mersenne Twister +/// The seed type used in the framework. +using RandomSeed = std::uint32_t; + /// Provide event and algorithm specific random number generator.s /// /// This provides local random number generators, allowing for @@ -41,7 +34,7 @@ using RandomEngine = std::mt19937; ///< Mersenne Twister class RandomNumbers { public: struct Config { - std::uint64_t seed = 1234567890u; ///< random seed + RandomSeed seed = 1234567890u; ///< random seed }; explicit RandomNumbers(const Config& cfg); @@ -59,7 +52,7 @@ class RandomNumbers { /// /// This should only be used in special cases e.g. where a custom /// random engine is used and `spawnGenerator` can not be used. - std::uint64_t generateSeed(const AlgorithmContext& context) const; + RandomSeed generateSeed(const AlgorithmContext& context) const; private: Config m_cfg; diff --git a/Examples/Framework/src/Framework/RandomNumbers.cpp b/Examples/Framework/src/Framework/RandomNumbers.cpp index 5fd0cdcf7d7..4313a5cce77 100644 --- a/Examples/Framework/src/Framework/RandomNumbers.cpp +++ b/Examples/Framework/src/Framework/RandomNumbers.cpp @@ -6,26 +6,21 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. -// -// RandomNumbers.cpp -// ActsExamples -// -// Created by Andreas Salzburger on 17/05/16. -// -// - #include "ActsExamples/Framework/RandomNumbers.hpp" #include "ActsExamples/Framework/AlgorithmContext.hpp" -ActsExamples::RandomNumbers::RandomNumbers(const Config& cfg) : m_cfg(cfg) {} +namespace ActsExamples { + +RandomNumbers::RandomNumbers(const Config& cfg) : m_cfg(cfg) {} -ActsExamples::RandomEngine ActsExamples::RandomNumbers::spawnGenerator( +RandomEngine RandomNumbers::spawnGenerator( const AlgorithmContext& context) const { return RandomEngine(generateSeed(context)); } -std::uint64_t ActsExamples::RandomNumbers::generateSeed( - const AlgorithmContext& context) const { +RandomSeed RandomNumbers::generateSeed(const AlgorithmContext& context) const { return m_cfg.seed + context.eventNumber; } + +} // namespace ActsExamples From fdb79a20640b90618898b21bb10436650c56c9c0 Mon Sep 17 00:00:00 2001 From: Carlo Varni <75478407+CarloVarni@users.noreply.github.com> Date: Mon, 18 Nov 2024 12:19:48 +0100 Subject: [PATCH 16/49] docs: Adding cvarni to citation (#3867) --- .zenodo.json | 6 +++++- AUTHORS | 1 + CITATION.cff | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.zenodo.json b/.zenodo.json index a274d3c2cf1..d9786fc4cf6 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -112,11 +112,15 @@ "affiliation": "CERN / University of Amsterdam", "name": "Stephen Nicholas Swatman", "orcid": "0000-0002-3747-3229" - } + }, { "affiliation": "CERN / TU Wien", "name": "Felix Russo", "orcid": "0009-0005-8975-2245" + }, + { + "affiliation": "UC Berkeley", + "name": "Carlo Varni" } ], "access_right": "open", diff --git a/AUTHORS b/AUTHORS index 4dab2740fe3..3e2e965ff27 100644 --- a/AUTHORS +++ b/AUTHORS @@ -21,3 +21,4 @@ The following people have contributed to the project (in alphabetical order): - Andreas Stefl, CERN, TU Wien - Stephen Nicholas Swatman, CERN, University of Amsterdam - Roman Urmanov, Weizmann Institute of Science +- Carlo Varni, UC Berkeley diff --git a/CITATION.cff b/CITATION.cff index 910eade5312..95865537ecf 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -89,6 +89,9 @@ authors: family-names: Russo affiliation: CERN / TU Wien orcid: https://orcid.org/0009-0005-8975-2245 +- given-names: Carlo + family-names: Varni + affiliation: UC Berkeley version: 10.0.0 date-released: 2021-07-28 repository-code: https://github.com/acts-project/acts From 387d0ade9229f95b5b91b103d462e61d83a14e1e Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Mon, 18 Nov 2024 19:13:33 +0100 Subject: [PATCH 17/49] refactor!: Use `consteval` on `hashString` (#3833) This allows us to enforce in more places that the hash is calculated at compile time. To make the distinction explicit, I'm adding another function whose name indicates that the hash will be computed at runtime. BREAKING CHANGES: The `hashString` function becomes `consteval`, so requires compile-time execution. Use this if at all possible! If not, switch to `hashStringDynamic`, which remains `constexpr` and can thus be executed at runtime. --- Core/include/Acts/EventData/ProxyAccessor.hpp | 2 +- Core/include/Acts/EventData/TrackContainer.hpp | 2 +- Core/include/Acts/EventData/TrackProxy.hpp | 4 ++-- Core/include/Acts/EventData/TrackStateProxy.hpp | 6 +++--- Core/include/Acts/EventData/VectorMultiTrajectory.hpp | 2 +- Core/include/Acts/EventData/VectorTrackContainer.hpp | 2 +- .../Acts/EventData/detail/MultiTrajectoryTestsCommon.hpp | 6 +++--- Core/include/Acts/Utilities/HashedString.hpp | 8 +++++++- .../include/Acts/Plugins/Podio/PodioTrackContainer.hpp | 2 +- .../Acts/Plugins/Podio/PodioTrackStateContainer.hpp | 2 +- Plugins/Podio/src/PodioUtil.cpp | 2 +- Tests/UnitTests/Core/Utilities/HashedStringTests.cpp | 2 +- 12 files changed, 23 insertions(+), 17 deletions(-) diff --git a/Core/include/Acts/EventData/ProxyAccessor.hpp b/Core/include/Acts/EventData/ProxyAccessor.hpp index 429c0ef670b..d6a9a3497ce 100644 --- a/Core/include/Acts/EventData/ProxyAccessor.hpp +++ b/Core/include/Acts/EventData/ProxyAccessor.hpp @@ -75,7 +75,7 @@ struct ProxyAccessorBase { /// Create the accessor from a string key /// @param _key the key constexpr ProxyAccessorBase(const std::string& _key) - : key{hashString(_key)} {} + : key{hashStringDynamic(_key)} {} /// Access the stored key on the proxy given as an argument. Mutable version /// @tparam proxy_t the type of the proxy diff --git a/Core/include/Acts/EventData/TrackContainer.hpp b/Core/include/Acts/EventData/TrackContainer.hpp index f70c430f002..03f7f1f8bb1 100644 --- a/Core/include/Acts/EventData/TrackContainer.hpp +++ b/Core/include/Acts/EventData/TrackContainer.hpp @@ -252,7 +252,7 @@ class TrackContainer { /// Check if this track container has a specific dynamic column /// @param key the key to check for constexpr bool hasColumn(const std::string& key) const { - return m_container->hasColumn_impl(hashString(key)); + return m_container->hasColumn_impl(hashStringDynamic(key)); } /// Check if a this track container has a specific dynamic column diff --git a/Core/include/Acts/EventData/TrackProxy.hpp b/Core/include/Acts/EventData/TrackProxy.hpp index 5939022e2e8..6ccb0f402b2 100644 --- a/Core/include/Acts/EventData/TrackProxy.hpp +++ b/Core/include/Acts/EventData/TrackProxy.hpp @@ -710,7 +710,7 @@ class TrackProxy { constexpr T& component(std::string_view key) requires(!ReadOnly) { - return m_container->template component(hashString(key), m_index); + return m_container->template component(hashStringDynamic(key), m_index); } /// Retrieve a const reference to a component @@ -738,7 +738,7 @@ class TrackProxy { /// @return Const reference to the component given by @p key template constexpr const T& component(std::string_view key) const { - return m_container->template component(hashString(key), m_index); + return m_container->template component(hashStringDynamic(key), m_index); } /// @} diff --git a/Core/include/Acts/EventData/TrackStateProxy.hpp b/Core/include/Acts/EventData/TrackStateProxy.hpp index 34de86cd3d7..741bfa5b511 100644 --- a/Core/include/Acts/EventData/TrackStateProxy.hpp +++ b/Core/include/Acts/EventData/TrackStateProxy.hpp @@ -1101,7 +1101,7 @@ class TrackStateProxy { /// @note This might hash the @p key at runtime instead of compile-time /// @return true if the component exists, false if not constexpr bool has(std::string_view key) const { - return has(hashString(key)); + return has(hashStringDynamic(key)); } /// Retrieve a mutable reference to a component @@ -1135,7 +1135,7 @@ class TrackStateProxy { constexpr T& component(std::string_view key) requires(!ReadOnly) { - return m_traj->template component(hashString(key), m_istate); + return m_traj->template component(hashStringDynamic(key), m_istate); } /// Retrieve a const reference to a component @@ -1163,7 +1163,7 @@ class TrackStateProxy { /// @return Const reference to the component given by @p key template constexpr const T& component(std::string_view key) const { - return m_traj->template component(hashString(key), m_istate); + return m_traj->template component(hashStringDynamic(key), m_istate); } /// @} diff --git a/Core/include/Acts/EventData/VectorMultiTrajectory.hpp b/Core/include/Acts/EventData/VectorMultiTrajectory.hpp index 7d2d05cc9b9..3859239ae69 100644 --- a/Core/include/Acts/EventData/VectorMultiTrajectory.hpp +++ b/Core/include/Acts/EventData/VectorMultiTrajectory.hpp @@ -456,7 +456,7 @@ class VectorMultiTrajectory final template void addColumn_impl(std::string_view key) { - HashedString hashedKey = hashString(key); + HashedString hashedKey = hashStringDynamic(key); m_dynamic.insert({hashedKey, std::make_unique>()}); } diff --git a/Core/include/Acts/EventData/VectorTrackContainer.hpp b/Core/include/Acts/EventData/VectorTrackContainer.hpp index 09ecf7b5b2e..8734f69eb4c 100644 --- a/Core/include/Acts/EventData/VectorTrackContainer.hpp +++ b/Core/include/Acts/EventData/VectorTrackContainer.hpp @@ -225,7 +225,7 @@ class VectorTrackContainer final : public detail_vtc::VectorTrackContainerBase { template constexpr void addColumn_impl(const std::string_view& key) { - HashedString hashedKey = hashString(key); + HashedString hashedKey = hashStringDynamic(key); m_dynamic.insert({hashedKey, std::make_unique>()}); } diff --git a/Core/include/Acts/EventData/detail/MultiTrajectoryTestsCommon.hpp b/Core/include/Acts/EventData/detail/MultiTrajectoryTestsCommon.hpp index 93ef7a3eb7c..a2e374c0cc2 100644 --- a/Core/include/Acts/EventData/detail/MultiTrajectoryTestsCommon.hpp +++ b/Core/include/Acts/EventData/detail/MultiTrajectoryTestsCommon.hpp @@ -1103,8 +1103,8 @@ class MultiTrajectoryTestsCommon { auto test = [&](const std::string& col, auto value) { using T = decltype(value); std::string col2 = col + "_2"; - HashedString h{hashString(col)}; - HashedString h2{hashString(col2)}; + HashedString h{hashStringDynamic(col)}; + HashedString h2{hashStringDynamic(col2)}; trajectory_t traj = m_factory.create(); BOOST_CHECK(!traj.hasColumn(h)); @@ -1188,7 +1188,7 @@ class MultiTrajectoryTestsCommon { } }; - runTest([](const std::string& c) { return hashString(c.c_str()); }); + runTest([](const std::string& c) { return hashStringDynamic(c.c_str()); }); // runTest([](const std::string& c) { return c.c_str(); }); // runTest([](const std::string& c) { return c; }); // runTest([](std::string_view c) { return c; }); diff --git a/Core/include/Acts/Utilities/HashedString.hpp b/Core/include/Acts/Utilities/HashedString.hpp index 6cdbe9d21e6..88b50a34d05 100644 --- a/Core/include/Acts/Utilities/HashedString.hpp +++ b/Core/include/Acts/Utilities/HashedString.hpp @@ -8,9 +8,11 @@ #pragma once +#include #include #include #include +#include #include namespace Acts { @@ -35,7 +37,11 @@ constexpr int length(const char* str) { } } // namespace detail -constexpr HashedString hashString(std::string_view s) { +consteval HashedString hashString(std::string_view s) { + return detail::fnv1a_32(s); +} + +constexpr HashedString hashStringDynamic(std::string_view s) { return detail::fnv1a_32(s); } diff --git a/Plugins/Podio/include/Acts/Plugins/Podio/PodioTrackContainer.hpp b/Plugins/Podio/include/Acts/Plugins/Podio/PodioTrackContainer.hpp index b6cba524a8e..79ccf2249a1 100644 --- a/Plugins/Podio/include/Acts/Plugins/Podio/PodioTrackContainer.hpp +++ b/Plugins/Podio/include/Acts/Plugins/Podio/PodioTrackContainer.hpp @@ -238,7 +238,7 @@ class MutablePodioTrackContainer : public PodioTrackContainerBase { template constexpr void addColumn_impl(std::string_view key) { - Acts::HashedString hashedKey = hashString(key); + Acts::HashedString hashedKey = hashStringDynamic(key); m_dynamic.insert( {hashedKey, std::make_unique>(key)}); } diff --git a/Plugins/Podio/include/Acts/Plugins/Podio/PodioTrackStateContainer.hpp b/Plugins/Podio/include/Acts/Plugins/Podio/PodioTrackStateContainer.hpp index 8322249a654..e503f3ca2f3 100644 --- a/Plugins/Podio/include/Acts/Plugins/Podio/PodioTrackStateContainer.hpp +++ b/Plugins/Podio/include/Acts/Plugins/Podio/PodioTrackStateContainer.hpp @@ -610,7 +610,7 @@ class MutablePodioTrackStateContainer final template constexpr void addColumn_impl(std::string_view key) { - HashedString hashedKey = hashString(key); + HashedString hashedKey = hashStringDynamic(key); m_dynamic.insert( {hashedKey, std::make_unique>(key)}); } diff --git a/Plugins/Podio/src/PodioUtil.cpp b/Plugins/Podio/src/PodioUtil.cpp index 6518fcdff07..7b2fc0668a3 100644 --- a/Plugins/Podio/src/PodioUtil.cpp +++ b/Plugins/Podio/src/PodioUtil.cpp @@ -261,7 +261,7 @@ void recoverDynamicColumns( "' is not of allowed type"}; } - HashedString hashedKey = hashString(dynName); + HashedString hashedKey = hashStringDynamic(dynName); dynamic.insert({hashedKey, std::move(up)}); } } diff --git a/Tests/UnitTests/Core/Utilities/HashedStringTests.cpp b/Tests/UnitTests/Core/Utilities/HashedStringTests.cpp index f38a71cbe89..0045ec4a6dc 100644 --- a/Tests/UnitTests/Core/Utilities/HashedStringTests.cpp +++ b/Tests/UnitTests/Core/Utilities/HashedStringTests.cpp @@ -28,7 +28,7 @@ BOOST_AUTO_TEST_CASE(string_hashes) { BOOST_CHECK_EQUAL("abc"_hash, 440920331); std::string s = "abc"; - BOOST_CHECK_EQUAL(hashString(s), 440920331); + BOOST_CHECK_EQUAL(hashStringDynamic(s), 440920331); constexpr std::string_view sv{"abc"}; BOOST_CHECK_EQUAL(hashString(sv), 440920331); static_assert(hashString(sv) == 440920331, "Invalid"); From c164dc0ca5b7bcc2bf2aa735ad362c336d9bc1d3 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Mon, 18 Nov 2024 20:40:11 +0100 Subject: [PATCH 18/49] feat(geo): Add Gen3 hierarchy search to `lowestTrackingVolume` (#3818) This does not affect the existing Gen1 hierarchy search, and only kicks in when the Gen1 content is exhausted or not present at all. This is not optimal with many volumes, and I plan to develop a mechanism to implement volume local accelerated search. Part of https://github.com/acts-project/acts/issues/3502 --- Core/src/Geometry/TrackingVolume.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Core/src/Geometry/TrackingVolume.cpp b/Core/src/Geometry/TrackingVolume.cpp index bbe9b60fc98..6d3880bd4db 100644 --- a/Core/src/Geometry/TrackingVolume.cpp +++ b/Core/src/Geometry/TrackingVolume.cpp @@ -96,6 +96,13 @@ const TrackingVolume* TrackingVolume::lowestTrackingVolume( } } + // @TODO: Abstract this into an accelerateable structure + for (const auto& volume : volumes()) { + if (volume.inside(position, tol)) { + return volume.lowestTrackingVolume(gctx, position, tol); + } + } + // there is no lower sub structure return this; } From 68226ec30c584a92fab9420590a3580521f316ce Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Mon, 18 Nov 2024 22:08:38 +0100 Subject: [PATCH 19/49] refactor: Remove Tesla conversion in `estimateTrackParamsFromSeed` (#3835) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently we convert the magnetic field to Tesla and then convert back to length units. This can be avoided by using our native units which are the following ```c++ /// Magnetic field, native unit (eV*s)/(e*m²) /// @note Depends on speed of light in SI units constexpr double T = 0.000299792458; // = eV * s / (e * m2); ``` --- .../seeded/performance_fitting_ckf.root | Bin 155217 -> 155362 bytes .../performance_fitting_ckf.root | Bin 154016 -> 154034 bytes .../performance_fitting_ckf.root | Bin 128931 -> 129034 bytes ...ormance_vertexing_amvf_grid_time_hist.root | Bin 45503 -> 45491 bytes .../performance_fitting_ckf.root | Bin 185127 -> 185263 bytes .../Seeding/EstimateTrackParamsFromSeed.hpp | 16 ++++++------ Examples/Python/tests/root_file_hashes.txt | 24 +++++++++--------- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/CI/physmon/reference/trackfinding_1muon/seeded/performance_fitting_ckf.root b/CI/physmon/reference/trackfinding_1muon/seeded/performance_fitting_ckf.root index 5ba97ecd168786ff6c20225440162efae3fc854f..94fcbafbdbfcf8d0f831f6adc5393b1e82cf40df 100644 GIT binary patch delta 137700 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¥Ow{2m!yei-a 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