From d6eb8347d3424dec0abcb9f7ef1b272cd5037fed Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Fri, 10 Jan 2025 09:59:25 +0100 Subject: [PATCH 01/11] ci: Use correct keys for the gitlab caches (#4008) --- .gitlab-ci.yml | 45 ++++++++++++++--------------------------- .pre-commit-config.yaml | 1 + 2 files changed, 16 insertions(+), 30 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 25aff340111..2f1e13c1b1a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,6 +6,16 @@ variables: DEPENDENCY_TAG: v5 +.ccache_base: + cache: + - key: ccache-${CI_JOB_NAME}-${CCACHE_KEY_SUFFIX}-${CLONE_URL}_${HEAD_REF} + fallback_keys: + - ccache-${CI_JOB_NAME}-${CCACHE_KEY_SUFFIX}-https://github.com/acts-project/acts.git-main + when: always + paths: + - ${CCACHE_DIR} + + clang_tidy: stage: build image: ghcr.io/acts-project/ubuntu2404:63 @@ -68,12 +78,7 @@ build_exatrkx_cpu: - large cache: - key: ccache-${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CCACHE_KEY_SUFFIX} - fallback_keys: - - ccache-${CI_JOB_NAME}-${CI_DEFAULT_BRANCH}-${CCACHE_KEY_SUFFIX} - when: always - paths: - - ${CCACHE_DIR} + - !reference [.ccache_base, cache] script: - export PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH @@ -106,12 +111,7 @@ build_exatrkx: - large cache: - key: ccache-${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CCACHE_KEY_SUFFIX} - fallback_keys: - - ccache-${CI_JOB_NAME}-${CI_DEFAULT_BRANCH}-${CCACHE_KEY_SUFFIX} - when: always - paths: - - ${CCACHE_DIR} + - !reference [.ccache_base, cache] artifacts: paths: @@ -193,12 +193,7 @@ build_linux_ubuntu: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.$DEPENDENCY_TAG.tar.zst cache: - key: ccache-${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CCACHE_KEY_SUFFIX} - fallback_keys: - - ccache-${CI_JOB_NAME}-${CI_DEFAULT_BRANCH}-${CCACHE_KEY_SUFFIX} - when: always - paths: - - ${CCACHE_DIR} + - !reference [.ccache_base, cache] artifacts: paths: @@ -303,12 +298,7 @@ linux_physmon: stage: build cache: - key: ccache-${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CCACHE_KEY_SUFFIX} - fallback_keys: - - ccache-${CI_JOB_NAME}-${CI_DEFAULT_BRANCH}-${CCACHE_KEY_SUFFIX} - when: always - paths: - - ${CCACHE_DIR} + - !reference [.ccache_base, cache] script: - git clone $CLONE_URL src @@ -384,12 +374,7 @@ linux_ubuntu_2204_clang: SETUP: cache: - key: ccache-${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CCACHE_KEY_SUFFIX} - fallback_keys: - - ccache-${CI_JOB_NAME}-${CI_DEFAULT_BRANCH}-${CCACHE_KEY_SUFFIX} - when: always - paths: - - ${CCACHE_DIR} + - !reference [.ccache_base, cache] before_script: - 'echo "LCG_VERSION: ${LCG_VERSION}"' diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d4c224bf3c7..87251106806 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,6 +14,7 @@ repos: - id: end-of-file-fixer exclude: \.(diff|patch)$ - id: check-yaml + exclude: \.gitlab-ci.yml$ - id: check-added-large-files From f3e39974a03f55f454a2310d83c017834d53e42a Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Sat, 11 Jan 2025 21:52:57 +0100 Subject: [PATCH 02/11] fix!: Make BinUtility constructor explicit (#3953) ## Summary by CodeRabbit - **New Features** - Enhanced JSON serialization and deserialization for material types, including robust handling for binned materials. - Improved error handling for unsupported binning configurations during JSON conversion. - Updated constructor for `BinUtility` to prevent implicit conversions. - **Bug Fixes** - Adjusted grid index type assignment based on binning values to prevent runtime errors. - Improved error handling and logging in material conversion processes. - **Tests** - Updated test cases for `BinUtility` initialization to improve clarity without altering functionality. --- Core/include/Acts/Utilities/BinUtility.hpp | 4 ++-- Plugins/Detray/src/DetrayMaterialConverter.cpp | 2 +- Plugins/Json/src/MaterialJsonConverter.cpp | 2 +- .../Algorithms/Digitization/ModuleClustersTests.cpp | 9 +++++---- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Core/include/Acts/Utilities/BinUtility.hpp b/Core/include/Acts/Utilities/BinUtility.hpp index a1213ddd8ec..b6038fb5181 100644 --- a/Core/include/Acts/Utilities/BinUtility.hpp +++ b/Core/include/Acts/Utilities/BinUtility.hpp @@ -56,8 +56,8 @@ class BinUtility { /// /// @param bData is the provided binning data /// @param tForm is the (optional) transform - BinUtility(const BinningData& bData, - const Transform3& tForm = Transform3::Identity()) + explicit BinUtility(const BinningData& bData, + const Transform3& tForm = Transform3::Identity()) : m_binningData(), m_transform(tForm), m_itransform(tForm.inverse()) { m_binningData.reserve(3); m_binningData.push_back(bData); diff --git a/Plugins/Detray/src/DetrayMaterialConverter.cpp b/Plugins/Detray/src/DetrayMaterialConverter.cpp index f6b61236ec5..e4b7c5b6caa 100644 --- a/Plugins/Detray/src/DetrayMaterialConverter.cpp +++ b/Plugins/Detray/src/DetrayMaterialConverter.cpp @@ -174,7 +174,7 @@ Acts::DetrayMaterialConverter::convertGridSurfaceMaterial( bUtility.binningData()[0u].binvalue == BinningValue::binZ && bUtility.binningData()[1u].binvalue == BinningValue::binPhi) { BinUtility nbUtility(bUtility.binningData()[1u]); - nbUtility += bUtility.binningData()[0u]; + nbUtility += BinUtility{bUtility.binningData()[0u]}; bUtility = std::move(nbUtility); swapped = true; } diff --git a/Plugins/Json/src/MaterialJsonConverter.cpp b/Plugins/Json/src/MaterialJsonConverter.cpp index ce582850e3c..759e1fd032b 100644 --- a/Plugins/Json/src/MaterialJsonConverter.cpp +++ b/Plugins/Json/src/MaterialJsonConverter.cpp @@ -704,7 +704,7 @@ nlohmann::json Acts::MaterialJsonConverter::toJsonDetray( bUtility.binningData()[0u].binvalue == BinningValue::binZ && bUtility.binningData()[1u].binvalue == BinningValue::binPhi) { BinUtility nbUtility(bUtility.binningData()[1u]); - nbUtility += bUtility.binningData()[0u]; + nbUtility += BinUtility{bUtility.binningData()[0u]}; bUtility = std::move(nbUtility); swapped = true; } diff --git a/Tests/UnitTests/Examples/Algorithms/Digitization/ModuleClustersTests.cpp b/Tests/UnitTests/Examples/Algorithms/Digitization/ModuleClustersTests.cpp index a1947cde17e..f2913475b4a 100644 --- a/Tests/UnitTests/Examples/Algorithms/Digitization/ModuleClustersTests.cpp +++ b/Tests/UnitTests/Examples/Algorithms/Digitization/ModuleClustersTests.cpp @@ -8,6 +8,7 @@ #include +#include "Acts/Utilities/BinUtility.hpp" #include "Acts/Utilities/BinningData.hpp" #include "ActsExamples/Digitization/ModuleClusters.hpp" #include "ActsFatras/Digitization/Segmentizer.hpp" @@ -46,10 +47,10 @@ DigitizedParameters makeDigitizationParameters(const Vector2 &position, auto testDigitizedParametersWithTwoClusters(bool merge, const Vector2 &firstHit, const Vector2 &secondHit) { BinUtility binUtility; - binUtility += - BinningData(BinningOption::open, BinningValue::binX, 20, -10.0f, 10.0f); - binUtility += - BinningData(BinningOption::open, BinningValue::binY, 20, -10.0f, 10.0f); + binUtility += BinUtility{ + BinningData(BinningOption::open, BinningValue::binX, 20, -10.0f, 10.0f)}; + binUtility += BinUtility{ + BinningData(BinningOption::open, BinningValue::binY, 20, -10.0f, 10.0f)}; std::vector boundIndices = {eBoundLoc0, eBoundLoc1}; double nsigma = 1; bool commonCorner = true; From 494bbb864edd1710d2bc357bf86efa5aa6526857 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Sat, 11 Jan 2025 21:54:21 +0100 Subject: [PATCH 03/11] ci: Use CERN registry cache in GitLab CI (#4019) --- .gitlab-ci.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2f1e13c1b1a..e768c23ee88 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,7 +18,7 @@ variables: clang_tidy: stage: build - image: ghcr.io/acts-project/ubuntu2404:63 + image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:63 tags: - large artifacts: @@ -71,7 +71,7 @@ clang_tidy: build_exatrkx_cpu: stage: build - image: ghcr.io/acts-project/ubuntu2204_exatrkx:63 + image: registry.cern.ch/ghcr.io/acts-project/ubuntu2204_exatrkx:63 variables: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.$DEPENDENCY_TAG.tar.zst tags: @@ -104,7 +104,7 @@ build_exatrkx_cpu: build_exatrkx: stage: build - image: ghcr.io/acts-project/ubuntu2204_exatrkx:63 + image: registry.cern.ch/ghcr.io/acts-project/ubuntu2204_exatrkx:63 variables: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.$DEPENDENCY_TAG.tar.zst tags: @@ -146,7 +146,7 @@ test_exatrkx_unittests: stage: test needs: - build_exatrkx - image: ghcr.io/acts-project/ubuntu2204_exatrkx:63 + image: registry.cern.ch/ghcr.io/acts-project/ubuntu2204_exatrkx:63 variables: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.$DEPENDENCY_TAG.tar.zst tags: @@ -165,7 +165,7 @@ test_exatrkx_python: stage: test needs: - build_exatrkx - image: ghcr.io/acts-project/ubuntu2204_exatrkx:63 + image: registry.cern.ch/ghcr.io/acts-project/ubuntu2204_exatrkx:63 variables: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.$DEPENDENCY_TAG.tar.zst tags: @@ -188,7 +188,7 @@ test_exatrkx_python: build_linux_ubuntu: stage: build - image: ghcr.io/acts-project/ubuntu2404:63 + image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:63 variables: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.$DEPENDENCY_TAG.tar.zst @@ -228,7 +228,7 @@ build_linux_ubuntu: linux_test_examples: stage: test - image: ghcr.io/acts-project/ubuntu2404:63 + image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:63 variables: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.$DEPENDENCY_TAG.tar.zst needs: [build_linux_ubuntu] @@ -252,7 +252,7 @@ linux_test_examples: linux_physmon: stage: test - image: ghcr.io/acts-project/ubuntu2404:63 + image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:63 variables: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.$DEPENDENCY_TAG.tar.zst needs: [build_linux_ubuntu] @@ -347,14 +347,14 @@ linux_ubuntu_2204: variables: CXXSTD: 20 DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.$DEPENDENCY_TAG.tar.zst - image: ghcr.io/acts-project/ubuntu2204:63 + image: registry.cern.ch/ghcr.io/acts-project/ubuntu2204:63 linux_ubuntu_2204_clang: extends: .linux_ubuntu_extra variables: CXXSTD: 20 DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.$DEPENDENCY_TAG.tar.zst - image: ghcr.io/acts-project/ubuntu2204_clang:63 + image: registry.cern.ch/ghcr.io/acts-project/ubuntu2204_clang:63 ###################### @@ -362,7 +362,7 @@ linux_ubuntu_2204_clang: ###################### .lcg_base_job: - image: ghcr.io/acts-project/${OS}-base:63 + image: registry.cern.ch/ghcr.io/acts-project/${OS}-base:63 stage: build tags: - cvmfs From d51b7b7ff47c799af0b60120bc90b8607db76567 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Sat, 11 Jan 2025 23:41:24 +0100 Subject: [PATCH 04/11] test: Add tests for return values from `IAxis::visit` (#4006) ## Summary by CodeRabbit - **Documentation** - Added documentation clarifying the return value of the `visit` method in the `IAxis` class. - **Tests** - Enhanced test coverage for `Axis` class methods, including `neighborHoodIndices` and `visit`. - Added test cases to verify method behavior across different axis types and boundary conditions. --- Core/include/Acts/Utilities/IAxis.hpp | 1 + Tests/UnitTests/Core/Utilities/AxesTests.cpp | 148 +++++++++++++++++++ 2 files changed, 149 insertions(+) diff --git a/Core/include/Acts/Utilities/IAxis.hpp b/Core/include/Acts/Utilities/IAxis.hpp index 09c9fbd3a56..d92fe3799dc 100644 --- a/Core/include/Acts/Utilities/IAxis.hpp +++ b/Core/include/Acts/Utilities/IAxis.hpp @@ -63,6 +63,7 @@ class IAxis { /// with a const reference to the concrete axis type. /// @tparam callable_t the callable type /// @param callable the callable object + /// @return the value returned by the callable template decltype(auto) visit(const callable_t& callable) const { auto switchOnType = diff --git a/Tests/UnitTests/Core/Utilities/AxesTests.cpp b/Tests/UnitTests/Core/Utilities/AxesTests.cpp index 5c849e777ba..4aa00b23288 100644 --- a/Tests/UnitTests/Core/Utilities/AxesTests.cpp +++ b/Tests/UnitTests/Core/Utilities/AxesTests.cpp @@ -271,6 +271,8 @@ BOOST_AUTO_TEST_CASE(neighborhood) { bins_t({8, 9, 10, 1, 2})); BOOST_CHECK(a4.neighborHoodIndices(5, 2).collect() == bins_t({3, 4, 5, 6, 7})); + BOOST_CHECK(a4.neighborHoodIndices(3, 2).collect() == + bins_t({1, 2, 3, 4, 5})); Axis a5( {0.0, 2.0, 4.0, 9.0, 9.5, 10.0}); @@ -442,6 +444,152 @@ BOOST_AUTO_TEST_CASE(AxisVisit) { std::vector edges = varClosed.visit([](const auto& axis) { return axis.getBinEdges(); }); BOOST_CHECK_EQUAL(edges.size(), varClosed.getBinEdges().size()); + + // Test return values from visit method with type-dependent values + int typeValue = eqOpen.visit([](const auto& axis) { + if constexpr (std::is_same_v, + Axis>) { + return 1; + } else if constexpr (std::is_same_v, + Axis>) { + return 2; + } else if constexpr (std::is_same_v, + Axis>) { + return 3; + } else if constexpr (std::is_same_v, + Axis>) { + return 4; + } else if constexpr (std::is_same_v, + Axis>) { + return 5; + } else { + return 6; // Variable, Closed + } + }); + BOOST_CHECK_EQUAL(typeValue, 1); // Should be Equidistant, Open + + typeValue = eqBound.visit([](const auto& axis) { + if constexpr (std::is_same_v, + Axis>) { + return 1; + } else if constexpr (std::is_same_v, + Axis>) { + return 2; + } else if constexpr (std::is_same_v, + Axis>) { + return 3; + } else if constexpr (std::is_same_v, + Axis>) { + return 4; + } else if constexpr (std::is_same_v, + Axis>) { + return 5; + } else { + return 6; // Variable, Closed + } + }); + BOOST_CHECK_EQUAL(typeValue, 2); // Should be Equidistant, Bound + + typeValue = eqClosed.visit([](const auto& axis) { + if constexpr (std::is_same_v, + Axis>) { + return 1; + } else if constexpr (std::is_same_v, + Axis>) { + return 2; + } else if constexpr (std::is_same_v, + Axis>) { + return 3; + } else if constexpr (std::is_same_v, + Axis>) { + return 4; + } else if constexpr (std::is_same_v, + Axis>) { + return 5; + } else { + return 6; // Variable, Closed + } + }); + BOOST_CHECK_EQUAL(typeValue, 3); // Should be Equidistant, Closed + + typeValue = varOpen.visit([](const auto& axis) { + if constexpr (std::is_same_v, + Axis>) { + return 1; + } else if constexpr (std::is_same_v, + Axis>) { + return 2; + } else if constexpr (std::is_same_v, + Axis>) { + return 3; + } else if constexpr (std::is_same_v, + Axis>) { + return 4; + } else if constexpr (std::is_same_v, + Axis>) { + return 5; + } else { + return 6; // Variable, Closed + } + }); + BOOST_CHECK_EQUAL(typeValue, 4); // Should be Variable, Open + + typeValue = varBound.visit([](const auto& axis) { + if constexpr (std::is_same_v, + Axis>) { + return 1; + } else if constexpr (std::is_same_v, + Axis>) { + return 2; + } else if constexpr (std::is_same_v, + Axis>) { + return 3; + } else if constexpr (std::is_same_v, + Axis>) { + return 4; + } else if constexpr (std::is_same_v, + Axis>) { + return 5; + } else { + return 6; // Variable, Closed + } + }); + BOOST_CHECK_EQUAL(typeValue, 5); // Should be Variable, Bound + + typeValue = varClosed.visit([](const auto& axis) { + if constexpr (std::is_same_v, + Axis>) { + return 1; + } else if constexpr (std::is_same_v, + Axis>) { + return 2; + } else if constexpr (std::is_same_v, + Axis>) { + return 3; + } else if constexpr (std::is_same_v, + Axis>) { + return 4; + } else if constexpr (std::is_same_v, + Axis>) { + return 5; + } else { + return 6; // Variable, Closed + } + }); + BOOST_CHECK_EQUAL(typeValue, 6); // Should be Variable, Closed + + // Test return value using axis properties + double minValue = + eqOpen.visit([](const auto& axis) { return axis.getMin(); }); + BOOST_CHECK_EQUAL(minValue, 0.0); + + double maxValue = + eqBound.visit([](const auto& axis) { return axis.getMax(); }); + BOOST_CHECK_EQUAL(maxValue, 10.0); + + std::size_t nBins = + varClosed.visit([](const auto& axis) { return axis.getNBins(); }); + BOOST_CHECK_EQUAL(nBins, 4u); } BOOST_AUTO_TEST_CASE(Output) { From bc035b1e90e8595ffa0fc80efd12d0a5ccd87445 Mon Sep 17 00:00:00 2001 From: Paul Gessinger Date: Mon, 13 Jan 2025 09:20:41 +0100 Subject: [PATCH 05/11] revert: "ci: Use CERN registry cache in GitLab CI" (#4022) This reverts commit 494bbb864edd1710d2bc357bf86efa5aa6526857. CERN Harbor has a 1/2 day maintenance window going on: https://cern.service-now.com/service-portal?id=outage&n=OTG0153808 --- .gitlab-ci.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e768c23ee88..2f1e13c1b1a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,7 +18,7 @@ variables: clang_tidy: stage: build - image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:63 + image: ghcr.io/acts-project/ubuntu2404:63 tags: - large artifacts: @@ -71,7 +71,7 @@ clang_tidy: build_exatrkx_cpu: stage: build - image: registry.cern.ch/ghcr.io/acts-project/ubuntu2204_exatrkx:63 + image: ghcr.io/acts-project/ubuntu2204_exatrkx:63 variables: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.$DEPENDENCY_TAG.tar.zst tags: @@ -104,7 +104,7 @@ build_exatrkx_cpu: build_exatrkx: stage: build - image: registry.cern.ch/ghcr.io/acts-project/ubuntu2204_exatrkx:63 + image: ghcr.io/acts-project/ubuntu2204_exatrkx:63 variables: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.$DEPENDENCY_TAG.tar.zst tags: @@ -146,7 +146,7 @@ test_exatrkx_unittests: stage: test needs: - build_exatrkx - image: registry.cern.ch/ghcr.io/acts-project/ubuntu2204_exatrkx:63 + image: ghcr.io/acts-project/ubuntu2204_exatrkx:63 variables: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.$DEPENDENCY_TAG.tar.zst tags: @@ -165,7 +165,7 @@ test_exatrkx_python: stage: test needs: - build_exatrkx - image: registry.cern.ch/ghcr.io/acts-project/ubuntu2204_exatrkx:63 + image: ghcr.io/acts-project/ubuntu2204_exatrkx:63 variables: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.$DEPENDENCY_TAG.tar.zst tags: @@ -188,7 +188,7 @@ test_exatrkx_python: build_linux_ubuntu: stage: build - image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:63 + image: ghcr.io/acts-project/ubuntu2404:63 variables: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.$DEPENDENCY_TAG.tar.zst @@ -228,7 +228,7 @@ build_linux_ubuntu: linux_test_examples: stage: test - image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:63 + image: ghcr.io/acts-project/ubuntu2404:63 variables: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.$DEPENDENCY_TAG.tar.zst needs: [build_linux_ubuntu] @@ -252,7 +252,7 @@ linux_test_examples: linux_physmon: stage: test - image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:63 + image: ghcr.io/acts-project/ubuntu2404:63 variables: DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.$DEPENDENCY_TAG.tar.zst needs: [build_linux_ubuntu] @@ -347,14 +347,14 @@ linux_ubuntu_2204: variables: CXXSTD: 20 DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.$DEPENDENCY_TAG.tar.zst - image: registry.cern.ch/ghcr.io/acts-project/ubuntu2204:63 + image: ghcr.io/acts-project/ubuntu2204:63 linux_ubuntu_2204_clang: extends: .linux_ubuntu_extra variables: CXXSTD: 20 DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.$DEPENDENCY_TAG.tar.zst - image: registry.cern.ch/ghcr.io/acts-project/ubuntu2204_clang:63 + image: ghcr.io/acts-project/ubuntu2204_clang:63 ###################### @@ -362,7 +362,7 @@ linux_ubuntu_2204_clang: ###################### .lcg_base_job: - image: registry.cern.ch/ghcr.io/acts-project/${OS}-base:63 + image: ghcr.io/acts-project/${OS}-base:63 stage: build tags: - cvmfs From eae98cc5c25993b1a82581f22d896185341a4dbd Mon Sep 17 00:00:00 2001 From: Benjamin Huth <37871400+benjaminhuth@users.noreply.github.com> Date: Mon, 13 Jan 2025 12:19:40 +0100 Subject: [PATCH 06/11] refactor: Remove cugraph, refactor GNN plugin cmake (#4014) Removes cuda because it is not tested and a very heavy dependency Refactors the exatrkx cmake code --- CMakeLists.txt | 3 - .../python/acts/examples/reconstruction.py | 2 +- Examples/Python/src/ExaTrkXTrackFinding.cpp | 12 -- Plugins/ExaTrkX/CMakeLists.txt | 48 ++++---- Plugins/ExaTrkX/README.md | 1 - .../Plugins/ExaTrkX/CugraphTrackBuilding.hpp | 37 ------ Plugins/ExaTrkX/src/CugraphTrackBuilding.cpp | 84 -------------- .../src/weaklyConnectedComponentsCugraph.hpp | 108 ------------------ docs/getting_started.md | 1 - 9 files changed, 26 insertions(+), 270 deletions(-) delete mode 100644 Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/CugraphTrackBuilding.hpp delete mode 100644 Plugins/ExaTrkX/src/CugraphTrackBuilding.cpp delete mode 100644 Plugins/ExaTrkX/src/weaklyConnectedComponentsCugraph.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 04fb58d6825..a4fd002e871 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -432,9 +432,6 @@ if(ACTS_BUILD_PLUGIN_EXATRKX) and ACTS_EXATRKX_ENABLE_TORCHSCRIPT must be enabled." ) endif() - if(ACTS_EXATRKX_ENABLE_ONNX) - find_package(cugraph REQUIRED) - endif() if(ACTS_EXATRKX_ENABLE_TORCH) find_package(TorchScatter REQUIRED) endif() diff --git a/Examples/Python/python/acts/examples/reconstruction.py b/Examples/Python/python/acts/examples/reconstruction.py index 0e30961fe39..f81fc7e3404 100644 --- a/Examples/Python/python/acts/examples/reconstruction.py +++ b/Examples/Python/python/acts/examples/reconstruction.py @@ -1798,7 +1798,7 @@ def addExaTrkX( acts.examples.OnnxEdgeClassifier(**filterConfig), acts.examples.OnnxEdgeClassifier(**gnnConfig), ] - trackBuilder = acts.examples.CugraphTrackBuilding(customLogLevel()) + trackBuilder = acts.examples.BoostTrackBuilding(customLogLevel()) findingAlg = acts.examples.TrackFindingAlgorithmExaTrkX( level=customLogLevel(), diff --git a/Examples/Python/src/ExaTrkXTrackFinding.cpp b/Examples/Python/src/ExaTrkXTrackFinding.cpp index c7a30b51d2e..ffb572af214 100644 --- a/Examples/Python/src/ExaTrkXTrackFinding.cpp +++ b/Examples/Python/src/ExaTrkXTrackFinding.cpp @@ -7,7 +7,6 @@ // file, You can obtain one at https://mozilla.org/MPL/2.0/. #include "Acts/Plugins/ExaTrkX/BoostTrackBuilding.hpp" -#include "Acts/Plugins/ExaTrkX/CugraphTrackBuilding.hpp" #include "Acts/Plugins/ExaTrkX/ExaTrkXPipeline.hpp" #include "Acts/Plugins/ExaTrkX/OnnxEdgeClassifier.hpp" #include "Acts/Plugins/ExaTrkX/OnnxMetricLearning.hpp" @@ -157,17 +156,6 @@ void addExaTrkXTrackFinding(Context &ctx) { ACTS_PYTHON_MEMBER(cut); ACTS_PYTHON_STRUCT_END(); } - { - using Alg = Acts::CugraphTrackBuilding; - - auto alg = py::class_>( - mex, "CugraphTrackBuilding") - .def(py::init([](Logging::Level lvl) { - return std::make_shared( - getDefaultLogger("EdgeClassifier", lvl)); - }), - py::arg("level")); - } #endif ACTS_PYTHON_DECLARE_ALGORITHM( diff --git a/Plugins/ExaTrkX/CMakeLists.txt b/Plugins/ExaTrkX/CMakeLists.txt index 802941e7367..651c6e32a0f 100644 --- a/Plugins/ExaTrkX/CMakeLists.txt +++ b/Plugins/ExaTrkX/CMakeLists.txt @@ -1,29 +1,28 @@ -set(SOURCES src/buildEdges.cpp src/ExaTrkXPipeline.cpp) +add_library(ActsPluginExaTrkX SHARED src/buildEdges.cpp src/ExaTrkXPipeline.cpp) + +if(ACTS_EXATRKX_ENABLE_CUDA) + target_compile_definitions(ActsPluginExaTrkX PUBLIC ACTS_EXATRKX_WITH_CUDA) +endif() if(ACTS_EXATRKX_ENABLE_ONNX) - list( - APPEND - SOURCES - src/OnnxEdgeClassifier.cpp - src/OnnxMetricLearning.cpp - src/CugraphTrackBuilding.cpp + target_sources( + ActsPluginExaTrkX + PRIVATE src/OnnxEdgeClassifier.cpp src/OnnxMetricLearning.cpp ) endif() if(ACTS_EXATRKX_ENABLE_TORCH) - list( - APPEND - SOURCES - src/TorchEdgeClassifier.cpp - src/TorchMetricLearning.cpp - src/BoostTrackBuilding.cpp - src/TorchTruthGraphMetricsHook.cpp - src/TorchGraphStoreHook.cpp + target_sources( + ActsPluginExaTrkX + PRIVATE + src/TorchEdgeClassifier.cpp + src/TorchMetricLearning.cpp + src/BoostTrackBuilding.cpp + src/TorchTruthGraphMetricsHook.cpp + src/TorchGraphStoreHook.cpp ) endif() -add_library(ActsPluginExaTrkX SHARED ${SOURCES}) - target_include_directories( ActsPluginExaTrkX PUBLIC @@ -45,15 +44,21 @@ if(ACTS_EXATRKX_ENABLE_CUDA) set_target_properties( ActsPluginExaTrkX PROPERTIES - CUDA_STANDARD 17 + CUDA_STANDARD 20 CUDA_STANDARD_REQUIRED ON CUDA_SEPARABLE_COMPILATION ON ) + target_compile_options( + ActsPluginExaTrkX + PRIVATE + $<$:-g + --generate-line-info + --extended-lambda> + ) target_compile_definitions( ActsPluginExaTrkX PUBLIC CUDA_API_PER_THREAD_DEFAULT_STREAM ) - target_compile_definitions(ActsPluginExaTrkX PUBLIC NO_CUGRAPH_OPS) else() target_compile_definitions(ActsPluginExaTrkX PUBLIC ACTS_EXATRKX_CPUONLY) endif() @@ -64,10 +69,7 @@ if(ACTS_EXATRKX_ENABLE_ONNX) PUBLIC ACTS_EXATRKX_ONNX_BACKEND ) - target_link_libraries( - ActsPluginExaTrkX - PRIVATE OnnxRuntime cugraph::cugraph - ) + target_link_libraries(ActsPluginExaTrkX PRIVATE OnnxRuntime) endif() if(ACTS_EXATRKX_ENABLE_TORCH) diff --git a/Plugins/ExaTrkX/README.md b/Plugins/ExaTrkX/README.md index 8a7944bd7f2..5878ce83a15 100644 --- a/Plugins/ExaTrkX/README.md +++ b/Plugins/ExaTrkX/README.md @@ -23,7 +23,6 @@ This plugin is known to build without errors with (as of September 2022) - [libtorch](https://pytorch.org/) v1.10.2 for CUDA version 10.2 and cxx-11-abi ([download](https://download.pytorch.org/libtorch/cu102/libtorch-cxx11-abi-shared-with-deps-1.10.2%2Bcu102.zip)) *For the ONNX backend:* -- [cugraph](https://github.com/rapidsai/cugraph) v22.02.00 - [ONNX](https://github.com/microsoft/onnxruntime) v1.10.0 with CUDA support enabled *For the Torch backend* diff --git a/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/CugraphTrackBuilding.hpp b/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/CugraphTrackBuilding.hpp deleted file mode 100644 index 133ee79e187..00000000000 --- a/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/CugraphTrackBuilding.hpp +++ /dev/null @@ -1,37 +0,0 @@ -// 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/ExaTrkX/Stages.hpp" -#include "Acts/Utilities/Logger.hpp" - -#include - -#include - -namespace Acts { - -class CugraphTrackBuilding final : public Acts::TrackBuildingBase { - public: - CugraphTrackBuilding(std::unique_ptr logger) - : m_logger(std::move(logger)), m_device(torch::Device(torch::kCPU)) {} - - std::vector> operator()( - std::any nodes, std::any edges, std::any edge_weights, - std::vector &spacepointIDs, - torch::Device device = torch::Device(torch::kCPU)) override; - torch::Device device() const override { return m_device; }; - - private: - std::unique_ptr m_logger; - torch::Device m_device; - const auto &logger() const { return *m_logger; } -}; - -} // namespace Acts diff --git a/Plugins/ExaTrkX/src/CugraphTrackBuilding.cpp b/Plugins/ExaTrkX/src/CugraphTrackBuilding.cpp deleted file mode 100644 index 7750cd7b3ac..00000000000 --- a/Plugins/ExaTrkX/src/CugraphTrackBuilding.cpp +++ /dev/null @@ -1,84 +0,0 @@ -// 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/Plugins/ExaTrkX/CugraphTrackBuilding.hpp" - -#include - -#include - -#include "weaklyConnectedComponentsCugraph.hpp" - -namespace Acts { - -std::vector> CugraphTrackBuilding::operator()( - std::any, std::any edges, std::any edge_weights, - std::vector &spacepointIDs, torch::Device) { - auto numSpacepoints = spacepointIDs.size(); - auto edgesAfterFiltering = std::any_cast>(edges); - auto numEdgesAfterF = edgesAfterFiltering.size() / 2; - auto gOutputCTen = std::any_cast(edge_weights); - - if (numEdgesAfterF == 0) { - return {}; - } - - // ************ - // Track Labeling with cugraph::connected_components - // ************ - std::vector rowIndices; - std::vector colIndices; - std::vector edgeWeights; - std::vector trackLabels(numSpacepoints); - std::copy(edgesAfterFiltering.begin(), - edgesAfterFiltering.begin() + numEdgesAfterF, - std::back_insert_iterator(rowIndices)); - std::copy(edgesAfterFiltering.begin() + numEdgesAfterF, - edgesAfterFiltering.end(), std::back_insert_iterator(colIndices)); - std::copy(gOutputCTen.data_ptr(), - gOutputCTen.data_ptr() + numEdgesAfterF, - std::back_insert_iterator(edgeWeights)); - - ACTS_VERBOSE("run weaklyConnectedComponents"); - weaklyConnectedComponents( - rowIndices, colIndices, edgeWeights, trackLabels, logger()); - - ACTS_DEBUG("size of components: " << trackLabels.size()); - if (trackLabels.size() == 0) { - return {}; - } - - std::vector> trackCandidates; - trackCandidates.clear(); - - int existTrkIdx = 0; - // map labeling from MCC to customized track id. - std::map trackLableToIds; - - for (auto idx = 0ul; idx < numSpacepoints; ++idx) { - int trackLabel = trackLabels[idx]; - int spacepointID = spacepointIDs[idx]; - - int trkId; - if (trackLableToIds.contains(trackLabel)) { - trkId = trackLableToIds[trackLabel]; - trackCandidates[trkId].push_back(spacepointID); - } else { - // a new track, assign the track id - // and create a vector - trkId = existTrkIdx; - trackCandidates.push_back(std::vector{trkId}); - trackLableToIds[trackLabel] = trkId; - existTrkIdx++; - } - } - - return trackCandidates; -} - -} // namespace Acts diff --git a/Plugins/ExaTrkX/src/weaklyConnectedComponentsCugraph.hpp b/Plugins/ExaTrkX/src/weaklyConnectedComponentsCugraph.hpp deleted file mode 100644 index 4eb498a326d..00000000000 --- a/Plugins/ExaTrkX/src/weaklyConnectedComponentsCugraph.hpp +++ /dev/null @@ -1,108 +0,0 @@ -// 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 - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef CUDA_RT_CALL -#define CUDA_RT_CALL(call) \ - { \ - cudaError_t cudaStatus = call; \ - if (cudaSuccess != cudaStatus) { \ - fprintf(stderr, \ - "ERROR: CUDA RT call \"%s\" in line %d of file %s failed with " \ - "%s (%d).\n", \ - #call, __LINE__, __FILE__, cudaGetErrorString(cudaStatus), \ - cudaStatus); \ - } \ - } -#endif // CUDA_RT_CALL - -template -__global__ void weaklyConnectedComponents(std::vector& rowIndices, - std::vector& colIndices, - std::vector& edgeWeights, - std::vector& trackLabels, - const Acts::Logger& logger) { - cudaStream_t stream; - CUDA_RT_CALL(cudaStreamCreate(&stream)); - - ACTS_VERBOSE("Weakly components Start"); - ACTS_VERBOSE("edge size: " << rowIndices.size() << " " << colIndices.size()); - raft::handle_t handle{stream}; - - cugraph::graph_t graph(handle); - - // learn from matrix_market_file_utilities.cu - vertex_t maxVertexID_row = - *std::max_element(rowIndices.begin(), rowIndices.end()); - vertex_t maxVertexID_col = - *std::max_element(colIndices.begin(), colIndices.end()); - vertex_t maxVertex = std::max(maxVertexID_row, maxVertexID_col); - - vertex_t number_of_vertices = maxVertex; - rmm::device_uvector d_vertices(number_of_vertices, - handle.get_stream()); - std::vector vertex_idx(number_of_vertices); - for (vertex_t idx = 0; idx < number_of_vertices; idx++) { - vertex_idx[idx] = idx; - } - - rmm::device_uvector src_v(rowIndices.size(), handle.get_stream()); - rmm::device_uvector dst_v(colIndices.size(), handle.get_stream()); - rmm::device_uvector weights_v(edgeWeights.size(), - handle.get_stream()); - - raft::update_device(src_v.data(), rowIndices.data(), rowIndices.size(), - handle.get_stream()); - raft::update_device(dst_v.data(), colIndices.data(), colIndices.size(), - handle.get_stream()); - raft::update_device(weights_v.data(), edgeWeights.data(), edgeWeights.size(), - handle.get_stream()); - raft::update_device(d_vertices.data(), vertex_idx.data(), vertex_idx.size(), - handle.get_stream()); - - std::tie(graph, std::ignore) = - cugraph::create_graph_from_edgelist( - handle, std::move(d_vertices), std::move(src_v), std::move(dst_v), - std::move(weights_v), cugraph::graph_properties_t{true, false}, - false); - - auto graph_view = graph.view(); - CUDA_TRY(cudaDeviceSynchronize()); // for consistent performance measurement - - rmm::device_uvector d_components( - graph_view.get_number_of_vertices(), handle.get_stream()); - - ACTS_VERBOSE("2back from construct_graph"); - cugraph::weakly_connected_components(handle, graph_view, d_components.data()); - - ACTS_VERBOSE("number of components: " << d_components.size()); - raft::update_host(trackLabels.data(), d_components.data(), - d_components.size(), handle.get_stream()); -} diff --git a/docs/getting_started.md b/docs/getting_started.md index 03365dd9f40..2b99227a1e7 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -41,7 +41,6 @@ components: - [Pythia8](https://pythia.org) for some examples - [ROOT](https://root.cern.ch) >= 6.20 for the TGeo plugin and the examples - [Sphinx](https://www.sphinx-doc.org) >= 2.0 with [Breathe](https://breathe.readthedocs.io/en/latest/), [Exhale](https://exhale.readthedocs.io/en/latest/), and [recommonmark](https://recommonmark.readthedocs.io/en/latest/index.html) extensions for the documentation -- [cugraph](https://github.com/rapidsai/cugraph) for the Exa.TrkX plugin - [libtorch](https://pytorch.org/cppdocs/installing.html) for the Exa.TrkX plugin - [Pybind11](https://github.com/pybind/pybind11) for the Python bindings of the examples From 7806575ae2ae7eee546bf1036949e559bde8c98c Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Tue, 14 Jan 2025 11:00:16 +0100 Subject: [PATCH 07/11] fix: Use forced approach for `MultiStepperSurfaceReached` (#4025) Currently we respect the overstepping tolerance in the `MultiStepperSurfaceReached` aborter. This can lead to problems with overstepping in situations with high curvature or surfaces that bent like cylinders and perigees. To fix this we can use directly `ForcedSurfaceReached` as a base which will always target the requested surface without checking the overstep tolerance. This can cause problems with cylinders but we usually do not target them with the GSF or one of the solutions should be strictly closer which suppresses the problem. Discovered and pulled out of https://github.com/acts-project/acts/pull/3449 ## Summary by CodeRabbit - **Refactor** - Updated inheritance for `MultiStepperSurfaceReached` struct - Simplified constructor initialization for the struct --- .../performance_trackfitting.root | Bin 201605 -> 201532 bytes .../Acts/Propagator/MultiStepperAborters.hpp | 7 +++---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/CI/physmon/reference/trackfitting_gsf/performance_trackfitting.root b/CI/physmon/reference/trackfitting_gsf/performance_trackfitting.root index b3543963d9faeef2cc20e7480d4f1695228ac2c8..79cdb71a2cd92d5fdf4937b9e2570fbc4c0354ac 100644 GIT binary patch delta 187077 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

Nd!TJ$v}?{{MtYTK`RAzexYM3n<<0xu9T=AJ=j_ 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

fB^GW zccg~fnn<*vZ*BY4hJm`CrWzmeY*s1wZD9vlCZ2fp;7`oQRh75BQ1^;8M3#Qd+vLm; zP3UU#aL9RK?EU!0OXPsuU09{#z7E{9Mcjd+CC6o829;28(gez(a{uGwANYH{+ zQkBLDw;<3bD;3s*vO$_tyCQliqYvZFvnGu!il^KKEh)B_(qiDJ8igh#d!(^hcZgk<@C$7ici)ZB2{9lT06bqaw%`K?J z2i7Ll`!iF7(sR3Qv#=Y$pYD!YX}`|*siK4WALJJQgif)?ch=f#q>*Ajh~j@d%{z!F zQ*+Pi!s-v_D;m${7j6WM%F0>1Wjl2hzPexLd+SZn&|8eYhof0zmpjVcYJ#6`W-wEX z(wZ3)zgW9zeHvova|2t)f965$=iZbIGk6zTvhM1ik8a3y9RCEsI~cqtUBojebl1^? zH=0+Zp~U1$y{5SBAELQJeHq1`SD!y~FzZ*6OrXk4v6q39^p}+vQ^{fHLR7HdF4mPK zX91?)eC6g94(wY+CHb1V1%2V%dZy>C`og38R9|=R{RpJEjKb=JwS{oTY`)$uzn2J0Hg@F$a zM9fo~2VhfSNmCbft6!FVMDR#Ph&J@92T?tILDbi+AbTet z9lnc$dk$`&7;LKSm=1Qe3e->%C@T{0rgZ*C%k8Zt@3LIwesoempBbvd7PK%nt6Zja zWiYC|m;Tq=m9 zNdlP`Wl!?Afee*Qsef0_8VXdC@LsJ{e^9zbHv>qacdkv{)Jw1L!gNBoO~|tc%_hq= z5-Lgc_pjdMf7xWfrf`$pw<`}mXTS;tG9n8c0w_h;nKI@QSbt=S1tz2!Rb@85tRFAR zkXCTJ8ljT*uynKEC+tThs&Um}pF(sk5^;o8C=PuKpO{8g>5+(E zZ1p-!)4Nix41kCjjbw8v4YOL`CSDiRcerUr$z5Gls|jY zz#kq+&(3XAp-zLcaGSEuz!%%HdZanKcMpr-nAQMXmSf&H=LO@Jhei!!LL9b5JocZl z4=dHbsMd?AbZ$8;2IR&RfHH#_;#O^3@_q?UMgA!yvy?iy^_Jpg1W;y6y2U@ zmu?N%doORS6U_3@?(GEFIUDY0r|Q?l2PYYy`{P}<)oE@ymft0D&dZ%xwrXmRS0>CK zOL|CMy>zu9GzbY%oU}mJc<)z+^>41vux@6RLCB*6nxUFAGrIkK48X^^2Cfo5isLC z5_*iS5ByJ~qL{tam;sM+RokyWZCuI7nVKOTFR|QcsP`yt^j=32E(>V) zKl#S>BG2aBWYqV`<{1y`!V%=HbFCj^@0?b=!B_gDUdhJe!f?>@m40fTN(+-V7viq(?5YT)X3@={!c)LHe*O9~H9T$V1@ zn67*IptZM^Df#VEyphah3F}z3%zw$VH^q-5H#!On&u4e@ogCDDc<0+{=slqA<)E`s zTfwT)OHF;rhaT)6ML{`@M-FMXUplt8S-At(Pnm^9Y^O1tYWC>Z2l5Sl<|E#3nVZ_N3Bo6jqt=IQd%~Zm2&ULq`JMVvwighV zzpmRy{U+%RJNmgEY)cIddh5bL*>jWTocSxtP%lVa$a2rr-iLK$vOBFuGREQEaD0*T zOSenfmv-xYtbnUR$P>Qvai*=Y3XA$ydxF0QFe1KH-WP=Z%ynFFDJ+$uNv2;{el31^wE)R>z!*ci-8XWK zXFDZ_Rd;#{Mvu%AntCs6_Chc@a=&nKXIku5UoU$>RE(@9UEK<*f3wJwnB6i!Ayt2t zE;(sEIBea;kFWRJkVC$D{akfRpY0Q2q41b-#$5P~B|G)v{!2ahf2nux-_)}#|G((j z^C@&oc8B5}&Li;uorEx>=;uO!Cf?lO>E)E@!3z_Kwi)$)A+;mCs^zMAr@$CZ@2JsaaM*F~U_^>P-Gz5pA zFo>v4cas{l;MKm`aldI?@(XdTKS0g${+b+MTQqbnR}TAN;8j{9_QgZav5S=@$6cOz zhh`7zsRd}QcO_rJcRU#4zoDTmpQXqb3ty&yzGwJd=g% znynGNdwNUZ`*znM_{J;jz2<4RGs<vIAg}d581%Kz~ zX3ui6iL?5hVcurGI+`QUY}HNie~Ghhz&e%~kP=Dl-3>P6op8*3R~JlX1iCq7O={tK z4DBbL+&i_zk)>r^tDKF zK0l<`%hN?BcUB_Ss!Ur3!hc+%kxEz9#^uMT-qB6rC8Nt-G($+NgYWZ4^J~!WyCvE# zm4v$=D*o9`zxX%w{$CHG6k4?uTb6&fOMV}moKsb`oiAww_P6_B)*|XFHP`H3Z?fJi zgkBSh5=*fyMMljP_@@VLn%=hT2POtBuKNChgBQu$j|1;Ne%t-jxZ>A9x#1}p;7opQ z_eXhh{QTb+RJ?GHPQIL4$s^sB%n)`!A^(0-ia0R4G-4r+*b9`naIxa|qYq8>R*xQy94$Qmy_bGn1QZ^f(D-8F zr+5jm2IMjQb^J#_Tlqhp-E5=N=KwOr6W=#AcT-y5ot#JbiJmO|D6L(E@2K=P?c> zLz(Gb5;@cRPwEWN2WoYx2K03=)q@hqD2{ey!hoFMJ0iVT_@*eua{N#)eA5Sl()1+T zU?b6zF!Sh{hq7fOUDND3qyG1B?D}5A>iX9dk9yP>N8)C3F@IKl(BW? zy{R*g2vWGMnbD@Dh!UQkl;4%HK(T+Xos|DFm`NbOwhKoa|JoliiMTAII!q6HD+Ox0 zJAWhrWA#JwQwWr1&W~N$gQy!Xk~jB`yrgI=QMV}W^{;*@P2D2f`t-Z~e#eBe1L zO(=;}%C5f;?FP1_1aM<}KH<}L-ry@(XF5(0>s*%;fxkllMfxPIugwi=%Y~0>A6**O zEwA%p9qKUQJ_+ltb1B)3z|F*EsLWT;bjqASHX~p&e;MuCU{f~@j#)l; z&^~Y&hlo6=?s>Bv_xo@O(3sAYibJa(8q)burF&q2>A0y(f4^KTz)V^=TwJ2G9nK8E z%n3?S2LszuN@nrv%j($jeXJmAWY3r%H94D^8O3`rIEP)_Ehe7pO(CGp?qMj^TURtmjY|+|du|HTd_K6>btOmg zey#hk@8;`s2Lw+T_KyU0XQQ~Y>0rlVof1q$a^@4_Qf4fm>*3TsMRMqN#g* zL87(+&k9H2j6D(4y7M{ahoFTmgzt3>zMXoss7=H=Q}>rGphrWB3zVG^3#hx)(Zc5j z20v%+N%KeF#^6_u*ZQNu-2gQEU&h7f_YaaY5@Vh~2w{lbPAlHIX!#L=H)A$N@Gg~B; z!UXdI4DYY361lLqf{sd~aLFjVYP)+Z++rJf6mOodW}iRRAAn)T+{5{N^HF^`eLS+D z&%1zbG2}j~3OiKAk~5k{^J-J`sfZCcw$hDsfbYV-jT|K56-TQ`Zqx?i8Zbq7CCsT( zI=PR#`dKHDZjM|0#>jmi=IdC0I{?GTA)5y2SR=6Y_;cn3ob!=0Rk80Nd@`RVISxr? z81-Ic04?zdN#3b^1tPs?fw;cbumeAs&!KB=!oBB(`)KLvtiJ*c_ASuGk@TdXQXri2 zl~>*RwXiOS&hp>tpwj6of4QBpio;m9k2pi-GJHy5BP{;-xw+^m`EW{`Z&&C+5-C%+ z@RKxMo1ry4cib)i5nz!AW{{7qrJhp&uv?5w}=nwmVs-2ZD$!7Kb#SZntW7Br(UM)H${!+ra zT9y!S(^6Id5*>>jiF8M!VFnOH!bR;sjK0=MPAEUquRnhit{U>(NmGHA}coJjdp zrN!ka$!pNfhT#z82aj)@F!~Q}gJ787-mR7ph__giWG>BJ;>6Cu8F=8 za%g!PMhtN~3z*-HpG~7h$Uj2nBQK)L4%`577X=(TBNx5r+qG; zLOUWxY3}&H$Af9cq>g&%VgZbAn@5?1AuAMMmITFU>Z-T5 z{PPI+y`S6$pl9Hf zzX<@hG6k{vGRO}*G$==h!dXugX#>qe zmgGSPOAqjjH@Alv-vpJLiVJZ(e+Oj1(!?LEsqqX)^!C4>+Bt}YNTd4SfQ0HO20z^bODjb-_wbjX`i%w)A7@1 zt1%;!)B33AWQk{|k^iSib^}t{vc(k%N!}YICEAX^~A! z5BdV7h^k=9o<8WAt^oX8rmdTQJO&zh3$lYUXm9KfVYEa|f7%YrNv-|6j8_m8KR!gg z?7g(fvZ)TbD+O-@{1#hS=aJnO$vhv_!6*x3o$`HC0BG}DJh>bNySyUrll+OY1sWUffgb73@8fb-7-o53y{MgaPE5dJhOvB>`@PlBf9T+6lZE}jr*cV zl;Aw0WpXKj=Nnjhr=f&=me?NBwEZ*0kA7E*GS^)j25h!QAtoIWF;EbCX$fz!(I92B z)x-7+ZnbD5*!OcfXGvEX5$(6NL~EGqo*a^9g&VL&S%+^5;}HqR!7%GHx=i9_|6E%r z$ries4x>;M(o*4DP0No26uH3L$$a5EdohmCXz003_4eB3qy6x>BKDUIjT$6xyf4_# zV+pKwGi6|i^-qdk$s$|+oXa7grU8%u@zemEEQA(?UTSj;NH18O>6)DH&I7F6W}!|LVO$r#)|Z>82FNi zF^Kpm^xhlTQilvkkuHrto;A}2Q`c+Xm(EV5%zYA^7kseD%4|rWeirfD98nCZ_uA}5)NYoQc!1xS_`ExLe@eRyO;I=09$K*u* z8E7xmJ7m~xAMJ#+wkCb`RQO$1#r*-=;~lDy_h%mzGkNY4=Qq#+HSXxi!7!_UcTb3Q zj}kbY-deXLHyon4WqI{3gd7rITf=I@rFIzdI!bmic`6+(*bvz^3_=;--NA-5^Ly(wbgD1 z>uR7QJxbMF>Vrnxg*oNF-To|__>G@F3xcSr@hDnea|rz1lFh1jk3Nby^-4?m3CxBI z=<8)7wZPx$^q)AAY^!|=4sRCGFw9=gMjeiP+Z zer$*F6s*2axj?3=T;uZ+gP`|5P#+(L`g3jy z!!A0Wi0ol|#`9Ux_x0a|zOcZwot1msfEjyE@4 zNMn@=V|y$YvICtAL56vkp7mbx>#;J32y;a-tQth63ZL2Q6aW+>~^pf6I{i^`pZ^CwJgyeCj(#&OH+z#H<;f8vX0t z(lN_v8Ax5|d_s)>?g{BSK;fGtX@kWUwmomlj~Y1Imv|6cFIGVyBQW|~CPZGe31eHVmW>dVME4GV(TK@2bNX#?Krt35N5lkheJikkK8 zE#`AD$wm;H=RedgKjKc}_Lj~DK~4i!lS5IIlu9t_hXPjHdmyAP^k|2xj@S##*@^O& z?vn}DhuxU2avOy1GhY@TI^(Y}7fCsbK~d-p_!9y791-x2v>I#Q!T>@18<6UBr&YHD zuPuYGjc^0L{6r8lp|je&J}y%)oU&tZ3 z$sO9IASbAA$B}=Y<6H?x%=xc z%99mz%nzR{Q;V8%x{=Ve2y2p*`-`1Zk~npsz{j)m_2H@1*VuBAi3UfMZS_iW(k|h- z&j`hO#B%D#!dZ){2Mqz{OeE2W`iV$*>tEmZ$T}L{difwPxSSeoP$xo2DE@QQ8Qe}@ zx_xOb>R=Pg?3{*u-m>=J9JWUPqyTcjUv7ZW!81iojD0IO`h{@d`!YPrv6`FkQ4p9& z*q*Jkn3^d9Qt-0i2!w-q&e?@v!vG2AEIlN?TdA3qw6{1(kdL6n=$truVryW^ zaWmr-r29(ttG?MQE;jtg-i1snV6G~g&~9PQ=j~+PM2Kk@Ui>SkO8VKLa@8!Z%=k5x z@6U5K?>PAd2TN3UCBu7UW$W{&O+|3cDjyeGV3xg#x5&CZ^D66YtbJvvr*!IUENnRp z>I$iBmvVgDjTq*o%(~V*X4;te}$8sx8d{JdguL$x*GuKDD zeesQIl|yB$=2i-VeY&qHz|(hD`rz-6?=tk{i!eA+rnK3ZAkqwfOWXX#)T2#zmjS!! zzr(NYnWk>i$&5>pT7GJds9%Uj3D>2?Xn!0Q*+9MAHyB#OSL6EiNU*`N2 z=5OPb2@zzPli z5)s^G3XxPkf*ziYpDa^zX-Yq>XF#Zt1KGLK)qB2Z(RV2+D3?0iZ8i7y=?mzu%BjjG zOhfT~ses|riEbvlRaVS0HShcZkrfiA^g~;K>HW%*FI!F=Ih&<$O&wcQJn^!k`%a@% zTbhB6@msC;&7M%8Xs)wN+LbJS=8P$3s}r++<9ilE|Lb3?(G6#WWS=n;K48xLGbCE# z@?4p*$nU(!`$wl>4@lsU&?Aa^_2+e$DZpL51Qj8(Ev81(+;k>#7SEe@aXv z;+14v!#m|+pv0QwnyO-BS)1TElc;}(t%NGhXyiMK^Jt=4h{W5oSrZ3P)?SqukGJZC zFQf4x3R<{mzo&ov%ZN=J>Lr*4=kk>g)jn-K9|H@6#CzGy8a5B_|W-W3^-78Tp zqRmW3@iy#2M2c9a)upIq#hG2rh{i$j&GgY_E6S|tihBn-I*wO|nm;hCfIUfV&Ee51 zyY5(?ro^=#Ocm&E8eV!0F%mJO;NRDALW}^Ir{$*1wAEg7MyX%X=T^e%)2VgW3s3>< zqn+&T8;;&(a&EZ2_-fCLh0=z;FZMfSZ~aS>*Hv@jE)lI=-8P(aprFAx0mH#gzl!ag zk*Vre*WFPdJFLY7&-0??7F}6LHg})j>S+>sT7QnO$?Gt;un)y)S2BG|`ffy9ogxqw zv*b7GfX{1h67L+A5%X#Gem{bP_hw$(&hhj9(tX37IIySpHDiSQX;d`cPM`zLwQA=q zNqZKtrPS1MbdVFxU1{@7u&NbzvHm*b1YWs;6kPdyL+S&~<)|TfCsL`z@^p#vbv3-w zZ!^M#&&_(Z%BNrFhYEI$kLV7OTus2Hz`6t4Nn-CB5nOphKzELrdI3V+3XA0wvG(!L zsIP)`r^Z~86a9_p%>|KHdJN`{n}(EC>;{W3D4IIc{?Kl?Q_eJwc0MZ_`2qfVr9bf| zyGXa+I{QuQuI1l;t;Iv*wXrMg){I*|LMv)BhQ?%N32^<2%DoivbnVgl>NbEhS2;qZ ze$-X|L@!X2)^r<~k5k$hX6x#D>S6tL(QZtOJxVr56CPs!)JeCIHLT{ik_%C=aU(Tw zdT=sh-lfqq(}`+7fRm~;!rUm?R55K^>#+K|b;$+Vtx;C@zO1sn!LZ)L^=kulY^7mQ zPw(C(u^dfXue{DYBO7SJP7^@SAodkF;G7Jt9m$inT07D>3;Lfaq`9_n!?Hb5u*Kc0 z(Pk^*!i_4*?l1Bl6tiE7j`h@xN!p#~UpTzwg!JR>C?I&Me>rc+v&ESCa9c0uv6*oZu7V*e~%xzfHbWwY}BEXR(U~Xm&(3) zFq%e9M*mWqo4DO#;~JZ+N#Ua=o;}I?(mJ#tqWY+)T*vRrIvrY4) zv9gxBV28?N;;v$6)B;B*xS-og%7px4gZan9d0A?L?&igrbVCY7qUv~Omi%;yU9q<( zUgQxJD`BV@nL+PkxXhZB`U{;eqS#^^x$+k%nI`yb|1W^-9*J-010-7@Dbebl>DP>6 zm63-dCU&#jIX+}VlrbR(j}-R3bqjN&5RMa)-pn#gPQIK~no(j%+AG&-o+BAT)7?68 zDZbX-ff~z17unTvis}8jQFXYf+?Ji`C6K00E>LNeZ=0v4y!p(6Iv@P)tD?4k2*|?C zbJbS4bR^fYV9*5X-KgQf)Lk49KUk@`kG;`9Oqw|Ip#<@Uiu1{<7G)aE?S{Qc>K3dB zwJsQJe08td?P*u)YN(pytiB|4MgE@1!t+Oh$+KoSqlvB6i*UX@v_Q35)x)Bd(T`@< z6~IS{Y0`jbPU3x|VpQ3QMC+V@-t%{p*pj!bi9si2ogQq#pD<%NVRu-s z`fIv(6%`DS9~JVD{yY*4r`g)D^{ZOh_G&N8sE}+qaJOEe+*;O}(jBXbDZ=;TDT5HP zkyN=p?o$Rbs?1o)aku2LCMyu?&~RBf zC7fG!N2`3_Jxr9}Yz#@KOCJ_8u@S!_9fwP4#48S}CL>7Vx`qc^0x1W*(}ha)rcEL# z8xZBu;o>tX(FGS}2~Jj!d;43j9DuKA*UBDUg)g4}?=JlR z+NrX5cf^$Hb7R17Sp--TtCiofM6dwMd_Jou@InmU)DoZh@#{uB)p>%OQFnZ*a6)HgjHkgC&HZJ&qeATeOYke&M^YXit{_3Ca&s4jbwm-k4A@lAtA}zy1$IbLIr&dj%J02qfDns%29!3FJ?}E^iVlv^g`nw z7T?(S2(I^RPXYo_y4}xo%qu}Wu2CaN>rDyD&5?4i$|bDZ8yj^2!T41I!J(lZf6KFE z=tEr9=k!|S;hCaIrG$iGzo~+j#y1QGb<^Y3SRV)Kb$8X?MDbbbhr%`H$e(=O#Mj8; znx0){zL?&|5|`bUSFgXjjwRdHmu`k=r>rm<;jxZmYK!Y-rssaY7{rW}N8zve<7KK+ zMyl=a?*5q=S(A_x&#h{t<#qQF9=ee$I$sJAkNq=z{qf(U^cnvzdjkHu)&19cj|EYT z*+8(|1;UU26Yy{UM8p?B%fR?TJLuv_wv6IQ@4i|u?sFew((X7$qe?i{?A$JihU%E{ z6ggYAYJjusFIs8xr|JLfJSNk9&rY-7{>n?>^<#B8Oy~Wl`?iCtm`(M^$!h(fipTA! zjf}ciE}BRuRtbC*5h5M zCOM|QJ>O1gPgKYICIj|DDQ=BhH>g-4fq`!>lQN!B?Lsj&4r`g1RadAe{%BCj*)Jix{2udT_7wwxs)wIS!cV7UzBiHNrpub% zk-Ao+akA9^=Jrb2UsCAbq}!oIFCUs`GzfVGh?_Y5zI;x6T-3=>rN_@?$tHXA{fjX1 znvrkP*G%g4HxBEc@9YJgd-{qUi^vUP$qEAKlb(6M7B;q$*%&#=vc?Hs8BqCfO# z1`?hM`ug;eYFv{e1b`eA+Km^^ z#NNjq6+7FGw}2T-%eQTb%5R^D=oI1WV?QL;1x%wqr?#p%9wel!NeTJlX|oQRS4c~5 z=YG0R{Y3P&y!;!J6z{8QqX|i={cv|zsL|y;+M)j<#R)u zfj7CMk**)~t9M()7iw0pA;_$AS#h!(OohNey@Gh>R|mj zNsafw^AJ5vkp|%+`7b7cZLJt7{b`%F;*YxhPFkv#x_nin!MJHAPm=~D;z&vb^e<@7 zNc;y{rGG(-3dQuISVV#D*I(z%w@T@!lw_u7thLGdv<2(=OwyO=(lhl(nY!+xB+s{@I*n= zpNB=&p~RkK*jR+P5!Xq)XP-r%kHcbe0?qVfZBTU9kMeVnGcUveyCp0K{+*tX#T8TD zPDR0E z1I~qKi9xrM)XFOz$g|M~2I((P_Jf4x6arBOyVkua_j4OONI1tT-oW5dC8%pn@VKp< zb8~Kn)3TN zf_Kkt*qwX%$}Ri%*KTtsg0${te7*jwy3GZ3+>TVvP5e|3u#|)Ts9ooMXp4&)IR&lv z9O=wy6ZqU$w-e>myKK$5NM6YZW>pB|7QyQ`Ke_*8KmmChF1Y?J^r&j&2V{ff*G(_X z`hIefZC404dgG6GzR~Xe*~kM@?|h}b^aJS+a8AM=N4Q`IU_^hQ6`j~7O446dnQIx2 zSOryKfQgrW3EX7uTRavFf zI%t;6|MBpR=;mwnF!B|R25!CC617^qWGut-K`q&!a84eojsUSPpx$OQj3Q#GD{2Tl zNN>vLSQiqL(SQs55_MSv{WfiW<+8>BTD6l176oWb(2Z%tW!u9b(H*__&%mGbNjKg< zgR#Z>DSmin{o$GWX#WU!-0!hD)@kLUD>I|Wv0^8pYN|AXGMly*^3CdV%k`o&Lcbyu zAzAvPiE3-GOz8Rivmaz{x&pigPnpZ;$NzxiQ??(m6u!VcdbZydZrz{cEU-%x+IJ73 zEA0RnMRQ)ct29QpSml6vPAb6ak~47ZxwM&;m;=!GOrcuJLz^) zzTWnadY_x+a16ui77<1)vEr;7?w^{&TZB^&eEBuTcMd>)yoGJ?GLUp1(Jb#qn<$v^ z0^Mh!THE>`ZwKb*BeZM%*M3#}ALjqFMG3(CA8Q6KPkXqvmytLFLBPUP4*DPqj~Hc1R+iOWpRO?mHYHRaMq_ck0OnW|`}N z&hSqPbofQAS$h6o@T;>Cmca6QRjT=*a%WZ3`h6}6ENOkJe;{e{LVcr5Fn4Lw`em&j zU8f8!8{3M4-!$eM;D#v!9AWM(jQTGuJq?kopSxkMr%Oae&U;d?#63SA%H za%!_JR_0Bi6uabP_<5~_z8Y9t$UVhO%)Gsg{F5aI=6h67WH=2Z8ucye? z&&}HVR6@AMkZvRwrM*D%*xJNezCg)pskL8K`hsl;a;<9Az3Fc?v9NrCx5<=%be`NT z*`rKLg-ezC6fHRUWnwI zob1?}sDNymYU2K=i`n$ITT@Djvm*BvCUR~8hxUmiT3t3>$0?tBMtdjc-WriFahIBr z%{}BnDkANj4t`8a{u49J1ra4~$hZVS}@oC*PfLyRk zHD)jhnaq)crWFk?4c9gv@AXig%IU`3GdC$s@jpex53lMS42p`V z$`>NK8@}J3D@+e}6Lj)r@U+L$<{~AOFj9o`C|3bVhcJ!Z0r^;gt_P=2vs~4CdEyN4 z)#y*Kz0$+~9tfTI@Q#b?*h36D@hAzjuCUO^pACY|&a<&x{qI%0=dmpxbk}Fihga_` zpO{xp_4;;R@83vw-oNwji~Mm_BY~|0B_{Ltd~-J<_H^N6>O+6_UQGOY#TzMa>zD=W zSIL8?;-%~|c0yJjDNnkm)B170w;wX((9Nqv+{+igr9Jkaf*{%~+R<{80C+|GI931E z5>Fer^6x!q4}!Re*(Gw)jrOzl=@9=Ygyj+zFG$yp>)VOFjlf#uY#y(ILk=T^x{}p7 zA?}jfiU7OjcW5$oP?dd7xt8;*D(mGOVdBe9#-c}I)a+k@GKPayPhJpzkEaxD!QSN* z>!MkSi_{pdb46N8ihUcPS>?F<&bT-0k10BhqsYgrUK6aOs_*1oUeGqU8M9TU{AgF_ z(cOieU6tQTdZL4=LX8sF5_Y0Kr#?v6x_b>3G0J`AcZ~FxFqJQPFTX6Sd=ap!YCop@ zNRd&k{w+seG)5=7&pYQy&e)c6IV7GNKFRg+S@Vt^RaR>^G9JVB1?ZglTvsyv?ONIN z`-cfbLd!0VO_GoNuBqI0e&X2_$+65ILY&~XBQ~U*TW*NDw-UU{cEKL7gH6BJnqj!V zM>LZKfCI~ioHrM<7?HP~f~RfKCB`S-#;623@9uUta!ex+_-F8O8z}1TYk~!anwdLD za$a2Y+;@&c z$?qxlHId$6w;`VsL6lXWI*ln2&EgpEudU-_QrLOln;tKaqQ|TCZ)2x(!|w9c^gVRe z*kNZz=>FK%Bkn`+irxKvikiCx_c|H2SJtJlDaA!Srl(H_bP5S! zu`w$8HkdnMEV3BAU=}usi>g0FWz~oCZckoNR$nhkJmk@8+)QE8`v*0wne^3?gPr#J zHO$I%JWyC?g^3Ac5dm=OMk9zWw+|1l9^2~Ux#qQq@4kYiIr>(uJy>7e(`k5Clj6)c zy>fPEGsWRe!Pdg%Ke1-D`>rxb};#`|a|hsY-o{5w_7uGW;r(+J~9{MdpsxEcHUdE+C})42mO0>z-#82ZPs+K{;LJ?Xm=IZDZ#t z_IFCD(hAY3;e33RB33DlZ|Tekh#{Yr#1SD~#TV$Ban|-B7tf&gX!uG3^>q!XKZP(H zr6_8_I&$TwUB3tPdxZKz-Byw8of-c-U{PT&81Z%S8}Y#Lc~}i64~^OO(xH&Rhe(Ne znbeUGbx{f%v3BZ=hwaxi2aPL>ktv{(H@kUGFZ=EQxw@*_t@D5De$m^_x|?i!<0g!> zPz%K>v%1Ow{zPbs&l~YG7NG7@{}v;}iTMUGvX+>$x+hF*`JTNL#v_r15B#_1<_18n zTje=o9WwtP)LG?Rxfb4=bgXZuaTE;(mBR;~O<7t3>nW+1&Qw<@<1j4t0$E`*)2z9YIe z2{+Tx%$*K`H&IYHvUk(b;FMALx625*tJdLqXTC&7{gnHr=hE*YdlGnMTRf7hPnOB; zyi{fC(r-^5o>vde4pmk-H>BZ@`iwEoUedJ#&j&?UV4oa3zNT1wA}sXhlV=h8(hp|@ z6QT>B7<`lQ#fxl)IkRl3J-MsFCf!|(+X#7J=tc5iI!lL&a%*z1UAl4NbKF1WmKrTi z)jIL1kFJU)-umFI`S|)70DbXV*GXD@sQ%B8-(@G=HC!%yi{+7eB3crjQz6ZBm@+QV z@QH+{2oJfl!k*CH>>F$F&oc6u7pB#B^!-7~;2FN9R4o1d*Kql_=q_pGjrKkM_I-EH zX;FNL?Iy-k+!{*EcvI|An0mkG*Hh^N>UoD95!(@6F$dCCvX zk^?o1TBCVs%(nIPmE{cw?aNavZ+y3gPqsZw8F?UY(5K6>APu8FdW7@4*bAIgd!kF} zi;o_?zNp$FZ~yBlXc5c(rJBLkZ2j-}RI;Id3KIL63rqr7KE!RFGsK$zxO;aIv$e%t z@qDE$No`ui-b3F6*dLG3%R#uWTkx}is!oojig5305; z*ayvqpW0fYRN9Jf8x!=TiGp1FP`_z z-YWQpqN~Bf21%#8=EbheCCI!*^W!wHpocS&h`?@!A?!B3T>w`)^fz#=qg1^d=LqZxq_GG$B z${k{T!u9Ta`HT^or9N2>lb9cUbO;j6f1{5;Q9_4x4Rh`}I$T#Lg}i3@2<~b=E)%2m zsIp7DHWFFF*`y7m@-%kUSu%d)lQ^E;k2fpy=5d@Rqi$C#=bN}IXP>RymLiu~nEHw> zYguE4f5*FA`IG9#Uh;bi$EBp%^R0ohmS_mSB6i%7Qv~ItQ(bk6)Gih;$~+1VETk5sE|u-@c-psIOJ`gzg&GZKO?pAJkaiRA?1dGXOyLnqZq~lUV zJ-~4*yZ32!ub+YEZynq7=MqgC2co|uB$L!p=m|NxzMMkQDIFcNTgL`c0=WO#vdXCC ziukh!5xRQ$_?Y+K_bmPL^T)afo%LtcTD`u!t8w_}q1wvrK-uydwO&!^PpVkw2GMm@hekC4dWuoLp~EtWN& z0Jw`88DyM~vL#9*L7epiNKdmkJVk@DufH2 zJwoCzs4h6MO6y_uO{#$6MQo_q+yr>R88FPX-=|~}dF9d*yU5dbHFMJH(oC`@cKL@q z$Bf@fb6k`5imbnVnD7EV6P1zz&F%X=@S`?a{cQdXM4qC% z-9=$zL2JFx!m;u9!N-riGUub#Ic>@fT@v7u3}#K6Fty}eF&D_^TZ+2v26>-PYz10~ ztDhbZTatNhwDqXUF5ht1x+HT~9h-alsc*n5?n-=DvC}F>Rki@EW;a>*aK~BIwBWAT zX9erhHe4+qo6I04M`ZPZ#9FtPE_>$MzO*LCJ663fM^lXTSzhh`GsVa{2);O_Kwxp9 zEq|{cKUI+3_LF!+@cVKa$bXaofF{bgXSz?WZNwPMuNExLTa;X>2_qYMP~Jd!JS#)k zy#_tmB~p@!6_<4yd74Xts55C~(B6@z(_0iizzAz|i`!p;A#tJm^~O|idH;9?_IkVmE!W+qV-~X zyUy#$=Mp+9+P9r5g5I5{ghu>+a-%|~e&YU3y;&~q_uw&0kw~G1m;2Y`&(>b|e;~nD z@$KZ*=S3}~qWp^6x3ZoN$-w(e$yWR&qoyKO zj7hs)nB!tkf((F5K(2}QMd;&@I=!-_0Biy8-edtO{8_i*#r#I}iP0tT|3Cx6{ z7uNYX-amH;sOr~(9h1EEwwgWF?WY(v%0+jIbqtNGYfJS?42Ly(5#U#pv{SB%dLF|d zK12Iqh|{6Xlz6^_xx<76isENxyH-#)Dm5|0#`$U30?5kO@vRPy(`}F?7dZNeHHiaKBuEyOLIXM!#e?qvuuNt}F|w@+!&OD%RAt-|eM<3exqRA1eIb zV@r&h>kg2i<#K6_k7M~XiT=+{+hym_x~mb2UB4%2V6|REm-|f6Nps)oiC^@op7R2hz6L%6D zdx;cbhAX!HX8kaJ+R1&FB3Ny{?_Vb|$-Hqrsh zd;<%md!ulX5r7gQDI^M-x!DYV<=U zBl6SW8M-D1Hfh_R8LQ*oS3Is2P7Fi>?*_E_>uUoU?cgTZ|5zv*qUa|lHcWtZGWbi zb!0vl>nb1GEN=xeh&@BX=N1(Q-joN~=B?bj_imc&Dn#>!$&!1YdJ_H?Jw9j@Eja{M8RzR;0L z|9hzurkTtJ&eV|M!XJswH!U^CdG~;iV-Nf?Rq9h#Bd(4MSj9e#`JLpbrM|@1)Amng z%Idva?arA8US_r3-x@>*pCR%)Wvj{@9h=AO*SK+8v`l`FO(?tVdL9J|Q_`H4GB>X++a=e6?hCB_4lA0tBjQGEi02_|y1~x2Eua?nm7JUIuTpgo z;B2St^@9U(wY7c73t*i{JQ+22klTAu zI6%vo^Yx#vec*Q6#~KbX>WcwfKQ_;q^x70A-1ye>c>-binRq5jDtmuF>{aQTm^C6o z=YEsPVQ1SLWa(xwKkcj?w?I4E(d<(Z*^Z|DcCvH!4RW1gM3SHL}bLlG_uwx&xuOIo87p;^ZKWIERJRW!rUjMid>89EB_T0_)Y3W zpJ>4HE<`c&j-BVfWYoXe2e0Jdy72*{AI5Uw-{Sr}MlX!z;=ijCfKJdm{Z~!-`i9U` z=u5!`i(uN2ISiTxA{+ZHq~p=#65JnKkR27}Yb4dcm4mMF2sJ5>c*p55@zK8V|L4N~ zBgXC+obJFnJ9g=GDc(+aHyIMwfQ-Rg?xMCp|PRDmp|+gs|(43RYV3S#JVZmB>?FOuf_(TVkS84`|%6nR;rm8t>t=hN3{g zmb<9?BXfyd3hnq1@g4faf^zQYJ4LLplL%UuWRsG%OMkT&^W!o6?;xpQcg~8kIo+zPJmSD+7Bo*vicGKD)HY0-B_Fc(6Gv9tREopoUfR^nQk$Va$LAR7+Yb<@HQ3|S z`u!$_aUplwKIn18{zFer37Wn4?(VUZ9DB<7EJK!TlyQ#X^4mTL>^uK-!o3B5NvGW+=Wd7+bucB%9NS%z-cBm$cj)@6qxeaD9XwtJ)yFIFqK!UVuS@Gta z4e(6KbS@WqYS(r?x?It=+UU|vj7r!M$KY@_;PCkQCZnfE#SZ1aVkh{&GuBa~#y>16 zteD3sEOJ2F@qdEWki`5GETDT;=AculkA=>Be0a-9W&DAv zjq10Z+|S=K&gnyV$uj37oUW-ou5LRaF=At0_+sOSsCveGb&lH^;CrO?rlJhCu<|ix zFW@+pgpmvU?8C@tapKAg<1D25NpvMlFVM9g`8xK)RFdt8Gv>&v(AQ($|puGHc?| zIX93DfczdDvTCPT9y-MnpD^5QhYL+(Y`*M1FSngDh2;} zau|Hhtatbf8r?(6<0*B?^Vhwkfd{uT~nixaP$dJD&(`U_0^ z<40dpFni4@6)D~$e>lI>-o`nK2L70;`Quo_!AbxyQk5S5K@He|GuQQ-eX<7@Y4-*KO zC>BlEVf?DD76^1TM~r;9wfwhZyQJ@mGVkle(%=gvMovyjiksa*a_dMtKImnHOw5mQ zfc(|-qd(+|$0!<=xxtE&&@Fz0pa$piKB*M7?)Z6Wja7dr;4b z%8@7>MWsYhM5U=n4++>1Q4kRjDM3(Cst{U885I-|B??NB5(ShFA~jU$oq+V-NeCrC z2w{OSJR_>^l~oGEb`5*;%N@3$b+pD?EYlG!-b4EY630wbuH$pSvWln^7lJe zJXhRh&AdS*Z~iOfFPu2NuVT7D;?6(9|38b8ot4O<^vI*+#EU=weqFx$ zLG$eZLFeaq9K$a#bl;J4u35ap`>%a5jpWun0fh|TlbnT^IV}2V=*@k%@ay#u%y|5I zXCr^kUCBa4tj`75?xH?UCuZhF^>kry?9|q1m z|9j7hQfK_+>{c;RraE7*pkpboz@5>rsefU`3}3n7#Fvi{^ar3_dTFfdw=*EDPPyS3$(7D*VIp^UUFqi?JH5K``h#nNx{t1 z*msb(3Fp2&PG$rM59EDZEDC@1sq+B-fBEW-(*aPA=Us|(ty6?TdGbz*#$Ae> z&$U;$LG>qberI1ks@x?fYbciyii@JY-5bmOQ~6}_8>a=ey2`2O}Km<;n7~MHF7~eep%$Q5_#%Brc?LP?BazJ?>*P| zWrKY;h9nOxJlPjGTcwV$yX#eI9D7xEqM+8>RJOg*^UR+%oK=6L>h5nJMSoyt zBtC4gYU|)%rrjjDdwQ>_%5!1n-}8;XW$Dl4<>zJkIa0>0k^4Y@-+5{l@7!v={^K9F z`st8Lhq6`M!x&#mCw+M=!O?){i`yq*yYtA9hUM*&KP$Rdxrada;p`4=%wGe*sk9Qe zpN9t)=mjb0!lNPXgzV*#E9W+CNn^;OQ!54Kw*HvLu$`XyfokbZw^wyilIJ9xpM-q$ zw{EZZDG_>;J=AbEOROe@HeBy1y5}j z-d;&d;*2KxZr=Df6X|#15%Feza@CDf5YOX8%Bc4G$~)d@sl!nA}D@w7MPr#~-^Y{?+ha`TsPm^RI@} zsd1{`#1sM4u0Q1e5B_AeKSjiT>iRr7k^AMJS610iZjZh{dQ?icNJjV`c12b4+d%rN zmt^9p^CQJ3*!7oA+}p*eis`S99>nf{^|EGnyY5AW*II?82Ulan-`qPbxc%;s=Uh?( zF%hDwH&Z#4kl;-sx^^d-?w54`B6%FP*JoEbaO5n-TqWhO?9wv&=WvXAK%QI1gU4Uq zKfs6jgkOe`;87M;7M^Pb<<72C6`JfN-kw&tkjsJ<*C#?npoir87T zqAxWIT?LYX1(UvZ%ib-HTQRKjkEl<7%B>v@j(!kaH>P-Wu_4~nJV<}#_q$20@(QWR zMSBOJ&JLe5N4RGH#y>`_sp3@J!wD17&r+?eBGaymeJD_~g*$OpFtMB;%W$<e2p^INd34VKlQ4Xh#o6{;c7LyaLYat1pir9?7AN7Rzc|tF~PSudbrHfu|%N z-af8@(CZhjgJW&y?C{Q@gB`f~G-}G#b+~N%@*)kUcko9~_>|X4xbqbtO}C?hzbFH1 zfV}HOct5PpyEX`aGLQY6RWE7rJug*23F}d)xj_eIMI&!qn+KEnl$v_t&c;6MK^M1JKOq85>s|?ol}sy zbs2mE7?1d^ejs;24~Y709&?&M5c%8t)@i=Yi{JQ((|p~?-v#eZ^Yvex8QFaUAX{+w zI^T(~eW#fZFl`PqNL!BKa|J}VCeWcqj;~D`U~Wr?1=AbSiL?AIq$-gxW3%(^)<<(; z&hcMrj@s286V*6}FY^bb?Kg~AQ{unNmOx3kW9!}_eN1)o;9{T_ZFv`Ot7jer3ZNm? zJvT1wPDpMt7L#s)?$wsreB(E=kFIPB9;YR$KJ@Qs`g<-Y`QbU<;nynffSo}(i1TEzd*GWTqyrpAd+WYT>%FdjxM~W589edlyQk`Y)iES=w)M!LDx`x-D62z~|&v@2%gr4}r z)3T8y87Oss_ww$*{gTCN(63imq0c^^GYN7m3}MOdaA2;u?rL}CPg3|rN1B3XPl^?* zDP|iR8eTnYBe8r#P3Ek;`nOuKmO4v_i1+j#*pT$UfUEyP<+9S_7PG`OfYihPZ@^Wu zgD6{A#CxhHY7-*{QZUb9;VPm$we`7llfLwb6_jIt%L&%WPb<#R-?zUTyw|!r*RTU} z{|Dt@mgnfbz=IdV!3QxFWNXXf#LKK-`$mDlaYmv@`)%k($?OMD^@9pUCyGWD3b zSo3_>?=C_zi-SMk0(^ESn6B-)H4q20Pc|Lk!tN)>kutKyv$EInyIbKXhjM?KL!6qy zR(Fd$ikt`u-i!#_wKjavlpkg6t}$p1vxv0#t#;RyBuM?s1_TS< z$`NZ#$c!Hj9%b{E*6l$d9*D?1evPqbNdc!SZyUWf$f(#}%<#wls9t*HpkAVVf4E^) zSDd@N{a56emx%jBTeTbRP+t?`+3;#%>Ie`h)Q{Dk5P~Cx5qzNJmp2XQ^SEGaV%26p5ed zn|SYATTAd2dS7Ql5oTp!X9hh4RuLnk7#@x`AuumG{-2X$Ov zx(HMveip0=%Qk9z)yF)9m4|}T5EZ7}sZyRaZ*!tdNV686;Ie-wjR~dc!aPJXd|aqB z2ZSNoK}>RUU=gAlJ|=uKz&%o%&gBwB5O>VltL7a_wo?pKZoWyB@Ih@AEg930GE>Hr zoYHM$;M&yb3npu1fNg>^snKZT*G#E1&2Md@V9Rm5I3?kyf3Z*Co14(JO;aJ!BxUG? zlsKBb@R7_$0ee!+P?LC0$Fsn8Qrc$RtoRvt0hryf5&MxqHV{N7nTXEmMZ|(LFc5iq z+#=)5R9ul@6LV&PyY;sAiuWyc&BU^LU&2S)oZTJu8Uo@vyJj+ZlaJM#_zaHT5AGVoF-uf|p9iAe*sGlV`md?@q0fv^blgU`;uQI-iD zuTM3C{sQ5EH*RxrJ8&}n!NDgt*u%m39z)}~Yo51KrH%$v6KJ7PeBmv-45qsVp5xb@ zm_UE}sc%n`*)%8d7h{u;s!npT)L!v(w9$UL2$FcD?>3pO=dzKXjn3mKtyU@J5ef;W zz!ZwR;=)9>19~s!;(smiyDZ21WworxI%~}qI)es?x0lV0&s1EK;JJrJNnWtV1{ruu*W6$WuRdT!PK?8diCJ&Elv42s*E{A?%k50^^p_TjR8+&E@=(Ba_FkaWPagJ8j7 zi2tm@Dee7WNofWQjgZ}NIl(y5T+xdMR_UQmxST z#d%1zdLC)Yl{Pn0oGkct4^9*leK9&1988-kX^=j@SzmM}9YVb-ryq}*t95#T+7q^! z`vyWq9IWkMKQEIB-tL{FUEW+z3mHB!3))CCZk!4e5r-f$T&kk_I60#L1_!ob^Em01 zENOnBy0Gc^=$Y#dvym$mvc$g^)+|MDM5rz%@l}yx9x1}PPQOan=&8r&3vT z0Sa!`PXA`}lbT2``amfuhSK1@WoneCnV<{i{Z4^r1Z`jHt?bBVucU`S|uvDF2z zQ@iaW$m7E(iFpepD%^48hP2#F8+Dds3f1Oh8BF#z7>8^ko0mVaf0qfEeLvq|#~4=R zd;^KMyo<3? ziXId}mhq0Bl=i0~lW{@#coEDBejO*bnE=|(Y-qvGrdYr?Q!V3y_Um7Vk~(N6Yra*a zMxtT&EkaTpaetVZu<^xk#2oq~raQt6>YvaevpEu10}leP`2+JIapXCso-v-85D!6y z)AnIsCIK1>$YW95ed>DT9IQlDZ4$h>4}4v2QYK|5ba-hFS1`v3irLcZj3IZSL?9hW z8?=1D;tgS^xV+zD8#J6eDM`W@ZW>aXXed^uG&c~th58Ml?|`fmdzE~)j`(kelX*Ga z)eHV^#)~&#*A3RrFn(BuVR+C$0y6)?q$`jLSyR$O&cS+>=n7HjE5c&}9dI{Dy%l-_ z;%~G#$gDO2`j6u*nK2a@S|3;sc{~bvzDx(a2KMRPqff5~!=cif6KCK+kjQ`f1x{_~ zK+ZWngG@6k<|b~^5^1y`Ge6ElH6ICJA=9!Q*;1kP_Wt5Ok7wzRxChg(X2h8lmfX1%IV ziX@w`Ghp#mvd&_iK^PdfAC5XkKQ2)tjx%qI#ID;z;i9>=t;x`Vljl)seXhl6AyCk! z4jB0yB-dyrAB-`l05Q5D{WFg5&8wE@Ze7rbLp5_c!|1*0d?Y;HcolODW8peEtgDXv zqQ)+i_jiHMzu3B!e5)%a*hei%3QpeXQrqZ*V>#P@65*rbIzKRv;1(so0sHll-y{OI z_R|)OL%!9LzQ8$u=z7a78bQh7q!&S(x=I1Fg_ht+aYsCW4l{#Rt-l93Pqjl`fLLZS z%!u>HlFZ2{-Qe1V$p?55g-IG~wtk*)59~N=$TC`KbRn}vlhCQCKz5ejl9`*eFPBaV z31TULeTEZu>d|M=Vsehu1LktP;pD(Au89G)Po3SC} zsht~bU`zT8>w=KJD#&9Jjz7Aun8Js`ffjRv&Git+sfO&v$Cu0fAj|eTDE`YW8fERb zx{oO`lKHnBZtE9fu{}v48ZRfJI&r>E6~3P$zl0=noHqYh+lWp^Q|PC0D@kQwB8in? zI)5VS^-^TjVcNEc#Mn-(`-h_(&}}r;NW`8IEeyw}CV22;DrOf2rS9K z*7T2EjD=l#(0z5PJaS^+_>{A2%E|p<)!nZ*9gX2WUZ8ep1Q?kH^O=A54$JtF(W8!4 z8zI`rPsP)}=?PK5AX7c z80rHUYk3`B=;*ss5Pn`h8M+lel+jWZkC#8cc;0(9GYod983s5{WVWzsYMkYLL^n~R zvvQyf#O3wYJT+kalTKst_Owi8Fc%n2#;{q1d>Ltal%2VaNvm$WB?Lj>pY0$F`z`L+ z*3|2tlE%xe|YTyal`_xW4WjS zwB6)6Y6f>g@T~;#+81GqwZ9oPbmj;?cyex0-wo38NqZ1AxZt3@R^E-y3o@hXn!6!} zsJe^+gXF%M7+cLaD?x*;dEQX)j-h2_rQ>~)e;%!)hm%2iKxs6aGgtZ{*p)xTTn;uE z;+St=-1OU#A*GZ2>$TGRZ0aBtkUEkyj=Ho6C#f)UXRn5P!d9&oZguCw1X`tqSrfm04AhMb( zd~9apz7WOq#N5iph+-8x#75#`tHfaY;;xP2y~`UQ>q90FP{NzLQJ-@H4o>7`0ygtMckQzefaMK^dqkW(FmtXlbu;JIRi<+hH(R$- z;f>prWWpPaefl=P=p{r7IBw=Lpj0GZkz3o3(rVATu-Y0sw!KSna5C=x56KUo2Xn?4 zN5+tYNeQi`Efk#1yvC877ag2_q|yO{fVVG)^d~F|&G46BjA{3*q0R06Q7zx?t+p%f5 z0e=a9&7dQsqGyyvJG+h z40)_7G=1xf=9S!(bs#61U_Lk&JAAj5&|Y)s!|+8UdQLYOw-9d~GW3ExkdQWziIf{d zt5;}OZ+spl*>6`Wl#FfbWumB3#Z_4=B2G}^t9jenO?waPv4o+=+Dz;m|70)o%Gm=E zeL)=-4p@bNLxp3=+jfcy*tLra{@amHdq%Sqz17&GWBF;mz)zdIy_F@ZsT+CI*4MTd zrDOufbYduHOIq(;4kJaKAM{!m6Y6ODHDKhAf=lB3v3XQa3n74=AHq8X221E%whA zQ%kMWeLiBBZUq+}A?+$55W`ngtu4O!*Qr%>6=nUUzO257&_2$MC#seHHeJ*dVn^g>816`>_KDTL?(CSQUG;j=c}1O1h23Af?6st3iURMsYbqcQ6xyaxHKrnax9PIxUTqe@Cus`x z{%y`j%FYs*UaQeg#N*tGH=O9!n-A6Q=$5`r&7A613HQ>~=*>w}%^8@-ES!T~wUAhG zO(g+EAAzC1`NNg!c`H_Ta9TSe>EWsVeu`XKff3xg1C?8Q3aKaxOBfwDO(>zh6R(*+ zZ>1D)>W#|6k&2IqxYR{E^=y(JmtF5ozv(FR@t(f>ScIkBCu!t#l9&80P_XIbSm*Ly z%OxAn?2fPrDXWJgvIkw)OuKuH9v?duDXjx+-iXdhjikp_k3RM?2hFut_aA2X^A<)f z&VKv`E0KHTPp_!zFG6+sdOH9krWTQ&yFL_COiI7OyNnv4PkfqB+V;Qhc&uah%>CvP zAxN|R#@Tn*E8`PJ?=?@TV1~n-qjzyE`v(T{qQ=U19!*1I1~Xdzu?s&iFncg8cfRfo zu=R~08m;|$_GF$n`h4`zfI-P0FwJylxzgj{^!%S!?1nPXv5ez4hGKuu{{6FLfKmC> zld^cK?T*}1bf&p@e5=I@zFt6Q;7Ma27Paejr4`8B_>)z1%1p8>nbEf5qm?MTow=Lv>{f zAo)y`SYGYdTIT|>fS+u-d9=*S0|MG^DCd-OSDw9lH^G_Uf1>8g1S&@PV=hx|We=g_ zJ(DYJq>xFP_?Tt4?*1+V6N4tl)X7!ur<$qx5iMKyT(Yl0(u3TQq$`uRU zk~NgEBnj->SoG9GI#)IQV_q8J9$|eVOH<$SV*e#stJb;)Y4bN9D*75;pS*ff`d=W< zRY~6YXa{4p!^h1lFJAxfDZXT4UMI5g)G5e(_4$^L|!q%8xr&K`h`MP zj8oB7P1`-^#ulz@$qYu!S)RU9rnR?M^IrXqUUq0Gu($W=_4+TF>BSFwKm5LbRd=CF z`q9Tg`!B`E6W5bRX}h(u)eruaiFmpGYLmRz;N!5mp9T6uj|rpbmFt%MvGKG@$1x+* zYrnb!UyKy&nA>?yDBfd=y5Y3Z@O+^!HQ6oYxtBWb z^lE-|ukHQ5hpo6Eci`e#P{XY6#JfeBQ&5XRyG5~)8*-(uUeV5|HhbnVvQM)IzGhkb z<|wP6oztyQ(>;L*X4n6bth{H9D9OWV+&h!6?5PS2TsJF_WmS=a<_R!B#{lbba zo0@#dT9?zG*&Y|~x8?Z-dP6FtnXz|%zuxqT!vrK8)#_x0bhT8`9>zwC%HBt0uH6j9 zgnpu@oKX9@fi6R)(4n>Dxg_$4X~g5578a@bO80MszX2=4 zZuT>&^I}V~zQROV-`YKUn>%3KgTP8mHToaF4#%X}vpKqXj@CYtIwK+U?dwT{eTvwH z?d3btLpIkTxX-O8*yy9hJd(>9OV ziEB&Dm{;s%4TaY3>x3&kEE>C(!L;pw+!#q{^{?i7?|O7wD1NS`xhBu^^wr-ou3IlV zorZTLKgypAbMjchp)96e_Rj)CuLnn!TJM+mT`?pcC`HFfc!;_h6_d-g7v0qEcWxWu9L#e+J)6I|lHvaMH4}`*&D&PGZytM2 z{+43xVH>;Vox}Ml2>J>$XR%1=sO(&7Q=67m!y7y zI#Vo#pmVX!|HxKt9%`~&Tow4%?^=#v_}-0>U+mfCiN5^DpkL!H$GiT2jl`LIo0 ziNNL`F5*%!-q76Xhc{XcQy;{9nKm|Mo2aY|H3-38*#w0rSD;(u_V*u$UbA{0U9Vuh zba;;Y7Rwp%NH&17H1GAu$lMR{v?<@PXxidnN6!-wi{KLSDXM`wTOR z_n=*)j5db3!??-kgc?IQENV=kaeQgWm&0021-+u2h_SyVxNhOXiQX|G{!R-+r^TXd!iW zt2IH<(-~=MORXkKa*lTa|9|Go3dtB7ySkbd@$eVie!^*Yr9stApL%FC4Wa5g0dYsE|4#C zFS+bcAw;)47Wr(mrVxqz=&v)TEwABEZd1VnkA>?!>&DHm;cmC7_<_d=&`_6P1Nb^) zt|BWsg*dcs6mkb*ugT5Go~xMYc>Nk){Y+Ly(COIFrP8$qcO%YOphFRX(+31^VD-wJ z{QeX2DSQ3FH0f*doml)bCpr{TuRY1k%x6Y14ZbY1=QLoc%Pw;o@`H@gjU(CCYIx>R z8g{O_8C_TIQdKJ-_?8(t7X@tOzcnvoMK%{`31ylyY$rj@=(obMIfG_&JIkt>o4?^T zSB=ADZ&=S+&0&43+^Q;@GY->U%{erqA6E4R(I5qfX;Lm|_L?m1++<)>+&iY}oZ=jR z^4?pfc3RsfWiFzWC9^FoV-yMDd3e5hDTgbZpsoR52gZbWYga%>zXb@V64wN^M`-N= zvWg&!Px>rmGKFoMljXuAbG1Q$XH~`;FggoV2~Fs=4~3T>(`dqk88~b^qAt9$tEOgb z)_cU0=RL|V-k2=pg17$`J}O&+2bK+>o4j&_`4fXAP@r%i2r=x*uR$~E)=X68Dhx8} z$wV{O0N@DCv=VWV&s-@*jn|GX(q|^L3c>>3ZL{V|y67iLx|qGAi~MJvbl@27a50(Q zJDM_tUUtxm8|vSN5)fnb>bqlf!98sDfN)}TGHhsY8;3FWq;)I=-$7Pl>`3($MB8gvug-lv%PaQ<7 z@r_kQF#-!!v|n*_8%Bri$)IsUHg8M4a`h3_J)JHmw1=~HhUhJW5W#=Mk$7~3px>Kk zWh=qNtPMHxqYC7J<%Ju{Uyf`P((lQVSmy%6h^!-J$m4@j0S4bAi4)`F zYCqLZJrf<;Gfv$DwS^N1xfNx>DMAFpn@QFknzH9TCM^5-<2x!xU}lMdIo!$tPDZux zs$j&-iHb63lS(){yz<}{U?KUgH0~Ppg)YuBQM6?WWA1!)^XLBhQnC zE2GT-HQYGNEE{=8U=Ohj9+0Z*Y)Ijt3}vshJSuyxQx05x1`0lgSs_*tb@Yz3HQ=%K zov7hsdP*g2JCTAULQpd`>P&TK7-%u5bmoO_)GgU0x>T)gx>>X6Xv1s#zF9&&5Bs^j z0sOf7vn;ZL^6<(juD7*1`77c4P{#&U;#^CS!8h%Ne*p)>jT^3^VeqjTZ{VCbv29AJ z4rBrtN~6!F@GS!dJ1Q)Fc$Aj{P}BR7OF_H7`-O)jgh33>aSQ8suxOj)Kk7jmU|_M~ z1nkv(9jR5e2)_Jv=VKUC(F_Llm^~&q;~3TF-JJo`v-6SuJo~7ok3kX}ZKtfU94)j@ zK+pNH8ma^air$fAiP<9wAe>-JODp)80H8{|*NI0xFz4ADf#k#GO_k4xF=QOs7SMpzs2AQ8wuMS+#*zdr( z0)hpsxhi*88;IeYs2xvVk)@#ED+rUgsyxmT8U)V89Rt7Blb`yD?WVksTfG6`F0qcG z7&4=0sNV!A`SXy)bG_!b{4WRA)7H93MqARVlK#g}&BH8Oxb>&Z?r%$FNNC+N_@Kj{ zA<=IzTyT_hT3)3o<-4eCV#hzHbZ+1k;XL)W&T-86@YVrJXis9o<-t9Pg4&urUTgz1 zxE)Pd)c!+)8gjmwmxa(6a{$bwOww4X<>|Qx{`%B(&Utg1Mi54QhRh1B9uTH#8bV%l z{)zq3Yub54Uf}H&7F3Y1(`SVT?QO#?-f+AWw=c8*0gMtIwyz%iDj-}i^TM`;CPR8v zzI=Pyc znq&TjSs{>>hBeXxUxACZRQ{!NtO^WhHDh%^pZ{EccoLEyhW9fRf8x!6K!Et_F z8(L-s?Qk}m?*(&6Uj6ajzayF97^*LrHCHneC8Fn)%!T~8n%`o##fsv~3RqB*GVLG@)^CZ3D&OaN?VK@)!BDa3d zvA>Pk@HmR{TbmJ)w)0M0aHo_*(AEq`F)t`(-Xad?n>-HDVh>Z+5#%rCv+G$Q1SqGO zfa-ju! zY(s~|I$oiOH1=2qejSGGQ}=JpfCLdIcTQ$ZrP(HuSOt~0!B}c9n6YWU2`!2mdPft} zsyOB!fmGkh!V}PU@X#&8%|avU*9Kls!!>ES*%ZX@H&fod>KsZB9N1VPVGoF&uR@gL z@G$|eX4X}HJhG-7&i@TUt%t|p<>LW|=RnDD_S71M(>01|rp0866M|Euk*;Qzt=tZN zP=2R)BUp6Xtt9YT8=n%X+oSFuk!C9A*Xz=~Zp7-(@XEINJxdF*+C-^mUWVI(6LnDI zN~A>eFC{YvV9}^{9Vxfg0sSe#u^GEMN4`18&~4=RF37KEH9)6{s~5yJn3r3_NCrJ~ zxGi(pM9ic)Z(JOXJ#XyyBa85%YK6=`kYWCwybBMTv5dnN-Gcd}9KGU-XW2ee;~<(o z!;n+=9sC{^FTI<9{t9nuAz^#k7#ks!Mcv95xlQIL9wPvY&nh zVnBTetif9fiEu5XG5iGIlId1>kfzV>C!@n*?8bi=fJ;f_WJYfj32997zaN)KqP7H0 zO^0liJ!zbt14YENKq;=SdzWH#*pwIR@t3b{_PikRC{pt5;rU)|A8HHuzFDe;Eo|3C2#3c-hodC9Ip?SnqFkbNe9P=tXAL8E@W}XzxN-i6a7Oe+h;F@28 z@Gg|w`wdZ6?P1u3eGiJRebUI{!+of~l>|w~qDtm5cI09>t*eo{^fa*+4*yW52~hho zT-M9+((#zJNonl!Pf))_D$%T;T+`XWP%xXKyp%%mWZz*p9e~INqvvJ55JuqsZutm< zZp{!^9~)BAmaEp&V$RJ{$mnP0=Qd`C3}z_}4FPY1EpaJQqId6F7!2bPG<+mN1A%u9 zr&$dKI*;$f4mA;c+|9;24&ZR$2J@*SS$IdPxAGLqY>a2qMZE2tV*E_@Ke6`a z0eu|RO{`6apln_1zvGicV|8jk5?M^;^#)+)%%f!4Fi@)YD_w}ZXmGgq%n-fd^#)p4 zE3)zw+-HCC4<#1mc^wH}FdmS=B3^Q2q10tJLe}dt$-6w>qkj=Dnd6y%$jlSdWCRiD ztC(4sonFdwNII~R8wp7#iLQp(@91wlyu{rNr~V3T1nko#Dvspn??`Y_kZb{NVR<8q z=$DX_1ksLwWyD)IoE<)f+ce}I2?0DH|G}{RR2AfWq$zPX6ztKLZ1UU&wgzkrjLz3v^ zpi;75IGO2sBP06R&Cq{Wvc3%wQ?LP_Jjbf*Y=OVh{IeCV77c46an{NEt92*sq04v8 zTLrrMLv1`+LQxxt%+gJv|1e^WGz+hs!1hZWI)yJjqtBgjg{l>NZ_I-7jy)Y|2JDkM z;GR(C`EP-Dgh^__N05^yt9l;{lOxt+(NS<|<7aQQ7YH3EU||4~GY^RaLH^yqRmIG9 zEz*~n_SJgEI**~ugjJVzk6zI}Fo$KUJx1Ih1}&P8P#z}DnKyY40^=O*9QY^W3DNR? zrfzH;u8kk7;!Bm;xL$|{>0Bo4b4}JoTdyBFKz-}AhJKBEJfoDemf+xYiPBav^mI8z z3viY#%i{u76J;sAC(VOtF`J~!F7X89g%^>`ISR;slnotW8&9n%1WzhG8)Yu1GlA6Q zUxaUtBBfBSAMefja^6`tiQSCHk^&UAazM^}z~C&-CGu zW5hD0%_9!|oc8!%PbbNJ^C=li$qa)c$5Q;~t_R}{7~`j%O=j7FqAfC?E=i+J5J)1> zCg1!JP0nf=TCeChu{;d6Jj1HI~ zuR);i1}%t4j;11MshZ0}6+@a``qTC%fWbpNwmVVvAXl68|k zR3JyhFWb6Q*ixJzAoQ&TSMIrYXSzSa-M6aF8cneN;W7<9>3cE|R)0_Msl?#5p$A$R zXD32S!eL!14O^Xzl!&a$@-+kj1ZRY6_Y{(gBm@p0$#<^(38^Gg63G2zS1(3-=PP5i zZ40Qg+EYXMnzNt@6r)OzTXohB`=%m%Zn?L6;0Y*2M)&B(v&MnJ@_hLm)M(gJKxuPN z?q%s`wZYkh-W6={DMC?d{{4L_`NrB^Bg_}IL)y`pCx2r*j%byJdRPJM{(a`l*?Hn! zXI&>Mf+3}o)!D~Q>3OlXT~pkXvZf>t|KB?^VGdTz8>O-w4mB(%6MHyc3;OjU!O5y2 zZe!l#USbh*DWQpI9Bk2_r;Nenzr;qRpv+YYB9-GjtE`5~cD*eKpTbh4ZD-$bZ%39d zF6(;tIhds8PIGiuDuAV1Q9kCnqu5R|uCMQTZY!ch7TIq6=@w*tCumQ*f=%I@u2bgr z-|`=sJ`Zeo_Kff)e<$0@dA2AI@-y3ueebM9S8SSUN8XzBUAwr=rI0{1>ffqrA8#R8 z*0V^U;FbLS<_}1M!6ORVEJ6^RYJ|<4z@R)F`BvJP{OOL#%XgbIDcg-pA zuzqIU{priXn`--3+n$x58+LgmO#Nc^C@K1Ub(myM6CId;_9gDq*wLY)X1P@d$4G;Z z_wHMk4cMCI7MDNGA4L)O=l+}+jDJd0e|%BLc(&a^P1clL;OMScW3gQ^g7w~xdU{hw zC2^n!GrIh#O{ZQgV-el{_CUzzj4o<7vP zz#jhlu1(pzn)FX*QjTs;vwBVL;(Z-wJMVdWcNkjjXiLp;^3|e}nuVZFP7IQjO+HiW zv6&0BR4+!Nl!tU<3;Y{fF09H8-5!s@I+Sku4Lwerywn~2ME9j>iGS^7E#lD0nnQLz z9=P{`&9m89hwT*lU1RJ#KPsu?@zc)DP?E;&3CcGu;MvK6wY>54Q9Af2?y%eI%vqrly<0!g@k;~;YyV6>YZC?ubP(4@i zIj7V&XT@M7r14taY~>r(nuSZH9#=Rtp(=Czbj}hI$Q|3o>60uI#w38~8d`7lA8(lxAIek*CI7a$dc?gm1ZLp%bFR^m5tu*+_-GajR@m>sC zxVH`kuU8*|S;#TiJ^2JRo=1KL2d+N0z*rd#ln$Rh>SYJ<9dwKpp9;=j_0V1Z?&^cL zib!)M&X#e++bY%URzG>ns15{n0kz*tlj6`ny;}nuHxy^SS9(DcR~hf{?0c)9o}H|t z?!92iDRfomY`lGgl#X)ixYm%;)XqLCGiK}W>1CBvqw*bBxJtY(x8|A6w~8gZD9(9Lu_p#jtA|4D>Vf zK=6fpR%~RK)`Ue6HE#4fQ0cZ2ZbgneB`G^$t>RoT z(ehS$O=g#kycB_PuhCjasob0YuwX*|s2hR*Q#Qi3)=H;hC?$<$W#1iY-5O?=`;J zQGz+&pV7gwlbi3cnIGDRK>EFkN>VOO0pXWW9)pbB}deE#86du)Y{@xF~FuB}1fv%8hW0|5QjSgMOzbA6E9+wV^H`@EKS3orN9kaG}wO zRLx??RTW4b1G&C@>JV%uymH}hnSX2&zsf&+>M)^VK>cn_iLm7J5A_ATsR)t?kl!lW z*q4*^X!*`92djVr2yPD$3Jh%aTVrG0+JtF<@4F1#$diZtdw}kg}j-uM3)pQ7HhitF|btnx?L2GmHiU? zR)aXaesI7>4lNJcGm^cTWfxaH^)kWRh`CIp8kc1g+AQrzDgdu~f-v*)=rYM|sA9>~ z(_sKs2JZ*%-C{hwDa{$k?E(qjWh7_o_jF~>OoFERB!1m}m$J*)U&l2R57AF+#?S6w zMzMYlns^LkO6{RATZ!hnonen5eHvQB%Uk4s_wB1FOLC``eB$swgK9m?fotU_Y8ry7 z3*hc%rM+SRI1;khfmx7kvJ_bO@Ns1SaAnI&^wXZv-*uEW8vY~~M<}~V=yTEBO!@=1 z@dkI;o`kL1j&Q}SEhiOjeel)1iq|*gbj8n`J(M5ph}flf0qdV{7XZDLM;s@z@+$iC zvhDD_>vvbr2+yCaRX9^N23_Rndh(PvkIVaH5w%dazD;^eew=(If#s+Vi&~{%g!!};l%)x!M|qSW3F<~eq9`D z>ky2_nJ8{TY#W~-9*npt-S_XT@iV2B$>HyQz48RCDdYJ4;(23Y#X? z!4R)e*dBoOp0d_5+3s?e=(4ZxeTeXMON>_u8mpN{FsLmR7272%LqiT-6J7`l%IU{8 zQqEJ)>Mn1M52Y%mN zrYLF?d)20@w$|QzOHS1+HL6;h+O;>eXKi9{V((Zn5|Ma(`@5d!ujjh*M{?)Rbx!Vl zKKIG_jQ0y3f5ESnw;KlGS1g%eH$ z#9cqY(#GZ_OeOmcniG#)4rR9T1%=iR5f6lc>7NL+PEmdnGbY)({&0;)!l5xre{f3C ziu2opx+z$*J!@Kp=bR~t8}}`b0Xgy;!&&=hI3fQMtp7CccZw5Mc5W*G&P7kh2EPT8 z3Xtx_l8)?j4LfE9lo5{dvizpOD;Xh03q0(fdr_@x+FpyYcPMggUkN>%R;opXS@Ab0 zV+HC4A5_T|5cl{V7%JGwSk7vH#9NjLgrr#j9;`4U9rol z_2x7Vj`PKoNWZAe)ydjrHh9zPzP9^Nt*WNJyR_!HXP&^*kjQ?as$gFWK88Zx^q=Xz z)uxRvhEr>=aJi(uoU_*7JZddD8tX?_e=Ck<(OUZVD&(`PY71)snQ_V#9DWsDGyxKukGdf zs&9PgQ7tG0nYy&_pE?cY-lc{`1Av6Er;3atzkE2V3X9(kYX z`9@GY--Ls9MU75I`qvD`S4-XE}a)zd98dl5Blxf2+j6`?$GYy*km( zDLz0b;vIJ1)a1SY?ZAUlIc!-*rwGy`#-5(AG@Kc+J;`{KHX!V?`Ss2L0+zo}DiKW% zq?Zhq6A(o{iov3OKQS?FZos9`i&r@fN#ah8n&=WBFLpTb7tWa|Mi)TMJwFCap*B#1tiu^&=v4%OVcX)AvPc}L&l-w1%{iYR` z-3Hl+zb?s^XS;7-r~vI4`DjlY)7#=TD<>-ruw~i;P>4?Dim9(yDfSKBoLJrd&h+)y zMZnKLU80=BFWRj$gMm_zxDq?BUD_o()D}aNPy*!Ih?Yoq4!`)r%uk)L^-EwX*!i_LgWyTr(y!)cINgMLJb#?U8arFBUvTQFD5Mqa zH93ehFK}fk&f#LQycTz{FAPriUWRvn9nISI&Des#klVkO*09iY(?g{Ae-GOq2;C$D z-*g??l6bum;8(^=*e)rsbr3`}=YDYET`M42Yi-&d_!DonZ#bKe&+EBimR`aATt15M zewGM}hi|QFY<`GjRn};SD4R_7mr58rrisurW{AEY!+Ep^ff5`p4g#wYaVl4NDNmsi- zYAu~Wik(YGFim3wUBC&-!NVOtJ$&-JD6Jjn+-&YuXP;b5{a|=#|b?W(nL_YJK zfA(|r8Qk$!XX^EfmH}U(W!GV$i0o8r+GrQ(ZR*XY&10J3{3l_;F}Lr#UdabUu7w^y z>#_eU9jz0rI15mlTDN|nHUmmf92oWvD3}iDp+Fl+oL6A)>{~X{JhQ-xdsT>kMhwQ7 zKQ>?cd3*OBml@dY{(HKDJGF-ex50GBpHWnV=Ww07kDTucLzyU;GDKsqE~QV>@P}Jj zDb~TB^cQCA&EOG8sxqHHcEb+V~IIs?>O2HJrI@NmpQ)qMMdXC zqH|Yi7T?bylzPgC<5++VHDoi!Qvyt6Q(s(Kx;CmA$@f>^*1>YGB)zsL=H_ZNJhCMHA)h}}IrBkI(!e5~B$pX1W zU}?<>VdM~n{1VwCaU)h?LAGbu>$4!hcMS+6f z<1-=^E#ul2K4}KZJd4F$-z@=k@N)vLr?n0W7U}gY6Q{h@YY&qDHd*m~U^I%8*opd5 zh1E+wWeIIzs|9m3&-#UW#d?LKSmvl~dTcaCa7JG81=>$@is)1NQ*3Ya^zGF&bti`l z3LWM22y{2t`jCB_)CiNg)8GKty*0MXS?RfMps~v`*&-DmEhyr`Z6INjQ5o<`&G;+0 zI)_nEOHwuklbnm@6xCrY)rlL7ZGqF3u5D{D&#XH1`(w&4tDog@wXw(?!~- z>CqZ*`N!MH-QOyTqu)lKUB(z2`^fOO--Jh*E z694dn`T$$dX#C{UC>pU8{vB~%N-Fs^uTfhKQL=mvvXX-^&)1vnHX5t&t;ukfmy*tC zd6gcZ_numGx8i7GomyLa&*J52I%|{lfppI`X7sT9ZbqN`s{*wGuW?o`M^|cq285@# zh>@u(^p~)GcebeGOQXNIM$|O*7Jf!rR#)^`ZRYc?&*O7B&(tqsO`_dh#&jv=-d;V< z&#!q_7eiaQp^NK7F{T2?VcplS1Izw4e!ZSQMuuiQk~H5h>uG)c2ZhR48~9dvPHu_4 z;GimtA8M6tc35TMD3Vm0^^2SYoU+}kDzOgZ@0?O=u{h0nT+Gxtxb>#+Cu7=}#pUx- z=cc__jIAG!dl}qDtSquw-@x)vM{&)GA9VQXHt2BR>S)P*wu$rR|7M?_-=>kvOdknM zSW!{yNTf37f|{ZWl$`GLmfV@~LdNAd2xEd=sqjyubZ&8)?aaXJrW^yC2S~|g#E-LM zeE8)cU5w!?F{l~r@y`*lM{wAOi~zP4;0j9p{CeO1G3zz1{GulXcd?7jc#n~5+KG@% z3xMTtu40yac9S4wBEl^(8(xxB&H)?4*Er8(p|vQ}KY>qTq7Jc`NxB7br1NoeB=`IX z5*2kE+B%qli^|rB0)$*<#o%9o%iaw`LA8{p@G4&xd8Y`V@_3{f_Dqt!1#?i!NV-t- zvSsglOT&My0C9YoB69Q_rS4ugc`Q19ZGRl22CrHbQ*BLIomb2FzB;c846GWena-~n zs!A&UwO6AnS_A7`*Ps;h4jND_I?h@F*#-Q}Cg!K!-P2USqUW()b{!ioeKhG&86R3~ z&0cM3&?ol`oZQrMRXvikyH&!(33Yb-$Q(`s6B52aOUUBrhi+kSTr=8tcNb66fW>YlmM?KQ@y z^@v(-xdRcE$hm_3t9Kk?F!ugo@5oA|NzUMvo(DTde2N_tpssc9i+FpEE_r+Id-ELa zbn}`=n@SaX+}{GKiib!#>6}A+)n+fY*7{pCiY6hOA}zo6F<$YNhj88gmYDe;5J^@} zObfTpITm6xd*K^bd3b?m3BORYto4Ng1HU!6G%+4pZ;1X^j;Lw3L#`~v?hA^meLLnfon?kY_*!C z+0{?j;k;})+nr1?-7F43Xl5|b*3Z$%xH8b9ZJ}K?oL0@i)Sqvn`6F1M4S)O~AOE&3 zdMv|=sK1(;>yXUup=(>UFp3OBAZc`eN6BQavt;_WxWu5$AJ$iDdE0-g{VdT{OWD6K zE7PmP4D;F2n$D0@LsS`cbkAe_q)@pJT4sM6<4etIj6!5VXJ#sLbju%9g6Y_>B_G2s zzl%GVP2nt?sxu$2=9-EDFSuxZ)eJX+n-8YktJ;MI0U(z`9Q z;ZUY5o}=;_vE_@hHWj(l!34pRHpZJ7xpaajWP0RTCQ5Wr`c<=R4f?BcUcH$y5Us1! zk<_~Ke+P}K9StK7X~z%oA2}rJ7oK^P8RSRY0A~%R3lHcD0erfYC4K0xEHg>(W`nQF z$+&${fk$hQpr|WpSJVK(!{t|f6s@hq5~$2D50tDRs?tSM@&LMg>|gv_ve%20>s6n3 zQ#CIrDd8xQQFEJ7eV4^+x!Id9L{@v6oz?5tbr;X!9kJ7NgfqSiAP$NWpKx#WF2108 zmN5|mUj2X%WU@X)M{_@j^IxIemR+F3Zqrh|vf=&%zdbDZm%(9MUla{-6cLL0Lz^Hu z%iu5}-I|!aP6m3?O6Q~-d9At`)R2h3kMF4VfEF1@cM<2_h6(YdUiJ92oC%V^73tgT zFw)SjJoNlVM8)R2-2wmY3++1dkMA_6Nnh3!drK+_+$3y2MWJFuTfKamWG7NMeDvv# zo4HBPegR+CMtQDSMQCB>4K)L}3HQRhVDR+2F?WtBaL?w*x|z}@k`O>-PLOOt~3Oy>H&@I0*SkV5g!kQ5bOgVU~TT?&KWvlErL^ZM2vHi z!`#AsvtaID#l{l%9IP|+Yr^6rYuwJFJ%!blM~A^$T{K(!OA#VANnsgV=0?;lpbu;Q zw?tXPg%J+)mt8Okk0VG3u1#egQucoG1ON-P)E&bDv5OKTtSwvq)S%X@t$QsOnPC9* zb|#31el;_!0kwqBv!(@tZvQf!kWcUYy`Gx}#WLS89@cIK6!z{T*ivc3974@CdX$E>%5&+xLmjgaAox)Hp(umoYH~1fk5xgf#7U|20~ow zjiKYKIg%DZM0q=mr0(AZQC8-o5X(uDzkx)do8LD<8#VW0aDkaE%L(B=N9D|Rinnql zxlFq$9J8T!EhV~aw_3ZCXjb`1z~eIc`3qs{aWLydT5Qk>LL#h`ChE%7)v zO+45L^GSjidM)9|0FY{<-l(hXS^tT3v!ec4CMPCVaP`y8E-651n9Fl|+u@WtqLiXR z(S#Nfa6m|(v6@XvL#s}p>ntGvPlg4<7{25A=?+P1m`}v3(MOF&_7DxztKM-ply|xyU-D? zH)SSi@AmSSFxB=rmyB^2>J<=;h>gE*m_2v+QTcds% z?;xcmbJI2ujXA_pHWo{XxS+E=MA|@1O1uu=?OEqE_oP9QYQK;z8!39M4d(>AkeFB= z;95S?4M0KOkM!byCVJBx+>>cCp>?`sBlEg@dj=L5XFi(j=Q*7KcIh!FF$u7pn}9=r zq&e44PRZ7jO?|Bi>`_}hR7H0`Nz2~f>mjeTPu7a{dM;-*1|_FN)l~82NaVczFhiua z%D^4Z$E0M|*iWzIG<`DJl8dyCvOg@bvf`;9(Cgk~bw2-lE~@am^#RnO=wj<)F5I1S zm~lcU{9-GfxjTjqu{F{Zup}81>>E`LRqRlunq0Gic*!rOct(t^TASqj3<&EV;g;1o zPn)JCmgu9+O}iM*L=`vaugQ2CL^*dsDyM!w)r;i(7+T|D?>bK6%1Gi2BE+zFJlWb+~qImgWbpp@B?_@mv)#5P%ZF;HVQUn^vop|-|jx_(7G{KKUMSX`j{@5^?vWM1>+R` zY^T0?n33cUoCyj}vsbvG#*KOHsIa7UZ3Qe@zP?QDCY5pYU%#e^$su(e z-zn=$KhQjMIfex5QYcbysUB7UHg1?+Jy)nG6(A>=hU8vPre*WJT&WgtJcxAQ&!;&s zV&2b`fIEWS1LXV(5xUiSW1B|jyq8;@B@)Hp1WhM8L`k)`f)>y86$tUbsdb+Lxo0#; zD(b#OITzrC4md!tq#%V`-lTZU9xTSh9*oXE-7skeeu+={M4wCATmwnx^9MIFS<{gC z^Hyr@D`oTTD?Egu&G@x;mNz2;QC&9*jTG!bqU)+Na)w0rfp3C)MAy?#SI+%2a>Wn6 zd1xd{^%`7^Sf$%b$orExo(?W3%o*B_H>qCh${a-bZy{x?5A(3XjtAcbZ1eK;hW(iq zGhW#q*EJPA1K<)hTa@#1A#ux0O+w(2W z+xE>Xh;FeUK(r>dM1QB8E_EjpHr$o!{T`6xJU&ii>z6LcMzb>Yud{fUyic*|{*Bm*O zBMeCGq*7UXrD|bZJn|e$SHnL-!RX%PYg>mNB!SvbUK2~uL3B5LdHWryPcv;9qeZ$_ z2Hzik2FISgc7$6E*R4zkxR5~A1c#5F2DY#aOPRuft?I2KUvTF+%*1Dt(c_As&(`e? zX>ClvCf6GFSsaIjG{0K$yHwcmY@NQwoUOpgrK|wNW)DNW#Ty1)fVC z4Ne+RhizoE+fu)gD_xmBhe7qD?Ymc@G7=#^r#l!d|CRhlr3|z|ORa=|Dv7Y*o6Xbw&CZ(>mr2*M8`-crKn#$ znZ65l22saQn~_1t3v}fq^#vjh8Yj;xhb>=sJ;fGBr0Xx?PP#$)@FoFaS}~R8rb~vQ zEDxE>q2;iKam^O1)45@R$kdvNI4?0+#pnm`BJ0}TJAw@tRuh~jrSf(H=HyYOv-`dR zjZl50(`Iu-p>e#rKEIRh;_$*)hU(ncnHbLxA@hFu=bB`CohNKlI@Brl9e8t%62J@5eXVwGQ4ETj?En zrL+C-G#{wC;1B4F^80I^zk2mMyrbHHMfyxpnt7^J`r=ZGGpag40(TS>XbFm6ikuU@ zNG+bl-}PQeJq&;!`llixM)!Azes%q_yZwML@xi?lUYo3Y)J_SE04EPWfDIjd;hmTL z%HAWiGwpjbFQ<@!pj?@^!egrAajEw+9J2|%D-Q{O?K5aIeG8A~x&7Sr*%LgukDquM z^rehbbyL^gsWFUxVJCchE8-S&*O0{Ga}no15`sIBPHBh}MReeszOPg^+GQibD9BQra@b6(D`Cbw^6pP|PjHA0cl zLdloVUr_t5x_COCbL~~Jim*9QIJj{7%S|akozM4!dgZigi{)7~A#6Y4KjPUY5PF#1 zvfu!i9135c&Xy=x;m{bDbTsPM;MQ40gsQ^<++a4UG*s599Jv+5Ok0!=%ewUh89R~W*TOYE-rl<%zgMw z@6Ur=2khmWl#$O4MfbIKbcuWKlSeMOJh7zSvs?T^mkBUKh++59C2ZNYs1RF%wx zyO0Kpcxcx>p%zj__QS}Jn*rsS)$-mho%E*^HsSvwdy}JCXHwxNm4|gt^ zw)d4oNdZ%KicH^*W_85cdCd>s0SXU)(e$BhU6{^xzK4CI~|L6|q{ugXGt;NMA$Tb%l|MQ1g zh&)$iO^!Zy?oe8vks3oQ3BUC)df0rEnw!vx`BSHq4N5jU^eWp0n2sk zTtt7L+PtGO|7O01nxKK|^E*46Qg+0HefOCZRtpH?vPt($*V=b9>ja&_DPsntEt1}QFwNlg zg%uMdBB;rN!aU;iSVGp(i85o{KY$9kWDk>Wkv?VXDI?TAN={~wV}8TQE5c4>yLjSfIOl#hYwu@W-dW}J12Y-yI8D`!#|5?x58+k8 zA3ZaDn0Rg3F711O7fHub9$=N3(Op3PUIO-tr02ss=ciU@Wo`Rl4cc3jG1)xUy|u=A*H5gX%x;KQc9ajl7Q6P}QzPalQY zmzGRKpO-{qcLR3r%Y3okwVNWRljE&ApEG-RFQRdq!eyxb+25I^ZX%%+t&dKj!r3oK znYnKp&BZ@x-G{ZS?lK_EGCx^ z#a&4#>Ot1jzXafmffhmz>$Al#7@y9~XLQCmVty^+9(s|J9LZiAq5i(RZOX*Hk}~7B zRK!K#g@&(ST?EQD+|lHj1pxUQe*?oh;@4ypga`yV8zO z-#zG!T*PChf0>Swe-0@7-zAXb#w~AI5WH1NxFW%02WB4KD*4x=ZuH=*k)9{imD)mI zv$o^cUFp{mFD>w1lP2ackRF!q#hS@f)e6;`i$&bdcjK6QSwST;w^|^_@T*$D%qINB z%xl7ZW`ggD%k+^#Qo%2S>ECd@VGk*p)6Q4AEB6q{+7-D-KRj5hIvn=rM_PGVVNHaQ zi|)hT0Q8{VyF0S#`S$?K`^p8T3n+K}Clh!^@hjy@L6I1oD=cDb(RB}Jxa5kN;PO6b zwX{14F?3o4=9gN12Ii^iu9bs|qr@(R@>tld;JSy+vu({G9>z^B!+@>8ddg^L|UdH~wUabn;i=XTr>%jN*rt7L|l~TWL(|0D= zt3@8u>&P-3e*UU}FL!3Dz0$t9QwN8y$h%OtBlCB}CQN?}G!r*La;?R-6jo{536ap; zZM`ozztN})5`OOU2VD8i)v<~8U&rAi9zKo(D^y%eR^MGOQ<6!`oJFq8Nxsy#3q$Y# z;l0x#wJ<}<&s<@K7s9DGAL+BrhuaWX(>U3SE-XEC5Lu|`Sy^~lLfewKe#LlxmnYpj z_;8gm07p}IwIRlxcDdJGT4(%*b@rTE#M&j=zls&y4Z{|6GOo8gt=<1Z(R}!HAia@Y z484M%k2_s#?Ng6#J{!`wc3{D*!WV&~&Z6^!!InQKyX*~&vumpUYYCM-38uY+`y>D| zb@Cdz6Iu1R6@y-z7Dq+xcP(DKA{dJfhG{Vyb+|M6!$v0mujAND|JiIwvGe(BUkp*D z;`J3B``TV5>>B0FBU+CJs$hqWYd&jzn5wnwX6q}goc6uANXPe5Yx!`)oi{a z{QGRaLn~{g#vEABQqch*stj{5wXOszvBd+l)e!38JV&f`Rm^;YVil1?Gh`N9JDj`^ zPPukC*Gjpt@tWD3PXHjjoBH2rDvzzJ{2doI_h|$+sx4boWhi@hfUwG^e` z8a2Ykd-g?edbGOpRwDr(*seR=@0OAMI zKa{(i96oBlLB1*U|pKOTz1N1mMTIeROq}<4mCuBj-IM3@+?K)l12q8prh8c zHluad6@N{A;E4@(-o~c>3n%{Uug;z+4BG(0_8Yz?p14DPtT+Tmv@}Ff)u4eV zXNIs$8<}P_uc=x7Y(vyu^|1B|XrL)HHzwDu)Q_%H(DXE0>%w?%gXNP5dBwm<#K{D1 zCAm#oV%p?l(*DXN&24Kjei6_&*`j$%rRAB?Yn`KJR%6UM3jZsIE!^XJ*HU<)4gM#t$^j-jpT+U26X|xp*EKGh39*c!KY_ zlxU1BoYIgD(^iVk6 zLKlf`^ClK4ELaD)hGnzjnwEQTWFXpy7nHsaiCQbo0YYe(ECs>KR&2T~UI5mw^Y^kKl3iIfAo(61io{>HeNGoX4mB&FR1$9qI9ElAu3PS!H#bUG${B zM|b%2!s+hPo_enKpqIrpulbH!4P2s@?FmLDJ%)m!o0hY=ucVqxH*kMA+{A=vr`ds5OyNpYYJhM!>QGU`#fxTfDG?$&2Ctk}2eL*nKZPY^B7Uk+B zW(IcWI9wJwYW$;KFGzeD|AQj@ciF`qf7#2Mv`Xf7FF%XuN$2&W3ZW--4bef1qg&9W z_sqx3YcLS~ZXhcJC7D0MdN~@9rsrYX83eSNXNb}b6G7;CeBNAOKhVtxc^t`K1pI){ zGrG1oulIAn6wrL)`g%!4L)>t10 z0!oT--}G!~&8BUFGcklP)>|46q4Ykz=4P7PSX4a-(?iWm6!JT$N&YUlzsF-HFgXTV zLwBJ&pP3+U4D!>Lqq%n18HMP$%hRlX$=sBl4o4*}hU1I>+Dw=n=ne|Ithf@^i;5Y4jzI%LnjXiP@F z@JH7}yf>G{629 z)kf#)@BWfDxYD<6`u!7-q-Kv^UJ4T$yZ(7yJY}SL7}k8BD@PL8Oyj{$1hHU8HA(}9 zS|RJ7c;WsR-cBtL|G2MdtFf++_|-mc+mEJHvQSAD8>Rr0)QUf~%)pXT`CI`Hke^MT zRJ~Gh-0{TA=0jFOer}wJ3elLpt?MmA{uuQinzau|qNRxB|K04Vlb@3KH`&}|QR`6B zStD&u!IjX`kGqrDdXio8E6qkt=BA?UVfMrx8$9yEVRH-7L9l3&EUOU&M?J67G_03X zS2Q`S7heZ(T)#RU=`;BQ_mZeXdTQs}IX#8we#_p4)C}n9wx$w|l`eh6oSdgv8}5TK zx5viZF0BW4gsxP8N5dNW>@iS^L?Ilg?ZZb@qP@^XC$7N5;R4L0 zpRT9aP$%RWu}rI!pgGNp{YSNC&gFVvLgQRPm(r#VFr+>B^cAU~LYnNJZ|bWhCDQTK zfjfqYMXHeKwR|@2!KZG<9ym@Us;Vz?q{B$`QN3)=6B1ff4I?bwnq*DY9*0Rozhp^@ z0m{G6UVfwK^}2}+*G`F3{r>m?-;EpWo}O>~J?Q5<)*~;Ip7e4$ml?vq2hUDA1+Ko% zIl=r5{1{sUUoR%V#kizqJ|&qF)w3ar*{+Y#dKWD(-ss_UFpg_{zd9=>C5mf)IlA?i zF9BywxBfxmiB|`a1r=?rw3+!}RS497Qw=D5+W&Hgi}iO1ts37n(fkZd@U91+h@pE+ z4B`sa^iAOErz+1vOd6}Xti|X3s=!#-urPx|T=}rDN?iCzhnqo`#^W(c2-P{O`rXZa zwF)Y0bFkm~GjSv5)XU0B#n{xfP>T}!`FuIL?56SR&1b7KOIEf+UQ>oIEEqj;>3M)M zYenxQc1teAqVb z`wNG)v)6qFam0_JTf^2LeqpGO2}bgFbPF?hMO&ujN>{QTgAT)x&VOPp9^6c8eKD(Y zq7?^WdTZZl%oL^!RzG<~+#{}j!T>y~g(T(3yM12YW7@Z-ou^~?Fh9LiB+<`u?p-_@!wK%QtO#73T`+-S13s;rJUXyW zwg_E+(&zeU34eg>(K!&7Bj15_HPwi_`n0YU$MfwfJlL_x>Of!uYC|9qdJX7z8s$jiPA3XZ>Eine{EO*(~WR!&XxJ(?BRt6~}-cDm1? zGB7Jl)SBN-l>-}|6$#rQTm1kmPNjM_9ZLj{GpRkQC7!$Z%^<<>!9n!&(0EKjG2mx{ z5}g(IPu0@tyslU$^E=^3B$!PT7;WUh$CNoN2z7|D`oOhL#HZI220o{d zSl$z-Cdx2j%ul!M<(K&g+((Ab%5H;v-{V81zJx?eXH;k&1l|F)!Xs!WZjm3$0*%kk zpT9tEX``wmcS0$;&5Ub9)2!WB7T3g6Ww(gW#3g&qE`tSP2h13Lix^lNq^so~+p!wa z#aFR4WKhTHal%4RGkIzWg}P#?=6r`Bm6A_tk>>k*S71->5_cs)%up;Ne&9}YP%yzd zerOBFRNAJ1^k`)T1CJ3=0f*`4WM9?BQ|t;;uC`Emjy@ zQcL4-|4{%tBQyr8R82eEL?|}-IQ(DETkD%lUPSI?3BD>Oo9poGeg5N&{?b`5JI(p6 zmGCxL(bj5VkL^rsyJ|mYiQd|`G*$l(%w@5!e!@s7P%9Pw>Oy?5+0$?9%%pnBw#EI6 zDXg$=e6v-fR>s!nXU-+7b8TkE7hmcO`X1O-R^qGl>1z<>!M*!uH*xCCe{t&1|H5Sd z@!;@iHxsDo@c3^h)M?V;{k#oGHe1&$eh%4btnF5qXYC-(qmnp|)~xSMVhw zRj6j1`}FyBB*}iL*KOW@3hsBRl}NPRPIVpg^zi&?TZ3hxkr!>|XM55olrz50b5G$z zJ62m-Oc=ZD)~Ym(pKFe_{CkL0!-kA|wyg8@Cfe`I&nDQ#62{L+OY}PSjnv|t`E2NF z-F>YZ)ci%hr)8J??F=pY0eCqXOh;<4N6v^O9BM%htA~c`8=Z$?V$Z!wLt1Na6yY=V zZ%aWfkZ;AQ8 z+tqy${#yOfGBHV3k=9?5*{x?0KDmO9Ko6#X|0Q{C5#nkJX-=fkaISu^WGv>T|95}J zu7T7d)z=5+k7TD>a+<9inf%zE0FX<9jVj*{(=;)bW!bZ0=Gz>jyBEkM>xSVKPPr53 zG!i^sgYN^Jd;A9q$UW=I_SX?D<=KejrjQha5%t!cO0n7L@cl#t+<`sw$XAhGEs4E1 z;1;|WoN!|;TmP&j_@A}>r+tn0V(=#;o&fL@|5osS8I7noKvhTYNsmV4ovFXi{&Hnf z?ejKR#^)@)eYT*Y!Eh9~i+NyJj_Y4r26RSQA zLN2K>iN0}_^ivqiX9pI-Wa$z9PhW%ie$DSL?t*qwj5|cboTGA~&DCvp-EX~y#apsm zPI5JSny9IdW)Eca7g(4^B<93BE0=u)25BznSr2&G!yFtk`&EA^{MdbC_3lh8YqgxY za9GbXv#_90Yw{~QDd)TE`D~*Ej$5_yuGsY6op86G?6+!f;Gf)X+%ayYnzxGMT$}lZ z#f-${hdHDzOoX(hJ_3RNbH%7I?8`a5Gxf@DmAdeCx3qcDtI5>$Uha(BbGt zqVp3v^5_&JGnTB6VcmMOZ5lAuCdjC0B}7=RUyyQcv?y55t<-9f?&YR8UVU2zkarF@N@?lNcfGp=2Y_TjLn5`S^84p5^8 za}!WJ$^Mdo1{wl~$%zcHenFAv&Ua zG2x&*|B0$YS(f?Gr0r?;+8P9l*nW_H){=(BE0q-cfJP_@LrFcHMIBpf#v}GhQ_oXP zOaGqm2F`XpazgvQA)Im1)nmX+$v{Wb%;ILE%l+f9&j*@=aJ$4`+h#kq@D}lH}xn&5$0G5iLwRJZK$>);`tU(&?y&;F8y+@@YAIA)N<+&GusQbc) zahw?rj1-DfaV9qebPTpU_1f8)hiCGpf35OA@4ZL)&wF40=e;ad3A-$K41g!WEy{m< z;`}lOc$}X@@|w_b!fq)WjI@J zri-|fX&3z>W)LA(CU}oe23+Y| zxsv-s@(l!s>AjHMYOz18>%Dis<^!89wa0r?No;#wiFfyw1lk(P9t_aumAOKVZt#_( zzySF4slKVH)dv}#em~$6q_1cihdy)WD{JX(NW>)};kzW%lEtv&YnD@u;=^&0V*62R z;p=bUp<}g6HjDw#5pX`P!$9%_h5zQnKYn}qH-B-;JISNxxGW2tI`f`Hi3RpKGbTx| zwbDte4+_^#@LBYaZ-QwtA6_(FMtbT^K25*=73b%{UI61|2F^G*esXbTP9TNfK&-WP zjb#b|p?_@RR4I`%*~I0B`}024V(DOn1(wW zR^aoPb2A&3LVBl%As#0lI97IpC>D#f^(BkPac7-kcn4h|4Vnj??G23`TiVxBpOjlt z>v$Sdd4So0*(TQjw`nC;AzLRONraK-#W=t#rK~Y~>Pdw6^|&F)a<9c<`p%mrm-bLl z$F)gpi`tee)ZNBA2nqRF=ulf~SYvq%Ze!dE^9SvVS(Dy(TjCe1Q6xSjC$g{DGdQ3} zV2+ODk6Y}iQ6NlA>T5i+Y`Wfn$v-gfKd4u;nH>Ok%u&@ zCXyS>*d+8Yo#U=X!!@Ef+|=vXjUIQy9v=COg5BxR2pRAlLC3g0JNnRLXuQyR%{UB9 z02O8COX$5oA}^8it!2!fI)(H4ypg!ef)DOQ8t)Xc41t-zmod20g_%~ifyv7nH9Xzs z0e_k4m~*@w26dsu=-nTd8njwj+O?{BmE1OJ_nEEABn&cWb>H@q5=T4MRjNS+>HVc+ za~;Z-qgP?UURGfCNfH>*jI`uqu5CN^{GeO_tw20o`(^vHU~ei zlw`c3m4Vg-29VNUf2v_WXWZB#4(o#k&D`ACW=j3q`>8U11s6+YPG@jnX;LrWb7pj4 zossYwX=$ZbZS?*nVO>G^+9GIzp6X$CQJ`hyn6gBHdQR5=umS)K0L<&7tVPe)O%`p*PN!$UbIeM03}th5?i2QX99wg zSgfDG9uPGcZXgkh=m}5Q{(oHJG+_5fok`18KimiTL$3wFRTh8}GWDEh{$}kA9a4Q; zRo86E!a*zoPm{oKQnGB#H&hvW4@|FnG^WbcNgP@@N+dV%)9pD?U_tNhG#J8<3%#3g zTw73aRzE-Q(!Jq;Y3c(2(w+gJ&nduXPhmdWtzaA`Sq}EGUaxX-+_^8mIR2Pi1dMNd z9X~y@dx-j4g2Nn)pY7xNVz&L9uX9*EAa$)n3nq&h{B^AeXWmwl|HIU~$20x@@&E5q zd3RJvI$#x2iG{?lEg?iyDmj-!DkA1Iw!M-HIm{_@+=?VQ<$NZEIWOlkVK(R4hMoEC z^Zx#RzuWhp-L~EK+H0@tx}Mjy?Rq>Ocfm;}FB6Igni&h)cG_$h;gv6JKc=M~uc%=W zDBBi6+aA$V!@QIcz>`L}4Ui_`KoVa&h@e`_|AUM2u1KFV_i*Joc(`t_tVnH3jyY&F zjFls{L@N+=9b;4FIzVwcM+fg+ZF7&p3r^s`!E>1U7;nJSh}uOTTqjEr7&-rwZ=DN-IiH=9?Xy={m4=9gZzOF~&=p@Zqb3B38VFe&z1O_^=p+UdUTnH$p2?51`kWlPq zQBNQUiN%vRA)r`pBKfp22Ln%IptpUh$M78`LO}7PMV;cN?IO0{*RvGIToswhYsdn- zDzs1{PS!u*4AS_gzZD$mu0W}yXIu~uzMAVeU;DA01={Kc+oBC|Tl5t`V99D&pWK=# zyrTW=h7ed>DrFvULZ}A=uCE)KiB4!WoX{eQ><89f7ajc(l9Um-byJreqOp&bs^e+) zm$J*l?639h$MZa|)_P@?qP#iWC!7xPFp1S*kN2mEB&muw}z} z&#qWjLg#kh7SP2jCz+8OnJ69JLjF)Hsd{55YOG&>C?7PNQF{@<`7IKTo63f-@nlr;2K@VFLsY~VG13jU zpIECL!NfWw7z0DSPTSkjor;^tQEKs}hC$w89#n~O$6>hf>?AvDhavyf={S1oDI1*( z%q5xr9Zu5gk4t3@gA(X94~+yxG*PcyhN(!j6SJ)M$WL|Skk+5_yH+N{^yq5ac_=zurFHmD-8 zW+w*;aUkr+k;9y`vv~eLH?=XTHy2;`g9U786!S91tabaf)n`N4j}yPnj>eD49vx&5 z?PnN-Cg?h5T0`QOn6t8w76|fgN<{|93wfb7QnkKcF#`dnD5#!36dAgG19_ zzj*)_TPQ&c3aP8L#K6O`zF*^VEZG5{uXcp~Dx@=WBxuju2_`xTQ__w)m?l|6xoD(J z90$+PXUFxu2ICp+65Dg-hHM zb*EoIAy=PZnnKp1RJmb2;3|>fQl@PekNMS%< zgLKv+I3GHh&KQ~N_!%NkVwp_XXM&y-59szbSXD$d9t~{}Z#v{aChwd1A?qaCGizB- zvI|ZZCjMqKFVVN8VzPhrdZw9}c+5{*a(xV5oY{JuZ1S6coOW1z<)F)M=1l{EGugk$ z;Ta`CXf;Py*GTUp!a0*qsSiN-T0TZad=p$+^l$sdAj-frk5 z#+tP=&*72N=CH+hF(@K!Zr5H&OQt^@tZ_1dkZND3V;(RSZ<0;$ah_Z^Y$(EBn8o5X zX?f$|^-hh!5Cy~=1=TQ+FO+~wJxRHML~w4cm<9wWv|!_ zprvquCb89@1)2;R3L0tqv=**YiR+Bu?Y#*_LQ-@0Uo9Co z59kpK!vn}QzAo1Z)(O%^oEJmRriB|~;Y?jD$d4i+_+}2Js!YfsC=5ZH)HyKwwUClr zPt1q}k%DWR2 zlPtcqj^(>kL*Rjnf3YBz-(XlKh=i;A3J9Uh=7i3J^=pRPQdBfS){jf<)`0j>;)+M#8!!dNipV65R{3k=cy3M41-r5q54vY zryle1JlZaRKO;q0+M>(+{w*jO@*&JM^d*ata1d3?RYlC&WkJvse2MJ{5OG@dwIv@h zlXO=phvn8^Kfksx&9|DQHUI!8UuI=m%Tna*pJ za+nFE1bKOUSVt7N)`JmH)|x@r`t2@ z_IT8Q5SY&$!}i8i`TMgnrzjI>?#mYyGE^=HP=D>!XjTeIMzSQKEymD z#>|l6uZdKNu3e{XAT;{Wi4LCk2$;W77)8VdctZxLwnuy08yxPs%08=RN$FzVAlW9% zV%EOMpkmu--0@}~LOA60+9!v@_O0w5QVc$T(hfa`=fsG9IW%S1^x3t$wKG1D%tB2x z0l9n>RpyUm?R11p!!uz`&`=(q_%u%E#Z42;%-SsEcL+6Dx(Qo5AB!#!$CfBE$&fc| zuO-orqE%v@A;?~hK*kYbT2DMESw~nFhW2cFS{oLxQ$RrB`^9`aNEg{5>_$nbKvl@l zzP_jr=g*F>30ra_Sz)6{Tof)ulcsk&-x0PSm|;laRIvMmVfPw_r!F*XFMJ?}$>=-8 zK;l65{VpEEt`IK{-fKHAeXFGNBV0stG zXVy@v)wVGv6qVYdYPk3-p1R__AgOJX#(Kb??^~I-NlFqq!C;_(4@sJRlZ6m#JweWowK?>A|E6JT zjA;X2fnlzDmqHC(zB`qm2c=kY5kVJfypBxD384wur`Oyj6uFT`Qh|&5C!t1CCj_yw zzY1&pJ2|Ji!~xivvQAQV1GPu&r1POO+%O?gxlQ6s;ExcjruP?6r?Ib;J!57^&N)(l27O0k^E9wA9Dn*2{!Av;h<_GJE2N%< zhr#JOz>i@l=EZAC-+=B|QE&Z#c+o2Ie)tsqw+!=OTT`qkK(QjP)rp} z?Vf%InA{}r|2ZnD!j+vJigU6LI2xMH&WQ;mV|6m5;jda@gM|+WT4#{)pa5_TU4-6X z|1WqEC~Q}3IoKRu@vbREso@(D?p4_`{Cz*^tS}?u3uxnROTzsS~8y_m<`WAvRAn5 zKTpFw8!!~ZmwG5-`Z#T(<%{-iP}I+dg0n%9rx~DPB1$906j*rM)TVdJ`7l&CQsHme zA$nWc6R>__4B8z??bayAbZmdAy=Npf_t@iul8h2st>@s=VILqLr6f3btzgN_e;JUX zixygn2v5BNqF#qy88wfnRc`Q|y*9ymKHanEW`|j7X>_^(8_hJurv|L=^5|Zgugc36 z*eAPM`(IaVX@=ZHHeVg;S}CPNU!n?zLaGK4m4h1vL$)@)HiAr18@k4K%(ud`ylS-A zoOE%a4eKVh27=2Z{QZuw8lcSsmo&;W6khRnS+m^ogpOyQNGyY%N2Zxed28m_?HeDN z7)>wI;V>V!m)uze=)s@>js{^OONa;eWi{|B8shBPW&W@^1`gimYlD?J0I?p$g9BdC(t>Xx8@n|c@?eOP*UGs7_sM;%^~>0oEIN=6 z%SGi|e&6Sj(s7rwNWJqBMpqfU2U#o)Ta1(W{?4JP-DS=xJ%ribIP*=#*ET_2((jJ% z(&Z>mDE8s%v3+Iy7ZndsFM#g$gVFCj{vbL}x_BRWa#Yk&0(c-(6DRtp_TLZg>I=#0 zJ_RerZ(?jn;kCJ+D1BKFUj@hz^1uzv zPq}d4rHt}(`vJS7yIsrV?|yS9-72#2e4aLUWIVR3B>Uk@Nknq|;t2c0_g8Y+jH~eG z#qlUx`Kf!1d3$ng%K5fyHB!f{0t+e@qx6m*J8k0Ilx^=GA<#rUG*}#f-0CVNSPFcC zt=b9mabeYBt<284SI2o;ipF=^dZ=0{)K=}3O-K@!8xELlm1Xhc(hkf$X4#SBfaH}+ zSi8g$5@d;IHRw~Qgl&TaDl&J|D`qR73|7(R9M8&mMTgjUp zGiKd@Ie)A=Pa4whZr1dcr&qADC7mOR`x8qFzSzL-7j9SuUW2_cPH^dHCVWtoW2worB1N#PN%utTn!mKQRD7`?)Ky- zdJm>Mlj^>v<(Ics$E_mYW&E7N?=8<-hl<+}T&oamv&SdqT}aLsk;?4L@}XV#Rg-TQ zvG^v92^HU%R$i-A`&Va!F4}Z!tBu&*jL7u?GGxjwWA(2LrOP4xUG~!$bzrU8eaZ%d z%o~2xYfutvc3%UGIi9@NZ>FRZ<1JO@?$?plv8YVG%yM<5T%h*qRRGr}&-G<<+#)wC zVkSB`AO7BZl_*$7T_n`Rb~wtnTroa0T~@L*MshKW=nS^9!7`k2*%mJgfVVcNbrmJCU#%Dufg>>^N> z_fzzYr+S;!gZFkj)1Fp!-sZ22kV+=HO(6bO4Qhz!Upez}Y3d$5QT8tHk3J_EG9DFV zJ&r@WfK0?@Y`E6sYJ)+|xvw^ScL1N_WVtCnV!WAmy3TJ>-YZ27@_K)17neNtVv=^FcknfMnLMW~C9v z(1GOJ5Je5T+L&~K<-|BEbeC(fzYDmy;B?jHhwMiUk~%{VbmzW7%C;cF7pvPRG+1+H z^ok2xw_J+Qc55;tHpQSArLut`wsBe)_xs-h_vQp&Yq#Y~{>(UP?5=BLif?L)gGN-v zW&?EZaM~|}KQz$Mv7b7DwV6H_g5*>KtMc978osIW9Y&;GivcrMj}+JRl#%qemsPPV zXvD#Hayp`gxaS6Cz&UFeh z?XD?yEmk)pRS(q1uM8Y3oJmsgp9W)5gWG_-?m#$pVzyhzSzinl z$npZ2eMwczxy5if8$r1s~=G{89=<0{O>ixwv?If4nLY;o< zi)cmYH_Z7U%W`}Ty@UOnpGZwaq(q=T_dfS1VlMZ4jH`bo)ejQj7PE^`n=LbxA3_Hj z@uI(YDJwl89}7N+nmO2Ay-z@U|jI)()C_pNB_y z5MA`3{*ERdlB+HL3&q2WuAb;HF|AZ53E9=mL`G@yWrQ6btW^S5bq$*IR_4bMeWKMW z!Y2c*HO&{2h0RAQK3#Wt(rLxscu$ahhGJSg84q-d=$(?QeI6lSbM7$h$uAG0Q zV)TCY{?1;^WvK_n~5A0aIBp%PV zWqCuuw-R3PBq#X8=+so{0VW+*LUYKa+1^ebv zqEyR_@{5)4kc{EKZk-eFu(DeOG(TF}HDw8xE2kb}Njp)gvN?e4W4pHR8sqOR*!mH= zNKtMcwUTZl=^MS#%Qrq&EnIm^&I1{uZZ>F{;-UI{M0yA!Dh>Og@TFn;17g9f+mv;~ zVwD8^CSlKqGVgYh;Mq|D_DN*jC+A7>6r0>)>pek z#|=|8KKffAZ))7xo!4>i$wcM%_3&t4wD2>AA1ypANvk$(dJ zFC(hV1kNq7@OsRTtOLG%e|mjJg0$oNts5P!^pgvfK+l&7$_w1@uJgq+Hebtpk$5Dy zurCi37f_?2QWmOfY{gNC(-(YBy!bL%-TyqI>@8QhGYvx3#wH^wPvo@6?v!=e&uIL& z`7D^B!rq0`%paTqbRv{$`t9TFR$IFjOLn=-X{G1&k1&1p&C^gZ75>%BM$YPtn?^n6 zat=adxztV7^%KYmz4{ZM4`YuR%@tSflWuR8Q&o8Ai(qtrNZ9)7jt#FQoK8(C`@}>QJDP<)-HQUNfam*%(dL~UM<_KlX zPm$k#cJTk$1?;~0Es1gvpXlF^CV6BwZ?EeCAuCy~WGvKDP?iW!=*>CsJ$2mmFj-ds zz8>t-S3D+>f5+R`{kBE+$+WM3JcU1mUe#B|W=uX7QLqQ%FXM;a{6<=;-C1~THxWFZ z_2qbL>3aE9_tWpBJ!gYT9c*J@mWZCfRq3P$>YHz{fy0OS=<|< zS}GwDQ(}e&R)UKT`&F-eey=aNZ2GLw;nk-@?vz8@G|s`t`KvIWfFZjJD_R?s`2ny5 zx99_*ir%{r}oeRc;>pA2!+lxic=+Xy-Y= zSmYnn|0zPGQG)I<0@SWdwMHy1itjYhduZs__~yZ6=X=NQ8KstbEF@;Fj1~|B6Q1st zaCyF9o#6M_=(zrw6q_kr7E&%j;$G~jn?BcXx;WyxG~&xrbOo>^By*A`twy6iku%Xd z8u?|zDEP=e{c{YJ3oTZ0;z#ezIsq?J4;nv>INSUptmI^!<&mto7ayO-$DIgE-5K5- z*!Z#4TkfV2+hYgny3}z4YNQbBOZ~m%YvTScI)+s^4W~3*U=!CjK7BCpZ`Kdc6ZKBMC{fKr~oiK zrjU@VX2!i+ZZq-;8ljSR?avxM7of*2UldZg-|AoU^aYNUVhJ>ouf>evsze!Rruv(G zGc<#0TM)atcl6qSCHT+Nh69meKlvShrRUm$o5l7df_HGAr5zO}6gnO^dt+6npppyh zc*?2@6}llEcgwf`&=&eOpl|5Fzk!9kq&mxt4x8duWyPDVH&ZoS?l6VstnpvvBjrS* z)m|a5T>M7Wy65ATKct#{lqbPQZhb)#54EQ%lMR}LymGxg6oPo%2s+&N_aH--U&@8zn)>e{gh&%^hLt@^ovWh8-7I-BPDhF;u<;!0RN=T8;NI~ zvNhF2uDuYsp+vbAwpjO2s#NR1AOxX}y}C=+G*f@z?(l)TmffX8=Uo~H`|^v^%K!Nn zjuQOdM=*Uvu?^&>0b=^LVMi*yq@H^6A4efe4(y<6rj|OD}F_mjC32l4h+7 zS40HiA7f!h4h^5d8NX_NaD@U$$4|P0-*i3L^l;U^dP4D%Nd3yU-6mg#^52#D#@wH% zm7Do?yjKHqj~}7_SaAySVEfUIr?kbNO6GDgf$cfW80vi~oL z;co_4=~qgmaZJ_prR5svQHD0_*K|bu*(EFZTR1}`Dge&zw*19*dw#o`mG1h)G3gfW znm3<9B;TXh;Mw={!T0<|YkY3NtwK;bdlsdV^uuC*L*shVl$-(~6SpSk>Y zY*iasE@M1V6|#DBx}l<&R)C%=Y@n@(O;!T5CP8I<#JRUVNVFnOs1zpl7kjr(CT^VvKwcs4@#$Nzl$`fr)3$+7bj z3v@e~hThp4=#~oBqWJcx*A_8UYWuA&4x>899zeGY9XRRW_9u&A2H8r6&5{nCbZ`|u zGJ#C)mV^KpG=WZajn->%814ut)Wxl)Q`wU7v*%_{b0ZtBBBWHe81^l5cGkAQm(`Te zWeE)Hvn6|syAM3il9Q%0`o9Gt8&uXDJ&?Bup0~KL%IU<=bR0^`)b zZX?@&;U%<2%iI3be;t&z{Y4#Aw!nw#oqcIAwrk%M;>VSVgQ5s$aHV9M%R@l4tltze?Z>(gn}zA;Yy>e#gr3-c@#fgs%3 z2i@Y-)66+rvcZ-_&jhaoO{fcY_57QR5Xqm?Q^G8g`$H_2>g{|j zxlp?WCXqHV;D-;WSCoe>v0e>srA{K!6k1ZbFTXd83$CTpzHoD>so%9%bzD~(7Hm63 z?tz@xo*I#?!?U+(vtKq+H??zM-KS^cxfTF$Zz^X)$u7dRK6keb)t&B&UM*Q1W4xpj zq15L*Y5(Yl6VJOs#fBFvF2X6eH)jK{d?A#_Ag}KUSK&XOw&G#CkiA>Pe9wV0_8{ci z03ngoU++|1gmRlKnK2KN;h!s~5WYuj^fwYuY*lJfG!o5;FLjEdxBfO2f4!`(24u%; z=0nW2x}JBb42Vj%@>Sl0em|0&E#fA@J)pji*C(!;oj(3Y@{5kJ!RVD6MbVl_rO z7DJ}KCf(dO4^l~t#iAm6qMiV`9+5;zX%*IisT=E$O@?MH6pygyL9>bG{ZCFKXO7RW8t?fHT)X{5H{eH>f;l>Jx-p3;sV`a{z&KMqZ@vs%KY-*^$(z49@z(Q6zq}-) zPX4B-!^~r;jrljG+iA(rGg^FE!hjt_!>eg#Hk|ygSova0z+z(#_t;yYDGhhEUJ17N zr-GdW>o+ttd#z&LDRsmNugQ7Oxz13E+*0{^2(MY>B`4MkvWx5qHo$HFr7(EQUe7d6 z9dGz_86^zInB$S8&M=RLWKB{(pq^FCI4s&3MVjkl%p27teVgP#DCqK^yP}{Ygs}cb z@ep%Y4BjWzEOiXR%@`frmkdVU8c(5}i;Tk}^%% z>aOlsJU48S!q~oPV z+J5$Xw=gAiyhawL^d%a_ILQA1@X>}1EpX6r5UUvr`;-mr|4C$pej+c>9&tHo^IsY4 z5XFs>v}vjN>)a+yM%(UKh4bcwH}(}r8?FesME2LXtk1)Q>M#SMAe3jH9D?c(tsEhW zE7r$mV`VX&r=8f|geUkOjK?FC4kgGY0Hr&LBN|8o^#Un*;okTGFCCCdn3zf{r!8cT zR;U~aR38iIwqwVD>*?e9yf7`{X31s;VD`m&Jh<^#BY41!&Qn~N>`aHw*-ggIHvhTtc|f{~x{FlT z>HUPmncbQ<>4d(n2$WU{6ik(LSn!`7_Y3FE$y{G-B_{E@uXXU=5J6;Hb|b=rlGU&@ zUVl9q-v2Sk*^F_7o()0+SoCxbEA;{`ij$ODl_WXI zON?kDqO0IP_%KKN^>x5WhLQ;~k{0wJV29zTZz0)W)>|?3-*9@Bx@2MlplZ0D1!5ka zC8B5c)2hc^I98Z$dM17t-3~?I0}eS-vSiTYo_Nt5J*;xK`et3TC>cMm*C}}Aa0U%r znR>w4dS5+vyZR6?2@2%T6M2-h&b=A3d+0Uuf_ag9l2qW67@AXv`YYNSitM>-2y*nP z72_Iy0s4Q}c)|u4YCTxibt&Ey-tDLkB4llynkF1y^ANEqQ6Df9#(w2FZ({^Cl5Rzj zbt%HjX%ddwAPh2o8uO=aoTDu@4WZg~Pn}$x)?FnalS6gbva7%O<1ED+pvB}+Ry4e| z?#dAh(YS0G_@qN5J^3AST%n|cqz|G1ABVi`W43P{qEZ_&gqIWCPsgnKIZT@9e8y4H_? zcZ#&2^0GbufE$uAo}IrTn&6GJ)SxCYXZvnx+795bv=Nl59|}K#&Y_Nvi!$$pg0(OO z9L!7yvL|>xS$uNo;VOc{YDcR|ZtPkQ`n-hWJluI1uqAj3J7ud*z56y4?GWSE4hQvx zA|aA0$nM6vSXT_A(|9VZQxeI)j#|LtIga=f041E71!K?ISYZ+YyimNNQonwdBye{D zZwc!82>1p)EvlMfPtOF?;46U^Fk&kzr}&NzeVXF_Eula<&Rww7DD3kxGy<8S+XgV_l7XHOVDo14raI1uK_*Sq(E-SxDz}HTh*eU`cGd)H8EwQ7Ds?D3)Q5TKE5UujOYM5SH8&~2O8uh(Gk`p3fg zAiVw)@0c{JxBYi0At<|pV18?UZ9l6v&XB|j6O0R^t9>3+yi^g@ z&tXOA7(toA@*uR1hc10T(-6H5D1eZThwb*80FrlbI+XfpUH+fOiXU_08y153sbBM_ zeT&3cR~}Z(%+g-I6Wb;D{pKK&Z|&m5c_@v_Q-~h!HN;mR2Ql|P5y`ASdpawd`$@zw zD&%orb)pQ+@mYme(kY4T35D`TIK#qe(Po$t&Q0{NfN@(+2$!wn86rd}Hg2 zk$Ge$<}&QLAZhzKb+%STW(n7_3qRHGZ-JHy;pQ-#xep`3oT3vGUPW^t&Mem<-!~f# z&t4g-W(_N}SS(p<3BO6O6(ztdh%l(uVs$0?8tE(RC>0CPjRn{8L4D@wp5Hz4rXJM~ zWH)0uP&-cPlUc~?u_KJbRX1E3AS(ipj_L0Vq ze)WnkCxO@{c-i`ZAK29wU&4TvNpkXfiacJk_BkG%Rl(~Fe_F@g@Ij&fsDb4vHoh5MFcwID70w4v z|LFi!ZyVX^v@i6EcJ?f~=0k5`&5s`8J*emclH$2(rI?cEga-~$8h3!uML~7R3yf(= z!D?Pr34S3@P(|n%2*tPtr{bSjpxvILekK+)gDMKI^1wgAFg>g0QtkF>xu-gEZ6&~1$zB-F8q=MbrC(0*=*jEmm6gp={9wH(*k{;_+2pM zMW*kWwmIReVwV4FPvJ(7Q~K3>S?u4h0WxzphniO_a&CCe`0ehroJdDHd{a1yJ?$_1_@xQ^nb$kKAMpl^<+8 z$JgDrVV+tNp*%aOaMp(|cTM7wVI7AB$q_Of2_+^`t8vPlJ6FXCE*@>Kd{pS4)sd~>4le>0g3DO>$;i9()JR|{?H`M2b~l>QQYvq zE$IBLhw5e7Z#U&Q`g-Z!xre+I<%lRW;&$>mW2EELWtwZiz%+$gM7M_X{<7g_}(Q&60J%4va z>O17`t^rFzQ%a4!)5w^RHuu1Ob4g~kJ8v-myPVGJVu2=!$4SuM&ogA%)IoHdNW-x6ZBibfkt(Q1nE6v5pl&Y3m$&nC_pK{=3^}wmk8a)<*7OMj;nseTg3ygmb)y(~T*Mfhu zm+N_+nWmi@U^rp}?ir~P4W||#Kf0gjM0?r_NmXgHcN#oLy_{Ir?OrGES)XEFOmIo> zcIUlos=I7BOX;vqHDFG}DY8DNt@l{VY+Ry2s|w{_D!1i0AQko(O4_@+*mrxXr?08y zSVYlQbP(Ydn-wSbjQGn$;3fzyH+q?W(hxKS~>rk zc>EkVH`S%v+dBKyoS%zthYQtzax-JD$UZ0|e`yNr6<01|~X!8+KkObjS~BfHo~$lCo~Oev0|sSk33tb!z1 zdq+ImMsez`DILB1g1m_0K!>)wi0Z3@wTn+BHj8P_T`uw?Y$x@QSJ;lg;UUZ2W!p~C zS_I`Tz;qDaT76$>ZX>eYAtB3p;Nofra4+8xY=RtkVaB^ud_S`))MWwYJ68k&iF-_Q zh`ZtEm&A*G3hN}wR-afQtQK=m%}jFSzVS?omD@+-%N(W)XzHZAMFZ2Vj91{kNMj`GV!#Fqg)Vges&x*WQL0{i0QyY3AO&Z%_Kuk%FvMs05qn zxZ52|$b!33fQ!s@_%&+5D>V`=!VkakFcXDi9#?2PSTJ=op|X}5Q9M+(^o^HXnE&Fv znWm#|UxXMspD_3#+7Qu_3)mY)26+T0+b;K~W#JAr6$|WEd$E(eSowKK>8&ydEHEX|FEmyAoZ?}BK z(l^9cm+o$PuZ3JrGLc!JGw6TT_g50l_Rh{!1J?eW*ppp0oJkx&US5tPgmp6bF8)DQ+&+OZrNDFn$By&b>hTL-c?~PvvlZQAj?ZXeMYvAN7)jEO< zCUd(~$kuZa4@n8mO3nw1xwf9@cYU-Pdfe=^j$cdj^r+l9=AEgk!p}4MX8@O|8Qa9e ze%tq){J-$eF%tn03jBy+5#zBuEtuPx*@8_}cLToQrI@FO&5Y(ASn@+Z;J(y* zc7(UABO1*TTXxVbO9eWat;@y|*7pDYo~)BkY-qpXlty`Q^ECRuCtsHttduj6%16vjV-*ctCc`aI-Cvx-5* z(F8GL9H7843mV)XO!1AKHEWNI`&}XYp$C1pVsQPRLm&0LkoG0%DSbn9IE1dNXZup*&&}>uI&SZTKK8LswDay(9%Q2A z&of(sit)~_v-U^7O6dPS&=QnBm=HL09D1sedzZkKO8H$fIh$)McvN?|zhCW}GBP@_ zZv*InOb;!5S^pDqT(zx*?<|fm$UFz!6Y0|PE(`S%Fg!{hTIPRT`;!Tgsr`GM@!?g@ z=ug)jx&Sg=w%OYBhXY9MN1Q+$a5}^j}|+2=2@! z(;F}BaqcU+v?uhpqUt2rxw20b@x~)zVsXHU-yviPtCSE|^T_v_IiCXmD!y>3F$)LfP}@F>d@N+mN8dp8ojNl9 z74MdJ=J%*Z#L(y<{?seep>_~18+-zNPfiZ- zcy6O}JjHyMY?x(JY_V$U;9c#9h$@B!HTiok_3Iv6TrOlH*DoEmXm$!zL44lrKYsEn zUK;rEKqC?ByR^PkDg3j!`s<|Ogz-%O1z0X7$}e>Oc3^J#;1F-Lw0S5cewj21@Aj+W zHE*T15Yzo{O&p8r)_x#K@*A(7SCer)t^4mJk>d?6h zbq8JZx5gCwYur4C1rsm}bbPO(@g82n_1x2AW~OE4hk(lsIr&YnvLC=L&+{E7ykAD} z?$PCUn;$Fu_N!#=A9YQO%&)4Mt42>dB+j!K*ya6YnL|_L(dUHKqY%Tn$aHl0{kNU( zv8J0NG_s6k@vBjV&;sCWb;Y0hD)3oFHO3os^o`M__mYd7$O=pMyGPWENYE2s%Pd-& zUuYBs#y`x`gBZ^eatiIGi;>(9BW}t?DODemJLa?4fCV|e9PwCV99bZ zS~u&V#*+3$UT@vtl+d~`s_;<8Ed^8AQUA%WC~+zf!yBJ~W8FXIynQEo;n(hykAg4m z*!B1BK8o(Y=g;guRAHTaQnAf?QvMRy$18_gwcAhvY7;HdOMsylnD-0Vhj@*L#B;!Wib}DH`*Qq7! z-lV6cR1S^If9+yet(He>SJ3Qy4%im|^UreIbwy$4|A%zm9sJ)W@&9-GpOBfj+g zH)qVs6fC+i@iOqZt3!^lqhsc}JQEkIf8%~hXWtcU^IwIyxjS)JjISod3>_ah(^eN0 zs6BBi^wX5fXaxdoqGr;1&iJhyUom?wA+q~fd7is!EexQGFI;GI)rKs$x^K4MR06!P zCuU?^T#arzJV^R{#Y6~XAG)YD1=cRT({ozFE^q#*!D)%xIm>@E64--RhCJKPlty~n ztx~VPgD5&5wl=Psq)_wrAyQlpTi>pllyQB#bP7&ARQKzOYkrhPjPAE9zkH=1oR}V8 zpymxJ9za|h*4(Z!u>#v)IGZv4Yk*V+tV!p*yXfNAGf+k9@=jbP_zY%jHH$_)HXF4X zy>ON{S3OEy9z?cM+3v2PoHys0d(K`EeWjs0d&XB|%6ANhNDyc*wl_x{6U zE`eXoMAQMPKaw!XnyPqYeL*hRNiftO*Hfqf`oGKoTzCK{>laAh=PA)wE z>WYJgt5^1C+GhI~-2wj-nzf59WSg4l?|WM|t7U$9YB$sds(z@~o1B@M+#6Q^cY!DS zTN73LiZ5yUbHnEDGqK#Euh7G`z@7B#&u0Ff!ez-EqQ)EEpebnVVb?g0R zr?QR+J!bZ^J*M$q)$52^(>t#p=j$O#k3K)?as_z!+Se-k%%bTd8@QO3k7RO@*quLH z;@+w78_gWY^#fu*hbMNJU=&^$?^-%&N%y;@eT%u=y3qZ8peoMQ$IOCbp@YnYPDu>ct{~gFd4zCwq5Ug78DC)vVd*}53#2x!& z{;ONH|JAMM8t(L~oo9foo&U)EFUqDYvBpze_i&5CwH;1-&+3Pq`=I#D=(gwu5cc0o zAHw$h+Z5|)a{O=@`Yc$+1TRP4vHj1!4D7DmH|{GkM6Vm_&Z_!cEe)GUr?tw*&BYsE zYu}=brKgXKjX_S{TaMHDaz%M}n11i{R;h%R+Z^{g>Pw+*;i0HQlR$*b{fuGGF*#h# zf*=ij$NL;{jG0a~$1kgjqH6K_t8g(}e~a?myhz z7bU0l%Fp$ii;p{LQ2&m-!hd4>%?xBf4dWY7U}eGWiqV^ljdFW7ApFK*_$LkTK-l}I z_~9+~nmR@76VemG6W)c+-=_QRH!M%0_;#e8j09s={CH?yf`;(7@KJaO!UgVn;K;Wf zEA$V5GFZqtqNNJmk!GffuX!JU%+sqH~ODb4uw`CLuT zTb6(?G`rL>_LFXlm#<6JK(Dl5{W{WqkjvDqC-f-krFF3rRRG<*#+=5ya3U`SVu&(xvv~TUPDav`!p@=`5Yk3N2jDVQalnO9&|_P3XSyV*)lZ!)*Gkt$ z0(U}scFl2c@a_I9P)X{aXW4BGdgg}91<>OEuRtXOheVlYy#+!x1d7B_vSR_SXo;Bm zWTdzEr316#hg7w ze@a7s=&ihM`po3);?&>TtftZ`7Jg4(Yt+C#dT4k1(r|**aXY3yPVV*hxjB|a*0Nas znx2V_4SoLUdd{SmT%2-!69IPL8*W15uk%gKt=0z+Xfehy4-IGKVR8@;9D|Ax0`u5* z?=t~`uI)^&o`}@WS*zI>K&u13#Q!mZj51Qcr&1Y~-DsLTY( zk59&xpg7~tmgU^Q%Lxn1uk22Po=h;VEBJ8aM_^hZjH@;IA$b;D4e>?(^Uh1vQfYPl zj>Z}~2F{~OV;YNU3B2${DQJlWe$_dSoI9OXnOCUbJj~mu=iHyy3)pA(f@wv+LosLj zfBnhWC|17PJ!1q^T!@w0F*Y&~FB)qyjXC;iarc~euQ}KJjN4|9u=#+!#`%-me|mN-%GzE_YGINt(YtHiTrW0&p$;_KdF7`;qY8cV!Wac_dYvr2Y0*Lla6neDqHe`4G zXY5bO!p8Tn4HW{%A>%&d$GMmC$b=C&QSgqR{Ip!7F))6Xutd0XqYgdO(1;NfK6P+x3kxwFgsn~IAYTXQtQx~M7mVX{D?yDBA zjv#4<6f2=qM+45MmW38yPwW;SVo$l(^mn$UgC`_wH~*->Zq2u$OXTGeZZ2_wo?i&~ zrCRu1Y(@CqQ(JBRwx_hp=B4qfS%AM>zRy7jb@jr1MzBIc)V}O)h#M|{2l~bb8+r?k z!@;z``F{6K(7w0C6+YCuAG7lY=kEVg%3k3z1TGs%mMstxjZV{`gN<1cZ*S<-@)BS3 zF0wwqVSOh3cY+Y~$+a9^rD^?BRVP}rQy66`V92^Hu^V>5v#jYzhl{0%InS>>C#F!%Kd0U1iGMmnMrcIgg01u_IhA$~{NC6CVk1u6?e+XHsf9n`wGxbw8 zyP+A)ND+CM@yPi8h_^7=s^M^w0{)2or7t%)j9)-9z0CzNfV>Mn4Rg(sh~fr}B3=VF zurf?D-;*1^*3LcM8e^Sef!Kw!qw-FpX_xg-Fh9N2|I?s9MDHF!^7+y`YTob}#(8?& zJu-}m0m%mAJoxnArQPP?O5m)`Lo@OJ`}%+11C0yEB?VIG-t;I7KFROlmM;sQ)~3W1 zhZs#m#m-&L^r4XRj)+azwep^%pV#VY`8ma3H;bch?#8b~bjr04+=lc@{X4~Jad7`r z%)@XX@Rwr#K}r8tRd60?hT<%tG(-1vN52Mw_QXQYg8oyD_K&!?0IEvt^qwb!(jJ`# zHXaG z)m$*u8IoQ zsgms>$|Ht{jRv=-x)#O>W)@~1Is|Ylsa1*IudCoRa~GlHf@CCa8$a_knX2S87aNlO zfb#D{Ufo3MNk?hGnR3_@VhXmrSJsHgbA9CsBEVn05CTNCq<{io<%j^eMB3IAy`%}+RxWG$RmAO7do|L#wm2iIZkZToDZ|3uJ# z`!|B#_unPnzka!&*#C~8CvvlNceFHhGVw6+f-3vrQUdSraD4weirzDJD0iqNPkN3+ znUj6sm(9(R$A?5+V&7!01{$At2rH{E`ft_0Q4@U$30jmgjkCx@HkgrJh2`(~IXLCd zzO8%CHYvEQoMulxaTuH`ba=DGi=+X`4jjnG#AV-aFb~-3=iK=b4W$)uEIJW)to39j$Q zkO?mGZ+vpl1iSajc@;&r6d!0AuSOn7MJlFA{Fd#$X9rIGnoAq6%qjI+_tUnF&Z8l3 zk>_|BqOKMs!P~Z0L~=t3JUUbm#or2mYl`%5Z}o1Qi0sc}G!bq+X$%7|5AT}3mIGZ5 z?4#sCe?cs;R1@4C%j=IP$;4n1u__SrXsYC=>R(97lWzw*b5`1XxDW`=g7N)y!uFfd zPO%=1JF#s5~T}-OU$-V z@BrnHp>-Q^M%q!|;sl(3|JXW6{4V6+o6pOx<@_VP?Og5A<~SJsDGTPEG$f77kl1k& zL!Kz4GZ0yLT>cQCOaWBotx-%*DJ!w5ENf%J`R<4|;@p2yS){eoTf9+pHUpTH={7b> zj-I~go-&0$C(L%z`f>u|NZ^Rle(uF%?)a7w7R2IXwWh)0C3e-InlbPw? z6S+gDT&LfM0?*bg!XIGvQGDiWQ z^Elh`K_wYko)Y+J>Ck)Z6TSvHb&+{ zPi}pCA4JP4iasR42GD0*yagooZ&$J@h&uif$p(m{;)lqUq*zSeJfb%X`8g*`H*JDP zaig@le?pp6MW{=+8E$2Q#LiMMOdfEkkwlZ4iy$sb5;+KaYrGBF`HZ`n#on|NQFX*06t@_fT_h zSR5Zd8;@IkWIE5=JMyyNr!3P$&&*ZzD*;>RNbaEE?gwSGFQrD5ZNHvhaOjQzc@YKa zncG{pOTqqxfme)j^2afXcCXZ_pV2*RecA6sCm`E5%!U79YuEj6)KeuJ7rT?UPapL6 zkaq}`)S6IB3U$a`<>hHUqVJzrQwsKtsY)DzU&^+^C&ns*4m=lZAi_3dt0@!MDYeT@C;nXhYoRZCfYQ(|%VIsjCEL*XKcgDMY;jVi#U0pInJ#EYsB)@t9|=@3uH zMf!1@8Us9AsEUt}Hi?-C;-s0>D{}xtL+2yd1bvP~Dc1Qb(abt^KS{2rH zxwDA->QgOzXnD#JSnwi5#_+CEy704|7x$9QrKFY4^nZB`cx0;3{3(4(SjK+zDHA!I zJK>2_0+~mBxyKc<^c0rdU9s~~KwF#RN$Hm`h0z!f7L!j1&Vk=@0(gIJ9oO=$)5uOo zO5>IzmT-*jpY4#UZyx<9yzy7F7F3BKMXv<+(=mR?C6Fi5E_3eTV;^_;0LMHL`Rw89 zA&dOrd-8pYX*nk}dwQEKJ6G_MM1t|%d(A#M8Ql>dZ zhn};0`#1AfL&C3M%GM?YpuB{#(xzrSkl}+9!|Co}dn1?ov9ys=Pkh zAbSpO)GQ4IEjwppvK)RHoun1Ew(`fsVU&Ne*j*_24Udy9pQLZti41F^hy@~Vd(!7f;{Ua#uy$F*xpxP%uB5GnN2ehT;^}`A6sk#0{D`@21alse+TO1 zmB_q(Vqf^i=E*kulpC5Vqa{yb#UL(YS~`Ueb=S`x>V}mxkC7% zdClRdmd^c2EroE9MGa^`3-t77EF+!quwA)pY2l4cS)(BTlb^9kTJs4+b+Lsv!fD!? z)0;o{`2YTB%qsCqwXBp|PN6VXG7tuUp%;j+20jP1trDH1)<)8#h>shLnoKWl=&yg+$WpO27dahn8-7KfqzD$HhwngdFqfn8ogiRz43Ei&r|pz@WoN; zptNC^wpcPDw`UM(cpQA%SaLJJfz|P zbT~NC#$AZuE~b%x>i`cTtVADRHLTPMGju3&x-GBUrf7kyH zFYX?}$=0i+?*8NDQA1t4aPI>j(O6f{UIo_DuKea>BXRq5*iJ1&3gQ3Hm3YHR!iu>z zs*beJD`hg|<5ZI>oaUN#Q7Sia7?-9Myg9>@_v18vx_j8KB{u8uxAjLY zxNiP>aqDnI00A*Ek#i%xs^_Z8kn?@ldsg+cRERvsi3%*Oz;)h88LzM(ke)M*5{JdY z&#r_u0Qh8Qe+RWxjgXMQ{GKK}!**f%aD5SB5q%}z=vEU5_DfLMzmz0gCM?$}+ZKlF zOd8&djP6|_v53v|ldpBVR|xprC~(|-<X}vwatT_xMH5RGc{Jk$-PEwN|Bb^L4$5*v5 zQbD})B*ObY|IhMi*+lpu>;L=c|pZbrZcmy!4EVmg2-T*RU z=tcN$L)qmdDG!m&0+ zNXxdbt<>D~xEX?boJ;XaYmI*x0~o%Zs%PYkxlx^q9f$ma1T3+Po9(mP^2OH5+76FH z;pj-luO+3fU(?u^Op;&E zTBf>2-*drC0ZJ>8*FAm?Qhyew`XxN};%j#9Kx3kpozyb{#BWUSQmUBeSct`_1;QJG z%Jd)I$V}*9^^o{rmfINdo9AtU`UBs>FSd_LONQ;3HHBai%81-DJzLT!8s zhj{tSEe3!%pZJn>k^YW|%Bew7g{l5ZD~srgjg@D<7=NJJ28o)9b?ysBeN!2rywO`a zGc$ho0$=$;rt|tRBsUmOmusUPCZl8MU&+MM$Gz4qoAg+8a&W#_>mHlFR?oY=Z^92Y z4x>3l&mZA>)0=>=T?j)6$gN}LqVL{{*Sfr|qZAigMoE~awNn~X!FFx#XXQ(QUI;xj zes=~uk~66!x@ZtFO+Kc*aOh91iSRl)P)S)lXvI08E>JbDX2D2H7o1VLr9!r$>L@6 z4c&u>L66V%B<{A_SELH*1gWJUulCs~jvfQ*ON)(cgv~%A{Cj@xr%}Bo(a7SvrhmTA z3t~tv(nu7w1_M{p)J0yc=`dXQ+aW+h_IF3K8J1^eeU4P;y)J^jeyMHc_p9x~eOp;! zq@$1PI40q*@0=Ut^7hzgYeMzNI>!ENyY}9pI)@MABc=@6xq^7buTLN0?#yNV9?lH~ zyv~jz{STD8)hRX34Hz_9R;Yj(n)Lvafb=2)Dl;doDE!W|w+{f(@hjG1j*<;yEtflNZ20JC>_<}n)vrJ#+-gUN#R_M zcPKu_bEv7Z;+s%??~z(O@lQ~qNZkZ~Oi(04V|wp(>Ge&Q3-bXKyeHz^c+mj5^Mb_y zjy2qse?7@h{~GSU0whu0(4r`;07(KK&ZqxAU?-G$xmQ_nr$2k`137=93Q^AcJ0hr~ zoTPyZy*+Mbj7^f0IiEoyr&(je%PNQOZy71qdibi|twqg-Tm}!X#ilk~goPj22kUpg zgbKeAlzzcHA9&a*`kHRm7A?7a*aBZfx{aC=)lk!uD>psheGJgz(O;;&8$ufFk2pR} zE3WO)s+!c(aE>Ui7Nf2W^>p4#v|QYZ79|7N?!W%7brNYP7kr=gM5wIV@L0ejn5yV8 zy=rjsouTiVxY-ob0;1`2evwW!{Z1;&NB7m_Lv3-0Nfq_&My4SLYcqC%h+uyI%^Zti z?+=%8Y}e&?4afoQAB5~Zqu+v=3Ih}@D-{J2@`@xoOCQv}IZOR%l8dIAgcoJ<%J6)c zMz;JWdxfLj6(ZDlPsO;y>|Xnj@a*(!X`;@3DKnYWb{Xe~?E!0}0vouFhS>-td3kP|XkjZ&%8nZoFeb0&Ogov7%Xh8f zg^DXHN5kiMCX?zL=**0~G2mmLA5Vw5aM*OOheAwL%S+a)A~tvf$773(2eteDX+d!3A=>d-- zp+0;nx=l46>-4} z1TQbn{K6kYU54~$c;HEQE_!d72#1abxSy7VWxNakP!rHht|#{!(V?}|PCc0980waO z(rq>W{F*tUcYyQg^U*buL~RsG6%f3Kw|vDR9eqF1#-(@LlG2#KlPar~U|WeoIOTYj zWgBlgT#}#iO6<7Wv!{U7GY=H)2vC$8?kc7Tp~ zuO$Gqy*bIRRK;IY4b=Q?7U{g#>wT->>%Gh7yzw9vXjAD%nTE5#q%A4+L@srwed4Wt8JORppp6=T%8_rFxa$2N`N_9Jp+~rlBdXN?L zy5Sc0b+5cD4$j@Oe{A>Bi+^pG=O4%P8+IzjvAC-#&ntWXA0ZPHkB9HEFSO29v>y7( z53nqm7yn_&7}%s^Su(Q@f@uPCD%wX}#m~l?Q&MUtm@QSSimJ0o?Dl}*+}8qD39tK^ z9fkgAf4k*XA$TP3R%{Sia#dx?8&z}av6s@(qTXfk?T3v#htN4H;+bL zMtkZ+H6I#m@s(c{#vO_{Zd~~dFPAi#mK|UBMo;8)%Lk6UEYg9Q&W@8PN{nVtct6Tp z@=Zk7W$)wv*dG;1y!qa9cRCMb37*c{cYZzqf%S?4#<$doke6?EV$WD_NILz>kUFe4 z9=LgJ_tnvkc#5}LS*PY;MIcjpXIeWElkxlhB~c;n&y4rC*Fq97NSPL#f8oW)+=2i!7)z2lYD}&4jJ@y-iWf5a zwe}XcSSA=>tp3D5Pk$>Y{8w*e2TFFhsC+y-x^?jTd=C-r#2wteUm|`|2>qid&oS}l z;-a0djFMom1kD2zBw5Lb*Np*}V1l0?hfO%EJ82o0FO)?QQ_d7!=brFW-QWMPlyz*> zcV}TU#GC)l{p1rIFS+RyiB+&4(L zPxC;W4TDijf+waW^$x6miN9cw_K>O^8ZJ^xZ}ZH-qOQYYZXK z2Qs+BP%&j6Enbyt=2hLh4buEr(*EjQB$iFr5O<~_?7i4}M z?ELXI%l8$#{{Te1eI+XT5Mxj~=8gGLuPCk{TqG{Fpp0{8x-{3*Q2X`ag7;LdR*X zUigiolbM+siPRTKj+(^Rkj2-$%#LfBl<%Ge)c?VkdezX)?6|Mu&ud#mU)c_oyijMO z(6Bdpb+HlrnY+7P?5|AS55WQxKrka=v|#))eH>Mwane>fvJBa5fpUYo#o>I)uquEZ1AeTfF7FCPZMu?zA;tF(Gfa5Lh@0Vi9Zff+&u&dP9ziNtkAcPuwa&$A)=Q9nq92ruTQ3uA_)L;}BOam56>v*S zh5>(90>g&$+PpWB_r;;kY{v~l>sbM5XJ-wDTW1>|lbMh!{001@G)G5}ewxgs*!1!3 z&cEVVarbkKnBrCd^aCP;} zh0cTwTEnhS3=yMAS!gD|EGPlTUb;y>{?*^)LnBC$sU-8h zojz&n=QgOj^2A%(fFe#1I-Hn$*lcnHq#;HEDlmMD`nh(!NtqdM%{^j$jS?k_UTL>1gvUfviYI>m1CF5?Ul zgSJ?rOu}FwI=tU5beh78q=DxYLMi7y|MhJlVUYsEAsLZ<}jH8 zyFHeu1O`d#z({iwwM!V}c(Cn+^7i`gjdPop=|fw^n;G9Sn)0g7EpqCG_fe6e>ZzSi ze9dtIA?9DMxaNmr`R(gHjsyOk03T`nae%5-jK!r@DtsYuC<6v}EyadcEcY?&x*Dfl z6Sp}AazS{VC(L2k54XelFppc74CgXmxy-av$75l;j6PJM>$Iqoor%V=#uZEq*r+P? z(=lM_fzQbQVUVm>Gt8qo=^{vX`Av0V1lTt-z*PKftaEmOKlQ};v{RreYbq%k0m%?Y zm0^aY9v{5r4SXyxQ20pxB#WWKr2M2X@RM}R8Rd;SDAK=X-&cCI=$b)tD;D!)a}U<< z{58^3aC0#kAU#yU^d(3}P$rnW&h(zFusBcTP~X;CoWDJK11fHN7zS26iJm_pz|x_+#eQ5Y=+O4x|-+3&0H*0TZ~^8#WnszBL{T#CC6@mD9Y6HLG`*=2wZ zuO?N5b#f9RitEHp;$&ducS~7)3ipDNi+rn^o$*OiN&OFnNoWj(zdi*xe6aQF<@X={_+BD)$qCBD!x+&0(1 ze2;BbkJ-q{?3`ZS3s75~i4P$}73?0F8n0e%O~3fub!-?O2C3G$-V*L43j81HB=V#n4YcL*;8&?s-J2M&-kJ?l??} z)v5`@Zw_ud@0PHnS&4}CI&lXtnjnegXpXk!Ph`ct*1plecO5=oX&th;M>emD^uR8O z;Ps*`CnTVoQ|i5sEHrKN_K^LJShNG_LRyLlVtq5^h;5Jw4e*Zh%&e5kJtJoqOIMn9*oLaD_? z&r$|c7@vY&H>CW)ol9`x=_~R}p1O7x^H|`b2OeS(LmUg{OMe9^(razc;gIE0D! zp%=uRO+}WiLs?L~Cy&nuNU0!bE1He&7*#6a>#>-ayRjow6}{ry7dI^m{NyXg=Cdn2`Z@EEzmu?Ed~CHl;MZS5AB*)HVtg8E zu-BFp#Krv52eJ_%eA3e(+WIT)unGdgyeW!HCB5l@Nv@J-`ric7LVBmKyLvGVxAMDL z46CH;W2@5Ci~-`1Rt5C+%BZ^x@Vm{Gsu}3>#9CG`0}c3Q72c55i6=2-SvJ!!y8&W3__1J*z5pO4Tz{w4^ zLI6U4A-fsFhalize%FtPERmfs9Ooq9XIxK6o53#=@WCWYOKPS<%YgL_>O~x3z)mC_ zbkKDyp28yP<08(oMdUgYVNTPP(<^-4mBl}ev}G^GPzB*1iUg#x1h&We-+h|lEAuc$ zvIr}kKZ^AERc!)D#>0FQU_L(a_^ln1sP}vR{ps6bt*bJ(E8Ah1_D&Gk^;D%z{`wzl z!3y8t!@>(_MmvDZ+*F+#ObA)P4xU&b;@R7?B^Q`EFyvXHhK_b;Aw0_t0bz|lPRI+& zAIm=p7RuooTvA(=CqHwfjeR7h%Ds6P)xCi+i z=KF^wAcY_>iy~sXk2Ych`Ayasp3=+|DN$YKP=kGq)cDJXMnM;UxC7e>mc~>KyRsM_CydXZ6{ z?LY@5*qzDA0GSK&;lW2+LXO_bk;LBZrApDLUXMjGbGvTbQ={3JKa$_yKw-v*iZKCU zEQilUk$IyR3#)2WsJmi;afH-hpRF%XN6yf2&52cP?;0=QG1jNT<(HR=nI!%Jp8zG*OF5KHq)a0XlzbkSiRi=?HYa$Wi3 ztGe>1Kaw#93#EZzu@tfMe}^JbH4tzI{zDT+)V)ln^5X@2G;>VDSOF?24p<4t12Oq* zg*}ZCKk7yJQcI>40yHGP9SkQqCPzp2$<|ZEd^`|j7x_55D8kX`>oG#Yt*+ z>Cx6@&R=T{+&yb=yfwXeto2CK8y_jbCEwWur2rt)0!HB}({=>a;>9HMBc83NQZ=fZjFId3;1A_%9nr(wTd|h`nF6qNcqR(~i*4+? zkkC9Bx~H(bfRDzCRkezD1+6z+2E3vXix*~G=HCdCTM@bvUnRRlHpd->v?*O!p3p|% zfzUs(-!a9A0I$2>!|XT6_IgD(o_KNdr}br~`oEz&ovRaT$8w-D{YMT_5#^YdYHc&U z9$P^hBED3fe7^0`+fJD(6TX)>S?@Cln_cRo0)H^LV;c{nzYN!Nm4yC`z39i|QY?sT z&l+X22gkLMg_v|Vw2X+I_xnG2+TZdB)w{TN%k>frpaiy1p9Ufi@prMZIR#4#eEvbA zET<|Yn3XjNP%8d1L25k@IMXB}ZCWa}a*GZ$O1N{3$W&=3z&sm(ywPq#7Q1GtW#VHf z$hN*xQ+bA$i@t%*@a8a>OL{Q6x-0n57B#8Gx+5>!39bt_Fus{z3Ea!PT>4&u)>b5# z`_lj`;|aL&`xx{LcAs+RFZD_vB@-k!Z1T1(Ezk#M-PJ)Le))4l#D~^P$C~s=>I3Vp z+@>^D{2}qF3f~ky=s+DGf0VUjlyg-oqYv+PCa};I0_r)!E;NFb_EU0VBotlxwwG(4 z#!@}v2M?`eGd_&~?`}xRf?fM`VfDMcD?ofeN=KHnQp{v`ObDSU-`rT7dA-dj4UZLQ zknDh0a(4xuJh5r~L#`o0?kUb1FK7}AMO2k!^zEQKb~gBJU4l@*lrbEN1d;E__)qkQ zF+viaIysSFejpS>Jr^SZi;{?ui1E2UAi2_|I@*?#`yA<(0A4e3lsFjhbZ@6AYcbkqb(ej-WaLtu#QMdLbY>^{n12tO0V?~cO4!Vqr<00SV zHbtHT6V2r>oHW1}aT>lfLWn}otr0+zM#FWQ{jeyIh71G`juCeIS(@x~;q z`L=9CAfwP{xoYJErLvA&ezGguiq}xOB^JbOOF)34uxx_w;z$qP=sC5pZfuS%At_j4tKlg zqKkw^LKbx>m3+Mn^_A;pV!+3^i73%?$Nrot@GGZB&Tg{4=~VdL-%zy63iCa7(X+j~ zYTXHNVb?UXBkQmAT{J_KTG3)o`=Vrs91e6y+6ztIulbQPx}iM~2+Pa|D*Xzo6B zFBaLw+b&cy52wrwt6%{F^OtxIrD{6p!Y+zM;6&odATgg)A}3^|q#6CWu-_21r<QMP6;FKOm>UBNaETdi@^GJLIr>cTOnO=_`}GKR(Et+#W(6fFI_?ADq^eBM zBI*+Ii7ou3qqP#Qk%mQ3F(#)(SI2#4Dk;$3QEV_QLo4o{NxkWy-?w`&z!wfnJD>(+ zI*lUaKnhb)%2mZMUsHBW?*GkY!mu$#YAgn$&@B5hR@KdNQt@Cv-Y=9m$1K#~qk^)( z8T$*9HiU|D0-#;Wq&{1>DR-!dkPw)!8Q#x^S1)xHGmcoaA*5Flrg*HA`xeUgikvW0 zdD{yndunIR=Lf5=e;Gt=cj`XOs4g*P5%HTPDN6Ip9}L?HJCyS2%<~M`oJd+*LGWu{sat|rQwk~02o9aMKQV}HNNXm7A*)Qn%XW!r7a(J$WJD=pK1deZ?CAYY+o z^u1~e7zlQ6DyvDn_4o?cx-2yDe&t{E;jFChCwxr^hSul^PpK|(;%YeH81t-U7bz|` zxJp7+#&M3LHB3m1&c7A(qykJ{BAtI79KSbngl&y2ULuTi44P`$$kuZpi$=3nf2(Ga zqx(3TI3=$}w!e-#1XdJ86mR`C)I0yV!TZz=5PWKP7{~(8Mh`d|#SKQ5SxKC| zg3e02cwEUxYrD88;VXWdp(cA}cXRmq5dkRrZldG-x=j8EKaqS8TxQg*blsis<-eJsp?H#@D|JpjhcUEHMaUey@iYZYo#Ifrz{_o@Jb zN)MHETzV9KefOVDeA)eyi)_hutup;alx6fQYJ7`RBsJosR9yQDS<80^f)_C_3XaX{ zj0I#fhbJrrm}<9dH`AGPG#G0fTi2@e7maO2x~wEDk9Tgg79G6^j}F6IR1%=W&RTZ5 zhYQjboK-VgicV=c6FT#iY=V0#BLiW82sd~I(rt0vZ#*!|GotRUYBbn`Jk2x_VFT4z z_j7w?wj66UnSJPZN!T6f7+!_BtKmq3uM?focuK>?-9J*9M}w@gW^UClXE%Hd-tbW0 zuY3Zx9{d|A5n+@&Y-CnKHta4%MGDstaCs&R4q z(Hv9OK5zQCt9M#tKP%ttG+erH^25pvhCbuCb|~f&gPXx;e>yciZ$eWnL*FTutZL@( z3|jeQZRBNcCRz;2*5+3GPrk@#cp1yln$+thqYqZ;n7hn2|0S~g+SQi27^_b|wQHge z8!iZ}uGD(eW9BD9fbZb-0(J(}zaoKc9@Sei9P1@U4Av_|Nw{yuwa7ADii$)=Ulk#1 zQ;Qv$S{biCbm)TCrhOt4XdV|sD#+m(XCf+wgR*9xb;btnd1h6j`p!&#=Z(8fj8~tX zCq)RR%(Rw|>t#n~m|`-S9L6gtRQd_PHM8CdFRqfLBqs3%lFHBGsTcs)BxFqb^YRaM zACrgm$vnp^tr>kwMw2!gRvIYc;`_Z`6g8sD`n0bH8u~{;gRcGVr)#$#J2)tNYv~gl zqFWg2jj`4C8#dNJ8nXJH59JYG#UP1Fh7}x%{l}2uuZ=1G`tAQ*fg1J0n7N9Vm12}C ztES_qwB>wD7V zU$vW2b+Dy2AEj;LG8|?}!S-z;RgcsjBGHifi~};S;F7TqXdTb%oo?ot>4=YN2G-o> z&m5DtswI$#9Ox-{jC_#3G~%dn&@N5yHnxB0G+SSGUUo5=U%z^Ik3-hoh}8g=^oE%` za*rwOoxW++mhRj)mtioIF4@Rlti)t(mO29l<(wZ?69d( zG9yJ}|77}T!2a-DcE3@;N^4{edaOWy7S%%5wq=hU=tN4&23pfgz56X1XQE-qmuAsv zJ=K->3gV52pxsju2XBw(oA2ddeIxS&$x_AU<84N720wO#k#qYC4#CY=jVE>A6-FAx zP-orNHxY{$MJ5Ls`&uIQng2ZDC3p48j4fFFH$8z#F6;VK2N|6vMUi$rdv3}x9eRxj zp|qiK^j;)&^Bd+;G)E;|Pl2=lhyQGNV({4y>=3k2`)Yjc#$nXRhrIQ9kr=+jbEB?Y z%Lc~mkr5BWO-07*{7V&kmA}zSo z+653_tFO{G76zRnjV3%ndLxz5CORWEq3A9_Ps@kD{9YM=%inEvyl9%#OiOp%Yk;;; z1eAM!wzs%)=W#L{ESd=&l~zu8A%MDmyu;+Jb3#crncxsNnBSK!Q(ML&66xgq1M1G= zujLR*3Y*o;uar^N?AIccvt(*u9v3 z>cuD8w*#=IzVFWY^7h3}QDn%D5pp*Gc5^uiZH3McG z1@cu-a;aE2izlJqz7O)hm)?|ua|m16L3mT{ayMR^3%Z5d2_|X07&Yt58DS%%+1gWr z@E-Vj%Wzha^wNx&)zv5Uu6j3x_p>W?xg_ToJK7w|#N`=o_qWL`dxgYa)k75E{2G1QsWi6f}jO(ck+{u?vEVWVGi&g*E?kgj?;k*$4iHGjUIK z>GjhR_Idacq054rM{f4IugzfguSrQyTPLI0y4|@tg^Hb@e#R)i(*!(QKnjyp8@w+) zq(1VULG1nIHoZ{mzF=-)ZDjzW<7Wq1#m}vv;n;*PTjuH-XFfD$*v{yVVjib)AYO_PE&tk4;XW| zGU6#Y_}toKG;e1_dW=iUJVR?jFMF_cR!BF`=oGeX3199qeFf2I%>qUiIz{CqI^~$) zon{@hgq=?VHI6%H95YuV7OV~`^ut{H&86h3LCII)Y-Qv#XA6UZXG4K$WGlk%qN+oJ z{-PyQ3a+DJ&r|!oU!rdDqmqt`umMESe*=iT{yok6m*w#520Hc&7YwXhB-h$%@_)0@ zmnBf&Z5DwlhI7P!hU5w;#?TF?Y*Y)g4#g{7@$o#j(9oAU&q?fyUuq6ZvPxZf`=Rzd zaqdl@d?Xtb(In*V5QL^#@JEO&>mek0eS3KKC2#>hgCPcQQJs}p@u#5<3V(j;p<@r!TmqW-*Y zJ7WFlytR}bu<1YoP09X7LN`mq)WxLb^|RsOPDLXIo%4Z6fjL>2#34pFuHHenYy{Hb+F#Gc>gpT*yc;!2$JPD%biFI!h0rgCSAJwKXo;L?i zKF97F{kGnP(gkE+`>f(Ioj+WhfV}gOK64LYIo*HuecNf=b3C5-7c%hUx!uPAoGsv? z9~(E3?)BY|m&z+SuHx;xww)a5xK)0GSX2s|6$+b?4Vka_N`mLY^A9S8#N|PYj+oV< z<+;Doi&^LH2YNP0AV1dDIB25z$A;nH2$i|y>U9k^>7)%4txSe?)#<;M`xr9x`Y@N* zw-lRn5(TJS47OjpzvXK>{Dq0Fxz2wUTcEMnhar%nn7GB=FW2R3tG9R}d~sGfTEK~K z@2n3oin{+u+Uj+ExmGaJ>Gbk2bZtk1HDlKXs0nx|Oj>NzL0KN0X(P_%Mw8Z2bvxpayVvLP<@LX|v z)ppFGhBS#~h~s^0%KAz9a|nzxkEQmT3E>U+qDWSztYm3lpkNw#b01db>XeRn$LP|l zW97naxil}J_2?$QENzKx6XwZ34>}HXV~3_Dua!P_Hr@a;ziDGM~ zJx|5)qq}sT&~L1`X~|Nd$zPqucrk-lspVyHGC0{qMkyH159OVOB|9=hVSYTL{0O1PD#fde3};GV;ILJ06f~%hRjf$0ySQX@L{+j4|fO6nZ zwA7z|e=Qew(bQ)d#avqs+!SeMQFT_VBljXGxX0l`Shws&J+!OfucD$tBG)|v=-VQo z#$d+%(x_)n=;6&XgXV5t7Whw`Z&)Pp1wK&g)}(XZM`JKvxkV@O5Eo?jGsX*Nx@E z6SFyRnME~TKR4&5IkeA}rs78 zwtOxv*U1mNCAsQOH>+vGm=BBp(9KCeKbCquwD3^+q&PiQH|0v*Gb<_V{P|E)iZeW_ zvKyeGd$OgIYrT`R3-|fE`w_6$!wQ^=S6sN}!hif}hUgep3iBJx&~TiXxG(Wd4tk}w zNnX2u$7w>`{(1(c`O^x6zxgEirrIFiX$;={oFH>G_4ZKuy9wS$N0YB$x37^2yXPT@ z4MccvF|PgA54KO;8+t=5my6UxhxNk*1*qLrtUe2uw11(#@DjeIt^B*hr9Kns@!jFl zi}Fjk`_}Yq3OJSs*vhi3d=y9sXXEyrkufxsSYoXe{k4=(77jH?iAR| z?$z7wm0xXqfuSA_2^FWJ;xzt8P)Yv>H--NQD)kTke}c;O|Bs;ZU&j{%guw{E=x5WF&uMEH5<$w^-0Cl$J)qgCyuzfHt5F&dQcc^d)*!L) zfW>AkX|KIg%li2(-y+aM01M^QB1kRkvh<~xg+E`OU*}a9d!+n${=Q8t=4h28s2mR^ zXSDP>Dkh{2A^ug?`X`C z59@$OS#%iU4jm_Wp4n(*vU#&Vo#--0-0A0Gctk=i4CNuKXliixMQ(JIB8@gh{xd41 zZxjJO>=4%IuwXfl)eWpaJ#E`Pt7{>bX>d%OoH%pBPOr@!sPifK*Sp?_yOGj{v(A42 z&kLF?_oAg0a4YAhb!|4U?44Ih-@!;XtNkitIseCcH_Y}+KcML$Zf~Bf1pR_9tc5nq zoFG1)5A9kpo-uqBT?}PYKl$Q~w_179Q=CUCXJ&2nb32j?Q-VEDJMXaR;7nybE9~F` zKJ0I!5$QkQt6TuN&|pL1K+?+&IyPGH8>cgn=KRnu!KMQ_cM)|1zM366-Q?4D9=|ZA zae9lgX=)r5A6|B^@>ea}-_@p2sM=)kZ+1=_OUs>(-&*5a;--%0A-E`)mH^mlw+qx7 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 Date: Tue, 14 Jan 2025 15:08:18 +0100 Subject: [PATCH 08/11] chore!: rename BinningValue to AxisDirection (#4005) This PR supersede #3826 by encapsulating only the move of `BinningValue` to `AxisDirection` and move it into the renamed `AxisDefinitions.hpp`. This will allow to keep the same enums once the `BinUtility` infrastructure is gone. For Json files, a legacy reading mode is implemented. --- 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 --- Core/include/Acts/Detector/Blueprint.hpp | 8 +- .../Detector/CuboidalContainerBuilder.hpp | 10 +- .../Detector/CylindricalContainerBuilder.hpp | 12 +- .../IndexedRootVolumeFinderBuilder.hpp | 6 +- .../Acts/Detector/KdtSurfacesProvider.hpp | 6 +- Core/include/Acts/Detector/ProtoBinning.hpp | 35 +- Core/include/Acts/Detector/ProtoDetector.hpp | 8 +- Core/include/Acts/Detector/ProtoSupport.hpp | 6 +- .../detail/CuboidalDetectorHelper.hpp | 8 +- .../detail/DetectorVolumeConsistency.hpp | 2 +- .../detail/IndexedSurfacesGenerator.hpp | 4 +- .../Acts/Detector/detail/PortalHelper.hpp | 4 +- .../Detector/detail/ReferenceGenerators.hpp | 6 +- .../Detector/detail/SupportSurfacesHelper.hpp | 2 +- Core/include/Acts/Geometry/BlueprintNode.hpp | 4 +- .../Acts/Geometry/CompositePortalLink.hpp | 8 +- .../Acts/Geometry/CuboidVolumeBounds.hpp | 14 +- .../Acts/Geometry/CuboidVolumeBuilder.hpp | 8 +- .../Geometry/CutoutCylinderVolumeBounds.hpp | 11 +- .../CylinderContainerBlueprintNode.hpp | 10 +- .../Acts/Geometry/CylinderVolumeBounds.hpp | 20 +- .../Acts/Geometry/CylinderVolumeHelper.hpp | 4 +- .../Acts/Geometry/CylinderVolumeStack.hpp | 10 +- Core/include/Acts/Geometry/Extent.hpp | 136 +++---- .../Geometry/GenericCuboidVolumeBounds.hpp | 10 +- Core/include/Acts/Geometry/GeometryObject.hpp | 22 +- .../Acts/Geometry/GeometryObjectSorter.hpp | 90 ++--- Core/include/Acts/Geometry/GridPortalLink.hpp | 69 ++-- .../Acts/Geometry/ILayerArrayCreator.hpp | 2 +- .../Geometry/ITrackingVolumeArrayCreator.hpp | 6 +- .../Acts/Geometry/LayerArrayCreator.hpp | 10 +- Core/include/Acts/Geometry/LayerCreator.hpp | 5 +- .../include/Acts/Geometry/NavigationLayer.hpp | 14 +- Core/include/Acts/Geometry/Portal.hpp | 4 +- Core/include/Acts/Geometry/PortalLinkBase.hpp | 6 +- Core/include/Acts/Geometry/PortalShell.hpp | 6 +- Core/include/Acts/Geometry/ProtoLayer.hpp | 18 +- .../Acts/Geometry/ProtoLayerHelper.hpp | 4 +- .../Acts/Geometry/SurfaceArrayCreator.hpp | 62 ++-- .../Acts/Geometry/SurfaceBinningMatcher.hpp | 19 +- .../Geometry/TrackingVolumeArrayCreator.hpp | 6 +- .../Acts/Geometry/TrivialPortalLink.hpp | 5 +- Core/include/Acts/Geometry/Volume.hpp | 8 +- Core/include/Acts/Geometry/VolumeBounds.hpp | 28 +- .../Acts/MagneticField/BFieldMapUtils.hpp | 2 +- .../Acts/Material/MaterialGridHelper.hpp | 4 +- .../Acts/Material/MaterialMapUtils.hpp | 2 +- .../Acts/Navigation/MultiLayerNavigation.hpp | 5 +- .../Navigation/NavigationStateUpdaters.hpp | 6 +- .../Acts/Navigation/PortalNavigation.hpp | 3 +- .../Acts/Seeding/SeedFinderOrthogonal.ipp | 6 +- Core/include/Acts/Surfaces/ConeSurface.hpp | 8 +- .../include/Acts/Surfaces/CylinderSurface.hpp | 12 +- Core/include/Acts/Surfaces/DiscSurface.hpp | 38 +- Core/include/Acts/Surfaces/LineSurface.hpp | 8 +- Core/include/Acts/Surfaces/PlaneSurface.hpp | 8 +- Core/include/Acts/Surfaces/SurfaceArray.hpp | 19 +- Core/include/Acts/Utilities/Axis.hpp | 2 +- .../{AxisFwd.hpp => AxisDefinitions.hpp} | 55 ++- Core/include/Acts/Utilities/BinAdjustment.hpp | 33 +- .../Acts/Utilities/BinAdjustmentVolume.hpp | 41 +-- Core/include/Acts/Utilities/BinUtility.hpp | 11 +- Core/include/Acts/Utilities/BinnedArray.hpp | 4 - Core/include/Acts/Utilities/BinningData.hpp | 40 +- Core/include/Acts/Utilities/BinningType.hpp | 41 +-- .../Acts/Utilities/GridAccessHelpers.hpp | 10 +- Core/include/Acts/Utilities/IAxis.hpp | 2 +- Core/include/Acts/Utilities/VectorHelpers.hpp | 34 +- .../src/Detector/CuboidalContainerBuilder.cpp | 22 +- .../Detector/CylindricalContainerBuilder.cpp | 30 +- Core/src/Detector/DetectorVolume.cpp | 2 +- .../IndexedRootVolumeFinderBuilder.cpp | 14 +- Core/src/Detector/LayerStructureBuilder.cpp | 36 +- .../Detector/MultiWireStructureBuilder.cpp | 2 +- Core/src/Detector/ProtoDetector.cpp | 20 +- Core/src/Detector/VolumeStructureBuilder.cpp | 38 +- Core/src/Detector/detail/BlueprintHelper.cpp | 22 +- .../detail/CuboidalDetectorHelper.cpp | 38 +- .../detail/CylindricalDetectorHelper.cpp | 30 +- .../detail/DetectorVolumeConsistency.cpp | 2 +- Core/src/Detector/detail/PortalHelper.cpp | 2 +- .../Detector/detail/ProtoMaterialHelper.cpp | 4 +- .../Detector/detail/SupportSurfacesHelper.cpp | 57 +-- Core/src/Geometry/Blueprint.cpp | 6 +- Core/src/Geometry/BlueprintNode.cpp | 2 +- Core/src/Geometry/CompositePortalLink.cpp | 12 +- Core/src/Geometry/CuboidVolumeBounds.cpp | 16 +- Core/src/Geometry/CuboidVolumeBuilder.cpp | 8 +- .../CylinderContainerBlueprintNode.cpp | 6 +- Core/src/Geometry/CylinderVolumeBounds.cpp | 16 +- Core/src/Geometry/CylinderVolumeBuilder.cpp | 4 +- Core/src/Geometry/CylinderVolumeHelper.cpp | 28 +- Core/src/Geometry/CylinderVolumeStack.cpp | 32 +- Core/src/Geometry/Extent.cpp | 130 +++---- Core/src/Geometry/GridPortalLink.cpp | 32 +- Core/src/Geometry/GridPortalLinkMerging.cpp | 37 +- .../KDTreeTrackingGeometryBuilder.cpp | 16 +- Core/src/Geometry/LayerArrayCreator.cpp | 56 +-- Core/src/Geometry/LayerBlueprintNode.cpp | 16 +- Core/src/Geometry/LayerCreator.cpp | 190 +++++----- .../MaterialDesignatorBlueprintNode.cpp | 12 +- Core/src/Geometry/Polyhedron.cpp | 10 +- Core/src/Geometry/Portal.cpp | 2 +- Core/src/Geometry/PortalLinkBase.cpp | 16 +- Core/src/Geometry/PortalShell.cpp | 10 +- Core/src/Geometry/ProtoLayer.cpp | 20 +- Core/src/Geometry/ProtoLayerHelper.cpp | 2 +- Core/src/Geometry/SurfaceArrayCreator.cpp | 214 ++++++----- Core/src/Geometry/TrackingVolume.cpp | 16 +- .../Geometry/TrackingVolumeArrayCreator.cpp | 21 +- Core/src/Geometry/TrivialPortalLink.cpp | 2 +- Core/src/Geometry/Volume.cpp | 8 +- Core/src/Material/MaterialGridHelper.cpp | 36 +- Core/src/Surfaces/ConeSurface.cpp | 12 +- Core/src/Surfaces/CylinderSurface.cpp | 24 +- Core/src/Surfaces/DiscSurface.cpp | 32 +- Core/src/Surfaces/LineSurface.cpp | 4 +- Core/src/Surfaces/PlaneSurface.cpp | 4 +- Core/src/Utilities/AxisDefinitions.cpp | 66 ++++ Core/src/Utilities/BinningType.cpp | 53 --- Core/src/Utilities/CMakeLists.txt | 2 +- Core/src/Visualization/GeometryView3D.cpp | 12 +- .../ActsExamples/Digitization/Smearers.hpp | 6 +- .../Digitization/scripts/smearing-config.py | 2 +- .../src/DigitizationConfigurator.cpp | 40 +- .../MappingMaterialDecorator.hpp | 20 +- .../GenericDetector/BuildGenericDetector.hpp | 11 +- .../GenericDetector/ProtoLayerCreatorT.hpp | 15 +- .../MagneticField/MagneticField.hpp | 2 +- .../TGeoDetector/src/TGeoDetector.cpp | 18 +- .../BuildTelescopeDetector.hpp | 4 +- .../TelescopeDetector/TelescopeDetector.hpp | 1 + .../src/BuildTelescopeDetector.cpp | 10 +- .../src/TelescopeDetector.cpp | 2 +- .../src/TelescopeG4DetectorConstruction.cpp | 12 +- .../Io/Root/RootMaterialDecorator.hpp | 2 +- .../Io/Root/RootMaterialWriter.hpp | 2 +- .../Io/Root/src/RootMaterialDecorator.cpp | 11 +- Examples/Python/src/Base.cpp | 22 +- Examples/Python/src/Blueprint.cpp | 7 +- Examples/Python/src/Geometry.cpp | 36 +- Examples/Python/tests/test_blueprint.py | 10 +- Examples/Scripts/Python/blueprint.py | 8 +- Examples/Scripts/Python/detector_creation.py | 4 +- .../Scripts/Python/material_mapping_core.py | 4 +- .../Python/material_validation_core.py | 4 +- Fatras/src/Digitization/Segmentizer.cpp | 2 +- .../Acts/Plugins/ActSVG/GridSvgConverter.hpp | 34 +- .../ActSVG/IndexedSurfacesSvgConverter.hpp | 18 +- Plugins/ActSVG/src/LayerSvgConverter.cpp | 2 +- Plugins/ActSVG/src/PortalSvgConverter.cpp | 8 +- .../ActSVG/src/SurfaceArraySvgConverter.cpp | 16 +- Plugins/Covfie/src/FieldConversion.cpp | 4 - .../Plugins/DD4hep/DD4hepBinningHelpers.hpp | 35 +- .../Plugins/DD4hep/DD4hepBlueprintFactory.hpp | 2 +- .../DD4hep/DD4hepDetectorSurfaceFactory.hpp | 2 +- .../Plugins/DD4hep/DD4hepLayerStructure.hpp | 2 +- Plugins/DD4hep/src/DD4hepBinningHelpers.cpp | 8 +- Plugins/DD4hep/src/DD4hepBlueprintFactory.cpp | 42 +-- Plugins/DD4hep/src/DD4hepLayerBuilder.cpp | 69 ++-- Plugins/DD4hep/src/DD4hepLayerStructure.cpp | 8 +- Plugins/DD4hep/src/DD4hepMaterialHelpers.cpp | 2 +- .../Plugins/Detray/DetrayConversionUtils.hpp | 2 +- Plugins/Detray/src/DetrayConversionUtils.cpp | 18 +- .../Detray/src/DetrayGeometryConverter.cpp | 4 +- .../Detray/src/DetrayMaterialConverter.cpp | 31 +- .../src/DetraySurfaceGridsConverter.cpp | 4 +- .../Plugins/Geant4/Geant4SurfaceProvider.hpp | 2 +- .../GeoModel/GeoModelBlueprintCreater.hpp | 4 +- .../GeoModel/detail/GeoModelBinningHelper.hpp | 15 +- .../GeoModel/detail/GeoModelExtentHelper.hpp | 6 +- .../GeoModel/src/GeoModelBlueprintCreater.cpp | 26 +- .../src/detail/GeoModelBinningHelper.cpp | 4 +- .../src/detail/GeoModelExtentHelper.cpp | 28 +- .../DetectorVolumeFinderJsonConverter.hpp | 2 +- .../Acts/Plugins/Json/DetrayJsonHelper.hpp | 4 +- .../Acts/Plugins/Json/GridJsonConverter.hpp | 2 +- .../Plugins/Json/IndexedGridJsonHelper.hpp | 14 +- .../Json/IndexedSurfacesJsonConverter.hpp | 2 +- .../Plugins/Json/UtilitiesJsonConverter.hpp | 19 +- .../src/DetectorVolumeFinderJsonConverter.cpp | 2 +- Plugins/Json/src/DetrayJsonHelper.cpp | 22 +- Plugins/Json/src/ExtentJsonConverter.cpp | 12 +- Plugins/Json/src/GridJsonConverter.cpp | 163 +++++---- .../Json/src/IndexedSurfacesJsonConverter.cpp | 2 +- Plugins/Json/src/MaterialJsonConverter.cpp | 25 +- Plugins/Json/src/MaterialMapJsonConverter.cpp | 38 +- Plugins/Json/src/PortalJsonConverter.cpp | 6 +- Plugins/Json/src/UtilitiesJsonConverter.cpp | 32 +- .../Acts/Plugins/TGeo/TGeoLayerBuilder.hpp | 4 +- .../include/Acts/Plugins/TGeo/TGeoParser.hpp | 4 +- Plugins/TGeo/src/TGeoLayerBuilder.cpp | 26 +- Tests/Benchmarks/BinUtilityBenchmark.cpp | 8 +- .../CommonHelpers/CubicTrackingGeometry.hpp | 7 +- .../CommonHelpers/CylindricalDetector.cpp | 6 +- .../CylindricalTrackingGeometry.hpp | 4 +- Tests/Data/material-map.json | 22 +- .../Alignment/Kernel/AlignmentTests.cpp | 2 +- .../Core/Detector/BlueprintHelperTests.cpp | 20 +- .../Core/Detector/BlueprintTests.cpp | 2 +- .../CuboidalContainerBuilderTests.cpp | 8 +- .../CuboidalDetectorFromBlueprintTests.cpp | 52 +-- .../Detector/CuboidalDetectorHelperTests.cpp | 32 +- .../CylindricalContainerBuilderTests.cpp | 22 +- .../CylindricalDetectorFromBlueprintTests.cpp | 16 +- .../Detector/DetectorVolumeBuilderTests.cpp | 4 +- .../DetectorVolumeConsistencyTests.cpp | 10 +- .../Core/Detector/DetectorVolumeTests.cpp | 8 +- .../IndexedRootVolumeFinderBuilderTests.cpp | 2 +- .../IndexedSurfaceGridFillerTests.cpp | 16 +- .../IndexedSurfacesGeneratorTests.cpp | 22 +- .../Detector/KdtSurfacesProviderTests.cpp | 10 +- .../Detector/LayerStructureBuilderTests.cpp | 26 +- .../MultiWireStructureBuilderTests.cpp | 4 +- .../Core/Detector/ProtoBinningTests.cpp | 31 +- .../Core/Detector/ProtoDetectorTests.cpp | 50 +-- .../Detector/ReferenceGeneratorsTests.cpp | 6 +- .../Detector/SupportSurfacesHelperTests.cpp | 40 +- .../Detector/VolumeStructureBuilderTests.cpp | 10 +- .../Core/Geometry/BlueprintApiTests.cpp | 18 +- .../Core/Geometry/BlueprintTests.cpp | 28 +- .../Core/Geometry/CuboidVolumeBoundsTests.cpp | 11 +- .../CutoutCylinderVolumeBoundsTests.cpp | 3 +- .../Geometry/CylinderVolumeBoundsTests.cpp | 3 +- .../Geometry/CylinderVolumeStackTests.cpp | 57 +-- Tests/UnitTests/Core/Geometry/ExtentTests.cpp | 126 +++---- .../KDTreeTrackingGeometryBuilderTests.cpp | 50 +-- .../Core/Geometry/LayerCreatorTests.cpp | 26 +- .../Core/Geometry/NavigationLayerTests.cpp | 6 +- .../Core/Geometry/PlaneLayerTests.cpp | 2 +- .../Core/Geometry/PolyhedronTests.cpp | 48 +-- .../Core/Geometry/PortalLinkTests.cpp | 345 +++++++++--------- .../Core/Geometry/PortalShellTests.cpp | 40 +- Tests/UnitTests/Core/Geometry/PortalTests.cpp | 24 +- .../Core/Geometry/ProtoLayerHelperTests.cpp | 14 +- .../Core/Geometry/ProtoLayerTests.cpp | 150 ++++---- .../Geometry/SurfaceArrayCreatorTests.cpp | 56 +-- .../Geometry/SurfaceBinningMatcherTests.cpp | 14 +- .../Core/Geometry/TrackingVolumeCreation.hpp | 6 +- Tests/UnitTests/Core/Geometry/VolumeTests.cpp | 2 +- .../InterpolatedBFieldMapTests.cpp | 2 +- .../AccumulatedSurfaceMaterialTests.cpp | 10 +- .../BinnedSurfaceMaterialAccumulaterTests.cpp | 6 +- .../Material/BinnedSurfaceMaterialTests.cpp | 4 +- .../Material/InterpolatedMaterialMapTests.cpp | 2 +- .../Core/Material/MaterialGridHelperTests.cpp | 22 +- .../PropagatorMaterialAssignerTests.cpp | 4 +- .../Material/ProtoSurfaceMaterialTests.cpp | 4 +- .../Material/ProtoVolumeMaterialTests.cpp | 6 +- .../Material/SurfaceMaterialMapperTests.cpp | 2 +- .../Material/VolumeMaterialMapperTests.cpp | 18 +- .../Navigation/DetectorNavigatorTests.cpp | 2 +- .../Navigation/DetectorVolumeFindersTests.cpp | 4 +- .../Navigation/MultiWireNavigationTests.cpp | 4 +- .../NavigationStateUpdatersTests.cpp | 7 +- .../Core/Navigation/PortalNavigationTests.cpp | 4 +- .../UnitTests/Core/Seeding/PathSeederTest.cpp | 2 +- .../Core/Surfaces/ConeSurfaceTests.cpp | 32 +- .../Core/Surfaces/CylinderSurfaceTests.cpp | 130 ++++--- .../Core/Surfaces/DiscSurfaceTests.cpp | 149 ++++---- .../Core/Surfaces/LineSurfaceTests.cpp | 5 +- .../Core/Surfaces/PlaneSurfaceTests.cpp | 42 +-- .../Core/Surfaces/PolyhedronSurfacesTests.cpp | 301 +++++++-------- .../Core/Surfaces/SurfaceArrayTests.cpp | 6 +- Tests/UnitTests/Core/Surfaces/SurfaceStub.hpp | 4 +- .../TrackParamsLookupAccumulatorTests.cpp | 2 +- Tests/UnitTests/Core/Utilities/AxesTests.cpp | 2 +- .../Core/Utilities/BinAdjustmentTests.cpp | 16 +- .../Utilities/BinAdjustmentVolumeTests.cpp | 18 +- .../Core/Utilities/BinUtilityTests.cpp | 18 +- .../Core/Utilities/BinningDataTests.cpp | 66 ++-- .../Core/Utilities/GridAccessHelpersTests.cpp | 20 +- .../Utilities/GridAxisGeneratorsTests.cpp | 2 +- .../Core/Utilities/GridIterationTests.cpp | 2 +- Tests/UnitTests/Core/Utilities/GridTests.cpp | 2 +- .../Digitization/ModuleClustersTests.cpp | 8 +- .../Io/Json/JsonDigitizationConfigTests.cpp | 4 +- .../Fatras/Digitization/ChannelizerTests.cpp | 4 +- .../Digitization/PlanarSurfaceTestBeds.hpp | 20 +- .../Fatras/Digitization/SegmentizerTests.cpp | 19 +- .../DetectorVolumeSvgConverterTests.cpp | 6 +- .../Plugins/ActSVG/GridSvgConverterTests.cpp | 28 +- .../IndexedSurfacesSvgConverterTests.cpp | 20 +- .../DD4hepCylinderLayerStructureTests.cpp | 8 +- .../Detray/DetrayMaterialConverterTests.cpp | 32 +- .../Geant4/Geant4SurfaceProviderTests.cpp | 22 +- .../Json/DetectorJsonConverterTests.cpp | 12 +- ...DetectorVolumeFinderJsonConverterTests.cpp | 4 +- .../Json/DetectorVolumeJsonConverterTests.cpp | 6 +- .../Plugins/Json/EqualityHelpers.hpp | 2 +- .../Plugins/Json/ExtentJsonConverterTests.cpp | 12 +- .../Plugins/Json/GridJsonConverterTests.cpp | 54 +-- .../Json/MaterialJsonConverterTests.cpp | 11 +- .../Plugins/Json/PortalJsonConverterTests.cpp | 3 +- .../Json/ProtoDetectorJsonConverterTests.cpp | 186 +++++----- .../Json/UtilitiesJsonConverterTests.cpp | 6 +- .../Plugins/TGeo/TGeoLayerBuilderTests.cpp | 10 +- .../Plugins/TGeo/TGeoParserTests.cpp | 4 +- docs/_extensions/lazy_autodoc.py | 3 +- 299 files changed, 3333 insertions(+), 3204 deletions(-) rename Core/include/Acts/Utilities/{AxisFwd.hpp => AxisDefinitions.hpp} (66%) create mode 100644 Core/src/Utilities/AxisDefinitions.cpp delete mode 100644 Core/src/Utilities/BinningType.cpp diff --git a/Core/include/Acts/Detector/Blueprint.hpp b/Core/include/Acts/Detector/Blueprint.hpp index 1e3ec527674..b3724f3fec5 100644 --- a/Core/include/Acts/Detector/Blueprint.hpp +++ b/Core/include/Acts/Detector/Blueprint.hpp @@ -13,7 +13,7 @@ #include "Acts/Detector/ProtoBinning.hpp" #include "Acts/Geometry/Extent.hpp" #include "Acts/Geometry/VolumeBounds.hpp" -#include "Acts/Utilities/BinningData.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/StringHelpers.hpp" #include @@ -47,11 +47,11 @@ struct Node final { /// @param t the transform /// @param bt the boundary type /// @param bv the boundary values - /// @param bss the binning values + /// @param bss the axis directions for the binning /// @param cs the children of the node /// @param e the estimated extent of the node (optional) Node(const std::string& n, const Transform3& t, VolumeBounds::BoundsType bt, - const std::vector& bv, const std::vector& bss, + const std::vector& bv, const std::vector& bss, std::vector> cs = {}, const Extent& e = Extent()) : name(n), transform(t), @@ -96,7 +96,7 @@ struct Node final { /// Branch definitions: children std::vector> children = {}; /// Branch definition binning - std::vector binning = {}; + std::vector binning = {}; /// Portal proto material binning std::map portalMaterialBinning = {}; diff --git a/Core/include/Acts/Detector/CuboidalContainerBuilder.hpp b/Core/include/Acts/Detector/CuboidalContainerBuilder.hpp index ea5b98675cf..0a8b87acb85 100644 --- a/Core/include/Acts/Detector/CuboidalContainerBuilder.hpp +++ b/Core/include/Acts/Detector/CuboidalContainerBuilder.hpp @@ -12,7 +12,7 @@ #include "Acts/Detector/DetectorComponents.hpp" #include "Acts/Detector/interface/IDetectorComponentBuilder.hpp" #include "Acts/Geometry/GeometryContext.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include @@ -36,8 +36,8 @@ class IGeometryIdGenerator; /// @note the builder expects a fully consistent set of sub volume builders /// that will be executed in a chain /// -/// @note allowed BinningValue(s) for the cuboid container builder are -/// {binX}, {binY}, {binZ}. +/// @note allowed AxisDirection(s) for the cuboid container builder are +/// {AxisX}, {AxisY}, {AxisZ}. /// /// @note Connecting containers isn't functional yet due to the underlying /// issues in the CuboidDetectorHelper @@ -48,8 +48,8 @@ class CuboidalContainerBuilder : public IDetectorComponentBuilder { struct Config { /// The configured volume builders std::vector> builders = {}; - /// Binning prescription of attachment - BinningValue binning{}; + /// Axis direction for the binning + AxisDirection binning{}; /// The root volume finder std::shared_ptr rootVolumeFinderBuilder = nullptr; diff --git a/Core/include/Acts/Detector/CylindricalContainerBuilder.hpp b/Core/include/Acts/Detector/CylindricalContainerBuilder.hpp index 4520eea5e07..2abc41327fb 100644 --- a/Core/include/Acts/Detector/CylindricalContainerBuilder.hpp +++ b/Core/include/Acts/Detector/CylindricalContainerBuilder.hpp @@ -13,7 +13,7 @@ #include "Acts/Detector/ProtoBinning.hpp" #include "Acts/Detector/interface/IDetectorComponentBuilder.hpp" #include "Acts/Geometry/GeometryContext.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include @@ -39,17 +39,17 @@ class IGeometryIdGenerator; /// @note the builder expects a fully consistent set of sub volume builders /// that will be executed in a chain /// -/// @note allowed BinningValue(s) for the cylindrical container builder are -/// {binZ}, {binR}, {binPhi}, {binZ, binR}, whereas the last option indicates -/// a wrapping setup. +/// @note allowed AxisDirection(s) for the cylindrical container builder are +/// {AxisZ}, {AxisR}, {AxisPhi}, {AxisZ, AxisR}, whereas the last option +/// indicates a wrapping setup. class CylindricalContainerBuilder : public IDetectorComponentBuilder { public: /// Nested configuration object struct Config { /// The configured volume builders std::vector> builders = {}; - /// Binning prescription of attachment - std::vector binning = {}; + /// The axis direction for the binning + std::vector binning = {}; /// The root volume finder std::shared_ptr rootVolumeFinderBuilder = nullptr; diff --git a/Core/include/Acts/Detector/IndexedRootVolumeFinderBuilder.hpp b/Core/include/Acts/Detector/IndexedRootVolumeFinderBuilder.hpp index 64483115c61..ba67d3bd10e 100644 --- a/Core/include/Acts/Detector/IndexedRootVolumeFinderBuilder.hpp +++ b/Core/include/Acts/Detector/IndexedRootVolumeFinderBuilder.hpp @@ -11,7 +11,7 @@ #include "Acts/Detector/interface/IRootVolumeFinderBuilder.hpp" #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Navigation/PortalNavigation.hpp" -#include "Acts/Utilities/BinningData.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include #include @@ -26,7 +26,7 @@ class IndexedRootVolumeFinderBuilder final : public IRootVolumeFinderBuilder { public: /// @brief Constructor with binning casts /// @param binning the cast values for the grid binning - IndexedRootVolumeFinderBuilder(std::vector binning); + IndexedRootVolumeFinderBuilder(std::vector binning); /// The virtual interface definition for root volume finder builders /// @@ -40,7 +40,7 @@ class IndexedRootVolumeFinderBuilder final : public IRootVolumeFinderBuilder { const final; private: - std::vector m_casts; + std::vector m_casts; }; } // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/KdtSurfacesProvider.hpp b/Core/include/Acts/Detector/KdtSurfacesProvider.hpp index 72bea84737f..74a4a195f1c 100644 --- a/Core/include/Acts/Detector/KdtSurfacesProvider.hpp +++ b/Core/include/Acts/Detector/KdtSurfacesProvider.hpp @@ -12,7 +12,7 @@ #include "Acts/Detector/detail/ReferenceGenerators.hpp" #include "Acts/Detector/interface/ISurfacesProvider.hpp" #include "Acts/Surfaces/Surface.hpp" -#include "Acts/Utilities/BinningData.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/KDTree.hpp" #include @@ -50,7 +50,7 @@ class KdtSurfaces { /// @param rgen the reference point generator KdtSurfaces(const GeometryContext& gctx, const std::vector>& surfaces, - const std::array& casts, + const std::array& casts, const reference_generator& rgen = detail::PolyhedronReferenceGenerator<1u, false>{}) : m_kdt(nullptr), m_casts(casts), m_rGenerator(rgen) { @@ -113,7 +113,7 @@ class KdtSurfaces { std::unique_ptr m_kdt = nullptr; /// Cast values that turn a global position to lookup position - std::array m_casts = {}; + std::array m_casts = {}; /// Helper to generate reference points for filling reference_generator m_rGenerator; diff --git a/Core/include/Acts/Detector/ProtoBinning.hpp b/Core/include/Acts/Detector/ProtoBinning.hpp index 3700dfc4d6f..231405d5991 100644 --- a/Core/include/Acts/Detector/ProtoBinning.hpp +++ b/Core/include/Acts/Detector/ProtoBinning.hpp @@ -10,9 +10,8 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/Common.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinUtility.hpp" -#include "Acts/Utilities/BinningType.hpp" #include #include @@ -27,8 +26,8 @@ namespace Acts::Experimental { /// only for convenience that the binning can be defined and then /// translated into concrete axis types struct ProtoBinning { - /// The binning value of this - BinningValue binValue; + /// The axis direction + AxisDirection axisDir; /// The axis type: equidistant or variable Acts::AxisType axisType = Acts::AxisType::Equidistant; /// The axis boundary type: Open, Bound or Closed @@ -42,13 +41,13 @@ struct ProtoBinning { /// Convenience constructors - for variable binning /// - /// @param bValue the value/cast in which this is binned + /// @param aDir the value/cast in which this is binned /// @param bType the axis boundary type /// @param e the bin edges (variable binning) /// @param exp the expansion (in bins) - ProtoBinning(BinningValue bValue, Acts::AxisBoundaryType bType, + ProtoBinning(AxisDirection aDir, Acts::AxisBoundaryType bType, const std::vector& e, std::size_t exp = 0u) - : binValue(bValue), + : axisDir(aDir), axisType(Acts::AxisType::Variable), boundaryType(bType), edges(e), @@ -61,18 +60,18 @@ struct ProtoBinning { /// Convenience constructors - for equidistant binning /// - /// @param bValue the value/cast in which this is binned + /// @param aDir the value/cast in which this is binned /// @param bType the axis boundary type /// @param minE the lowest edge of the binning /// @param maxE the highest edge of the binning /// @param nbins the number of bins /// @param exp the expansion (in bins) - ProtoBinning(BinningValue bValue, Acts::AxisBoundaryType bType, double minE, + ProtoBinning(AxisDirection aDir, Acts::AxisBoundaryType bType, double minE, double maxE, std::size_t nbins, std::size_t exp = 0u) - : binValue(bValue), boundaryType(bType), expansion(exp) { + : axisDir(aDir), boundaryType(bType), expansion(exp) { if (minE >= maxE) { - std::string msg = "ProtoBinning: Invalid binning for value '"; - msg += binningValueName(bValue); + std::string msg = "ProtoBinning: Invalid axis range for direction '"; + msg += axisDirectionName(axisDir); msg += "', min edge (" + std::to_string(minE) + ") "; msg += " needs to be smaller than max edge ("; msg += std::to_string(maxE) + ")."; @@ -96,13 +95,13 @@ struct ProtoBinning { /// when the actual extent is not yet evaluated, only works /// for equidistant binning obviously /// - /// @param bValue the value/cast in which this is binned + /// @param aDir the value/cast in which this is binned /// @param bType the axis boundary type /// @param nbins the number of bins /// @param exp the expansion (in bins) - ProtoBinning(BinningValue bValue, Acts::AxisBoundaryType bType, + ProtoBinning(AxisDirection aDir, Acts::AxisBoundaryType bType, std::size_t nbins, std::size_t exp = 0u) - : binValue(bValue), + : axisDir(aDir), boundaryType(bType), edges(nbins + 1, 0.), expansion(exp), @@ -115,7 +114,7 @@ struct ProtoBinning { std::string toString() const { std::stringstream ss; ss << "ProtoBinning: " << bins() << " bins in " - << binningValueName(binValue); + << axisDirectionName(axisDir); ss << (axisType == Acts::AxisType::Variable ? ", variable " : ", equidistant "); if (!autorange) { @@ -165,12 +164,12 @@ struct BinningDescription { : Acts::closed; if (b.axisType == Acts::AxisType::Equidistant) { binUtility += BinUtility(b.bins(), b.edges.front(), b.edges.back(), - bOption, b.binValue); + bOption, b.axisDir); } else { std::vector edges; std::for_each(b.edges.begin(), b.edges.end(), [&](double edge) { edges.push_back(edge); }); - binUtility += BinUtility(edges, bOption, b.binValue); + binUtility += BinUtility(edges, bOption, b.axisDir); } } return binUtility; diff --git a/Core/include/Acts/Detector/ProtoDetector.hpp b/Core/include/Acts/Detector/ProtoDetector.hpp index 5e4e4d426c2..50a6797d203 100644 --- a/Core/include/Acts/Detector/ProtoDetector.hpp +++ b/Core/include/Acts/Detector/ProtoDetector.hpp @@ -98,12 +98,12 @@ struct ProtoVolume { void extendUp(ProtoVolume& ptVolume); /// Extend the tracking volume with its own constituents - /// @param bValue the binning value that is propagated - void propagateMinDown(BinningValue bValue); + /// @param aDir the axis direction that is propagated + void propagateMinDown(AxisDirection aDir); /// Extend the tracking volume with its own constituents - /// @param bValue the binning value that is propagated - void propagateMaxDown(BinningValue bValue); + /// @param aDir the axis direction that is propagated + void propagateMaxDown(AxisDirection aDir); /// Constrain the daughter volumes with this volume /// diff --git a/Core/include/Acts/Detector/ProtoSupport.hpp b/Core/include/Acts/Detector/ProtoSupport.hpp index abde3a71539..2c02bd2ba22 100644 --- a/Core/include/Acts/Detector/ProtoSupport.hpp +++ b/Core/include/Acts/Detector/ProtoSupport.hpp @@ -12,7 +12,7 @@ #include "Acts/Definitions/Common.hpp" #include "Acts/Detector/ProtoBinning.hpp" #include "Acts/Surfaces/Surface.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinningData.hpp" #include @@ -55,7 +55,7 @@ struct ProtoSupport { /// The internal constraint would overwrite the volume one in order to allow /// support surfaces to be fitted from global volume extensions to the /// actually contained internal objects. - std::vector internalConstraints = {}; + std::vector internalConstraints = {}; // Building instructions 2 (surface is provided): @@ -69,7 +69,7 @@ struct ProtoSupport { unsigned int splits = 1u; /// Planar placement (only valid for planar support surfaces) - BinningValue pPlacement = BinningValue::binZ; + AxisDirection pPlacement = AxisDirection::AxisZ; /// Indicate if the support surface(s) should always be addressed in /// navigation diff --git a/Core/include/Acts/Detector/detail/CuboidalDetectorHelper.hpp b/Core/include/Acts/Detector/detail/CuboidalDetectorHelper.hpp index eda1da8452b..2388e7bad06 100644 --- a/Core/include/Acts/Detector/detail/CuboidalDetectorHelper.hpp +++ b/Core/include/Acts/Detector/detail/CuboidalDetectorHelper.hpp @@ -33,7 +33,7 @@ namespace detail::CuboidalDetectorHelper { /// /// @param gctx The geometry context /// @param volumes the volumes -/// @param bValue the binning value (allowed are binX, binY, binZ) +/// @param bValue the binning value (allowed are AxisX, AxisY, AxisZ) /// @param selectedOnly switch only selected boundaries /// @param logLevel is the screen logging level /// @@ -43,7 +43,7 @@ namespace detail::CuboidalDetectorHelper { /// @return a proto container with the outside portals DetectorComponent::PortalContainer connect( const GeometryContext& gctx, - std::vector>& volumes, BinningValue bValue, + std::vector>& volumes, AxisDirection bValue, const std::vector& selectedOnly = {}, Acts::Logging::Level logLevel = Acts::Logging::INFO); @@ -51,7 +51,7 @@ DetectorComponent::PortalContainer connect( /// /// @param gctx The geometry context /// @param containers the containers -/// @param bValue the binning value (allowed are binX, binY, binZ) +/// @param bValue the binning value (allowed are AxisX, AxisY, AxisZ) /// @param selectedOnly switch only selected boundaries /// @param logLevel is the screen logging level /// @@ -62,7 +62,7 @@ DetectorComponent::PortalContainer connect( DetectorComponent::PortalContainer connect( const GeometryContext& gctx, const std::vector& containers, - BinningValue bValue, const std::vector& selectedOnly = {}, + AxisDirection bValue, const std::vector& selectedOnly = {}, Acts::Logging::Level logLevel = Acts::Logging::INFO); /// @brief Helper method to extract r,z,phi boundaries for diff --git a/Core/include/Acts/Detector/detail/DetectorVolumeConsistency.hpp b/Core/include/Acts/Detector/detail/DetectorVolumeConsistency.hpp index f4de79980f3..c02ef00a011 100644 --- a/Core/include/Acts/Detector/detail/DetectorVolumeConsistency.hpp +++ b/Core/include/Acts/Detector/detail/DetectorVolumeConsistency.hpp @@ -48,7 +48,7 @@ void checkRotationAlignment( std::vector checkCenterAlignment( const GeometryContext& gctx, const std::vector>& volumes, - BinningValue axisValue); + AxisDirection axisValue); } // namespace detail::DetectorVolumeConsistency } // namespace Acts::Experimental diff --git a/Core/include/Acts/Detector/detail/IndexedSurfacesGenerator.hpp b/Core/include/Acts/Detector/detail/IndexedSurfacesGenerator.hpp index 83dc9170208..08fc8043d99 100644 --- a/Core/include/Acts/Detector/detail/IndexedSurfacesGenerator.hpp +++ b/Core/include/Acts/Detector/detail/IndexedSurfacesGenerator.hpp @@ -38,7 +38,7 @@ struct IndexedSurfacesGenerator { // Indices of surfaces that are to be assigned to all bins std::vector assignToAll = {}; /// The binning for the indexing - std::vector bValues = {}; + std::vector bValues = {}; // Bin expansion std::vector binExpansion = {}; /// The transform into the local binning schema @@ -68,7 +68,7 @@ struct IndexedSurfacesGenerator { typename axis_generator::template grid_type>; GridType grid(std::move(aGenerator())); - std::array bvArray = {}; + std::array bvArray = {}; for (auto [ibv, bv] : enumerate(bValues)) { bvArray[ibv] = bv; } diff --git a/Core/include/Acts/Detector/detail/PortalHelper.hpp b/Core/include/Acts/Detector/detail/PortalHelper.hpp index ba54513976b..0798432c29a 100644 --- a/Core/include/Acts/Detector/detail/PortalHelper.hpp +++ b/Core/include/Acts/Detector/detail/PortalHelper.hpp @@ -34,7 +34,7 @@ class Portal; /// gathered from the sub volumes, the binning description using PortalReplacement = std::tuple, unsigned int, Direction, - std::vector, BinningValue>; + std::vector, AxisDirection>; namespace detail::PortalHelper { @@ -63,7 +63,7 @@ void attachDetectorVolumesUpdater( const GeometryContext& gctx, Portal& portal, const std::vector>& volumes, const Direction& direction, const std::vector& boundaries, - const BinningValue& binning); + const AxisDirection& binning); /// @brief Create and attach the multi link updator, the portal will get /// a volume updator attached, that points to the different sub volumes diff --git a/Core/include/Acts/Detector/detail/ReferenceGenerators.hpp b/Core/include/Acts/Detector/detail/ReferenceGenerators.hpp index db77685a2bc..27c2dab0cf9 100644 --- a/Core/include/Acts/Detector/detail/ReferenceGenerators.hpp +++ b/Core/include/Acts/Detector/detail/ReferenceGenerators.hpp @@ -41,8 +41,8 @@ struct CenterReferenceGenerator { /// /// This generator will provide only one filling point and hence /// only a single bin in the indexed grid. -template -struct BinningValueReferenceGenerator { +template +struct AxisDirectionReferenceGenerator { /// Helper to access a reference position based on binning value /// /// @param gctx the geometry context of this operation @@ -51,7 +51,7 @@ struct BinningValueReferenceGenerator { /// @return a vector of reference points for filling const std::vector references(const GeometryContext& gctx, const Surface& surface) const { - return {surface.binningPosition(gctx, bVAL)}; + return {surface.referencePosition(gctx, bVAL)}; } }; diff --git a/Core/include/Acts/Detector/detail/SupportSurfacesHelper.hpp b/Core/include/Acts/Detector/detail/SupportSurfacesHelper.hpp index 9c52e961498..3eef98dfd3a 100644 --- a/Core/include/Acts/Detector/detail/SupportSurfacesHelper.hpp +++ b/Core/include/Acts/Detector/detail/SupportSurfacesHelper.hpp @@ -95,7 +95,7 @@ struct DiscSupport { /// @brief Helper method to build planar support structure struct RectangularSupport { /// Placement - the remaining loc0, loc1 are then cyclic - BinningValue pPlacement = BinningValue::binZ; + AxisDirection pPlacement = AxisDirection::AxisZ; /// Offset in position placement double pOffset = 0.; diff --git a/Core/include/Acts/Geometry/BlueprintNode.hpp b/Core/include/Acts/Geometry/BlueprintNode.hpp index e159c463067..63a0e8b83e7 100644 --- a/Core/include/Acts/Geometry/BlueprintNode.hpp +++ b/Core/include/Acts/Geometry/BlueprintNode.hpp @@ -12,7 +12,7 @@ #include "Acts/Geometry/BlueprintOptions.hpp" #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Geometry/NavigationPolicyFactory.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include "Acts/Utilities/TransformRange.hpp" @@ -192,7 +192,7 @@ class BlueprintNode { /// @ref Acts::CylinderVolumeStack for details. /// @param callback An optional callback that receives the node as an argument CylinderContainerBlueprintNode& addCylinderContainer( - const std::string& name, BinningValue direction, + const std::string& name, AxisDirection direction, const std::function& callback = {}); diff --git a/Core/include/Acts/Geometry/CompositePortalLink.hpp b/Core/include/Acts/Geometry/CompositePortalLink.hpp index 231af047b6c..f06144e682a 100644 --- a/Core/include/Acts/Geometry/CompositePortalLink.hpp +++ b/Core/include/Acts/Geometry/CompositePortalLink.hpp @@ -51,8 +51,8 @@ class CompositePortalLink final : public PortalLinkBase { /// @param direction The binning direction /// @param flatten If true, the composite will flatten any nested composite CompositePortalLink(std::unique_ptr a, - std::unique_ptr b, BinningValue direction, - bool flatten = true); + std::unique_ptr b, + AxisDirection direction, bool flatten = true); /// Construct a composite portal from any number of arbitrary other portal /// links. The only requirement is that the portal link surfaces are @@ -61,7 +61,7 @@ class CompositePortalLink final : public PortalLinkBase { /// @param direction The binning direction /// @param flatten If true, the composite will flatten any nested composite CompositePortalLink(std::vector> links, - BinningValue direction, bool flatten = true); + AxisDirection direction, bool flatten = true); /// Print the composite portal link /// @param os The output stream @@ -110,7 +110,7 @@ class CompositePortalLink final : public PortalLinkBase { boost::container::small_vector, 4> m_children{}; - BinningValue m_direction; + AxisDirection m_direction; }; } // namespace Acts diff --git a/Core/include/Acts/Geometry/CuboidVolumeBounds.hpp b/Core/include/Acts/Geometry/CuboidVolumeBounds.hpp index bc3c75ac70d..39344352eda 100644 --- a/Core/include/Acts/Geometry/CuboidVolumeBounds.hpp +++ b/Core/include/Acts/Geometry/CuboidVolumeBounds.hpp @@ -11,6 +11,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Geometry/Volume.hpp" #include "Acts/Geometry/VolumeBounds.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BoundingBox.hpp" #include @@ -118,21 +119,22 @@ class CuboidVolumeBounds : public VolumeBounds { const Vector3& envelope = {0, 0, 0}, const Volume* entity = nullptr) const final; - /// Get the canonical binning values, i.e. the binning values + /// Get the canonical binning direction, i.e. the binning directions /// for that fully describe the shape's extent /// /// @return vector of canonical binning values - std::vector canonicalBinning() const override { - return {Acts::BinningValue::binX, Acts::BinningValue::binY, - Acts::BinningValue::binZ}; + std::vector canonicalAxes() const override { + using enum AxisDirection; + return {AxisX, AxisY, AxisZ}; }; /// Binning borders in double /// - /// @param bValue is the binning schema used + /// @param aDir is the axis direction for which the + /// reference border is requested /// /// @return float offset to be used for the binning - double binningBorder(BinningValue bValue) const final; + double referenceBorder(AxisDirection aDir) const final; /// Access to the bound values /// @param bValue the class nested enum for the array access diff --git a/Core/include/Acts/Geometry/CuboidVolumeBuilder.hpp b/Core/include/Acts/Geometry/CuboidVolumeBuilder.hpp index 185d55f229d..c0eb1695302 100644 --- a/Core/include/Acts/Geometry/CuboidVolumeBuilder.hpp +++ b/Core/include/Acts/Geometry/CuboidVolumeBuilder.hpp @@ -11,7 +11,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Geometry/ITrackingVolumeBuilder.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include #include @@ -82,7 +82,7 @@ class CuboidVolumeBuilder : public ITrackingVolumeBuilder { // An optional rotation for this std::optional rotation{std::nullopt}; // Dimension for the binning - Acts::BinningValue binningDimension = Acts::BinningValue::binX; + Acts::AxisDirection binningDimension = Acts::AxisDirection::AxisX; }; /// @brief This struct stores the data for the construction of a cuboid @@ -105,7 +105,7 @@ class CuboidVolumeBuilder : public ITrackingVolumeBuilder { // Material std::shared_ptr volumeMaterial = nullptr; // Dimension for the binning - Acts::BinningValue binningDimension = Acts::BinningValue::binX; + Acts::AxisDirection binningDimension = Acts::AxisDirection::AxisX; }; /// @brief This struct stores the configuration of the tracking geometry @@ -176,7 +176,7 @@ class CuboidVolumeBuilder : public ITrackingVolumeBuilder { const VolumeConfig& cfg) const; void sortVolumes(std::vector>& tapVec, - BinningValue bValue) const; + AxisDirection bValue) const; /// @brief This function builds a world TrackingVolume based on a given /// configuration diff --git a/Core/include/Acts/Geometry/CutoutCylinderVolumeBounds.hpp b/Core/include/Acts/Geometry/CutoutCylinderVolumeBounds.hpp index 5d7278219da..c90791e376a 100644 --- a/Core/include/Acts/Geometry/CutoutCylinderVolumeBounds.hpp +++ b/Core/include/Acts/Geometry/CutoutCylinderVolumeBounds.hpp @@ -11,6 +11,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Geometry/Volume.hpp" #include "Acts/Geometry/VolumeBounds.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include #include @@ -109,13 +110,13 @@ class CutoutCylinderVolumeBounds : public VolumeBounds { const Vector3& envelope = {0, 0, 0}, const Volume* entity = nullptr) const final; - /// Get the canonical binning values, i.e. the binning values - /// for that fully describe the shape's extent + /// Get the canonical binning direction, i.e. the axis values + /// that fully describe the shape's extent /// /// @return vector of canonical binning values - std::vector canonicalBinning() const override { - return {Acts::BinningValue::binR, Acts::BinningValue::binPhi, - Acts::BinningValue::binZ}; + std::vector canonicalAxes() const override { + using enum AxisDirection; + return {AxisR, AxisPhi, AxisZ}; }; /// Write information about this instance to an outstream diff --git a/Core/include/Acts/Geometry/CylinderContainerBlueprintNode.hpp b/Core/include/Acts/Geometry/CylinderContainerBlueprintNode.hpp index 637f1594c0c..decd92facd9 100644 --- a/Core/include/Acts/Geometry/CylinderContainerBlueprintNode.hpp +++ b/Core/include/Acts/Geometry/CylinderContainerBlueprintNode.hpp @@ -11,7 +11,7 @@ #include "Acts/Geometry/BlueprintNode.hpp" #include "Acts/Geometry/CylinderVolumeStack.hpp" #include "Acts/Geometry/PortalShell.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include @@ -36,7 +36,7 @@ class CylinderContainerBlueprintNode final : public BlueprintNode { /// @note The parameters are passed through to @ref CylinderVolumeStack, /// see documentation of that class for more information CylinderContainerBlueprintNode( - const std::string& name, BinningValue direction, + const std::string& name, AxisDirection direction, CylinderVolumeStack::AttachmentStrategy attachmentStrategy = CylinderVolumeStack::AttachmentStrategy::Midpoint, CylinderVolumeStack::ResizeStrategy resizeStrategy = @@ -95,7 +95,7 @@ class CylinderContainerBlueprintNode final : public BlueprintNode { /// Setter for the stacking direction /// @param direction The stacking direction /// @return This node for chaining - CylinderContainerBlueprintNode& setDirection(BinningValue direction); + CylinderContainerBlueprintNode& setDirection(AxisDirection direction); /// Setter for the attachment strategy /// @param attachmentStrategy The attachment strategy @@ -111,7 +111,7 @@ class CylinderContainerBlueprintNode final : public BlueprintNode { /// Accessor to the stacking direction /// @return The stacking direction - BinningValue direction() const; + AxisDirection direction() const; /// Accessor to the attachment strategy /// @return The attachment strategy @@ -136,7 +136,7 @@ class CylinderContainerBlueprintNode final : public BlueprintNode { std::string m_name; - BinningValue m_direction = BinningValue::binZ; + AxisDirection m_direction = AxisDirection::AxisZ; CylinderVolumeStack::AttachmentStrategy m_attachmentStrategy{ CylinderVolumeStack::AttachmentStrategy::Midpoint}; diff --git a/Core/include/Acts/Geometry/CylinderVolumeBounds.hpp b/Core/include/Acts/Geometry/CylinderVolumeBounds.hpp index 3e5d8862cd8..79916c84083 100644 --- a/Core/include/Acts/Geometry/CylinderVolumeBounds.hpp +++ b/Core/include/Acts/Geometry/CylinderVolumeBounds.hpp @@ -12,7 +12,7 @@ #include "Acts/Geometry/BoundarySurfaceFace.hpp" #include "Acts/Geometry/Volume.hpp" #include "Acts/Geometry/VolumeBounds.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include #include @@ -172,24 +172,24 @@ class CylinderVolumeBounds : public VolumeBounds { const Vector3& envelope = {0, 0, 0}, const Volume* entity = nullptr) const final; - /// Get the canonical binning values, i.e. the binning values - /// for that fully describe the shape's extent + /// Get the canonical binning directions, i.e. the axis directions + /// that fully describe the shape's extent /// /// @return vector of canonical binning values - std::vector canonicalBinning() const override { - return {Acts::BinningValue::binR, Acts::BinningValue::binPhi, - Acts::BinningValue::binZ}; + std::vector canonicalAxes() const override { + using enum AxisDirection; + return {AxisR, AxisPhi, AxisZ}; }; /// Binning offset - overloaded for some R-binning types /// - /// @param bValue is the type used for the binning - Vector3 binningOffset(BinningValue bValue) const override; + /// @param aDir is the axis direction used for the binning + Vector3 referenceOffset(AxisDirection aDir) const override; /// Binning borders in double /// - /// @param bValue is the type used for the binning - double binningBorder(BinningValue bValue) const override; + /// @param aDir is the axis direction used for the binning + double referenceBorder(AxisDirection aDir) const override; /// Output Method for std::ostream /// @param os is the output stream diff --git a/Core/include/Acts/Geometry/CylinderVolumeHelper.hpp b/Core/include/Acts/Geometry/CylinderVolumeHelper.hpp index 6156230817d..85f20ee8ea9 100644 --- a/Core/include/Acts/Geometry/CylinderVolumeHelper.hpp +++ b/Core/include/Acts/Geometry/CylinderVolumeHelper.hpp @@ -12,7 +12,7 @@ #include "Acts/Geometry/BoundarySurfaceFace.hpp" #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Geometry/ITrackingVolumeHelper.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include @@ -205,7 +205,7 @@ class CylinderVolumeHelper : public ITrackingVolumeHelper { const GeometryContext& gctx, const LayerVector& layers, std::shared_ptr& cylinderVolumeBounds, const Transform3& transform, double& rMinClean, double& rMaxClean, - double& zMinClean, double& zMaxClean, BinningValue& bValue, + double& zMinClean, double& zMaxClean, AxisDirection& bValue, BinningType bType = arbitrary) const; /// Private method - interglue all volumes contained by a TrackingVolume diff --git a/Core/include/Acts/Geometry/CylinderVolumeStack.hpp b/Core/include/Acts/Geometry/CylinderVolumeStack.hpp index 06e1e75dd58..5cfa24d0ad2 100644 --- a/Core/include/Acts/Geometry/CylinderVolumeStack.hpp +++ b/Core/include/Acts/Geometry/CylinderVolumeStack.hpp @@ -11,7 +11,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Geometry/CylinderVolumeBounds.hpp" #include "Acts/Geometry/Volume.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include @@ -73,7 +73,7 @@ class CylinderVolumeStack : public Volume { /// and cannot have a @f$\phi@f$ sector or bevels. /// @note Preconditions are checked on construction CylinderVolumeStack( - std::vector& volumes, BinningValue direction, + std::vector& volumes, AxisDirection direction, AttachmentStrategy strategy = AttachmentStrategy::Midpoint, ResizeStrategy resizeStrategy = ResizeStrategy::Expand, const Logger& logger = Acts::getDummyLogger()); @@ -108,7 +108,7 @@ class CylinderVolumeStack : public Volume { /// @param direction is the binning direction /// @param strategy is the attachment strategy /// @param logger is the logger - void initializeOuterVolume(BinningValue direction, + void initializeOuterVolume(AxisDirection direction, AttachmentStrategy strategy, const Logger& logger); struct VolumeTuple; @@ -126,7 +126,7 @@ class CylinderVolumeStack : public Volume { /// @param a is the first volume /// @param b is the second volume /// @param logger is the logger - static void overlapPrint(BinningValue direction, const VolumeTuple& a, + static void overlapPrint(AxisDirection direction, const VolumeTuple& a, const VolumeTuple& b, const Logger& logger); /// Helper function that checks if volumes are properly aligned @@ -182,7 +182,7 @@ class CylinderVolumeStack : public Volume { std::shared_ptr addGapVolume( const Transform3& transform, const std::shared_ptr& bounds); - BinningValue m_direction{}; + AxisDirection m_direction{}; ResizeStrategy m_resizeStrategy{}; Transform3 m_groupTransform{}; std::vector> m_gaps{}; diff --git a/Core/include/Acts/Geometry/Extent.hpp b/Core/include/Acts/Geometry/Extent.hpp index 840a4ef582c..f34d1de8b05 100644 --- a/Core/include/Acts/Geometry/Extent.hpp +++ b/Core/include/Acts/Geometry/Extent.hpp @@ -11,7 +11,7 @@ /// @note This file is foreseen for the `Geometry` module to replace `Extent` #include "Acts/Definitions/Algebra.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Enumerate.hpp" #include "Acts/Utilities/Helpers.hpp" #include "Acts/Utilities/RangeXD.hpp" @@ -29,20 +29,20 @@ using Envelope = std::array; constexpr Envelope zeroEnvelope = {0, 0}; -/// This struct models a multi-dimensional enveloper along the binning values +/// This struct models a multi-dimensional enveloper along the axis directions struct ExtentEnvelope { /// Access a single envelope configuration - /// @param bValue the binning value + /// @param aDir the axis definition /// @return the envelope - Envelope& operator[](BinningValue bValue) { - return m_values.at(toUnderlying(bValue)); + Envelope& operator[](AxisDirection aDir) { + return m_values.at(toUnderlying(aDir)); } /// Access a single envelope configuration - /// @param bValue the binning value + /// @param aDir the axis direction /// @return the envelope - const Envelope& operator[](BinningValue bValue) const { - return m_values.at(toUnderlying(bValue)); + const Envelope& operator[](AxisDirection aDir) const { + return m_values.at(toUnderlying(aDir)); } /// Constructor from a single envelope that is assigned to all values @@ -77,7 +77,7 @@ struct ExtentEnvelope { Envelope r = zeroEnvelope; Envelope phi = zeroEnvelope; Envelope rPhi = zeroEnvelope; - Envelope h = zeroEnvelope; + Envelope theta = zeroEnvelope; Envelope eta = zeroEnvelope; Envelope mag = zeroEnvelope; }; @@ -85,15 +85,15 @@ struct ExtentEnvelope { /// Constructor using a helper struct for designated initializaion /// @param args the arguments constexpr explicit ExtentEnvelope(Arguments&& args) { - using enum BinningValue; - m_values[toUnderlying(binX)] = args.x; - m_values[toUnderlying(binY)] = args.y; - m_values[toUnderlying(binZ)] = args.z; - m_values[toUnderlying(binR)] = args.r; - m_values[toUnderlying(binPhi)] = args.phi; - m_values[toUnderlying(binH)] = args.h; - m_values[toUnderlying(binEta)] = args.eta; - m_values[toUnderlying(binMag)] = args.mag; + using enum AxisDirection; + m_values[toUnderlying(AxisX)] = args.x; + m_values[toUnderlying(AxisY)] = args.y; + m_values[toUnderlying(AxisZ)] = args.z; + m_values[toUnderlying(AxisR)] = args.r; + m_values[toUnderlying(AxisPhi)] = args.phi; + m_values[toUnderlying(AxisTheta)] = args.theta; + m_values[toUnderlying(AxisEta)] = args.eta; + m_values[toUnderlying(AxisMag)] = args.mag; } /// Comparison operator between envelope sets @@ -105,11 +105,11 @@ struct ExtentEnvelope { } private: - std::array m_values{}; + std::array m_values{}; }; /// A class representing the geometric extent of an object in its possible -/// dimensions, these can be all dimensions that are described as BinningValues +/// dimensions, these can be all dimensions that are described as AxisDirections /// /// The extent object can have an optional envelope in all of those values /// @note that the consistency of the different envelopes is not checked @@ -125,28 +125,28 @@ class Extent { /// Extend with a position vertex /// /// @param vtx the vertex to be used for extending - /// @param bValues the binning values + /// @param aDirs the axis directions /// @param applyEnv boolean to steer if envelope should be applied /// @param fillHistograms is a boolean flag to steer whether the values /// to fill this extent should be stored void extend(const Vector3& vtx, - const std::vector& bValues = allBinningValues(), + const std::vector& aDirs = allAxisDirections(), bool applyEnv = true, bool fillHistograms = false); /// Extend with a set of vectors by iterators /// /// @param start the start iterator of the loop /// @param end the end iterator of the loop - /// @param bValues the binning values + /// @param aDirs the axis directions /// @param applyEnv boolean to steer if envelope should be applied /// @param fillHistograms is a boolean flag to steer whether the values /// to fill this extent should be stored template void extend(const vector_iterator_t& start, const vector_iterator_t& end, - const std::vector& bValues = allBinningValues(), + const std::vector& aDirs = allAxisDirections(), bool applyEnv = true, bool fillHistograms = false) { for (vector_iterator_t vIt = start; vIt < end; ++vIt) { - extend(*vIt, bValues, applyEnv, fillHistograms); + extend(*vIt, aDirs, applyEnv, fillHistograms); } } @@ -158,14 +158,14 @@ class Extent { /// which then is applied to the current one /// /// @param rhs is the other source Extent - /// @param bValues the binning values + /// @param aDirs the axis directions /// @param applyEnv boolean to steer if envelope should be applied /// on the constraint values, if only an envelope is given /// but the value not constraint, then it is always applied /// /// @note that the histogram values can not be filled in this call void extend(const Extent& rhs, - const std::vector& bValues = allBinningValues(), + const std::vector& aDirs = allAxisDirections(), bool applyEnv = true); /// Constrain an extent by another one, this is @@ -180,22 +180,22 @@ class Extent { /// Set a range for a dedicated binning value /// - /// @param bValue the binning identification + /// @param aDir the axis direction /// @param min the minimum parameter /// @param max the maximum parameter - void set(BinningValue bValue, double min, double max); + void set(AxisDirection aDir, double min, double max); /// Set a min value for a dedicated binning value /// - /// @param bValue the binning identification + /// @param aDir the axis direction /// @param min the minimum parameter - void setMin(BinningValue bValue, double min); + void setMin(AxisDirection aDir, double min); /// Set a max value for a dedicated binning value /// - /// @param bValue the binning identification + /// @param aDir the axis direction /// @param max the maximum parameter - void setMax(BinningValue bValue, double max); + void setMax(AxisDirection aDir, double max); /// (re-)Set the envelope /// @@ -204,31 +204,31 @@ class Extent { /// Return the individual 1-dimensional range /// - /// @param bValue is the binning value to be returned + /// @param aDir is the axis direction to be returned /// /// @return a one dimensional arrange - auto range(BinningValue bValue) { return m_range[toUnderlying(bValue)]; } + auto range(AxisDirection aDir) { return m_range[toUnderlying(aDir)]; } /// Return the individual 1-dimensional range /// - /// @param bValue is the binning value to be returned + /// @param aDir is the axis direction to be returned /// /// @return a one dimensional arrange - Range1D range(BinningValue bValue) const; + Range1D range(AxisDirection aDir) const; /// Return the N-dimension range - const RangeXD& range() const; + const RangeXD& range() const; /// Return an D-dimensional sub range according to the /// the given binvalues /// @tparam kSUBDIM the number of sub dimensions - /// @param binValues the binning values + /// @param axisDirections the axis directions /// @return the sub range template RangeXD range( - const std::array& binValues) const { + const std::array& axisDirections) const { RangeXD rRange; - for (auto [i, v] : enumerate(binValues)) { + for (auto [i, v] : enumerate(axisDirections)) { rRange[i] = range(v); } return rRange; @@ -243,47 +243,47 @@ class Extent { /// Return the histogram store /// /// The histogram store can be used for automated binning detection - const std::array, numBinningValues()>& valueHistograms() + const std::array, numAxisDirections()>& valueHistograms() const; /// Access the minimum parameter /// - /// @param bValue the binning identification - double min(BinningValue bValue) const { - return m_range[toUnderlying(bValue)].min(); + /// @param aDir the axis direction + double min(AxisDirection aDir) const { + return m_range[toUnderlying(aDir)].min(); } /// Access the maximum parameter /// - /// @param bValue the binning identification - double max(BinningValue bValue) const { - return m_range[toUnderlying(bValue)].max(); + /// @param aDir the axis direction + double max(AxisDirection aDir) const { + return m_range[toUnderlying(aDir)].max(); } /// Access the midpoint /// - /// @param bValue the binning identification - double medium(BinningValue bValue) const { - return 0.5 * (m_range[toUnderlying(bValue)].min() + - m_range[toUnderlying(bValue)].max()); + /// @param aDir the axis direction + double medium(AxisDirection aDir) const { + return 0.5 * (m_range[toUnderlying(aDir)].min() + + m_range[toUnderlying(aDir)].max()); } /// Access the parameter interval (i.e. the range span) /// - /// @param bValue the binning identification - double interval(BinningValue bValue) const { - return m_range[toUnderlying(bValue)].size(); + /// @param aDir the axis direction + double interval(AxisDirection aDir) const { + return m_range[toUnderlying(aDir)].size(); } /// Contains check /// /// @param rhs the extent that is check if it is contained - /// @param bValue is the binning value, if set to nullopt + /// @param aDir is the axis direction, if set to nullopt /// the check on all is done /// /// @return true if the rhs is contained bool contains(const Extent& rhs, - std::optional bValue = std::nullopt) const; + std::optional aDir = std::nullopt) const; /// Contains check for a single point /// @@ -295,17 +295,17 @@ class Extent { /// Intersection checks /// /// @param rhs the extent that is check for intersection - /// @param bValue is the binning value, if set to nulloptr + /// @param aDir is the axis direction, if set to nulloptr /// the check on all is done /// /// @return true if the rhs intersects bool intersects(const Extent& rhs, - std::optional bValue = std::nullopt) const; + std::optional aDir = std::nullopt) const; /// Check if this object constrains a given direction /// - /// @param bValue is the binning value - bool constrains(BinningValue bValue) const; + /// @param aDir is the axis direction + bool constrains(AxisDirection aDir) const; /// Check if this object constrains any direction bool constrains() const; @@ -317,20 +317,20 @@ class Extent { private: /// A bitset that remembers the constraint values - std::bitset m_constrains{0}; + std::bitset m_constrains{0}; /// The actual range store - RangeXD m_range; + RangeXD m_range; /// A potential envelope ExtentEnvelope m_envelope = ExtentEnvelope::Zero(); /// (Optional) Value histograms for bin detection - std::array, numBinningValues()> m_valueHistograms; + std::array, numAxisDirections()> m_valueHistograms; }; -inline Range1D Acts::Extent::range(BinningValue bValue) const { - return m_range[toUnderlying(bValue)]; +inline Range1D Acts::Extent::range(AxisDirection aDir) const { + return m_range[toUnderlying(aDir)]; } -inline const RangeXD& Extent::range() const { +inline const RangeXD& Extent::range() const { return m_range; } @@ -342,7 +342,7 @@ inline const ExtentEnvelope& Extent::envelope() const { return m_envelope; } -inline const std::array, numBinningValues()>& +inline const std::array, numAxisDirections()>& Extent::valueHistograms() const { return m_valueHistograms; } diff --git a/Core/include/Acts/Geometry/GenericCuboidVolumeBounds.hpp b/Core/include/Acts/Geometry/GenericCuboidVolumeBounds.hpp index 5f063a62842..93ebeaa828b 100644 --- a/Core/include/Acts/Geometry/GenericCuboidVolumeBounds.hpp +++ b/Core/include/Acts/Geometry/GenericCuboidVolumeBounds.hpp @@ -89,13 +89,13 @@ class GenericCuboidVolumeBounds : public VolumeBounds { const Vector3& envelope = {0, 0, 0}, const Volume* entity = nullptr) const final; - /// Get the canonical binning values, i.e. the binning values - /// for that fully describe the shape's extent + /// Get the canonical direction values, i.e. the axis directions + /// that fully describe the shape's extent /// /// @return vector of canonical binning values - std::vector canonicalBinning() const override { - return {Acts::BinningValue::binX, Acts::BinningValue::binY, - Acts::BinningValue::binZ}; + std::vector canonicalAxes() const override { + using enum AxisDirection; + return {AxisX, AxisY, AxisZ}; }; /// @param sl is the output stream to be written into diff --git a/Core/include/Acts/Geometry/GeometryObject.hpp b/Core/include/Acts/Geometry/GeometryObject.hpp index a3754996a1e..191d2234cd5 100644 --- a/Core/include/Acts/Geometry/GeometryObject.hpp +++ b/Core/include/Acts/Geometry/GeometryObject.hpp @@ -12,7 +12,7 @@ #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Geometry/GeometryIdentifier.hpp" #include "Acts/Geometry/Polyhedron.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/VectorHelpers.hpp" namespace Acts { @@ -20,7 +20,7 @@ namespace Acts { /// Base class to provide GeometryIdentifier interface: /// - simple set and get /// -/// It also provides the binningPosition method for +/// It also provides the referencePosition method for /// Geometry geometrical object to be binned in BinnedArrays /// class GeometryObject { @@ -53,20 +53,20 @@ class GeometryObject { /// Force a binning position method /// /// @param gctx The current geometry context object, e.g. alignment - /// @param bValue is the value in which you want to bin + /// @param aDir is the value for which the reference position is requesed /// /// @return vector 3D used for the binning schema - virtual Vector3 binningPosition(const GeometryContext& gctx, - BinningValue bValue) const = 0; + virtual Vector3 referencePosition(const GeometryContext& gctx, + AxisDirection aDir) const = 0; /// Implement the binningValue /// /// @param gctx The current geometry context object, e.g. alignment - /// @param bValue is the dobule in which you want to bin + /// @param aDir is the dobule in which you want to bin /// /// @return float to be used for the binning schema - virtual double binningPositionValue(const GeometryContext& gctx, - BinningValue bValue) const; + virtual double referencePositionValue(const GeometryContext& gctx, + AxisDirection aDir) const; /// Set the value /// @@ -86,9 +86,9 @@ inline void GeometryObject::assignGeometryId( m_geometryId = geometryId; } -inline double GeometryObject::binningPositionValue(const GeometryContext& gctx, - BinningValue bValue) const { - return VectorHelpers::cast(binningPosition(gctx, bValue), bValue); +inline double GeometryObject::referencePositionValue( + const GeometryContext& gctx, AxisDirection aDir) const { + return VectorHelpers::cast(referencePosition(gctx, aDir), aDir); } } // namespace Acts diff --git a/Core/include/Acts/Geometry/GeometryObjectSorter.hpp b/Core/include/Acts/Geometry/GeometryObjectSorter.hpp index 5783103d6af..6de46fbb86a 100644 --- a/Core/include/Acts/Geometry/GeometryObjectSorter.hpp +++ b/Core/include/Acts/Geometry/GeometryObjectSorter.hpp @@ -15,6 +15,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Geometry/GeometryContext.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/VectorHelpers.hpp" #include @@ -27,8 +28,8 @@ class ObjectSorterT { public: /// Constructor from a binning value /// - /// @param bValue is the value in which the binning is done - ObjectSorterT(BinningValue bValue) : m_binningValue(bValue) {} + /// @param aDir is the direction in which the sorting is done + explicit ObjectSorterT(AxisDirection aDir) : m_sortingDirection(aDir) {} /// Comparison operator /// @@ -37,32 +38,33 @@ class ObjectSorterT { /// /// @return boolean indicator bool operator()(T one, T two) const { - using Acts::VectorHelpers::eta; - using Acts::VectorHelpers::perp; - using Acts::VectorHelpers::phi; - switch (m_binningValue) { + using VectorHelpers::eta; + using VectorHelpers::perp; + using VectorHelpers::phi; + using enum AxisDirection; + switch (m_sortingDirection) { // compare on x - case BinningValue::binX: { + case AxisX: { return one.x() < two.x(); } // compare on y - case BinningValue::binY: { + case AxisY: { return one.y() < two.y(); } // compare on z - case BinningValue::binZ: { + case AxisZ: { return one.z() < two.z(); } // compare on r - case BinningValue::binR: { + case AxisR: { return perp(one) < perp(two); } // compare on phi - case BinningValue::binPhi: { + case AxisPhi: { return phi(one) < phi(two); } // compare on eta - case BinningValue::binEta: { + case AxisEta: { return eta(one) < eta(two); } // default for the moment @@ -72,10 +74,10 @@ class ObjectSorterT { } } - BinningValue binningValue() const { return m_binningValue; } + AxisDirection sortingDirection() const { return m_sortingDirection; } private: - BinningValue m_binningValue; ///< the binning value + AxisDirection m_sortingDirection; ///< the binning value }; /// This will check on absolute distance @@ -84,10 +86,10 @@ class DistanceSorterT { public: /// Constructor from a binning value /// - /// @param bValue is the value in which the binning is done + /// @param aDir is the value in which the sorting is done /// @param reference is the reference point - DistanceSorterT(BinningValue bValue, Vector3 reference) - : m_binningValue(bValue), + DistanceSorterT(AxisDirection aDir, Vector3 reference) + : m_sortingDirection(aDir), m_reference(reference), m_refR(VectorHelpers::perp(reference)), m_refPhi(VectorHelpers::phi(reference)), @@ -103,41 +105,41 @@ class DistanceSorterT { using Acts::VectorHelpers::eta; using Acts::VectorHelpers::perp; using Acts::VectorHelpers::phi; - // switch the binning value - // - binX, binY, binZ, binR, binPhi, binRPhi, binH, binEta - switch (m_binningValue) { + // switch the sorting value + // - AxisX, AxisY, AxisZ, AxisR, AxisPhi, AxisRPhi, AxisTheta, AxisEta + switch (m_sortingDirection) { // compare on diff x - case BinningValue::binX: { + case AxisDirection::AxisX: { double diffOneX = one.x() - m_reference.x(); double diffTwoX = two.x() - m_reference.x(); return std::abs(diffOneX) < std::abs(diffTwoX); } // compare on diff y - case BinningValue::binY: { + case AxisDirection::AxisY: { double diffOneY = one.y() - m_reference.y(); double diffTwoY = two.y() - m_reference.y(); return std::abs(diffOneY) < std::abs(diffTwoY); } // compare on diff z - case BinningValue::binZ: { + case AxisDirection::AxisZ: { double diffOneZ = one.z() - m_reference.z(); double diffTwoZ = two.z() - m_reference.z(); return std::abs(diffOneZ) < std::abs(diffTwoZ); } // compare on r - case BinningValue::binR: { + case AxisDirection::AxisR: { double diffOneR = perp(one) - m_refR; double diffTwoR = perp(two) - m_refR; return std::abs(diffOneR) < std::abs(diffTwoR); } // compare on phi /// @todo add cyclic value - case BinningValue::binPhi: { + case AxisDirection::AxisPhi: { double diffOnePhi = phi(one) - m_refPhi; double diffTwoPhi = phi(two) - m_refPhi; return std::abs(diffOnePhi) < std::abs(diffTwoPhi); } // compare on eta - case BinningValue::binEta: { + case AxisDirection::AxisEta: { double diffOneEta = eta(one) - m_refEta; double diffTwoEta = eta(two) - m_refEta; return std::abs(diffOneEta) < std::abs(diffTwoEta); @@ -152,7 +154,7 @@ class DistanceSorterT { } private: - BinningValue m_binningValue; ///< the binning value + AxisDirection m_sortingDirection; ///< the sorting direction T m_reference; double m_refR; double m_refPhi; @@ -162,35 +164,37 @@ class DistanceSorterT { template class GeometryObjectSorterT { public: - /// Constructor from a binning value + /// Constructor from a sorting direction /// /// @param gctx The geometry context to use - /// @param bValue is the value in which the binning is done + /// @param aDir is the direction in which the sorting is done /// @param transform is an optional transform to be performed - GeometryObjectSorterT(const GeometryContext& gctx, BinningValue bValue, + GeometryObjectSorterT(const GeometryContext& gctx, AxisDirection aDir, std::shared_ptr transform = nullptr) : m_context(gctx), - m_objectSorter(bValue), + m_objectSorter(aDir), m_transform(std::move(transform)) {} /// Comparison operator /// - /// @tparam one first object - /// @tparam two second object + /// @tparam one is the first object + /// @tparam two is the second object /// /// @return boolean indicator bool operator()(T one, T two) const { // get the pos one / pos two - Vector3 posOne = - m_transform - ? m_transform->inverse() * - one->binningPosition(m_context, m_objectSorter.binningValue()) - : one->binningPosition(m_context, m_objectSorter.binningValue()); - Vector3 posTwo = - m_transform - ? m_transform->inverse() * - two->binningPosition(m_context, m_objectSorter.binningValue()) - : two->binningPosition(m_context, m_objectSorter.binningValue()); + Vector3 posOne = m_transform + ? m_transform->inverse() * + one->referencePosition( + m_context, m_objectSorter.sortingDirection()) + : one->referencePosition( + m_context, m_objectSorter.sortingDirection()); + Vector3 posTwo = m_transform + ? m_transform->inverse() * + two->referencePosition( + m_context, m_objectSorter.sortingDirection()) + : two->referencePosition( + m_context, m_objectSorter.sortingDirection()); // now call the distance sorter return m_objectSorter.operator()(posOne, posTwo); } diff --git a/Core/include/Acts/Geometry/GridPortalLink.hpp b/Core/include/Acts/Geometry/GridPortalLink.hpp index 94e98867905..7ba790b4d82 100644 --- a/Core/include/Acts/Geometry/GridPortalLink.hpp +++ b/Core/include/Acts/Geometry/GridPortalLink.hpp @@ -15,6 +15,7 @@ #include "Acts/Surfaces/CylinderSurface.hpp" #include "Acts/Surfaces/DiscSurface.hpp" #include "Acts/Surfaces/PlaneSurface.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Grid.hpp" #include "Acts/Utilities/Logger.hpp" @@ -42,7 +43,7 @@ class GridPortalLink : public PortalLinkBase { /// @param surface The surface /// @param direction The binning direction GridPortalLink(std::shared_ptr surface, - BinningValue direction) + AxisDirection direction) : PortalLinkBase(std::move(surface)), m_direction(direction) {} public: @@ -56,15 +57,15 @@ class GridPortalLink : public PortalLinkBase { /// @return A unique pointer to the grid portal link template static std::unique_ptr> make( - std::shared_ptr surface, BinningValue direction, + std::shared_ptr surface, AxisDirection direction, axis_t&& axis) { - using enum BinningValue; + using enum AxisDirection; if (dynamic_cast(surface.get()) != nullptr) { - if (direction != binZ && direction != binRPhi) { + if (direction != AxisZ && direction != AxisRPhi) { throw std::invalid_argument{"Invalid binning direction"}; } } else if (dynamic_cast(surface.get()) != nullptr && - direction != binR && direction != binPhi) { + direction != AxisR && direction != AxisPhi) { throw std::invalid_argument{"Invalid binning direction"}; } @@ -84,11 +85,11 @@ class GridPortalLink : public PortalLinkBase { template static std::unique_ptr> make( std::shared_ptr surface, axis_1_t axis1, axis_2_t axis2) { - std::optional direction; + std::optional direction; if (dynamic_cast(surface.get()) != nullptr) { - direction = BinningValue::binRPhi; + direction = AxisDirection::AxisRPhi; } else if (dynamic_cast(surface.get()) != nullptr) { - direction = BinningValue::binR; + direction = AxisDirection::AxisR; } return std::make_unique>( @@ -102,7 +103,7 @@ class GridPortalLink : public PortalLinkBase { /// @return A unique pointer to the grid portal link static std::unique_ptr make( const std::shared_ptr& surface, TrackingVolume& volume, - BinningValue direction); + AxisDirection direction); /// Merge two grid portal links into a single one. The routine can merge /// one-dimenaional, tow-dimensional and mixed links. The merge will try to @@ -297,7 +298,7 @@ class GridPortalLink : public PortalLinkBase { /// to be handled by th caller! Invalid input is handled /// via exceptions. static std::unique_ptr merge( - const GridPortalLink& a, const GridPortalLink& b, BinningValue direction, + const GridPortalLink& a, const GridPortalLink& b, AxisDirection direction, const Logger& logger = getDummyLogger()); /// Return the associated grid in a type-erased form @@ -324,7 +325,7 @@ class GridPortalLink : public PortalLinkBase { /// @note For 2D grids, this will always be the loc0 /// direction, depending on the surface type. /// @return The binning direction - BinningValue direction() const { return m_direction; } + AxisDirection direction() const { return m_direction; } /// Helper function to fill the bin contents after merging. /// This called by the merging routine, and requires access to the internal @@ -335,7 +336,7 @@ class GridPortalLink : public PortalLinkBase { /// @param direction The merging direction /// @param logger The logger to use for messages static void fillMergedGrid(const GridPortalLink& a, const GridPortalLink& b, - GridPortalLink& merged, BinningValue direction, + GridPortalLink& merged, AxisDirection direction, const Logger& logger); /// Helper function that prints a textual representation of the grid with the @@ -401,7 +402,7 @@ class GridPortalLink : public PortalLinkBase { virtual const TrackingVolume* atLocalBins(IndexType indices) const = 0; private: - BinningValue m_direction; + AxisDirection m_direction; }; /// Concrete class deriving from @c GridPortalLink that boxes a concrete grid for lookup. @@ -422,19 +423,19 @@ class GridPortalLinkT : public GridPortalLink { /// @param axes The axes for the grid /// @note The axes are checked for consistency with the bounds of @p surface. GridPortalLinkT(std::shared_ptr surface, - BinningValue direction, Axes&&... axes) + AxisDirection direction, Axes&&... axes) : GridPortalLink(std::move(surface), direction), m_grid(std::tuple{std::move(axes)...}) { - using enum BinningValue; + using enum AxisDirection; if (const auto* cylinder = dynamic_cast(m_surface.get())) { checkConsistency(*cylinder); - if (direction == binRPhi) { - m_projection = &projection; - } else if (direction == binZ) { - m_projection = &projection; + if (direction == AxisRPhi) { + m_projection = &projection; + } else if (direction == AxisZ) { + m_projection = &projection; } else { throw std::invalid_argument{"Invalid binning direction"}; } @@ -443,10 +444,10 @@ class GridPortalLinkT : public GridPortalLink { dynamic_cast(m_surface.get())) { checkConsistency(*disc); - if (direction == binR) { - m_projection = &projection; - } else if (direction == BinningValue::binPhi) { - m_projection = &projection; + if (direction == AxisR) { + m_projection = &projection; + } else if (direction == AxisDirection::AxisPhi) { + m_projection = &projection; } else { throw std::invalid_argument{"Invalid binning direction"}; } @@ -580,37 +581,37 @@ class GridPortalLinkT : public GridPortalLink { private: /// Helper function that's assigned to project from the 2D local position to a /// possible 1D grid. - template + template static ActsVector projection(const Vector2& position) { - using enum BinningValue; + using enum AxisDirection; if constexpr (DIM == 2) { return position; } else { if constexpr (std::is_same_v) { - static_assert(direction == binRPhi || direction == binZ, + static_assert(direction == AxisRPhi || direction == AxisZ, "Invalid binning direction"); - if constexpr (direction == binRPhi) { + if constexpr (direction == AxisRPhi) { return ActsVector<1>{position[0]}; - } else if constexpr (direction == binZ) { + } else if constexpr (direction == AxisZ) { return ActsVector<1>{position[1]}; } } else if constexpr (std::is_same_v) { - static_assert(direction == binR || direction == binPhi, + static_assert(direction == AxisR || direction == AxisPhi, "Invalid binning direction"); - if constexpr (direction == binR) { + if constexpr (direction == AxisR) { return ActsVector<1>{position[0]}; - } else if constexpr (direction == binPhi) { + } else if constexpr (direction == AxisPhi) { return ActsVector<1>{position[1]}; } } else if constexpr (std::is_same_v) { - static_assert(direction == binX || direction == binY, + static_assert(direction == AxisX || direction == AxisY, "Invalid binning direction"); - if constexpr (direction == binX) { + if constexpr (direction == AxisX) { return ActsVector<1>{position[0]}; - } else if constexpr (direction == binY) { + } else if constexpr (direction == AxisY) { return ActsVector<1>{position[1]}; } } diff --git a/Core/include/Acts/Geometry/ILayerArrayCreator.hpp b/Core/include/Acts/Geometry/ILayerArrayCreator.hpp index d2011c89a21..b36291438cc 100644 --- a/Core/include/Acts/Geometry/ILayerArrayCreator.hpp +++ b/Core/include/Acts/Geometry/ILayerArrayCreator.hpp @@ -50,6 +50,6 @@ class ILayerArrayCreator { virtual std::unique_ptr layerArray( const GeometryContext& gctx, const LayerVector& layers, double min, double max, BinningType btype = arbitrary, - BinningValue bvalue = BinningValue::binX) const = 0; + AxisDirection bvalue = AxisDirection::AxisX) const = 0; }; } // namespace Acts diff --git a/Core/include/Acts/Geometry/ITrackingVolumeArrayCreator.hpp b/Core/include/Acts/Geometry/ITrackingVolumeArrayCreator.hpp index 01a8efd850a..615ac487577 100644 --- a/Core/include/Acts/Geometry/ITrackingVolumeArrayCreator.hpp +++ b/Core/include/Acts/Geometry/ITrackingVolumeArrayCreator.hpp @@ -9,8 +9,8 @@ #pragma once #include "Acts/Geometry/GeometryContext.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinnedArray.hpp" -#include "Acts/Utilities/BinningType.hpp" #include #include @@ -50,11 +50,11 @@ class ITrackingVolumeArrayCreator { /// /// @param [in] gctx the geometry context for this building /// @param vols are the TrackingVolumes ordered in a tracker - /// @param bVal is the binning value for the volume binning + /// @param aDir is the axis direction for the volume binning /// /// @return shared pointer to a new TrackingVolumeArray virtual std::shared_ptr trackingVolumeArray( const GeometryContext& gctx, const TrackingVolumeVector& vols, - BinningValue bVal) const = 0; + AxisDirection aDir) const = 0; }; } // namespace Acts diff --git a/Core/include/Acts/Geometry/LayerArrayCreator.hpp b/Core/include/Acts/Geometry/LayerArrayCreator.hpp index 5358483cdde..dfccc615f3d 100644 --- a/Core/include/Acts/Geometry/LayerArrayCreator.hpp +++ b/Core/include/Acts/Geometry/LayerArrayCreator.hpp @@ -10,7 +10,7 @@ #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Geometry/ILayerArrayCreator.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include @@ -54,13 +54,13 @@ class LayerArrayCreator : public ILayerArrayCreator { /// @param min is the minimum value for binning /// @param max is the maximum value for binning /// @param bType is the binning type - /// @param bValue is the value in which the binning should be done + /// @param aDir is the axis direction for the layer binning /// /// @return unique pointer to a newly created LayerArray std::unique_ptr layerArray( const GeometryContext& gctx, const LayerVector& layersInput, double min, double max, BinningType bType = arbitrary, - BinningValue bValue = BinningValue::binX) const override; + AxisDirection aDir = AxisDirection::AxisX) const override; /// set logging instance void setLogger(std::unique_ptr logger) { @@ -79,11 +79,11 @@ class LayerArrayCreator : public ILayerArrayCreator { /// @param layer object and thus needs the /// @param gctx geometry context. /// - /// @param bValue is the Binning value for the layer array + /// @param aDir is the axis direction for the binning /// @param offset is the sift for the navigation layer std::shared_ptr createNavigationSurface(const GeometryContext& gctx, const Layer& layer, - BinningValue bValue, + AxisDirection aDir, double offset) const; }; diff --git a/Core/include/Acts/Geometry/LayerCreator.hpp b/Core/include/Acts/Geometry/LayerCreator.hpp index b7996f68912..04a864f8055 100644 --- a/Core/include/Acts/Geometry/LayerCreator.hpp +++ b/Core/include/Acts/Geometry/LayerCreator.hpp @@ -13,6 +13,7 @@ #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Geometry/ProtoLayer.hpp" #include "Acts/Surfaces/SurfaceArray.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinningType.hpp" #include "Acts/Utilities/Logger.hpp" @@ -174,7 +175,7 @@ class LayerCreator { /// bValue /// @param [in] bins2 is the number of bins in the orthogonal direction to @p /// bValue - /// @param [in] bValue Direction of the aligned surfaces + /// @param [in] aDir Direction of the aligned surfaces /// @param [in] transform is the (optional) transform of the layer /// @param [in] _protoLayer (optional) proto layer specifying the dimensions /// and @@ -187,7 +188,7 @@ class LayerCreator { MutableLayerPtr planeLayer( const GeometryContext& gctx, std::vector> surfaces, std::size_t bins1, - std::size_t bins2, BinningValue bValue, + std::size_t bins2, AxisDirection aDir, std::optional _protoLayer = std::nullopt, const Transform3& transform = Transform3::Identity(), std::unique_ptr ad = nullptr) const; diff --git a/Core/include/Acts/Geometry/NavigationLayer.hpp b/Core/include/Acts/Geometry/NavigationLayer.hpp index 6c80477d98a..63536280a5a 100644 --- a/Core/include/Acts/Geometry/NavigationLayer.hpp +++ b/Core/include/Acts/Geometry/NavigationLayer.hpp @@ -13,7 +13,7 @@ #include "Acts/Geometry/Layer.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" #include "Acts/Surfaces/Surface.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include #include @@ -44,12 +44,12 @@ class NavigationLayer : public Layer { /// The binning position method /// /// @param gctx The current geometry context object, e.g. alignment - /// @param bValue is the value for which the binning position is requested + /// @param aDir is the axis direction for which the reference position is requested /// - as default the center is given, but may be overloaded /// /// @return The return vector can be used for binning in a TrackingVolume - Vector3 binningPosition(const GeometryContext& gctx, - BinningValue bValue) const final; + Vector3 referencePosition(const GeometryContext& gctx, + AxisDirection aDir) const final; /// Default Constructor - deleted NavigationLayer() = delete; @@ -117,9 +117,9 @@ inline Surface& NavigationLayer::surfaceRepresentation() { return *(const_cast(m_surfaceRepresentation.get())); } -inline Vector3 NavigationLayer::binningPosition(const GeometryContext& gctx, - BinningValue bValue) const { - return m_surfaceRepresentation->binningPosition(gctx, bValue); +inline Vector3 NavigationLayer::referencePosition(const GeometryContext& gctx, + AxisDirection aDir) const { + return m_surfaceRepresentation->referencePosition(gctx, aDir); } inline bool NavigationLayer::isOnLayer( diff --git a/Core/include/Acts/Geometry/Portal.hpp b/Core/include/Acts/Geometry/Portal.hpp index 3d1a065026f..de2018a79d4 100644 --- a/Core/include/Acts/Geometry/Portal.hpp +++ b/Core/include/Acts/Geometry/Portal.hpp @@ -10,7 +10,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/Direction.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include "Acts/Utilities/Result.hpp" @@ -163,7 +163,7 @@ class Portal { /// @param direction The direction of the merge (e.g. along z) /// @param logger The logger to push output to static Portal merge(const GeometryContext& gctx, Portal& aPortal, - Portal& bPortal, BinningValue direction, + Portal& bPortal, AxisDirection direction, const Logger& logger = getDummyLogger()); /// Resolve the volume for a 3D position and a direction diff --git a/Core/include/Acts/Geometry/PortalLinkBase.hpp b/Core/include/Acts/Geometry/PortalLinkBase.hpp index 2f8273f10b5..1d872f38562 100644 --- a/Core/include/Acts/Geometry/PortalLinkBase.hpp +++ b/Core/include/Acts/Geometry/PortalLinkBase.hpp @@ -10,7 +10,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/Tolerance.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include "Acts/Utilities/Result.hpp" @@ -75,7 +75,7 @@ class PortalLinkBase { /// @return The merged portal link static std::unique_ptr merge( std::unique_ptr a, std::unique_ptr b, - BinningValue direction, const Logger& logger = getDummyLogger()); + AxisDirection direction, const Logger& logger = getDummyLogger()); /// Stream output function /// @param os The output stream @@ -111,7 +111,7 @@ class PortalLinkBase { /// executed. static void checkMergePreconditions(const PortalLinkBase& a, const PortalLinkBase& b, - BinningValue direction); + AxisDirection direction); std::shared_ptr m_surface; }; diff --git a/Core/include/Acts/Geometry/PortalShell.hpp b/Core/include/Acts/Geometry/PortalShell.hpp index fe9f606c576..b587af89cce 100644 --- a/Core/include/Acts/Geometry/PortalShell.hpp +++ b/Core/include/Acts/Geometry/PortalShell.hpp @@ -9,7 +9,7 @@ #pragma once #include "Acts/Geometry/CylinderVolumeBounds.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include @@ -179,7 +179,7 @@ class CylinderStackPortalShell : public CylinderPortalShell { /// @param logger A logging instance for debugging CylinderStackPortalShell(const GeometryContext& gctx, std::vector shells, - BinningValue direction, + AxisDirection direction, const Logger& logger = getDummyLogger()); /// @copydoc PortalShellBase::size @@ -205,7 +205,7 @@ class CylinderStackPortalShell : public CylinderPortalShell { std::string label() const override; private: - BinningValue m_direction; + AxisDirection m_direction; std::vector m_shells; bool m_hasInnerCylinder{true}; }; diff --git a/Core/include/Acts/Geometry/ProtoLayer.hpp b/Core/include/Acts/Geometry/ProtoLayer.hpp index cf33f255e15..93ea871eb55 100644 --- a/Core/include/Acts/Geometry/ProtoLayer.hpp +++ b/Core/include/Acts/Geometry/ProtoLayer.hpp @@ -11,7 +11,7 @@ #include "Acts/Geometry/Extent.hpp" #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Surfaces/Surface.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include #include @@ -79,24 +79,24 @@ struct ProtoLayer { ProtoLayer() = default; /// Get the parameters : min - /// @param bval The accessed binning value + /// @param aDir The accessed axis direction /// @param addenv The steering if enevlope is added or not - double min(BinningValue bval, bool addenv = true) const; + double min(AxisDirection aDir, bool addenv = true) const; // Get the parameters : max - /// @param bval The accessed binning value + /// @param aDir The accessed axis direction /// @param addenv The steering if enevlope is added or not - double max(BinningValue bval, bool addenv = true) const; + double max(AxisDirection aDir, bool addenv = true) const; // Get the parameters : max - /// @param bval The accessed binning value + /// @param aDir The accessed axis direction /// @param addenv The steering if enevlope is added or not - double medium(BinningValue bval, bool addenv = true) const; + double medium(AxisDirection aDir, bool addenv = true) const; // Get the parameters : max - /// @param bval The accessed binning value + /// @param aDir The accessed axis direction /// @param addenv The steering if enevlope is added or not - double range(BinningValue bval, bool addenv = true) const; + double range(AxisDirection aDir, bool addenv = true) const; /// Output to ostream /// @param sl the input ostream diff --git a/Core/include/Acts/Geometry/ProtoLayerHelper.hpp b/Core/include/Acts/Geometry/ProtoLayerHelper.hpp index 33ca14718b4..fe187954903 100644 --- a/Core/include/Acts/Geometry/ProtoLayerHelper.hpp +++ b/Core/include/Acts/Geometry/ProtoLayerHelper.hpp @@ -10,7 +10,7 @@ #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Geometry/ProtoLayer.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include @@ -30,7 +30,7 @@ struct ProtoLayer; /// @todo write more documentation on how this is done class ProtoLayerHelper { public: - using SortingConfig = std::pair; + using SortingConfig = std::pair; struct Config {}; diff --git a/Core/include/Acts/Geometry/SurfaceArrayCreator.hpp b/Core/include/Acts/Geometry/SurfaceArrayCreator.hpp index 9906fda7939..a1076f8c6ba 100644 --- a/Core/include/Acts/Geometry/SurfaceArrayCreator.hpp +++ b/Core/include/Acts/Geometry/SurfaceArrayCreator.hpp @@ -14,7 +14,7 @@ #include "Acts/Geometry/ProtoLayer.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Surfaces/SurfaceArray.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinningType.hpp" #include "Acts/Utilities/Logger.hpp" @@ -36,8 +36,9 @@ namespace Test { struct SurfaceArrayCreatorFixture; } -using SurfaceMatcher = std::function; +using SurfaceMatcher = + std::function; using SurfaceVector = std::vector; using SurfaceMatrix = std::vector; @@ -59,7 +60,7 @@ class SurfaceArrayCreator { struct ProtoAxis { BinningType bType = BinningType::equidistant; - BinningValue bValue = BinningValue::binX; + AxisDirection axisDir = AxisDirection::AxisX; std::size_t nBins = 0; AxisScalar min = 0; AxisScalar max = 0; @@ -216,10 +217,10 @@ class SurfaceArrayCreator { /// @warning This function requires the plane aligned with either the x-, y- /// or z-axis /// @param [in] bins1 is the number of bins in the orthogonal direction to @p - /// bValue + /// aDir /// @param [in] bins2 is the number of bins in the orthogonal direction to @p - /// bValue - /// @param [in] bValue Direction of the aligned surfaces + /// aDir + /// @param [in] aDir Direction of the aligned surfaces /// @param [in] protoLayerOpt Optional @c ProtoLayer instance /// @param [in] transform is the (optional) additional transform applied /// @@ -227,26 +228,26 @@ class SurfaceArrayCreator { std::unique_ptr surfaceArrayOnPlane( const GeometryContext& gctx, std::vector> surfaces, std::size_t bins1, - std::size_t bins2, BinningValue bValue, + std::size_t bins2, AxisDirection aDir, std::optional protoLayerOpt = std::nullopt, const Transform3& transform = Transform3::Identity()) const; /// Static check function for surface equivalent /// /// @param [in] gctx the geometry context for this check - /// @param bValue the binning value for the binning + /// @param aDir the axis direction for the binning /// @param a first surface for checking /// @param b second surface for checking static bool isSurfaceEquivalent(const GeometryContext& gctx, - BinningValue bValue, const Surface* a, + AxisDirection aDir, const Surface* a, const Surface* b) { using namespace UnitLiterals; using VectorHelpers::perp; - if (bValue == Acts::BinningValue::binPhi) { + if (aDir == Acts::AxisDirection::AxisPhi) { // Take the two binning positions - auto pos1 = a->binningPosition(gctx, BinningValue::binR), - pos2 = b->binningPosition(gctx, BinningValue::binR); + Vector3 pos1 = a->referencePosition(gctx, AxisDirection::AxisR); + Vector3 pos2 = b->referencePosition(gctx, AxisDirection::AxisR); // Project them on the (x, y) plane, where Phi angles are calculated auto proj1 = pos1.head<2>(), proj2 = pos2.head<2>(); @@ -261,15 +262,15 @@ class SurfaceArrayCreator { return std::abs(dPhi) < std::numbers::pi / 180.; } - if (bValue == Acts::BinningValue::binZ) { - return (std::abs(a->binningPosition(gctx, BinningValue::binR).z() - - b->binningPosition(gctx, BinningValue::binR).z()) < + if (aDir == Acts::AxisDirection::AxisZ) { + return (std::abs(a->referencePosition(gctx, AxisDirection::AxisR).z() - + b->referencePosition(gctx, AxisDirection::AxisR).z()) < 1_um); } - if (bValue == Acts::BinningValue::binR) { - return (std::abs(perp(a->binningPosition(gctx, BinningValue::binR)) - - perp(b->binningPosition(gctx, BinningValue::binR))) < + if (aDir == Acts::AxisDirection::AxisR) { + return (std::abs(perp(a->referencePosition(gctx, AxisDirection::AxisR)) - + perp(b->referencePosition(gctx, AxisDirection::AxisR))) < 1_um); } @@ -295,7 +296,7 @@ class SurfaceArrayCreator { std::size_t determineBinCount(const GeometryContext& gctx, const std::vector& surfaces, - BinningValue bValue) const; + AxisDirection aDir) const; /// SurfaceArrayCreator internal method /// Creates a variable @c ProtoAxis from a vector of (unsorted) surfaces with @@ -311,8 +312,8 @@ class SurfaceArrayCreator { /// @todo implement for x,y binning /// @param [in] gctx the geometry context for this call /// @param surfaces are the sensitive surfaces to be - /// @param bValue the BinningValue in which direction should be binned - /// (currently possible: binPhi, binR, binZ) + /// @param aDir the AxisDirection in which direction should be binned + /// (currently possible: AxisPhi, AxisR, AxisZ) /// @param protoLayer Instance of @c ProtoLayer holding generic layer info /// @param transform is the (optional) additional transform applied /// @return Instance of @c ProtoAxis containing determined properties @@ -320,8 +321,7 @@ class SurfaceArrayCreator { /// into an actual @c Axis object to be used ProtoAxis createVariableAxis(const GeometryContext& gctx, const std::vector& surfaces, - BinningValue bValue, - const ProtoLayer& protoLayer, + AxisDirection aDir, const ProtoLayer& protoLayer, Transform3& transform) const; /// SurfaceArrayCreator internal method @@ -338,8 +338,8 @@ class SurfaceArrayCreator { /// @todo implement for x,y binning /// @param [in] gctx the geometry context for this call /// @param surfaces are the sensitive surfaces to be - /// @param bValue the BinningValue in which direction should be binned - /// (currently possible: binPhi, binR, binZ) + /// @param aDir the AxisDirection in which direction should be binned + /// (currently possible: AxisPhi, AxisR, AxisZ) /// @param protoLayer Instance of @c ProtoLayer holding generic layer info /// @param transform is the (optional) additional transform applied /// @param nBins Number of bins to use, 0 means determine automatically @@ -348,7 +348,7 @@ class SurfaceArrayCreator { /// into an actual @c Axis object to be used ProtoAxis createEquidistantAxis(const GeometryContext& gctx, const std::vector& surfaces, - BinningValue bValue, + AxisDirection aDir, const ProtoLayer& protoLayer, Transform3& transform, std::size_t nBins = 0) const; @@ -382,7 +382,7 @@ class SurfaceArrayCreator { using SGL = SurfaceArray::SurfaceGridLookup; ptr = std::make_unique( - globalToLocal, localToGlobal, std::pair{axisA, axisB}, std::vector{pAxisA.bValue, pAxisB.bValue}); + globalToLocal, localToGlobal, std::pair{axisA, axisB}, std::vector{pAxisA.axisDir, pAxisB.axisDir}); } else if (pAxisA.bType == equidistant && pAxisB.bType == arbitrary) { @@ -391,7 +391,7 @@ class SurfaceArrayCreator { using SGL = SurfaceArray::SurfaceGridLookup; ptr = std::make_unique( - globalToLocal, localToGlobal, std::pair{axisA, axisB}, std::vector{pAxisA.bValue, pAxisB.bValue}); + globalToLocal, localToGlobal, std::pair{axisA, axisB}, std::vector{pAxisA.axisDir, pAxisB.axisDir}); } else if (pAxisA.bType == arbitrary && pAxisB.bType == equidistant) { @@ -400,7 +400,7 @@ class SurfaceArrayCreator { using SGL = SurfaceArray::SurfaceGridLookup; ptr = std::make_unique( - globalToLocal, localToGlobal, std::pair{axisA, axisB}, std::vector{pAxisA.bValue, pAxisB.bValue}); + globalToLocal, localToGlobal, std::pair{axisA, axisB}, std::vector{pAxisA.axisDir, pAxisB.axisDir}); } else /*if (pAxisA.bType == arbitrary && pAxisB.bType == arbitrary)*/ { @@ -409,7 +409,7 @@ class SurfaceArrayCreator { using SGL = SurfaceArray::SurfaceGridLookup; ptr = std::make_unique( - globalToLocal, localToGlobal, std::pair{axisA, axisB}, std::vector{pAxisA.bValue, pAxisB.bValue}); + globalToLocal, localToGlobal, std::pair{axisA, axisB}, std::vector{pAxisA.axisDir, pAxisB.axisDir}); } // clang-format on diff --git a/Core/include/Acts/Geometry/SurfaceBinningMatcher.hpp b/Core/include/Acts/Geometry/SurfaceBinningMatcher.hpp index c15928ee1dc..3dae7b47932 100644 --- a/Core/include/Acts/Geometry/SurfaceBinningMatcher.hpp +++ b/Core/include/Acts/Geometry/SurfaceBinningMatcher.hpp @@ -20,7 +20,8 @@ namespace Acts { struct SurfaceBinningMatcher { /// The binning tolerance parameters using Range = std::pair; - std::vector tolerances{static_cast(numBinningValues()), {0., 0.}}; + std::vector tolerances{static_cast(numAxisDirections()), + {0., 0.}}; SurfaceBinningMatcher() = default; @@ -30,10 +31,10 @@ struct SurfaceBinningMatcher { /// Check function for surface equivalent /// /// @param gctx [in] gctx the geometry context for this check - /// @param bValue the binning value for the binning + /// @param aDir the axis direction value for the binning /// @param one first surface for checking /// @param other second surface for checking - bool operator()(const Acts::GeometryContext& gctx, Acts::BinningValue bValue, + bool operator()(const Acts::GeometryContext& gctx, Acts::AxisDirection aDir, const Acts::Surface* one, const Acts::Surface* other) const { // Fast exit if (one == other) { @@ -43,15 +44,15 @@ struct SurfaceBinningMatcher { auto oneExt = one->polyhedronRepresentation(gctx, 1).extent(); auto otherExt = other->polyhedronRepresentation(gctx, 1).extent(); - double oneMin = oneExt.min(bValue); - double oneMax = oneExt.max(bValue); + double oneMin = oneExt.min(aDir); + double oneMax = oneExt.max(aDir); - double otherMin = otherExt.min(bValue); - double otherMax = otherExt.max(bValue); + double otherMin = otherExt.min(aDir); + double otherMax = otherExt.max(aDir); return ( - std::abs(oneMin - otherMin) <= tolerances[toUnderlying(bValue)].first && - std::abs(oneMax - otherMax) <= tolerances[toUnderlying(bValue)].second); + std::abs(oneMin - otherMin) <= tolerances[toUnderlying(aDir)].first && + std::abs(oneMax - otherMax) <= tolerances[toUnderlying(aDir)].second); } }; diff --git a/Core/include/Acts/Geometry/TrackingVolumeArrayCreator.hpp b/Core/include/Acts/Geometry/TrackingVolumeArrayCreator.hpp index fe951f61dc0..be59b61e3ec 100644 --- a/Core/include/Acts/Geometry/TrackingVolumeArrayCreator.hpp +++ b/Core/include/Acts/Geometry/TrackingVolumeArrayCreator.hpp @@ -11,7 +11,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Geometry/ITrackingVolumeArrayCreator.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include @@ -45,12 +45,12 @@ class TrackingVolumeArrayCreator : public ITrackingVolumeArrayCreator { /// /// @param [in] gctx the geometry context for this building /// @param [in] tVolumes is the vector of TrackingVolumes to be - /// @param [in] bValue is the binning value + /// @param [in] aDir is the axis direction /// /// @return new created volume array std::shared_ptr trackingVolumeArray( const GeometryContext& gctx, const TrackingVolumeVector& tVolumes, - BinningValue bValue) const override; + AxisDirection aDir) const override; /// Set logging instance /// diff --git a/Core/include/Acts/Geometry/TrivialPortalLink.hpp b/Core/include/Acts/Geometry/TrivialPortalLink.hpp index f68a7e326c6..8876696f5db 100644 --- a/Core/include/Acts/Geometry/TrivialPortalLink.hpp +++ b/Core/include/Acts/Geometry/TrivialPortalLink.hpp @@ -10,6 +10,7 @@ #include "Acts/Definitions/Tolerance.hpp" #include "Acts/Geometry/PortalLinkBase.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" namespace Acts { @@ -29,9 +30,9 @@ class TrivialPortalLink final : public PortalLinkBase { /// Make a 1D grid portal link from this trivial portal link /// The grid size is automatically determined from the surface bounds. - /// @param direction The binning direction + /// @param direction The axis direction of the grid /// @return A grid - std::unique_ptr makeGrid(BinningValue direction) const; + std::unique_ptr makeGrid(AxisDirection direction) const; /// Print the portal link to a stream /// @param os output stream diff --git a/Core/include/Acts/Geometry/Volume.hpp b/Core/include/Acts/Geometry/Volume.hpp index 92085819676..0d10cfa977b 100644 --- a/Core/include/Acts/Geometry/Volume.hpp +++ b/Core/include/Acts/Geometry/Volume.hpp @@ -11,7 +11,6 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Geometry/GeometryObject.hpp" -#include "Acts/Utilities/BinningType.hpp" #include "Acts/Utilities/BoundingBox.hpp" #include "Acts/Utilities/Logger.hpp" @@ -112,11 +111,10 @@ class Volume : public GeometryObject { /// - as default the center is given, but may be overloaded /// /// @param gctx The current geometry context object, e.g. alignment - /// @param bValue is the binning value schema - /// + /// @param aDir is the axis direction for the reference position /// @return vector 3D that can be used for the binning - Vector3 binningPosition(const GeometryContext& gctx, - BinningValue bValue) const override; + Vector3 referencePosition(const GeometryContext& gctx, + AxisDirection aDir) const override; bool operator==(const Volume& other) const; diff --git a/Core/include/Acts/Geometry/VolumeBounds.hpp b/Core/include/Acts/Geometry/VolumeBounds.hpp index 28bcc029166..a207b1699c4 100644 --- a/Core/include/Acts/Geometry/VolumeBounds.hpp +++ b/Core/include/Acts/Geometry/VolumeBounds.hpp @@ -12,7 +12,7 @@ #include "Acts/Definitions/Direction.hpp" #include "Acts/Geometry/Volume.hpp" #include "Acts/Surfaces/RegularSurface.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include #include @@ -121,32 +121,32 @@ class VolumeBounds { const Transform3* trf = nullptr, const Vector3& envelope = {0, 0, 0}, const Volume* entity = nullptr) const = 0; - /// Get the canonical binning values, i.e. the binning values - /// for that fully describe the shape's extent + /// Get the canonical axis direction + /// that fully describe the shape's extent /// - /// @return vector of canonical binning values + /// @return vector of canonical axis directions /// /// @note This is the default implementation that /// returns the bounding box binning. Individual shapes /// should override this method - virtual std::vector canonicalBinning() const { - return {Acts::BinningValue::binX, Acts::BinningValue::binY, - Acts::BinningValue::binZ}; + virtual std::vector canonicalAxes() const { + using enum AxisDirection; + return {AxisX, AxisY, AxisZ}; }; /// Binning offset - overloaded for some R-binning types /// - /// @param bValue is the binning schema used + /// @param aDir is the binning schema used /// /// @return vector 3D to be used for the binning - virtual Vector3 binningOffset(BinningValue bValue) const; + virtual Vector3 referenceOffset(AxisDirection aDir) const; /// Binning borders in double /// - /// @param bValue is the binning schema used + /// @param aDir is the binning schema used /// /// @return float offset to be used for the binning - virtual double binningBorder(BinningValue bValue) const; + virtual double referenceBorder(AxisDirection aDir) const; /// Output Method for std::ostream, to be overloaded by child classes /// @@ -155,12 +155,12 @@ class VolumeBounds { }; /// Binning offset - overloaded for some R-binning types -inline Vector3 VolumeBounds::binningOffset( - BinningValue /*bValue*/) const { // standard offset is 0.,0.,0. +inline Vector3 VolumeBounds::referenceOffset( + AxisDirection /*aDir*/) const { // standard offset is 0.,0.,0. return Vector3(0., 0., 0.); } -inline double VolumeBounds::binningBorder(BinningValue /*bValue*/) const { +inline double VolumeBounds::referenceBorder(AxisDirection /*aDir*/) const { return 0.; } diff --git a/Core/include/Acts/MagneticField/BFieldMapUtils.hpp b/Core/include/Acts/MagneticField/BFieldMapUtils.hpp index ff46acfa78e..ec3d7f0e701 100644 --- a/Core/include/Acts/MagneticField/BFieldMapUtils.hpp +++ b/Core/include/Acts/MagneticField/BFieldMapUtils.hpp @@ -11,7 +11,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/Units.hpp" #include "Acts/MagneticField/InterpolatedBFieldMap.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Grid.hpp" #include diff --git a/Core/include/Acts/Material/MaterialGridHelper.hpp b/Core/include/Acts/Material/MaterialGridHelper.hpp index 0f68a86c3b3..955a9245e73 100644 --- a/Core/include/Acts/Material/MaterialGridHelper.hpp +++ b/Core/include/Acts/Material/MaterialGridHelper.hpp @@ -12,7 +12,7 @@ #include "Acts/Material/AccumulatedVolumeMaterial.hpp" #include "Acts/Material/Material.hpp" #include "Acts/Utilities/Axis.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinUtility.hpp" #include "Acts/Utilities/BinningType.hpp" #include "Acts/Utilities/Grid.hpp" @@ -71,7 +71,7 @@ Grid3D createGrid(MaterialGridAxisData gridAxis1, /// /// @return a coordinate transform function std::function globalToLocalFromBin( - Acts::BinningValue& type); + Acts::AxisDirection& type); /// @brief Create a 2DGrid using a BinUtility. /// Also determine the corresponding global to local transform and grid mapping diff --git a/Core/include/Acts/Material/MaterialMapUtils.hpp b/Core/include/Acts/Material/MaterialMapUtils.hpp index 8cacb23eb20..16523c03f70 100644 --- a/Core/include/Acts/Material/MaterialMapUtils.hpp +++ b/Core/include/Acts/Material/MaterialMapUtils.hpp @@ -12,7 +12,7 @@ #include "Acts/Definitions/Units.hpp" #include "Acts/Material/InterpolatedMaterialMap.hpp" #include "Acts/Material/Material.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Grid.hpp" #include diff --git a/Core/include/Acts/Navigation/MultiLayerNavigation.hpp b/Core/include/Acts/Navigation/MultiLayerNavigation.hpp index 7a56086971a..82dc94f7eb3 100644 --- a/Core/include/Acts/Navigation/MultiLayerNavigation.hpp +++ b/Core/include/Acts/Navigation/MultiLayerNavigation.hpp @@ -12,6 +12,7 @@ #include "Acts/Navigation/NavigationDelegates.hpp" #include "Acts/Navigation/NavigationStateFillers.hpp" #include "Acts/Navigation/NavigationStateUpdaters.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/VectorHelpers.hpp" #include @@ -34,7 +35,7 @@ class MultiLayerNavigation : public IInternalNavigation { path_generator pgenerator; /// These are the cast parameters - copied from constructor - std::array casts{}; + std::array casts{}; /// An inverse transform to be applied to the position Transform3 transform = Transform3::Identity(); @@ -44,7 +45,7 @@ class MultiLayerNavigation : public IInternalNavigation { /// @param icasts is the cast values array /// @param itr a transform applied to the global position MultiLayerNavigation(grid_type igrid, - const std::array& icasts, + const std::array& icasts, const Transform3& itr = Transform3::Identity()) : grid(std::move(igrid)), casts(icasts), transform(itr) {} diff --git a/Core/include/Acts/Navigation/NavigationStateUpdaters.hpp b/Core/include/Acts/Navigation/NavigationStateUpdaters.hpp index 83b7bfd5016..664c9c99166 100644 --- a/Core/include/Acts/Navigation/NavigationStateUpdaters.hpp +++ b/Core/include/Acts/Navigation/NavigationStateUpdaters.hpp @@ -14,7 +14,7 @@ #include "Acts/Navigation/NavigationDelegates.hpp" #include "Acts/Navigation/NavigationState.hpp" #include "Acts/Surfaces/Surface.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Enumerate.hpp" #include "Acts/Utilities/GridAccessHelpers.hpp" #include "Acts/Utilities/IAxis.hpp" @@ -195,7 +195,7 @@ class IndexedGridNavigation : public navigation_type { grid_type grid; /// These are the cast parameters - copied from constructor - std::array casts{}; + std::array casts{}; /// A transform to be applied to the position Transform3 transform = Transform3::Identity(); @@ -205,7 +205,7 @@ class IndexedGridNavigation : public navigation_type { /// @param icasts is the cast values array /// @param itr a transform applied to the global position IndexedGridNavigation(grid_type&& igrid, - const std::array& icasts, + const std::array& icasts, const Transform3& itr = Transform3::Identity()) : grid(std::move(igrid)), casts(icasts), transform(itr) {} diff --git a/Core/include/Acts/Navigation/PortalNavigation.hpp b/Core/include/Acts/Navigation/PortalNavigation.hpp index b810e179c69..b5ed5ca8a50 100644 --- a/Core/include/Acts/Navigation/PortalNavigation.hpp +++ b/Core/include/Acts/Navigation/PortalNavigation.hpp @@ -14,6 +14,7 @@ #include "Acts/Navigation/NavigationStateFillers.hpp" #include "Acts/Navigation/NavigationStateUpdaters.hpp" #include "Acts/Utilities/Axis.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Grid.hpp" #include @@ -86,7 +87,7 @@ struct BoundVolumesGrid1Navigation : public IExternalNavigation { /// @param cVolumes the contained volumes /// @param bTransform is the optional transform BoundVolumesGrid1Navigation( - const std::vector& gBoundaries, BinningValue bValue, + const std::vector& gBoundaries, AxisDirection bValue, const std::vector& cVolumes, const Transform3& bTransform = Transform3::Identity()) noexcept(false) : indexedUpdater(IndexedUpdater(VariableBoundIndexGrid1(std::make_tuple( diff --git a/Core/include/Acts/Seeding/SeedFinderOrthogonal.ipp b/Core/include/Acts/Seeding/SeedFinderOrthogonal.ipp index a725d68e92d..9af243aa01a 100644 --- a/Core/include/Acts/Seeding/SeedFinderOrthogonal.ipp +++ b/Core/include/Acts/Seeding/SeedFinderOrthogonal.ipp @@ -11,7 +11,7 @@ #include "Acts/Seeding/SeedFinder.hpp" #include "Acts/Seeding/SeedFinderOrthogonalConfig.hpp" #include "Acts/Seeding/SeedFinderUtils.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include #include @@ -756,9 +756,9 @@ void SeedFinderOrthogonal::createSeeds( // variable middle SP radial region of interest const Acts::Range1D rMiddleSPRange( - std::floor(rRangeSPExtent.min(Acts::BinningValue::binR) / 2) * 2 + + std::floor(rRangeSPExtent.min(Acts::AxisDirection::AxisR) / 2) * 2 + m_config.deltaRMiddleMinSPRange, - std::floor(rRangeSPExtent.max(Acts::BinningValue::binR) / 2) * 2 - + std::floor(rRangeSPExtent.max(Acts::AxisDirection::AxisR) / 2) * 2 - m_config.deltaRMiddleMaxSPRange); /* diff --git a/Core/include/Acts/Surfaces/ConeSurface.hpp b/Core/include/Acts/Surfaces/ConeSurface.hpp index 34ebaf49694..6f7886e2063 100644 --- a/Core/include/Acts/Surfaces/ConeSurface.hpp +++ b/Core/include/Acts/Surfaces/ConeSurface.hpp @@ -18,7 +18,7 @@ #include "Acts/Surfaces/RegularSurface.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Surfaces/SurfaceConcept.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Result.hpp" #include "Acts/Utilities/detail/RealQuadraticEquation.hpp" @@ -90,11 +90,11 @@ class ConeSurface : public RegularSurface { /// The binning position method - is overloaded for r-type binning /// /// @param gctx The current geometry context object, e.g. alignment - /// @param bValue defines the type of binning applied in the global frame + /// @param aDir defines the direction of binning applied in the global frame /// /// @return The return type is a vector for positioning in the global frame - Vector3 binningPosition(const GeometryContext& gctx, - BinningValue bValue) const final; + Vector3 referencePosition(const GeometryContext& gctx, + AxisDirection aDir) const final; /// Return the surface type SurfaceType type() const override; diff --git a/Core/include/Acts/Surfaces/CylinderSurface.hpp b/Core/include/Acts/Surfaces/CylinderSurface.hpp index 2f64852dbee..aa21bc667ad 100644 --- a/Core/include/Acts/Surfaces/CylinderSurface.hpp +++ b/Core/include/Acts/Surfaces/CylinderSurface.hpp @@ -18,7 +18,7 @@ #include "Acts/Surfaces/RegularSurface.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Surfaces/SurfaceConcept.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include "Acts/Utilities/Result.hpp" #include "Acts/Utilities/detail/RealQuadraticEquation.hpp" @@ -95,11 +95,11 @@ class CylinderSurface : public RegularSurface { /// The binning position method - is overloaded for r-type binning /// /// @param gctx The current geometry context object, e.g. alignment - /// @param bValue is the type of global binning to be done + /// @param aDir is the axis Direction of global binning to be done /// /// @return is the global position to be used for binning - Vector3 binningPosition(const GeometryContext& gctx, - BinningValue bValue) const final; + Vector3 referencePosition(const GeometryContext& gctx, + AxisDirection aDir) const final; /// Return the measurement frame - this is needed for alignment, in particular /// The measurement frame of a cylinder is the tangential plane at a given @@ -254,14 +254,14 @@ class CylinderSurface : public RegularSurface { /// @note The surfaces need to be *compatible*, i.e. have cylinder bounds /// that align, and have the same radius /// @param other The other cylinder surface to merge with - /// @param direction The binning direction: either @c binZ or @c binRPhi + /// @param direction The axis direction: either @c AxisZ or @c AxisRPhi /// @param externalRotation If true, any phi rotation is done in the transform /// @param logger The logger to use /// @return The merged cylinder surface and a boolean indicating if surfaces are reversed /// @note The returned boolean is `false` if `this` is *left* or /// *counter-clockwise* of @p other, and `true` if not. std::pair, bool> mergedWith( - const CylinderSurface& other, BinningValue direction, + const CylinderSurface& other, AxisDirection direction, bool externalRotation, const Logger& logger = getDummyLogger()) const; protected: diff --git a/Core/include/Acts/Surfaces/DiscSurface.hpp b/Core/include/Acts/Surfaces/DiscSurface.hpp index 01e6bbd297c..f9d34b590a7 100644 --- a/Core/include/Acts/Surfaces/DiscSurface.hpp +++ b/Core/include/Acts/Surfaces/DiscSurface.hpp @@ -18,7 +18,7 @@ #include "Acts/Surfaces/RegularSurface.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Surfaces/SurfaceConcept.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Result.hpp" #include @@ -141,15 +141,24 @@ class DiscSurface : public RegularSurface { /// @return The normal vector Vector3 normal(const GeometryContext& gctx) const; - /// The binning position The position calculated - /// for a certain binning type + /// A reference position for a given axis direction /// /// @param gctx The current geometry context object, e.g. alignment - /// @param bValue The binning type to be used - /// + /// @param aDir The axis direction for the reference position request /// @return position that can beused for this binning - Vector3 binningPosition(const GeometryContext& gctx, - BinningValue bValue) const final; + Vector3 referencePosition(const GeometryContext& gctx, + AxisDirection aDir) const final; + + /// A reference position value for a given axis direction + /// + /// @param gctx The current geometry context object, e.g. alignment + /// @param aDir the value generated for the reference position + /// + /// @note This calls the parent method except for AxisR + /// + /// @return float to be used for the binning schema + double referencePositionValue(const GeometryContext& gctx, + AxisDirection aDir) const final; /// This method returns the bounds by reference const SurfaceBounds& bounds() const final; @@ -290,17 +299,6 @@ class DiscSurface : public RegularSurface { BoundaryTolerance::Infinite(), double tolerance = s_onSurfaceTolerance) const final; - /// Implement the binningValue - /// - /// @param gctx The current geometry context object, e.g. alignment - /// @param bValue is the dobule in which you want to bin - /// - /// @note This calls the parent method except for binR - /// - /// @return float to be used for the binning schema - double binningPositionValue(const GeometryContext& gctx, - BinningValue bValue) const final; - /// Return properly formatted class name for screen output std::string name() const override; @@ -330,14 +328,14 @@ class DiscSurface : public RegularSurface { /// @note The surfaces need to be *compatible*, i.e. have disc bounds /// that align /// @param other The other disc surface to merge with - /// @param direction The binning direction: either @c binR or @c binPhi + /// @param direction The binning direction: either @c AxisR or @c AxisPhi /// @param externalRotation If true, any phi rotation is done in the transform /// @param logger The logger to use /// @return The merged disc surface and a boolean indicating if surfaces are reversed /// @note The returned boolean is `false` if `this` is *left* or /// *counter-clockwise* of @p other, and `true` if not. std::pair, bool> mergedWith( - const DiscSurface& other, BinningValue direction, bool externalRotation, + const DiscSurface& other, AxisDirection direction, bool externalRotation, const Logger& logger = getDummyLogger()) const; protected: diff --git a/Core/include/Acts/Surfaces/LineSurface.hpp b/Core/include/Acts/Surfaces/LineSurface.hpp index 79660e17dca..2b1175c25b1 100644 --- a/Core/include/Acts/Surfaces/LineSurface.hpp +++ b/Core/include/Acts/Surfaces/LineSurface.hpp @@ -16,7 +16,7 @@ #include "Acts/Surfaces/BoundaryTolerance.hpp" #include "Acts/Surfaces/LineBounds.hpp" #include "Acts/Surfaces/Surface.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Result.hpp" #include @@ -91,11 +91,11 @@ class LineSurface : public Surface { /// for a certain binning type /// /// @param gctx The current geometry context object, e.g. alignment - /// @param bValue is the binning type to be used + /// @param aDir is the axis direction for the reference position request /// /// @return position that can beused for this binning - Vector3 binningPosition(const GeometryContext& gctx, - BinningValue bValue) const final; + Vector3 referencePosition(const GeometryContext& gctx, + AxisDirection aDir) const final; /// Return the measurement frame - this is needed for alignment, in particular /// diff --git a/Core/include/Acts/Surfaces/PlaneSurface.hpp b/Core/include/Acts/Surfaces/PlaneSurface.hpp index ddf968da2ea..a2d57f349a3 100644 --- a/Core/include/Acts/Surfaces/PlaneSurface.hpp +++ b/Core/include/Acts/Surfaces/PlaneSurface.hpp @@ -17,7 +17,7 @@ #include "Acts/Surfaces/RegularSurface.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Surfaces/SurfaceConcept.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Result.hpp" #include @@ -106,11 +106,11 @@ class PlaneSurface : public RegularSurface { /// for a certain binning type /// /// @param gctx The current geometry context object, e.g. alignment - /// @param bValue is the binning type to be used + /// @param aDir is the axis direction of reference position request /// /// @return position that can beused for this binning - Vector3 binningPosition(const GeometryContext& gctx, - BinningValue bValue) const final; + Vector3 referencePosition(const GeometryContext& gctx, + AxisDirection aDir) const final; /// Return the surface type SurfaceType type() const override; diff --git a/Core/include/Acts/Surfaces/SurfaceArray.hpp b/Core/include/Acts/Surfaces/SurfaceArray.hpp index ee40434f102..06212a90eec 100644 --- a/Core/include/Acts/Surfaces/SurfaceArray.hpp +++ b/Core/include/Acts/Surfaces/SurfaceArray.hpp @@ -11,7 +11,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Surfaces/Surface.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Grid.hpp" #include "Acts/Utilities/IAxis.hpp" @@ -107,7 +107,7 @@ class SurfaceArray { /// @brief The binning values described by this surface grid lookup /// They are in order of the axes (optional) and empty for eingle lookups - virtual std::vector binningValues() const { return {}; }; + virtual std::vector binningValues() const { return {}; }; /// Pure virtual destructor virtual ~ISurfaceGridLookup() = 0; @@ -139,7 +139,7 @@ class SurfaceArray { SurfaceGridLookup(std::function globalToLocal, std::function localToGlobal, std::tuple axes, - std::vector bValues = {}) + std::vector bValues = {}) : m_globalToLocal(std::move(globalToLocal)), m_localToGlobal(std::move(localToGlobal)), m_grid(std::move(axes)), @@ -149,7 +149,7 @@ class SurfaceArray { /// @brief Fill provided surfaces into the contained @c Grid. /// - /// This is done by iterating, accessing the binningPosition, lookup + /// This is done by iterating, accessing the referencePosition, lookup /// and append. /// Also populates the neighbor map by combining the filled bins of /// all bins around a given one. @@ -159,7 +159,7 @@ class SurfaceArray { void fill(const GeometryContext& gctx, const SurfaceVector& surfaces) override { for (const auto& srf : surfaces) { - Vector3 pos = srf->binningPosition(gctx, BinningValue::binR); + Vector3 pos = srf->referencePosition(gctx, AxisDirection::AxisR); lookup(pos).push_back(srf); } @@ -195,7 +195,8 @@ class SurfaceArray { minPath = std::numeric_limits::max(); for (const auto& srf : surfaces) { curPath = - (binCtr - srf->binningPosition(gctx, BinningValue::binR)).norm(); + (binCtr - srf->referencePosition(gctx, AxisDirection::AxisR)) + .norm(); if (curPath < minPath) { minPath = curPath; @@ -257,7 +258,7 @@ class SurfaceArray { /// @brief The binning values described by this surface grid lookup /// They are in order of the axes - std::vector binningValues() const override { + std::vector binningValues() const override { return m_binValues; } @@ -347,7 +348,7 @@ class SurfaceArray { std::function m_globalToLocal; std::function m_localToGlobal; Grid_t m_grid; - std::vector m_binValues; + std::vector m_binValues; std::vector m_neighborMap; }; @@ -519,7 +520,7 @@ class SurfaceArray { /// @brief The binning values described by this surface grid lookup /// They are in order of the axes - std::vector binningValues() const { + std::vector binningValues() const { return p_gridLookup->binningValues(); }; diff --git a/Core/include/Acts/Utilities/Axis.hpp b/Core/include/Acts/Utilities/Axis.hpp index 758a8c2ec3c..c6d5b53a541 100644 --- a/Core/include/Acts/Utilities/Axis.hpp +++ b/Core/include/Acts/Utilities/Axis.hpp @@ -8,7 +8,7 @@ #pragma once -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/IAxis.hpp" #include diff --git a/Core/include/Acts/Utilities/AxisFwd.hpp b/Core/include/Acts/Utilities/AxisDefinitions.hpp similarity index 66% rename from Core/include/Acts/Utilities/AxisFwd.hpp rename to Core/include/Acts/Utilities/AxisDefinitions.hpp index ce31ff3f7b6..a048693c518 100644 --- a/Core/include/Acts/Utilities/AxisFwd.hpp +++ b/Core/include/Acts/Utilities/AxisDefinitions.hpp @@ -13,6 +13,54 @@ #include namespace Acts { + +/// @enum AxisDirection to specify a local axis direction +enum class AxisDirection : int { + /// AxisX, AxisY, AxisZ are the cartesian directions in the local frame + AxisX = 0, + AxisY = 1, + AxisZ = 2, + /// AxisR is a radial direction + AxisR = 3, + /// AxisPhi is the azimuthal direction + AxisPhi = 4, + /// AxisRPhi is the radial-azimuthal direction + AxisRPhi = 5, + /// AxisTheta is the polar angle direction + AxisTheta = 6, + /// AxisEta is the pseudorapidity direction + AxisEta = 7, + /// AxisMag is the magnitude of the vector + AxisMag = 8 +}; + +/// Get all possible axis directions +/// @return a vector of all possible axis directions +const std::vector& allAxisDirections(); + +/// Returns the total number of axis directions +/// @return the number of axis directions +constexpr std::size_t numAxisDirections() { + return 9; +} + +/// Get an axis direction from its string name +/// +/// @param name is the name of the axis direction +/// @return the axis direction +AxisDirection axisDirectionFromName(const std::string& name); + +/// Get the name of a binning value as a string +/// @param aDir is the binning value +/// @return the name of the binning value +const std::string& axisDirectionName(AxisDirection aDir); + +/// Output stream operator for @c AxisDirection +/// @param os is the output stream +/// @param aDir is the axis direction +/// @return the output stream +std::ostream& operator<<(std::ostream& os, AxisDirection aDir); + /// Enum which determines how the axis handle its outer boundaries /// possible values values enum class AxisBoundaryType { @@ -38,14 +86,15 @@ constexpr auto AxisBound = AxisBoundaryTypeTag{}; constexpr auto AxisClosed = AxisBoundaryTypeTag{}; inline std::ostream& operator<<(std::ostream& os, AxisBoundaryType bdt) { + using enum AxisBoundaryType; switch (bdt) { - case AxisBoundaryType::Open: + case Open: os << "Open"; break; - case AxisBoundaryType::Bound: + case Bound: os << "Bound"; break; - case AxisBoundaryType::Closed: + case Closed: os << "Closed"; break; } diff --git a/Core/include/Acts/Utilities/BinAdjustment.hpp b/Core/include/Acts/Utilities/BinAdjustment.hpp index 6424276c5cf..05de674ee42 100644 --- a/Core/include/Acts/Utilities/BinAdjustment.hpp +++ b/Core/include/Acts/Utilities/BinAdjustment.hpp @@ -6,10 +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/. -/////////////////////////////////////////////////////////////////// -// BinAdjustment.hpp, Acts project -/////////////////////////////////////////////////////////////////// - #pragma once #include "Acts/Definitions/Algebra.hpp" @@ -18,6 +14,7 @@ #include "Acts/Surfaces/RectangleBounds.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Surfaces/TrapezoidBounds.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinUtility.hpp" #include @@ -49,18 +46,18 @@ static inline BinUtility adjustBinUtility(const BinUtility& bu, // Loop over the binning data and adjust the dimensions for (auto& bd : bData) { // The binning value - BinningValue bval = bd.binvalue; + AxisDirection bval = bd.binvalue; // Throw exceptions is stuff doesn't make sense: // - not the right binning value // - not equidistant if (bd.type == arbitrary) { throw std::invalid_argument("Arbitrary binning can not be adjusted."); - } else if (bval != BinningValue::binR && bval != BinningValue::binPhi) { + } else if (bval != AxisDirection::AxisR && bval != AxisDirection::AxisPhi) { throw std::invalid_argument("Disc binning must be: phi, r"); } float min = 0., max = 0.; // Perform the value adjustment - if (bval == BinningValue::binPhi) { + if (bval == AxisDirection::AxisPhi) { min = minPhi; max = maxPhi; } else { @@ -100,22 +97,22 @@ static inline BinUtility adjustBinUtility(const BinUtility& bu, // Loop over the binning data and adjust the dimensions for (auto& bd : bData) { // The binning value - BinningValue bval = bd.binvalue; + AxisDirection bval = bd.binvalue; // Throw exceptions if stuff doesn't make sense: // - not the right binning value // - not equidistant if (bd.type == arbitrary) { throw std::invalid_argument("Arbitrary binning can not be adjusted."); - } else if (bval != BinningValue::binRPhi && bval != BinningValue::binPhi && - bval != BinningValue::binZ) { + } else if (bval != AxisDirection::AxisRPhi && + bval != AxisDirection::AxisPhi && bval != AxisDirection::AxisZ) { throw std::invalid_argument("Cylinder binning must be: rphi, phi, z"); } float min = 0., max = 0.; // Perform the value adjustment - if (bval == BinningValue::binPhi) { + if (bval == AxisDirection::AxisPhi) { min = minPhi; max = maxPhi; - } else if (bval == BinningValue::binRPhi) { + } else if (bval == AxisDirection::AxisRPhi) { min = cR * minPhi; max = cR * maxPhi; } else { @@ -153,18 +150,18 @@ static inline BinUtility adjustBinUtility(const BinUtility& bu, // Loop over the binning data and adjust the dimensions for (auto& bd : bData) { // The binning value - BinningValue bval = bd.binvalue; + AxisDirection bval = bd.binvalue; // Throw exceptions if stuff doesn't make sense: // - not the right binning value // - not equidistant if (bd.type == arbitrary) { throw std::invalid_argument("Arbitrary binning can not be adjusted."); - } else if (bval != BinningValue::binX && bval != BinningValue::binY) { + } else if (bval != AxisDirection::AxisX && bval != AxisDirection::AxisY) { throw std::invalid_argument("Rectangle binning must be: x, y. "); } float min = 0., max = 0.; // Perform the value adjustment - if (bval == BinningValue::binX) { + if (bval == AxisDirection::AxisX) { min = minX; max = maxX; } else { @@ -203,18 +200,18 @@ static inline BinUtility adjustBinUtility(const BinUtility& bu, // Loop over the binning data and adjust the dimensions for (auto& bd : bData) { // The binning value - BinningValue bval = bd.binvalue; + AxisDirection bval = bd.binvalue; // Throw exceptions if stuff doesn't make sense: // - not the right binning value // - not equidistant if (bd.type == arbitrary) { throw std::invalid_argument("Arbitrary binning can not be adjusted."); - } else if (bval != BinningValue::binX && bval != BinningValue::binY) { + } else if (bval != AxisDirection::AxisX && bval != AxisDirection::AxisY) { throw std::invalid_argument("Rectangle binning must be: x, y. "); } float min = 0., max = 0.; // Perform the value adjustment - if (bval == BinningValue::binX) { + if (bval == AxisDirection::AxisX) { min = -1 * halfX; max = halfX; } else { diff --git a/Core/include/Acts/Utilities/BinAdjustmentVolume.hpp b/Core/include/Acts/Utilities/BinAdjustmentVolume.hpp index bef7bff3e83..e2ce50180fc 100644 --- a/Core/include/Acts/Utilities/BinAdjustmentVolume.hpp +++ b/Core/include/Acts/Utilities/BinAdjustmentVolume.hpp @@ -6,10 +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/. -/////////////////////////////////////////////////////////////////// -// BinAdjustment.hpp, Acts project -/////////////////////////////////////////////////////////////////// - #pragma once #include "Acts/Definitions/Algebra.hpp" @@ -17,6 +13,7 @@ #include "Acts/Geometry/CutoutCylinderVolumeBounds.hpp" #include "Acts/Geometry/CylinderVolumeBounds.hpp" #include "Acts/Geometry/Volume.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinUtility.hpp" #include @@ -48,26 +45,26 @@ BinUtility adjustBinUtility(const BinUtility& bu, // Loop over the binning data and adjust the dimensions for (auto& bd : bData) { // The binning value - BinningValue bval = bd.binvalue; + AxisDirection bval = bd.binvalue; // Throw exceptions is stuff doesn't make sense: // - not the right binning value // - not equidistant if (bd.type == arbitrary) { throw std::invalid_argument("Arbitrary binning can not be adjusted."); - } else if (bval != BinningValue::binR && bval != BinningValue::binPhi && - bval != BinningValue::binZ) { + } else if (bval != AxisDirection::AxisR && bval != AxisDirection::AxisPhi && + bval != AxisDirection::AxisZ) { throw std::invalid_argument("Cylinder volume binning must be: phi, r, z"); } float min = 0; float max = 0; // Perform the value adjustment - if (bval == BinningValue::binPhi) { + if (bval == AxisDirection::AxisPhi) { min = minPhi; max = maxPhi; - } else if (bval == BinningValue::binR) { + } else if (bval == AxisDirection::AxisR) { min = minR; max = maxR; - } else if (bval == BinningValue::binZ) { + } else if (bval == AxisDirection::AxisZ) { min = minZ; max = maxZ; } @@ -104,27 +101,27 @@ BinUtility adjustBinUtility(const BinUtility& bu, // Loop over the binning data and adjust the dimensions for (auto& bd : bData) { // The binning value - BinningValue bval = bd.binvalue; + AxisDirection bval = bd.binvalue; // Throw exceptions is stuff doesn't make sense: // - not the right binning value // - not equidistant if (bd.type == arbitrary) { throw std::invalid_argument("Arbitrary binning can not be adjusted."); - } else if (bval != BinningValue::binR && bval != BinningValue::binPhi && - bval != BinningValue::binZ) { + } else if (bval != AxisDirection::AxisR && bval != AxisDirection::AxisPhi && + bval != AxisDirection::AxisZ) { throw std::invalid_argument( "Cutout cylinder volume binning must be: phi, r, z"); } float min = 0; float max = 0; // Perform the value adjustment - if (bval == BinningValue::binPhi) { + if (bval == AxisDirection::AxisPhi) { min = minPhi; max = maxPhi; - } else if (bval == BinningValue::binR) { + } else if (bval == AxisDirection::AxisR) { min = minR; max = maxR; - } else if (bval == BinningValue::binZ) { + } else if (bval == AxisDirection::AxisZ) { min = minZ; max = maxZ; } @@ -160,26 +157,26 @@ BinUtility adjustBinUtility(const BinUtility& bu, // Loop over the binning data and adjust the dimensions for (auto& bd : bData) { // The binning value - BinningValue bval = bd.binvalue; + AxisDirection bval = bd.binvalue; // Throw exceptions is stuff doesn't make sense: // - not the right binning value // - not equidistant if (bd.type == arbitrary) { throw std::invalid_argument("Arbitrary binning can not be adjusted."); - } else if (bval != BinningValue::binX && bval != BinningValue::binY && - bval != BinningValue::binZ) { + } else if (bval != AxisDirection::AxisX && bval != AxisDirection::AxisY && + bval != AxisDirection::AxisZ) { throw std::invalid_argument("Cylinder volume binning must be: x, y, z"); } float min = 0; float max = 0; // Perform the value adjustment - if (bval == BinningValue::binX) { + if (bval == AxisDirection::AxisX) { min = minX; max = maxX; - } else if (bval == BinningValue::binY) { + } else if (bval == AxisDirection::AxisY) { min = minY; max = maxY; - } else if (bval == BinningValue::binZ) { + } else if (bval == AxisDirection::AxisZ) { min = minZ; max = maxZ; } diff --git a/Core/include/Acts/Utilities/BinUtility.hpp b/Core/include/Acts/Utilities/BinUtility.hpp index b6038fb5181..79d59ddadfa 100644 --- a/Core/include/Acts/Utilities/BinUtility.hpp +++ b/Core/include/Acts/Utilities/BinUtility.hpp @@ -9,6 +9,7 @@ #pragma once #include "Acts/Definitions/Algebra.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinningData.hpp" #include "Acts/Utilities/BinningType.hpp" #include "Acts/Utilities/Enumerate.hpp" @@ -69,10 +70,10 @@ class BinUtility { /// @param min in the minimal value /// @param max is the maximal value /// @param opt is the binning option : open, closed - /// @param value is the binninb value : binX, binY, binZ, etc. + /// @param value is the axis direction : AxisX, AxisY, AxisZ, etc. /// @param tForm is the (optional) transform BinUtility(std::size_t bins, float min, float max, BinningOption opt = open, - BinningValue value = BinningValue::binX, + AxisDirection value = AxisDirection::AxisX, const Transform3& tForm = Transform3::Identity()) : m_binningData(), m_transform(tForm), m_itransform(tForm.inverse()) { m_binningData.reserve(3); @@ -83,10 +84,10 @@ class BinUtility { /// /// @param bValues is the boundary values of the binning /// @param opt is the binning option : open, closed - /// @param value is the binninb value : binX, binY, binZ, etc. + /// @param value is the axis direction : AxisX, AxisY, AxisZ, etc. /// @param tForm is the (optional) transform BinUtility(std::vector& bValues, BinningOption opt = open, - BinningValue value = BinningValue::binPhi, + AxisDirection value = AxisDirection::AxisPhi, const Transform3& tForm = Transform3::Identity()) : m_binningData(), m_transform(tForm), m_itransform(tForm.inverse()) { m_binningData.reserve(3); @@ -267,7 +268,7 @@ class BinUtility { /// @param ba is the binaccessor /// /// @return the binning value of the accessor entry - BinningValue binningValue(std::size_t ba = 0) const { + AxisDirection binningValue(std::size_t ba = 0) const { if (ba >= m_binningData.size()) { throw std::runtime_error{"Dimension out of bounds"}; } diff --git a/Core/include/Acts/Utilities/BinnedArray.hpp b/Core/include/Acts/Utilities/BinnedArray.hpp index 7a13c16ae58..7cceb24270d 100644 --- a/Core/include/Acts/Utilities/BinnedArray.hpp +++ b/Core/include/Acts/Utilities/BinnedArray.hpp @@ -6,10 +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/. -/////////////////////////////////////////////////////////////////// -// BinnedArray.h, Acts project -/////////////////////////////////////////////////////////////////// - #pragma once #include "Acts/Definitions/Algebra.hpp" diff --git a/Core/include/Acts/Utilities/BinningData.hpp b/Core/include/Acts/Utilities/BinningData.hpp index 553ab10b2a9..904429f64be 100644 --- a/Core/include/Acts/Utilities/BinningData.hpp +++ b/Core/include/Acts/Utilities/BinningData.hpp @@ -9,6 +9,7 @@ #pragma once #include "Acts/Definitions/Algebra.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinningType.hpp" #include "Acts/Utilities/Helpers.hpp" #include "Acts/Utilities/ThrowAssert.hpp" @@ -41,13 +42,13 @@ namespace Acts { /// class BinningData { public: - BinningType type{}; ///< binning type: equidistant, arbitrary - BinningOption option{}; ///< binning option: open, closed - BinningValue binvalue{}; ///< binning value: binX, binY, binZ, binR ... - float min{}; ///< minimum value - float max{}; ///< maximum value - float step{}; ///< binning step - bool zdim{}; ///< zero dimensional binning : direct access + BinningType type{}; ///< binning type: equidistant, arbitrary + BinningOption option{}; ///< binning option: open, closed + AxisDirection binvalue{}; ///< axis direction: AxisX, AxisY, AxisZ, ... + float min{}; ///< minimum value + float max{}; ///< maximum value + float step{}; ///< binning step + bool zdim{}; ///< zero dimensional binning : direct access /// sub structure: describe some sub binning std::unique_ptr subBinningData; @@ -56,10 +57,10 @@ class BinningData { /// Constructor for 0D binning /// - /// @param bValue is the binning value: binX, binY, etc. + /// @param bValue is the axis direction AxisX, AxisY, etc. /// @param bMin is the minimum value /// @param bMax is the maximum value - BinningData(BinningValue bValue, float bMin, float bMax) + BinningData(AxisDirection bValue, float bMin, float bMax) : type(equidistant), option(open), binvalue(bValue), @@ -79,13 +80,13 @@ class BinningData { /// multiplicative or additive /// /// @param bOption is the binning option : open, closed - /// @param bValue is the binning value: binX, binY, etc. + /// @param bValue is the axis direction: Axis, AxisY, etc. /// @param bBins is number of equidistant bins /// @param bMin is the minimum value /// @param bMax is the maximum value /// @param sBinData is (optional) sub structure /// @param sBinAdditive is the prescription for the sub structure - BinningData(BinningOption bOption, BinningValue bValue, std::size_t bBins, + BinningData(BinningOption bOption, AxisDirection bValue, std::size_t bBins, float bMin, float bMax, std::unique_ptr sBinData = nullptr, bool sBinAdditive = false) @@ -116,10 +117,10 @@ class BinningData { /// Constructor for non-equidistant binning /// /// @param bOption is the binning option : open / closed - /// @param bValue is the binning value : binX, binY, etc. + /// @param bValue is the axis direction : AxisX, AxisY, etc. /// @param bBoundaries are the bin boundaries /// @param sBinData is (optional) sub structure - BinningData(BinningOption bOption, BinningValue bValue, + BinningData(BinningOption bOption, AxisDirection bValue, const std::vector& bBoundaries, std::unique_ptr sBinData = nullptr) : type(arbitrary), @@ -241,8 +242,10 @@ class BinningData { /// @return float value according to the binning setup float value(const Vector2& lposition) const { // ordered after occurrence - if (binvalue == BinningValue::binR || binvalue == BinningValue::binRPhi || - binvalue == BinningValue::binX || binvalue == BinningValue::binH) { + if (binvalue == AxisDirection::AxisR || + binvalue == AxisDirection::AxisRPhi || + binvalue == AxisDirection::AxisX || + binvalue == AxisDirection::AxisTheta) { return lposition[0]; } @@ -259,13 +262,14 @@ class BinningData { using VectorHelpers::perp; using VectorHelpers::phi; // ordered after occurrence - if (binvalue == BinningValue::binR || binvalue == BinningValue::binH) { + if (binvalue == AxisDirection::AxisR || + binvalue == AxisDirection::AxisTheta) { return (perp(position)); } - if (binvalue == BinningValue::binRPhi) { + if (binvalue == AxisDirection::AxisRPhi) { return (perp(position) * phi(position)); } - if (binvalue == BinningValue::binEta) { + if (binvalue == AxisDirection::AxisEta) { return (eta(position)); } if (toUnderlying(binvalue) < 3) { diff --git a/Core/include/Acts/Utilities/BinningType.hpp b/Core/include/Acts/Utilities/BinningType.hpp index 90e90b5a2ad..d58730dec85 100644 --- a/Core/include/Acts/Utilities/BinningType.hpp +++ b/Core/include/Acts/Utilities/BinningType.hpp @@ -25,7 +25,7 @@ namespace Acts { /// open: [0,max] /// closed: 0 -> nextbin -> max -> 0 /// -/// - BinningValue +/// - AxisDirection /// necessary access to global positions /// enum BinningType { equidistant, arbitrary }; @@ -33,43 +33,4 @@ enum BinningType { equidistant, arbitrary }; /// @brief flag for open/closed bins enum BinningOption { open, closed }; -/// @enum BinningValue how to take the global / local position -enum class BinningValue : int { - binX = 0, - binY = 1, - binZ = 2, - binR = 3, - binPhi = 4, - binRPhi = 5, - binH = 6, - binEta = 7, - binMag = 8 -}; - -/// Get all possible binning values -/// @return the binning values -const std::vector& allBinningValues(); - -/// Returns the total number of binningvalues -/// @return the number of binning values -constexpr std::size_t numBinningValues() { - return 9; -} - -/// Get the binning value from a name -/// @param name is the name of the binning value -/// @return the binning value -BinningValue binningValueFromName(const std::string& name); - -/// Get the name of a binning value as a string -/// @param bValue is the binning value -/// @return the name of the binning value -const std::string& binningValueName(BinningValue bValue); - -/// Output stream operator for @c BinningValue -/// @param os is the output stream -/// @param bValue is the binning value -/// @return the output stream -std::ostream& operator<<(std::ostream& os, BinningValue bValue); - } // namespace Acts diff --git a/Core/include/Acts/Utilities/GridAccessHelpers.hpp b/Core/include/Acts/Utilities/GridAccessHelpers.hpp index df8f46ed39b..a358c50af8b 100644 --- a/Core/include/Acts/Utilities/GridAccessHelpers.hpp +++ b/Core/include/Acts/Utilities/GridAccessHelpers.hpp @@ -9,7 +9,7 @@ #pragma once #include "Acts/Definitions/Algebra.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Delegate.hpp" #include "Acts/Utilities/VectorHelpers.hpp" @@ -141,7 +141,7 @@ class Affine3Transformed : public IGlobalToGridLocal { /// @brief A global (potentially casted) sub space of a global /// position /// @tparam ...Args -template +template class GlobalSubspace : public IGlobalToGridLocal { public: using grid_local_t = std::array; @@ -157,8 +157,8 @@ class GlobalSubspace : public IGlobalToGridLocal { // Constructor GlobalSubspace() = default; - /// The binning values - static constexpr std::array bValues = { + /// The axis directions of the subspace + static constexpr std::array axisDirs = { Args...}; /// Transform in to the local frame, then the grid local position @@ -170,7 +170,7 @@ class GlobalSubspace : public IGlobalToGridLocal { // Fill the grid point from global grid_local_t glocal{}; GridAccessHelpers::fillCasts( - position, bValues, glocal, + position, axisDirs, glocal, std::make_integer_sequence{}); return glocal; } diff --git a/Core/include/Acts/Utilities/IAxis.hpp b/Core/include/Acts/Utilities/IAxis.hpp index d92fe3799dc..6be294246b1 100644 --- a/Core/include/Acts/Utilities/IAxis.hpp +++ b/Core/include/Acts/Utilities/IAxis.hpp @@ -9,7 +9,7 @@ #pragma once #include "Acts/Definitions/Algebra.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include #include diff --git a/Core/include/Acts/Utilities/VectorHelpers.hpp b/Core/include/Acts/Utilities/VectorHelpers.hpp index e2c78619a3f..c48ffa2be71 100644 --- a/Core/include/Acts/Utilities/VectorHelpers.hpp +++ b/Core/include/Acts/Utilities/VectorHelpers.hpp @@ -11,7 +11,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/Common.hpp" #include "Acts/Definitions/TrackParametrization.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include #include @@ -145,29 +145,35 @@ inline std::array evaluateTrigonomics(const Vector3& direction) { /// Helper method to extract the binning value from a 3D vector. /// /// For this method a 3D vector is required to guarantee all potential -/// binning values. -inline double cast(const Vector3& position, BinningValue bval) { - switch (bval) { - case BinningValue::binX: +/// axis directions to be casted from +/// +/// @param position is the position in global +/// @param aDir is the axis direction to be extracted +/// +/// @return the value of the binning direction +inline double cast(const Vector3& position, AxisDirection aDir) { + using enum AxisDirection; + switch (aDir) { + case AxisX: return position[0]; - case BinningValue::binY: + case AxisY: return position[1]; - case BinningValue::binZ: + case AxisZ: return position[2]; - case BinningValue::binR: + case AxisR: return perp(position); - case BinningValue::binPhi: + case AxisPhi: return phi(position); - case BinningValue::binRPhi: + case AxisRPhi: return perp(position) * phi(position); - case BinningValue::binH: + case AxisTheta: return theta(position); - case BinningValue::binEta: + case AxisEta: return eta(position); - case BinningValue::binMag: + case AxisMag: return position.norm(); default: - assert(false && "Invalid BinningValue enum value"); + assert(false && "Invalid AxisDirection enum value"); return std::numeric_limits::quiet_NaN(); } } diff --git a/Core/src/Detector/CuboidalContainerBuilder.cpp b/Core/src/Detector/CuboidalContainerBuilder.cpp index 47533bc4a11..c7390e0c862 100644 --- a/Core/src/Detector/CuboidalContainerBuilder.cpp +++ b/Core/src/Detector/CuboidalContainerBuilder.cpp @@ -35,13 +35,14 @@ Acts::Experimental::CuboidalContainerBuilder::CuboidalContainerBuilder( "CuboidalContainerBuilder: no sub builders provided."); } // Check if binning value is correctly chosen - if (m_cfg.binning != Acts::BinningValue::binX && - m_cfg.binning != Acts::BinningValue::binY && - m_cfg.binning != Acts::BinningValue::binZ) { + if (m_cfg.binning != Acts::AxisDirection::AxisX && + m_cfg.binning != Acts::AxisDirection::AxisY && + m_cfg.binning != Acts::AxisDirection::AxisZ) { throw std::invalid_argument( "CuboidalContainerBuilder: Invalid binning value. Only " - "Acts::BinningValue::binX, " - "Acts::BinningValue::binY, Acts::BinningValue::binZ are supported."); + "Acts::AxisDirection::AxisX, " + "Acts::AxisDirection::AxisY, Acts::AxisDirection::AxisZ are " + "supported."); } } @@ -94,13 +95,14 @@ Acts::Experimental::CuboidalContainerBuilder::CuboidalContainerBuilder( } m_cfg.binning = bpNode.binning.at(0); // Check if binning value is correctly chosen - if (m_cfg.binning != Acts::BinningValue::binX && - m_cfg.binning != Acts::BinningValue::binY && - m_cfg.binning != Acts::BinningValue::binZ) { + if (m_cfg.binning != Acts::AxisDirection::AxisX && + m_cfg.binning != Acts::AxisDirection::AxisY && + m_cfg.binning != Acts::AxisDirection::AxisZ) { throw std::invalid_argument( "CuboidalContainerBuilder: Invalid binning value. Only " - "Acts::BinningValue::binX, " - "Acts::BinningValue::binY, Acts::BinningValue::binZ are supported."); + "Acts::AxisDirection::AxisX, " + "Acts::AxisDirection::AxisY, Acts::AxisDirection::AxisZ are " + "supported."); } m_cfg.auxiliary = "*** acts auto-generated from proxy ***"; diff --git a/Core/src/Detector/CylindricalContainerBuilder.cpp b/Core/src/Detector/CylindricalContainerBuilder.cpp index 8441dc93762..86dcdb08a16 100644 --- a/Core/src/Detector/CylindricalContainerBuilder.cpp +++ b/Core/src/Detector/CylindricalContainerBuilder.cpp @@ -44,25 +44,25 @@ namespace { template Acts::Experimental::DetectorComponent::PortalContainer connect( const Acts::GeometryContext& gctx, object_collection& objects, - const std::vector& binning, + const std::vector& binning, Acts::Logging::Level logLevel) { // Return container object Acts::Experimental::DetectorComponent::PortalContainer portalContainer; if (binning.size() == 1u) { - Acts::BinningValue bv = binning.front(); + Acts::AxisDirection bv = binning.front(); // 1-dimensional binning options switch (bv) { - case Acts::BinningValue::binR: { + case Acts::AxisDirection::AxisR: { portalContainer = Acts::Experimental::detail::CylindricalDetectorHelper::connectInR( gctx, objects, {}, logLevel); } break; - case Acts::BinningValue::binZ: { + case Acts::AxisDirection::AxisZ: { portalContainer = Acts::Experimental::detail::CylindricalDetectorHelper::connectInZ( gctx, objects, {}, logLevel); } break; - case Acts::BinningValue::binPhi: { + case Acts::AxisDirection::AxisPhi: { portalContainer = Acts::Experimental::detail::CylindricalDetectorHelper::connectInPhi( gctx, objects, {}, logLevel); @@ -71,8 +71,8 @@ Acts::Experimental::DetectorComponent::PortalContainer connect( break; } } else if (binning == - std::vector{Acts::BinningValue::binZ, - Acts::BinningValue::binR} && + std::vector{Acts::AxisDirection::AxisZ, + Acts::AxisDirection::AxisR} && objects.size() == 2u) { portalContainer = Acts::Experimental::detail::CylindricalDetectorHelper::wrapInZR( @@ -95,8 +95,8 @@ Acts::Experimental::CylindricalContainerBuilder::CylindricalContainerBuilder( if (m_cfg.binning.size() == 1u) { // 1-dimensional case auto b = m_cfg.binning.front(); - if (b != Acts::BinningValue::binR && b != Acts::BinningValue::binZ && - b != Acts::BinningValue::binPhi) { + if (b != Acts::AxisDirection::AxisR && b != Acts::AxisDirection::AxisZ && + b != Acts::AxisDirection::AxisPhi) { throw std::invalid_argument( "CylindricalContainerBuilder: 1D binning only supported in z, r, or " "phi"); @@ -104,8 +104,8 @@ Acts::Experimental::CylindricalContainerBuilder::CylindricalContainerBuilder( } else if (m_cfg.binning.size() == 2u) { // 2-dimensional case, this is for wrapping if (m_cfg.binning != - std::vector{Acts::BinningValue::binZ, - Acts::BinningValue::binR}) { + std::vector{Acts::AxisDirection::AxisZ, + Acts::AxisDirection::AxisR}) { throw std::invalid_argument( "CylindricalContainerBuilder: 2D binning only supports wrapping in " "z-r."); @@ -168,8 +168,8 @@ Acts::Experimental::CylindricalContainerBuilder::CylindricalContainerBuilder( if (m_cfg.binning.size() == 1u) { // 1-dimensional case auto b = m_cfg.binning.front(); - if (b != Acts::BinningValue::binR && b != Acts::BinningValue::binZ && - b != Acts::BinningValue::binPhi) { + if (b != Acts::AxisDirection::AxisR && b != Acts::AxisDirection::AxisZ && + b != Acts::AxisDirection::AxisPhi) { throw std::invalid_argument( "CylindricalContainerBuilder: 1D binning only supported in z, r, or " "phi"); @@ -177,8 +177,8 @@ Acts::Experimental::CylindricalContainerBuilder::CylindricalContainerBuilder( } else if (m_cfg.binning.size() == 2u) { // 2-dimensional case, this is for wrapping if (m_cfg.binning != - std::vector{Acts::BinningValue::binZ, - Acts::BinningValue::binR}) { + std::vector{Acts::AxisDirection::AxisZ, + Acts::AxisDirection::AxisR}) { throw std::invalid_argument( "CylindricalContainerBuilder: 2D binning only supports wrapping in " "z-r."); diff --git a/Core/src/Detector/DetectorVolume.cpp b/Core/src/Detector/DetectorVolume.cpp index 6cd8d189298..eb74a2b8b57 100644 --- a/Core/src/Detector/DetectorVolume.cpp +++ b/Core/src/Detector/DetectorVolume.cpp @@ -261,7 +261,7 @@ bool Acts::Experimental::DetectorVolume::checkContainment( // We don't have a logging instance here // so can't throw a warning for shapes that are // using the bounding box - auto binningValues = volumeBounds().canonicalBinning(); + auto binningValues = volumeBounds().canonicalAxes(); // Create the volume extent auto volumeExtent = extent(gctx, nseg); diff --git a/Core/src/Detector/IndexedRootVolumeFinderBuilder.cpp b/Core/src/Detector/IndexedRootVolumeFinderBuilder.cpp index ae1bee83e5d..527a81a80a6 100644 --- a/Core/src/Detector/IndexedRootVolumeFinderBuilder.cpp +++ b/Core/src/Detector/IndexedRootVolumeFinderBuilder.cpp @@ -22,7 +22,7 @@ void fillGridIndices2D( const std::vector>& rootVolumes, const std::array, 2u>& boundaries, - const std::array& casts) { + const std::array& casts) { // Brute force loop over all bins & all volumes for (const auto [ic0, c0] : Acts::enumerate(boundaries[0u])) { if (ic0 > 0) { @@ -31,8 +31,8 @@ void fillGridIndices2D( if (ic1 > 0) { double v1 = 0.5 * (c1 + boundaries[1u][ic1 - 1]); if (casts == - std::array{Acts::BinningValue::binZ, - Acts::BinningValue::binR}) { + std::array{Acts::AxisDirection::AxisZ, + Acts::AxisDirection::AxisR}) { Acts::Vector3 zrPosition{v1, 0., v0}; for (const auto [iv, v] : Acts::enumerate(rootVolumes)) { if (v->inside(gctx, zrPosition)) { @@ -49,10 +49,10 @@ void fillGridIndices2D( } // namespace Acts::Experimental::IndexedRootVolumeFinderBuilder:: - IndexedRootVolumeFinderBuilder(std::vector binning) + IndexedRootVolumeFinderBuilder(std::vector binning) : m_casts(std::move(binning)) { - if (m_casts != std::vector{Acts::BinningValue::binZ, - Acts::BinningValue::binR}) { + if (m_casts != std::vector{Acts::AxisDirection::AxisZ, + Acts::AxisDirection::AxisR}) { throw std::invalid_argument("Online (z,r) binning is currently supported."); } } @@ -72,7 +72,7 @@ Acts::Experimental::IndexedRootVolumeFinderBuilder::construct( using GridType = typename AxesGeneratorType::template grid_type; GridType grid(zrAxes()); - auto casts = std::array{m_casts[0u], m_casts[1u]}; + auto casts = std::array{m_casts[0u], m_casts[1u]}; auto boundaries = std::array, 2u>{rzphis[1], rzphis[0]}; fillGridIndices2D(gctx, grid, rootVolumes, boundaries, casts); diff --git a/Core/src/Detector/LayerStructureBuilder.cpp b/Core/src/Detector/LayerStructureBuilder.cpp index 76092582eea..5b63b40ba39 100644 --- a/Core/src/Detector/LayerStructureBuilder.cpp +++ b/Core/src/Detector/LayerStructureBuilder.cpp @@ -18,7 +18,7 @@ #include "Acts/Navigation/DetectorVolumeFinders.hpp" #include "Acts/Navigation/NavigationDelegates.hpp" #include "Acts/Surfaces/Surface.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinningData.hpp" #include "Acts/Utilities/Enumerate.hpp" #include "Acts/Utilities/Grid.hpp" @@ -53,8 +53,8 @@ void adaptBinningRange(std::vector& pBinning, // Get the number of bins std::size_t nBins = pb.bins(); // Check if extent overwrites that - if (extent.constrains(pb.binValue)) { - const auto& range = extent.range(pb.binValue); + if (extent.constrains(pb.axisDir)) { + const auto& range = extent.range(pb.axisDir); // Patch the edges values from the range vmin = range.min(); vmax = range.max(); @@ -99,7 +99,7 @@ Acts::Experimental::InternalNavigationDelegate createUpdater( decltype(lSurfaces), Acts::Experimental::IndexedSurfacesNavigation> isg{std::move(lSurfaces), std::move(assignToAll), - {binning.binValue}, + {binning.axisDir}, {binning.expansion}}; if (binning.axisType == Acts::AxisType::Equidistant) { // Equidistant @@ -141,7 +141,7 @@ Acts::Experimental::InternalNavigationDelegate createUpdater( decltype(lSurfaces), Acts::Experimental::IndexedSurfacesNavigation> isg{lSurfaces, assignToAll, - {aBinning.binValue, bBinning.binValue}, + {aBinning.axisDir, bBinning.axisDir}, {aBinning.expansion, bBinning.expansion}}; // Run through the cases if (aBinning.axisType == Acts::AxisType::Equidistant && @@ -242,11 +242,11 @@ Acts::Experimental::LayerStructureBuilder::construct( Extent supportExtent; // Let us start with an eventually existing volume extent, but only pick // the binning value that are not constrained by the internal surfaces - for (const auto& bv : allBinningValues()) { + for (const auto& bv : allAxisDirections()) { if (support.volumeExtent.constrains(bv) && !rangeContainsValue(support.internalConstraints, bv)) { ACTS_VERBOSE(" Support surface is constrained by volume extent in " - << binningValueName(bv)); + << axisDirectionName(bv)); supportExtent.set(bv, support.volumeExtent.min(bv), support.volumeExtent.max(bv)); } @@ -266,27 +266,27 @@ Acts::Experimental::LayerStructureBuilder::construct( // Add cylindrical support if (support.type == Surface::SurfaceType::Cylinder) { detail::SupportSurfacesHelper::CylindricalSupport cSupport{ - support.offset, support.volumeClearance[BinningValue::binZ], - support.volumeClearance[BinningValue::binPhi]}; + support.offset, support.volumeClearance[AxisDirection::AxisZ], + support.volumeClearance[AxisDirection::AxisPhi]}; detail::SupportSurfacesHelper::addSupport(internalSurfaces, assignToAll, supportExtent, cSupport, support.splits); } else if (support.type == Surface::SurfaceType::Disc) { // Add disc support detail::SupportSurfacesHelper::DiscSupport dSupport{ - support.offset, support.volumeClearance[BinningValue::binR], - support.volumeClearance[BinningValue::binPhi]}; + support.offset, support.volumeClearance[AxisDirection::AxisR], + support.volumeClearance[AxisDirection::AxisPhi]}; detail::SupportSurfacesHelper::addSupport(internalSurfaces, assignToAll, supportExtent, dSupport, support.splits); } else if (support.type == Surface::SurfaceType::Plane) { // Set the local coordinates - cyclic permutation - std::array locals = {BinningValue::binX, - BinningValue::binY}; - if (support.pPlacement == BinningValue::binX) { - locals = {BinningValue::binY, BinningValue::binZ}; - } else if (support.pPlacement == BinningValue::binY) { - locals = {BinningValue::binZ, BinningValue::binX}; + std::array locals = {AxisDirection::AxisX, + AxisDirection::AxisY}; + if (support.pPlacement == AxisDirection::AxisX) { + locals = {AxisDirection::AxisY, AxisDirection::AxisZ}; + } else if (support.pPlacement == AxisDirection::AxisY) { + locals = {AxisDirection::AxisZ, AxisDirection::AxisX}; } // Add rectangular support detail::SupportSurfacesHelper::RectangularSupport rSupport{ @@ -340,7 +340,7 @@ Acts::Experimental::LayerStructureBuilder::construct( adaptBinningRange(binnings, m_cfg.extent.value()); } // Sort the binning for conventions - std::ranges::sort(binnings, {}, [](const auto& b) { return b.binValue; }); + std::ranges::sort(binnings, {}, [](const auto& b) { return b.axisDir; }); ACTS_DEBUG("- 2-dimensional surface binning detected."); // Capture the binnings diff --git a/Core/src/Detector/MultiWireStructureBuilder.cpp b/Core/src/Detector/MultiWireStructureBuilder.cpp index 59f87a7e3c8..6ff673f958a 100644 --- a/Core/src/Detector/MultiWireStructureBuilder.cpp +++ b/Core/src/Detector/MultiWireStructureBuilder.cpp @@ -72,7 +72,7 @@ class MultiWireInternalStructureBuilder Acts::Experimental::MultiLayerSurfacesNavigation> isg{internalSurfaces, {}, - {m_cfg.binning[0u].binValue, m_cfg.binning[1u].binValue}, + {m_cfg.binning[0u].axisDir, m_cfg.binning[1u].axisDir}, {m_cfg.binning[0u].expansion, m_cfg.binning[1u].expansion}, m_cfg.transform}; Acts::Experimental::detail::CenterReferenceGenerator rGenerator; diff --git a/Core/src/Detector/ProtoDetector.cpp b/Core/src/Detector/ProtoDetector.cpp index a1ec0009c57..ef8087c46e8 100644 --- a/Core/src/Detector/ProtoDetector.cpp +++ b/Core/src/Detector/ProtoDetector.cpp @@ -24,20 +24,20 @@ void Acts::ProtoVolume::extendUp(Acts::ProtoVolume& ptVolume) { } } -void Acts::ProtoVolume::propagateMinDown(BinningValue bValue) { +void Acts::ProtoVolume::propagateMinDown(AxisDirection aDir) { if (container.has_value()) { for (auto& cv : container.value().constituentVolumes) { - cv.extent.set(bValue, extent.min(bValue), cv.extent.max(bValue)); - cv.propagateMinDown(bValue); + cv.extent.set(aDir, extent.min(aDir), cv.extent.max(aDir)); + cv.propagateMinDown(aDir); } } } -void Acts::ProtoVolume::propagateMaxDown(BinningValue bValue) { +void Acts::ProtoVolume::propagateMaxDown(AxisDirection aDir) { if (container.has_value()) { for (auto& cv : container.value().constituentVolumes) { - cv.extent.set(bValue, cv.extent.min(bValue), extent.max(bValue)); - cv.propagateMaxDown(bValue); + cv.extent.set(aDir, cv.extent.min(aDir), extent.max(aDir)); + cv.propagateMaxDown(aDir); } } } @@ -52,7 +52,7 @@ void Acts::ProtoVolume::constrainDown(const Acts::ProtoVolume& ptVolume) { } void Acts::ProtoVolume::harmonize(bool legacy) { - std::vector otherConstrains; + std::vector otherConstrains; // Deal with the constituents if (container.has_value() && !container.value().constituentVolumes.empty()) { @@ -82,9 +82,9 @@ void Acts::ProtoVolume::harmonize(bool legacy) { std::vector borders = {}; // The volumes should be harmonized in all other constraining values - for (auto obValue : allBinningValues()) { - if (obValue != binValue && extent.constrains(obValue)) { - otherConstrains.push_back(obValue); + for (auto oaDir : allAxisDirections()) { + if (oaDir != binValue && extent.constrains(oaDir)) { + otherConstrains.push_back(oaDir); } } diff --git a/Core/src/Detector/VolumeStructureBuilder.cpp b/Core/src/Detector/VolumeStructureBuilder.cpp index 9103164ad58..7f16cb0d4aa 100644 --- a/Core/src/Detector/VolumeStructureBuilder.cpp +++ b/Core/src/Detector/VolumeStructureBuilder.cpp @@ -74,15 +74,16 @@ Acts::Experimental::VolumeStructureBuilder::construct( if (boundValues.empty() && m_cfg.extent.has_value()) { ACTS_VERBOSE("Cuboid: estimate parameters from Extent."); const auto& vExtent = m_cfg.extent.value(); - if (vExtent.constrains(BinningValue::binX) && - vExtent.constrains(BinningValue::binY) && - vExtent.constrains(BinningValue::binZ)) { - eTransform.pretranslate(Vector3(vExtent.medium(BinningValue::binX), - vExtent.medium(BinningValue::binY), - vExtent.medium(BinningValue::binZ))); - boundValues = {0.5 * vExtent.interval(BinningValue::binX), - 0.5 * vExtent.interval(BinningValue::binY), - 0.5 * vExtent.interval(BinningValue::binZ)}; + if (vExtent.constrains(AxisDirection::AxisX) && + vExtent.constrains(AxisDirection::AxisY) && + vExtent.constrains(AxisDirection::AxisZ)) { + eTransform.pretranslate( + Vector3(vExtent.medium(AxisDirection::AxisX), + vExtent.medium(AxisDirection::AxisY), + vExtent.medium(AxisDirection::AxisZ))); + boundValues = {0.5 * vExtent.interval(AxisDirection::AxisX), + 0.5 * vExtent.interval(AxisDirection::AxisY), + 0.5 * vExtent.interval(AxisDirection::AxisZ)}; } else { throw std::runtime_error( @@ -119,16 +120,17 @@ Acts::Experimental::VolumeStructureBuilder::construct( if (boundValues.empty() && m_cfg.extent.has_value()) { ACTS_VERBOSE("Cylinder: estimate parameters from Extent."); const auto& vExtent = m_cfg.extent.value(); - if (vExtent.constrains(BinningValue::binR) && - vExtent.constrains(BinningValue::binZ)) { + if (vExtent.constrains(AxisDirection::AxisR) && + vExtent.constrains(AxisDirection::AxisZ)) { eTransform.pretranslate( - Vector3(0., 0., vExtent.medium(BinningValue::binZ))); - boundValues = {vExtent.min(BinningValue::binR), - vExtent.max(BinningValue::binR), - 0.5 * vExtent.interval(BinningValue::binZ)}; - if (vExtent.constrains(BinningValue::binPhi)) { - boundValues.push_back(0.5 * vExtent.interval(BinningValue::binPhi)); - boundValues.push_back(vExtent.medium(BinningValue::binPhi)); + Vector3(0., 0., vExtent.medium(AxisDirection::AxisZ))); + boundValues = {vExtent.min(AxisDirection::AxisR), + vExtent.max(AxisDirection::AxisR), + 0.5 * vExtent.interval(AxisDirection::AxisZ)}; + if (vExtent.constrains(AxisDirection::AxisPhi)) { + boundValues.push_back(0.5 * + vExtent.interval(AxisDirection::AxisPhi)); + boundValues.push_back(vExtent.medium(AxisDirection::AxisPhi)); } } else { throw std::runtime_error( diff --git a/Core/src/Detector/detail/BlueprintHelper.cpp b/Core/src/Detector/detail/BlueprintHelper.cpp index b0167188021..c67782ed757 100644 --- a/Core/src/Detector/detail/BlueprintHelper.cpp +++ b/Core/src/Detector/detail/BlueprintHelper.cpp @@ -18,16 +18,16 @@ namespace { std::array endPointsXYZ( - const Acts::Experimental::Blueprint::Node& node, Acts::BinningValue bVal) { + const Acts::Experimental::Blueprint::Node& node, Acts::AxisDirection bVal) { unsigned int bIdx = 0; switch (bVal) { - case Acts::BinningValue::binX: + case Acts::AxisDirection::AxisX: bIdx = 0; break; - case Acts::BinningValue::binY: + case Acts::AxisDirection::AxisY: bIdx = 1; break; - case Acts::BinningValue::binZ: + case Acts::AxisDirection::AxisZ: bIdx = 2; break; default: @@ -52,14 +52,14 @@ void Acts::Experimental::detail::BlueprintHelper::sort(Blueprint::Node& node, if (node.binning.size() == 1) { auto bVal = node.binning.front(); // x,y,z binning along the axis - if (bVal == BinningValue::binX || bVal == BinningValue::binY || - bVal == BinningValue::binZ) { + if (bVal == AxisDirection::AxisX || bVal == AxisDirection::AxisY || + bVal == AxisDirection::AxisZ) { Vector3 nodeCenter = node.transform.translation(); Vector3 nodeSortAxis = node.transform.rotation().col(toUnderlying(bVal)); std::ranges::sort(node.children, {}, [&](const auto& c) { return (c->transform.translation() - nodeCenter).dot(nodeSortAxis); }); - } else if (bVal == BinningValue::binR && + } else if (bVal == AxisDirection::AxisR && node.boundsType == VolumeBounds::eCylinder) { std::ranges::sort(node.children, {}, [](const auto& c) { return c->boundaryValues[0] + c->boundaryValues[1]; @@ -108,7 +108,7 @@ void Acts::Experimental::detail::BlueprintHelper::fillGapsCylindrical( std::vector> gaps; // Only 1D binning implemented for the moment - if (BinningValue bVal = node.binning.front(); bVal == BinningValue::binZ) { + if (AxisDirection bVal = node.binning.front(); bVal == AxisDirection::AxisZ) { // adjust inner/outer radius if (adjustToParent) { std::for_each(node.children.begin(), node.children.end(), @@ -152,7 +152,7 @@ void Acts::Experimental::detail::BlueprintHelper::fillGapsCylindrical( gaps.push_back(std::move(gap)); } - } else if (bVal == BinningValue::binR) { + } else if (bVal == AxisDirection::AxisR) { // We have binning in R present if (adjustToParent) { std::for_each(node.children.begin(), node.children.end(), @@ -208,8 +208,8 @@ void Acts::Experimental::detail::BlueprintHelper::fillGapsCuboidal( sort(node, false); // Cuboidal detector binnings - std::array allowedBinVals = { - BinningValue::binX, BinningValue::binY, BinningValue::binZ}; + std::array allowedBinVals = { + AxisDirection::AxisX, AxisDirection::AxisY, AxisDirection::AxisZ}; std::vector> gaps; auto binVal = node.binning.front(); diff --git a/Core/src/Detector/detail/CuboidalDetectorHelper.cpp b/Core/src/Detector/detail/CuboidalDetectorHelper.cpp index cda12f02de2..aef8d2a5c02 100644 --- a/Core/src/Detector/detail/CuboidalDetectorHelper.cpp +++ b/Core/src/Detector/detail/CuboidalDetectorHelper.cpp @@ -28,23 +28,23 @@ Acts::Experimental::DetectorComponent::PortalContainer Acts::Experimental::detail::CuboidalDetectorHelper::connect( const GeometryContext& gctx, std::vector>& volumes, - BinningValue bValue, const std::vector& selectedOnly, + AxisDirection bValue, const std::vector& selectedOnly, Acts::Logging::Level logLevel) { ACTS_LOCAL_LOGGER(getDefaultLogger("CuboidalDetectorHelper", logLevel)); ACTS_DEBUG("Connect " << volumes.size() << " detector volumes in " - << binningValueName(bValue) << "."); + << axisDirectionName(bValue) << "."); // Check transform for consistency auto centerDistances = DetectorVolumeConsistency::checkCenterAlignment(gctx, volumes, bValue); // Assign the portal indices according to the volume bounds definition - std::array possibleValues = { - BinningValue::binX, BinningValue::binY, BinningValue::binZ}; - // 1 -> [ 2,3 ] for binX connection (cylclic one step) - // 2 -> [ 4,5 ] for binY connection (cylclic two steps) - // 0 -> [ 0,1 ] for binZ connection (to be in line with cylinder covnention) + std::array possibleValues = { + AxisDirection::AxisX, AxisDirection::AxisY, AxisDirection::AxisZ}; + // 1 -> [ 2,3 ] for AxisX connection (cylclic one step) + // 2 -> [ 4,5 ] for AxisY connection (cylclic two steps) + // 0 -> [ 0,1 ] for AxisZ connection (to be in line with cylinder covnention) using PortalSet = std::array; std::vector portalSets = { {PortalSet{2, 3}, PortalSet{4, 5}, PortalSet{0, 1}}}; @@ -61,7 +61,7 @@ Acts::Experimental::detail::CuboidalDetectorHelper::connect( }; // Pick the counter part value - auto counterPart = [&](BinningValue mValue) -> BinningValue { + auto counterPart = [&](AxisDirection mValue) -> AxisDirection { for (auto cValue : possibleValues) { if (cValue != mValue && cValue != bValue) { return cValue; @@ -169,14 +169,14 @@ Acts::Experimental::detail::CuboidalDetectorHelper::connect( // - this is an anticyclic swap bool mergedInX = true; switch (bValue) { - case BinningValue::binZ: { - mergedInX = (mergeValue == BinningValue::binY); + case AxisDirection::AxisZ: { + mergedInX = (mergeValue == AxisDirection::AxisY); } break; - case BinningValue::binY: { - mergedInX = (mergeValue == BinningValue::binX); + case AxisDirection::AxisY: { + mergedInX = (mergeValue == AxisDirection::AxisX); } break; - case BinningValue::binX: { - mergedInX = (mergeValue == BinningValue::binZ); + case AxisDirection::AxisX: { + mergedInX = (mergeValue == AxisDirection::AxisZ); } break; default: break; @@ -213,7 +213,7 @@ Acts::Experimental::detail::CuboidalDetectorHelper::connect( // Make the stitch boundaries pReplacements.push_back(PortalReplacement( portal, index, dir, stitchBoundaries, - (mergedInX ? BinningValue::binX : BinningValue::binY))); + (mergedInX ? AxisDirection::AxisX : AxisDirection::AxisY))); } } @@ -243,20 +243,20 @@ Acts::Experimental::DetectorComponent::PortalContainer Acts::Experimental::detail::CuboidalDetectorHelper::connect( const GeometryContext& /*gctx*/, const std::vector& containers, - BinningValue bValue, const std::vector& /*unused */, + AxisDirection bValue, const std::vector& /*unused */, Acts::Logging::Level logLevel) noexcept(false) { // The local logger ACTS_LOCAL_LOGGER(getDefaultLogger("CuboidalDetectorHelper", logLevel)); ACTS_DEBUG("Connect " << containers.size() << " containers in " - << binningValueName(bValue) << "."); + << axisDirectionName(bValue) << "."); // Return the new container DetectorComponent::PortalContainer dShell; // The possible bin values - std::array possibleValues = { - BinningValue::binX, BinningValue::binY, BinningValue::binZ}; + std::array possibleValues = { + AxisDirection::AxisX, AxisDirection::AxisY, AxisDirection::AxisZ}; // And their associated portal sets, see above using PortalSet = std::array; std::vector portalSets = { diff --git a/Core/src/Detector/detail/CylindricalDetectorHelper.cpp b/Core/src/Detector/detail/CylindricalDetectorHelper.cpp index 545e0947797..2d1c021bbe6 100644 --- a/Core/src/Detector/detail/CylindricalDetectorHelper.cpp +++ b/Core/src/Detector/detail/CylindricalDetectorHelper.cpp @@ -84,9 +84,9 @@ Acts::Experimental::PortalReplacement createDiscReplacement( const std::vector& phiBoundaries, unsigned int index, Acts::Direction dir) { // Autodetector stitch value - Acts::BinningValue stitchValue = phiBoundaries.size() == 2u - ? Acts::BinningValue::binR - : Acts::BinningValue::binPhi; + Acts::AxisDirection stitchValue = phiBoundaries.size() == 2u + ? Acts::AxisDirection::AxisR + : Acts::AxisDirection::AxisPhi; // Estimate ranges auto [minRit, maxRit] = std::ranges::minmax_element(rBoundaries); auto [sectorPhi, avgPhi] = Acts::range_medium(phiBoundaries); @@ -99,7 +99,7 @@ Acts::Experimental::PortalReplacement createDiscReplacement( transform, std::move(bounds)); // Make a portal and indicate the new link direction const auto& stitchBoundaries = - (stitchValue == Acts::BinningValue::binR) ? rBoundaries : phiBoundaries; + (stitchValue == Acts::AxisDirection::AxisR) ? rBoundaries : phiBoundaries; return Acts::Experimental::PortalReplacement( std::make_shared(surface), index, dir, stitchBoundaries, stitchValue); @@ -121,9 +121,9 @@ Acts::Experimental::PortalReplacement createCylinderReplacement( const std::vector& phiBoundaries, unsigned int index, Acts::Direction dir) { // Autodetector stitch value - Acts::BinningValue stitchValue = phiBoundaries.size() == 2u - ? Acts::BinningValue::binZ - : Acts::BinningValue::binPhi; + Acts::AxisDirection stitchValue = phiBoundaries.size() == 2u + ? Acts::AxisDirection::AxisZ + : Acts::AxisDirection::AxisPhi; auto [lengthZ, medZ] = Acts::range_medium(zBoundaries); auto [sectorPhi, avgPhi] = Acts::range_medium(phiBoundaries); @@ -136,7 +136,7 @@ Acts::Experimental::PortalReplacement createCylinderReplacement( // A make a portal and indicate the new link direction const auto& stitchBoundaries = - (stitchValue == Acts::BinningValue::binZ) ? zBoundaries : phiBoundaries; + (stitchValue == Acts::AxisDirection::AxisZ) ? zBoundaries : phiBoundaries; return Acts::Experimental::PortalReplacement( std::make_shared(surface), index, dir, stitchBoundaries, stitchValue); @@ -155,7 +155,7 @@ Acts::Experimental::PortalReplacement createCylinderReplacement( Acts::Experimental::PortalReplacement createSectorReplacement( const Acts::GeometryContext& gctx, const Acts::Vector3& volumeCenter, const Acts::Surface& refSurface, const std::vector& boundaries, - Acts::BinningValue binning, unsigned int index, Acts::Direction dir) { + Acts::AxisDirection binning, unsigned int index, Acts::Direction dir) { // Get a reference transform const auto& refTransform = refSurface.transform(gctx); auto refRotation = refTransform.rotation(); @@ -165,7 +165,7 @@ Acts::Experimental::PortalReplacement createSectorReplacement( // Create a new transform Acts::Transform3 transform = Acts::Transform3::Identity(); - if (binning == Acts::BinningValue::binR) { + if (binning == Acts::AxisDirection::AxisR) { // Range and center-r calculation auto [range, medium] = Acts::range_medium(boundaries); // New joint center: @@ -179,7 +179,7 @@ Acts::Experimental::PortalReplacement createSectorReplacement( boundValues[Acts::RectangleBounds::BoundValues::eMinX]); // New joint bounds bounds = std::make_unique(halfX, 0.5 * range); - } else if (binning == Acts::BinningValue::binZ) { + } else if (binning == Acts::AxisDirection::AxisZ) { // Range and medium z alculation auto [range, medium] = Acts::range_medium(boundaries); // Center R calculation, using projection onto vector @@ -396,9 +396,9 @@ Acts::Experimental::detail::CylindricalDetectorHelper::connectInR( // As it is r-wrapping, the inner tube is guaranteed const Surface& refSurface = volumes[volumes.size() - 1u]->portals()[iu + 4u]->surface(); - pReplacements.push_back( - createSectorReplacement(gctx, vCenter, refSurface, rBoundaries, - Acts::BinningValue::binR, iu + 4ul, idir)); + pReplacements.push_back(createSectorReplacement( + gctx, vCenter, refSurface, rBoundaries, Acts::AxisDirection::AxisR, + iu + 4ul, idir)); } } } else { @@ -598,7 +598,7 @@ Acts::Experimental::detail::CylindricalDetectorHelper::connectInZ( volumes[0u]->portals()[iu + iSecOffset]->surface(); pReplacements.push_back(createSectorReplacement( gctx, combinedCenter, refSurface, zBoundaries, - Acts::BinningValue::binZ, iu + 4ul, idir)); + Acts::AxisDirection::AxisZ, iu + 4ul, idir)); } } } else { diff --git a/Core/src/Detector/detail/DetectorVolumeConsistency.cpp b/Core/src/Detector/detail/DetectorVolumeConsistency.cpp index 999fe5fe6a8..ec8778de96b 100644 --- a/Core/src/Detector/detail/DetectorVolumeConsistency.cpp +++ b/Core/src/Detector/detail/DetectorVolumeConsistency.cpp @@ -39,7 +39,7 @@ std::vector Acts::Experimental::detail::DetectorVolumeConsistency::checkCenterAlignment( const GeometryContext& gctx, const std::vector>& volumes, - BinningValue axisValue) { + AxisDirection axisValue) { std::vector distances = {}; // First it needs to surfive the rotation check checkRotationAlignment(gctx, volumes); diff --git a/Core/src/Detector/detail/PortalHelper.cpp b/Core/src/Detector/detail/PortalHelper.cpp index a24b74308cf..40a418f4e4d 100644 --- a/Core/src/Detector/detail/PortalHelper.cpp +++ b/Core/src/Detector/detail/PortalHelper.cpp @@ -36,7 +36,7 @@ void Acts::Experimental::detail::PortalHelper::attachDetectorVolumesUpdater( const GeometryContext& gctx, Portal& portal, const std::vector>& volumes, const Direction& direction, const std::vector& boundaries, - const BinningValue& binning) { + const AxisDirection& binning) { // Check if the boundaries need a transform const auto pTransform = portal.surface().transform(gctx); // Creating a link to the mother diff --git a/Core/src/Detector/detail/ProtoMaterialHelper.cpp b/Core/src/Detector/detail/ProtoMaterialHelper.cpp index af5b96b187e..5cb3ad59c6f 100644 --- a/Core/src/Detector/detail/ProtoMaterialHelper.cpp +++ b/Core/src/Detector/detail/ProtoMaterialHelper.cpp @@ -25,8 +25,8 @@ Acts::Experimental::detail::ProtoMaterialHelper::attachProtoMaterial( ProtoBinning fBinning = b; // Check if the binning needs to be fixed if (fBinning.autorange) { - auto range = sExtent.range(b.binValue); - fBinning = ProtoBinning(b.binValue, b.boundaryType, range.min(), + auto range = sExtent.range(b.axisDir); + fBinning = ProtoBinning(b.axisDir, b.boundaryType, range.min(), range.max(), b.bins(), b.expansion); } fbDescription.binning.push_back(fBinning); diff --git a/Core/src/Detector/detail/SupportSurfacesHelper.cpp b/Core/src/Detector/detail/SupportSurfacesHelper.cpp index 1d06294e6a3..60f55b5ae74 100644 --- a/Core/src/Detector/detail/SupportSurfacesHelper.cpp +++ b/Core/src/Detector/detail/SupportSurfacesHelper.cpp @@ -28,26 +28,26 @@ Acts::Experimental::detail::SupportSurfacesHelper::SupportSurfaceComponents Acts::Experimental::detail::SupportSurfacesHelper::CylindricalSupport:: operator()(const Extent& lExtent) const { // Bail out if you have no measure of R, Z - if (!lExtent.constrains(BinningValue::binZ) || - !lExtent.constrains(BinningValue::binR)) { + if (!lExtent.constrains(AxisDirection::AxisZ) || + !lExtent.constrains(AxisDirection::AxisR)) { throw std::invalid_argument( "SupportSurfacesHelper::CylindricalSupport::operator() - z or " "r are not constrained."); } // Min / Max z with clearances adapted - double minZ = lExtent.min(BinningValue::binZ) + std::abs(zClearance[0u]); - double maxZ = lExtent.max(BinningValue::binZ) - std::abs(zClearance[1u]); + double minZ = lExtent.min(AxisDirection::AxisZ) + std::abs(zClearance[0u]); + double maxZ = lExtent.max(AxisDirection::AxisZ) - std::abs(zClearance[1u]); // Phi sector double hPhiSector = std::numbers::pi; double avgPhi = 0.; - if (lExtent.constrains(BinningValue::binPhi)) { + if (lExtent.constrains(AxisDirection::AxisPhi)) { // Min / Max phi with clearances adapted double minPhi = - lExtent.min(BinningValue::binPhi) + std::abs(phiClearance[0u]); + lExtent.min(AxisDirection::AxisPhi) + std::abs(phiClearance[0u]); double maxPhi = - lExtent.max(BinningValue::binPhi) - std::abs(phiClearance[1u]); + lExtent.max(AxisDirection::AxisPhi) - std::abs(phiClearance[1u]); hPhiSector = 0.5 * (maxPhi - minPhi); avgPhi = 0.5 * (minPhi + maxPhi); } @@ -58,10 +58,10 @@ operator()(const Extent& lExtent) const { } // The Radius estimation - double r = rOffset < 0 ? lExtent.min(BinningValue::binR) + rOffset - : lExtent.max(BinningValue::binR) + rOffset; + double r = rOffset < 0 ? lExtent.min(AxisDirection::AxisR) + rOffset + : lExtent.max(AxisDirection::AxisR) + rOffset; if (rOffset == 0.) { - r = lExtent.medium(BinningValue::binR); + r = lExtent.medium(AxisDirection::AxisR); } // Components are resolved and returned as a tuple return { @@ -72,35 +72,35 @@ Acts::Experimental::detail::SupportSurfacesHelper::SupportSurfaceComponents Acts::Experimental::detail::SupportSurfacesHelper::DiscSupport::operator()( const Extent& lExtent) const { // Bail out if you have no measure of R, Z - if (!lExtent.constrains(BinningValue::binZ) || - !lExtent.constrains(BinningValue::binR)) { + if (!lExtent.constrains(AxisDirection::AxisZ) || + !lExtent.constrains(AxisDirection::AxisR)) { throw std::invalid_argument( "SupportSurfacesHelper::DiscSupport::operator() - z or " "r are not constrained."); } // Min / Max r with clearances adapted - double minR = lExtent.min(BinningValue::binR) + std::abs(rClearance[0u]); - double maxR = lExtent.max(BinningValue::binR) - std::abs(rClearance[1u]); + double minR = lExtent.min(AxisDirection::AxisR) + std::abs(rClearance[0u]); + double maxR = lExtent.max(AxisDirection::AxisR) - std::abs(rClearance[1u]); // Phi sector double hPhiSector = std::numbers::pi; double avgPhi = 0.; - if (lExtent.constrains(BinningValue::binPhi)) { + if (lExtent.constrains(AxisDirection::AxisPhi)) { // Min / Max phi with clearances adapted double minPhi = - lExtent.min(BinningValue::binPhi) + std::abs(phiClearance[0u]); + lExtent.min(AxisDirection::AxisPhi) + std::abs(phiClearance[0u]); double maxPhi = - lExtent.max(BinningValue::binPhi) - std::abs(phiClearance[1u]); + lExtent.max(AxisDirection::AxisPhi) - std::abs(phiClearance[1u]); hPhiSector = 0.5 * (maxPhi - minPhi); avgPhi = 0.5 * (minPhi + maxPhi); } // The z position estimate - double z = zOffset < 0 ? lExtent.min(BinningValue::binZ) + zOffset - : lExtent.max(BinningValue::binZ) + zOffset; + double z = zOffset < 0 ? lExtent.min(AxisDirection::AxisZ) + zOffset + : lExtent.max(AxisDirection::AxisZ) + zOffset; if (zOffset == 0.) { - z = lExtent.medium(BinningValue::binZ); + z = lExtent.medium(AxisDirection::AxisZ); } Transform3 transform = Transform3::Identity(); @@ -114,20 +114,21 @@ Acts::Experimental::detail::SupportSurfacesHelper::SupportSurfaceComponents Acts::Experimental::detail::SupportSurfacesHelper::RectangularSupport:: operator()(const Extent& lExtent) const { // Bail out if you have no measure of X, Y, Z - if (!(lExtent.constrains(BinningValue::binX) && - lExtent.constrains(BinningValue::binY) && - lExtent.constrains(BinningValue::binZ))) { + if (!(lExtent.constrains(AxisDirection::AxisX) && + lExtent.constrains(AxisDirection::AxisY) && + lExtent.constrains(AxisDirection::AxisZ))) { throw std::invalid_argument( "SupportSurfacesHelper::RectangularSupport::operator() - x, y or " "z are not constrained."); } // Set the local coordinates - cyclic permutation - std::array locals = {BinningValue::binX, BinningValue::binY}; - if (pPlacement == BinningValue::binX) { - locals = {BinningValue::binY, BinningValue::binZ}; - } else if (pPlacement == BinningValue::binY) { - locals = {BinningValue::binZ, BinningValue::binX}; + std::array locals = {AxisDirection::AxisX, + AxisDirection::AxisY}; + if (pPlacement == AxisDirection::AxisX) { + locals = {AxisDirection::AxisY, AxisDirection::AxisZ}; + } else if (pPlacement == AxisDirection::AxisY) { + locals = {AxisDirection::AxisZ, AxisDirection::AxisX}; } // Make the rectangular shape diff --git a/Core/src/Geometry/Blueprint.cpp b/Core/src/Geometry/Blueprint.cpp index f4531acaa2f..a35de4a58f0 100644 --- a/Core/src/Geometry/Blueprint.cpp +++ b/Core/src/Geometry/Blueprint.cpp @@ -58,7 +58,7 @@ void Blueprint::addToGraphviz(std::ostream &os) const { std::unique_ptr Blueprint::construct( const BlueprintOptions &options, const GeometryContext &gctx, const Logger &logger) { - using enum BinningValue; + using enum AxisDirection; ACTS_INFO(prefix() << "Building tracking geometry from blueprint tree"); @@ -94,7 +94,7 @@ std::unique_ptr Blueprint::construct( // Make a copy that we'll modify auto newBounds = std::make_shared(*cyl); - const auto &zEnv = m_cfg.envelope[binZ]; + const auto &zEnv = m_cfg.envelope[AxisZ]; if (zEnv[0] != zEnv[1]) { ACTS_ERROR( prefix() << "Root node cylinder envelope for z must be symmetric"); @@ -103,7 +103,7 @@ std::unique_ptr Blueprint::construct( "symmetric"); } - const auto &rEnv = m_cfg.envelope[binR]; + const auto &rEnv = m_cfg.envelope[AxisR]; newBounds->set({ {eHalfLengthZ, newBounds->get(eHalfLengthZ) + zEnv[0]}, diff --git a/Core/src/Geometry/BlueprintNode.cpp b/Core/src/Geometry/BlueprintNode.cpp index 13c03495494..601fc6d2628 100644 --- a/Core/src/Geometry/BlueprintNode.cpp +++ b/Core/src/Geometry/BlueprintNode.cpp @@ -114,7 +114,7 @@ StaticBlueprintNode& BlueprintNode::addStaticVolume( } CylinderContainerBlueprintNode& BlueprintNode::addCylinderContainer( - const std::string& name, BinningValue direction, + const std::string& name, AxisDirection direction, const std::function& callback) { auto cylinder = diff --git a/Core/src/Geometry/CompositePortalLink.cpp b/Core/src/Geometry/CompositePortalLink.cpp index 108db95c192..19d9ea3c02a 100644 --- a/Core/src/Geometry/CompositePortalLink.cpp +++ b/Core/src/Geometry/CompositePortalLink.cpp @@ -30,7 +30,7 @@ namespace Acts { namespace { std::shared_ptr mergedSurface(const Surface& a, const Surface& b, - BinningValue direction) { + AxisDirection direction) { if (a.type() != b.type()) { throw std::invalid_argument{"Cannot merge surfaces of different types"}; } @@ -56,7 +56,7 @@ std::shared_ptr mergedSurface(const Surface& a, std::shared_ptr mergePortalLinks( const std::vector>& links, - BinningValue direction) { + AxisDirection direction) { assert(std::ranges::all_of(links, [](const auto& link) { return link != nullptr; })); assert(!links.empty()); @@ -73,7 +73,7 @@ std::shared_ptr mergePortalLinks( CompositePortalLink::CompositePortalLink(std::unique_ptr a, std::unique_ptr b, - BinningValue direction, bool flatten) + AxisDirection direction, bool flatten) : PortalLinkBase(mergedSurface(a->surface(), b->surface(), direction)), m_direction{direction} { if (!flatten) { @@ -99,7 +99,7 @@ CompositePortalLink::CompositePortalLink(std::unique_ptr a, } CompositePortalLink::CompositePortalLink( - std::vector> links, BinningValue direction, + std::vector> links, AxisDirection direction, bool flatten) : PortalLinkBase(mergePortalLinks(links, direction)), m_direction(direction) { @@ -207,7 +207,7 @@ std::unique_ptr CompositePortalLink::makeGrid( if (surface().type() == Surface::SurfaceType::Cylinder) { ACTS_VERBOSE("Combining composite into cylinder grid"); - if (m_direction != BinningValue::binZ) { + if (m_direction != AxisDirection::AxisZ) { ACTS_ERROR("Cylinder grid only supports binning in Z direction"); throw std::runtime_error{"Unsupported binning direction"}; } @@ -251,7 +251,7 @@ std::unique_ptr CompositePortalLink::makeGrid( } else if (surface().type() == Surface::SurfaceType::Disc) { ACTS_VERBOSE("Combining composite into disc grid"); - if (m_direction != BinningValue::binR) { + if (m_direction != AxisDirection::AxisR) { ACTS_ERROR("Disc grid only supports binning in R direction"); throw std::runtime_error{"Unsupported binning direction"}; } diff --git a/Core/src/Geometry/CuboidVolumeBounds.cpp b/Core/src/Geometry/CuboidVolumeBounds.cpp index a8b1729c74a..29e7714fedf 100644 --- a/Core/src/Geometry/CuboidVolumeBounds.cpp +++ b/Core/src/Geometry/CuboidVolumeBounds.cpp @@ -104,15 +104,15 @@ void CuboidVolumeBounds::buildSurfaceBounds() { get(eHalfLengthX)); } -double CuboidVolumeBounds::binningBorder(BinningValue bValue) const { - if (bValue <= BinningValue::binZ) { - return m_values[toUnderlying(bValue)]; +double CuboidVolumeBounds::referenceBorder(AxisDirection aDir) const { + if (aDir <= AxisDirection::AxisZ) { + return m_values[toUnderlying(aDir)]; } - if (bValue == BinningValue::binR) { - return std::sqrt(m_values[toUnderlying(BinningValue::binX)] * - m_values[toUnderlying(BinningValue::binX)] + - m_values[toUnderlying(BinningValue::binY)] * - m_values[toUnderlying(BinningValue::binY)]); + if (aDir == AxisDirection::AxisR) { + return std::sqrt(m_values[toUnderlying(AxisDirection::AxisX)] * + m_values[toUnderlying(AxisDirection::AxisX)] + + m_values[toUnderlying(AxisDirection::AxisY)] * + m_values[toUnderlying(AxisDirection::AxisY)]); } return 0.0; } diff --git a/Core/src/Geometry/CuboidVolumeBuilder.cpp b/Core/src/Geometry/CuboidVolumeBuilder.cpp index 614ce28a67f..90c9df756ae 100644 --- a/Core/src/Geometry/CuboidVolumeBuilder.cpp +++ b/Core/src/Geometry/CuboidVolumeBuilder.cpp @@ -93,9 +93,9 @@ std::shared_ptr Acts::CuboidVolumeBuilder::buildLayer( lCfg.surfaceArrayCreator = std::make_shared(); LayerCreator layerCreator(lCfg); ProtoLayer pl{gctx, cfg.surfaces}; - pl.envelope[BinningValue::binX] = cfg.envelopeX; - pl.envelope[BinningValue::binY] = cfg.envelopeY; - pl.envelope[BinningValue::binZ] = cfg.envelopeZ; + pl.envelope[AxisDirection::AxisX] = cfg.envelopeX; + pl.envelope[AxisDirection::AxisY] = cfg.envelopeY; + pl.envelope[AxisDirection::AxisZ] = cfg.envelopeZ; return layerCreator.planeLayer(gctx, cfg.surfaces, cfg.binsY, cfg.binsZ, cfg.binningDimension, pl, trafo); } @@ -249,7 +249,7 @@ Acts::MutableTrackingVolumePtr Acts::CuboidVolumeBuilder::trackingVolume( } // Build binning - BinningData binData(BinningOption::open, BinningValue::binX, binBoundaries); + BinningData binData(BinningOption::open, AxisDirection::AxisX, binBoundaries); auto bu = std::make_unique(binData); // Build TrackingVolume array diff --git a/Core/src/Geometry/CylinderContainerBlueprintNode.cpp b/Core/src/Geometry/CylinderContainerBlueprintNode.cpp index 284b30949ac..0da0e409c0b 100644 --- a/Core/src/Geometry/CylinderContainerBlueprintNode.cpp +++ b/Core/src/Geometry/CylinderContainerBlueprintNode.cpp @@ -23,7 +23,7 @@ namespace Acts { CylinderContainerBlueprintNode::CylinderContainerBlueprintNode( - const std::string& name, BinningValue direction, + const std::string& name, AxisDirection direction, CylinderVolumeStack::AttachmentStrategy attachmentStrategy, CylinderVolumeStack::ResizeStrategy resizeStrategy) : m_name(name), @@ -197,7 +197,7 @@ bool CylinderContainerBlueprintNode::isGapVolume(const Volume& volume) const { } CylinderContainerBlueprintNode& CylinderContainerBlueprintNode::setDirection( - BinningValue direction) { + AxisDirection direction) { if (m_stack != nullptr) { throw std::runtime_error("Cannot change direction after build"); } @@ -240,7 +240,7 @@ void CylinderContainerBlueprintNode::addToGraphviz(std::ostream& os) const { } } -BinningValue CylinderContainerBlueprintNode::direction() const { +AxisDirection CylinderContainerBlueprintNode::direction() const { return m_direction; } diff --git a/Core/src/Geometry/CylinderVolumeBounds.cpp b/Core/src/Geometry/CylinderVolumeBounds.cpp index 00a4c71f882..f6e37230943 100644 --- a/Core/src/Geometry/CylinderVolumeBounds.cpp +++ b/Core/src/Geometry/CylinderVolumeBounds.cpp @@ -232,23 +232,23 @@ bool CylinderVolumeBounds::inside(const Vector3& pos, double tol) const { return (insideZ && insideR && insidePhi); } -Vector3 CylinderVolumeBounds::binningOffset(BinningValue bValue) +Vector3 CylinderVolumeBounds::referenceOffset(AxisDirection aDir) const { // the medium radius is taken for r-type binning - if (bValue == Acts::BinningValue::binR || - bValue == Acts::BinningValue::binRPhi) { + if (aDir == Acts::AxisDirection::AxisR || + aDir == Acts::AxisDirection::AxisRPhi) { return Vector3(0.5 * (get(eMinR) + get(eMaxR)), 0., 0.); } - return VolumeBounds::binningOffset(bValue); + return VolumeBounds::referenceOffset(aDir); } -double CylinderVolumeBounds::binningBorder(BinningValue bValue) const { - if (bValue == Acts::BinningValue::binR) { +double CylinderVolumeBounds::referenceBorder(AxisDirection aDir) const { + if (aDir == Acts::AxisDirection::AxisR) { return 0.5 * (get(eMaxR) - get(eMinR)); } - if (bValue == Acts::BinningValue::binZ) { + if (aDir == Acts::AxisDirection::AxisZ) { return get(eHalfLengthZ); } - return VolumeBounds::binningBorder(bValue); + return VolumeBounds::referenceBorder(aDir); } std::vector CylinderVolumeBounds::values() const { diff --git a/Core/src/Geometry/CylinderVolumeBuilder.cpp b/Core/src/Geometry/CylinderVolumeBuilder.cpp index 4f99a77eabd..0956db85752 100644 --- a/Core/src/Geometry/CylinderVolumeBuilder.cpp +++ b/Core/src/Geometry/CylinderVolumeBuilder.cpp @@ -351,8 +351,8 @@ Acts::CylinderVolumeBuilder::trackingVolume( // Filling loop for (const auto& elay : endcapConfig.layers) { // Getting the reference radius - double test = elay->surfaceRepresentation().binningPositionValue( - gctx, BinningValue::binR); + double test = elay->surfaceRepresentation().referencePositionValue( + gctx, AxisDirection::AxisR); // Find the right bin auto ringVolume = std::ranges::find_if(volumeRminRmax, [&](const auto& vrr) { diff --git a/Core/src/Geometry/CylinderVolumeHelper.cpp b/Core/src/Geometry/CylinderVolumeHelper.cpp index 77d9dcaee8f..380072b437e 100644 --- a/Core/src/Geometry/CylinderVolumeHelper.cpp +++ b/Core/src/Geometry/CylinderVolumeHelper.cpp @@ -102,7 +102,7 @@ Acts::CylinderVolumeHelper::createTrackingVolume( double zMinRaw = 0.; double zMaxRaw = 0.; - BinningValue bValue = BinningValue::binR; + AxisDirection bValue = AxisDirection::AxisR; // check the dimension and fill raw data if (!estimateAndCheckDimension(gctx, layers, cylinderBounds, transform, @@ -139,7 +139,7 @@ Acts::CylinderVolumeHelper::createTrackingVolume( << bValue); // create the Layer Array - layerArray = (bValue == BinningValue::binR) + layerArray = (bValue == AxisDirection::AxisR) ? m_cfg.layerArrayCreator->layerArray(gctx, layers, rMin, rMax, bType, bValue) : m_cfg.layerArrayCreator->layerArray(gctx, layers, zMin, @@ -383,9 +383,9 @@ Acts::CylinderVolumeHelper::createContainerTrackingVolume( // create the volume array with the ITrackingVolumeArrayCreator std::shared_ptr volumeArray = (rCase) ? m_cfg.trackingVolumeArrayCreator->trackingVolumeArray( - gctx, volumes, BinningValue::binR) + gctx, volumes, AxisDirection::AxisR) : m_cfg.trackingVolumeArrayCreator->trackingVolumeArray( - gctx, volumes, BinningValue::binZ); + gctx, volumes, AxisDirection::AxisZ); if (volumeArray == nullptr) { ACTS_WARNING( "Creation of TrackingVolume array did not succeed - returning 0 "); @@ -417,7 +417,7 @@ bool Acts::CylinderVolumeHelper::estimateAndCheckDimension( const GeometryContext& gctx, const LayerVector& layers, std::shared_ptr& cylinderVolumeBounds, const Transform3& transform, double& rMinClean, double& rMaxClean, - double& zMinClean, double& zMaxClean, BinningValue& bValue, + double& zMinClean, double& zMaxClean, AxisDirection& bValue, BinningType /*bType*/) const { // some verbose output @@ -490,7 +490,7 @@ bool Acts::CylinderVolumeHelper::estimateAndCheckDimension( } // set the binning value - bValue = radial ? BinningValue::binR : BinningValue::binZ; + bValue = radial ? AxisDirection::AxisR : AxisDirection::AxisZ; ACTS_VERBOSE( "Estimate/check CylinderVolumeBounds from/w.r.t. enclosed " @@ -681,7 +681,7 @@ bool Acts::CylinderVolumeHelper::interGlueTrackingVolume( // create the outside volume array std::shared_ptr glueVolumesNegativeFaceArray = m_cfg.trackingVolumeArrayCreator->trackingVolumeArray( - gctx, glueVolumesNegativeFace, BinningValue::binR); + gctx, glueVolumesNegativeFace, AxisDirection::AxisR); // register the glue voluems glueDescr.registerGlueVolumes(negativeFaceXY, glueVolumesNegativeFaceArray); @@ -690,7 +690,7 @@ bool Acts::CylinderVolumeHelper::interGlueTrackingVolume( // create the outside volume array std::shared_ptr glueVolumesPositiveFaceArray = m_cfg.trackingVolumeArrayCreator->trackingVolumeArray( - gctx, glueVolumesPositiveFace, BinningValue::binR); + gctx, glueVolumesPositiveFace, AxisDirection::AxisR); // register the glue voluems glueDescr.registerGlueVolumes(positiveFaceXY, glueVolumesPositiveFaceArray); @@ -699,7 +699,7 @@ bool Acts::CylinderVolumeHelper::interGlueTrackingVolume( // create the outside volume array std::shared_ptr glueVolumesInnerTubeArray = m_cfg.trackingVolumeArrayCreator->trackingVolumeArray( - gctx, glueVolumesInnerTube, BinningValue::binZ); + gctx, glueVolumesInnerTube, AxisDirection::AxisZ); // register the glue voluems glueDescr.registerGlueVolumes(tubeInnerCover, glueVolumesInnerTubeArray); } @@ -707,7 +707,7 @@ bool Acts::CylinderVolumeHelper::interGlueTrackingVolume( // create the outside volume array std::shared_ptr glueVolumesOuterTubeArray = m_cfg.trackingVolumeArrayCreator->trackingVolumeArray( - gctx, glueVolumesOuterTube, BinningValue::binZ); + gctx, glueVolumesOuterTube, AxisDirection::AxisZ); // register the glue voluems glueDescr.registerGlueVolumes(tubeOuterCover, glueVolumesOuterTubeArray); } @@ -961,7 +961,7 @@ Acts::CylinderVolumeHelper::createCylinderLayer(double z, double r, // z-binning BinUtility layerBinUtility(binsZ, z - halflengthZ, z + halflengthZ, open, - BinningValue::binZ); + AxisDirection::AxisZ); if (binsPhi == 1) { // the BinUtility for the material // ---------------------> create material for the layer surface @@ -972,7 +972,7 @@ Acts::CylinderVolumeHelper::createCylinderLayer(double z, double r, // update the BinUtility: local position on Cylinder is rPhi, z BinUtility layerBinUtilityPhiZ(binsPhi, -r * std::numbers::pi, r * std::numbers::pi, closed, - BinningValue::binPhi); + AxisDirection::AxisPhi); layerBinUtilityPhiZ += layerBinUtility; // ---------------------> create material for the layer surface ACTS_VERBOSE(" -> Preparing the binned material with " @@ -997,7 +997,7 @@ std::shared_ptr Acts::CylinderVolumeHelper::createDiscLayer( const Transform3 transform(Translation3(0., 0., z)); // R is the primary binning for the material - BinUtility materialBinUtility(binsR, rMin, rMax, open, BinningValue::binR); + BinUtility materialBinUtility(binsR, rMin, rMax, open, AxisDirection::AxisR); if (binsPhi == 1) { ACTS_VERBOSE(" -> Preparing the binned material with " << binsR << " bins in R. "); @@ -1005,7 +1005,7 @@ std::shared_ptr Acts::CylinderVolumeHelper::createDiscLayer( // also binning in phi chosen materialBinUtility += BinUtility(binsPhi, -std::numbers::pi_v, - std::numbers::pi_v, closed, BinningValue::binPhi); + std::numbers::pi_v, closed, AxisDirection::AxisPhi); ACTS_VERBOSE(" -> Preparing the binned material with " << binsPhi << " / " << binsR << " bins in phi / R. "); } diff --git a/Core/src/Geometry/CylinderVolumeStack.cpp b/Core/src/Geometry/CylinderVolumeStack.cpp index 5350c3e764e..61696bd61af 100644 --- a/Core/src/Geometry/CylinderVolumeStack.cpp +++ b/Core/src/Geometry/CylinderVolumeStack.cpp @@ -85,7 +85,7 @@ struct CylinderVolumeStack::VolumeTuple { }; CylinderVolumeStack::CylinderVolumeStack(std::vector& volumes, - BinningValue direction, + AxisDirection direction, AttachmentStrategy strategy, ResizeStrategy resizeStrategy, const Logger& logger) @@ -105,20 +105,20 @@ Volume& CylinderVolumeStack::initialVolume( return *volumes.front(); } -void CylinderVolumeStack::initializeOuterVolume(BinningValue direction, +void CylinderVolumeStack::initializeOuterVolume(AxisDirection direction, AttachmentStrategy strategy, const Logger& logger) { ACTS_DEBUG("Creating CylinderVolumeStack from " << m_volumes.size() << " volumes in direction " - << binningValueName(direction)); + << axisDirectionName(direction)); if (m_volumes.empty()) { throw std::invalid_argument( "CylinderVolumeStack requires at least one volume"); } - if (direction != Acts::BinningValue::binZ && - direction != Acts::BinningValue::binR) { - throw std::invalid_argument(binningValueName(direction) + + if (direction != Acts::AxisDirection::AxisZ && + direction != Acts::AxisDirection::AxisR) { + throw std::invalid_argument(axisDirectionName(direction) + " is not supported "); } @@ -161,7 +161,7 @@ void CylinderVolumeStack::initializeOuterVolume(BinningValue direction, ACTS_VERBOSE("Checking volume alignment"); checkVolumeAlignment(volumeTuples, logger); - if (direction == Acts::BinningValue::binZ) { + if (direction == Acts::AxisDirection::AxisZ) { ACTS_VERBOSE("Sorting by volume z position"); std::ranges::sort(volumeTuples, {}, [](const auto& v) { return v.localTransform.translation()[eZ]; @@ -222,7 +222,7 @@ void CylinderVolumeStack::initializeOuterVolume(BinningValue direction, // @TODO: We probably can reuse m_transform m_groupTransform = m_transform; - } else if (direction == Acts::BinningValue::binR) { + } else if (direction == Acts::AxisDirection::AxisR) { ACTS_VERBOSE("Sorting by volume r middle point"); std::ranges::sort(volumeTuples, {}, [](const auto& v) { return v.midR(); }); @@ -280,15 +280,15 @@ void CylinderVolumeStack::initializeOuterVolume(BinningValue direction, m_groupTransform = m_transform; } else { - ACTS_ERROR("Binning in " << binningValueName(direction) + ACTS_ERROR("Binning in " << axisDirectionName(direction) << " is not supported"); - throw std::invalid_argument(binningValueName(direction) + + throw std::invalid_argument(axisDirectionName(direction) + " is not supported "); } } void CylinderVolumeStack::overlapPrint( - BinningValue direction, const CylinderVolumeStack::VolumeTuple& a, + AxisDirection direction, const CylinderVolumeStack::VolumeTuple& a, const CylinderVolumeStack::VolumeTuple& b, const Logger& logger) { if (logger().doPrint(Acts::Logging::DEBUG)) { std::stringstream ss; @@ -299,7 +299,7 @@ void CylinderVolumeStack::overlapPrint( int w = 9; ACTS_VERBOSE("Checking overlap between"); - if (direction == BinningValue::binZ) { + if (direction == AxisDirection::AxisZ) { ss << " - " << " z: [ " << std::setw(w) << a.minZ() << " <- " << std::setw(w) << a.midZ() << " -> " << std::setw(w) << a.maxZ() << " ]"; @@ -336,7 +336,7 @@ CylinderVolumeStack::checkOverlapAndAttachInZ( auto& a = volumes.at(i); auto& b = volumes.at(j); - overlapPrint(BinningValue::binZ, a, b, logger); + overlapPrint(AxisDirection::AxisZ, a, b, logger); if (a.maxZ() > b.minZ()) { ACTS_ERROR(" -> Overlap in z"); @@ -470,7 +470,7 @@ CylinderVolumeStack::checkOverlapAndAttachInR( auto& a = volumes.at(i); auto& b = volumes.at(j); - overlapPrint(BinningValue::binR, a, b, logger); + overlapPrint(AxisDirection::AxisR, a, b, logger); if (a.maxR() > b.minR()) { ACTS_ERROR(" -> Overlap in r"); @@ -758,7 +758,7 @@ void CylinderVolumeStack::update(std::shared_ptr volbounds, m_gaps, [&](const auto& gap) { return vol == gap.get(); }); }; - if (m_direction == BinningValue::binZ) { + if (m_direction == AxisDirection::AxisZ) { ACTS_VERBOSE("Stack direction is z"); std::vector volumeTuples; @@ -920,7 +920,7 @@ void CylinderVolumeStack::update(std::shared_ptr volbounds, m_volumes.push_back(vt.volume); } - } else if (m_direction == BinningValue::binR) { + } else if (m_direction == AxisDirection::AxisR) { ACTS_VERBOSE("Stack direction is r"); std::vector volumeTuples; diff --git a/Core/src/Geometry/Extent.cpp b/Core/src/Geometry/Extent.cpp index 8dfc33c1203..33aea5fb1d7 100644 --- a/Core/src/Geometry/Extent.cpp +++ b/Core/src/Geometry/Extent.cpp @@ -19,103 +19,103 @@ Acts::Extent::Extent(const ExtentEnvelope& envelope) : m_constrains(0), m_envelope(envelope) { - m_range[toUnderlying(BinningValue::binR)] = + m_range[toUnderlying(AxisDirection::AxisR)] = Range1D(0., std::numeric_limits::max()); - m_range[toUnderlying(BinningValue::binPhi)] = + m_range[toUnderlying(AxisDirection::AxisPhi)] = Range1D(-std::numbers::pi, std::numbers::pi); - m_range[toUnderlying(BinningValue::binRPhi)] = + m_range[toUnderlying(AxisDirection::AxisRPhi)] = Range1D(0., std::numeric_limits::max()); - m_range[toUnderlying(BinningValue::binMag)] = + m_range[toUnderlying(AxisDirection::AxisMag)] = Range1D(0., std::numeric_limits::max()); } void Acts::Extent::extend(const Vector3& vtx, - const std::vector& bValues, + const std::vector& aDirs, bool applyEnv, bool fillHistograms) { - for (auto bValue : bValues) { + for (auto aDir : aDirs) { // Get the casted value given the binning value description - double cValue = VectorHelpers::cast(vtx, bValue); + double cValue = VectorHelpers::cast(vtx, aDir); if (fillHistograms) { - m_valueHistograms[toUnderlying(bValue)].push_back(cValue); + m_valueHistograms[toUnderlying(aDir)].push_back(cValue); } // Apply envelope as suggested - double lEnv = applyEnv ? m_envelope[bValue][0] : 0.; - double hEnv = applyEnv ? m_envelope[bValue][1] : 0.; + double lEnv = applyEnv ? m_envelope[aDir][0] : 0.; + double hEnv = applyEnv ? m_envelope[aDir][1] : 0.; double mValue = cValue - lEnv; // Special protection for radial value - if (bValue == BinningValue::binR && mValue < 0.) { + if (aDir == AxisDirection::AxisR && mValue < 0.) { mValue = std::max(mValue, 0.); } - if (constrains(bValue)) { - m_range[toUnderlying(bValue)].expand(mValue, cValue + hEnv); + if (constrains(aDir)) { + m_range[toUnderlying(aDir)].expand(mValue, cValue + hEnv); } else { - m_range[toUnderlying(bValue)].shrink(mValue, cValue + hEnv); + m_range[toUnderlying(aDir)].shrink(mValue, cValue + hEnv); } - m_constrains.set(toUnderlying(bValue)); + m_constrains.set(toUnderlying(aDir)); } } void Acts::Extent::extend(const Extent& rhs, - const std::vector& bValues, + const std::vector& aDirs, bool applyEnv) { - for (auto bValue : bValues) { + for (auto aDir : aDirs) { // The value is constraint, envelope can be optional - if (rhs.constrains(bValue)) { - double lEnv = applyEnv ? m_envelope[bValue][0] : 0.; - double hEnv = applyEnv ? m_envelope[bValue][1] : 0.; - if (constrains(bValue)) { - m_range[toUnderlying(bValue)].expand( - rhs.range()[toUnderlying(bValue)].min() - lEnv, - rhs.range()[toUnderlying(bValue)].max() + hEnv); + if (rhs.constrains(aDir)) { + double lEnv = applyEnv ? m_envelope[aDir][0] : 0.; + double hEnv = applyEnv ? m_envelope[aDir][1] : 0.; + if (constrains(aDir)) { + m_range[toUnderlying(aDir)].expand( + rhs.range()[toUnderlying(aDir)].min() - lEnv, + rhs.range()[toUnderlying(aDir)].max() + hEnv); } else { - m_range[toUnderlying(bValue)].shrink( - rhs.range()[toUnderlying(bValue)].min() - lEnv, - rhs.range()[toUnderlying(bValue)].max() + hEnv); + m_range[toUnderlying(aDir)].shrink( + rhs.range()[toUnderlying(aDir)].min() - lEnv, + rhs.range()[toUnderlying(aDir)].max() + hEnv); } - m_constrains.set(toUnderlying(bValue)); - } else if (rhs.envelope()[bValue] != zeroEnvelope) { + m_constrains.set(toUnderlying(aDir)); + } else if (rhs.envelope()[aDir] != zeroEnvelope) { // Only an envelope given, but value is not constraint -> apply envelope - m_range[toUnderlying(bValue)].expand( - m_range[toUnderlying(bValue)].min() - rhs.envelope()[bValue][0], - m_range[toUnderlying(bValue)].max() + rhs.envelope()[bValue][1]); - m_constrains.set(toUnderlying(bValue)); + m_range[toUnderlying(aDir)].expand( + m_range[toUnderlying(aDir)].min() - rhs.envelope()[aDir][0], + m_range[toUnderlying(aDir)].max() + rhs.envelope()[aDir][1]); + m_constrains.set(toUnderlying(aDir)); } } } void Acts::Extent::addConstrain(const Acts::Extent& rhs, const ExtentEnvelope& envelope) { - for (const auto& bValue : allBinningValues()) { - if (rhs.constrains(bValue) && !constrains(bValue)) { - const auto& cRange = rhs.range(bValue); - m_range[toUnderlying(bValue)].setMin(cRange.min() - envelope[bValue][0u]); - m_range[toUnderlying(bValue)].setMax(cRange.max() + envelope[bValue][1u]); - m_constrains.set(toUnderlying(bValue)); + for (const auto& aDir : allAxisDirections()) { + if (rhs.constrains(aDir) && !constrains(aDir)) { + const auto& cRange = rhs.range(aDir); + m_range[toUnderlying(aDir)].setMin(cRange.min() - envelope[aDir][0u]); + m_range[toUnderlying(aDir)].setMax(cRange.max() + envelope[aDir][1u]); + m_constrains.set(toUnderlying(aDir)); } } } -void Acts::Extent::set(BinningValue bValue, double min, double max) { +void Acts::Extent::set(AxisDirection aDir, double min, double max) { double minval = min; - if (bValue == BinningValue::binR && minval < 0.) { + if (aDir == AxisDirection::AxisR && minval < 0.) { minval = 0.; } - m_range[toUnderlying(bValue)] = Range1D{minval, max}; - m_constrains.set(toUnderlying(bValue)); + m_range[toUnderlying(aDir)] = Range1D{minval, max}; + m_constrains.set(toUnderlying(aDir)); } -void Acts::Extent::setMin(BinningValue bValue, double min) { +void Acts::Extent::setMin(AxisDirection aDir, double min) { double minval = min; - if (bValue == BinningValue::binR && minval < 0.) { + if (aDir == AxisDirection::AxisR && minval < 0.) { minval = 0.; } - m_range[toUnderlying(bValue)].setMin(0u, minval); - m_constrains.set(toUnderlying(bValue)); + m_range[toUnderlying(aDir)].setMin(0u, minval); + m_constrains.set(toUnderlying(aDir)); } -void Acts::Extent::setMax(BinningValue bValue, double max) { - m_range[toUnderlying(bValue)].setMax(0u, max); - m_constrains.set(toUnderlying(bValue)); +void Acts::Extent::setMax(AxisDirection aDir, double max) { + m_range[toUnderlying(aDir)].setMax(0u, max); + m_constrains.set(toUnderlying(aDir)); } void Acts::Extent::setEnvelope(const ExtentEnvelope& envelope) { @@ -124,7 +124,7 @@ void Acts::Extent::setEnvelope(const ExtentEnvelope& envelope) { bool Acts::Extent::contains(const Vector3& vtx) const { Extent checkExtent; - for (const auto& bv : allBinningValues()) { + for (const auto& bv : allAxisDirections()) { if (constrains(bv)) { double vtxVal = VectorHelpers::cast(vtx, bv); checkExtent.set(bv, vtxVal, vtxVal); @@ -134,9 +134,9 @@ bool Acts::Extent::contains(const Vector3& vtx) const { } bool Acts::Extent::contains(const Extent& rhs, - std::optional bValue) const { + std::optional aDir) const { // Helper to check including a constraint bit set check - auto checkContainment = [&](BinningValue bvc) -> bool { + auto checkContainment = [&](AxisDirection bvc) -> bool { if (!constrains(bvc)) { return true; } @@ -144,17 +144,17 @@ bool Acts::Extent::contains(const Extent& rhs, }; // Check all - if (!bValue.has_value()) { - return std::ranges::all_of(allBinningValues(), checkContainment); + if (!aDir.has_value()) { + return std::ranges::all_of(allAxisDirections(), checkContainment); } // Check specific - return checkContainment(bValue.value()); + return checkContainment(aDir.value()); } bool Acts::Extent::intersects(const Extent& rhs, - std::optional bValue) const { + std::optional aDir) const { // Helper to check including a constraint bit set check - auto checkIntersect = [&](BinningValue bvc) -> bool { + auto checkIntersect = [&](AxisDirection bvc) -> bool { if (!constrains(bvc) || !rhs.constrains(bvc)) { return false; } @@ -162,15 +162,15 @@ bool Acts::Extent::intersects(const Extent& rhs, }; // Check all - if (!bValue.has_value()) { - return std::ranges::any_of(allBinningValues(), checkIntersect); + if (!aDir.has_value()) { + return std::ranges::any_of(allAxisDirections(), checkIntersect); } // Check specific - return checkIntersect(bValue.value()); + return checkIntersect(aDir.value()); } -bool Acts::Extent::constrains(BinningValue bValue) const { - return m_constrains.test(static_cast(bValue)); +bool Acts::Extent::constrains(AxisDirection aDir) const { + return m_constrains.test(static_cast(aDir)); } bool Acts::Extent::constrains() const { @@ -196,9 +196,9 @@ bool Acts::Extent::operator==(const Extent& e) const { std::string Acts::Extent::toString(const std::string& indent) const { std::stringstream sl; sl << indent << "Extent in space :" << std::endl; - for (const auto& bv : allBinningValues()) { + for (const auto& bv : allAxisDirections()) { if (constrains(bv)) { - sl << indent << " - value :" << std::setw(10) << binningValueName(bv) + sl << indent << " - value :" << std::setw(10) << axisDirectionName(bv) << " | range = [" << m_range[toUnderlying(bv)].min() << ", " << m_range[toUnderlying(bv)].max() << "]" << std::endl; } diff --git a/Core/src/Geometry/GridPortalLink.cpp b/Core/src/Geometry/GridPortalLink.cpp index ae6168e11cf..a0e429708d2 100644 --- a/Core/src/Geometry/GridPortalLink.cpp +++ b/Core/src/Geometry/GridPortalLink.cpp @@ -17,13 +17,13 @@ namespace Acts { std::unique_ptr GridPortalLink::make( const std::shared_ptr& surface, TrackingVolume& volume, - BinningValue direction) { + AxisDirection direction) { std::unique_ptr grid; if (const auto* cylinder = dynamic_cast(surface.get()); cylinder != nullptr) { - if (direction == BinningValue::binRPhi) { + if (direction == AxisDirection::AxisRPhi) { double r = cylinder->bounds().get(CylinderBounds::eR); if (cylinder->bounds().coversFullAzimuth()) { grid = GridPortalLink::make( @@ -35,7 +35,7 @@ std::unique_ptr GridPortalLink::make( grid = GridPortalLink::make(surface, direction, Axis{AxisBound, -hlPhi * r, hlPhi * r, 1}); } - } else if (direction == BinningValue::binZ) { + } else if (direction == AxisDirection::AxisZ) { double hlZ = cylinder->bounds().get(CylinderBounds::eHalfLengthZ); grid = GridPortalLink::make(surface, direction, Axis{AxisBound, -hlZ, hlZ, 1}); @@ -45,12 +45,12 @@ std::unique_ptr GridPortalLink::make( } else if (const auto* disc = dynamic_cast(surface.get()); disc != nullptr) { const auto& bounds = dynamic_cast(disc->bounds()); - if (direction == BinningValue::binR) { + if (direction == AxisDirection::AxisR) { double minR = bounds.get(RadialBounds::eMinR); double maxR = bounds.get(RadialBounds::eMaxR); grid = GridPortalLink::make(surface, direction, Axis{AxisBound, minR, maxR, 1}); - } else if (direction == BinningValue::binPhi) { + } else if (direction == AxisDirection::AxisPhi) { if (bounds.coversFullAzimuth()) { grid = GridPortalLink::make( surface, direction, @@ -126,7 +126,7 @@ void GridPortalLink::checkConsistency(const CylinderSurface& cyl) const { if (dim() == 1) { const IAxis& axisLoc0 = *grid().axes().front(); - if (direction() == BinningValue::binRPhi) { + if (direction() == AxisDirection::AxisRPhi) { checkRPhi(axisLoc0); } else { checkZ(axisLoc0); @@ -188,7 +188,7 @@ void GridPortalLink::checkConsistency(const DiscSurface& disc) const { if (dim() == 1) { const IAxis& axisLoc0 = *grid().axes().front(); - if (direction() == BinningValue::binR) { + if (direction() == AxisDirection::AxisR) { checkR(axisLoc0); } else { checkPhi(axisLoc0); @@ -222,15 +222,15 @@ void GridPortalLink::printContents(std::ostream& os) const { if (surface().type() == Surface::Cylinder) { loc0 = "rPhi"; loc1 = "z"; - flipped = direction() != BinningValue::binRPhi; + flipped = direction() != AxisDirection::AxisRPhi; } else if (surface().type() == Surface::Disc) { loc0 = "r"; loc1 = "phi"; - flipped = direction() != BinningValue::binR; + flipped = direction() != AxisDirection::AxisR; } else if (surface().type() == Surface::Plane) { loc0 = "x"; loc1 = "y"; - flipped = direction() != BinningValue::binX; + flipped = direction() != AxisDirection::AxisX; } else { throw std::invalid_argument{"Unsupported surface type"}; } @@ -318,9 +318,9 @@ void GridPortalLink::fillGrid1dTo2d(FillDirection dir, std::unique_ptr GridPortalLink::extendTo2dImpl( const std::shared_ptr& surface, const IAxis* other) const { assert(dim() == 1); - if (direction() == BinningValue::binRPhi) { + if (direction() == AxisDirection::AxisRPhi) { const auto& axisRPhi = *grid().axes().front(); - // 1D direction is binRPhi, so add a Z axis + // 1D direction is AxisRPhi, so add a Z axis double hlZ = surface->bounds().get(CylinderBounds::eHalfLengthZ); auto grid = axisRPhi.visit([&](const auto& axis0) { @@ -338,7 +338,7 @@ std::unique_ptr GridPortalLink::extendTo2dImpl( } else { const auto& axisZ = *grid().axes().front(); - // 1D direction is binZ, so add an rPhi axis + // 1D direction is AxisZ, so add an rPhi axis double r = surface->bounds().get(CylinderBounds::eR); double hlPhi = surface->bounds().get(CylinderBounds::eHalfPhiSector); double hlRPhi = r * hlPhi; @@ -375,9 +375,9 @@ std::unique_ptr GridPortalLink::extendTo2dImpl( "GridPortalLink: DiscBounds: invalid bounds type."); } - if (direction() == BinningValue::binR) { + if (direction() == AxisDirection::AxisR) { const auto& axisR = *grid().axes().front(); - // 1D direction is binR, so add a phi axis + // 1D direction is AxisR, so add a phi axis double hlPhi = bounds->get(RadialBounds::eHalfPhiSector); auto makeGrid = [&](auto bdt) { @@ -401,7 +401,7 @@ std::unique_ptr GridPortalLink::extendTo2dImpl( } } else { const auto& axisPhi = *grid().axes().front(); - // 1D direction is binPhi, so add an R axis + // 1D direction is AxisPhi, so add an R axis double rMin = bounds->get(RadialBounds::eMinR); double rMax = bounds->get(RadialBounds::eMaxR); diff --git a/Core/src/Geometry/GridPortalLinkMerging.cpp b/Core/src/Geometry/GridPortalLinkMerging.cpp index f475822876b..ae49bedfa46 100644 --- a/Core/src/Geometry/GridPortalLinkMerging.cpp +++ b/Core/src/Geometry/GridPortalLinkMerging.cpp @@ -26,7 +26,7 @@ namespace { template std::unique_ptr makeGrid( - const std::shared_ptr& surface, BinningValue direction, + const std::shared_ptr& surface, AxisDirection direction, const Logger& logger, std::tuple args, const IAxis* otherAxis, bool prepend) { // @TODO: PlaneSurface support @@ -65,7 +65,8 @@ std::unique_ptr makeGrid( // Check if we're in the cylinder or disc case, and the resulting bounds wrap // around and should have closed binning - if (direction == BinningValue::binPhi || direction == BinningValue::binRPhi) { + if (direction == AxisDirection::AxisPhi || + direction == AxisDirection::AxisRPhi) { if (const auto* cylinder = dynamic_cast(surface.get()); cylinder != nullptr) { @@ -88,7 +89,7 @@ std::unique_ptr makeGrid( std::unique_ptr mergeVariable( const std::shared_ptr& mergedSurface, const IAxis& axisA, - const IAxis& axisB, double /*tolerance*/, BinningValue direction, + const IAxis& axisB, double /*tolerance*/, AxisDirection direction, const Logger& logger, const IAxis* otherAxis, bool prepend) { ACTS_VERBOSE("Variable merge: direction is " << direction); @@ -101,7 +102,7 @@ std::unique_ptr mergeVariable( auto edgesA = axisA.getBinEdges(); - if (direction == BinningValue::binR) { + if (direction == AxisDirection::AxisR) { ACTS_VERBOSE("Performing asymmetric merge"); std::ranges::copy(edgesA, std::back_inserter(binEdges)); @@ -131,7 +132,7 @@ std::unique_ptr mergeVariable( std::unique_ptr mergeEquidistant( const std::shared_ptr& mergedSurface, const IAxis& axisA, - const IAxis& axisB, double tolerance, BinningValue direction, + const IAxis& axisB, double tolerance, AxisDirection direction, const Logger& logger, const IAxis* otherAxis, bool prepend) { ACTS_VERBOSE("===> potentially equidistant merge: checking bin widths"); @@ -151,7 +152,7 @@ std::unique_ptr mergeEquidistant( double min = std::numeric_limits::signaling_NaN(); double max = std::numeric_limits::signaling_NaN(); - if (direction == BinningValue::binR) { + if (direction == AxisDirection::AxisR) { ACTS_VERBOSE("Performing asymmetric merge"); min = axisA.getMin(); max = axisB.getMax(); @@ -183,7 +184,7 @@ std::unique_ptr mergeEquidistant( std::unique_ptr colinearMerge( const std::shared_ptr& mergedSurface, const IAxis& axisA, - const IAxis& axisB, double tolerance, BinningValue direction, + const IAxis& axisB, double tolerance, AxisDirection direction, const Logger& logger, const IAxis* otherAxis, bool prepend) { AxisType aType = axisA.getType(); AxisType bType = axisB.getType(); @@ -226,7 +227,7 @@ std::unique_ptr colinearMerge( std::unique_ptr mergeGridPortals( const GridPortalLink* a, const GridPortalLink* b, const RegularSurface* surfaceA, const RegularSurface* surfaceB, - BinningValue loc0, BinningValue loc1, BinningValue direction, + AxisDirection loc0, AxisDirection loc1, AxisDirection direction, const Logger& logger) { assert(surfaceA != nullptr); assert(surfaceB != nullptr); @@ -425,9 +426,9 @@ std::unique_ptr mergeGridPortals( std::unique_ptr mergeGridPortals(const GridPortalLink* a, const GridPortalLink* b, - BinningValue direction, + AxisDirection direction, const Logger& logger) { - using enum BinningValue; + using enum AxisDirection; assert(a->dim() == 2 || a->dim() == 1); assert(b->dim() == 2 || b->dim() == 1); @@ -448,11 +449,11 @@ std::unique_ptr mergeGridPortals(const GridPortalLink* a, if (cylinder != nullptr) { return mergeGridPortals( a, b, cylinder, &dynamic_cast(b->surface()), - binRPhi, binZ, direction, logger); + AxisRPhi, AxisZ, direction, logger); } else if (disc != nullptr) { return mergeGridPortals(a, b, disc, &dynamic_cast(b->surface()), - binR, binPhi, direction, logger); + AxisR, AxisPhi, direction, logger); } else { // @TODO: Support PlaneSurface ACTS_VERBOSE("Surface type is not supported here, falling back"); @@ -467,11 +468,11 @@ std::unique_ptr mergeGridPortals(const GridPortalLink* a, ACTS_VERBOSE("~> Adding complementary axis"); if (cylinder != nullptr) { - otherAxis = direction == binRPhi ? a->grid().axes().back() - : a->grid().axes().front(); + otherAxis = direction == AxisRPhi ? a->grid().axes().back() + : a->grid().axes().front(); } else if (disc != nullptr) { - otherAxis = direction == binR ? a->grid().axes().back() - : a->grid().axes().front(); + otherAxis = direction == AxisR ? a->grid().axes().back() + : a->grid().axes().front(); } else { ACTS_VERBOSE("Surface type is not supported here, falling back"); return nullptr; @@ -491,7 +492,7 @@ std::unique_ptr mergeGridPortals(const GridPortalLink* a, void GridPortalLink::fillMergedGrid(const GridPortalLink& a, const GridPortalLink& b, GridPortalLink& merged, - BinningValue direction, + AxisDirection direction, const Logger& logger) { ACTS_VERBOSE("Filling merged grid"); assert(a.dim() == b.dim()); @@ -554,7 +555,7 @@ void GridPortalLink::fillMergedGrid(const GridPortalLink& a, std::unique_ptr GridPortalLink::merge(const GridPortalLink& a, const GridPortalLink& b, - BinningValue direction, + AxisDirection direction, const Logger& logger) { ACTS_VERBOSE("Merging two GridPortalLinks"); diff --git a/Core/src/Geometry/KDTreeTrackingGeometryBuilder.cpp b/Core/src/Geometry/KDTreeTrackingGeometryBuilder.cpp index c0a45763372..8a0e086aaff 100644 --- a/Core/src/Geometry/KDTreeTrackingGeometryBuilder.cpp +++ b/Core/src/Geometry/KDTreeTrackingGeometryBuilder.cpp @@ -51,10 +51,10 @@ Acts::KDTreeTrackingGeometryBuilder::trackingGeometry( surfacesMeasured.reserve(m_cfg.surfaces.size()); for (auto& s : m_cfg.surfaces) { auto ext = s->polyhedronRepresentation(gctx, 1u).extent(); - surfacesMeasured.push_back( - MeasuredSurface{std::array{ext.medium(BinningValue::binZ), - ext.medium(BinningValue::binR)}, - s}); + surfacesMeasured.push_back(MeasuredSurface{ + std::array{ext.medium(AxisDirection::AxisZ), + ext.medium(AxisDirection::AxisR)}, + s}); } // Create the KDTree @@ -84,8 +84,8 @@ Acts::KDTreeTrackingGeometryBuilder::translateVolume( std::vector> translatedVolumes = {}; // Volume extent - auto rangeR = ptVolume.extent.range(Acts::BinningValue::binR); - auto rangeZ = ptVolume.extent.range(Acts::BinningValue::binZ); + auto rangeR = ptVolume.extent.range(Acts::AxisDirection::AxisR); + auto rangeZ = ptVolume.extent.range(Acts::AxisDirection::AxisZ); // Simple gap volume if (!ptVolume.container.has_value()) { @@ -158,8 +158,8 @@ Acts::KDTreeTrackingGeometryBuilder::translateLayer( // Try to pull from the kd tree RangeXD<2u, double> zrRange; - zrRange[0u] = plVolume.extent.range(Acts::BinningValue::binZ); - zrRange[1u] = plVolume.extent.range(Acts::BinningValue::binR); + zrRange[0u] = plVolume.extent.range(Acts::AxisDirection::AxisZ); + zrRange[1u] = plVolume.extent.range(Acts::AxisDirection::AxisR); auto layerSurfaces = kdt.rangeSearchWithKey(zrRange); ACTS_VERBOSE(indent + ">> looking z/r range = " << zrRange.toString()); diff --git a/Core/src/Geometry/LayerArrayCreator.cpp b/Core/src/Geometry/LayerArrayCreator.cpp index e8b972cb6d1..40149e05a13 100644 --- a/Core/src/Geometry/LayerArrayCreator.cpp +++ b/Core/src/Geometry/LayerArrayCreator.cpp @@ -30,18 +30,18 @@ std::unique_ptr Acts::LayerArrayCreator::layerArray( const GeometryContext& gctx, const LayerVector& layersInput, double min, - double max, BinningType bType, BinningValue bValue) const { + double max, BinningType bType, AxisDirection aDir) const { ACTS_VERBOSE("Build LayerArray with " << layersInput.size() << " layers at input."); ACTS_VERBOSE(" min/max provided : " << min << " / " << max); ACTS_VERBOSE(" binning type : " << bType); - ACTS_VERBOSE(" binning value : " << bValue); + ACTS_VERBOSE(" binning value : " << aDir); // create a local copy of the layer vector LayerVector layers(layersInput); // sort it accordingly to the binning value - GeometryObjectSorterT> layerSorter(gctx, bValue); + GeometryObjectSorterT> layerSorter(gctx, aDir); std::ranges::sort(layers, layerSorter); // useful typedef using LayerOrderPosition = std::pair, Vector3>; @@ -57,13 +57,13 @@ std::unique_ptr Acts::LayerArrayCreator::layerArray( // loop over layers and put them in for (auto& layIter : layers) { ACTS_VERBOSE("equidistant : registering a Layer at binning position : " - << (layIter->binningPosition(gctx, bValue))); + << (layIter->referencePosition(gctx, aDir))); layerOrderVector.push_back(LayerOrderPosition( - layIter, layIter->binningPosition(gctx, bValue))); + layIter, layIter->referencePosition(gctx, aDir))); } // create the binUitlity binUtility = std::make_unique(layers.size(), min, max, - open, bValue); + open, aDir); ACTS_VERBOSE("equidistant : created a BinUtility as " << *binUtility); } break; @@ -80,7 +80,7 @@ std::unique_ptr Acts::LayerArrayCreator::layerArray( for (auto& layIter : layers) { // estimate the offset layerThickness = layIter->thickness(); - layerValue = layIter->binningPositionValue(gctx, bValue); + layerValue = layIter->referencePositionValue(gctx, aDir); // register the new boundaries in the step vector boundaries.push_back(layerValue - 0.5 * layerThickness); boundaries.push_back(layerValue + 0.5 * layerThickness); @@ -107,25 +107,25 @@ std::unique_ptr Acts::LayerArrayCreator::layerArray( // create the navigation layer surface from the layer std::shared_ptr navLayerSurface = - createNavigationSurface(gctx, *layIter, bValue, + createNavigationSurface(gctx, *layIter, aDir, -std::abs(layerValue - navigationValue)); ACTS_VERBOSE( "arbitrary : creating a NavigationLayer at " - << (navLayerSurface->binningPosition(gctx, bValue)).x() << ", " - << (navLayerSurface->binningPosition(gctx, bValue)).y() << ", " - << (navLayerSurface->binningPosition(gctx, bValue)).z()); + << (navLayerSurface->referencePosition(gctx, aDir)).x() << ", " + << (navLayerSurface->referencePosition(gctx, aDir)).y() << ", " + << (navLayerSurface->referencePosition(gctx, aDir)).z()); navLayer = NavigationLayer::create(std::move(navLayerSurface)); // push the navigation layer in layerOrderVector.push_back(LayerOrderPosition( - navLayer, navLayer->binningPosition(gctx, bValue))); + navLayer, navLayer->referencePosition(gctx, aDir))); // push the original layer in layerOrderVector.push_back(LayerOrderPosition( - layIter, layIter->binningPosition(gctx, bValue))); + layIter, layIter->referencePosition(gctx, aDir))); ACTS_VERBOSE("arbitrary : registering MaterialLayer at " - << (layIter->binningPosition(gctx, bValue)).x() << ", " - << (layIter->binningPosition(gctx, bValue)).y() << ", " - << (layIter->binningPosition(gctx, bValue)).z()); + << (layIter->referencePosition(gctx, aDir)).x() << ", " + << (layIter->referencePosition(gctx, aDir)).y() << ", " + << (layIter->referencePosition(gctx, aDir)).z()); // remember the last lastLayer = layIter; } @@ -137,17 +137,17 @@ std::unique_ptr Acts::LayerArrayCreator::layerArray( if (navigationValue != max && lastLayer != nullptr) { // create the navigation layer surface from the layer std::shared_ptr navLayerSurface = - createNavigationSurface(gctx, *lastLayer, bValue, + createNavigationSurface(gctx, *lastLayer, aDir, navigationValue - layerValue); ACTS_VERBOSE( "arbitrary : creating a NavigationLayer at " - << (navLayerSurface->binningPosition(gctx, bValue)).x() << ", " - << (navLayerSurface->binningPosition(gctx, bValue)).y() << ", " - << (navLayerSurface->binningPosition(gctx, bValue)).z()); + << (navLayerSurface->referencePosition(gctx, aDir)).x() << ", " + << (navLayerSurface->referencePosition(gctx, aDir)).y() << ", " + << (navLayerSurface->referencePosition(gctx, aDir)).z()); navLayer = NavigationLayer::create(std::move(navLayerSurface)); // push the navigation layer in layerOrderVector.push_back(LayerOrderPosition( - navLayer, navLayer->binningPosition(gctx, bValue))); + navLayer, navLayer->referencePosition(gctx, aDir))); } // now close the boundaries boundaries.push_back(max); @@ -155,7 +155,7 @@ std::unique_ptr Acts::LayerArrayCreator::layerArray( ACTS_VERBOSE(layerOrderVector.size() << " Layers (material + navigation) built. "); // create the BinUtility - binUtility = std::make_unique(boundaries, open, bValue); + binUtility = std::make_unique(boundaries, open, aDir); ACTS_VERBOSE("arbitrary : created a BinUtility as " << *binUtility); } break; @@ -170,28 +170,28 @@ std::unique_ptr Acts::LayerArrayCreator::layerArray( } std::shared_ptr Acts::LayerArrayCreator::createNavigationSurface( - const GeometryContext& gctx, const Layer& layer, BinningValue bValue, + const GeometryContext& gctx, const Layer& layer, AxisDirection aDir, double offset) const { // surface reference const Surface& layerSurface = layer.surfaceRepresentation(); // translation to be applied Vector3 translation(0., 0., 0.); // switching he binnig values - switch (bValue) { + switch (aDir) { // case x - case BinningValue::binX: { + case AxisDirection::AxisX: { translation = Vector3(offset, 0., 0.); } break; // case y - case BinningValue::binY: { + case AxisDirection::AxisY: { translation = Vector3(0., offset, 0.); } break; // case z - case BinningValue::binZ: { + case AxisDirection::AxisZ: { translation = Vector3(0., 0., offset); } break; // case R - case BinningValue::binR: { + case AxisDirection::AxisR: { // binning in R and cylinder surface means something different if (layerSurface.type() == Surface::Cylinder) { break; diff --git a/Core/src/Geometry/LayerBlueprintNode.cpp b/Core/src/Geometry/LayerBlueprintNode.cpp index de2e2cdb8cd..dc0f5ce7fd2 100644 --- a/Core/src/Geometry/LayerBlueprintNode.cpp +++ b/Core/src/Geometry/LayerBlueprintNode.cpp @@ -52,23 +52,23 @@ Volume& LayerBlueprintNode::build(const BlueprintOptions& options, void LayerBlueprintNode::buildVolume(const Extent& extent, const Logger& logger) { ACTS_VERBOSE(prefix() << "Building volume for layer " << name()); - using enum BinningValue; + using enum AxisDirection; using enum LayerType; std::shared_ptr bounds; switch (m_layerType) { case Cylinder: case Disc: { - double minR = extent.min(binR); - double maxR = extent.max(binR); - double hlZ = extent.interval(binZ) / 2.0; + double minR = extent.min(AxisR); + double maxR = extent.max(AxisR); + double hlZ = extent.interval(AxisZ) / 2.0; bounds = std::make_shared(minR, maxR, hlZ); break; } case Plane: { - double hlX = extent.interval(binX) / 2.0; - double hlY = extent.interval(binY) / 2.0; - double hlZ = extent.interval(binZ) / 2.0; + double hlX = extent.interval(AxisX) / 2.0; + double hlY = extent.interval(AxisY) / 2.0; + double hlZ = extent.interval(AxisZ) / 2.0; bounds = std::make_shared(hlX, hlY, hlZ); break; } @@ -80,7 +80,7 @@ void LayerBlueprintNode::buildVolume(const Extent& extent, Transform3 transform = m_transform; transform.translation() = - Vector3{extent.medium(binX), extent.medium(binY), extent.medium(binZ)}; + Vector3{extent.medium(AxisX), extent.medium(AxisY), extent.medium(AxisZ)}; ACTS_VERBOSE(prefix() << " -> adjusted transform:\n" << transform.matrix()); diff --git a/Core/src/Geometry/LayerCreator.cpp b/Core/src/Geometry/LayerCreator.cpp index e24ff8e0661..69694741a82 100644 --- a/Core/src/Geometry/LayerCreator.cpp +++ b/Core/src/Geometry/LayerCreator.cpp @@ -59,26 +59,26 @@ Acts::MutableLayerPtr Acts::LayerCreator::cylinderLayer( _protoLayer ? *_protoLayer : ProtoLayer(gctx, surfaces); // Remaining layer parameters - they include the envelopes - double layerR = protoLayer.medium(BinningValue::binR); - double layerZ = protoLayer.medium(BinningValue::binZ); - double layerHalfZ = 0.5 * protoLayer.range(BinningValue::binZ); - double layerThickness = protoLayer.range(BinningValue::binR); + double layerR = protoLayer.medium(AxisDirection::AxisR); + double layerZ = protoLayer.medium(AxisDirection::AxisZ); + double layerHalfZ = 0.5 * protoLayer.range(AxisDirection::AxisZ); + double layerThickness = protoLayer.range(AxisDirection::AxisR); ACTS_VERBOSE("Creating a cylindrical Layer:"); ACTS_VERBOSE(" - with layer R = " << layerR); ACTS_VERBOSE(" - from R min/max = " - << protoLayer.min(BinningValue::binR, false) << " / " - << protoLayer.max(BinningValue::binR, false)); + << protoLayer.min(AxisDirection::AxisR, false) << " / " + << protoLayer.max(AxisDirection::AxisR, false)); ACTS_VERBOSE(" - with R thickness = " << layerThickness); ACTS_VERBOSE(" - incl envelope = " - << protoLayer.envelope[BinningValue::binR][0u] << " / " - << protoLayer.envelope[BinningValue::binR][1u]); + << protoLayer.envelope[AxisDirection::AxisR][0u] << " / " + << protoLayer.envelope[AxisDirection::AxisR][1u]); ACTS_VERBOSE(" - with z min/max = " - << protoLayer.min(BinningValue::binZ, false) << " (-" - << protoLayer.envelope[BinningValue::binZ][0u] << ") / " - << protoLayer.max(BinningValue::binZ, false) << " (+" - << protoLayer.envelope[BinningValue::binZ][1u] << ")"); + << protoLayer.min(AxisDirection::AxisZ, false) << " (-" + << protoLayer.envelope[AxisDirection::AxisZ][0u] << ") / " + << protoLayer.max(AxisDirection::AxisZ, false) << " (+" + << protoLayer.envelope[AxisDirection::AxisZ][1u] << ")"); ACTS_VERBOSE(" - z center = " << layerZ); ACTS_VERBOSE(" - halflength z = " << layerHalfZ); @@ -93,8 +93,8 @@ Acts::MutableLayerPtr Acts::LayerCreator::cylinderLayer( } ACTS_VERBOSE(" - with phi min/max = " - << protoLayer.min(BinningValue::binPhi, false) << " / " - << protoLayer.max(BinningValue::binPhi, false)); + << protoLayer.min(AxisDirection::AxisPhi, false) << " / " + << protoLayer.max(AxisDirection::AxisPhi, false)); ACTS_VERBOSE(" - # of modules = " << surfaces.size() << " ordered in ( " << binsPhi << " x " << binsZ << ")"); std::unique_ptr sArray; @@ -132,26 +132,26 @@ Acts::MutableLayerPtr Acts::LayerCreator::cylinderLayer( _protoLayer ? *_protoLayer : ProtoLayer(gctx, surfaces); // remaining layer parameters - double layerR = protoLayer.medium(BinningValue::binR); - double layerZ = protoLayer.medium(BinningValue::binZ); - double layerHalfZ = 0.5 * protoLayer.range(BinningValue::binZ); - double layerThickness = protoLayer.range(BinningValue::binR); + double layerR = protoLayer.medium(AxisDirection::AxisR); + double layerZ = protoLayer.medium(AxisDirection::AxisZ); + double layerHalfZ = 0.5 * protoLayer.range(AxisDirection::AxisZ); + double layerThickness = protoLayer.range(AxisDirection::AxisR); // adjust the layer radius ACTS_VERBOSE("Creating a cylindrical Layer:"); ACTS_VERBOSE(" - with layer R = " << layerR); ACTS_VERBOSE(" - from R min/max = " - << protoLayer.min(BinningValue::binR, false) << " / " - << protoLayer.max(BinningValue::binR, false)); + << protoLayer.min(AxisDirection::AxisR, false) << " / " + << protoLayer.max(AxisDirection::AxisR, false)); ACTS_VERBOSE(" - with R thickness = " << layerThickness); ACTS_VERBOSE(" - incl envelope = " - << protoLayer.envelope[BinningValue::binR][0u] << " / " - << protoLayer.envelope[BinningValue::binR][1u]); + << protoLayer.envelope[AxisDirection::AxisR][0u] << " / " + << protoLayer.envelope[AxisDirection::AxisR][1u]); ACTS_VERBOSE(" - with z min/max = " - << protoLayer.min(BinningValue::binZ, false) << " (-" - << protoLayer.envelope[BinningValue::binZ][0u] << ") / " - << protoLayer.max(BinningValue::binZ, false) << " (+" - << protoLayer.envelope[BinningValue::binZ][1u] << ")"); + << protoLayer.min(AxisDirection::AxisZ, false) << " (-" + << protoLayer.envelope[AxisDirection::AxisZ][0u] << ") / " + << protoLayer.max(AxisDirection::AxisZ, false) << " (+" + << protoLayer.envelope[AxisDirection::AxisZ][1u] << ")"); ACTS_VERBOSE(" - z center = " << layerZ); ACTS_VERBOSE(" - halflength z = " << layerHalfZ); @@ -166,8 +166,8 @@ Acts::MutableLayerPtr Acts::LayerCreator::cylinderLayer( } ACTS_VERBOSE(" - with phi min/max = " - << protoLayer.min(BinningValue::binPhi, false) << " / " - << protoLayer.max(BinningValue::binPhi, false)); + << protoLayer.min(AxisDirection::AxisPhi, false) << " / " + << protoLayer.max(AxisDirection::AxisPhi, false)); ACTS_VERBOSE(" - # of modules = " << surfaces.size() << ""); // create the surface array @@ -205,27 +205,27 @@ Acts::MutableLayerPtr Acts::LayerCreator::discLayer( ProtoLayer protoLayer = _protoLayer ? *_protoLayer : ProtoLayer(gctx, surfaces); - double layerZ = protoLayer.medium(BinningValue::binZ); - double layerThickness = protoLayer.range(BinningValue::binZ); + double layerZ = protoLayer.medium(AxisDirection::AxisZ); + double layerThickness = protoLayer.range(AxisDirection::AxisZ); // adjust the layer radius ACTS_VERBOSE("Creating a disk Layer:"); ACTS_VERBOSE(" - at Z position = " << layerZ); ACTS_VERBOSE(" - from Z min/max = " - << protoLayer.min(BinningValue::binZ, false) << " / " - << protoLayer.max(BinningValue::binZ, false)); + << protoLayer.min(AxisDirection::AxisZ, false) << " / " + << protoLayer.max(AxisDirection::AxisZ, false)); ACTS_VERBOSE(" - with Z thickness = " << layerThickness); ACTS_VERBOSE(" - incl envelope = " - << protoLayer.envelope[BinningValue::binZ][0u] << " / " - << protoLayer.envelope[BinningValue::binZ][1u]); + << protoLayer.envelope[AxisDirection::AxisZ][0u] << " / " + << protoLayer.envelope[AxisDirection::AxisZ][1u]); ACTS_VERBOSE(" - with R min/max = " - << protoLayer.min(BinningValue::binR, false) << " (-" - << protoLayer.envelope[BinningValue::binR][0u] << ") / " - << protoLayer.max(BinningValue::binR, false) << " (+" - << protoLayer.envelope[BinningValue::binR][1u] << ")"); + << protoLayer.min(AxisDirection::AxisR, false) << " (-" + << protoLayer.envelope[AxisDirection::AxisR][0u] << ") / " + << protoLayer.max(AxisDirection::AxisR, false) << " (+" + << protoLayer.envelope[AxisDirection::AxisR][1u] << ")"); ACTS_VERBOSE(" - with phi min/max = " - << protoLayer.min(BinningValue::binPhi, false) << " / " - << protoLayer.max(BinningValue::binPhi, false)); + << protoLayer.min(AxisDirection::AxisPhi, false) << " / " + << protoLayer.max(AxisDirection::AxisPhi, false)); ACTS_VERBOSE(" - # of modules = " << surfaces.size() << " ordered in ( " << binsR << " x " << binsPhi << ")"); @@ -245,7 +245,8 @@ Acts::MutableLayerPtr Acts::LayerCreator::discLayer( // create the share disc bounds auto dBounds = std::make_shared( - protoLayer.min(BinningValue::binR), protoLayer.max(BinningValue::binR)); + protoLayer.min(AxisDirection::AxisR), + protoLayer.max(AxisDirection::AxisR)); // create the layers // we use the same transform here as for the layer itself @@ -270,27 +271,27 @@ Acts::MutableLayerPtr Acts::LayerCreator::discLayer( ProtoLayer protoLayer = _protoLayer ? *_protoLayer : ProtoLayer(gctx, surfaces); - double layerZ = protoLayer.medium(BinningValue::binZ); - double layerThickness = protoLayer.range(BinningValue::binZ); + double layerZ = protoLayer.medium(AxisDirection::AxisZ); + double layerThickness = protoLayer.range(AxisDirection::AxisZ); // adjust the layer radius ACTS_VERBOSE("Creating a disk Layer:"); ACTS_VERBOSE(" - at Z position = " << layerZ); ACTS_VERBOSE(" - from Z min/max = " - << protoLayer.min(BinningValue::binZ, false) << " / " - << protoLayer.max(BinningValue::binZ, false)); + << protoLayer.min(AxisDirection::AxisZ, false) << " / " + << protoLayer.max(AxisDirection::AxisZ, false)); ACTS_VERBOSE(" - with Z thickness = " << layerThickness); ACTS_VERBOSE(" - incl envelope = " - << protoLayer.envelope[BinningValue::binZ][0u] << " / " - << protoLayer.envelope[BinningValue::binZ][1u]); + << protoLayer.envelope[AxisDirection::AxisZ][0u] << " / " + << protoLayer.envelope[AxisDirection::AxisZ][1u]); ACTS_VERBOSE(" - with R min/max = " - << protoLayer.min(BinningValue::binR, false) << " (-" - << protoLayer.envelope[BinningValue::binR][0u] << ") / " - << protoLayer.max(BinningValue::binR, false) << " (+" - << protoLayer.envelope[BinningValue::binR][1u] << ")"); + << protoLayer.min(AxisDirection::AxisR, false) << " (-" + << protoLayer.envelope[AxisDirection::AxisR][0u] << ") / " + << protoLayer.max(AxisDirection::AxisR, false) << " (+" + << protoLayer.envelope[AxisDirection::AxisR][1u] << ")"); ACTS_VERBOSE(" - with phi min/max = " - << protoLayer.min(BinningValue::binPhi, false) << " / " - << protoLayer.max(BinningValue::binPhi, false)); + << protoLayer.min(AxisDirection::AxisPhi, false) << " / " + << protoLayer.max(AxisDirection::AxisPhi, false)); ACTS_VERBOSE(" - # of modules = " << surfaces.size()); // create the layer transforms if not given @@ -310,7 +311,8 @@ Acts::MutableLayerPtr Acts::LayerCreator::discLayer( // create the shared disc bounds auto dBounds = std::make_shared( - protoLayer.min(BinningValue::binR), protoLayer.max(BinningValue::binR)); + protoLayer.min(AxisDirection::AxisR), + protoLayer.max(AxisDirection::AxisR)); // create the layers MutableLayerPtr dLayer = @@ -327,7 +329,7 @@ Acts::MutableLayerPtr Acts::LayerCreator::discLayer( Acts::MutableLayerPtr Acts::LayerCreator::planeLayer( const GeometryContext& gctx, std::vector> surfaces, std::size_t bins1, - std::size_t bins2, BinningValue bValue, + std::size_t bins2, AxisDirection aDir, std::optional _protoLayer, const Transform3& transform, std::unique_ptr ad) const { ProtoLayer protoLayer = @@ -335,58 +337,58 @@ Acts::MutableLayerPtr Acts::LayerCreator::planeLayer( // remaining layer parameters double layerHalf1 = 0, layerHalf2 = 0, layerThickness = 0; - switch (bValue) { - case BinningValue::binX: { - layerHalf1 = 0.5 * (protoLayer.max(BinningValue::binY) - - protoLayer.min(BinningValue::binY)); - layerHalf2 = 0.5 * (protoLayer.max(BinningValue::binZ) - - protoLayer.min(BinningValue::binZ)); - layerThickness = (protoLayer.max(BinningValue::binX) - - protoLayer.min(BinningValue::binX)); + switch (aDir) { + case AxisDirection::AxisX: { + layerHalf1 = 0.5 * (protoLayer.max(AxisDirection::AxisY) - + protoLayer.min(AxisDirection::AxisY)); + layerHalf2 = 0.5 * (protoLayer.max(AxisDirection::AxisZ) - + protoLayer.min(AxisDirection::AxisZ)); + layerThickness = (protoLayer.max(AxisDirection::AxisX) - + protoLayer.min(AxisDirection::AxisX)); break; } - case BinningValue::binY: { - layerHalf1 = 0.5 * (protoLayer.max(BinningValue::binX) - - protoLayer.min(BinningValue::binX)); - layerHalf2 = 0.5 * (protoLayer.max(BinningValue::binZ) - - protoLayer.min(BinningValue::binZ)); - layerThickness = (protoLayer.max(BinningValue::binY) - - protoLayer.min(BinningValue::binY)); + case AxisDirection::AxisY: { + layerHalf1 = 0.5 * (protoLayer.max(AxisDirection::AxisX) - + protoLayer.min(AxisDirection::AxisX)); + layerHalf2 = 0.5 * (protoLayer.max(AxisDirection::AxisZ) - + protoLayer.min(AxisDirection::AxisZ)); + layerThickness = (protoLayer.max(AxisDirection::AxisY) - + protoLayer.min(AxisDirection::AxisY)); break; } - case BinningValue::binZ: { - layerHalf1 = 0.5 * (protoLayer.max(BinningValue::binX) - - protoLayer.min(BinningValue::binX)); - layerHalf2 = 0.5 * (protoLayer.max(BinningValue::binY) - - protoLayer.min(BinningValue::binY)); - layerThickness = (protoLayer.max(BinningValue::binZ) - - protoLayer.min(BinningValue::binZ)); + case AxisDirection::AxisZ: { + layerHalf1 = 0.5 * (protoLayer.max(AxisDirection::AxisX) - + protoLayer.min(AxisDirection::AxisX)); + layerHalf2 = 0.5 * (protoLayer.max(AxisDirection::AxisY) - + protoLayer.min(AxisDirection::AxisY)); + layerThickness = (protoLayer.max(AxisDirection::AxisZ) - + protoLayer.min(AxisDirection::AxisZ)); break; } default: throw std::invalid_argument("Invalid binning value"); } - double centerX = 0.5 * (protoLayer.max(BinningValue::binX) + - protoLayer.min(BinningValue::binX)); - double centerY = 0.5 * (protoLayer.max(BinningValue::binY) + - protoLayer.min(BinningValue::binY)); - double centerZ = 0.5 * (protoLayer.max(BinningValue::binZ) + - protoLayer.min(BinningValue::binZ)); + double centerX = 0.5 * (protoLayer.max(AxisDirection::AxisX) + + protoLayer.min(AxisDirection::AxisX)); + double centerY = 0.5 * (protoLayer.max(AxisDirection::AxisY) + + protoLayer.min(AxisDirection::AxisY)); + double centerZ = 0.5 * (protoLayer.max(AxisDirection::AxisZ) + + protoLayer.min(AxisDirection::AxisZ)); ACTS_VERBOSE("Creating a plane Layer:"); ACTS_VERBOSE(" - with layer center = " << "(" << centerX << ", " << centerY << ", " << centerZ << ")"); - ACTS_VERBOSE(" - from X min/max = " << protoLayer.min(BinningValue::binX) - << " / " - << protoLayer.max(BinningValue::binX)); - ACTS_VERBOSE(" - from Y min/max = " << protoLayer.min(BinningValue::binY) - << " / " - << protoLayer.max(BinningValue::binY)); + ACTS_VERBOSE(" - from X min/max = " + << protoLayer.min(AxisDirection::AxisX) << " / " + << protoLayer.max(AxisDirection::AxisX)); + ACTS_VERBOSE(" - from Y min/max = " + << protoLayer.min(AxisDirection::AxisY) << " / " + << protoLayer.max(AxisDirection::AxisY)); ACTS_VERBOSE(" - with Z thickness = " << layerThickness); - ACTS_VERBOSE(" - incl envelope = " << protoLayer.envelope[bValue][0u] + ACTS_VERBOSE(" - incl envelope = " << protoLayer.envelope[aDir][0u] << " / " - << protoLayer.envelope[bValue][1u]); + << protoLayer.envelope[aDir][1u]); // create the layer transforms if not given // we need to transform in case centerX/centerY/centerZ != 0, so that the @@ -401,7 +403,7 @@ Acts::MutableLayerPtr Acts::LayerCreator::planeLayer( std::unique_ptr sArray; if (!surfaces.empty()) { sArray = m_cfg.surfaceArrayCreator->surfaceArrayOnPlane( - gctx, std::move(surfaces), bins1, bins2, bValue, protoLayer, transform); + gctx, std::move(surfaces), bins1, bins2, aDir, protoLayer, transform); checkBinning(gctx, *sArray); } @@ -488,8 +490,8 @@ bool Acts::LayerCreator::checkBinning(const GeometryContext& gctx, // print all inaccessibles ACTS_ERROR(" -- Inaccessible surfaces: "); for (const auto& srf : diff) { - // have to choose BinningValue here - Vector3 ctr = srf->binningPosition(gctx, BinningValue::binR); + // have to choose AxisDirection here + Vector3 ctr = srf->referencePosition(gctx, AxisDirection::AxisR); ACTS_ERROR(" Surface(x=" << ctr.x() << ", y=" << ctr.y() << ", z=" << ctr.z() << ", r=" << perp(ctr) << ", phi=" << phi(ctr) << ")"); diff --git a/Core/src/Geometry/MaterialDesignatorBlueprintNode.cpp b/Core/src/Geometry/MaterialDesignatorBlueprintNode.cpp index 0e89b65d6e3..4bf4c3f8445 100644 --- a/Core/src/Geometry/MaterialDesignatorBlueprintNode.cpp +++ b/Core/src/Geometry/MaterialDesignatorBlueprintNode.cpp @@ -56,23 +56,23 @@ void MaterialDesignatorBlueprintNode::handleCylinderBinning( for (auto& [face, loc0, loc1] : binning) { if (face == OuterCylinder || face == InnerCylinder) { - if (loc0.binValue != BinningValue::binRPhi) { + if (loc0.axisDir != AxisDirection::AxisRPhi) { ACTS_ERROR(prefix() << "Binning is not in RPhi"); throw std::runtime_error("Binning is not in RPhi"); } - if (loc1.binValue != BinningValue::binZ) { + if (loc1.axisDir != AxisDirection::AxisZ) { ACTS_ERROR(prefix() << "Binning is not in Z"); throw std::runtime_error("Binning is not in Z"); } } if (face == PositiveDisc || face == NegativeDisc) { - if (loc0.binValue != BinningValue::binR) { + if (loc0.axisDir != AxisDirection::AxisR) { ACTS_ERROR(prefix() << "Binning is not in R"); throw std::runtime_error("Binning is not in R"); } - if (loc1.binValue != BinningValue::binPhi) { + if (loc1.axisDir != AxisDirection::AxisPhi) { ACTS_ERROR(prefix() << "Binning is not in Phi"); throw std::runtime_error("Binning is not in Phi"); } @@ -164,8 +164,8 @@ void MaterialDesignatorBlueprintNode::addToGraphviz(std::ostream& os) const { Experimental::ProtoBinning>>& binning) { for (const auto& [face, loc0, loc1] : binning) { ss << "
" << face; - ss << ": " << loc0.binValue << "=" << loc0.bins(); - ss << ", " << loc1.binValue << "=" << loc1.bins(); + ss << ": " << loc0.axisDir << "=" << loc0.bins(); + ss << ", " << loc1.axisDir << "=" << loc1.bins(); } }, [](const auto& /*binning*/) { diff --git a/Core/src/Geometry/Polyhedron.cpp b/Core/src/Geometry/Polyhedron.cpp index 5f7336ca3fc..38d9a44d3b1 100644 --- a/Core/src/Geometry/Polyhedron.cpp +++ b/Core/src/Geometry/Polyhedron.cpp @@ -50,11 +50,11 @@ Acts::Extent Acts::Polyhedron::extent(const Transform3& transform) const { return (vt); }); - // Special checks of BinningValue::binR for hyper plane surfaces + // Special checks of AxisDirection::AxisR for hyper plane surfaces if (detail::VerticesHelper::onHyperPlane(vtxs)) { // Check inclusion of origin (i.e. convex around origin) Vector3 origin = - transform * Vector3(0., 0., extent.medium(BinningValue::binZ)); + transform * Vector3(0., 0., extent.medium(AxisDirection::AxisZ)); for (const auto& face : faces) { std::vector tface; tface.reserve(face.size()); @@ -62,8 +62,8 @@ Acts::Extent Acts::Polyhedron::extent(const Transform3& transform) const { tface.push_back(vtxs[f]); } if (detail::VerticesHelper::isInsidePolygon(origin, tface)) { - extent.range(BinningValue::binR).setMin(0.); - extent.range(BinningValue::binPhi) + extent.range(AxisDirection::AxisR).setMin(0.); + extent.range(AxisDirection::AxisPhi) .set(-std::numbers::pi, std::numbers::pi); break; } @@ -93,7 +93,7 @@ Acts::Extent Acts::Polyhedron::extent(const Transform3& transform) const { for (std::size_t iv = 1; iv < vtxs.size() + 1; ++iv) { std::size_t fpoint = iv < vtxs.size() ? iv : 0; double testR = radialDistance(vtxs[fpoint], vtxs[iv - 1]); - extent.range(BinningValue::binR).expandMin(testR); + extent.range(AxisDirection::AxisR).expandMin(testR); } } } diff --git a/Core/src/Geometry/Portal.cpp b/Core/src/Geometry/Portal.cpp index 69cab13b8e0..0244b4c648e 100644 --- a/Core/src/Geometry/Portal.cpp +++ b/Core/src/Geometry/Portal.cpp @@ -182,7 +182,7 @@ RegularSurface& Portal::surface() { } Portal Portal::merge(const GeometryContext& gctx, Portal& aPortal, - Portal& bPortal, BinningValue direction, + Portal& bPortal, AxisDirection direction, const Logger& logger) { ACTS_VERBOSE("Merging two portals along " << direction); diff --git a/Core/src/Geometry/PortalLinkBase.cpp b/Core/src/Geometry/PortalLinkBase.cpp index f558fe19238..16826172a2d 100644 --- a/Core/src/Geometry/PortalLinkBase.cpp +++ b/Core/src/Geometry/PortalLinkBase.cpp @@ -21,7 +21,7 @@ namespace Acts { void PortalLinkBase::checkMergePreconditions(const PortalLinkBase& a, const PortalLinkBase& b, - BinningValue direction) { + AxisDirection direction) { const auto& surfaceA = a.surface(); const auto& surfaceB = b.surface(); @@ -40,17 +40,17 @@ void PortalLinkBase::checkMergePreconditions(const PortalLinkBase& a, throw_assert(cylB != nullptr, "Cannot merge CylinderSurface with " "non-CylinderSurface"); - throw_assert( - direction == BinningValue::binZ || direction == BinningValue::binRPhi, - "Invalid binning direction: " + binningValueName(direction)); + throw_assert(direction == AxisDirection::AxisZ || + direction == AxisDirection::AxisRPhi, + "Invalid binning direction: " + axisDirectionName(direction)); } else if (const auto* discA = dynamic_cast(&surfaceA); discA != nullptr) { const auto* discB = dynamic_cast(&surfaceB); throw_assert(discB != nullptr, "Cannot merge DiscSurface with non-DiscSurface"); - throw_assert( - direction == BinningValue::binR || direction == BinningValue::binPhi, - "Invalid binning direction: " + binningValueName(direction)); + throw_assert(direction == AxisDirection::AxisR || + direction == AxisDirection::AxisPhi, + "Invalid binning direction: " + axisDirectionName(direction)); throw_assert(dynamic_cast(&discA->bounds()) && dynamic_cast(&discB->bounds()), @@ -63,7 +63,7 @@ void PortalLinkBase::checkMergePreconditions(const PortalLinkBase& a, std::unique_ptr PortalLinkBase::merge( std::unique_ptr a, std::unique_ptr b, - BinningValue direction, const Logger& logger) { + AxisDirection direction, const Logger& logger) { ACTS_VERBOSE("Merging two arbitrary portals"); ACTS_VERBOSE(" - a: " << *a); diff --git a/Core/src/Geometry/PortalShell.cpp b/Core/src/Geometry/PortalShell.cpp index 5b2d8e167c8..dbd9e4e8e0d 100644 --- a/Core/src/Geometry/PortalShell.cpp +++ b/Core/src/Geometry/PortalShell.cpp @@ -134,7 +134,7 @@ std::string SingleCylinderPortalShell::label() const { CylinderStackPortalShell::CylinderStackPortalShell( const GeometryContext& gctx, std::vector shells, - BinningValue direction, const Logger& logger) + AxisDirection direction, const Logger& logger) : m_direction{direction}, m_shells{std::move(shells)} { ACTS_VERBOSE("Making cylinder stack shell in " << m_direction << " direction"); @@ -198,7 +198,7 @@ CylinderStackPortalShell::CylinderStackPortalShell( } }; - if (direction == BinningValue::binR) { + if (direction == AxisDirection::AxisR) { ACTS_VERBOSE("Merging portals at positive and negative discs"); merge(PositiveDisc); merge(NegativeDisc); @@ -206,7 +206,7 @@ CylinderStackPortalShell::CylinderStackPortalShell( ACTS_VERBOSE("Fusing portals at outer and inner cylinders"); fuse(OuterCylinder, InnerCylinder); - } else if (direction == BinningValue::binZ) { + } else if (direction == AxisDirection::AxisZ) { bool allHaveInnerCylinders = std::ranges::all_of( m_shells, [](const auto* shell) { return shell->size() == 4; }); @@ -250,7 +250,7 @@ Portal* CylinderStackPortalShell::portal(Face face) { } std::shared_ptr CylinderStackPortalShell::portalPtr(Face face) { - if (m_direction == BinningValue::binR) { + if (m_direction == AxisDirection::AxisR) { switch (face) { case NegativeDisc: return m_shells.front()->portalPtr(NegativeDisc); @@ -296,7 +296,7 @@ void CylinderStackPortalShell::setPortal(std::shared_ptr portal, Face face) { assert(portal != nullptr); - if (m_direction == BinningValue::binR) { + if (m_direction == AxisDirection::AxisR) { switch (face) { case NegativeDisc: [[fallthrough]]; diff --git a/Core/src/Geometry/ProtoLayer.cpp b/Core/src/Geometry/ProtoLayer.cpp index c8f190d4293..2956e6a2788 100644 --- a/Core/src/Geometry/ProtoLayer.cpp +++ b/Core/src/Geometry/ProtoLayer.cpp @@ -44,26 +44,26 @@ ProtoLayer::ProtoLayer(const GeometryContext& gctx, measure(gctx, m_surfaces); } -double ProtoLayer::min(BinningValue bval, bool addenv) const { +double ProtoLayer::min(AxisDirection aDir, bool addenv) const { if (addenv) { - return extent.min(bval) - envelope[bval][0u]; + return extent.min(aDir) - envelope[aDir][0u]; } - return extent.min(bval); + return extent.min(aDir); } -double ProtoLayer::max(BinningValue bval, bool addenv) const { +double ProtoLayer::max(AxisDirection aDir, bool addenv) const { if (addenv) { - return extent.max(bval) + envelope[bval][1u]; + return extent.max(aDir) + envelope[aDir][1u]; } - return extent.max(bval); + return extent.max(aDir); } -double ProtoLayer::medium(BinningValue bval, bool addenv) const { - return 0.5 * (min(bval, addenv) + max(bval, addenv)); +double ProtoLayer::medium(AxisDirection aDir, bool addenv) const { + return 0.5 * (min(aDir, addenv) + max(aDir, addenv)); } -double ProtoLayer::range(BinningValue bval, bool addenv) const { - return std::abs(max(bval, addenv) - min(bval, addenv)); +double ProtoLayer::range(AxisDirection aDir, bool addenv) const { + return std::abs(max(aDir, addenv) - min(aDir, addenv)); } std::ostream& ProtoLayer::toStream(std::ostream& sl) const { diff --git a/Core/src/Geometry/ProtoLayerHelper.cpp b/Core/src/Geometry/ProtoLayerHelper.cpp index ae3dfc4896b..4a779988e9c 100644 --- a/Core/src/Geometry/ProtoLayerHelper.cpp +++ b/Core/src/Geometry/ProtoLayerHelper.cpp @@ -69,7 +69,7 @@ std::vector Acts::ProtoLayerHelper::protoLayers( std::vector> sortSurfaces = {surfaces}; for (const auto& sorting : sortings) { ACTS_VERBOSE("-> Sorting a set of " << sortSurfaces.size() << " in " - << binningValueName(sorting.first)); + << axisDirectionName(sorting.first)); std::vector> subSurfaces; for (const auto& ssurfaces : sortSurfaces) { ACTS_VERBOSE("-> Surfaces for this sorting step: " << ssurfaces.size()); diff --git a/Core/src/Geometry/SurfaceArrayCreator.cpp b/Core/src/Geometry/SurfaceArrayCreator.cpp index 3ec85b020f6..514618281b3 100644 --- a/Core/src/Geometry/SurfaceArrayCreator.cpp +++ b/Core/src/Geometry/SurfaceArrayCreator.cpp @@ -44,12 +44,13 @@ Acts::SurfaceArrayCreator::surfaceArrayOnCylinder( << binsPhi * binsZ << " bins."); Transform3 ftransform = transform; - ProtoAxis pAxisPhi = createEquidistantAxis( - gctx, surfacesRaw, BinningValue::binPhi, protoLayer, ftransform, binsPhi); + ProtoAxis pAxisPhi = + createEquidistantAxis(gctx, surfacesRaw, AxisDirection::AxisPhi, + protoLayer, ftransform, binsPhi); ProtoAxis pAxisZ = createEquidistantAxis( - gctx, surfacesRaw, BinningValue::binZ, protoLayer, ftransform, binsZ); + gctx, surfacesRaw, AxisDirection::AxisZ, protoLayer, ftransform, binsZ); - double R = protoLayer.medium(BinningValue::binR, true); + double R = protoLayer.medium(AxisDirection::AxisR, true); Transform3 itransform = ftransform.inverse(); // Transform lambda captures the transform matrix @@ -85,7 +86,7 @@ Acts::SurfaceArrayCreator::surfaceArrayOnCylinder( ProtoLayer protoLayer = protoLayerOpt ? *protoLayerOpt : ProtoLayer(gctx, surfacesRaw); - double R = protoLayer.medium(BinningValue::binR, true); + double R = protoLayer.medium(AxisDirection::AxisR, true); ProtoAxis pAxisPhi; ProtoAxis pAxisZ; @@ -93,18 +94,18 @@ Acts::SurfaceArrayCreator::surfaceArrayOnCylinder( Transform3 ftransform = transform; if (bTypePhi == equidistant) { - pAxisPhi = createEquidistantAxis(gctx, surfacesRaw, BinningValue::binPhi, + pAxisPhi = createEquidistantAxis(gctx, surfacesRaw, AxisDirection::AxisPhi, protoLayer, ftransform, 0); } else { - pAxisPhi = createVariableAxis(gctx, surfacesRaw, BinningValue::binPhi, + pAxisPhi = createVariableAxis(gctx, surfacesRaw, AxisDirection::AxisPhi, protoLayer, ftransform); } if (bTypeZ == equidistant) { - pAxisZ = createEquidistantAxis(gctx, surfacesRaw, BinningValue::binZ, + pAxisZ = createEquidistantAxis(gctx, surfacesRaw, AxisDirection::AxisZ, protoLayer, ftransform); } else { - pAxisZ = createVariableAxis(gctx, surfacesRaw, BinningValue::binZ, + pAxisZ = createVariableAxis(gctx, surfacesRaw, AxisDirection::AxisZ, protoLayer, ftransform); } @@ -155,11 +156,12 @@ Acts::SurfaceArrayCreator::surfaceArrayOnDisc( Transform3 ftransform = transform; ProtoAxis pAxisR = createEquidistantAxis( - gctx, surfacesRaw, BinningValue::binR, protoLayer, ftransform, binsR); - ProtoAxis pAxisPhi = createEquidistantAxis( - gctx, surfacesRaw, BinningValue::binPhi, protoLayer, ftransform, binsPhi); + gctx, surfacesRaw, AxisDirection::AxisR, protoLayer, ftransform, binsR); + ProtoAxis pAxisPhi = + createEquidistantAxis(gctx, surfacesRaw, AxisDirection::AxisPhi, + protoLayer, ftransform, binsPhi); - double Z = protoLayer.medium(BinningValue::binZ, true); + double Z = protoLayer.medium(AxisDirection::AxisZ, true); ACTS_VERBOSE("- z-position of disk estimated as " << Z); Transform3 itransform = transform.inverse(); @@ -212,10 +214,10 @@ Acts::SurfaceArrayCreator::surfaceArrayOnDisc( Transform3 ftransform = transform; if (bTypeR == equidistant) { - pAxisR = createEquidistantAxis(gctx, surfacesRaw, BinningValue::binR, + pAxisR = createEquidistantAxis(gctx, surfacesRaw, AxisDirection::AxisR, protoLayer, ftransform); } else { - pAxisR = createVariableAxis(gctx, surfacesRaw, BinningValue::binR, + pAxisR = createVariableAxis(gctx, surfacesRaw, AxisDirection::AxisR, protoLayer, ftransform); } @@ -226,7 +228,7 @@ Acts::SurfaceArrayCreator::surfaceArrayOnDisc( // this FORCES equidistant binning std::vector> phiModules(pAxisR.nBins); for (const auto& srf : surfacesRaw) { - Vector3 bpos = srf->binningPosition(gctx, BinningValue::binR); + Vector3 bpos = srf->referencePosition(gctx, AxisDirection::AxisR); std::size_t bin = pAxisR.getBin(perp(bpos)); phiModules.at(bin).push_back(srf); } @@ -234,7 +236,7 @@ Acts::SurfaceArrayCreator::surfaceArrayOnDisc( std::vector nPhiModules; auto matcher = m_cfg.surfaceMatcher; auto equal = [&gctx, &matcher](const Surface* a, const Surface* b) { - return matcher(gctx, BinningValue::binPhi, a, b); + return matcher(gctx, AxisDirection::AxisPhi, a, b); }; std::transform( @@ -252,21 +254,21 @@ Acts::SurfaceArrayCreator::surfaceArrayOnDisc( // @TODO: check in extrapolation std::size_t nBinsPhi = (*std::min_element(nPhiModules.begin(), nPhiModules.end())); - pAxisPhi = createEquidistantAxis(gctx, surfacesRaw, BinningValue::binPhi, + pAxisPhi = createEquidistantAxis(gctx, surfacesRaw, AxisDirection::AxisPhi, protoLayer, ftransform, nBinsPhi); } else { // use regular determination if (bTypePhi == equidistant) { - pAxisPhi = createEquidistantAxis(gctx, surfacesRaw, BinningValue::binPhi, - protoLayer, ftransform, 0); + pAxisPhi = createEquidistantAxis( + gctx, surfacesRaw, AxisDirection::AxisPhi, protoLayer, ftransform, 0); } else { - pAxisPhi = createVariableAxis(gctx, surfacesRaw, BinningValue::binPhi, + pAxisPhi = createVariableAxis(gctx, surfacesRaw, AxisDirection::AxisPhi, protoLayer, ftransform); } } - double Z = protoLayer.medium(BinningValue::binZ, true); + double Z = protoLayer.medium(AxisDirection::AxisZ, true); ACTS_VERBOSE("- z-position of disk estimated as " << Z); Transform3 itransform = ftransform.inverse(); @@ -306,7 +308,7 @@ std::unique_ptr Acts::SurfaceArrayCreator::surfaceArrayOnPlane( const GeometryContext& gctx, std::vector> surfaces, std::size_t bins1, - std::size_t bins2, BinningValue bValue, + std::size_t bins2, AxisDirection aDir, std::optional protoLayerOpt, const Transform3& transform) const { std::vector surfacesRaw = unpack_shared_vector(surfaces); @@ -332,32 +334,38 @@ Acts::SurfaceArrayCreator::surfaceArrayOnPlane( std::unique_ptr sl; // Axis along the binning - switch (bValue) { - case BinningValue::binX: { - ProtoAxis pAxis1 = createEquidistantAxis( - gctx, surfacesRaw, BinningValue::binY, protoLayer, ftransform, bins1); - ProtoAxis pAxis2 = createEquidistantAxis( - gctx, surfacesRaw, BinningValue::binZ, protoLayer, ftransform, bins2); + switch (aDir) { + case AxisDirection::AxisX: { + ProtoAxis pAxis1 = + createEquidistantAxis(gctx, surfacesRaw, AxisDirection::AxisY, + protoLayer, ftransform, bins1); + ProtoAxis pAxis2 = + createEquidistantAxis(gctx, surfacesRaw, AxisDirection::AxisZ, + protoLayer, ftransform, bins2); sl = makeSurfaceGridLookup2D( globalToLocal, localToGlobal, pAxis1, pAxis2); break; } - case BinningValue::binY: { - ProtoAxis pAxis1 = createEquidistantAxis( - gctx, surfacesRaw, BinningValue::binX, protoLayer, ftransform, bins1); - ProtoAxis pAxis2 = createEquidistantAxis( - gctx, surfacesRaw, BinningValue::binZ, protoLayer, ftransform, bins2); + case AxisDirection::AxisY: { + ProtoAxis pAxis1 = + createEquidistantAxis(gctx, surfacesRaw, AxisDirection::AxisX, + protoLayer, ftransform, bins1); + ProtoAxis pAxis2 = + createEquidistantAxis(gctx, surfacesRaw, AxisDirection::AxisZ, + protoLayer, ftransform, bins2); sl = makeSurfaceGridLookup2D( globalToLocal, localToGlobal, pAxis1, pAxis2); break; } - case BinningValue::binZ: { - ProtoAxis pAxis1 = createEquidistantAxis( - gctx, surfacesRaw, BinningValue::binX, protoLayer, ftransform, bins1); - ProtoAxis pAxis2 = createEquidistantAxis( - gctx, surfacesRaw, BinningValue::binY, protoLayer, ftransform, bins2); + case AxisDirection::AxisZ: { + ProtoAxis pAxis1 = + createEquidistantAxis(gctx, surfacesRaw, AxisDirection::AxisX, + protoLayer, ftransform, bins1); + ProtoAxis pAxis2 = + createEquidistantAxis(gctx, surfacesRaw, AxisDirection::AxisY, + protoLayer, ftransform, bins2); sl = makeSurfaceGridLookup2D( globalToLocal, localToGlobal, pAxis1, pAxis2); @@ -401,10 +409,10 @@ std::vector Acts::SurfaceArrayCreator::findKeySurfaces( std::size_t Acts::SurfaceArrayCreator::determineBinCount( const GeometryContext& gctx, const std::vector& surfaces, - BinningValue bValue) const { + AxisDirection aDir) const { auto matcher = m_cfg.surfaceMatcher; - auto equal = [&gctx, &bValue, &matcher](const Surface* a, const Surface* b) { - return matcher(gctx, bValue, a, b); + auto equal = [&gctx, &aDir, &matcher](const Surface* a, const Surface* b) { + return matcher(gctx, aDir, a, b); }; std::vector keys = findKeySurfaces(surfaces, equal); @@ -414,7 +422,7 @@ std::size_t Acts::SurfaceArrayCreator::determineBinCount( Acts::SurfaceArrayCreator::ProtoAxis Acts::SurfaceArrayCreator::createVariableAxis( const GeometryContext& gctx, const std::vector& surfaces, - BinningValue bValue, const ProtoLayer& protoLayer, + AxisDirection aDir, const ProtoLayer& protoLayer, Transform3& transform) const { if (surfaces.empty()) { throw std::logic_error( @@ -426,44 +434,45 @@ Acts::SurfaceArrayCreator::createVariableAxis( // bind matcher with binning type auto matcher = m_cfg.surfaceMatcher; // find the key surfaces - auto equal = [&gctx, &bValue, &matcher](const Surface* a, const Surface* b) { - return matcher(gctx, bValue, a, b); + auto equal = [&gctx, &aDir, &matcher](const Surface* a, const Surface* b) { + return matcher(gctx, aDir, a, b); }; std::vector keys = findKeySurfaces(surfaces, equal); - std::vector bValues; - if (bValue == Acts::BinningValue::binPhi) { + std::vector aDirs; + if (aDir == Acts::AxisDirection::AxisPhi) { std::stable_sort( keys.begin(), keys.end(), [&gctx](const Acts::Surface* a, const Acts::Surface* b) { - return (phi(a->binningPosition(gctx, BinningValue::binPhi)) < - phi(b->binningPosition(gctx, BinningValue::binPhi))); + return (phi(a->referencePosition(gctx, AxisDirection::AxisPhi)) < + phi(b->referencePosition(gctx, AxisDirection::AxisPhi))); }); AxisScalar maxPhi = - 0.5 * (phi(keys.at(0)->binningPosition(gctx, BinningValue::binPhi)) + - phi(keys.at(1)->binningPosition(gctx, BinningValue::binPhi))); + 0.5 * + (phi(keys.at(0)->referencePosition(gctx, AxisDirection::AxisPhi)) + + phi(keys.at(1)->referencePosition(gctx, AxisDirection::AxisPhi))); // create rotation, so that maxPhi is +pi AxisScalar angle = -(std::numbers::pi + maxPhi); transform = (transform)*AngleAxis3(angle, Vector3::UnitZ()); - // iterate over all key surfaces, and use their mean position as bValues, + // iterate over all key surfaces, and use their mean position as aDirs, // but // rotate using transform from before AxisScalar previous = - phi(keys.at(0)->binningPosition(gctx, BinningValue::binPhi)); + phi(keys.at(0)->referencePosition(gctx, AxisDirection::AxisPhi)); // go through key surfaces for (std::size_t i = 1; i < keys.size(); i++) { const Surface* surface = keys.at(i); // create central binning values which is the mean of the center // positions in the binning direction of the current and previous // surface - AxisScalar edge = 0.5 * (previous + phi(surface->binningPosition( - gctx, BinningValue::binPhi))) + + AxisScalar edge = 0.5 * (previous + phi(surface->referencePosition( + gctx, AxisDirection::AxisPhi))) + angle; - bValues.push_back(edge); - previous = phi(surface->binningPosition(gctx, BinningValue::binPhi)); + aDirs.push_back(edge); + previous = phi(surface->referencePosition(gctx, AxisDirection::AxisPhi)); } // segments @@ -487,71 +496,73 @@ Acts::SurfaceArrayCreator::createVariableAxis( return phi(a) < phi(b); })); - bValues.push_back(maxBValue); + aDirs.push_back(maxBValue); - bValues.push_back(std::numbers::pi_v); + aDirs.push_back(std::numbers::pi_v); - } else if (bValue == Acts::BinningValue::binZ) { + } else if (aDir == Acts::AxisDirection::AxisZ) { std::stable_sort( keys.begin(), keys.end(), [&gctx](const Acts::Surface* a, const Acts::Surface* b) { - return (a->binningPosition(gctx, BinningValue::binZ).z() < - b->binningPosition(gctx, BinningValue::binZ).z()); + return (a->referencePosition(gctx, AxisDirection::AxisZ).z() < + b->referencePosition(gctx, AxisDirection::AxisZ).z()); }); - bValues.push_back(protoLayer.min(BinningValue::binZ)); - bValues.push_back(protoLayer.max(BinningValue::binZ)); + aDirs.push_back(protoLayer.min(AxisDirection::AxisZ)); + aDirs.push_back(protoLayer.max(AxisDirection::AxisZ)); // the z-center position of the previous surface AxisScalar previous = - keys.front()->binningPosition(gctx, BinningValue::binZ).z(); + keys.front()->referencePosition(gctx, AxisDirection::AxisZ).z(); // go through key surfaces for (auto surface = keys.begin() + 1; surface != keys.end(); surface++) { // create central binning values which is the mean of the center // positions in the binning direction of the current and previous // surface - bValues.push_back( - 0.5 * (previous + - (*surface)->binningPosition(gctx, BinningValue::binZ).z())); - previous = (*surface)->binningPosition(gctx, BinningValue::binZ).z(); + aDirs.push_back( + 0.5 * + (previous + + (*surface)->referencePosition(gctx, AxisDirection::AxisZ).z())); + previous = (*surface)->referencePosition(gctx, AxisDirection::AxisZ).z(); } - } else { // BinningValue::binR + } else { // AxisDirection::AxisR std::stable_sort( keys.begin(), keys.end(), [&gctx](const Acts::Surface* a, const Acts::Surface* b) { - return (perp(a->binningPosition(gctx, BinningValue::binR)) < - perp(b->binningPosition(gctx, BinningValue::binR))); + return (perp(a->referencePosition(gctx, AxisDirection::AxisR)) < + perp(b->referencePosition(gctx, AxisDirection::AxisR))); }); - bValues.push_back(protoLayer.min(BinningValue::binR)); - bValues.push_back(protoLayer.max(BinningValue::binR)); + aDirs.push_back(protoLayer.min(AxisDirection::AxisR)); + aDirs.push_back(protoLayer.max(AxisDirection::AxisR)); // the r-center position of the previous surface AxisScalar previous = - perp(keys.front()->binningPosition(gctx, BinningValue::binR)); + perp(keys.front()->referencePosition(gctx, AxisDirection::AxisR)); // go through key surfaces for (auto surface = keys.begin() + 1; surface != keys.end(); surface++) { // create central binning values which is the mean of the center // positions in the binning direction of the current and previous // surface - bValues.push_back(0.5 * (previous + perp((*surface)->binningPosition( - gctx, BinningValue::binR)))); - previous = perp((*surface)->binningPosition(gctx, BinningValue::binR)); + aDirs.push_back(0.5 * (previous + perp((*surface)->referencePosition( + gctx, AxisDirection::AxisR)))); + previous = + perp((*surface)->referencePosition(gctx, AxisDirection::AxisR)); } } - std::ranges::sort(bValues); + std::ranges::sort(aDirs); ACTS_VERBOSE("Create variable binning Axis for binned SurfaceArray"); - ACTS_VERBOSE(" BinningValue: " << bValue); - ACTS_VERBOSE(" Number of bins: " << (bValues.size() - 1)); - ACTS_VERBOSE(" (Min/Max) = (" << bValues.front() << "/" - << bValues.back() << ")"); + ACTS_VERBOSE(" AxisDirection: " << aDir); + ACTS_VERBOSE(" Number of bins: " << (aDirs.size() - 1)); + ACTS_VERBOSE(" (Min/Max) = (" << aDirs.front() << "/" << aDirs.back() + << ")"); ProtoAxis pAxis; pAxis.bType = arbitrary; - pAxis.bValue = bValue; - pAxis.binEdges = bValues; - pAxis.nBins = bValues.size() - 1; + pAxis.axisDir = aDir; + pAxis.binEdges = aDirs; + pAxis.nBins = aDirs.size() - 1; return pAxis; } @@ -559,7 +570,7 @@ Acts::SurfaceArrayCreator::createVariableAxis( Acts::SurfaceArrayCreator::ProtoAxis Acts::SurfaceArrayCreator::createEquidistantAxis( const GeometryContext& gctx, const std::vector& surfaces, - BinningValue bValue, const ProtoLayer& protoLayer, Transform3& transform, + AxisDirection aDir, const ProtoLayer& protoLayer, Transform3& transform, std::size_t nBins) const { if (surfaces.empty()) { throw std::logic_error( @@ -580,7 +591,7 @@ Acts::SurfaceArrayCreator::createEquidistantAxis( std::size_t binNumber = 0; if (nBins == 0) { // determine bin count - binNumber = determineBinCount(gctx, surfaces, bValue); + binNumber = determineBinCount(gctx, surfaces, aDir); } else { // use bin count binNumber = nBins; @@ -590,7 +601,7 @@ Acts::SurfaceArrayCreator::createEquidistantAxis( auto matcher = m_cfg.surfaceMatcher; // now check the binning value - if (bValue == BinningValue::binPhi) { + if (aDir == AxisDirection::AxisPhi) { if (m_cfg.doPhiBinningOptimization) { // Phi binning // set the binning option for phi @@ -598,14 +609,14 @@ Acts::SurfaceArrayCreator::createEquidistantAxis( const Acts::Surface* maxElem = *std::max_element( surfaces.begin(), surfaces.end(), [&gctx](const Acts::Surface* a, const Acts::Surface* b) { - return phi(a->binningPosition(gctx, BinningValue::binR)) < - phi(b->binningPosition(gctx, BinningValue::binR)); + return phi(a->referencePosition(gctx, AxisDirection::AxisR)) < + phi(b->referencePosition(gctx, AxisDirection::AxisR)); }); // get the key surfaces at the different phi positions - auto equal = [&gctx, &bValue, &matcher](const Surface* a, - const Surface* b) { - return matcher(gctx, bValue, a, b); + auto equal = [&gctx, &aDir, &matcher](const Surface* a, + const Surface* b) { + return matcher(gctx, aDir, a, b); }; keys = findKeySurfaces(surfaces, equal); @@ -621,15 +632,16 @@ Acts::SurfaceArrayCreator::createEquidistantAxis( // rotate to max phi module plus one half step // this should make sure that phi wrapping at +- pi // never falls on a module center - double max = phi(maxElem->binningPosition(gctx, BinningValue::binR)); + double max = + phi(maxElem->referencePosition(gctx, AxisDirection::AxisR)); double angle = std::numbers::pi - (max + 0.5 * step); // replace given transform ref transform = (transform)*AngleAxis3(angle, Vector3::UnitZ()); } else { - minimum = protoLayer.min(BinningValue::binPhi, true); - maximum = protoLayer.max(BinningValue::binPhi, true); + minimum = protoLayer.min(AxisDirection::AxisPhi, true); + maximum = protoLayer.max(AxisDirection::AxisPhi, true); // we do not need a transform in this case } } else { @@ -637,13 +649,13 @@ Acts::SurfaceArrayCreator::createEquidistantAxis( maximum = std::numbers::pi; } } else { - maximum = protoLayer.max(bValue, false); - minimum = protoLayer.min(bValue, false); + maximum = protoLayer.max(aDir, false); + minimum = protoLayer.min(aDir, false); } // assign the bin size ACTS_VERBOSE("Create equidistant binning Axis for binned SurfaceArray"); - ACTS_VERBOSE(" BinningValue: " << bValue); + ACTS_VERBOSE(" AxisDirection: " << aDir); ACTS_VERBOSE(" Number of bins: " << binNumber); ACTS_VERBOSE(" (Min/Max) = (" << minimum << "/" << maximum << ")"); @@ -651,7 +663,7 @@ Acts::SurfaceArrayCreator::createEquidistantAxis( pAxis.max = maximum; pAxis.min = minimum; pAxis.bType = equidistant; - pAxis.bValue = bValue; + pAxis.axisDir = aDir; pAxis.nBins = binNumber; return pAxis; diff --git a/Core/src/Geometry/TrackingVolume.cpp b/Core/src/Geometry/TrackingVolume.cpp index 6d3880bd4db..21c22fa8c8d 100644 --- a/Core/src/Geometry/TrackingVolume.cpp +++ b/Core/src/Geometry/TrackingVolume.cpp @@ -177,11 +177,11 @@ void TrackingVolume::glueTrackingVolume(const GeometryContext& gctx, BoundarySurfaceFace bsfMine, TrackingVolume* neighbor, BoundarySurfaceFace bsfNeighbor) { - // Find the connection of the two tracking volumes: BinningValue::binR returns - // the center except for cylindrical volumes - Vector3 bPosition(binningPosition(gctx, BinningValue::binR)); - Vector3 distance = - Vector3(neighbor->binningPosition(gctx, BinningValue::binR) - bPosition); + // Find the connection of the two tracking volumes: AxisDirection::AxisR + // returns the center except for cylindrical volumes + Vector3 bPosition(referencePosition(gctx, AxisDirection::AxisR)); + Vector3 distance = Vector3( + neighbor->referencePosition(gctx, AxisDirection::AxisR) - bPosition); // glue to the face std::shared_ptr> bSurfaceMine = boundarySurfaces().at(bsfMine); @@ -221,13 +221,13 @@ void TrackingVolume::glueTrackingVolumes( const GeometryContext& gctx, BoundarySurfaceFace bsfMine, const std::shared_ptr& neighbors, BoundarySurfaceFace bsfNeighbor) { - // find the connection of the two tracking volumes : BinningValue::binR + // find the connection of the two tracking volumes : AxisDirection::AxisR // returns the center except for cylindrical volumes std::shared_ptr nRefVolume = neighbors->arrayObjects().at(0); // get the distance - Vector3 bPosition(binningPosition(gctx, BinningValue::binR)); - Vector3 distance(nRefVolume->binningPosition(gctx, BinningValue::binR) - + Vector3 bPosition(referencePosition(gctx, AxisDirection::AxisR)); + Vector3 distance(nRefVolume->referencePosition(gctx, AxisDirection::AxisR) - bPosition); // take the normal at the binning positio std::shared_ptr> bSurfaceMine = diff --git a/Core/src/Geometry/TrackingVolumeArrayCreator.cpp b/Core/src/Geometry/TrackingVolumeArrayCreator.cpp index 61727f9dee0..a280c036872 100644 --- a/Core/src/Geometry/TrackingVolumeArrayCreator.cpp +++ b/Core/src/Geometry/TrackingVolumeArrayCreator.cpp @@ -21,14 +21,14 @@ std::shared_ptr Acts::TrackingVolumeArrayCreator::trackingVolumeArray( const GeometryContext& gctx, const TrackingVolumeVector& tVolumes, - BinningValue bValue) const { + AxisDirection aDir) const { // MSG_VERBOSE("Create VolumeArray of "<< tVolumes.size() << " TrackingVolumes - // with binning in : " << binningValueName(bValue) ); + // with binning in : " << axisDirectionName(aDir) ); // let's copy and sort TrackingVolumeVector volumes(tVolumes); // sort it accordingly to the binning value GeometryObjectSorterT> volumeSorter( - gctx, bValue); + gctx, aDir); std::ranges::sort(volumes, volumeSorter); // prepare what we need : @@ -41,24 +41,23 @@ Acts::TrackingVolumeArrayCreator::trackingVolumeArray( // let's loop over the (sorted) volumes for (auto& tVolume : volumes) { // get the binning position - Vector3 binningPosition = tVolume->binningPosition(gctx, bValue); - double binningBorder = tVolume->volumeBounds().binningBorder(bValue); + Vector3 referencePosition = tVolume->referencePosition(gctx, aDir); + double referenceBorder = tVolume->volumeBounds().referenceBorder(aDir); // get the center value according to the bin - double value = tVolume->binningPositionValue(gctx, bValue); + double value = tVolume->referencePositionValue(gctx, aDir); // for the first one take low and high boundary if (boundaries.empty()) { - boundaries.push_back(value - binningBorder); + boundaries.push_back(value - referenceBorder); } // always take the high boundary - boundaries.push_back(value + binningBorder); + boundaries.push_back(value + referenceBorder); // record the volume to be ordered tVolumesOrdered.push_back( - TrackingVolumeOrderPosition(tVolume, binningPosition)); + TrackingVolumeOrderPosition(tVolume, referencePosition)); } // now create the bin utility - auto binUtility = - std::make_unique(boundaries, open, bValue); + auto binUtility = std::make_unique(boundaries, open, aDir); // and return the newly created binned array return std::make_shared>( diff --git a/Core/src/Geometry/TrivialPortalLink.cpp b/Core/src/Geometry/TrivialPortalLink.cpp index 6976388dbc0..5e3b3ad5023 100644 --- a/Core/src/Geometry/TrivialPortalLink.cpp +++ b/Core/src/Geometry/TrivialPortalLink.cpp @@ -16,7 +16,7 @@ namespace Acts { std::unique_ptr TrivialPortalLink::makeGrid( - BinningValue direction) const { + AxisDirection direction) const { return GridPortalLink::make(m_surface, *m_volume, direction); } diff --git a/Core/src/Geometry/Volume.cpp b/Core/src/Geometry/Volume.cpp index 7aac6f8b9d6..674c3123340 100644 --- a/Core/src/Geometry/Volume.cpp +++ b/Core/src/Geometry/Volume.cpp @@ -33,13 +33,13 @@ Volume::Volume(const Volume& vol, const Transform3& shift) m_center(m_transform.translation()), m_volumeBounds(vol.m_volumeBounds) {} -Vector3 Volume::binningPosition(const GeometryContext& /*gctx*/, - BinningValue bValue) const { +Vector3 Volume::referencePosition(const GeometryContext& /*gctx*/, + AxisDirection aDir) const { // for most of the binning types it is actually the center, // just for R-binning types the - if (bValue == BinningValue::binR || bValue == BinningValue::binRPhi) { + if (aDir == AxisDirection::AxisR || aDir == AxisDirection::AxisRPhi) { // the binning Position for R-type may have an offset - return (center() + m_volumeBounds->binningOffset(bValue)); + return (center() + m_volumeBounds->referenceOffset(aDir)); } // return the center return center(); diff --git a/Core/src/Material/MaterialGridHelper.cpp b/Core/src/Material/MaterialGridHelper.cpp index 83c7946f77c..e4dbab79164 100644 --- a/Core/src/Material/MaterialGridHelper.cpp +++ b/Core/src/Material/MaterialGridHelper.cpp @@ -84,44 +84,44 @@ Acts::Grid3D Acts::createGrid(Acts::MaterialGridAxisData gridAxis1, } std::function Acts::globalToLocalFromBin( - Acts::BinningValue& type) { + Acts::AxisDirection& type) { std::function transfoGlobalToLocal; switch (type) { - case Acts::BinningValue::binX: + case Acts::AxisDirection::AxisX: transfoGlobalToLocal = [](const Acts::Vector3& pos) -> double { return (pos.x()); }; break; - case Acts::BinningValue::binY: + case Acts::AxisDirection::AxisY: transfoGlobalToLocal = [](const Acts::Vector3& pos) -> double { return (pos.y()); }; break; - case Acts::BinningValue::binR: + case Acts::AxisDirection::AxisR: transfoGlobalToLocal = [](const Acts::Vector3& pos) -> double { return (Acts::VectorHelpers::perp(pos)); }; break; - case Acts::BinningValue::binPhi: + case Acts::AxisDirection::AxisPhi: transfoGlobalToLocal = [](const Acts::Vector3& pos) -> double { return (Acts::VectorHelpers::phi(pos)); }; break; - case Acts::BinningValue::binZ: + case Acts::AxisDirection::AxisZ: transfoGlobalToLocal = [](const Acts::Vector3& pos) -> double { return (pos.z()); }; break; - // case Acts::BinningValue::binRPhi: - // case Acts::BinningValue::binEta: - // case Acts::BinningValue::binH: - // case Acts::BinningValue::binMag: + // case Acts::AxisDirection::AxisRPhi: + // case Acts::AxisDirection::AxisEta: + // case Acts::AxisDirection::AxisTheta: + // case Acts::AxisDirection::AxisMag: default: throw std::invalid_argument("Incorrect bin, should be x,y,z,r,phi"); } @@ -137,12 +137,12 @@ Acts::Grid2D Acts::createGrid2D( bool isCylindrical = false; for (std::size_t b = 0; b < bu.size(); b++) { - if (bu[b].binvalue == Acts::BinningValue::binX || - bu[b].binvalue == Acts::BinningValue::binY) { + if (bu[b].binvalue == Acts::AxisDirection::AxisX || + bu[b].binvalue == Acts::AxisDirection::AxisY) { isCartesian = true; } - if (bu[b].binvalue == Acts::BinningValue::binR || - bu[b].binvalue == Acts::BinningValue::binPhi) { + if (bu[b].binvalue == Acts::AxisDirection::AxisR || + bu[b].binvalue == Acts::AxisDirection::AxisPhi) { isCylindrical = true; } } @@ -177,12 +177,12 @@ Acts::Grid3D Acts::createGrid3D( bool isCylindrical = false; for (std::size_t b = 0; b < bu.size(); b++) { - if (bu[b].binvalue == Acts::BinningValue::binX || - bu[b].binvalue == Acts::BinningValue::binY) { + if (bu[b].binvalue == Acts::AxisDirection::AxisX || + bu[b].binvalue == Acts::AxisDirection::AxisY) { isCartesian = true; } - if (bu[b].binvalue == Acts::BinningValue::binR || - bu[b].binvalue == Acts::BinningValue::binPhi) { + if (bu[b].binvalue == Acts::AxisDirection::AxisR || + bu[b].binvalue == Acts::AxisDirection::AxisPhi) { isCylindrical = true; } } diff --git a/Core/src/Surfaces/ConeSurface.cpp b/Core/src/Surfaces/ConeSurface.cpp index bb8f8ed4cf4..1b9c1906856 100644 --- a/Core/src/Surfaces/ConeSurface.cpp +++ b/Core/src/Surfaces/ConeSurface.cpp @@ -61,19 +61,19 @@ ConeSurface::ConeSurface(const Transform3& transform, throw_assert(m_bounds, "ConeBounds must not be nullptr"); } -Vector3 ConeSurface::binningPosition(const GeometryContext& gctx, - BinningValue bValue) const { +Vector3 ConeSurface::referencePosition(const GeometryContext& gctx, + AxisDirection aDir) const { const Vector3& sfCenter = center(gctx); // special binning type for R-type methods - if (bValue == BinningValue::binR || bValue == BinningValue::binRPhi) { + if (aDir == AxisDirection::AxisR || aDir == AxisDirection::AxisRPhi) { return Vector3(sfCenter.x() + bounds().r(sfCenter.z()), sfCenter.y(), sfCenter.z()); } // give the center as default for all of these binning types - // BinningValue::binX, BinningValue::binY, BinningValue::binZ, - // BinningValue::binR, BinningValue::binPhi, BinningValue::binRPhi, - // BinningValue::binH, BinningValue::binEta + // AxisDirection::AxisX, AxisDirection::AxisY, AxisDirection::AxisZ, + // AxisDirection::AxisR, AxisDirection::AxisPhi, AxisDirection::AxisRPhi, + // AxisDirection::AxisTheta, AxisDirection::AxisEta return sfCenter; } diff --git a/Core/src/Surfaces/CylinderSurface.cpp b/Core/src/Surfaces/CylinderSurface.cpp index 7990b4fd8d2..45ec85ae1a8 100644 --- a/Core/src/Surfaces/CylinderSurface.cpp +++ b/Core/src/Surfaces/CylinderSurface.cpp @@ -76,18 +76,18 @@ CylinderSurface& CylinderSurface::operator=(const CylinderSurface& other) { } // return the binning position for ordering in the BinnedArray -Vector3 CylinderSurface::binningPosition(const GeometryContext& gctx, - BinningValue bValue) const { +Vector3 CylinderSurface::referencePosition(const GeometryContext& gctx, + AxisDirection aDir) const { // special binning type for R-type methods - if (bValue == BinningValue::binR || bValue == BinningValue::binRPhi) { + if (aDir == AxisDirection::AxisR || aDir == AxisDirection::AxisRPhi) { double R = bounds().get(CylinderBounds::eR); double phi = bounds().get(CylinderBounds::eAveragePhi); return localToGlobal(gctx, Vector2{phi * R, 0}, Vector3{}); } // give the center as default for all of these binning types - // BinningValue::binX, BinningValue::binY, BinningValue::binZ, - // BinningValue::binR, BinningValue::binPhi, BinningValue::binRPhi, - // BinningValue::binH, BinningValue::binEta + // AxisDirection::AxisX, AxisDirection::AxisY, AxisDirection::AxisZ, + // AxisDirection::AxisR, AxisDirection::AxisPhi, AxisDirection::AxisRPhi, + // AxisDirection::AxisTheta, AxisDirection::AxisEta return center(gctx); } @@ -355,11 +355,11 @@ ActsMatrix<2, 3> CylinderSurface::localCartesianToBoundLocalDerivative( } std::pair, bool> CylinderSurface::mergedWith( - const CylinderSurface& other, BinningValue direction, bool externalRotation, - const Logger& logger) const { + const CylinderSurface& other, AxisDirection direction, + bool externalRotation, const Logger& logger) const { using namespace UnitLiterals; - ACTS_VERBOSE("Merging cylinder surfaces in " << binningValueName(direction) + ACTS_VERBOSE("Merging cylinder surfaces in " << axisDirectionName(direction) << " direction"); if (m_associatedDetElement != nullptr || @@ -448,7 +448,7 @@ std::pair, bool> CylinderSurface::mergedWith( double otherHlPhi = other.bounds().get(CylinderBounds::eHalfPhiSector); double otherAvgPhi = other.bounds().get(CylinderBounds::eAveragePhi); - if (direction == BinningValue::binZ) { + if (direction == AxisDirection::AxisZ) { // z shift must match the bounds if (std::abs(otherLocal.linear().col(eY)[eX]) >= tolerance && @@ -495,7 +495,7 @@ std::pair, bool> CylinderSurface::mergedWith( return {Surface::makeShared(newTransform, newBounds), zShift < 0}; - } else if (direction == BinningValue::binRPhi) { + } else if (direction == AxisDirection::AxisRPhi) { // no z shift is allowed if (std::abs(translation[2]) > tolerance) { ACTS_ERROR( @@ -555,7 +555,7 @@ std::pair, bool> CylinderSurface::mergedWith( } else { throw SurfaceMergingException(getSharedPtr(), other.getSharedPtr(), "CylinderSurface::merge: invalid direction " + - binningValueName(direction)); + axisDirectionName(direction)); } } diff --git a/Core/src/Surfaces/DiscSurface.cpp b/Core/src/Surfaces/DiscSurface.cpp index 8981bb24c5e..99d2f21885d 100644 --- a/Core/src/Surfaces/DiscSurface.cpp +++ b/Core/src/Surfaces/DiscSurface.cpp @@ -337,9 +337,9 @@ Vector3 DiscSurface::normal(const GeometryContext& gctx) const { return Vector3(tMatrix(0, 2), tMatrix(1, 2), tMatrix(2, 2)); } -Vector3 DiscSurface::binningPosition(const GeometryContext& gctx, - BinningValue bValue) const { - if (bValue == BinningValue::binR || bValue == BinningValue::binPhi) { +Vector3 DiscSurface::referencePosition(const GeometryContext& gctx, + AxisDirection aDir) const { + if (aDir == AxisDirection::AxisR || aDir == AxisDirection::AxisPhi) { double r = m_bounds->binningValueR(); double phi = m_bounds->binningValuePhi(); return localToGlobal(gctx, Vector2{r, phi}, Vector3{}); @@ -347,16 +347,16 @@ Vector3 DiscSurface::binningPosition(const GeometryContext& gctx, return center(gctx); } -double DiscSurface::binningPositionValue(const GeometryContext& gctx, - BinningValue bValue) const { - if (bValue == BinningValue::binR) { - return VectorHelpers::perp(binningPosition(gctx, bValue)); +double DiscSurface::referencePositionValue(const GeometryContext& gctx, + AxisDirection aDir) const { + if (aDir == AxisDirection::AxisR) { + return VectorHelpers::perp(referencePosition(gctx, aDir)); } - if (bValue == BinningValue::binPhi) { - return VectorHelpers::phi(binningPosition(gctx, bValue)); + if (aDir == AxisDirection::AxisPhi) { + return VectorHelpers::phi(referencePosition(gctx, aDir)); } - return GeometryObject::binningPositionValue(gctx, bValue); + return GeometryObject::referencePositionValue(gctx, aDir); } double DiscSurface::pathCorrection(const GeometryContext& gctx, @@ -367,7 +367,7 @@ double DiscSurface::pathCorrection(const GeometryContext& gctx, } std::pair, bool> DiscSurface::mergedWith( - const DiscSurface& other, BinningValue direction, bool externalRotation, + const DiscSurface& other, AxisDirection direction, bool externalRotation, const Logger& logger) const { using namespace UnitLiterals; @@ -443,7 +443,7 @@ std::pair, bool> DiscSurface::mergedWith( << otherAvgPhi / 1_degree << " +- " << otherHlPhi / 1_degree); - if (direction == BinningValue::binR) { + if (direction == AxisDirection::AxisR) { if (std::abs(otherLocal.linear().col(eY)[eX]) >= tolerance && (!bounds->coversFullAzimuth() || !otherBounds->coversFullAzimuth())) { throw SurfaceMergingException(getSharedPtr(), other.getSharedPtr(), @@ -483,7 +483,7 @@ std::pair, bool> DiscSurface::mergedWith( return {Surface::makeShared(*m_transform, newBounds), minR > otherMinR}; - } else if (direction == BinningValue::binPhi) { + } else if (direction == AxisDirection::AxisPhi) { if (std::abs(maxR - otherMaxR) > tolerance || std::abs(minR - otherMinR) > tolerance) { ACTS_ERROR("DiscSurface::merge: surfaces don't have same r bounds"); @@ -535,9 +535,9 @@ std::pair, bool> DiscSurface::mergedWith( } else { ACTS_ERROR("DiscSurface::merge: invalid direction " << direction); - throw SurfaceMergingException( - getSharedPtr(), other.getSharedPtr(), - "DiscSurface::merge: invalid direction " + binningValueName(direction)); + throw SurfaceMergingException(getSharedPtr(), other.getSharedPtr(), + "DiscSurface::merge: invalid direction " + + axisDirectionName(direction)); } } diff --git a/Core/src/Surfaces/LineSurface.cpp b/Core/src/Surfaces/LineSurface.cpp index 68957d5824b..6f6350625d6 100644 --- a/Core/src/Surfaces/LineSurface.cpp +++ b/Core/src/Surfaces/LineSurface.cpp @@ -119,8 +119,8 @@ double LineSurface::pathCorrection(const GeometryContext& /*gctx*/, return 1.; } -Vector3 LineSurface::binningPosition(const GeometryContext& gctx, - BinningValue /*bValue*/) const { +Vector3 LineSurface::referencePosition(const GeometryContext& gctx, + AxisDirection /*aDir*/) const { return center(gctx); } diff --git a/Core/src/Surfaces/PlaneSurface.cpp b/Core/src/Surfaces/PlaneSurface.cpp index aebc75315ef..80967a8d78a 100644 --- a/Core/src/Surfaces/PlaneSurface.cpp +++ b/Core/src/Surfaces/PlaneSurface.cpp @@ -145,8 +145,8 @@ Vector3 PlaneSurface::normal(const GeometryContext& gctx) const { return transform(gctx).linear().col(2); } -Vector3 PlaneSurface::binningPosition(const GeometryContext& gctx, - BinningValue /*bValue*/) const { +Vector3 PlaneSurface::referencePosition(const GeometryContext& gctx, + AxisDirection /*aDir*/) const { return center(gctx); } diff --git a/Core/src/Utilities/AxisDefinitions.cpp b/Core/src/Utilities/AxisDefinitions.cpp new file mode 100644 index 00000000000..e7adf5347c6 --- /dev/null +++ b/Core/src/Utilities/AxisDefinitions.cpp @@ -0,0 +1,66 @@ +// 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/Utilities/AxisDefinitions.hpp" + +#include +#include +#include + +namespace Acts { + +namespace { + +// Legacy binning value names +// +// NOTE: this should be removed once the BinUtility is removed +const std::vector s_legacyBinningValueNames = { + "binX", "binY", "binZ", "binR", "binPhi", + "binRPhi", "binH", "binEta", "binMag"}; +// end of legacy binning values + +const std::vector s_axisDirectionNames = { + "AxisX", "AxisY", "AxisZ", "AxisR", "AxisPhi", + "AxisRPhi", "AxisTheta", "AxisEta", "AxisMag"}; + +const std::vector s_axisDirections = { + AxisDirection::AxisX, AxisDirection::AxisY, AxisDirection::AxisZ, + AxisDirection::AxisR, AxisDirection::AxisPhi, AxisDirection::AxisRPhi, + AxisDirection::AxisTheta, AxisDirection::AxisEta, AxisDirection::AxisMag}; + +} // namespace + +const std::vector& allAxisDirections() { + return s_axisDirections; +} + +AxisDirection axisDirectionFromName(const std::string& name) { + auto it = std::ranges::find(s_axisDirectionNames, name); + if (it == s_axisDirectionNames.end()) { + // Legacy binning check - this should be removed once BinUtility is gone + it = std::ranges::find(s_legacyBinningValueNames, name); + if (it == s_legacyBinningValueNames.end()) { + throw std::invalid_argument("Unknown AxisDirection value name: " + name); + } + // both legacy and current failed + } + return static_cast( + std::distance(s_axisDirectionNames.begin(), it)); +} + +const std::string& axisDirectionName(AxisDirection aDir) { + return s_axisDirectionNames.at( + static_cast>(aDir)); +} + +std::ostream& operator<<(std::ostream& os, AxisDirection aDir) { + os << axisDirectionName(aDir); + return os; +} + +} // namespace Acts diff --git a/Core/src/Utilities/BinningType.cpp b/Core/src/Utilities/BinningType.cpp deleted file mode 100644 index 8faa7dcd856..00000000000 --- a/Core/src/Utilities/BinningType.cpp +++ /dev/null @@ -1,53 +0,0 @@ -// 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/Utilities/BinningType.hpp" - -#include -#include -#include - -namespace Acts { - -namespace { - -static const std::vector s_binningValueNames = { - "binX", "binY", "binZ", "binR", "binPhi", - "binRPhi", "binH", "binEta", "binMag"}; - -static const std::vector s_binningValues = { - BinningValue::binX, BinningValue::binY, BinningValue::binZ, - BinningValue::binR, BinningValue::binPhi, BinningValue::binRPhi, - BinningValue::binH, BinningValue::binEta, BinningValue::binMag}; - -} // namespace - -const std::vector& allBinningValues() { - return s_binningValues; -} - -BinningValue binningValueFromName(const std::string& name) { - auto it = std::ranges::find(s_binningValueNames, name); - if (it == s_binningValueNames.end()) { - throw std::invalid_argument("Unknown binning value name: " + name); - } - return static_cast( - std::distance(s_binningValueNames.begin(), it)); -} - -const std::string& binningValueName(BinningValue bValue) { - return s_binningValueNames.at( - static_cast>(bValue)); -} - -std::ostream& operator<<(std::ostream& os, BinningValue bValue) { - os << binningValueName(bValue); - return os; -} - -} // namespace Acts diff --git a/Core/src/Utilities/CMakeLists.txt b/Core/src/Utilities/CMakeLists.txt index 1fb61813cd3..7abbe28c246 100644 --- a/Core/src/Utilities/CMakeLists.txt +++ b/Core/src/Utilities/CMakeLists.txt @@ -2,10 +2,10 @@ target_sources( ActsCore PRIVATE AnnealingUtility.cpp + AxisDefinitions.cpp Logger.cpp SpacePointUtility.cpp TrackHelpers.cpp - BinningType.cpp Intersection.cpp GraphViz.cpp ) diff --git a/Core/src/Visualization/GeometryView3D.cpp b/Core/src/Visualization/GeometryView3D.cpp index f16d9e809cc..d915a5ae633 100644 --- a/Core/src/Visualization/GeometryView3D.cpp +++ b/Core/src/Visualization/GeometryView3D.cpp @@ -79,9 +79,9 @@ void Acts::GeometryView3D::drawSurfaceArray( auto axes = surfaceArray.getAxes(); if (!binning.empty() && binning.size() == 2 && axes.size() == 2) { // Cylinder surface array - if (binning[0] == BinningValue::binPhi && - binning[1] == BinningValue::binZ) { - double R = arrayExtent.medium(BinningValue::binR) + gridConfig.offset; + if (binning[0] == AxisDirection::AxisPhi && + binning[1] == AxisDirection::AxisZ) { + double R = arrayExtent.medium(AxisDirection::AxisR) + gridConfig.offset; auto phiValues = axes[0]->getBinEdges(); auto zValues = axes[1]->getBinEdges(); ViewConfig gridRadConfig = gridConfig; @@ -103,9 +103,9 @@ void Acts::GeometryView3D::drawSurfaceArray( } } - } else if (binning[0] == BinningValue::binR && - binning[1] == BinningValue::binPhi) { - double z = arrayExtent.medium(BinningValue::binZ) + gridConfig.offset; + } else if (binning[0] == AxisDirection::AxisR && + binning[1] == AxisDirection::AxisPhi) { + double z = arrayExtent.medium(AxisDirection::AxisZ) + gridConfig.offset; auto rValues = axes[0]->getBinEdges(); auto phiValues = axes[1]->getBinEdges(); ViewConfig gridRadConfig = gridConfig; diff --git a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/Smearers.hpp b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/Smearers.hpp index 8d0130831ae..08c1ba06a74 100644 --- a/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/Smearers.hpp +++ b/Examples/Algorithms/Digitization/include/ActsExamples/Digitization/Smearers.hpp @@ -8,7 +8,7 @@ #pragma once -#include "Acts/Utilities/BinningData.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Result.hpp" #include "ActsExamples/Framework/RandomNumbers.hpp" #include "ActsFatras/Digitization/DigitizationError.hpp" @@ -142,7 +142,7 @@ struct Uniform { /// Construct with a @param pitch standard deviation and @param range Uniform(double pitch, const std::pair& range_) : binningData( - Acts::open, Acts::BinningValue::binX, + Acts::open, Acts::AxisDirection::AxisX, static_cast((range_.second - range_.first) / pitch), range_.first, range_.second) {} @@ -180,7 +180,7 @@ struct Digital { /// Construct with a @param pitch standard deviation and @param range Digital(double pitch, const std::pair& range_) : binningData( - Acts::open, Acts::BinningValue::binX, + Acts::open, Acts::AxisDirection::AxisX, static_cast((range_.second - range_.first) / pitch), range_.first, range_.second) {} diff --git a/Examples/Algorithms/Digitization/scripts/smearing-config.py b/Examples/Algorithms/Digitization/scripts/smearing-config.py index 64dc1b1e3e9..61437a03aef 100644 --- a/Examples/Algorithms/Digitization/scripts/smearing-config.py +++ b/Examples/Algorithms/Digitization/scripts/smearing-config.py @@ -145,7 +145,7 @@ def block_to_json(args): data["bindata"] = [ 0, # Acts::Open, - 0, # Acts::BinningValue::binX, + 0, # Acts::AxisDirection::AxisX, (high - low) / pitch, low, high, diff --git a/Examples/Algorithms/Digitization/src/DigitizationConfigurator.cpp b/Examples/Algorithms/Digitization/src/DigitizationConfigurator.cpp index 8542b2fdd5b..fdac7783db2 100644 --- a/Examples/Algorithms/Digitization/src/DigitizationConfigurator.cpp +++ b/Examples/Algorithms/Digitization/src/DigitizationConfigurator.cpp @@ -81,17 +81,17 @@ void ActsExamples::DigitizationConfigurator::operator()( // The module is a rectangle module case Acts::SurfaceBounds::eRectangle: { if (inputSegmentation.binningData()[0].binvalue == - Acts::BinningValue::binX) { + Acts::AxisDirection::AxisX) { double minX = boundValues[Acts::RectangleBounds::eMinX]; double maxX = boundValues[Acts::RectangleBounds::eMaxX]; unsigned int nBins = static_cast(std::round( (maxX - minX) / inputSegmentation.binningData()[0].step)); outputSegmentation += Acts::BinUtility( nBins, static_cast(minX), static_cast(maxX), - Acts::open, Acts::BinningValue::binX); + Acts::open, Acts::AxisDirection::AxisX); } if (inputSegmentation.binningData()[0].binvalue == - Acts::BinningValue::binY || + Acts::AxisDirection::AxisY || inputSegmentation.dimensions() == 2) { unsigned int accessBin = inputSegmentation.dimensions() == 2 ? 1 : 0; @@ -102,14 +102,14 @@ void ActsExamples::DigitizationConfigurator::operator()( inputSegmentation.binningData()[accessBin].step)); outputSegmentation += Acts::BinUtility( nBins, static_cast(minY), static_cast(maxY), - Acts::open, Acts::BinningValue::binY); + Acts::open, Acts::AxisDirection::AxisY); } } break; // The module is a trapezoid module case Acts::SurfaceBounds::eTrapezoid: { if (inputSegmentation.binningData()[0].binvalue == - Acts::BinningValue::binX) { + Acts::AxisDirection::AxisX) { double maxX = std::max( boundValues[Acts::TrapezoidBounds::eHalfLengthXnegY], boundValues[Acts::TrapezoidBounds::eHalfLengthXposY]); @@ -117,10 +117,10 @@ void ActsExamples::DigitizationConfigurator::operator()( 2 * maxX / inputSegmentation.binningData()[0].step)); outputSegmentation += Acts::BinUtility( nBins, -static_cast(maxX), static_cast(maxX), - Acts::open, Acts::BinningValue::binX); + Acts::open, Acts::AxisDirection::AxisX); } if (inputSegmentation.binningData()[0].binvalue == - Acts::BinningValue::binY || + Acts::AxisDirection::AxisY || inputSegmentation.dimensions() == 2) { unsigned int accessBin = inputSegmentation.dimensions() == 2 ? 1 : 0; @@ -130,24 +130,24 @@ void ActsExamples::DigitizationConfigurator::operator()( inputSegmentation.binningData()[accessBin].step)); outputSegmentation += Acts::BinUtility( nBins, -static_cast(maxY), static_cast(maxY), - Acts::open, Acts::BinningValue::binY); + Acts::open, Acts::AxisDirection::AxisY); } } break; // The module is an annulus module case Acts::SurfaceBounds::eAnnulus: { if (inputSegmentation.binningData()[0].binvalue == - Acts::BinningValue::binR) { + Acts::AxisDirection::AxisR) { double minR = boundValues[Acts::AnnulusBounds::eMinR]; double maxR = boundValues[Acts::AnnulusBounds::eMaxR]; unsigned int nBins = static_cast(std::round( (maxR - minR) / inputSegmentation.binningData()[0].step)); outputSegmentation += Acts::BinUtility( nBins, static_cast(minR), static_cast(maxR), - Acts::open, Acts::BinningValue::binR); + Acts::open, Acts::AxisDirection::AxisR); } if (inputSegmentation.binningData()[0].binvalue == - Acts::BinningValue::binPhi || + Acts::AxisDirection::AxisPhi || inputSegmentation.dimensions() == 2) { unsigned int accessBin = inputSegmentation.dimensions() == 2 ? 1 : 0; @@ -161,7 +161,7 @@ void ActsExamples::DigitizationConfigurator::operator()( inputSegmentation.binningData()[accessBin].step)); outputSegmentation += Acts::BinUtility( nBins, static_cast(minPhi), static_cast(maxPhi), - Acts::open, Acts::BinningValue::binPhi); + Acts::open, Acts::AxisDirection::AxisPhi); } } break; @@ -172,15 +172,15 @@ void ActsExamples::DigitizationConfigurator::operator()( double maxR = boundValues[Acts::DiscTrapezoidBounds::eMaxR]; if (inputSegmentation.binningData()[0].binvalue == - Acts::BinningValue::binR) { + Acts::AxisDirection::AxisR) { unsigned int nBins = static_cast(std::round( (maxR - minR) / inputSegmentation.binningData()[0].step)); outputSegmentation += Acts::BinUtility( nBins, static_cast(minR), static_cast(maxR), - Acts::open, Acts::BinningValue::binR); + Acts::open, Acts::AxisDirection::AxisR); } if (inputSegmentation.binningData()[0].binvalue == - Acts::BinningValue::binPhi || + Acts::AxisDirection::AxisPhi || inputSegmentation.dimensions() == 2) { unsigned int accessBin = inputSegmentation.dimensions() == 2 ? 1 : 0; @@ -199,24 +199,24 @@ void ActsExamples::DigitizationConfigurator::operator()( outputSegmentation += Acts::BinUtility( nBins, static_cast(averagePhi - alpha), static_cast(averagePhi + alpha), Acts::open, - Acts::BinningValue::binPhi); + Acts::AxisDirection::AxisPhi); } } break; case Acts::SurfaceBounds::eDisc: { if (inputSegmentation.binningData()[0].binvalue == - Acts::BinningValue::binR) { + Acts::AxisDirection::AxisR) { double minR = boundValues[Acts::RadialBounds::eMinR]; double maxR = boundValues[Acts::RadialBounds::eMaxR]; unsigned int nBins = static_cast(std::round( (maxR - minR) / inputSegmentation.binningData()[0].step)); outputSegmentation += Acts::BinUtility( nBins, static_cast(minR), static_cast(maxR), - Acts::open, Acts::BinningValue::binR); + Acts::open, Acts::AxisDirection::AxisR); } if (inputSegmentation.binningData()[0].binvalue == - Acts::BinningValue::binPhi || + Acts::AxisDirection::AxisPhi || inputSegmentation.dimensions() == 2) { unsigned int accessBin = inputSegmentation.dimensions() == 2 ? 1 : 0; @@ -232,7 +232,7 @@ void ActsExamples::DigitizationConfigurator::operator()( inputSegmentation.binningData()[accessBin].step)); outputSegmentation += Acts::BinUtility( nBins, static_cast(minPhi), static_cast(maxPhi), - Acts::open, Acts::BinningValue::binPhi); + Acts::open, Acts::AxisDirection::AxisPhi); } } break; diff --git a/Examples/Algorithms/MaterialMapping/include/ActsExamples/MaterialMapping/MappingMaterialDecorator.hpp b/Examples/Algorithms/MaterialMapping/include/ActsExamples/MaterialMapping/MappingMaterialDecorator.hpp index e61d6e6ba5a..c343fbe58d6 100644 --- a/Examples/Algorithms/MaterialMapping/include/ActsExamples/MaterialMapping/MappingMaterialDecorator.hpp +++ b/Examples/Algorithms/MaterialMapping/include/ActsExamples/MaterialMapping/MappingMaterialDecorator.hpp @@ -202,11 +202,11 @@ class MappingMaterialDecorator : public IMaterialDecorator { std::numbers::pi) < Acts::s_epsilon ? Acts::closed : Acts::open, - Acts::BinningValue::binPhi); + Acts::AxisDirection::AxisPhi); bUtility += Acts::BinUtility(binning.second, static_cast(radialBounds->rMin()), static_cast(radialBounds->rMax()), - Acts::open, Acts::BinningValue::binR); + Acts::open, Acts::AxisDirection::AxisR); } if (cylinderBounds != nullptr) { bUtility += Acts::BinUtility( @@ -219,32 +219,32 @@ class MappingMaterialDecorator : public IMaterialDecorator { std::numbers::pi) < Acts::s_epsilon ? Acts::closed : Acts::open, - Acts::BinningValue::binPhi); + Acts::AxisDirection::AxisPhi); bUtility += Acts::BinUtility( binning.second, -1 * cylinderBounds->get(Acts::CylinderBounds::eHalfLengthZ), cylinderBounds->get(Acts::CylinderBounds::eHalfLengthZ), Acts::open, - Acts::BinningValue::binZ); + Acts::AxisDirection::AxisZ); } if (annulusBounds != nullptr) { bUtility += Acts::BinUtility( binning.first, annulusBounds->get(Acts::AnnulusBounds::eMinPhiRel), annulusBounds->get(Acts::AnnulusBounds::eMaxPhiRel), Acts::open, - Acts::BinningValue::binPhi); + Acts::AxisDirection::AxisPhi); bUtility += Acts::BinUtility(binning.second, static_cast(annulusBounds->rMin()), static_cast(annulusBounds->rMax()), - Acts::open, Acts::BinningValue::binR); + Acts::open, Acts::AxisDirection::AxisR); } if (rectangleBounds != nullptr) { bUtility += Acts::BinUtility( binning.first, rectangleBounds->get(Acts::RectangleBounds::eMinX), rectangleBounds->get(Acts::RectangleBounds::eMaxX), Acts::open, - Acts::BinningValue::binX); + Acts::AxisDirection::AxisX); bUtility += Acts::BinUtility( binning.second, rectangleBounds->get(Acts::RectangleBounds::eMinY), rectangleBounds->get(Acts::RectangleBounds::eMaxY), Acts::open, - Acts::BinningValue::binY); + Acts::AxisDirection::AxisY); } if (trapezoidBounds != nullptr) { double halfLengthX = std::max( @@ -253,12 +253,12 @@ class MappingMaterialDecorator : public IMaterialDecorator { bUtility += Acts::BinUtility(binning.first, static_cast(-1 * halfLengthX), static_cast(halfLengthX), - Acts::open, Acts::BinningValue::binX); + Acts::open, Acts::AxisDirection::AxisX); bUtility += Acts::BinUtility( binning.second, -1 * trapezoidBounds->get(Acts::TrapezoidBounds::eHalfLengthY), trapezoidBounds->get(Acts::TrapezoidBounds::eHalfLengthY), - Acts::open, Acts::BinningValue::binY); + Acts::open, Acts::AxisDirection::AxisY); } } return std::make_shared(bUtility); diff --git a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/BuildGenericDetector.hpp b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/BuildGenericDetector.hpp index aea978be935..f5f8f793f90 100644 --- a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/BuildGenericDetector.hpp +++ b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/BuildGenericDetector.hpp @@ -156,20 +156,21 @@ std::unique_ptr buildDetector( // Prepare the proto material - in case it's designed to do so // - cylindrical Acts::BinUtility pCylinderUtility(10, -1, 1, Acts::closed, - Acts::BinningValue::binPhi); + Acts::AxisDirection::AxisPhi); pCylinderUtility += - Acts::BinUtility(10, -1, 1, Acts::open, Acts::BinningValue::binZ); + Acts::BinUtility(10, -1, 1, Acts::open, Acts::AxisDirection::AxisZ); auto pCylinderMaterial = std::make_shared(pCylinderUtility); // - disc - Acts::BinUtility pDiscUtility(10, 0, 1, Acts::open, Acts::BinningValue::binR); + Acts::BinUtility pDiscUtility(10, 0, 1, Acts::open, + Acts::AxisDirection::AxisR); pDiscUtility += - Acts::BinUtility(10, -1, 1, Acts::closed, Acts::BinningValue::binPhi); + Acts::BinUtility(10, -1, 1, Acts::closed, Acts::AxisDirection::AxisPhi); auto pDiscMaterial = std::make_shared(pDiscUtility); // - plane Acts::BinUtility pPlaneUtility(1, -1, 1, Acts::open, - Acts::BinningValue::binX); + Acts::AxisDirection::AxisX); auto pPlaneMaterial = std::make_shared(pPlaneUtility); diff --git a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/ProtoLayerCreatorT.hpp b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/ProtoLayerCreatorT.hpp index ae8357a2a1b..9eca8f20de5 100644 --- a/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/ProtoLayerCreatorT.hpp +++ b/Examples/Detectors/GenericDetector/include/ActsExamples/GenericDetector/ProtoLayerCreatorT.hpp @@ -326,10 +326,10 @@ ProtoLayerCreatorT::centralProtoLayers( // create the surface array - it will also fill the accessible binmember // cache if available Acts::ProtoLayer pl(gctx, sVector); - pl.envelope[Acts::BinningValue::binR] = {m_cfg.approachSurfaceEnvelope, - m_cfg.approachSurfaceEnvelope}; - pl.envelope[Acts::BinningValue::binZ] = {layerEnvelopeCoverZ, - layerEnvelopeCoverZ}; + pl.envelope[Acts::AxisDirection::AxisR] = {m_cfg.approachSurfaceEnvelope, + m_cfg.approachSurfaceEnvelope}; + pl.envelope[Acts::AxisDirection::AxisZ] = {layerEnvelopeCoverZ, + layerEnvelopeCoverZ}; // Record the proto layer and the surfaces for the later layer building ProtoLayerSurfaces pls{std::move(pl), sVector, phiBins, zBins}; @@ -512,9 +512,10 @@ ProtoLayerCreatorT::createProtoLayers( } // create the layers with the surface arrays Acts::ProtoLayer ple(gctx, esVector); - ple.envelope[Acts::BinningValue::binR] = {layerEnvelopeR, layerEnvelopeR}; - ple.envelope[Acts::BinningValue::binZ] = {m_cfg.approachSurfaceEnvelope, - m_cfg.approachSurfaceEnvelope}; + ple.envelope[Acts::AxisDirection::AxisR] = {layerEnvelopeR, + layerEnvelopeR}; + ple.envelope[Acts::AxisDirection::AxisZ] = { + m_cfg.approachSurfaceEnvelope, m_cfg.approachSurfaceEnvelope}; // push it into the layer vector ProtoLayerSurfaces ples{std::move(ple), esVector, layerBinsR, diff --git a/Examples/Detectors/MagneticField/include/ActsExamples/MagneticField/MagneticField.hpp b/Examples/Detectors/MagneticField/include/ActsExamples/MagneticField/MagneticField.hpp index e694f0fdd35..9e1997e97a2 100644 --- a/Examples/Detectors/MagneticField/include/ActsExamples/MagneticField/MagneticField.hpp +++ b/Examples/Detectors/MagneticField/include/ActsExamples/MagneticField/MagneticField.hpp @@ -14,7 +14,7 @@ #include "Acts/MagneticField/MagneticFieldProvider.hpp" #include "Acts/MagneticField/NullBField.hpp" #include "Acts/Utilities/Axis.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Grid.hpp" #include "Acts/Utilities/Result.hpp" #include "Acts/Utilities/detail/grid_helper.hpp" diff --git a/Examples/Detectors/TGeoDetector/src/TGeoDetector.cpp b/Examples/Detectors/TGeoDetector/src/TGeoDetector.cpp index 884cfc8345d..4b6c2982fe3 100644 --- a/Examples/Detectors/TGeoDetector/src/TGeoDetector.cpp +++ b/Examples/Detectors/TGeoDetector/src/TGeoDetector.cpp @@ -63,14 +63,14 @@ std::vector makeLayerBuilderConfigs( // configure surface autobinning std::vector> binTolerances( - Acts::numBinningValues(), {0., 0.}); - binTolerances[toUnderlying(Acts::BinningValue::binR)] = { + Acts::numAxisDirections(), {0., 0.}); + binTolerances[toUnderlying(Acts::AxisDirection::AxisR)] = { volume.binToleranceR.lower.value_or(0.), volume.binToleranceR.upper.value_or(0.)}; - binTolerances[toUnderlying(Acts::BinningValue::binZ)] = { + binTolerances[toUnderlying(Acts::AxisDirection::AxisZ)] = { volume.binToleranceZ.lower.value_or(0.), volume.binToleranceZ.upper.value_or(0.)}; - binTolerances[toUnderlying(Acts::BinningValue::binPhi)] = { + binTolerances[toUnderlying(Acts::AxisDirection::AxisPhi)] = { volume.binTolerancePhi.lower.value_or(0.), volume.binTolerancePhi.upper.value_or(0.)}; @@ -101,18 +101,18 @@ std::vector makeLayerBuilderConfigs( auto zMin = zR.lower.value_or(-std::numeric_limits::max()); auto zMax = zR.upper.value_or(std::numeric_limits::max()); lConfig.parseRanges = { - {Acts::BinningValue::binR, {rMin, rMax}}, - {Acts::BinningValue::binZ, {zMin, zMax}}, + {Acts::AxisDirection::AxisR, {rMin, rMax}}, + {Acts::AxisDirection::AxisZ, {zMin, zMax}}, }; // Fill the layer splitting parameters in r/z auto str = volume.splitTolR.at(ncp); auto stz = volume.splitTolZ.at(ncp); if (0 < str) { - lConfig.splitConfigs.emplace_back(Acts::BinningValue::binR, str); + lConfig.splitConfigs.emplace_back(Acts::AxisDirection::AxisR, str); } if (0 < stz) { - lConfig.splitConfigs.emplace_back(Acts::BinningValue::binZ, stz); + lConfig.splitConfigs.emplace_back(Acts::AxisDirection::AxisZ, stz); } lConfig.binning0 = volume.binning0.at(ncp); lConfig.binning1 = volume.binning1.at(ncp); @@ -284,7 +284,7 @@ std::shared_ptr buildTGeoDetector( -> void { for (const auto& lcfg : lConfigs) { for (const auto& scfg : lcfg.splitConfigs) { - if (scfg.first == Acts::BinningValue::binR && scfg.second > 0.) { + if (scfg.first == Acts::AxisDirection::AxisR && scfg.second > 0.) { volumeConfig.ringTolerance = std::max(volumeConfig.ringTolerance, scfg.second); volumeConfig.checkRingLayout = true; diff --git a/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/BuildTelescopeDetector.hpp b/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/BuildTelescopeDetector.hpp index 6e3b4e31cdf..f79621bea6f 100644 --- a/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/BuildTelescopeDetector.hpp +++ b/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/BuildTelescopeDetector.hpp @@ -9,7 +9,7 @@ #pragma once #include "Acts/Geometry/TrackingGeometry.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include #include @@ -51,6 +51,6 @@ std::unique_ptr buildTelescopeDetector( const std::vector& stereoAngles, const std::array& offsets, const std::array& bounds, double thickness, TelescopeSurfaceType surfaceType, - Acts::BinningValue binValue = Acts::BinningValue::binZ); + Acts::AxisDirection binValue = Acts::AxisDirection::AxisZ); } // namespace ActsExamples diff --git a/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/TelescopeDetector.hpp b/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/TelescopeDetector.hpp index 17145d4d301..679e3bb066f 100644 --- a/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/TelescopeDetector.hpp +++ b/Examples/Detectors/TelescopeDetector/include/ActsExamples/TelescopeDetector/TelescopeDetector.hpp @@ -9,6 +9,7 @@ #pragma once #include "Acts/Definitions/Units.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include "ActsExamples/DetectorCommons/Detector.hpp" diff --git a/Examples/Detectors/TelescopeDetector/src/BuildTelescopeDetector.cpp b/Examples/Detectors/TelescopeDetector/src/BuildTelescopeDetector.cpp index d436d577235..2232867e6d8 100644 --- a/Examples/Detectors/TelescopeDetector/src/BuildTelescopeDetector.cpp +++ b/Examples/Detectors/TelescopeDetector/src/BuildTelescopeDetector.cpp @@ -44,7 +44,7 @@ ActsExamples::buildTelescopeDetector( const std::vector& stereoAngles, const std::array& offsets, const std::array& bounds, double thickness, TelescopeSurfaceType surfaceType, - Acts::BinningValue binValue) { + Acts::AxisDirection binValue) { using namespace Acts::UnitLiterals; // The rectangle bounds for plane surface @@ -62,14 +62,14 @@ ActsExamples::buildTelescopeDetector( std::make_shared(matProp); // Construct the rotation - // This assumes the binValue is binX, binY or binZ. No reset is necessary in - // case of binZ + // This assumes the direction is AxisX, AxisY or AxisZ. No reset is necessary + // in case of AxisZ Acts::RotationMatrix3 rotation = Acts::RotationMatrix3::Identity(); - if (binValue == Acts::BinningValue::binX) { + if (binValue == Acts::AxisDirection::AxisX) { rotation.col(0) = Acts::Vector3(0, 0, -1); rotation.col(1) = Acts::Vector3(0, 1, 0); rotation.col(2) = Acts::Vector3(1, 0, 0); - } else if (binValue == Acts::BinningValue::binY) { + } else if (binValue == Acts::AxisDirection::AxisY) { rotation.col(0) = Acts::Vector3(1, 0, 0); rotation.col(1) = Acts::Vector3(0, 0, -1); rotation.col(2) = Acts::Vector3(0, 1, 0); diff --git a/Examples/Detectors/TelescopeDetector/src/TelescopeDetector.cpp b/Examples/Detectors/TelescopeDetector/src/TelescopeDetector.cpp index 414658204b8..a3ccfb34cfd 100644 --- a/Examples/Detectors/TelescopeDetector/src/TelescopeDetector.cpp +++ b/Examples/Detectors/TelescopeDetector/src/TelescopeDetector.cpp @@ -44,7 +44,7 @@ TelescopeDetector::TelescopeDetector(const Config& cfg) m_nominalGeometryContext, m_detectorStore, m_cfg.positions, m_cfg.stereos, m_cfg.offsets, m_cfg.bounds, m_cfg.thickness, static_cast(m_cfg.surfaceType), - static_cast(m_cfg.binValue)); + static_cast(m_cfg.binValue)); } } // namespace ActsExamples diff --git a/Examples/Detectors/TelescopeDetector/src/TelescopeG4DetectorConstruction.cpp b/Examples/Detectors/TelescopeDetector/src/TelescopeG4DetectorConstruction.cpp index 2566c069f61..157204be9df 100644 --- a/Examples/Detectors/TelescopeDetector/src/TelescopeG4DetectorConstruction.cpp +++ b/Examples/Detectors/TelescopeDetector/src/TelescopeG4DetectorConstruction.cpp @@ -65,14 +65,14 @@ G4VPhysicalVolume* TelescopeG4DetectorConstruction::Construct() { new G4Material("Silicon", 14, 28.0855 * g / mole, 2.329 * g / cm3); // Construct the rotation - // This assumes the binValue is BinningValue::binX, BinningValue::binY or - // BinningValue::binZ. No reset is necessary in case of BinningValue::binZ + // This assumes the binValue is AxisDirection::AxisX, AxisDirection::AxisY or + // AxisDirection::AxisZ. No reset is necessary in case of AxisDirection::AxisZ G4RotationMatrix* rotation = nullptr; - if (static_cast(m_cfg.binValue) == - Acts::BinningValue::binX) { + if (static_cast(m_cfg.binValue) == + Acts::AxisDirection::AxisX) { rotation = new G4RotationMatrix({0, 0, 1}, {0, 1, 0}, {-1, 0, 0}); - } else if (static_cast(m_cfg.binValue) == - Acts::BinningValue::binY) { + } else if (static_cast(m_cfg.binValue) == + Acts::AxisDirection::AxisY) { rotation = new G4RotationMatrix({1, 0, 0}, {0, 0, 1}, {0, -1, 0}); } diff --git a/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialDecorator.hpp b/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialDecorator.hpp index 0cc10482c9e..7397a2ae255 100644 --- a/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialDecorator.hpp +++ b/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialDecorator.hpp @@ -64,7 +64,7 @@ class RootMaterialDecorator : public Acts::IMaterialDecorator { std::string sentag = "_sen"; /// The bin number tag std::string ntag = "n"; - /// The value tag -> binning values: binZ, binR, binPhi, etc. + /// The value tag -> binning values: AxisZ, AxisR, AxisPhi, etc. std::string vtag = "v"; /// The option tag -> binning options: open, closed std::string otag = "o"; diff --git a/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialWriter.hpp b/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialWriter.hpp index ec6142e65f9..a4c4a4675ee 100644 --- a/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialWriter.hpp +++ b/Examples/Io/Root/include/ActsExamples/Io/Root/RootMaterialWriter.hpp @@ -85,7 +85,7 @@ class RootMaterialWriter : public IMaterialWriter { std::string sentag = "_sen"; /// The bin number tag std::string ntag = "n"; - /// The value tag -> binning values: binZ, binR, binPhi, etc. + /// The value tag -> binning values: AxisZ, AxisR, AxisPhi, etc. std::string vtag = "v"; /// The option tag -> binning options: open, closed std::string otag = "o"; diff --git a/Examples/Io/Root/src/RootMaterialDecorator.cpp b/Examples/Io/Root/src/RootMaterialDecorator.cpp index 37f396bb86c..79077fe72fd 100644 --- a/Examples/Io/Root/src/RootMaterialDecorator.cpp +++ b/Examples/Io/Root/src/RootMaterialDecorator.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -183,10 +184,8 @@ ActsExamples::RootMaterialDecorator::RootMaterialDecorator( Acts::BinUtility bUtility; for (int ib = 1; ib < n->GetNbinsX() + 1; ++ib) { std::size_t nbins = static_cast(n->GetBinContent(ib)); - Acts::BinningValue val = - static_cast(v->GetBinContent(ib)); - Acts::BinningOption opt = - static_cast(o->GetBinContent(ib)); + auto val = static_cast(v->GetBinContent(ib)); + auto opt = static_cast(o->GetBinContent(ib)); float rmin = min->GetBinContent(ib); float rmax = max->GetBinContent(ib); bUtility += Acts::BinUtility(nbins, rmin, rmax, opt, val); @@ -268,8 +267,8 @@ ActsExamples::RootMaterialDecorator::RootMaterialDecorator( Acts::BinUtility bUtility; for (int ib = 1; ib < dim + 1; ++ib) { std::size_t nbins = static_cast(n->GetBinContent(ib)); - Acts::BinningValue val = - static_cast(v->GetBinContent(ib)); + Acts::AxisDirection val = + static_cast(v->GetBinContent(ib)); Acts::BinningOption opt = static_cast(o->GetBinContent(ib)); float rmin = min->GetBinContent(ib); diff --git a/Examples/Python/src/Base.cpp b/Examples/Python/src/Base.cpp index cc8a5f67dc1..1dde957c04b 100644 --- a/Examples/Python/src/Base.cpp +++ b/Examples/Python/src/Base.cpp @@ -13,7 +13,7 @@ #include "Acts/MagneticField/MagneticFieldContext.hpp" #include "Acts/Plugins/Python/Utilities.hpp" #include "Acts/Utilities/Any.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinningData.hpp" #include "Acts/Utilities/CalibrationContext.hpp" #include "Acts/Utilities/Logger.hpp" @@ -359,16 +359,16 @@ void addAlgebra(Acts::Python::Context& ctx) { void addBinning(Context& ctx) { auto& m = ctx.get("main"); - auto binningValue = py::enum_(m, "BinningValue") - .value("binX", Acts::BinningValue::binX) - .value("binY", Acts::BinningValue::binY) - .value("binZ", Acts::BinningValue::binZ) - .value("binR", Acts::BinningValue::binR) - .value("binPhi", Acts::BinningValue::binPhi) - .value("binRPhi", Acts::BinningValue::binRPhi) - .value("binH", Acts::BinningValue::binH) - .value("binEta", Acts::BinningValue::binEta) - .value("binMag", Acts::BinningValue::binMag); + auto binningValue = py::enum_(m, "AxisDirection") + .value("AxisX", Acts::AxisDirection::AxisX) + .value("AxisY", Acts::AxisDirection::AxisY) + .value("AxisZ", Acts::AxisDirection::AxisZ) + .value("AxisR", Acts::AxisDirection::AxisR) + .value("AxisPhi", Acts::AxisDirection::AxisPhi) + .value("AxisRPhi", Acts::AxisDirection::AxisRPhi) + .value("AxisTheta", Acts::AxisDirection::AxisTheta) + .value("AxisEta", Acts::AxisDirection::AxisEta) + .value("AxisMag", Acts::AxisDirection::AxisMag); auto boundaryType = py::enum_(m, "AxisBoundaryType") .value("Bound", Acts::AxisBoundaryType::Bound) diff --git a/Examples/Python/src/Blueprint.cpp b/Examples/Python/src/Blueprint.cpp index f5ce4ddc3d0..c0ebdd4f5e8 100644 --- a/Examples/Python/src/Blueprint.cpp +++ b/Examples/Python/src/Blueprint.cpp @@ -17,7 +17,7 @@ #include "Acts/Geometry/StaticBlueprintNode.hpp" #include "Acts/Navigation/NavigationStream.hpp" #include "Acts/Plugins/Python/Utilities.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Logger.hpp" #include @@ -338,7 +338,7 @@ void addBlueprint(Context& ctx) { py::class_>( m, "CylinderContainerBlueprintNode") - .def(py::init(), py::arg("name"), py::arg("direction"), @@ -362,7 +362,8 @@ void addBlueprint(Context& ctx) { addNodeMethods( "CylinderContainer", - [](BlueprintNode& self, const std::string& name, BinningValue direction) { + [](BlueprintNode& self, const std::string& name, + AxisDirection direction) { auto cylinder = std::make_shared(name, direction); self.addChild(cylinder); diff --git a/Examples/Python/src/Geometry.cpp b/Examples/Python/src/Geometry.cpp index e9bbbfa350e..ec15814e940 100644 --- a/Examples/Python/src/Geometry.cpp +++ b/Examples/Python/src/Geometry.cpp @@ -38,7 +38,7 @@ #include "Acts/Plugins/Python/Utilities.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Surfaces/SurfaceArray.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Helpers.hpp" #include "Acts/Utilities/RangeXD.hpp" #include "Acts/Visualization/ViewConfig.hpp" @@ -242,33 +242,33 @@ void addGeometry(Context& ctx) { .def(py::init<>()) .def(py::init()) .def(py::init([](Envelope x, Envelope y, Envelope z, Envelope r, - Envelope phi, Envelope rPhi, Envelope h, Envelope eta, - Envelope mag) { + Envelope phi, Envelope rPhi, Envelope theta, + Envelope eta, Envelope mag) { return ExtentEnvelope({.x = x, .y = y, .z = z, .r = r, .phi = phi, .rPhi = rPhi, - .h = h, + .theta = theta, .eta = eta, .mag = mag}); }), py::arg("x") = zeroEnvelope, py::arg("y") = zeroEnvelope, py::arg("z") = zeroEnvelope, py::arg("r") = zeroEnvelope, py::arg("phi") = zeroEnvelope, py::arg("rPhi") = zeroEnvelope, - py::arg("h") = zeroEnvelope, py::arg("eta") = zeroEnvelope, + py::arg("theta") = zeroEnvelope, py::arg("eta") = zeroEnvelope, py::arg("mag") = zeroEnvelope) .def_static("Zero", &ExtentEnvelope::Zero) .def("__getitem__", [](ExtentEnvelope& self, - BinningValue bValue) { return self[bValue]; }) - .def("__setitem__", [](ExtentEnvelope& self, BinningValue bValue, + AxisDirection bValue) { return self[bValue]; }) + .def("__setitem__", [](ExtentEnvelope& self, AxisDirection bValue, const Envelope& value) { self[bValue] = value; }) .def("__str__", [](const ExtentEnvelope& self) { - std::array values; + std::array values; std::stringstream ss; - for (BinningValue val : allBinningValues()) { + for (AxisDirection val : allAxisDirections()) { ss << val << "=(" << self[val][0] << ", " << self[val][1] << ")"; values.at(toUnderlying(val)) = ss.str(); ss.str(""); @@ -286,7 +286,7 @@ void addGeometry(Context& ctx) { py::arg("envelope") = ExtentEnvelope::Zero()) .def("range", [](const Acts::Extent& self, - Acts::BinningValue bval) -> std::array { + Acts::AxisDirection bval) -> std::array { return {self.min(bval), self.max(bval)}; }) .def("__str__", &Extent::toString); @@ -346,8 +346,8 @@ void addExperimentalGeometry(Context& ctx) { extent.extend(volume->extent(gctx)); } auto bounds = std::make_shared( - 0., extent.max(Acts::BinningValue::binR), - extent.max(Acts::BinningValue::binZ)); + 0., extent.max(Acts::AxisDirection::AxisR), + extent.max(Acts::AxisDirection::AxisZ)); return std::make_shared(Transform3::Identity(), std::move(bounds)); @@ -387,13 +387,13 @@ void addExperimentalGeometry(Context& ctx) { { // Be able to construct a proto binning py::class_(m, "ProtoBinning") - .def(py::init&, std::size_t>(), "bValue"_a, "bType"_a, "e"_a, "exp"_a = 0u) - .def(py::init(), "bValue"_a, "bType"_a, "minE"_a, "maxE"_a, "nbins"_a, "exp"_a = 0u) - .def(py::init(), "bValue"_a, "bType"_a, "nbins"_a, "exp"_a = 0u); } @@ -457,7 +457,7 @@ void addExperimentalGeometry(Context& ctx) { m, "KdtSurfacesDim1Bin100") .def(py::init>&, - const std::array&>()) + const std::array&>()) .def("surfaces", py::overload_cast( &KdtSurfacesDim1Bin100::surfaces, py::const_)); @@ -487,7 +487,7 @@ void addExperimentalGeometry(Context& ctx) { m, "KdtSurfacesDim2Bin100") .def(py::init>&, - const std::array&>()) + const std::array&>()) .def("surfaces", py::overload_cast( &KdtSurfacesDim2Bin100::surfaces, py::const_)); @@ -619,7 +619,7 @@ void addExperimentalGeometry(Context& ctx) { std::shared_ptr< Acts::Experimental::IndexedRootVolumeFinderBuilder>>( m, "IndexedRootVolumeFinderBuilder") - .def(py::init>()); + .def(py::init>()); } { diff --git a/Examples/Python/tests/test_blueprint.py b/Examples/Python/tests/test_blueprint.py index 8471bf52105..629753a8a49 100644 --- a/Examples/Python/tests/test_blueprint.py +++ b/Examples/Python/tests/test_blueprint.py @@ -6,7 +6,7 @@ m = acts.UnitConstants.m degree = acts.UnitConstants.degree -bv = acts.BinningValue +bv = acts.AxisDirection gctx = acts.GeometryContext() logLevel = acts.logging.VERBOSE @@ -25,7 +25,7 @@ def write(root: acts.BlueprintNode, stage: int): root = acts.Blueprint(envelope=acts.ExtentEnvelope(r=[10 * mm, 10 * mm])) assert root.depth == 0 - barrel = root.addCylinderContainer("Barrel", direction=bv.binR) + barrel = root.addCylinderContainer("Barrel", direction=bv.AxisR) assert barrel.depth == 1 @@ -42,11 +42,11 @@ def write(root: acts.BlueprintNode, stage: int): assert barrel.depth == 0 - det = root.addCylinderContainer("Detector", direction=bv.binZ) + det = root.addCylinderContainer("Detector", direction=bv.AxisZ) assert det.depth == 1 - with det.CylinderContainer("nEC", direction=bv.binZ) as ec: + with det.CylinderContainer("nEC", direction=bv.AxisZ) as ec: assert ec.depth == 2 z = -200 for i in range(1, 3): @@ -65,7 +65,7 @@ def write(root: acts.BlueprintNode, stage: int): write(det, 3) - with det.CylinderContainer("pEC", direction=bv.binZ) as ec: + with det.CylinderContainer("pEC", direction=bv.AxisZ) as ec: assert ec.depth == 2 z = 200 for i in range(1, 3): diff --git a/Examples/Scripts/Python/blueprint.py b/Examples/Scripts/Python/blueprint.py index 0dca3a6629f..386a44076b1 100755 --- a/Examples/Scripts/Python/blueprint.py +++ b/Examples/Scripts/Python/blueprint.py @@ -10,7 +10,7 @@ root = acts.Blueprint(envelope=acts.ExtentEnvelope(r=[10 * mm, 10 * mm])) -pixel = root.addCylinderContainer(direction=acts.BinningValue.binZ, name="Pixel") +pixel = root.addCylinderContainer(direction=acts.AxisDirection.AxisZ, name="Pixel") print(repr(pixel)) trf = acts.Transform3.Identity() * acts.Translation3(acts.Vector3(0, 0, 0 * mm)) @@ -19,7 +19,7 @@ if True: barrel = acts.CylinderContainerBlueprintNode( "PixelBarrel", - acts.BinningValue.binR, + acts.AxisDirection.AxisR, attachmentStrategy=acts.CylinderVolumeStack.AttachmentStrategy.Gap, resizeStrategy=acts.CylinderVolumeStack.ResizeStrategy.Gap, ) @@ -37,7 +37,7 @@ if True: - with pixel.CylinderContainer("PixelPosEndcap", acts.BinningValue.binZ) as ec: + with pixel.CylinderContainer("PixelPosEndcap", acts.AxisDirection.AxisZ) as ec: print("Positive Endcap") ec.attachmentStrategy = acts.CylinderVolumeStack.AttachmentStrategy.Gap @@ -60,7 +60,7 @@ if True: with pixel.Material() as mat: with mat.CylinderContainer( - direction=acts.BinningValue.binZ, name="PixelNegEndcap" + direction=acts.AxisDirection.AxisZ, name="PixelNegEndcap" ) as ec: ec.attachmentStrategy = acts.CylinderVolumeStack.AttachmentStrategy.Gap diff --git a/Examples/Scripts/Python/detector_creation.py b/Examples/Scripts/Python/detector_creation.py index 071520b85fc..8c90078d8d5 100644 --- a/Examples/Scripts/Python/detector_creation.py +++ b/Examples/Scripts/Python/detector_creation.py @@ -70,7 +70,7 @@ volumeOptions.surfaceOptions = surfaceOptions # Transverse view - xyRange = acts.Extent([[acts.BinningValue.binZ, [-50, 50]]]) + xyRange = acts.Extent([[acts.AxisDirection.AxisZ, [-50, 50]]]) xyView = acts.svg.drawDetector( geoContext, detector, @@ -83,7 +83,7 @@ xyFile.write("odd_xy.svg") # Longitudinal view - zrRange = acts.Extent([[acts.BinningValue.binPhi, [-0.1, 0.1]]]) + zrRange = acts.Extent([[acts.AxisDirection.AxisPhi, [-0.1, 0.1]]]) zrView = acts.svg.drawDetector( geoContext, detector, diff --git a/Examples/Scripts/Python/material_mapping_core.py b/Examples/Scripts/Python/material_mapping_core.py index e5a6e865246..f01ece5cb8f 100644 --- a/Examples/Scripts/Python/material_mapping_core.py +++ b/Examples/Scripts/Python/material_mapping_core.py @@ -231,8 +231,8 @@ def runMaterialMapping(surfaces, inputFile, outputFile, outputMap, loglevel): gmBlueprintConfig = gm.GeoModelBlueprintCreater.Config() gmBlueprintConfig.detectorSurfaces = gmSurfaces gmBlueprintConfig.kdtBinning = [ - acts.BinningValue.binZ, - acts.BinningValue.binR, + acts.AxisDirection.AxisZ, + acts.AxisDirection.AxisR, ] gmBlueprintOptions = gm.GeoModelBlueprintCreater.Options() diff --git a/Examples/Scripts/Python/material_validation_core.py b/Examples/Scripts/Python/material_validation_core.py index 1d81054c091..305c1bfd862 100644 --- a/Examples/Scripts/Python/material_validation_core.py +++ b/Examples/Scripts/Python/material_validation_core.py @@ -171,8 +171,8 @@ def runMaterialValidation(s, ntracks, surfaces, outputFile, seed, loglevel): gmBlueprintConfig = gm.GeoModelBlueprintCreater.Config() gmBlueprintConfig.detectorSurfaces = gmSurfaces gmBlueprintConfig.kdtBinning = [ - acts.BinningValue.binZ, - acts.BinningValue.binR, + acts.AxisDirection.AxisZ, + acts.AxisDirection.AxisR, ] gmBlueprintOptions = gm.GeoModelBlueprintCreater.Options() diff --git a/Fatras/src/Digitization/Segmentizer.cpp b/Fatras/src/Digitization/Segmentizer.cpp index 27dfb903efc..72b452ca802 100644 --- a/Fatras/src/Digitization/Segmentizer.cpp +++ b/Fatras/src/Digitization/Segmentizer.cpp @@ -117,7 +117,7 @@ ActsFatras::Segmentizer::segments(const Acts::GeometryContext& geoCtx, // The phi boundaries if (bstart[1] != bend[1]) { double referenceR = - surface.binningPositionValue(geoCtx, Acts::BinningValue::binR); + surface.referencePositionValue(geoCtx, Acts::AxisDirection::AxisR); Acts::Vector2 origin = {0., 0.}; const auto& phiboundaries = segmentation.binningData()[1].boundaries(); std::vector phibbounds = { diff --git a/Plugins/ActSVG/include/Acts/Plugins/ActSVG/GridSvgConverter.hpp b/Plugins/ActSVG/include/Acts/Plugins/ActSVG/GridSvgConverter.hpp index c81698de5c2..1efb229797b 100644 --- a/Plugins/ActSVG/include/Acts/Plugins/ActSVG/GridSvgConverter.hpp +++ b/Plugins/ActSVG/include/Acts/Plugins/ActSVG/GridSvgConverter.hpp @@ -31,7 +31,7 @@ using ProtoGrid = actsvg::proto::grid; namespace GridConverter { // An optional range and binning value -using AxisBound = std::tuple, BinningValue>; +using AxisBound = std::tuple, AxisDirection>; /// Nested Options struct struct Options { @@ -43,19 +43,19 @@ struct Options { /// Convert an ACTS grid into a actsvg protogrid, it currently works with /// -/// - 1D: [ binX ] , [ binY ], [ binR ] , [ binPhi ] -/// - 2D: [ binX, binY ], [ binZ, binPhi ], [ binR, binPhi ] +/// - 1D: [ AxisX ] , [ AxisY ], [ AxisR ] , [ AxisPhi ] +/// - 2D: [ AxisX, AxisY ], [ AxisZ, AxisPhi ], [ AxisR, AxisPhi ] /// /// @tparam grid_type is the type of the grid to be converted /// /// @param grid the grid to be converted -/// @param bValues the binning values identifying the axes +/// @param aDirs the axis directions of the grid /// @param cOptions the conversion options /// /// @return an ACTSVG proto grid for displaying template ProtoGrid convert(const grid_type& grid, - const std::array& bValues, + const std::array& aDirs, const GridConverter::Options& cOptions) { // The return object ProtoGrid pGrid; @@ -70,7 +70,7 @@ ProtoGrid convert(const grid_type& grid, // 1D case (more to be filled in later) if constexpr (grid_type::DIM == 1u) { - if (bValues[0u] == BinningValue::binPhi && + if (aDirs[0u] == AxisDirection::AxisPhi && axes[0]->getBoundaryType() == AxisBoundaryType::Closed) { // swap needed edges1 = axes[0]->getBinEdges(); @@ -78,7 +78,7 @@ ProtoGrid convert(const grid_type& grid, } if (cOptions.optionalBound.has_value()) { auto [boundRange, boundValue] = cOptions.optionalBound.value(); - if (boundValue == BinningValue::binR) { + if (boundValue == AxisDirection::AxisR) { // good - no swap needed edges0 = {boundRange[0u], boundRange[1u]}; } @@ -89,26 +89,26 @@ ProtoGrid convert(const grid_type& grid, // Assign edges0 = axes[0]->getBinEdges(); edges1 = axes[1]->getBinEdges(); - if (bValues[0] == BinningValue::binPhi && - bValues[1] == BinningValue::binZ) { + if (aDirs[0] == AxisDirection::AxisPhi && + aDirs[1] == AxisDirection::AxisZ) { // swap needed std::swap(edges0, edges1); pGrid._type = actsvg::proto::grid::e_z_phi; - } else if (bValues[0] == BinningValue::binPhi && - bValues[1] == BinningValue::binR) { + } else if (aDirs[0] == AxisDirection::AxisPhi && + aDirs[1] == AxisDirection::AxisR) { // swap needed std::swap(edges0, edges1); pGrid._type = actsvg::proto::grid::e_r_phi; - } else if (bValues[0] == BinningValue::binZ && - bValues[1] == BinningValue::binPhi) { + } else if (aDirs[0] == AxisDirection::AxisZ && + aDirs[1] == AxisDirection::AxisPhi) { // good - no swap needed pGrid._type = actsvg::proto::grid::e_z_phi; - } else if (bValues[0] == BinningValue::binR && - bValues[1] == BinningValue::binPhi) { + } else if (aDirs[0] == AxisDirection::AxisR && + aDirs[1] == AxisDirection::AxisPhi) { // good - no swap needed pGrid._type = actsvg::proto::grid::e_r_phi; - } else if (bValues[0] == BinningValue::binX && - bValues[1] == BinningValue::binY) { + } else if (aDirs[0] == AxisDirection::AxisX && + aDirs[1] == AxisDirection::AxisY) { // good - no swap needed pGrid._type = actsvg::proto::grid::e_x_y; } diff --git a/Plugins/ActSVG/include/Acts/Plugins/ActSVG/IndexedSurfacesSvgConverter.hpp b/Plugins/ActSVG/include/Acts/Plugins/ActSVG/IndexedSurfacesSvgConverter.hpp index b90803b07a5..b22a97f49e3 100644 --- a/Plugins/ActSVG/include/Acts/Plugins/ActSVG/IndexedSurfacesSvgConverter.hpp +++ b/Plugins/ActSVG/include/Acts/Plugins/ActSVG/IndexedSurfacesSvgConverter.hpp @@ -72,10 +72,10 @@ ProtoIndexedSurfaceGrid convertImpl(const GeometryContext& gctx, // - for 1D phi // - for 2D z-phi or phi-z bool estimateR = (index_grid::grid_type::DIM == 1 && - indexGrid.casts[0u] == BinningValue::binPhi) || + indexGrid.casts[0u] == AxisDirection::AxisPhi) || (index_grid::grid_type::DIM == 2 && - (indexGrid.casts[0u] == BinningValue::binPhi || - indexGrid.casts[1u] == BinningValue::binPhi)); + (indexGrid.casts[0u] == AxisDirection::AxisPhi || + indexGrid.casts[1u] == AxisDirection::AxisPhi)); for (auto [is, s] : enumerate(surfaces)) { // Create the surface converter options @@ -91,9 +91,9 @@ ProtoIndexedSurfaceGrid convertImpl(const GeometryContext& gctx, auto sExtent = s->polyhedronRepresentation(gctx, 4u).extent(); if constexpr (index_grid::grid_type::DIM == 2u) { pSurface._radii[0u] = - static_cast(sExtent.medium(BinningValue::binR)); + static_cast(sExtent.medium(AxisDirection::AxisR)); } - constrain.extend(sExtent, {BinningValue::binR}); + constrain.extend(sExtent, {AxisDirection::AxisR}); } // Add center info std::string centerInfo = " - center = ("; @@ -113,10 +113,10 @@ ProtoIndexedSurfaceGrid convertImpl(const GeometryContext& gctx, // Adjust the grid options if constexpr (index_grid::grid_type::DIM == 1u) { - if (indexGrid.casts[0u] == BinningValue::binPhi) { - auto estRangeR = constrain.range(BinningValue::binR); + if (indexGrid.casts[0u] == AxisDirection::AxisPhi) { + auto estRangeR = constrain.range(AxisDirection::AxisR); std::array rRange = {estRangeR.min(), estRangeR.max()}; - gridOptions.optionalBound = {rRange, BinningValue::binR}; + gridOptions.optionalBound = {rRange, AxisDirection::AxisR}; } } @@ -165,7 +165,7 @@ ProtoIndexedSurfaceGrid convertImpl(const GeometryContext& gctx, pGrid._bin_ids.push_back(binInfo); if (estimateR) { pGrid._reference_r = - static_cast(constrain.medium(BinningValue::binR)); + static_cast(constrain.medium(AxisDirection::AxisR)); } } } diff --git a/Plugins/ActSVG/src/LayerSvgConverter.cpp b/Plugins/ActSVG/src/LayerSvgConverter.cpp index 1de781d509e..ca999ade6a4 100644 --- a/Plugins/ActSVG/src/LayerSvgConverter.cpp +++ b/Plugins/ActSVG/src/LayerSvgConverter.cpp @@ -86,7 +86,7 @@ std::vector Acts::Svg::LayerConverter::convert( for (const auto& sf : layer.surfaceArray()->surfaces()) { // Surface center const Acts::Vector3 rCenter = - sf->binningPosition(gctx, Acts::BinningValue::binR); + sf->referencePosition(gctx, Acts::AxisDirection::AxisR); const Acts::Vector3 sfCenter = sf->center(gctx); double radius = Acts::VectorHelpers::perp(rCenter); double phi = Acts::VectorHelpers::phi(rCenter); diff --git a/Plugins/ActSVG/src/PortalSvgConverter.cpp b/Plugins/ActSVG/src/PortalSvgConverter.cpp index 1c779d86dd2..56e0d600b92 100644 --- a/Plugins/ActSVG/src/PortalSvgConverter.cpp +++ b/Plugins/ActSVG/src/PortalSvgConverter.cpp @@ -68,22 +68,22 @@ std::vector convertMultiLink( Acts::Vector3 position = refPosition; if constexpr (decltype(multiLink.indexedUpdater)::grid_type::DIM == 1u) { // Get the binning value - Acts::BinningValue bValue = casts[0u]; + Acts::AxisDirection bValue = casts[0u]; // Get the boundaries - take care, they are in local coordinates const auto& boundaries = multiLink.indexedUpdater.grid.axes()[0u]->getBinEdges(); double refC = 0.5 * (boundaries[il + 1u] + boundaries[il]); - if (bValue == Acts::BinningValue::binR) { + if (bValue == Acts::AxisDirection::AxisR) { double phi = Acts::VectorHelpers::phi(refPosition); position = Acts::Vector3(refC * std::cos(phi), refC * std::sin(phi), refPosition.z()); - } else if (bValue == Acts::BinningValue::binZ) { + } else if (bValue == Acts::AxisDirection::AxisZ) { // correct to global refC += surface.transform(gctx).translation().z(); position[2] = refC; - } else if (bValue == Acts::BinningValue::binPhi) { + } else if (bValue == Acts::AxisDirection::AxisPhi) { double r = Acts::VectorHelpers::perp(refPosition); position = Acts::Vector3(r * std::cos(refC), r * std::sin(refC), refPosition.z()); diff --git a/Plugins/ActSVG/src/SurfaceArraySvgConverter.cpp b/Plugins/ActSVG/src/SurfaceArraySvgConverter.cpp index 4b327fe5e08..3166adbb724 100644 --- a/Plugins/ActSVG/src/SurfaceArraySvgConverter.cpp +++ b/Plugins/ActSVG/src/SurfaceArraySvgConverter.cpp @@ -51,29 +51,29 @@ Acts::Svg::SurfaceArrayConverter::convert( }; // Walk through the binning and translate - if (binning[0] == BinningValue::binPhi && - binning[1] == BinningValue::binZ) { + if (binning[0] == AxisDirection::AxisPhi && + binning[1] == AxisDirection::AxisZ) { vType = cylinder; // flip to fit with actsvg convention edges1 = axes[0]->getBinEdges(); edges0 = axes[1]->getBinEdges(); pGrid._type = actsvg::proto::grid::e_z_phi; - } else if (binning[0] == BinningValue::binPhi && - binning[1] == BinningValue::binR) { + } else if (binning[0] == AxisDirection::AxisPhi && + binning[1] == AxisDirection::AxisR) { vType = polar; // flip to fit with actsvg convention edges1 = axes[0]->getBinEdges(); edges0 = axes[1]->getBinEdges(); pGrid._type = actsvg::proto::grid::e_r_phi; - } else if (binning[0] == BinningValue::binZ && - binning[1] == BinningValue::binPhi) { + } else if (binning[0] == AxisDirection::AxisZ && + binning[1] == AxisDirection::AxisPhi) { // good vType = cylinder; edges0 = axes[0]->getBinEdges(); edges1 = axes[1]->getBinEdges(); pGrid._type = actsvg::proto::grid::e_z_phi; - } else if (binning[0] == BinningValue::binR && - binning[1] == BinningValue::binPhi) { + } else if (binning[0] == AxisDirection::AxisR && + binning[1] == AxisDirection::AxisPhi) { // good vType = polar; edges0 = axes[0]->getBinEdges(); diff --git a/Plugins/Covfie/src/FieldConversion.cpp b/Plugins/Covfie/src/FieldConversion.cpp index 7aee611b0fa..92b0168e542 100644 --- a/Plugins/Covfie/src/FieldConversion.cpp +++ b/Plugins/Covfie/src/FieldConversion.cpp @@ -8,10 +8,6 @@ #include "Acts/Plugins/Covfie/FieldConversion.hpp" -#include "Acts/Utilities/Axis.hpp" -#include "Acts/Utilities/AxisFwd.hpp" -#include "Acts/Utilities/Grid.hpp" - #include #include #include diff --git a/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepBinningHelpers.hpp b/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepBinningHelpers.hpp index 6577905bbba..6ea2372780e 100644 --- a/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepBinningHelpers.hpp +++ b/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepBinningHelpers.hpp @@ -12,7 +12,7 @@ #include "Acts/Detector/ProtoBinning.hpp" #include "Acts/Geometry/Extent.hpp" #include "Acts/Plugins/DD4hep/DD4hepConversionHelpers.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinningData.hpp" #include @@ -25,29 +25,30 @@ namespace Acts { -static std::vector> allowedBinnings = { - {"x", BinningValue::binX}, - {"y", BinningValue::binY}, - {"z", BinningValue::binZ}, - {"phi", BinningValue::binPhi}, - {"r", BinningValue::binR}}; +static std::vector> allowedBinnings = { + {"x", AxisDirection::AxisX}, + {"y", AxisDirection::AxisY}, + {"z", AxisDirection::AxisZ}, + {"phi", AxisDirection::AxisPhi}, + {"r", AxisDirection::AxisR}}; /// Helper method to convert the string to binning value /// /// @param binningString /// /// @return a binningValue -inline BinningValue stringToBinningValue(const std::string &binningString) { +inline AxisDirection stringToAxisDirection(const std::string &binningString) { + using enum AxisDirection; if (binningString == "x") { - return BinningValue::binX; + return AxisX; } else if (binningString == "y") { - return BinningValue::binY; + return AxisY; } else if (binningString == "z") { - return BinningValue::binZ; + return AxisZ; } else if (binningString == "phi") { - return BinningValue::binPhi; + return AxisPhi; } else if (binningString == "r") { - return BinningValue::binR; + return AxisR; } else { throw std::invalid_argument("DD4hepBinningHelpers: Binning value " + binningString + " not allowed."); @@ -55,22 +56,22 @@ inline BinningValue stringToBinningValue(const std::string &binningString) { } /// Helper method to cenvert a binning list string to a vector of binning values -/// e.g. "r,z" -> {binR, binZ} +/// e.g. "r,z" -> {AxisR, AxisZ} /// /// @param binningString /// @param del the delimiter for the splitting /// /// @return a vector of binninng values -inline std::vector stringToBinningValues( +inline std::vector stringToAxisDirections( const std::string &binningString, const char &del = ',') { if (binningString.empty()) { return {}; } - std::vector bBinning; + std::vector bBinning; std::stringstream s(binningString); std::string b = ""; while (getline(s, b, del)) { - bBinning.push_back(stringToBinningValue(b)); + bBinning.push_back(stringToAxisDirection(b)); } return bBinning; } diff --git a/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepBlueprintFactory.hpp b/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepBlueprintFactory.hpp index 634a776a29a..d7996d24b1a 100644 --- a/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepBlueprintFactory.hpp +++ b/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepBlueprintFactory.hpp @@ -101,7 +101,7 @@ class DD4hepBlueprintFactory { /// /// @return a tuple of the bounds type, values and binning, auxiliary data std::tuple, - std::vector, std::string> + std::vector, std::string> extractExternals([[maybe_unused]] const GeometryContext& gctx, const dd4hep::DetElement& dd4hepElement, const std::string& baseName, diff --git a/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepDetectorSurfaceFactory.hpp b/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepDetectorSurfaceFactory.hpp index 948608f4d5a..8cff5250363 100644 --- a/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepDetectorSurfaceFactory.hpp +++ b/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepDetectorSurfaceFactory.hpp @@ -70,7 +70,7 @@ class DD4hepDetectorSurfaceFactory { /// Optionally provide an Extent object to measure the passive std::optional pExtent = std::nullopt; /// Optionally provide an Extent constraints to measure the layers - std::vector extentConstraints = {}; + std::vector extentConstraints = {}; /// The approximination of a circle quarter for extent measuring std::size_t nExtentQSegments = 1u; }; diff --git a/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepLayerStructure.hpp b/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepLayerStructure.hpp index a44e4341feb..9cb5a61a005 100644 --- a/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepLayerStructure.hpp +++ b/Plugins/DD4hep/include/Acts/Plugins/DD4hep/DD4hepLayerStructure.hpp @@ -64,7 +64,7 @@ class DD4hepLayerStructure { // The extent structure - optionally std::optional extent = std::nullopt; /// The extent constraints - optionally - std::vector extentConstraints = {}; + std::vector extentConstraints = {}; /// Approximation for the polyhedron binning unsigned int quarterSegments = 1u; /// Patch the binning with the extent if possible diff --git a/Plugins/DD4hep/src/DD4hepBinningHelpers.cpp b/Plugins/DD4hep/src/DD4hepBinningHelpers.cpp index 5fee66d8231..ea1c33e6bd9 100644 --- a/Plugins/DD4hep/src/DD4hepBinningHelpers.cpp +++ b/Plugins/DD4hep/src/DD4hepBinningHelpers.cpp @@ -39,15 +39,15 @@ Acts::DD4hepBinningHelpers::convertBinning( } else { // Equidistant binning double minDefault = - bVal == BinningValue::binPhi ? -std::numbers::pi : 0.; + bVal == AxisDirection::AxisPhi ? -std::numbers::pi : 0.; double maxDefault = - bVal == BinningValue::binPhi ? std::numbers::pi : 0.; + bVal == AxisDirection::AxisPhi ? std::numbers::pi : 0.; auto min = getParamOr(bname + "_" + ab + "_min", dd4hepElement, minDefault); auto max = getParamOr(bname + "_" + ab + "_max", dd4hepElement, maxDefault); // Check for closed phi binning - if (bVal == BinningValue::binPhi && + if (bVal == AxisDirection::AxisPhi && (max - min) > 1.9 * std::numbers::pi) { bType = Acts::AxisBoundaryType::Closed; } @@ -62,7 +62,7 @@ Acts::DD4hepBinningHelpers::convertBinning( bname + "_" + ab + "_b" + std::to_string(ib), dd4hepElement, 0.)); } // Check for closed phi binning - if (bVal == BinningValue::binPhi && + if (bVal == AxisDirection::AxisPhi && (edges.back() - edges.front()) > 1.9 * std::numbers::pi) { bType = Acts::AxisBoundaryType::Closed; } diff --git a/Plugins/DD4hep/src/DD4hepBlueprintFactory.cpp b/Plugins/DD4hep/src/DD4hepBlueprintFactory.cpp index 06ff97153dd..28431f61043 100644 --- a/Plugins/DD4hep/src/DD4hepBlueprintFactory.cpp +++ b/Plugins/DD4hep/src/DD4hepBlueprintFactory.cpp @@ -32,7 +32,7 @@ Acts::Experimental::DD4hepBlueprintFactory::create( // Create the root node std::vector bValues = {0., 150., 1000.}; - std::vector binning = {Acts::BinningValue::binR}; + std::vector binning = {Acts::AxisDirection::AxisR}; auto root = std::make_unique( dd4hepElement.name(), Acts::Transform3::Identity(), Acts::VolumeBounds::eCylinder, bValues, binning); @@ -150,7 +150,7 @@ void Acts::Experimental::DD4hepBlueprintFactory::recursiveParse( } std::tuple, std::vector, std::string> + std::vector, std::vector, std::string> Acts::Experimental::DD4hepBlueprintFactory::extractExternals( [[maybe_unused]] const GeometryContext& gctx, const dd4hep::DetElement& dd4hepElement, const std::string& baseName, @@ -172,17 +172,17 @@ Acts::Experimental::DD4hepBlueprintFactory::extractExternals( // Set as defaults bValues = {0., 0., 0.}; auto parsedExtent = extOpt.value(); - if (parsedExtent.constrains(BinningValue::binR)) { - bValues[0u] = std::floor(parsedExtent.min(BinningValue::binR)); - bValues[1u] = std::ceil(parsedExtent.max(BinningValue::binR)); + if (parsedExtent.constrains(AxisDirection::AxisR)) { + bValues[0u] = std::floor(parsedExtent.min(AxisDirection::AxisR)); + bValues[1u] = std::ceil(parsedExtent.max(AxisDirection::AxisR)); } - if (parsedExtent.constrains(BinningValue::binZ)) { - double minZ = parsedExtent.min(BinningValue::binZ) > 0. - ? std::floor(parsedExtent.min(BinningValue::binZ)) - : std::ceil(parsedExtent.min(BinningValue::binZ)); - double maxZ = parsedExtent.max(BinningValue::binZ) > 0. - ? std::floor(parsedExtent.max(BinningValue::binZ)) - : std::ceil(parsedExtent.max(BinningValue::binZ)); + if (parsedExtent.constrains(AxisDirection::AxisZ)) { + double minZ = parsedExtent.min(AxisDirection::AxisZ) > 0. + ? std::floor(parsedExtent.min(AxisDirection::AxisZ)) + : std::ceil(parsedExtent.min(AxisDirection::AxisZ)); + double maxZ = parsedExtent.max(AxisDirection::AxisZ) > 0. + ? std::floor(parsedExtent.max(AxisDirection::AxisZ)) + : std::ceil(parsedExtent.max(AxisDirection::AxisZ)); bValues[2u] = 0.5 * (maxZ - minZ); transform.translation().z() = 0.5 * (maxZ + minZ); } @@ -201,8 +201,8 @@ Acts::Experimental::DD4hepBlueprintFactory::extractExternals( // Get the binning values auto binningString = getParamOr(baseName + "_binning", dd4hepElement, ""); - std::vector bBinning = - Acts::stringToBinningValues(binningString); + std::vector bBinning = + Acts::stringToAxisDirections(binningString); if (!binningString.empty()) { aux += "vol. binning : " + binningString; } @@ -253,19 +253,19 @@ Acts::Experimental::DD4hepBlueprintFactory::extractInternals( unitLength * Acts::getParamOr(baseName + "_internals_clearance", dd4hepElement, 0.); - auto internalBinningValues = stringToBinningValues(interenalsMeasure); - if (!internalBinningValues.empty()) { + auto internalAxisDirections = stringToAxisDirections(interenalsMeasure); + if (!internalAxisDirections.empty()) { ACTS_VERBOSE(" - internals extent measurement requested"); Extent internalsExtent; ExtentEnvelope clearance = ExtentEnvelope::Zero(); - for (const auto& bv : internalBinningValues) { - ACTS_VERBOSE(" -> measuring extent for " << binningValueName(bv)); + for (const auto& bv : internalAxisDirections) { + ACTS_VERBOSE(" -> measuring extent for " << axisDirectionName(bv)); ACTS_VERBOSE(" -> with clearance :" << internalsClearance); clearance[bv] = {internalsClearance, internalsClearance}; } internalsExtent.setEnvelope(clearance); lOptions.extent = internalsExtent; - lOptions.extentConstraints = internalBinningValues; + lOptions.extentConstraints = internalAxisDirections; } // Create the builder from the dd4hep element auto [ib, extOpt] = m_cfg.layerStructure->builder( @@ -284,8 +284,8 @@ Acts::Experimental::DD4hepBlueprintFactory::extractInternals( baseName + "_root_volume_finder", dd4hepElement, ""); if (rootFinder == "indexed") { aux[1u] = "root finder : indexed"; - std::vector binning = {BinningValue::binZ, - BinningValue::binR}; + std::vector binning = {AxisDirection::AxisZ, + AxisDirection::AxisR}; rootsFinderBuilder = std::make_shared( binning); diff --git a/Plugins/DD4hep/src/DD4hepLayerBuilder.cpp b/Plugins/DD4hep/src/DD4hepLayerBuilder.cpp index 3ae1ecd9145..9e33e40363d 100644 --- a/Plugins/DD4hep/src/DD4hepLayerBuilder.cpp +++ b/Plugins/DD4hep/src/DD4hepLayerBuilder.cpp @@ -115,10 +115,10 @@ const Acts::LayerVector Acts::DD4hepLayerBuilder::endcapLayers( params.contains("envelope_z_max")) { // set the values of the proto layer in case enevelopes are handed // over - pl.envelope[Acts::BinningValue::binR] = { + pl.envelope[Acts::AxisDirection::AxisR] = { params.get("envelope_r_min"), params.get("envelope_r_max")}; - pl.envelope[Acts::BinningValue::binZ] = { + pl.envelope[Acts::AxisDirection::AxisZ] = { params.get("envelope_z_min"), params.get("envelope_z_max")}; } else if (geoShape != nullptr) { @@ -152,22 +152,22 @@ const Acts::LayerVector Acts::DD4hepLayerBuilder::endcapLayers( // manually create a proto layer double eiz = (z != 0.) ? z - m_cfg.defaultThickness : 0.; double eoz = (z != 0.) ? z + m_cfg.defaultThickness : 0.; - pl.extent.range(Acts::BinningValue::binZ).set(eiz, eoz); - pl.extent.range(Acts::BinningValue::binR).set(rMin, rMax); - pl.envelope[Acts::BinningValue::binR] = {0., 0.}; - pl.envelope[Acts::BinningValue::binZ] = {0., 0.}; + pl.extent.range(Acts::AxisDirection::AxisZ).set(eiz, eoz); + pl.extent.range(Acts::AxisDirection::AxisR).set(rMin, rMax); + pl.envelope[Acts::AxisDirection::AxisR] = {0., 0.}; + pl.envelope[Acts::AxisDirection::AxisZ] = {0., 0.}; } else { ACTS_VERBOSE(" Disc layer has " << layerSurfaces.size() << " sensitive surfaces."); // set the values of the proto layer in case dimensions are given by // geometry - pl.envelope[Acts::BinningValue::binZ] = { - std::abs(zMin - pl.min(Acts::BinningValue::binZ)), - std::abs(zMax - pl.max(Acts::BinningValue::binZ))}; - pl.envelope[Acts::BinningValue::binR] = { - std::abs(rMin - pl.min(Acts::BinningValue::binR)), - std::abs(rMax - pl.max(Acts::BinningValue::binR))}; - pl.extent.range(Acts::BinningValue::binR).set(rMin, rMax); + pl.envelope[Acts::AxisDirection::AxisZ] = { + std::abs(zMin - pl.min(Acts::AxisDirection::AxisZ)), + std::abs(zMax - pl.max(Acts::AxisDirection::AxisZ))}; + pl.envelope[Acts::AxisDirection::AxisR] = { + std::abs(rMin - pl.min(Acts::AxisDirection::AxisR)), + std::abs(rMax - pl.max(Acts::AxisDirection::AxisR))}; + pl.extent.range(Acts::AxisDirection::AxisR).set(rMin, rMax); } } else { throw std::logic_error( @@ -204,9 +204,10 @@ const Acts::LayerVector Acts::DD4hepLayerBuilder::endcapLayers( // create the share disc bounds auto dBounds = std::make_shared( - pl.min(Acts::BinningValue::binR), pl.max(Acts::BinningValue::binR)); - double thickness = std::abs(pl.max(Acts::BinningValue::binZ) - - pl.min(Acts::BinningValue::binZ)); + pl.min(Acts::AxisDirection::AxisR), + pl.max(Acts::AxisDirection::AxisR)); + double thickness = std::abs(pl.max(Acts::AxisDirection::AxisZ) - + pl.min(Acts::AxisDirection::AxisZ)); // Create the layer containing the sensitive surface endcapLayer = DiscLayer::create(transform, dBounds, std::move(sArray), thickness, nullptr, Acts::active); @@ -287,10 +288,10 @@ const Acts::LayerVector Acts::DD4hepLayerBuilder::centralLayers( params.contains("envelope_z_min") && params.contains("envelope_z_max")) { // set the values of the proto layer in case enevelopes are handed over - pl.envelope[Acts::BinningValue::binR] = { + pl.envelope[Acts::AxisDirection::AxisR] = { params.get("envelope_r_min"), params.get("envelope_r_max")}; - pl.envelope[Acts::BinningValue::binZ] = { + pl.envelope[Acts::AxisDirection::AxisZ] = { params.get("envelope_z_min"), params.get("envelope_z_max")}; } else if (geoShape != nullptr) { @@ -315,19 +316,19 @@ const Acts::LayerVector Acts::DD4hepLayerBuilder::centralLayers( // manually create a proto layer double eir = (r != 0.) ? r - m_cfg.defaultThickness : 0.; double eor = (r != 0.) ? r + m_cfg.defaultThickness : 0.; - pl.extent.range(Acts::BinningValue::binR).set(eir, eor); - pl.extent.range(Acts::BinningValue::binZ).set(-dz, dz); - pl.envelope[Acts::BinningValue::binR] = {0., 0.}; - pl.envelope[Acts::BinningValue::binZ] = {0., 0.}; + pl.extent.range(Acts::AxisDirection::AxisR).set(eir, eor); + pl.extent.range(Acts::AxisDirection::AxisZ).set(-dz, dz); + pl.envelope[Acts::AxisDirection::AxisR] = {0., 0.}; + pl.envelope[Acts::AxisDirection::AxisZ] = {0., 0.}; } else { // set the values of the proto layer in case dimensions are given by // geometry - pl.envelope[Acts::BinningValue::binZ] = { - std::abs(-dz - pl.min(Acts::BinningValue::binZ)), - std::abs(dz - pl.max(Acts::BinningValue::binZ))}; - pl.envelope[Acts::BinningValue::binR] = { - std::abs(rMin - pl.min(Acts::BinningValue::binR)), - std::abs(rMax - pl.max(Acts::BinningValue::binR))}; + pl.envelope[Acts::AxisDirection::AxisZ] = { + std::abs(-dz - pl.min(Acts::AxisDirection::AxisZ)), + std::abs(dz - pl.max(Acts::AxisDirection::AxisZ))}; + pl.envelope[Acts::AxisDirection::AxisR] = { + std::abs(rMin - pl.min(Acts::AxisDirection::AxisR)), + std::abs(rMax - pl.max(Acts::AxisDirection::AxisR))}; } } else { throw std::logic_error( @@ -337,8 +338,8 @@ const Acts::LayerVector Acts::DD4hepLayerBuilder::centralLayers( "constructor!")); } - double halfZ = (pl.min(Acts::BinningValue::binZ) - - pl.max(Acts::BinningValue::binZ)) * + double halfZ = (pl.min(Acts::AxisDirection::AxisZ) - + pl.max(Acts::AxisDirection::AxisZ)) * 0.5; std::shared_ptr centralLayer = nullptr; @@ -351,11 +352,11 @@ const Acts::LayerVector Acts::DD4hepLayerBuilder::centralLayers( std::make_unique(sensitiveSurf); // create the layer - double layerR = (pl.min(Acts::BinningValue::binR) + - pl.max(Acts::BinningValue::binR)) * + double layerR = (pl.min(Acts::AxisDirection::AxisR) + + pl.max(Acts::AxisDirection::AxisR)) * 0.5; - double thickness = std::abs(pl.max(Acts::BinningValue::binR) - - pl.min(Acts::BinningValue::binR)); + double thickness = std::abs(pl.max(Acts::AxisDirection::AxisR) - + pl.min(Acts::AxisDirection::AxisR)); auto cBounds = std::make_shared(layerR, halfZ); // Create the layer containing the sensitive surface centralLayer = diff --git a/Plugins/DD4hep/src/DD4hepLayerStructure.cpp b/Plugins/DD4hep/src/DD4hepLayerStructure.cpp index 10a4e6eb9f0..5546df6d8c0 100644 --- a/Plugins/DD4hep/src/DD4hepLayerStructure.cpp +++ b/Plugins/DD4hep/src/DD4hepLayerStructure.cpp @@ -68,13 +68,13 @@ Acts::Experimental::DD4hepLayerStructure::builder( // Check if the binning ACTS_VERBOSE("Checking if surface binning ranges can be patched."); for (auto& b : fCache.binnings) { - if (extent.constrains(b.binValue)) { - ACTS_VERBOSE("Binning '" << binningValueName(b.binValue) + if (extent.constrains(b.axisDir)) { + ACTS_VERBOSE("Binning '" << axisDirectionName(b.axisDir) << "' is patched."); ACTS_VERBOSE(" <- from : [" << b.edges.front() << ", " << b.edges.back() << "]"); - b.edges.front() = extent.min(b.binValue); - b.edges.back() = extent.max(b.binValue); + b.edges.front() = extent.min(b.axisDir); + b.edges.back() = extent.max(b.axisDir); ACTS_VERBOSE(" -> to : [" << b.edges.front() << ", " << b.edges.back() << "]"); } diff --git a/Plugins/DD4hep/src/DD4hepMaterialHelpers.cpp b/Plugins/DD4hep/src/DD4hepMaterialHelpers.cpp index c3d6b346c72..845d1356b6a 100644 --- a/Plugins/DD4hep/src/DD4hepMaterialHelpers.cpp +++ b/Plugins/DD4hep/src/DD4hepMaterialHelpers.cpp @@ -36,7 +36,7 @@ std::shared_ptr Acts::createProtoMaterial( Acts::BinUtility bu; // Loop over the bins for (auto& bin : binning) { - BinningValue bval = binningValueFromName(bin.first); + AxisDirection bval = axisDirectionFromName(bin.first); Acts::BinningOption bopt = bin.second; double min = 0.; double max = 0.; diff --git a/Plugins/Detray/include/Acts/Plugins/Detray/DetrayConversionUtils.hpp b/Plugins/Detray/include/Acts/Plugins/Detray/DetrayConversionUtils.hpp index 2f827a08bea..7adc9bbe3f0 100644 --- a/Plugins/Detray/include/Acts/Plugins/Detray/DetrayConversionUtils.hpp +++ b/Plugins/Detray/include/Acts/Plugins/Detray/DetrayConversionUtils.hpp @@ -77,7 +77,7 @@ detray::axis::bounds convertBinningOption(BinningOption bOption); /// @param bValue the binning value /// /// @return a detray binning value -detray::axis::label convertBinningValue(BinningValue bValue); +detray::axis::label convertAxisDirection(AxisDirection bValue); /// Convert the binning type /// diff --git a/Plugins/Detray/src/DetrayConversionUtils.cpp b/Plugins/Detray/src/DetrayConversionUtils.cpp index b2a0f78138f..272b453511d 100644 --- a/Plugins/Detray/src/DetrayConversionUtils.cpp +++ b/Plugins/Detray/src/DetrayConversionUtils.cpp @@ -8,20 +8,20 @@ #include "Acts/Plugins/Detray/DetrayConversionUtils.hpp" -detray::axis::label Acts::DetrayConversionUtils::convertBinningValue( - BinningValue bValue) { +detray::axis::label Acts::DetrayConversionUtils::convertAxisDirection( + AxisDirection bValue) { switch (bValue) { - case BinningValue::binX: + case AxisDirection::AxisX: return detray::axis::label::e_x; - case BinningValue::binY: + case AxisDirection::AxisY: return detray::axis::label::e_y; - case BinningValue::binZ: + case AxisDirection::AxisZ: return detray::axis::label::e_z; - case BinningValue::binR: + case AxisDirection::AxisR: return detray::axis::label::e_r; - case BinningValue::binPhi: + case AxisDirection::AxisPhi: return detray::axis::label::e_phi; - case BinningValue::binRPhi: + case AxisDirection::AxisRPhi: return detray::axis::label::e_rphi; default: throw std::invalid_argument( @@ -69,7 +69,7 @@ detray::io::axis_payload Acts::DetrayConversionUtils::convertBinningData( // Set the binning option axis.bounds = convertBinningOption(bData.option); // Set the binning value - axis.label = convertBinningValue(bData.binvalue); + axis.label = convertAxisDirection(bData.binvalue); // Set the binning range axis.edges = {}; if (bData.type == BinningType::equidistant) { diff --git a/Plugins/Detray/src/DetrayGeometryConverter.cpp b/Plugins/Detray/src/DetrayGeometryConverter.cpp index 95fe27d3036..a4afbba0c72 100644 --- a/Plugins/Detray/src/DetrayGeometryConverter.cpp +++ b/Plugins/Detray/src/DetrayGeometryConverter.cpp @@ -149,13 +149,13 @@ Acts::DetrayGeometryConverter::convertPortal( std::array clipRange = {0., 0.}; std::vector boundValues = surfaceAdjusted->bounds().values(); if (surfaceType == Surface::SurfaceType::Cylinder && - cast == BinningValue::binZ) { + cast == AxisDirection::AxisZ) { double zPosition = surfaceAdjusted->center(gctx).z(); clipRange = { zPosition - boundValues[CylinderBounds::BoundValues::eHalfLengthZ], zPosition + boundValues[CylinderBounds::BoundValues::eHalfLengthZ]}; } else if (surfaceType == Surface::SurfaceType::Disc && - cast == BinningValue::binR) { + cast == AxisDirection::AxisR) { clipRange = {boundValues[RadialBounds::BoundValues::eMinR], boundValues[RadialBounds::BoundValues::eMaxR]}; } else { diff --git a/Plugins/Detray/src/DetrayMaterialConverter.cpp b/Plugins/Detray/src/DetrayMaterialConverter.cpp index e4b7c5b6caa..25242b85efa 100644 --- a/Plugins/Detray/src/DetrayMaterialConverter.cpp +++ b/Plugins/Detray/src/DetrayMaterialConverter.cpp @@ -143,27 +143,27 @@ Acts::DetrayMaterialConverter::convertGridSurfaceMaterial( BinUtility bUtility = binnedMaterial->binUtility(); // Turn the bin value into a 2D grid if (bUtility.dimensions() == 1u) { - if (bUtility.binningData()[0u].binvalue == BinningValue::binX) { + if (bUtility.binningData()[0u].binvalue == AxisDirection::AxisX) { // Turn to X-Y bUtility += BinUtility(1u, std::numeric_limits::lowest(), std::numeric_limits::max(), - BinningOption::closed, BinningValue::binY); - } else if (bUtility.binningData()[0u].binvalue == BinningValue::binY) { + BinningOption::closed, AxisDirection::AxisY); + } else if (bUtility.binningData()[0u].binvalue == AxisDirection::AxisY) { // Turn to X-Y BinUtility nbUtility(1u, std::numeric_limits::lowest(), std::numeric_limits::max(), - BinningOption::closed, BinningValue::binX); + BinningOption::closed, AxisDirection::AxisX); nbUtility += bUtility; bUtility = std::move(nbUtility); swapped = true; - } else if (bUtility.binningData()[0u].binvalue == BinningValue::binR) { + } else if (bUtility.binningData()[0u].binvalue == AxisDirection::AxisR) { // Turn to R-Phi bUtility += BinUtility(1u, -std::numbers::pi, std::numbers::pi, closed, - BinningValue::binPhi); - } else if (bUtility.binningData()[0u].binvalue == BinningValue::binZ) { + AxisDirection::AxisPhi); + } else if (bUtility.binningData()[0u].binvalue == AxisDirection::AxisZ) { // Turn to Phi-Z - swap needed BinUtility nbUtility(1u, -std::numbers::pi, std::numbers::pi, closed, - BinningValue::binPhi); + AxisDirection::AxisPhi); nbUtility += bUtility; bUtility = std::move(nbUtility); swapped = true; @@ -171,24 +171,25 @@ Acts::DetrayMaterialConverter::convertGridSurfaceMaterial( std::invalid_argument("Unsupported binning for Detray"); } } else if (bUtility.dimensions() == 2u && - bUtility.binningData()[0u].binvalue == BinningValue::binZ && - bUtility.binningData()[1u].binvalue == BinningValue::binPhi) { + bUtility.binningData()[0u].binvalue == AxisDirection::AxisZ && + bUtility.binningData()[1u].binvalue == AxisDirection::AxisPhi) { BinUtility nbUtility(bUtility.binningData()[1u]); nbUtility += BinUtility{bUtility.binningData()[0u]}; bUtility = std::move(nbUtility); swapped = true; } - BinningValue bVal0 = bUtility.binningData()[0u].binvalue; - BinningValue bVal1 = bUtility.binningData()[1u].binvalue; + AxisDirection bVal0 = bUtility.binningData()[0u].binvalue; + AxisDirection bVal1 = bUtility.binningData()[1u].binvalue; // Translate into grid index type detray::io::material_id gridIndexType = detray::io::material_id::unknown; - if (bVal0 == BinningValue::binR && bVal1 == BinningValue::binPhi) { + if (bVal0 == AxisDirection::AxisR && bVal1 == AxisDirection::AxisPhi) { gridIndexType = detray::io::material_id::ring2_map; - } else if (bVal0 == BinningValue::binPhi && bVal1 == BinningValue::binZ) { + } else if (bVal0 == AxisDirection::AxisPhi && + bVal1 == AxisDirection::AxisZ) { gridIndexType = detray::io::material_id::concentric_cylinder2_map; - } else if (bVal0 == BinningValue::binX && bVal1 == BinningValue::binY) { + } else if (bVal0 == AxisDirection::AxisX && bVal1 == AxisDirection::AxisY) { gridIndexType = detray::io::material_id::rectangle2_map; } else { std::runtime_error( diff --git a/Plugins/Detray/src/DetraySurfaceGridsConverter.cpp b/Plugins/Detray/src/DetraySurfaceGridsConverter.cpp index f1572b77c08..13e52cd23ac 100644 --- a/Plugins/Detray/src/DetraySurfaceGridsConverter.cpp +++ b/Plugins/Detray/src/DetraySurfaceGridsConverter.cpp @@ -111,8 +111,8 @@ Acts::DetraySurfaceGridsConverter::convertImpl(const index_grid& indexGrid) { if constexpr (index_grid::grid_type::DIM == 2u) { // Check for axis swap - swapAxes = (indexGrid.casts[0u] == Acts::BinningValue::binZ && - indexGrid.casts[1u] == Acts::BinningValue::binPhi); + swapAxes = (indexGrid.casts[0u] == Acts::AxisDirection::AxisZ && + indexGrid.casts[1u] == Acts::AxisDirection::AxisPhi); } detray::io::grid_payload grid_pd = diff --git a/Plugins/Geant4/include/Acts/Plugins/Geant4/Geant4SurfaceProvider.hpp b/Plugins/Geant4/include/Acts/Plugins/Geant4/Geant4SurfaceProvider.hpp index 64930b82ff6..de73cb6466d 100644 --- a/Plugins/Geant4/include/Acts/Plugins/Geant4/Geant4SurfaceProvider.hpp +++ b/Plugins/Geant4/include/Acts/Plugins/Geant4/Geant4SurfaceProvider.hpp @@ -69,7 +69,7 @@ class Geant4SurfaceProvider : public Acts::Experimental::ISurfacesProvider { Acts::RangeXD range; /// A set of binning values to perform the separation - std::array binningValues; + std::array binningValues; /// The maximum number of surfaces per leaf std::size_t leafSize = bSize; diff --git a/Plugins/GeoModel/include/Acts/Plugins/GeoModel/GeoModelBlueprintCreater.hpp b/Plugins/GeoModel/include/Acts/Plugins/GeoModel/GeoModelBlueprintCreater.hpp index e56b1ec573d..78dfca36996 100644 --- a/Plugins/GeoModel/include/Acts/Plugins/GeoModel/GeoModelBlueprintCreater.hpp +++ b/Plugins/GeoModel/include/Acts/Plugins/GeoModel/GeoModelBlueprintCreater.hpp @@ -39,7 +39,7 @@ class GeoModelBlueprintCreater { /// with a kdtree sorting structure std::vector> detectorSurfaces = {}; /// The binning values for the KDTree sorting - std::vector kdtBinning = {}; + std::vector kdtBinning = {}; /// Polyhedron approximation: number of segments per circlequarter unsigned int quarterSegments = 1u; }; @@ -140,7 +140,7 @@ class GeoModelBlueprintCreater { createInternalStructureBuilder( Cache& cache, const GeometryContext& gctx, const TableEntry& entry, const Extent& externalExtent = Extent(), - const std::vector& internalConstraints = {}) const; + const std::vector& internalConstraints = {}) const; /// @brief Parse bound value string from the database /// diff --git a/Plugins/GeoModel/include/Acts/Plugins/GeoModel/detail/GeoModelBinningHelper.hpp b/Plugins/GeoModel/include/Acts/Plugins/GeoModel/detail/GeoModelBinningHelper.hpp index 4cf2fde9b8d..5a50754673e 100644 --- a/Plugins/GeoModel/include/Acts/Plugins/GeoModel/detail/GeoModelBinningHelper.hpp +++ b/Plugins/GeoModel/include/Acts/Plugins/GeoModel/detail/GeoModelBinningHelper.hpp @@ -19,20 +19,21 @@ namespace Acts::detail::GeoModelBinningHelper { -/// @brief Helper to transform binning string to BinningValue enum +/// @brief Helper to transform binning string to AxisDirection enum /// /// @param binning the binning string -inline BinningValue toBinningValue(const std::string& binning) { +inline AxisDirection toAxisDirection(const std::string& binning) { + using enum AxisDirection; if (binning == "x") { - return BinningValue::binX; + return AxisX; } else if (binning == "y") { - return BinningValue::binY; + return AxisY; } else if (binning == "z") { - return BinningValue::binZ; + return AxisZ; } else if (binning == "r") { - return BinningValue::binR; + return AxisR; } else if (binning == "phi") { - return BinningValue::binPhi; + return AxisPhi; } throw std::invalid_argument("GeoModelBinningHelper: Unknown binning value '" + binning + "'"); diff --git a/Plugins/GeoModel/include/Acts/Plugins/GeoModel/detail/GeoModelExtentHelper.hpp b/Plugins/GeoModel/include/Acts/Plugins/GeoModel/detail/GeoModelExtentHelper.hpp index 5c27152b5f5..b0d792ca24d 100644 --- a/Plugins/GeoModel/include/Acts/Plugins/GeoModel/detail/GeoModelExtentHelper.hpp +++ b/Plugins/GeoModel/include/Acts/Plugins/GeoModel/detail/GeoModelExtentHelper.hpp @@ -25,15 +25,15 @@ namespace Acts::detail::GeoModelExentHelper { /// @param ctype the type of the constraint as string from the database /// /// @return a vector -std::vector readBoundsConstaints(const std::string& boundsEntry, - const std::string& ctype = "i"); +std::vector readBoundsConstaints(const std::string& boundsEntry, + const std::string& ctype = "i"); /// @brief Helper function to find out which ones are constraint needed for binning /// /// @param binningEntry the bounds entry from the database /// /// @return a vector -std::vector readBinningConstraints( +std::vector readBinningConstraints( const std::vector& binningEntry); /// @brief Helper function to create the extent from database volume entry diff --git a/Plugins/GeoModel/src/GeoModelBlueprintCreater.cpp b/Plugins/GeoModel/src/GeoModelBlueprintCreater.cpp index 081834d7069..293757b51be 100644 --- a/Plugins/GeoModel/src/GeoModelBlueprintCreater.cpp +++ b/Plugins/GeoModel/src/GeoModelBlueprintCreater.cpp @@ -54,8 +54,8 @@ Acts::GeoModelBlueprintCreater::create(const GeometryContext& gctx, // Prepare the KdtSurfaces if configured to do so // if (!m_cfg.detectorSurfaces.empty()) { - std::array kdtBinning = { - BinningValue::binX, BinningValue::binY, BinningValue::binZ}; + std::array kdtBinning = { + AxisDirection::AxisX, AxisDirection::AxisY, AxisDirection::AxisZ}; if (m_cfg.kdtBinning.empty()) { throw std::invalid_argument( "GeoModelBlueprintCreater: At least one binning value for KDTree " @@ -152,10 +152,10 @@ Acts::GeoModelBlueprintCreater::createNode( // Peak into the volume entry to understand which one should be constraint // by the internals building - std::vector internalConstraints = + std::vector internalConstraints = detail::GeoModelExentHelper::readBoundsConstaints(entry.bounds, "i"); // Check if the binnning will also use the internal constraints - std::vector binningConstraints = + std::vector binningConstraints = detail::GeoModelExentHelper::readBinningConstraints(entry.binnings); // Concatenate the binning constraints for (const auto& bc : binningConstraints) { @@ -168,7 +168,7 @@ Acts::GeoModelBlueprintCreater::createNode( ACTS_VERBOSE("Found " << internalConstraints.size() << " internal constraints to check for: "); for (const auto& ic : internalConstraints) { - ACTS_VERBOSE("- " << binningValueName(ic)); + ACTS_VERBOSE("- " << axisDirectionName(ic)); } } @@ -263,11 +263,11 @@ Acts::GeoModelBlueprintCreater::createNode( } // Create the binnings - std::vector binnings; + std::vector binnings; std::for_each( entry.binnings.begin(), entry.binnings.end(), [&binnings](const std::string& b) { - binnings.push_back(detail::GeoModelBinningHelper::toBinningValue(b)); + binnings.push_back(detail::GeoModelBinningHelper::toAxisDirection(b)); }); // Complete the children @@ -317,7 +317,7 @@ std::tuple, Acts::GeoModelBlueprintCreater::createInternalStructureBuilder( Cache& cache, const GeometryContext& gctx, const TableEntry& entry, const Extent& externalExtent, - const std::vector& internalConstraints) const { + const std::vector& internalConstraints) const { // Check if the internals entry is empty if (entry.internals.empty()) { return {nullptr, Extent()}; @@ -351,7 +351,7 @@ Acts::GeoModelBlueprintCreater::createInternalStructureBuilder( // Fill what we have - follow the convention to fill up with the last for (std::size_t ibv = 0; ibv < 3u; ++ibv) { if (ibv < m_cfg.kdtBinning.size()) { - BinningValue v = m_cfg.kdtBinning[ibv]; + AxisDirection v = m_cfg.kdtBinning[ibv]; mins[ibv] = rangeExtent.min(v); maxs[ibv] = rangeExtent.max(v); continue; @@ -424,10 +424,10 @@ Acts::GeoModelBlueprintCreater::parseBounds( // Switch on the bounds type if (boundsType == VolumeBounds::BoundsType::eCylinder) { // Create the translation & bound values - translation = Acts::Vector3(0., 0., extent.medium(BinningValue::binZ)); - boundValues = {extent.min(BinningValue::binR), - extent.max(BinningValue::binR), - 0.5 * extent.interval(BinningValue::binZ)}; + translation = Acts::Vector3(0., 0., extent.medium(AxisDirection::AxisZ)); + boundValues = {extent.min(AxisDirection::AxisR), + extent.max(AxisDirection::AxisR), + 0.5 * extent.interval(AxisDirection::AxisZ)}; } else { throw std::invalid_argument( "GeoModelBlueprintCreater: Unknown bounds type, only 'cyl' is " diff --git a/Plugins/GeoModel/src/detail/GeoModelBinningHelper.cpp b/Plugins/GeoModel/src/detail/GeoModelBinningHelper.cpp index cb138913fd1..d6c7551a174 100644 --- a/Plugins/GeoModel/src/detail/GeoModelBinningHelper.cpp +++ b/Plugins/GeoModel/src/detail/GeoModelBinningHelper.cpp @@ -17,7 +17,7 @@ Acts::detail::GeoModelBinningHelper::toProtoBinning( const std::string& binning, const std::optional& extent) { std::vector binningTokens; boost::split(binningTokens, binning, boost::is_any_of(",")); - BinningValue bValue = toBinningValue(binningTokens[0]); + AxisDirection bValue = toAxisDirection(binningTokens[0]); std::vector binningDetails = {binningTokens.begin() + 1, binningTokens.end()}; @@ -47,7 +47,7 @@ Acts::detail::GeoModelBinningHelper::toProtoBinning( // The Range double rangeMin = 0.; double rangeMax = 0.; - if (bValue == BinningValue::binPhi && + if (bValue == AxisDirection::AxisPhi && boundaryType == AxisBoundaryType::Closed) { rangeMin = -std::numbers::pi; rangeMax = std::numbers::pi; diff --git a/Plugins/GeoModel/src/detail/GeoModelExtentHelper.cpp b/Plugins/GeoModel/src/detail/GeoModelExtentHelper.cpp index 3734aefb8fe..3ef7da227aa 100644 --- a/Plugins/GeoModel/src/detail/GeoModelExtentHelper.cpp +++ b/Plugins/GeoModel/src/detail/GeoModelExtentHelper.cpp @@ -14,7 +14,7 @@ #include -std::vector +std::vector Acts::detail::GeoModelExentHelper::readBoundsConstaints( const std::string& boundsEntry, const std::string& ctype) { std::vector boundsEntrySplit; @@ -24,7 +24,7 @@ Acts::detail::GeoModelExentHelper::readBoundsConstaints( "GeoModelBlueprintCreater: Bounds entry has to have at least 2 " "entries (type, values)"); } - std::set constraints; + std::set constraints; // Switch on the bounds type if (boundsEntrySplit[0u] == "cyl") { // Capture the values @@ -36,9 +36,9 @@ Acts::detail::GeoModelExentHelper::readBoundsConstaints( "least 4 entries (rmin, rmax, zmin, zmax)"); } // Raw database values to extent entries - constexpr std::array bvCyl = { - BinningValue::binR, BinningValue::binR, BinningValue::binZ, - BinningValue::binZ, BinningValue::binPhi, BinningValue::binPhi}; + constexpr std::array bvCyl = { + AxisDirection::AxisR, AxisDirection::AxisR, AxisDirection::AxisZ, + AxisDirection::AxisZ, AxisDirection::AxisPhi, AxisDirection::AxisPhi}; for (auto [iv, value] : enumerate(valuesEntry)) { if (value == ctype || value[0u] == ctype[0u]) { @@ -49,10 +49,10 @@ Acts::detail::GeoModelExentHelper::readBoundsConstaints( return {constraints.begin(), constraints.end()}; } -std::vector +std::vector Acts::detail::GeoModelExentHelper::readBinningConstraints( const std::vector& binningEntry) { - std::set constraints; + std::set constraints; // Loop over the single binning Entries for (const auto& sbe : binningEntry) { if (sbe.empty()) { @@ -60,8 +60,8 @@ Acts::detail::GeoModelExentHelper::readBinningConstraints( } std::vector sbTokens; boost::split(sbTokens, sbe, boost::is_any_of(",")); - BinningValue bv = - Acts::detail::GeoModelBinningHelper::toBinningValue(sbTokens[0]); + AxisDirection bv = + Acts::detail::GeoModelBinningHelper::toAxisDirection(sbTokens[0]); if (sbTokens.size() > 1u) { std::vector valueTokens = {sbTokens.begin() + 1, sbTokens.end()}; @@ -103,12 +103,12 @@ Acts::detail::GeoModelExentHelper::extentFromTable( "least 4 entries (rmin, rmax, zmin, zmax)"); } // Raw database values to extent entries - constexpr std::array bvCyl = { - BinningValue::binR, BinningValue::binR, BinningValue::binZ, - BinningValue::binZ, BinningValue::binPhi, BinningValue::binPhi}; + constexpr std::array bvCyl = { + AxisDirection::AxisR, AxisDirection::AxisR, AxisDirection::AxisZ, + AxisDirection::AxisZ, AxisDirection::AxisPhi, AxisDirection::AxisPhi}; for (auto [iv, value] : enumerate(valuesEntry)) { // Get the binning value - BinningValue bValue = bvCyl.at(iv); + AxisDirection bValue = bvCyl.at(iv); double val = std::numeric_limits::max(); bool isMin = (iv % 2 == 0); // Case "e" : external extent @@ -149,7 +149,7 @@ Acts::detail::GeoModelExentHelper::extentFromTable( } // Round up / down if configured if (roundInternalExtent) { - for (const auto& bv : allBinningValues()) { + for (const auto& bv : allAxisDirections()) { if (internalExtent.constrains(bv)) { extent.setMin(bv, std::floor(extent.min(bv))); extent.setMax(bv, std::ceil(extent.max(bv))); diff --git a/Plugins/Json/include/Acts/Plugins/Json/DetectorVolumeFinderJsonConverter.hpp b/Plugins/Json/include/Acts/Plugins/Json/DetectorVolumeFinderJsonConverter.hpp index 7b391a53fb5..dbf348bdd8f 100644 --- a/Plugins/Json/include/Acts/Plugins/Json/DetectorVolumeFinderJsonConverter.hpp +++ b/Plugins/Json/include/Acts/Plugins/Json/DetectorVolumeFinderJsonConverter.hpp @@ -13,7 +13,7 @@ #include "Acts/Navigation/PortalNavigation.hpp" #include "Acts/Plugins/Json/DetrayJsonHelper.hpp" #include "Acts/Plugins/Json/IndexedGridJsonHelper.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Grid.hpp" #include diff --git a/Plugins/Json/include/Acts/Plugins/Json/DetrayJsonHelper.hpp b/Plugins/Json/include/Acts/Plugins/Json/DetrayJsonHelper.hpp index d80b5cbfdde..92db94bdb32 100644 --- a/Plugins/Json/include/Acts/Plugins/Json/DetrayJsonHelper.hpp +++ b/Plugins/Json/include/Acts/Plugins/Json/DetrayJsonHelper.hpp @@ -9,7 +9,7 @@ #pragma once #include "Acts/Surfaces/SurfaceBounds.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include #include @@ -62,6 +62,6 @@ void addVolumeLink(nlohmann::json& jSurface, int vLink); /// @param casts are the grid axes cast types /// /// @return the acceleration link idnetifier -std::size_t accelerationLink(std::span casts); +std::size_t accelerationLink(std::span casts); } // namespace Acts::DetrayJsonHelper diff --git a/Plugins/Json/include/Acts/Plugins/Json/GridJsonConverter.hpp b/Plugins/Json/include/Acts/Plugins/Json/GridJsonConverter.hpp index 3215bd66eae..086ec7b0c03 100644 --- a/Plugins/Json/include/Acts/Plugins/Json/GridJsonConverter.hpp +++ b/Plugins/Json/include/Acts/Plugins/Json/GridJsonConverter.hpp @@ -10,7 +10,7 @@ #include "Acts/Plugins/Json/ActsJson.hpp" #include "Acts/Plugins/Json/TrackParametersJsonConverter.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/GridAccessHelpers.hpp" #include "Acts/Utilities/IAxis.hpp" diff --git a/Plugins/Json/include/Acts/Plugins/Json/IndexedGridJsonHelper.hpp b/Plugins/Json/include/Acts/Plugins/Json/IndexedGridJsonHelper.hpp index 3a3ab6b829f..ae4dd431a1c 100644 --- a/Plugins/Json/include/Acts/Plugins/Json/IndexedGridJsonHelper.hpp +++ b/Plugins/Json/include/Acts/Plugins/Json/IndexedGridJsonHelper.hpp @@ -11,7 +11,7 @@ #include "Acts/Plugins/Json/AlgebraJsonConverter.hpp" #include "Acts/Plugins/Json/GridJsonConverter.hpp" #include "Acts/Plugins/Json/UtilitiesJsonConverter.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Grid.hpp" #include "Acts/Utilities/GridAxisGenerators.hpp" @@ -46,8 +46,8 @@ nlohmann::json convertImpl(const index_grid& indexGrid, bool detray = false, jCasts.push_back(indexGrid.casts[0u]); jCasts.push_back(indexGrid.casts[1u]); // Check for axis swap (detray version) - swapAxes = checkSwap && (indexGrid.casts[0u] == BinningValue::binZ && - indexGrid.casts[1u] == BinningValue::binPhi); + swapAxes = checkSwap && (indexGrid.casts[0u] == AxisDirection::AxisZ && + indexGrid.casts[1u] == AxisDirection::AxisPhi); } jIndexedGrid["casts"] = jCasts; jIndexedGrid["transform"] = @@ -99,12 +99,12 @@ updator_type generateFromJson(const nlohmann::json& jUpdater, Transform3 transform = Transform3JsonConverter::fromJson(jUpdater["transform"]); auto jGrid = jUpdater["grid"]; - auto jCasts = jUpdater["casts"].get>(); + auto jCasts = jUpdater["casts"].get>(); auto jAxes = jGrid["axes"]; // 1D cases if (jAxes.size() == 1u) { - BinningValue bValue = jCasts[0u]; + AxisDirection bValue = jCasts[0u]; auto jAxis = jAxes[0u]; AxisType axisType = jAxis["type"]; @@ -146,8 +146,8 @@ updator_type generateFromJson(const nlohmann::json& jUpdater, // This currently writes out only the main options of 2D grids // nota bene: it assumes if one axis is closed, it is axis B - BinningValue bValueA = jCasts[0u]; - BinningValue bValueB = jCasts[1u]; + AxisDirection bValueA = jCasts[0u]; + AxisDirection bValueB = jCasts[1u]; auto jAxisA = jAxes[0u]; auto jAxisB = jAxes[1u]; diff --git a/Plugins/Json/include/Acts/Plugins/Json/IndexedSurfacesJsonConverter.hpp b/Plugins/Json/include/Acts/Plugins/Json/IndexedSurfacesJsonConverter.hpp index 4e0b8982a62..2511218af3f 100644 --- a/Plugins/Json/include/Acts/Plugins/Json/IndexedSurfacesJsonConverter.hpp +++ b/Plugins/Json/include/Acts/Plugins/Json/IndexedSurfacesJsonConverter.hpp @@ -17,7 +17,7 @@ #include "Acts/Plugins/Json/DetrayJsonHelper.hpp" #include "Acts/Plugins/Json/GridJsonConverter.hpp" #include "Acts/Plugins/Json/IndexedGridJsonHelper.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Enumerate.hpp" #include "Acts/Utilities/Grid.hpp" #include "Acts/Utilities/GridAxisGenerators.hpp" diff --git a/Plugins/Json/include/Acts/Plugins/Json/UtilitiesJsonConverter.hpp b/Plugins/Json/include/Acts/Plugins/Json/UtilitiesJsonConverter.hpp index 4874f7b49ad..ef7207af333 100644 --- a/Plugins/Json/include/Acts/Plugins/Json/UtilitiesJsonConverter.hpp +++ b/Plugins/Json/include/Acts/Plugins/Json/UtilitiesJsonConverter.hpp @@ -42,14 +42,15 @@ void from_json(const nlohmann::json& j, Range1D& r) { r.setMax(static_cast(j["max"])); } -NLOHMANN_JSON_SERIALIZE_ENUM(BinningValue, {{BinningValue::binX, "binX"}, - {BinningValue::binY, "binY"}, - {BinningValue::binZ, "binZ"}, - {BinningValue::binR, "binR"}, - {BinningValue::binPhi, "binPhi"}, - {BinningValue::binRPhi, "binRPhi"}, - {BinningValue::binH, "binH"}, - {BinningValue::binEta, "binEta"}, - {BinningValue::binMag, "binMag"}}) +NLOHMANN_JSON_SERIALIZE_ENUM(AxisDirection, + {{AxisDirection::AxisX, "AxisX"}, + {AxisDirection::AxisY, "AxisY"}, + {AxisDirection::AxisZ, "AxisZ"}, + {AxisDirection::AxisR, "AxisR"}, + {AxisDirection::AxisPhi, "AxisPhi"}, + {AxisDirection::AxisRPhi, "AxisRPhi"}, + {AxisDirection::AxisTheta, "AxisTheta"}, + {AxisDirection::AxisEta, "AxisEta"}, + {AxisDirection::AxisMag, "AxisMag"}}) } // namespace Acts diff --git a/Plugins/Json/src/DetectorVolumeFinderJsonConverter.cpp b/Plugins/Json/src/DetectorVolumeFinderJsonConverter.cpp index 8defd1ef5da..a71af293237 100644 --- a/Plugins/Json/src/DetectorVolumeFinderJsonConverter.cpp +++ b/Plugins/Json/src/DetectorVolumeFinderJsonConverter.cpp @@ -37,7 +37,7 @@ struct IndexedVolumesGenerator { template Acts::Experimental::ExternalNavigationDelegate createUpdater( grid_type&& grid, - const std::array& bv, + const std::array& bv, const Acts::Transform3& transform) { using IndexedDetectorVolumesImpl = Acts::Experimental::IndexedGridNavigation< diff --git a/Plugins/Json/src/DetrayJsonHelper.cpp b/Plugins/Json/src/DetrayJsonHelper.cpp index d17e6cee1d5..9accb3d9f2b 100644 --- a/Plugins/Json/src/DetrayJsonHelper.cpp +++ b/Plugins/Json/src/DetrayJsonHelper.cpp @@ -64,29 +64,25 @@ void addVolumeLink(nlohmann::json& jSurface, int vLink) { jSurface["volume_link"] = vLink; } -std::size_t accelerationLink(std::span casts) { +std::size_t accelerationLink(std::span casts) { // Default is `brute_force` + using enum AxisDirection; std::size_t accLink = 0u; if (casts.size() == 2u) { - if (casts[0u] == BinningValue::binX && casts[1u] == BinningValue::binY) { + if (casts[0u] == AxisX && casts[1u] == AxisY) { accLink = 1u; - } else if (casts[0u] == BinningValue::binR && - casts[1u] == BinningValue::binPhi) { + } else if (casts[0u] == AxisR && casts[1u] == AxisPhi) { accLink = 3u; - } else if (casts[0u] == BinningValue::binZ && - casts[1u] == BinningValue::binPhi) { + } else if (casts[0u] == AxisZ && casts[1u] == AxisPhi) { accLink = 4u; - } else if (casts[0u] == BinningValue::binZ && - casts[1u] == BinningValue::binR) { + } else if (casts[0u] == AxisZ && casts[1u] == AxisR) { accLink = 5u; } } else if (casts.size() == 3u) { - if (casts[0u] == BinningValue::binX && casts[1u] == BinningValue::binY && - casts[2u] == BinningValue::binZ) { + if (casts[0u] == AxisX && casts[1u] == AxisY && casts[2u] == AxisZ) { accLink = 2u; - } else if (casts[0u] == BinningValue::binZ && - casts[1u] == BinningValue::binPhi && - casts[2u] == BinningValue::binR) { + } else if (casts[0u] == AxisZ && casts[1u] == AxisPhi && + casts[2u] == AxisR) { accLink = 5u; } } diff --git a/Plugins/Json/src/ExtentJsonConverter.cpp b/Plugins/Json/src/ExtentJsonConverter.cpp index 67b501c79f4..3dfba75f2c1 100644 --- a/Plugins/Json/src/ExtentJsonConverter.cpp +++ b/Plugins/Json/src/ExtentJsonConverter.cpp @@ -22,9 +22,9 @@ void Acts::to_json(nlohmann::json& j, const Acts::Extent& e) { { nlohmann::json jrange; const auto& xrange = e.range(); - for (auto ibv : allBinningValues()) { + for (auto ibv : allAxisDirections()) { if (e.constrains(ibv)) { - jrange[binningValueName(ibv)] = xrange[toUnderlying(ibv)]; + jrange[axisDirectionName(ibv)] = xrange[toUnderlying(ibv)]; } } j["range"] = jrange; @@ -33,9 +33,9 @@ void Acts::to_json(nlohmann::json& j, const Acts::Extent& e) { { nlohmann::json jenvelope; const auto& envelope = e.envelope(); - for (auto ibv : allBinningValues()) { + for (auto ibv : allAxisDirections()) { if (envelope[ibv] != zeroEnvelope) { - jenvelope[binningValueName(ibv)] = + jenvelope[axisDirectionName(ibv)] = Range1D(envelope[ibv][0], envelope[ibv][1]); } } @@ -49,7 +49,7 @@ void Acts::from_json(const nlohmann::json& j, Acts::Extent& e) { const auto& jrange = j["range"]; for (const auto& [key, value] : jrange.items()) { - BinningValue bval = binningValueFromName(key); + AxisDirection bval = axisDirectionFromName(key); e.set(bval, value["min"], value["max"]); } @@ -58,7 +58,7 @@ void Acts::from_json(const nlohmann::json& j, Acts::Extent& e) { ExtentEnvelope envelope; for (const auto& [key, value] : jenvelope.items()) { - BinningValue bval = binningValueFromName(key); + AxisDirection bval = axisDirectionFromName(key); envelope[bval] = {value["min"], value["max"]}; } diff --git a/Plugins/Json/src/GridJsonConverter.cpp b/Plugins/Json/src/GridJsonConverter.cpp index 478224bc163..082b7002a0c 100644 --- a/Plugins/Json/src/GridJsonConverter.cpp +++ b/Plugins/Json/src/GridJsonConverter.cpp @@ -55,7 +55,7 @@ void encodeSubspace( const Subspace* subspace = dynamic_cast(&globalToGridLocal); if (subspace != nullptr) { jGlobalToGridLocal["type"] = "subspace"; - jGlobalToGridLocal["accessors"] = subspace->bValues; + jGlobalToGridLocal["accessors"] = subspace->axisDirs; } } @@ -96,13 +96,13 @@ void encodeSubspaces( } } -template +template std::unique_ptr> decodeSubspace( const nlohmann::json& /*j*/) { return std::make_unique>(); } -template +template std::unique_ptr>> decodeTransformedSubspace(const nlohmann::json& jGlobalToGridLocal) { @@ -114,7 +114,7 @@ decodeTransformedSubspace(const nlohmann::json& jGlobalToGridLocal) { transform); } -template +template std::unique_ptr decodeGeneralSubspace(const nlohmann::json& jGlobalToGridLocal) { if (jGlobalToGridLocal.find("transform") != jGlobalToGridLocal.end()) { @@ -123,7 +123,7 @@ decodeGeneralSubspace(const nlohmann::json& jGlobalToGridLocal) { return decodeSubspace(jGlobalToGridLocal); } -template +template void decorateGlobalDelegate(Delegate& delegate, const nlohmann::json& jGlobalToGridLocal) { // The delegate has already been connected @@ -136,8 +136,9 @@ void decorateGlobalDelegate(Delegate& delegate, jGlobalToGridLocal.find("transform") != jGlobalToGridLocal.end(); // Get the accessors - std::vector accessors = - jGlobalToGridLocal.at("accessors").get>(); + std::vector accessors = + jGlobalToGridLocal.at("accessors") + .get>(); // One dimensional setting if constexpr (sizeof...(Args) == 1u) { @@ -179,7 +180,7 @@ void decorateGlobalDelegate(Delegate& delegate, } } -template +template void decorateGlobal1DimDelegate( Acts::GridAccess::GlobalToGridLocal1DimDelegate& delegate, const nlohmann::json& jGlobalToGridLocal) { @@ -197,12 +198,12 @@ nlohmann::json Acts::GridAccessJsonConverter::toJson( std::array transformOptions = {false, true}; // One dimensional sub spaces - const std::tuple, - GridAccess::GlobalSubspace, - GridAccess::GlobalSubspace, - GridAccess::GlobalSubspace, - GridAccess::GlobalSubspace, - GridAccess::GlobalSubspace> + const std::tuple, + GridAccess::GlobalSubspace, + GridAccess::GlobalSubspace, + GridAccess::GlobalSubspace, + GridAccess::GlobalSubspace, + GridAccess::GlobalSubspace> oneDimSubspaces = {}; for (bool transform : transformOptions) { @@ -215,16 +216,16 @@ nlohmann::json Acts::GridAccessJsonConverter::toJson( // Useful two dimensional sub spaces const std::tuple< - GridAccess::GlobalSubspace, - GridAccess::GlobalSubspace, - GridAccess::GlobalSubspace, - GridAccess::GlobalSubspace, - GridAccess::GlobalSubspace, - GridAccess::GlobalSubspace, - GridAccess::GlobalSubspace, - GridAccess::GlobalSubspace, - GridAccess::GlobalSubspace, - GridAccess::GlobalSubspace> + GridAccess::GlobalSubspace, + GridAccess::GlobalSubspace, + GridAccess::GlobalSubspace, + GridAccess::GlobalSubspace, + GridAccess::GlobalSubspace, + GridAccess::GlobalSubspace, + GridAccess::GlobalSubspace, + GridAccess::GlobalSubspace, + GridAccess::GlobalSubspace, + GridAccess::GlobalSubspace> twoDimSubspaces = {}; for (bool transform : transformOptions) { @@ -243,35 +244,35 @@ Acts::GridAccessJsonConverter::globalToGridLocalFromJson( std::unique_ptr globalToGridLocal = nullptr; - std::vector accessors = - jGlobalToGridLocal.at("accessors").get>(); + std::vector accessors = + jGlobalToGridLocal.at("accessors").get>(); // Switch and fill for 1D if (accessors.size() == 1u) { switch (accessors[0]) { - case BinningValue::binX: + case AxisDirection::AxisX: globalToGridLocal = - decodeGeneralSubspace(jGlobalToGridLocal); + decodeGeneralSubspace(jGlobalToGridLocal); break; - case BinningValue::binY: + case AxisDirection::AxisY: globalToGridLocal = - decodeGeneralSubspace(jGlobalToGridLocal); + decodeGeneralSubspace(jGlobalToGridLocal); break; - case BinningValue::binZ: + case AxisDirection::AxisZ: globalToGridLocal = - decodeGeneralSubspace(jGlobalToGridLocal); + decodeGeneralSubspace(jGlobalToGridLocal); break; - case BinningValue::binR: + case AxisDirection::AxisR: globalToGridLocal = - decodeGeneralSubspace(jGlobalToGridLocal); + decodeGeneralSubspace(jGlobalToGridLocal); break; - case BinningValue::binPhi: + case AxisDirection::AxisPhi: globalToGridLocal = - decodeGeneralSubspace(jGlobalToGridLocal); + decodeGeneralSubspace(jGlobalToGridLocal); break; - case BinningValue::binEta: + case AxisDirection::AxisEta: globalToGridLocal = - decodeGeneralSubspace(jGlobalToGridLocal); + decodeGeneralSubspace(jGlobalToGridLocal); break; default: // globalToGridLocal = nullptr; @@ -281,55 +282,55 @@ Acts::GridAccessJsonConverter::globalToGridLocalFromJson( // Switch and fill for 2D if (accessors.size() == 2u) { - if (accessors == - std::vector{BinningValue::binX, BinningValue::binY}) { + if (accessors == std::vector{AxisDirection::AxisX, + AxisDirection::AxisY}) { globalToGridLocal = - decodeGeneralSubspace( + decodeGeneralSubspace( jGlobalToGridLocal); - } else if (accessors == std::vector{BinningValue::binY, - BinningValue::binX}) { + } else if (accessors == std::vector{AxisDirection::AxisY, + AxisDirection::AxisX}) { globalToGridLocal = - decodeGeneralSubspace( + decodeGeneralSubspace( jGlobalToGridLocal); - } else if (accessors == std::vector{BinningValue::binX, - BinningValue::binZ}) { + } else if (accessors == std::vector{AxisDirection::AxisX, + AxisDirection::AxisZ}) { globalToGridLocal = - decodeGeneralSubspace( + decodeGeneralSubspace( jGlobalToGridLocal); - } else if (accessors == std::vector{BinningValue::binZ, - BinningValue::binX}) { + } else if (accessors == std::vector{AxisDirection::AxisZ, + AxisDirection::AxisX}) { globalToGridLocal = - decodeGeneralSubspace( + decodeGeneralSubspace( jGlobalToGridLocal); - } else if (accessors == std::vector{BinningValue::binY, - BinningValue::binZ}) { + } else if (accessors == std::vector{AxisDirection::AxisY, + AxisDirection::AxisZ}) { globalToGridLocal = - decodeGeneralSubspace( + decodeGeneralSubspace( jGlobalToGridLocal); - } else if (accessors == std::vector{BinningValue::binZ, - BinningValue::binY}) { + } else if (accessors == std::vector{AxisDirection::AxisZ, + AxisDirection::AxisY}) { globalToGridLocal = - decodeGeneralSubspace( + decodeGeneralSubspace( jGlobalToGridLocal); - } else if (accessors == std::vector{BinningValue::binR, - BinningValue::binPhi}) { + } else if (accessors == std::vector{ + AxisDirection::AxisR, AxisDirection::AxisPhi}) { globalToGridLocal = - decodeGeneralSubspace( + decodeGeneralSubspace( jGlobalToGridLocal); - } else if (accessors == std::vector{BinningValue::binPhi, - BinningValue::binR}) { + } else if (accessors == std::vector{AxisDirection::AxisPhi, + AxisDirection::AxisR}) { globalToGridLocal = - decodeGeneralSubspace( + decodeGeneralSubspace( jGlobalToGridLocal); - } else if (accessors == std::vector{BinningValue::binZ, - BinningValue::binPhi}) { + } else if (accessors == std::vector{ + AxisDirection::AxisZ, AxisDirection::AxisPhi}) { globalToGridLocal = - decodeGeneralSubspace( + decodeGeneralSubspace( jGlobalToGridLocal); - } else if (accessors == std::vector{BinningValue::binPhi, - BinningValue::binZ}) { + } else if (accessors == std::vector{AxisDirection::AxisPhi, + AxisDirection::AxisZ}) { globalToGridLocal = - decodeGeneralSubspace( + decodeGeneralSubspace( jGlobalToGridLocal); } // else globalToGridLocal = nullptr; @@ -347,9 +348,9 @@ Acts::GridAccessJsonConverter::globalToGridLocal1DimDelegateFromJson( } // Unroll the decoration Acts::GridAccess::GlobalToGridLocal1DimDelegate delegate; - decorateGlobal1DimDelegate( + decorateGlobal1DimDelegate( delegate, jGlobalToGridLocal); return delegate; } @@ -367,34 +368,34 @@ Acts::GridAccessJsonConverter::globalToGridLocal2DimDelegateFromJson( // Only the matching one will be applied, matching condition is checked inside // the call - may unroll this es well decorateGlobalDelegate( + AxisDirection::AxisX, AxisDirection::AxisY>( delegate, jGlobalToGridLocal); decorateGlobalDelegate( + AxisDirection::AxisY, AxisDirection::AxisX>( delegate, jGlobalToGridLocal); decorateGlobalDelegate( + AxisDirection::AxisX, AxisDirection::AxisZ>( delegate, jGlobalToGridLocal); decorateGlobalDelegate( + AxisDirection::AxisZ, AxisDirection::AxisX>( delegate, jGlobalToGridLocal); decorateGlobalDelegate( + AxisDirection::AxisY, AxisDirection::AxisZ>( delegate, jGlobalToGridLocal); decorateGlobalDelegate( + AxisDirection::AxisZ, AxisDirection::AxisY>( delegate, jGlobalToGridLocal); decorateGlobalDelegate( + AxisDirection::AxisR, AxisDirection::AxisPhi>( delegate, jGlobalToGridLocal); decorateGlobalDelegate( + AxisDirection::AxisPhi, AxisDirection::AxisR>( delegate, jGlobalToGridLocal); decorateGlobalDelegate( + AxisDirection::AxisZ, AxisDirection::AxisPhi>( delegate, jGlobalToGridLocal); decorateGlobalDelegate( + AxisDirection::AxisPhi, AxisDirection::AxisZ>( delegate, jGlobalToGridLocal); return delegate; } diff --git a/Plugins/Json/src/IndexedSurfacesJsonConverter.cpp b/Plugins/Json/src/IndexedSurfacesJsonConverter.cpp index 40548ede336..9e2930eef1b 100644 --- a/Plugins/Json/src/IndexedSurfacesJsonConverter.cpp +++ b/Plugins/Json/src/IndexedSurfacesJsonConverter.cpp @@ -37,7 +37,7 @@ struct IndexedSurfacesGenerator { template Acts::Experimental::InternalNavigationDelegate createUpdater( grid_type&& grid, - const std::array& bv, + const std::array& bv, const Acts::Transform3& transform) { Acts::Experimental::IndexedSurfacesNavigation indexedSurfaces( std::forward(grid), bv, transform); diff --git a/Plugins/Json/src/MaterialJsonConverter.cpp b/Plugins/Json/src/MaterialJsonConverter.cpp index 759e1fd032b..f6f722ef826 100644 --- a/Plugins/Json/src/MaterialJsonConverter.cpp +++ b/Plugins/Json/src/MaterialJsonConverter.cpp @@ -686,14 +686,14 @@ nlohmann::json Acts::MaterialJsonConverter::toJsonDetray( BinUtility bUtility = binnedMaterial->binUtility(); // Turn the bin value into a 2D grid if (bUtility.dimensions() == 1u) { - if (bUtility.binningData()[0u].binvalue == BinningValue::binR) { + if (bUtility.binningData()[0u].binvalue == AxisDirection::AxisR) { // Turn to R-Phi bUtility += BinUtility(1u, -std::numbers::pi, std::numbers::pi, closed, - BinningValue::binPhi); - } else if (bUtility.binningData()[0u].binvalue == BinningValue::binZ) { + AxisDirection::AxisPhi); + } else if (bUtility.binningData()[0u].binvalue == AxisDirection::AxisZ) { // Turn to Phi-Z - swap needed BinUtility nbUtility(1u, -std::numbers::pi, std::numbers::pi, closed, - BinningValue::binPhi); + AxisDirection::AxisPhi); nbUtility += bUtility; bUtility = std::move(nbUtility); swapped = true; @@ -701,24 +701,25 @@ nlohmann::json Acts::MaterialJsonConverter::toJsonDetray( std::runtime_error("Unsupported binning for Detray"); } } else if (bUtility.dimensions() == 2u && - bUtility.binningData()[0u].binvalue == BinningValue::binZ && - bUtility.binningData()[1u].binvalue == BinningValue::binPhi) { + bUtility.binningData()[0u].binvalue == AxisDirection::AxisZ && + bUtility.binningData()[1u].binvalue == AxisDirection::AxisPhi) { BinUtility nbUtility(bUtility.binningData()[1u]); nbUtility += BinUtility{bUtility.binningData()[0u]}; bUtility = std::move(nbUtility); swapped = true; } - BinningValue bVal0 = bUtility.binningData()[0u].binvalue; - BinningValue bVal1 = bUtility.binningData()[1u].binvalue; + AxisDirection bVal0 = bUtility.binningData()[0u].binvalue; + AxisDirection bVal1 = bUtility.binningData()[1u].binvalue; // Translate into grid index type int gridIndexType = 0; - if (bVal0 == BinningValue::binR && bVal1 == BinningValue::binPhi) { + if (bVal0 == AxisDirection::AxisR && bVal1 == AxisDirection::AxisPhi) { gridIndexType = 0; - } else if (bVal0 == BinningValue::binPhi && bVal1 == BinningValue::binZ) { + } else if (bVal0 == AxisDirection::AxisPhi && + bVal1 == AxisDirection::AxisZ) { gridIndexType = 3; - } else if (bVal0 == BinningValue::binX && bVal1 == BinningValue::binY) { + } else if (bVal0 == AxisDirection::AxisX && bVal1 == AxisDirection::AxisY) { gridIndexType = 2; } else { std::runtime_error("Unsupported binning for Detray"); @@ -801,7 +802,7 @@ nlohmann::json Acts::MaterialJsonConverter::toJsonDetray( jAxis["label"] = ib; jAxis["bins"] = bData.bins(); double offset = 0; - if (bData.binvalue == BinningValue::binZ) { + if (bData.binvalue == AxisDirection::AxisZ) { offset = surface.center(Acts::GeometryContext{}).z(); } jAxis["edges"] = diff --git a/Plugins/Json/src/MaterialMapJsonConverter.cpp b/Plugins/Json/src/MaterialMapJsonConverter.cpp index dc423ecc50b..51211ac2386 100644 --- a/Plugins/Json/src/MaterialMapJsonConverter.cpp +++ b/Plugins/Json/src/MaterialMapJsonConverter.cpp @@ -119,9 +119,9 @@ Acts::SurfaceAndMaterialWithContext defaultSurfaceMaterial( std::numbers::pi) < Acts::s_epsilon ? Acts::closed : Acts::open, - Acts::BinningValue::binPhi); + Acts::AxisDirection::AxisPhi); bUtility += Acts::BinUtility(1, radialBounds->rMin(), radialBounds->rMax(), - Acts::open, Acts::BinningValue::binR); + Acts::open, Acts::AxisDirection::AxisR); } if (cylinderBounds != nullptr) { bUtility += Acts::BinUtility( @@ -134,41 +134,41 @@ Acts::SurfaceAndMaterialWithContext defaultSurfaceMaterial( std::numbers::pi) < Acts::s_epsilon ? Acts::closed : Acts::open, - Acts::BinningValue::binPhi); + Acts::AxisDirection::AxisPhi); bUtility += Acts::BinUtility( 1, -1 * cylinderBounds->get(Acts::CylinderBounds::eHalfLengthZ), cylinderBounds->get(Acts::CylinderBounds::eHalfLengthZ), Acts::open, - Acts::BinningValue::binZ); + Acts::AxisDirection::AxisZ); } if (annulusBounds != nullptr) { bUtility += Acts::BinUtility(1, annulusBounds->get(Acts::AnnulusBounds::eMinPhiRel), annulusBounds->get(Acts::AnnulusBounds::eMaxPhiRel), - Acts::open, Acts::BinningValue::binPhi); + Acts::open, Acts::AxisDirection::AxisPhi); bUtility += Acts::BinUtility(1, static_cast(annulusBounds->rMin()), static_cast(annulusBounds->rMax()), - Acts::open, Acts::BinningValue::binR); + Acts::open, Acts::AxisDirection::AxisR); } if (rectangleBounds != nullptr) { bUtility += Acts::BinUtility(1, rectangleBounds->get(Acts::RectangleBounds::eMinX), rectangleBounds->get(Acts::RectangleBounds::eMaxX), - Acts::open, Acts::BinningValue::binX); + Acts::open, Acts::AxisDirection::AxisX); bUtility += Acts::BinUtility(1, rectangleBounds->get(Acts::RectangleBounds::eMinY), rectangleBounds->get(Acts::RectangleBounds::eMaxY), - Acts::open, Acts::BinningValue::binY); + Acts::open, Acts::AxisDirection::AxisY); } if (trapezoidBounds != nullptr) { double halfLengthX = std::max(trapezoidBounds->get(Acts::TrapezoidBounds::eHalfLengthXnegY), trapezoidBounds->get(Acts::TrapezoidBounds::eHalfLengthXposY)); bUtility += Acts::BinUtility(1, -1 * halfLengthX, halfLengthX, Acts::open, - Acts::BinningValue::binX); + Acts::AxisDirection::AxisX); bUtility += Acts::BinUtility( 1, -1 * trapezoidBounds->get(Acts::TrapezoidBounds::eHalfLengthY), trapezoidBounds->get(Acts::TrapezoidBounds::eHalfLengthY), Acts::open, - Acts::BinningValue::binY); + Acts::AxisDirection::AxisY); } return {surface, std::make_shared(bUtility), context}; @@ -192,7 +192,7 @@ Acts::TrackingVolumeAndMaterial defaultVolumeMaterial( bUtility += Acts::BinUtility(1, cyBounds->get(Acts::CylinderVolumeBounds::eMinR), cyBounds->get(Acts::CylinderVolumeBounds::eMaxR), - Acts::open, Acts::BinningValue::binR); + Acts::open, Acts::AxisDirection::AxisR); bUtility += Acts::BinUtility( 1, -cyBounds->get(Acts::CylinderVolumeBounds::eHalfPhiSector), cyBounds->get(Acts::CylinderVolumeBounds::eHalfPhiSector), @@ -200,37 +200,37 @@ Acts::TrackingVolumeAndMaterial defaultVolumeMaterial( std::numbers::pi) < Acts::s_epsilon ? Acts::closed : Acts::open, - Acts::BinningValue::binPhi); + Acts::AxisDirection::AxisPhi); bUtility += Acts::BinUtility( 1, -cyBounds->get(Acts::CylinderVolumeBounds::eHalfLengthZ), cyBounds->get(Acts::CylinderVolumeBounds::eHalfLengthZ), Acts::open, - Acts::BinningValue::binZ); + Acts::AxisDirection::AxisZ); } if (cutcylBounds != nullptr) { bUtility += Acts::BinUtility( 1, cutcylBounds->get(Acts::CutoutCylinderVolumeBounds::eMinR), cutcylBounds->get(Acts::CutoutCylinderVolumeBounds::eMaxR), Acts::open, - Acts::BinningValue::binR); + Acts::AxisDirection::AxisR); bUtility += Acts::BinUtility(1, -std::numbers::pi_v, std::numbers::pi_v, Acts::closed, - Acts::BinningValue::binPhi); + Acts::AxisDirection::AxisPhi); bUtility += Acts::BinUtility( 1, -cutcylBounds->get(Acts::CutoutCylinderVolumeBounds::eHalfLengthZ), cutcylBounds->get(Acts::CutoutCylinderVolumeBounds::eHalfLengthZ), - Acts::open, Acts::BinningValue::binZ); + Acts::open, Acts::AxisDirection::AxisZ); } else if (cuBounds != nullptr) { bUtility += Acts::BinUtility( 1, -cuBounds->get(Acts::CuboidVolumeBounds::eHalfLengthX), cuBounds->get(Acts::CuboidVolumeBounds::eHalfLengthX), Acts::open, - Acts::BinningValue::binX); + Acts::AxisDirection::AxisX); bUtility += Acts::BinUtility( 1, -cuBounds->get(Acts::CuboidVolumeBounds::eHalfLengthY), cuBounds->get(Acts::CuboidVolumeBounds::eHalfLengthY), Acts::open, - Acts::BinningValue::binY); + Acts::AxisDirection::AxisY); bUtility += Acts::BinUtility( 1, -cuBounds->get(Acts::CuboidVolumeBounds::eHalfLengthZ), cuBounds->get(Acts::CuboidVolumeBounds::eHalfLengthZ), Acts::open, - Acts::BinningValue::binZ); + Acts::AxisDirection::AxisZ); } return {volume, std::make_shared(bUtility)}; } diff --git a/Plugins/Json/src/PortalJsonConverter.cpp b/Plugins/Json/src/PortalJsonConverter.cpp index 3fb7e4865a3..fd1bd742068 100644 --- a/Plugins/Json/src/PortalJsonConverter.cpp +++ b/Plugins/Json/src/PortalJsonConverter.cpp @@ -157,13 +157,13 @@ Acts::PortalJsonConverter::toJsonDetray( std::array clipRange = {0., 0.}; std::vector boundValues = surfaceAdjusted->bounds().values(); if (surfaceType == Surface::SurfaceType::Cylinder && - cast == BinningValue::binZ) { + cast == AxisDirection::AxisZ) { double zPosition = surfaceAdjusted->center(gctx).z(); clipRange = { zPosition - boundValues[CylinderBounds::BoundValues::eHalfLengthZ], zPosition + boundValues[CylinderBounds::BoundValues::eHalfLengthZ]}; } else if (surfaceType == Surface::SurfaceType::Disc && - cast == BinningValue::binR) { + cast == AxisDirection::AxisR) { clipRange = {boundValues[RadialBounds::BoundValues::eMinR], boundValues[RadialBounds::BoundValues::eMaxR]}; } else { @@ -332,7 +332,7 @@ std::shared_ptr Acts::PortalJsonConverter::fromJson( // Resolve the multi link 1D auto jMultiLink = vl["multi_1D"]; auto boundaries = jMultiLink["boundaries"].get>(); - auto binning = jMultiLink["binning"].get(); + auto binning = jMultiLink["binning"].get(); auto targets = jMultiLink["targets"].get>(); std::vector> targetVolumes; for (const auto t : targets) { diff --git a/Plugins/Json/src/UtilitiesJsonConverter.cpp b/Plugins/Json/src/UtilitiesJsonConverter.cpp index 558bb8aa048..6bb186b120b 100644 --- a/Plugins/Json/src/UtilitiesJsonConverter.cpp +++ b/Plugins/Json/src/UtilitiesJsonConverter.cpp @@ -54,7 +54,37 @@ void Acts::from_json(const nlohmann::json& j, BinningData& bd) { float min = j["min"]; float max = j["max"]; int bins = j["bins"]; - auto bValue = j["value"].get(); + + // Support legacy format with BinningValue instead of AxisDirection, + // this will anyway disappear with the removal of BinUtility + AxisDirection bValue = AxisDirection::AxisX; + if (j["value"].get().substr(0, 3) == "bin") { + std::string bValueStr = j["value"]; + if (bValueStr == "binX") { + bValue = AxisDirection::AxisX; + } else if (bValueStr == "binY") { + bValue = AxisDirection::AxisY; + } else if (bValueStr == "binZ") { + bValue = AxisDirection::AxisZ; + } else if (bValueStr == "binR") { + bValue = AxisDirection::AxisR; + } else if (bValueStr == "binPhi") { + bValue = AxisDirection::AxisPhi; + } else if (bValueStr == "binRPhi") { + bValue = AxisDirection::AxisRPhi; + } else if (bValueStr == "binH") { + bValue = AxisDirection::AxisTheta; + } else if (bValueStr == "binEta") { + bValue = AxisDirection::AxisEta; + } else if (bValueStr == "binMag") { + bValue = AxisDirection::AxisMag; + } else { + throw std::invalid_argument("Unknown binning value name: " + bValueStr); + } + } else { + bValue = j["value"].get(); + } + if (bins == 1 && !(j["type"] == "arbitrary")) { bd = BinningData(bValue, min, max); return; diff --git a/Plugins/TGeo/include/Acts/Plugins/TGeo/TGeoLayerBuilder.hpp b/Plugins/TGeo/include/Acts/Plugins/TGeo/TGeoLayerBuilder.hpp index 8bd87122332..bf2eb7e9916 100644 --- a/Plugins/TGeo/include/Acts/Plugins/TGeo/TGeoLayerBuilder.hpp +++ b/Plugins/TGeo/include/Acts/Plugins/TGeo/TGeoLayerBuilder.hpp @@ -58,9 +58,9 @@ class TGeoLayerBuilder : public ILayerBuilder { /// Helper config structs for volume parsing struct LayerConfig { public: - using RangeConfig = std::pair>; + using RangeConfig = std::pair>; - using SplitConfig = std::pair; + using SplitConfig = std::pair; /// Identify the search volume by name std::string volumeName = ""; diff --git a/Plugins/TGeo/include/Acts/Plugins/TGeo/TGeoParser.hpp b/Plugins/TGeo/include/Acts/Plugins/TGeo/TGeoParser.hpp index 3a99a008819..a59743a5b46 100644 --- a/Plugins/TGeo/include/Acts/Plugins/TGeo/TGeoParser.hpp +++ b/Plugins/TGeo/include/Acts/Plugins/TGeo/TGeoParser.hpp @@ -10,7 +10,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/Units.hpp" -#include "Acts/Utilities/BinningType.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include #include @@ -69,7 +69,7 @@ struct TGeoParser { /// Scaling from TGeo to ROOT double unit = 1 * UnitConstants::cm; /// Parse restrictions, several can apply - std::vector > parseRanges = {}; + std::vector > parseRanges = {}; }; /// The parsing module, it takes the top Volume and recursively steps down diff --git a/Plugins/TGeo/src/TGeoLayerBuilder.cpp b/Plugins/TGeo/src/TGeoLayerBuilder.cpp index 73cd8bb25ec..3cbce625c7c 100644 --- a/Plugins/TGeo/src/TGeoLayerBuilder.cpp +++ b/Plugins/TGeo/src/TGeoLayerBuilder.cpp @@ -150,12 +150,12 @@ void Acts::TGeoLayerBuilder::buildLayers(const GeometryContext& gctx, ProtoLayer pl(gctx, lSurfaces); ACTS_DEBUG("- creating CylinderLayer with " << lSurfaces.size() - << " surfaces at r = " << pl.medium(BinningValue::binR)); + << " surfaces at r = " << pl.medium(AxisDirection::AxisR)); - pl.envelope[Acts::BinningValue::binR] = {lCfg.envelope.first, - lCfg.envelope.second}; - pl.envelope[Acts::BinningValue::binZ] = {lCfg.envelope.second, - lCfg.envelope.second}; + pl.envelope[Acts::AxisDirection::AxisR] = {lCfg.envelope.first, + lCfg.envelope.second}; + pl.envelope[Acts::AxisDirection::AxisZ] = {lCfg.envelope.second, + lCfg.envelope.second}; if (nb0 >= 0 && nb1 >= 0) { layers.push_back( m_cfg.layerCreator->cylinderLayer(gctx, lSurfaces, nb0, nb1, pl)); @@ -167,12 +167,12 @@ void Acts::TGeoLayerBuilder::buildLayers(const GeometryContext& gctx, ProtoLayer pl(gctx, lSurfaces); ACTS_DEBUG("- creating DiscLayer with " << lSurfaces.size() - << " surfaces at z = " << pl.medium(BinningValue::binZ)); + << " surfaces at z = " << pl.medium(AxisDirection::AxisZ)); - pl.envelope[Acts::BinningValue::binR] = {lCfg.envelope.first, - lCfg.envelope.second}; - pl.envelope[Acts::BinningValue::binZ] = {lCfg.envelope.second, - lCfg.envelope.second}; + pl.envelope[Acts::AxisDirection::AxisR] = {lCfg.envelope.first, + lCfg.envelope.second}; + pl.envelope[Acts::AxisDirection::AxisZ] = {lCfg.envelope.second, + lCfg.envelope.second}; if (nb0 >= 0 && nb1 >= 0) { layers.push_back( m_cfg.layerCreator->discLayer(gctx, lSurfaces, nb0, nb1, pl)); @@ -192,7 +192,7 @@ void Acts::TGeoLayerBuilder::buildLayers(const GeometryContext& gctx, if (!layerCfg.parseRanges.empty()) { for (const auto& pRange : layerCfg.parseRanges) { ACTS_DEBUG("- layer parsing restricted in " - << binningValueName(pRange.first) << " to [" + << axisDirectionName(pRange.first) << " to [" << pRange.second.first << "/" << pRange.second.second << "]."); } @@ -200,7 +200,7 @@ void Acts::TGeoLayerBuilder::buildLayers(const GeometryContext& gctx, if (!layerCfg.splitConfigs.empty()) { for (const auto& sConfig : layerCfg.splitConfigs) { ACTS_DEBUG("- layer splitting attempt in " - << binningValueName(sConfig.first) << " with tolerance " + << axisDirectionName(sConfig.first) << " with tolerance " << sConfig.second << "."); } } @@ -240,7 +240,7 @@ void Acts::TGeoLayerBuilder::buildLayers(const GeometryContext& gctx, ACTS_DEBUG("- applying " << layerCfg.parseRanges.size() << " search restrictions."); for (const auto& prange : layerCfg.parseRanges) { - ACTS_VERBOSE(" - range " << binningValueName(prange.first) + ACTS_VERBOSE(" - range " << axisDirectionName(prange.first) << " within [ " << prange.second.first << ", " << prange.second.second << "]"); } diff --git a/Tests/Benchmarks/BinUtilityBenchmark.cpp b/Tests/Benchmarks/BinUtilityBenchmark.cpp index 251503e2f73..0fcf652ecdf 100644 --- a/Tests/Benchmarks/BinUtilityBenchmark.cpp +++ b/Tests/Benchmarks/BinUtilityBenchmark.cpp @@ -50,14 +50,14 @@ int main(int argc, char* argv[]) { for (unsigned int ib = 0; ib < 6; ++ib) { fewBins.push_back(ib * 6. / 5.); } - Acts::BinUtility small(fewBins, Acts::open, Acts::BinningValue::binX); + Acts::BinUtility small(fewBins, Acts::open, Acts::AxisDirection::AxisX); std::vector mediumBins; mediumBins.reserve(21); for (unsigned int ib = 0; ib < 21; ++ib) { mediumBins.push_back(ib * 6. / 20.); } - Acts::BinUtility medium(mediumBins, Acts::open, Acts::BinningValue::binX); + Acts::BinUtility medium(mediumBins, Acts::open, Acts::AxisDirection::AxisX); std::vector manyBins; manyBins.reserve(101); @@ -65,7 +65,7 @@ int main(int argc, char* argv[]) { manyBins.push_back(ib * 6. / 100.); } - Acts::BinUtility many(manyBins, Acts::open, Acts::BinningValue::binX); + Acts::BinUtility many(manyBins, Acts::open, Acts::AxisDirection::AxisX); Acts::Vector3 low = Acts::Vector3(1.5, 0., 0.); Acts::Vector3 high = Acts::Vector3(4.5, 0., 0.); @@ -125,7 +125,7 @@ int main(int argc, char* argv[]) { ACTS_INFO("Fraction is: " << st << " vs. " << gt); Acts::BinUtility equidistant(100, 0., 6., Acts::open, - Acts::BinningValue::binX); + Acts::AxisDirection::AxisX); st = 0; gt = 0; num_iters = 0; diff --git a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CubicTrackingGeometry.hpp b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CubicTrackingGeometry.hpp index 55793113d99..9967d1b9750 100644 --- a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CubicTrackingGeometry.hpp +++ b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CubicTrackingGeometry.hpp @@ -134,7 +134,7 @@ struct CubicTrackingGeometry { layVec.push_back(layers[1]); std::unique_ptr layArr1(layArrCreator.layerArray( geoContext, layVec, -2_m - 1._mm, -1._m + 1._mm, BinningType::arbitrary, - BinningValue::binX)); + AxisDirection::AxisX)); auto trackVolume1 = std::make_shared( trafoVol1, boundsVol, nullptr, std::move(layArr1), nullptr, @@ -150,7 +150,7 @@ struct CubicTrackingGeometry { } std::unique_ptr layArr2( layArrCreator.layerArray(geoContext, layVec, 1._m - 2._mm, 2._m + 2._mm, - BinningType::arbitrary, BinningValue::binX)); + BinningType::arbitrary, AxisDirection::AxisX)); auto trackVolume2 = std::make_shared( trafoVol2, boundsVol, nullptr, std::move(layArr2), nullptr, @@ -178,7 +178,8 @@ struct CubicTrackingGeometry { std::vector binBoundaries = {-3._m, 0., 3._m}; - BinningData binData(BinningOption::open, BinningValue::binX, binBoundaries); + BinningData binData(BinningOption::open, AxisDirection::AxisX, + binBoundaries); std::unique_ptr bu(new BinUtility(binData)); std::shared_ptr trVolArr( diff --git a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CylindricalDetector.cpp b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CylindricalDetector.cpp index 7ab854d4e65..5ec9a806005 100644 --- a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CylindricalDetector.cpp +++ b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CylindricalDetector.cpp @@ -73,7 +73,7 @@ std::shared_ptr Acts::Test::buildCylindricalDetector( // Create the barrel container builder CylindricalContainerBuilder::Config barrelRCfg; barrelRCfg.builders = {barrel0, barrel1, barrel2}; - barrelRCfg.binning = {BinningValue::binR}; + barrelRCfg.binning = {AxisDirection::AxisR}; auto barrel = std::make_shared( barrelRCfg, getDefaultLogger("BarrelBuilderR", Logging::INFO)); @@ -88,7 +88,7 @@ std::shared_ptr Acts::Test::buildCylindricalDetector( // Create the barrel container builder CylindricalContainerBuilder::Config barrelEndcapCfg; barrelEndcapCfg.builders = {endcapN, barrel, endcapP}; - barrelEndcapCfg.binning = {BinningValue::binZ}; + barrelEndcapCfg.binning = {AxisDirection::AxisZ}; auto barrelEndcap = std::make_shared( barrelEndcapCfg, getDefaultLogger("BarrelEndcapBuilder", Logging::INFO)); @@ -96,7 +96,7 @@ std::shared_ptr Acts::Test::buildCylindricalDetector( // Create the barrel container builder CylindricalContainerBuilder::Config detectorCfg; detectorCfg.builders = {beampipe, barrelEndcap}; - detectorCfg.binning = {BinningValue::binR}; + detectorCfg.binning = {AxisDirection::AxisR}; auto containerBuilder = std::make_shared( detectorCfg, getDefaultLogger("DetectorBuilder", Logging::INFO)); diff --git a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CylindricalTrackingGeometry.hpp b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CylindricalTrackingGeometry.hpp index a37bbcb1e8f..84e51027a6e 100644 --- a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CylindricalTrackingGeometry.hpp +++ b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/CylindricalTrackingGeometry.hpp @@ -304,7 +304,7 @@ struct CylindricalTrackingGeometry { // create the layer and store it ProtoLayer protoLayer(geoContext, layerSurfaces); - protoLayer.envelope[BinningValue::binR] = {0.5, 0.5}; + protoLayer.envelope[AxisDirection::AxisR] = {0.5, 0.5}; auto pLayer = layerCreator->cylinderLayer( geoContext, std::move(layerSurfacePtrs), pLayerBinning[ilp].first, pLayerBinning[ilp].second, protoLayer); @@ -319,7 +319,7 @@ struct CylindricalTrackingGeometry { // layer array auto pLayerArray = layerArrayCreator->layerArray( - geoContext, pLayers, 25., 300., arbitrary, BinningValue::binR); + geoContext, pLayers, 25., 300., arbitrary, AxisDirection::AxisR); auto pVolumeBounds = std::make_shared(25., 300., 1100.); // create the Tracking volume diff --git a/Tests/Data/material-map.json b/Tests/Data/material-map.json index a59a29a7d17..447fad8f872 100644 --- a/Tests/Data/material-map.json +++ b/Tests/Data/material-map.json @@ -17,7 +17,7 @@ "min": 0.0, "option": "open", "type": "equidistant", - "value": "binR" + "value": "AxisR" }, { "bins": 2, @@ -25,7 +25,7 @@ "min": -3.1415927410125732, "option": "closed", "type": "equidistant", - "value": "binPhi" + "value": "AxisPhi" }, { "bins": 2, @@ -33,7 +33,7 @@ "min": -4002.0, "option": "open", "type": "equidistant", - "value": "binZ" + "value": "AxisZ" } ] }, @@ -154,7 +154,7 @@ "min": -3.1415927410125732, "option": "open", "type": "equidistant", - "value": "binPhi" + "value": "AxisPhi" }, { "bins": 2, @@ -162,7 +162,7 @@ "min": -524.0, "option": "open", "type": "equidistant", - "value": "binZ" + "value": "AxisZ" } ] }, @@ -212,7 +212,7 @@ "min": -3.1415927410125732, "option": "open", "type": "equidistant", - "value": "binPhi" + "value": "AxisPhi" }, { "bins": 2, @@ -220,7 +220,7 @@ "min": -524.0, "option": "open", "type": "equidistant", - "value": "binZ" + "value": "AxisZ" } ] }, @@ -269,7 +269,7 @@ "min": -3.1415927410125732, "option": "open", "type": "equidistant", - "value": "binPhi" + "value": "AxisPhi" }, { "bins": 3, @@ -277,7 +277,7 @@ "min": 27.0, "option": "open", "type": "equidistant", - "value": "binR" + "value": "AxisR" } ] }, @@ -338,7 +338,7 @@ "min": -3.1415927410125732, "option": "closed", "type": "equidistant", - "value": "binPhi" + "value": "AxisPhi" }, { "bins": 3, @@ -346,7 +346,7 @@ "min": -1154.0, "option": "open", "type": "equidistant", - "value": "binZ" + "value": "AxisZ" } ] }, diff --git a/Tests/UnitTests/Alignment/Kernel/AlignmentTests.cpp b/Tests/UnitTests/Alignment/Kernel/AlignmentTests.cpp index e6bbad83f4b..86d668b5beb 100644 --- a/Tests/UnitTests/Alignment/Kernel/AlignmentTests.cpp +++ b/Tests/UnitTests/Alignment/Kernel/AlignmentTests.cpp @@ -158,7 +158,7 @@ struct TelescopeDetector { // Create the layer array std::unique_ptr layArr(layArrCreator.layerArray( geoContext, layVec, positions.front() - 2._mm, positions.back() + 2._mm, - BinningType::arbitrary, BinningValue::binX)); + BinningType::arbitrary, AxisDirection::AxisX)); // Build the tracking volume auto trackVolume = std::make_shared( diff --git a/Tests/UnitTests/Core/Detector/BlueprintHelperTests.cpp b/Tests/UnitTests/Core/Detector/BlueprintHelperTests.cpp index a8876bbd8f3..b10042791cf 100644 --- a/Tests/UnitTests/Core/Detector/BlueprintHelperTests.cpp +++ b/Tests/UnitTests/Core/Detector/BlueprintHelperTests.cpp @@ -23,7 +23,8 @@ BOOST_AUTO_TEST_SUITE(Experimental) BOOST_AUTO_TEST_CASE(BlueprintHelperSorting) { // Create root node - std::vector detectorBinning = {Acts::BinningValue::binR}; + std::vector detectorBinning = { + Acts::AxisDirection::AxisR}; std::vector detectorBoundaries = {0., 50., 100.}; auto detector = std::make_unique( "detector", Acts::Transform3::Identity(), Acts::VolumeBounds::eCylinder, @@ -33,7 +34,7 @@ BOOST_AUTO_TEST_CASE(BlueprintHelperSorting) { BOOST_CHECK(detector->children.empty()); BOOST_CHECK_EQUAL(detector->name, "detector"); - std::vector pixelsBinning = {Acts::BinningValue::binZ}; + std::vector pixelsBinning = {Acts::AxisDirection::AxisZ}; std::vector pixelsBoundaries = {20., 50., 100.}; auto pixels = std::make_unique( @@ -105,7 +106,8 @@ BOOST_AUTO_TEST_CASE(BlueprintCylindricalGapFilling) { std::make_shared(); // Create root node - std::vector detectorBinning = {Acts::BinningValue::binR}; + std::vector detectorBinning = { + Acts::AxisDirection::AxisR}; std::vector detectorBoundaries = {detectorIr, detectorOr, detectorHz}; // The root node - detector @@ -122,14 +124,15 @@ BOOST_AUTO_TEST_CASE(BlueprintCylindricalGapFilling) { // A pixel system std::vector pixelBoundaries = {pixelIr, pixelOr, detectorHz}; - std::vector pixelBinning = {Acts::BinningValue::binZ}; + std::vector pixelBinning = {Acts::AxisDirection::AxisZ}; auto pixel = std::make_unique( "pixel", Acts::Transform3::Identity(), Acts::VolumeBounds::eCylinder, pixelBoundaries, pixelBinning); // Nec: Small differences to check if the adjustments are made std::vector pixelEcBoundaries = {pixelIr, pixelOr - 5., pixelEcHz}; - std::vector pixelEcBinning = {Acts::BinningValue::binZ}; + std::vector pixelEcBinning = { + Acts::AxisDirection::AxisZ}; auto pixelNec = std::make_unique( "pixelNec", @@ -150,8 +153,8 @@ BOOST_AUTO_TEST_CASE(BlueprintCylindricalGapFilling) { // Barrel std::vector pixelBarrelBoundaries = {pixelIr + 1, pixelOr - 1., detectorHz - 2 * pixelEcHz}; - std::vector pixelBarrelBinning = { - Acts::BinningValue::binR}; + std::vector pixelBarrelBinning = { + Acts::AxisDirection::AxisR}; auto pixelBarrel = std::make_unique( "pixelBarrel", Acts::Transform3::Identity(), @@ -260,7 +263,8 @@ BOOST_AUTO_TEST_CASE(BlueprintCylindricalGapException) { // The root node - detector std::vector detectorBoundaries = {0., 50., 100.}; - std::vector detectorBinning = {Acts::BinningValue::binX}; + std::vector detectorBinning = { + Acts::AxisDirection::AxisX}; auto detector = std::make_unique( "detector", Acts::Transform3::Identity(), Acts::VolumeBounds::eCylinder, detectorBoundaries, detectorBinning); diff --git a/Tests/UnitTests/Core/Detector/BlueprintTests.cpp b/Tests/UnitTests/Core/Detector/BlueprintTests.cpp index 72be3a15c77..2c4a090d24f 100644 --- a/Tests/UnitTests/Core/Detector/BlueprintTests.cpp +++ b/Tests/UnitTests/Core/Detector/BlueprintTests.cpp @@ -23,7 +23,7 @@ BOOST_AUTO_TEST_CASE(BlueprintTest) { std::vector bValues = {0., 10., 100.}; // Create root node - std::vector binning = {Acts::BinningValue::binR}; + std::vector binning = {Acts::AxisDirection::AxisR}; auto root = std::make_unique( "detector", Acts::Transform3::Identity(), Acts::VolumeBounds::eOther, bValues, binning); diff --git a/Tests/UnitTests/Core/Detector/CuboidalContainerBuilderTests.cpp b/Tests/UnitTests/Core/Detector/CuboidalContainerBuilderTests.cpp index 8578b282a76..bc803685b2c 100644 --- a/Tests/UnitTests/Core/Detector/CuboidalContainerBuilderTests.cpp +++ b/Tests/UnitTests/Core/Detector/CuboidalContainerBuilderTests.cpp @@ -125,15 +125,15 @@ BOOST_AUTO_TEST_CASE(CuboidalContainerBuilder_Misconfiguration) { std::invalid_argument); // misconfiguration - 1D binning not in x, y, z misCfg.builders = {nullptr}; - misCfg.binning = Acts::BinningValue::binR; + misCfg.binning = Acts::AxisDirection::AxisR; BOOST_CHECK_THROW(auto b = CuboidalContainerBuilder(misCfg), std::invalid_argument); } BOOST_AUTO_TEST_CASE(CuboidalContainerBuildingXYZVolumes) { - std::array binningValues = {Acts::BinningValue::binX, - Acts::BinningValue::binY, - Acts::BinningValue::binZ}; + std::array binningValues = { + Acts::AxisDirection::AxisX, Acts::AxisDirection::AxisY, + Acts::AxisDirection::AxisZ}; for (auto bVal : binningValues) { // A perfect box shape auto box = Acts::CuboidVolumeBounds(10, 10, 10); diff --git a/Tests/UnitTests/Core/Detector/CuboidalDetectorFromBlueprintTests.cpp b/Tests/UnitTests/Core/Detector/CuboidalDetectorFromBlueprintTests.cpp index 8711a2847ab..e5259d79587 100644 --- a/Tests/UnitTests/Core/Detector/CuboidalDetectorFromBlueprintTests.cpp +++ b/Tests/UnitTests/Core/Detector/CuboidalDetectorFromBlueprintTests.cpp @@ -95,7 +95,7 @@ BOOST_AUTO_TEST_CASE(CuboidalDetectorFromBlueprintTest) { double pixelZ = 10; // Create root node - std::vector detectorBins = {Acts::BinningValue::binX}; + std::vector detectorBins = {Acts::AxisDirection::AxisX}; std::vector detectorBounds = {detectorX, detectorY, detectorZ}; // The root node - detector @@ -106,7 +106,7 @@ BOOST_AUTO_TEST_CASE(CuboidalDetectorFromBlueprintTest) { // Left arm std::vector leftArmBounds = {detectorX * 0.5, detectorY, detectorZ}; - std::vector leftArmBins = {Acts::BinningValue::binZ}; + std::vector leftArmBins = {Acts::AxisDirection::AxisZ}; Acts::Transform3 leftArmTransform = Acts::Transform3::Identity() * @@ -153,7 +153,7 @@ BOOST_AUTO_TEST_CASE(CuboidalDetectorFromBlueprintTest) { // Right arm std::vector rightArmBounds = {detectorX * 0.5, detectorY, detectorZ}; - std::vector rightArmBins = {Acts::BinningValue::binZ}; + std::vector rightArmBins = {Acts::AxisDirection::AxisZ}; Acts::Transform3 rightArmTransform = Acts::Transform3::Identity() * Acts::Translation3(detectorX * 0.5, 0., 0); @@ -258,76 +258,76 @@ BOOST_AUTO_TEST_CASE(CuboidalDetectorFromBlueprintTest) { double internalStretchLeftZ = detector->volumes()[0] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binZ)] + + .values()[toUnderlying(Acts::AxisDirection::AxisZ)] + detector->volumes()[1] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binZ)] + + .values()[toUnderlying(Acts::AxisDirection::AxisZ)] + detector->volumes()[2] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binZ)] + + .values()[toUnderlying(Acts::AxisDirection::AxisZ)] + detector->volumes()[3] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binZ)] + + .values()[toUnderlying(Acts::AxisDirection::AxisZ)] + detector->volumes()[4] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binZ)]; + .values()[toUnderlying(Acts::AxisDirection::AxisZ)]; double internalStretchRightZ = detector->volumes()[5] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binZ)] + + .values()[toUnderlying(Acts::AxisDirection::AxisZ)] + detector->volumes()[6] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binZ)] + + .values()[toUnderlying(Acts::AxisDirection::AxisZ)] + detector->volumes()[7] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binZ)] + + .values()[toUnderlying(Acts::AxisDirection::AxisZ)] + detector->volumes()[8] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binZ)] + + .values()[toUnderlying(Acts::AxisDirection::AxisZ)] + detector->volumes()[9] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binZ)]; + .values()[toUnderlying(Acts::AxisDirection::AxisZ)]; double internalStretchX1 = detector->volumes()[0] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binX)] + + .values()[toUnderlying(Acts::AxisDirection::AxisX)] + detector->volumes()[5] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binX)]; + .values()[toUnderlying(Acts::AxisDirection::AxisX)]; double internalStretchX2 = detector->volumes()[1] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binX)] + + .values()[toUnderlying(Acts::AxisDirection::AxisX)] + detector->volumes()[6] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binX)]; + .values()[toUnderlying(Acts::AxisDirection::AxisX)]; double internalStretchX3 = detector->volumes()[2] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binX)] + + .values()[toUnderlying(Acts::AxisDirection::AxisX)] + detector->volumes()[7] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binX)]; + .values()[toUnderlying(Acts::AxisDirection::AxisX)]; double internalStretchX4 = detector->volumes()[3] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binX)] + + .values()[toUnderlying(Acts::AxisDirection::AxisX)] + detector->volumes()[8] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binX)]; + .values()[toUnderlying(Acts::AxisDirection::AxisX)]; double internalStretchX5 = detector->volumes()[4] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binX)] + + .values()[toUnderlying(Acts::AxisDirection::AxisX)] + detector->volumes()[9] ->volumeBounds() - .values()[toUnderlying(Acts::BinningValue::binX)]; + .values()[toUnderlying(Acts::AxisDirection::AxisX)]; BOOST_CHECK_EQUAL(internalStretchLeftZ, detectorZ); BOOST_CHECK_EQUAL(internalStretchRightZ, detectorZ); @@ -338,9 +338,9 @@ BOOST_AUTO_TEST_CASE(CuboidalDetectorFromBlueprintTest) { BOOST_CHECK_EQUAL(internalStretchX5, detectorX); for (auto& volume : detector->volumes()) { - BOOST_CHECK_EQUAL( - volume->volumeBounds().values()[toUnderlying(Acts::BinningValue::binY)], - detectorY); + BOOST_CHECK_EQUAL(volume->volumeBounds() + .values()[toUnderlying(Acts::AxisDirection::AxisY)], + detectorY); } // There should be surfaces inside the pixel diff --git a/Tests/UnitTests/Core/Detector/CuboidalDetectorHelperTests.cpp b/Tests/UnitTests/Core/Detector/CuboidalDetectorHelperTests.cpp index 0f7e453ef35..388b9410d69 100644 --- a/Tests/UnitTests/Core/Detector/CuboidalDetectorHelperTests.cpp +++ b/Tests/UnitTests/Core/Detector/CuboidalDetectorHelperTests.cpp @@ -50,15 +50,15 @@ BOOST_AUTO_TEST_CASE(CubicVolumeExceptions) { volumeA, volumeB}; BOOST_CHECK_THROW(Acts::Experimental::detail::CuboidalDetectorHelper::connect( - tContext, volumes, Acts::BinningValue::binX, {}, + tContext, volumes, Acts::AxisDirection::AxisX, {}, Acts::Logging::VERBOSE), std::invalid_argument); } BOOST_AUTO_TEST_CASE(SimpleBoxConnection) { - std::array binningValues = {Acts::BinningValue::binX, - Acts::BinningValue::binY, - Acts::BinningValue::binZ}; + std::array binningValues = { + Acts::AxisDirection::AxisX, Acts::AxisDirection::AxisY, + Acts::AxisDirection::AxisZ}; for (auto bVal : binningValues) { // A perfect box shape auto box = std::make_shared(10, 10, 10); @@ -91,15 +91,15 @@ BOOST_AUTO_TEST_CASE(SimpleBoxConnection) { Acts::ObjVisualization3D obj; Acts::GeometryView3D::drawDetectorVolume(obj, *volumeA, tContext); Acts::GeometryView3D::drawDetectorVolume(obj, *volumeB, tContext); - obj.write("ConnectectBoxesRegular_" + Acts::binningValueName(bVal) + + obj.write("ConnectectBoxesRegular_" + Acts::axisDirectionName(bVal) + ".obj"); } } BOOST_AUTO_TEST_CASE(IrregularBoxConnectionInZ) { - std::vector binningValues = {Acts::BinningValue::binX, - Acts::BinningValue::binY, - Acts::BinningValue::binZ}; + std::vector binningValues = {Acts::AxisDirection::AxisX, + Acts::AxisDirection::AxisY, + Acts::AxisDirection::AxisZ}; using HlPos = std::array; using VolHlPos = std::array; @@ -170,7 +170,7 @@ BOOST_AUTO_TEST_CASE(IrregularBoxConnectionInZ) { Acts::GeometryView3D::drawDetectorVolume(obj, *volumeA, tContext); Acts::GeometryView3D::drawDetectorVolume(obj, *volumeB, tContext); Acts::GeometryView3D::drawDetectorVolume(obj, *volumeC, tContext); - obj.write("ConnectectBoxesIrregular_" + Acts::binningValueName(bVal) + + obj.write("ConnectectBoxesIrregular_" + Acts::axisDirectionName(bVal) + trstr + ".obj"); } } @@ -190,7 +190,7 @@ BOOST_AUTO_TEST_CASE(ContainerConnection) { // Move it into the bval direction auto transformB = Acts::Transform3::Identity(); Acts::Vector3 translationB = Acts::Vector3::Zero(); - translationB[toUnderlying(Acts::BinningValue::binX)] = 20; + translationB[toUnderlying(Acts::AxisDirection::AxisX)] = 20; transformB.pretranslate(translationB); // Create volume B auto volumeB = Acts::Experimental::DetectorVolumeFactory::construct( @@ -201,14 +201,14 @@ BOOST_AUTO_TEST_CASE(ContainerConnection) { volumeA, volumeB}; auto containerAB = Acts::Experimental::detail::CuboidalDetectorHelper::connect( - tContext, volumes, Acts::BinningValue::binX, {}, + tContext, volumes, Acts::AxisDirection::AxisX, {}, Acts::Logging::VERBOSE); // Create a CD container auto transformC = Acts::Transform3::Identity(); Acts::Vector3 translationC = Acts::Vector3::Zero(); - translationC[toUnderlying(Acts::BinningValue::binY)] = 20; + translationC[toUnderlying(Acts::AxisDirection::AxisY)] = 20; transformC.pretranslate(translationC); auto volumeC = Acts::Experimental::DetectorVolumeFactory::construct( @@ -217,8 +217,8 @@ BOOST_AUTO_TEST_CASE(ContainerConnection) { auto transformD = Acts::Transform3::Identity(); Acts::Vector3 translationD = Acts::Vector3::Zero(); - translationD[toUnderlying(Acts::BinningValue::binX)] = 20; - translationD[toUnderlying(Acts::BinningValue::binY)] = 20; + translationD[toUnderlying(Acts::AxisDirection::AxisX)] = 20; + translationD[toUnderlying(Acts::AxisDirection::AxisY)] = 20; transformD.pretranslate(translationD); auto volumeD = Acts::Experimental::DetectorVolumeFactory::construct( @@ -228,12 +228,12 @@ BOOST_AUTO_TEST_CASE(ContainerConnection) { volumes = {volumeC, volumeD}; auto containerCD = Acts::Experimental::detail::CuboidalDetectorHelper::connect( - tContext, volumes, Acts::BinningValue::binX, {}, + tContext, volumes, Acts::AxisDirection::AxisX, {}, Acts::Logging::VERBOSE); auto containerABCD = Acts::Experimental::detail::CuboidalDetectorHelper::connect( - tContext, {containerAB, containerCD}, Acts::BinningValue::binY, {}, + tContext, {containerAB, containerCD}, Acts::AxisDirection::AxisY, {}, Acts::Logging::VERBOSE); // Check the container is constructed diff --git a/Tests/UnitTests/Core/Detector/CylindricalContainerBuilderTests.cpp b/Tests/UnitTests/Core/Detector/CylindricalContainerBuilderTests.cpp index 3ee5c24cda3..52a93cfc0ea 100644 --- a/Tests/UnitTests/Core/Detector/CylindricalContainerBuilderTests.cpp +++ b/Tests/UnitTests/Core/Detector/CylindricalContainerBuilderTests.cpp @@ -84,19 +84,19 @@ BOOST_AUTO_TEST_CASE(CylindricaContainerBuilder_Misconfiguration) { std::invalid_argument); // misconfiguration - 1D binning not in z, r, phi misCfg.builders = {nullptr}; - misCfg.binning = {Acts::BinningValue::binX}; + misCfg.binning = {Acts::AxisDirection::AxisX}; BOOST_CHECK_THROW(auto b = CylindricalContainerBuilder(misCfg), std::invalid_argument); // misconfiguration - 2D binning not in z, r, misCfg.builders = {nullptr, nullptr}; - misCfg.binning = {Acts::BinningValue::binZ, Acts::BinningValue::binPhi}; + misCfg.binning = {Acts::AxisDirection::AxisZ, Acts::AxisDirection::AxisPhi}; BOOST_CHECK_THROW(auto c = CylindricalContainerBuilder(misCfg), std::invalid_argument); // misconfiguration - 2D binning in z, r, but not exactly 2 builders misCfg.builders = {nullptr, nullptr, nullptr}; - misCfg.binning = {Acts::BinningValue::binZ, Acts::BinningValue::binR}; + misCfg.binning = {Acts::AxisDirection::AxisZ, Acts::AxisDirection::AxisR}; BOOST_CHECK_THROW(auto d = CylindricalContainerBuilder(misCfg), std::invalid_argument); } @@ -127,12 +127,12 @@ BOOST_AUTO_TEST_CASE(CylindricaContainerBuildingZ) { CylindricalContainerBuilder::Config tripleZCfg; tripleZCfg.auxiliary = "*** Test 0 - Build triple in Z ***"; tripleZCfg.builders = {negDisc, barrel, posDisc}; - tripleZCfg.binning = {BinningValue::binZ}; + tripleZCfg.binning = {AxisDirection::AxisZ}; tripleZCfg.geoIdGenerator = std::make_shared(); // Create a materialBinning tripleZCfg.portalMaterialBinning[2u] = BinningDescription{ - {ProtoBinning(BinningValue::binZ, Acts::AxisBoundaryType::Bound, 50), - ProtoBinning(BinningValue::binPhi, Acts::AxisBoundaryType::Closed, + {ProtoBinning(AxisDirection::AxisZ, Acts::AxisBoundaryType::Bound, 50), + ProtoBinning(AxisDirection::AxisPhi, Acts::AxisBoundaryType::Closed, -std::numbers::pi, std::numbers::pi, 12)}}; // Let's test the reverse generation @@ -180,7 +180,7 @@ BOOST_AUTO_TEST_CASE(CylindricaContainerBuildingR) { CylindricalContainerBuilder::Config barrelRCfg; barrelRCfg.auxiliary = "*** Test 1 - Build multilayer barrel ***"; barrelRCfg.builders = {barrel0, barrel1, barrel2}; - barrelRCfg.binning = {BinningValue::binR}; + barrelRCfg.binning = {AxisDirection::AxisR}; barrelRCfg.geoIdGenerator = std::make_shared(); auto barrelR = std::make_shared( @@ -199,7 +199,7 @@ BOOST_AUTO_TEST_CASE(CylindricaContainerBuildingPhi) { // Create the container builder CylindricalContainerBuilder::Config barrelPhiCfg; barrelPhiCfg.auxiliary = "*** Test 2 - Build segmented phi barrel ***"; - barrelPhiCfg.binning = {BinningValue::binPhi}; + barrelPhiCfg.binning = {AxisDirection::AxisPhi}; unsigned int phiSectors = 5; double phiHalfSector = std::numbers::pi / phiSectors; @@ -267,7 +267,7 @@ BOOST_AUTO_TEST_CASE(CylindricalContainerBuilderDetector) { // Create the barrel container builder CylindricalContainerBuilder::Config barrelRCfg; barrelRCfg.builders = {barrel0, barrel1, barrel2}; - barrelRCfg.binning = {BinningValue::binR}; + barrelRCfg.binning = {AxisDirection::AxisR}; auto barrel = std::make_shared( barrelRCfg, getDefaultLogger("BarrelBuilderR", Logging::VERBOSE)); @@ -282,7 +282,7 @@ BOOST_AUTO_TEST_CASE(CylindricalContainerBuilderDetector) { // Create the barrel container builder CylindricalContainerBuilder::Config barrelEndcapCfg; barrelEndcapCfg.builders = {endcapN, barrel, endcapP}; - barrelEndcapCfg.binning = {BinningValue::binZ}; + barrelEndcapCfg.binning = {AxisDirection::AxisZ}; auto barrelEndcap = std::make_shared( barrelEndcapCfg, @@ -291,7 +291,7 @@ BOOST_AUTO_TEST_CASE(CylindricalContainerBuilderDetector) { // Create the barrel container builder CylindricalContainerBuilder::Config detectorCfg; detectorCfg.builders = {beampipe, barrelEndcap}; - detectorCfg.binning = {BinningValue::binR}; + detectorCfg.binning = {AxisDirection::AxisR}; auto detector = std::make_shared( detectorCfg, getDefaultLogger("DetectorBuilder", Logging::VERBOSE)); diff --git a/Tests/UnitTests/Core/Detector/CylindricalDetectorFromBlueprintTests.cpp b/Tests/UnitTests/Core/Detector/CylindricalDetectorFromBlueprintTests.cpp index 2a3a45518ee..0323b844921 100644 --- a/Tests/UnitTests/Core/Detector/CylindricalDetectorFromBlueprintTests.cpp +++ b/Tests/UnitTests/Core/Detector/CylindricalDetectorFromBlueprintTests.cpp @@ -91,7 +91,8 @@ BOOST_AUTO_TEST_CASE(CylindricalDetectorFromBlueprintTest) { double pixelEcLayerHz = 10; // Create root node - std::vector detectorBinning = {Acts::BinningValue::binR}; + std::vector detectorBinning = { + Acts::AxisDirection::AxisR}; std::vector detectorBoundaries = {detectorIr, detectorOr, detectorHz}; // The root node - detector @@ -112,14 +113,15 @@ BOOST_AUTO_TEST_CASE(CylindricalDetectorFromBlueprintTest) { // A pixel system std::vector pixelBoundaries = {pixelIr, pixelOr, detectorHz}; - std::vector pixelBinning = {Acts::BinningValue::binZ}; + std::vector pixelBinning = {Acts::AxisDirection::AxisZ}; auto pixel = std::make_unique( "pixel", Acts::Transform3::Identity(), Acts::VolumeBounds::eCylinder, pixelBoundaries, pixelBinning); // Nec: Small differences to check if the adjustments are made std::vector pixelEcBoundaries = {pixelIr, pixelOr - 5., pixelEcHz}; - std::vector pixelEcBinning = {Acts::BinningValue::binZ}; + std::vector pixelEcBinning = { + Acts::AxisDirection::AxisZ}; Acts::Transform3 pixelNecTransform = Acts::Transform3::Identity() * @@ -146,8 +148,8 @@ BOOST_AUTO_TEST_CASE(CylindricalDetectorFromBlueprintTest) { // Barrel std::vector pixelBarrelBoundaries = {pixelIr + 1, pixelOr - 1., detectorHz - 2 * pixelEcHz}; - std::vector pixelBarrelBinning = { - Acts::BinningValue::binR}; + std::vector pixelBarrelBinning = { + Acts::AxisDirection::AxisR}; auto pixelBarrel = std::make_unique( "pixel_barrel", Acts::Transform3::Identity(), @@ -205,8 +207,8 @@ BOOST_AUTO_TEST_CASE(CylindricalDetectorFromBlueprintTest) { detectorBpr->add(std::move(pixel)); // An Indexed volume finder will be attached - std::vector rootVolumeBinning = { - Acts::BinningValue::binZ, Acts::BinningValue::binR}; + std::vector rootVolumeBinning = { + Acts::AxisDirection::AxisZ, Acts::AxisDirection::AxisR}; detectorBpr->rootVolumeFinderBuilder = std::make_shared( rootVolumeBinning); diff --git a/Tests/UnitTests/Core/Detector/DetectorVolumeBuilderTests.cpp b/Tests/UnitTests/Core/Detector/DetectorVolumeBuilderTests.cpp index 7b0a551f36e..c23abf8339e 100644 --- a/Tests/UnitTests/Core/Detector/DetectorVolumeBuilderTests.cpp +++ b/Tests/UnitTests/Core/Detector/DetectorVolumeBuilderTests.cpp @@ -161,8 +161,8 @@ BOOST_AUTO_TEST_CASE(DetectorVolumeBuilder_EmptyVolume) { // Assign proto material to dvCfg.portalMaterialBinning[2u] = BinningDescription{ - {ProtoBinning(BinningValue::binZ, Acts::AxisBoundaryType::Bound, 50), - ProtoBinning(BinningValue::binPhi, Acts::AxisBoundaryType::Closed, + {ProtoBinning(AxisDirection::AxisZ, Acts::AxisBoundaryType::Bound, 50), + ProtoBinning(AxisDirection::AxisPhi, Acts::AxisBoundaryType::Closed, -std::numbers::pi, std::numbers::pi, 12)}}; auto dvBuilder = std::make_shared( diff --git a/Tests/UnitTests/Core/Detector/DetectorVolumeConsistencyTests.cpp b/Tests/UnitTests/Core/Detector/DetectorVolumeConsistencyTests.cpp index d46133b4760..f96ce7ab4a0 100644 --- a/Tests/UnitTests/Core/Detector/DetectorVolumeConsistencyTests.cpp +++ b/Tests/UnitTests/Core/Detector/DetectorVolumeConsistencyTests.cpp @@ -33,8 +33,8 @@ BOOST_AUTO_TEST_CASE(DetectorVolumeConsistencyFail) { // Move it into the bval direction auto transformB = Acts::Transform3::Identity(); Acts::Vector3 translationB = Acts::Vector3::Zero(); - translationB[toUnderlying(Acts::BinningValue::binX)] = 20; - translationB[toUnderlying(Acts::BinningValue::binY)] = 5; + translationB[toUnderlying(Acts::AxisDirection::AxisX)] = 20; + translationB[toUnderlying(Acts::AxisDirection::AxisY)] = 5; transformB.pretranslate(translationB); // Create volume B auto volumeB = Acts::Experimental::DetectorVolumeFactory::construct( @@ -46,7 +46,7 @@ BOOST_AUTO_TEST_CASE(DetectorVolumeConsistencyFail) { BOOST_CHECK_THROW(Acts::Experimental::detail::DetectorVolumeConsistency:: checkCenterAlignment(tContext, {volumeA, volumeB}, - Acts::BinningValue::binX), + Acts::AxisDirection::AxisX), std::invalid_argument); } @@ -62,7 +62,7 @@ BOOST_AUTO_TEST_CASE(DetectorVolumeConsistencyPass) { // Move it into the bval direction auto transformB = Acts::Transform3::Identity(); Acts::Vector3 translationB = Acts::Vector3::Zero(); - translationB[toUnderlying(Acts::BinningValue::binX)] = 20; + translationB[toUnderlying(Acts::AxisDirection::AxisX)] = 20; transformB.pretranslate(translationB); // Create volume B auto volumeB = Acts::Experimental::DetectorVolumeFactory::construct( @@ -74,7 +74,7 @@ BOOST_AUTO_TEST_CASE(DetectorVolumeConsistencyPass) { BOOST_CHECK_NO_THROW(Acts::Experimental::detail::DetectorVolumeConsistency:: checkCenterAlignment(tContext, {volumeA, volumeB}, - Acts::BinningValue::binX)); + Acts::AxisDirection::AxisX)); } BOOST_AUTO_TEST_SUITE_END() diff --git a/Tests/UnitTests/Core/Detector/DetectorVolumeTests.cpp b/Tests/UnitTests/Core/Detector/DetectorVolumeTests.cpp index 7c050c564bc..35f398b184b 100644 --- a/Tests/UnitTests/Core/Detector/DetectorVolumeTests.cpp +++ b/Tests/UnitTests/Core/Detector/DetectorVolumeTests.cpp @@ -185,10 +185,10 @@ BOOST_AUTO_TEST_CASE(CylindricalDetectorVolumePortals) { // Check the extent auto volumeExtent = tubeCylinderVolume->extent(tContext, 1); - CHECK_CLOSE_ABS(volumeExtent.min(Acts::BinningValue::binR), 10., 10e-5); - CHECK_CLOSE_ABS(volumeExtent.max(Acts::BinningValue::binR), 100., 10e-5); - CHECK_CLOSE_ABS(volumeExtent.min(Acts::BinningValue::binZ), -200., 10e-5); - CHECK_CLOSE_ABS(volumeExtent.max(Acts::BinningValue::binZ), 200., 10e-5); + CHECK_CLOSE_ABS(volumeExtent.min(Acts::AxisDirection::AxisR), 10., 10e-5); + CHECK_CLOSE_ABS(volumeExtent.max(Acts::AxisDirection::AxisR), 100., 10e-5); + CHECK_CLOSE_ABS(volumeExtent.min(Acts::AxisDirection::AxisZ), -200., 10e-5); + CHECK_CLOSE_ABS(volumeExtent.max(Acts::AxisDirection::AxisZ), 200., 10e-5); } BOOST_AUTO_TEST_CASE(UpdatePortal) { diff --git a/Tests/UnitTests/Core/Detector/IndexedRootVolumeFinderBuilderTests.cpp b/Tests/UnitTests/Core/Detector/IndexedRootVolumeFinderBuilderTests.cpp index f505e901236..30c9a1f9ce5 100644 --- a/Tests/UnitTests/Core/Detector/IndexedRootVolumeFinderBuilderTests.cpp +++ b/Tests/UnitTests/Core/Detector/IndexedRootVolumeFinderBuilderTests.cpp @@ -69,7 +69,7 @@ BOOST_AUTO_TEST_CASE(IndexedRootVolumeFinderBuilderCylindrical) { innerV, middleLV, middleDV, middleUV, middleRV, outerV}; IndexedRootVolumeFinderBuilder builder( - {Acts::BinningValue::binZ, Acts::BinningValue::binR}); + {Acts::AxisDirection::AxisZ, Acts::AxisDirection::AxisR}); // Let's construct a detector auto rootVolumeFinder = builder.construct(tContext, rootVolumes); diff --git a/Tests/UnitTests/Core/Detector/IndexedSurfaceGridFillerTests.cpp b/Tests/UnitTests/Core/Detector/IndexedSurfaceGridFillerTests.cpp index ffe66a708c6..62a25480ef2 100644 --- a/Tests/UnitTests/Core/Detector/IndexedSurfaceGridFillerTests.cpp +++ b/Tests/UnitTests/Core/Detector/IndexedSurfaceGridFillerTests.cpp @@ -20,7 +20,7 @@ #include "Acts/Surfaces/RectangleBounds.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Utilities/Axis.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinningType.hpp" #include "Acts/Utilities/Enumerate.hpp" #include "Acts/Utilities/Grid.hpp" @@ -127,7 +127,7 @@ BOOST_AUTO_TEST_CASE(IndexGridXYOneSurfaceCenter) { // Indexed Surface grid IndexedSurfacesNavigation indexedGridXY( - std::move(gridXY), {BinningValue::binX, BinningValue::binY}); + std::move(gridXY), {AxisDirection::AxisX, AxisDirection::AxisY}); // Create a single surface in the center auto rBounds = std::make_shared(4., 4.); @@ -163,7 +163,7 @@ BOOST_AUTO_TEST_CASE(IndexGridXYOneSurfaceBinValue) { // Indexed Surface grid IndexedSurfacesNavigation indexedGridXY( - std::move(gridXY), {BinningValue::binX, BinningValue::binY}); + std::move(gridXY), {AxisDirection::AxisX, AxisDirection::AxisY}); // Create a single surface in the center auto rBounds = std::make_shared(4., 4.); @@ -174,7 +174,7 @@ BOOST_AUTO_TEST_CASE(IndexGridXYOneSurfaceBinValue) { IndexedGridFiller filler{{}}; filler.oLogger = getDefaultLogger("IndexGridFiller", Logging::VERBOSE); - BinningValueReferenceGenerator generator; + AxisDirectionReferenceGenerator generator; std::vector> surfaces = {pSurface}; // Fill the surface @@ -200,7 +200,7 @@ BOOST_AUTO_TEST_CASE(IndexGridXYOneSurfacePolyhedron) { // Indexed Surface grid IndexedSurfacesNavigation indexedGridXY( - std::move(gridXY), {BinningValue::binX, BinningValue::binY}); + std::move(gridXY), {AxisDirection::AxisX, AxisDirection::AxisY}); // Create a single surface in the center auto rBounds = std::make_shared(4., 4.); @@ -237,7 +237,7 @@ BOOST_AUTO_TEST_CASE(IndexGridXYOneSurfacePolyhedronBinExpansion) { // Indexed Surface grid IndexedSurfacesNavigation indexedGridXY( - std::move(gridXY), {BinningValue::binX, BinningValue::binY}); + std::move(gridXY), {AxisDirection::AxisX, AxisDirection::AxisY}); // Create a single surface in the center auto rBounds = std::make_shared(4., 4.); @@ -274,7 +274,7 @@ BOOST_AUTO_TEST_CASE(IndexGridZPhiYOneSurfacePolyhedronBinExpansion) { // Indexed Surface grid IndexedSurfacesNavigation indexedGridZPhi( - std::move(gridZPhi), {BinningValue::binZ, BinningValue::binPhi}); + std::move(gridZPhi), {AxisDirection::AxisZ, AxisDirection::AxisPhi}); auto cBounds = std::make_shared(10, 2., std::numbers::pi / 30, 0.); @@ -312,7 +312,7 @@ BOOST_AUTO_TEST_CASE(IndexGridZPhiYOneSurfaceMPIPolyhedronBinExpansion) { // Indexed Surface grid IndexedSurfacesNavigation indexedGridZPhi( - std::move(gridZPhi), {BinningValue::binZ, BinningValue::binPhi}); + std::move(gridZPhi), {AxisDirection::AxisZ, AxisDirection::AxisPhi}); auto cBounds = std::make_shared(10, 2., std::numbers::pi / 10, 0.); diff --git a/Tests/UnitTests/Core/Detector/IndexedSurfacesGeneratorTests.cpp b/Tests/UnitTests/Core/Detector/IndexedSurfacesGeneratorTests.cpp index f95adbdcb3b..4d0bbe9634e 100644 --- a/Tests/UnitTests/Core/Detector/IndexedSurfacesGeneratorTests.cpp +++ b/Tests/UnitTests/Core/Detector/IndexedSurfacesGeneratorTests.cpp @@ -20,7 +20,7 @@ #include "Acts/Surfaces/RadialBounds.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Tests/CommonHelpers/CylindricalTrackingGeometry.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinningType.hpp" #include "Acts/Utilities/Delegate.hpp" #include "Acts/Utilities/Enumerate.hpp" @@ -54,7 +54,7 @@ BOOST_AUTO_TEST_CASE(RingDisc1D) { 55., 0., 2., 22u); IndexedSurfacesGenerator - irSurfaces{rSurfaces, {}, {BinningValue::binPhi}}; + irSurfaces{rSurfaces, {}, {AxisDirection::AxisPhi}}; GridAxisGenerators::EqClosed aGenerator{{-std::numbers::pi, std::numbers::pi}, 44u}; @@ -100,7 +100,7 @@ BOOST_AUTO_TEST_CASE(RingDisc1DWithSupport) { rSurfaces.push_back(dSurface.get()); IndexedSurfacesGenerator - irSurfaces{rSurfaces, {rSurfaces.size() - 1u}, {BinningValue::binPhi}}; + irSurfaces{rSurfaces, {rSurfaces.size() - 1u}, {AxisDirection::AxisPhi}}; GridAxisGenerators::EqClosed aGenerator{{-std::numbers::pi, std::numbers::pi}, 44u}; @@ -148,7 +148,7 @@ BOOST_AUTO_TEST_CASE(RingDisc2D) { rSurfaces.insert(rSurfaces.end(), rSurfacesR1.begin(), rSurfacesR1.end()); IndexedSurfacesGenerator - irSurfaces{rSurfaces, {}, {BinningValue::binR, BinningValue::binPhi}}; + irSurfaces{rSurfaces, {}, {AxisDirection::AxisR, AxisDirection::AxisPhi}}; GridAxisGenerators::VarBoundEqClosed aGenerator{ {24., 74., 110.}, {-std::numbers::pi, std::numbers::pi}, 44u}; @@ -194,7 +194,7 @@ BOOST_AUTO_TEST_CASE(RingDisc2DFine) { rSurfaces.insert(rSurfaces.end(), rSurfacesR2.begin(), rSurfacesR2.end()); IndexedSurfacesGenerator - irSurfaces{rSurfaces, {}, {BinningValue::binR, BinningValue::binPhi}}; + irSurfaces{rSurfaces, {}, {AxisDirection::AxisR, AxisDirection::AxisPhi}}; GridAxisGenerators::EqBoundEqClosed aGenerator{ {24., 152}, 8u, {-std::numbers::pi, std::numbers::pi}, 88u}; @@ -241,8 +241,10 @@ BOOST_AUTO_TEST_CASE(RingDisc2DFineExpanded) { rSurfaces.insert(rSurfaces.end(), rSurfacesR2.begin(), rSurfacesR2.end()); IndexedSurfacesGenerator - irSurfaces{ - rSurfaces, {}, {BinningValue::binR, BinningValue::binPhi}, {2u, 4u}}; + irSurfaces{rSurfaces, + {}, + {AxisDirection::AxisR, AxisDirection::AxisPhi}, + {2u, 4u}}; GridAxisGenerators::EqBoundEqClosed aGenerator{ {24., 152}, 8u, {-std::numbers::pi, std::numbers::pi}, 88u}; @@ -276,8 +278,10 @@ BOOST_AUTO_TEST_CASE(Cylinder2D) { 116., 3., 2., {52, 14}); IndexedSurfacesGenerator - icSurfaces{ - surfaces, {}, {BinningValue::binZ, BinningValue::binPhi}, {1u, 1u}}; + icSurfaces{surfaces, + {}, + {AxisDirection::AxisZ, AxisDirection::AxisPhi}, + {1u, 1u}}; GridAxisGenerators::EqBoundEqClosed aGenerator{ {-500., 500}, 28, {-std::numbers::pi, std::numbers::pi}, 52u}; diff --git a/Tests/UnitTests/Core/Detector/KdtSurfacesProviderTests.cpp b/Tests/UnitTests/Core/Detector/KdtSurfacesProviderTests.cpp index 254ded41d52..d12f0874a6c 100644 --- a/Tests/UnitTests/Core/Detector/KdtSurfacesProviderTests.cpp +++ b/Tests/UnitTests/Core/Detector/KdtSurfacesProviderTests.cpp @@ -99,12 +99,12 @@ BOOST_AUTO_TEST_CASE(KdtSurfacesProvider) { using KDTS = Acts::Experimental::KdtSurfaces<>; auto skdt = std::make_shared( - KDTS(tContext, pSurfaces, {BinningValue::binZ, BinningValue::binR})); + KDTS(tContext, pSurfaces, {AxisDirection::AxisZ, AxisDirection::AxisR})); // query: Negative disc 3, it should yield 22 surfaces Acts::Extent regionND3; - regionND3.set(BinningValue::binZ, -820, -780); - regionND3.set(BinningValue::binR, 0., 200.); + regionND3.set(AxisDirection::AxisZ, -820, -780); + regionND3.set(AxisDirection::AxisR, 0., 200.); Acts::Experimental::KdtSurfacesProvider<> end3(skdt, regionND3); auto nd3 = end3.surfaces(tContext); @@ -112,8 +112,8 @@ BOOST_AUTO_TEST_CASE(KdtSurfacesProvider) { // query: 2nd Pixel barrel Acts::Extent regionB1; - regionB1.set(BinningValue::binZ, -580, 580); - regionB1.set(BinningValue::binR, 60., 80.); + regionB1.set(AxisDirection::AxisZ, -580, 580); + regionB1.set(AxisDirection::AxisR, 60., 80.); Acts::Experimental::KdtSurfacesProvider<> ba1(skdt, regionB1); diff --git a/Tests/UnitTests/Core/Detector/LayerStructureBuilderTests.cpp b/Tests/UnitTests/Core/Detector/LayerStructureBuilderTests.cpp index bf4009335c6..cb36e6cf99f 100644 --- a/Tests/UnitTests/Core/Detector/LayerStructureBuilderTests.cpp +++ b/Tests/UnitTests/Core/Detector/LayerStructureBuilderTests.cpp @@ -68,7 +68,7 @@ BOOST_AUTO_TEST_CASE(LayerStructureBuilder_creationRing) { lsConfig.auxiliary = "*** Endcap with 22 surfaces ***"; lsConfig.surfacesProvider = endcapSurfaces; lsConfig.binnings = { - ProtoBinning(Acts::BinningValue::binPhi, Acts::AxisBoundaryType::Closed, + ProtoBinning(Acts::AxisDirection::AxisPhi, Acts::AxisBoundaryType::Closed, -std::numbers::pi, std::numbers::pi, 22u, 1u)}; auto endcapBuilder = Acts::Experimental::LayerStructureBuilder( @@ -89,8 +89,8 @@ BOOST_AUTO_TEST_CASE(LayerStructureBuilder_creationRing) { LayerSupport supportDisc; supportDisc.type = Acts::Surface::SurfaceType::Disc; supportDisc.offset = 15.; - supportDisc.internalConstraints = {Acts::BinningValue::binZ, - Acts::BinningValue::binR}; + supportDisc.internalConstraints = {Acts::AxisDirection::AxisZ, + Acts::AxisDirection::AxisR}; lsConfig.auxiliary = "*** Endcap with 22 surfaces + 1 support disc, " @@ -118,9 +118,9 @@ BOOST_AUTO_TEST_CASE(LayerStructureBuilder_creationRing) { // clearance: z is still from internals, but r is from the volume/external // // Second test with one support disc, but external constraint - supportDisc.internalConstraints = {Acts::BinningValue::binZ}; - supportDisc.volumeExtent.set(Acts::BinningValue::binR, 10., 120.); - supportDisc.volumeClearance[Acts::BinningValue::binR] = {2., 1.}; + supportDisc.internalConstraints = {Acts::AxisDirection::AxisZ}; + supportDisc.volumeExtent.set(Acts::AxisDirection::AxisR, 10., 120.); + supportDisc.volumeClearance[Acts::AxisDirection::AxisR] = {2., 1.}; lsConfig.supports = {supportDisc}; @@ -187,11 +187,11 @@ BOOST_AUTO_TEST_CASE(LayerStructureBuilder_creationCylinder) { lsConfig.auxiliary = "*** Barrel with 448 surfaces ***"; lsConfig.surfacesProvider = barrelSurfaces; lsConfig.binnings = { - Acts::Experimental::ProtoBinning{Acts::BinningValue::binZ, + Acts::Experimental::ProtoBinning{Acts::AxisDirection::AxisZ, Acts::AxisBoundaryType::Bound, -480., 480., 14u, 1u}, Acts::Experimental::ProtoBinning( - Acts::BinningValue::binPhi, Acts::AxisBoundaryType::Closed, + Acts::AxisDirection::AxisPhi, Acts::AxisBoundaryType::Closed, -std::numbers::pi, std::numbers::pi, 32u, 1u)}; auto barrelBuilder = Acts::Experimental::LayerStructureBuilder( @@ -211,8 +211,8 @@ BOOST_AUTO_TEST_CASE(LayerStructureBuilder_creationCylinder) { LayerSupport supportCylinder; supportCylinder.type = Acts::Surface::SurfaceType::Cylinder; supportCylinder.offset = 15.; - supportCylinder.internalConstraints = {Acts::BinningValue::binZ, - Acts::BinningValue::binR}; + supportCylinder.internalConstraints = {Acts::AxisDirection::AxisZ, + Acts::AxisDirection::AxisR}; lsConfig.supports = {supportCylinder}; lsConfig.auxiliary = "*** Barrel with 448 surfaces + 1 support cylinder, r/z evaluated ***"; @@ -229,9 +229,9 @@ BOOST_AUTO_TEST_CASE(LayerStructureBuilder_creationCylinder) { BOOST_CHECK(volumeUpdater1.connected()); // Second test: z-range externally given - supportCylinder.internalConstraints = {Acts::BinningValue::binR}; - supportCylinder.volumeExtent.set(Acts::BinningValue::binZ, -600., 600.); - supportCylinder.volumeClearance[Acts::BinningValue::binZ] = {2., 2.}; + supportCylinder.internalConstraints = {Acts::AxisDirection::AxisR}; + supportCylinder.volumeExtent.set(Acts::AxisDirection::AxisZ, -600., 600.); + supportCylinder.volumeClearance[Acts::AxisDirection::AxisZ] = {2., 2.}; lsConfig.supports = {supportCylinder}; lsConfig.auxiliary = "*** Barrel with 448 surfaces + 1 support cylinder, r evaluated, z given " diff --git a/Tests/UnitTests/Core/Detector/MultiWireStructureBuilderTests.cpp b/Tests/UnitTests/Core/Detector/MultiWireStructureBuilderTests.cpp index e9daba0e0a0..3939908064b 100644 --- a/Tests/UnitTests/Core/Detector/MultiWireStructureBuilderTests.cpp +++ b/Tests/UnitTests/Core/Detector/MultiWireStructureBuilderTests.cpp @@ -72,9 +72,9 @@ BOOST_AUTO_TEST_CASE(Multi_Wire_Structure_Builder_StrawSurfacesCreation) { mlCfg.mlSurfaces = strawSurfaces; mlCfg.mlBounds = vBounds; mlCfg.mlBinning = { - ProtoBinning(Acts::BinningValue::binX, Acts::AxisBoundaryType::Bound, + ProtoBinning(Acts::AxisDirection::AxisX, Acts::AxisBoundaryType::Bound, -vBounds[0], vBounds[0], nSurfacesX, 1u), - ProtoBinning(Acts::BinningValue::binY, Acts::AxisBoundaryType::Bound, + ProtoBinning(Acts::AxisDirection::AxisY, Acts::AxisBoundaryType::Bound, -vBounds[1], vBounds[1], nSurfacesY, 0u)}; MultiWireStructureBuilder mlBuilder(mlCfg); diff --git a/Tests/UnitTests/Core/Detector/ProtoBinningTests.cpp b/Tests/UnitTests/Core/Detector/ProtoBinningTests.cpp index 46492d9f27c..269292acd2d 100644 --- a/Tests/UnitTests/Core/Detector/ProtoBinningTests.cpp +++ b/Tests/UnitTests/Core/Detector/ProtoBinningTests.cpp @@ -20,29 +20,29 @@ BOOST_AUTO_TEST_SUITE(Detector) BOOST_AUTO_TEST_CASE(ProtoBinningPlaceHolderEquidistant) { // A valid placeholder binning - auto peq = - ProtoBinning(Acts::BinningValue::binX, Acts::AxisBoundaryType::Bound, 5u); + auto peq = ProtoBinning(Acts::AxisDirection::AxisX, + Acts::AxisBoundaryType::Bound, 5u); BOOST_CHECK_EQUAL(peq.bins(), 5u); } BOOST_AUTO_TEST_CASE(ProtoBinningEquidistant) { // An invalid binning, 0 bins given - BOOST_CHECK_THROW(ProtoBinning(Acts::BinningValue::binX, + BOOST_CHECK_THROW(ProtoBinning(Acts::AxisDirection::AxisX, Acts::AxisBoundaryType::Bound, 15., 20., 0), std::invalid_argument); // Another invalid binning, min/max swapped - BOOST_CHECK_THROW(ProtoBinning(Acts::BinningValue::binX, + BOOST_CHECK_THROW(ProtoBinning(Acts::AxisDirection::AxisX, Acts::AxisBoundaryType::Bound, 150., 20., 10), std::invalid_argument); // A valid binning - auto eq = ProtoBinning(Acts::BinningValue::binX, + auto eq = ProtoBinning(Acts::AxisDirection::AxisX, Acts::AxisBoundaryType::Bound, 0., 10., 5u); std::vector reference = {0., 2., 4., 6., 8., 10.}; BOOST_CHECK_EQUAL(eq.bins(), 5u); - BOOST_CHECK_EQUAL(eq.binValue, Acts::BinningValue::binX); + BOOST_CHECK_EQUAL(eq.axisDir, Acts::AxisDirection::AxisX); BOOST_CHECK(eq.axisType == Acts::AxisType::Equidistant); BOOST_CHECK(eq.boundaryType == Acts::AxisBoundaryType::Bound); BOOST_CHECK_EQUAL_COLLECTIONS(eq.edges.begin(), eq.edges.end(), @@ -52,17 +52,17 @@ BOOST_AUTO_TEST_CASE(ProtoBinningEquidistant) { BOOST_AUTO_TEST_CASE(ProtoBinningVariable) { // An invalid binning, edge size < 2u std::vector iedges = {12.}; - BOOST_CHECK_THROW(ProtoBinning(Acts::BinningValue::binX, + BOOST_CHECK_THROW(ProtoBinning(Acts::AxisDirection::AxisX, Acts::AxisBoundaryType::Bound, iedges), std::invalid_argument); // A valid binning std::vector varEdges = {0., 12., 13., 15., 20.}; - auto var = ProtoBinning(Acts::BinningValue::binX, + auto var = ProtoBinning(Acts::AxisDirection::AxisX, Acts::AxisBoundaryType::Bound, varEdges); BOOST_CHECK_EQUAL(var.bins(), 4u); - BOOST_CHECK_EQUAL(var.binValue, Acts::BinningValue::binX); + BOOST_CHECK_EQUAL(var.axisDir, Acts::AxisDirection::AxisX); BOOST_CHECK(var.axisType == Acts::AxisType::Variable); BOOST_CHECK(var.boundaryType == Acts::AxisBoundaryType::Bound); BOOST_CHECK_EQUAL_COLLECTIONS(var.edges.begin(), var.edges.end(), @@ -71,9 +71,11 @@ BOOST_AUTO_TEST_CASE(ProtoBinningVariable) { BOOST_AUTO_TEST_CASE(BinningDescriptionFromAndToBinUtility) { // A valid binning - Acts::BinUtility bUtility(5u, 0., 10., Acts::open, Acts::BinningValue::binR); + Acts::BinUtility bUtility(5u, 0., 10., Acts::open, + Acts::AxisDirection::AxisR); std::vector edges = {-std::numbers::pi, 0.1, std::numbers::pi}; - bUtility += Acts::BinUtility(edges, Acts::closed, Acts::BinningValue::binPhi); + bUtility += + Acts::BinUtility(edges, Acts::closed, Acts::AxisDirection::AxisPhi); auto bDescription = BinningDescription::fromBinUtility(bUtility); @@ -81,7 +83,8 @@ BOOST_AUTO_TEST_CASE(BinningDescriptionFromAndToBinUtility) { // Test the first entry BOOST_CHECK_EQUAL(bDescription.binning[0].bins(), 5u); - BOOST_CHECK_EQUAL(bDescription.binning[0].binValue, Acts::BinningValue::binR); + BOOST_CHECK_EQUAL(bDescription.binning[0].axisDir, + Acts::AxisDirection::AxisR); BOOST_CHECK(bDescription.binning[0].axisType == Acts::AxisType::Equidistant); BOOST_CHECK(bDescription.binning[0].boundaryType == Acts::AxisBoundaryType::Bound); @@ -89,8 +92,8 @@ BOOST_AUTO_TEST_CASE(BinningDescriptionFromAndToBinUtility) { // Check the second entry BOOST_CHECK_EQUAL(bDescription.binning[1].bins(), 2u); - BOOST_CHECK_EQUAL(bDescription.binning[1].binValue, - Acts::BinningValue::binPhi); + BOOST_CHECK_EQUAL(bDescription.binning[1].axisDir, + Acts::AxisDirection::AxisPhi); BOOST_CHECK(bDescription.binning[1].axisType == Acts::AxisType::Variable); BOOST_CHECK(bDescription.binning[1].boundaryType == Acts::AxisBoundaryType::Closed); diff --git a/Tests/UnitTests/Core/Detector/ProtoDetectorTests.cpp b/Tests/UnitTests/Core/Detector/ProtoDetectorTests.cpp index 71d571eda37..a8d7ee5cd55 100644 --- a/Tests/UnitTests/Core/Detector/ProtoDetectorTests.cpp +++ b/Tests/UnitTests/Core/Detector/ProtoDetectorTests.cpp @@ -35,56 +35,56 @@ Acts::ProtoDetector createProtoDetector() { // Container Acts::ProtoVolume detectorVolume; detectorVolume.name = "detector-container"; - detectorVolume.extent.set(Acts::BinningValue::binZ, -2000., 2000); + detectorVolume.extent.set(Acts::AxisDirection::AxisZ, -2000., 2000); // Beam Pipe volume Acts::ProtoVolume beamPipe; beamPipe.name = "beam-pipe"; - beamPipe.extent.set(Acts::BinningValue::binR, 0., 30.); + beamPipe.extent.set(Acts::AxisDirection::AxisR, 0., 30.); // Pixel section Acts::ProtoVolume pixelContainer; pixelContainer.name = "pixel-container"; - pixelContainer.extent.set(Acts::BinningValue::binR, 40., 200); + pixelContainer.extent.set(Acts::AxisDirection::AxisR, 40., 200); // Pixel volume sub structure Acts::ProtoVolume pixelNec; pixelNec.name = "pixel-nec"; - pixelNec.extent.set(Acts::BinningValue::binZ, -1900., -600); + pixelNec.extent.set(Acts::AxisDirection::AxisZ, -1900., -600); Acts::ProtoVolume pixelBarrel; pixelBarrel.name = "pixel-barrel"; - pixelBarrel.extent.set(Acts::BinningValue::binR, 41., 199.); - pixelBarrel.extent.set(Acts::BinningValue::binZ, -550., 550.); + pixelBarrel.extent.set(Acts::AxisDirection::AxisR, 41., 199.); + pixelBarrel.extent.set(Acts::AxisDirection::AxisZ, -550., 550.); Acts::ProtoVolume pixelBarrelL0; pixelBarrelL0.name = "pixel-barrel-l0"; - pixelBarrelL0.extent.set(Acts::BinningValue::binR, 45., 50.); + pixelBarrelL0.extent.set(Acts::AxisDirection::AxisR, 45., 50.); pixelBarrelL0.internal = Acts::ProtoVolume::InternalStructure{ Acts::Surface::SurfaceType::Cylinder}; Acts::ProtoVolume pixelBarrelL1; pixelBarrelL1.name = "pixel-barrel-l1"; - pixelBarrelL1.extent.set(Acts::BinningValue::binR, 70., 80.); + pixelBarrelL1.extent.set(Acts::AxisDirection::AxisR, 70., 80.); pixelBarrelL1.internal = Acts::ProtoVolume::InternalStructure{ Acts::Surface::SurfaceType::Cylinder}; pixelBarrel.container = Acts::ProtoVolume::ContainerStructure{ {pixelBarrelL0, pixelBarrelL1}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binR, {0., 1.})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisR, {0., 1.})}, true}; Acts::ProtoVolume pixelPec; pixelPec.name = "pixel-pec"; - pixelPec.extent.set(Acts::BinningValue::binZ, 600., 1900.); + pixelPec.extent.set(Acts::AxisDirection::AxisZ, 600., 1900.); pixelContainer.container = Acts::ProtoVolume::ContainerStructure{ {pixelNec, pixelBarrel, pixelPec}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binZ, {0., 1})}}; + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisZ, {0., 1})}}; detectorVolume.container = Acts::ProtoVolume::ContainerStructure{ {beamPipe, pixelContainer}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binR, {0., 1})}}; + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisR, {0., 1})}}; Acts::ProtoDetector detector; detector.name = "detector"; @@ -108,10 +108,10 @@ BOOST_AUTO_TEST_CASE(ProtoTrackingGeometryTests) { auto& detectorVolume = detector.worldVolume; // The detector volume should have received maximum dimensions - CHECK_CLOSE_ABS(detectorVolume.extent.min(Acts::BinningValue::binR), 0, + CHECK_CLOSE_ABS(detectorVolume.extent.min(Acts::AxisDirection::AxisR), 0, std::numeric_limits::epsilon()); - CHECK_CLOSE_ABS(detectorVolume.extent.max(Acts::BinningValue::binR), 200., + CHECK_CLOSE_ABS(detectorVolume.extent.max(Acts::AxisDirection::AxisR), 200., std::numeric_limits::epsilon()); // The detector container should have binning in R @@ -123,7 +123,7 @@ BOOST_AUTO_TEST_CASE(ProtoTrackingGeometryTests) { BOOST_CHECK_EQUAL(cts.constituentBinning.size(), 1u); BOOST_CHECK_EQUAL(cts.constituentBinning[0].type, Acts::arbitrary); BOOST_CHECK_EQUAL(cts.constituentBinning[0].binvalue, - Acts::BinningValue::binR); + Acts::AxisDirection::AxisR); const auto& binBoundaries = cts.constituentBinning[0].boundaries(); BOOST_CHECK_EQUAL(binBoundaries.size(), 3u); @@ -139,14 +139,14 @@ BOOST_AUTO_TEST_CASE(ProtoTrackingGeometryTests) { auto& beamPipe = cts.constituentVolumes[0u]; BOOST_CHECK_EQUAL(beamPipe.name, "beam-pipe"); - CHECK_CLOSE_ABS(beamPipe.extent.min(Acts::BinningValue::binZ), -2000., + CHECK_CLOSE_ABS(beamPipe.extent.min(Acts::AxisDirection::AxisZ), -2000., std::numeric_limits::epsilon()); - CHECK_CLOSE_ABS(beamPipe.extent.max(Acts::BinningValue::binZ), 2000., + CHECK_CLOSE_ABS(beamPipe.extent.max(Acts::AxisDirection::AxisZ), 2000., std::numeric_limits::epsilon()); // The new beam pipe radius should have been applied - CHECK_CLOSE_ABS(beamPipe.extent.max(Acts::BinningValue::binR), 35., + CHECK_CLOSE_ABS(beamPipe.extent.max(Acts::AxisDirection::AxisR), 35., std::numeric_limits::epsilon()); // The second volume is the pixel detector @@ -154,13 +154,13 @@ BOOST_AUTO_TEST_CASE(ProtoTrackingGeometryTests) { BOOST_CHECK_EQUAL(pixelContainer.name, "pixel-container"); // Pixel container should have fitting boundaries - CHECK_CLOSE_ABS(pixelContainer.extent.min(Acts::BinningValue::binR), 35., + CHECK_CLOSE_ABS(pixelContainer.extent.min(Acts::AxisDirection::AxisR), 35., std::numeric_limits::epsilon()); - CHECK_CLOSE_ABS(pixelContainer.extent.max(Acts::BinningValue::binR), 200., + CHECK_CLOSE_ABS(pixelContainer.extent.max(Acts::AxisDirection::AxisR), 200., std::numeric_limits::epsilon()); - CHECK_CLOSE_ABS(pixelContainer.extent.min(Acts::BinningValue::binZ), -2000., + CHECK_CLOSE_ABS(pixelContainer.extent.min(Acts::AxisDirection::AxisZ), -2000., std::numeric_limits::epsilon()); - CHECK_CLOSE_ABS(pixelContainer.extent.max(Acts::BinningValue::binZ), 2000., + CHECK_CLOSE_ABS(pixelContainer.extent.max(Acts::AxisDirection::AxisZ), 2000., std::numeric_limits::epsilon()); // The Pixel container has constituents @@ -170,10 +170,10 @@ BOOST_AUTO_TEST_CASE(ProtoTrackingGeometryTests) { // All of the internal containers should now have synchronized // inner & outer boundaries for (auto& pv : cts1.constituentVolumes) { - CHECK_CLOSE_ABS(pv.extent.min(Acts::BinningValue::binR), 35., + CHECK_CLOSE_ABS(pv.extent.min(Acts::AxisDirection::AxisR), 35., std::numeric_limits::epsilon()); - CHECK_CLOSE_ABS(pv.extent.max(Acts::BinningValue::binR), 200., + CHECK_CLOSE_ABS(pv.extent.max(Acts::AxisDirection::AxisR), 200., std::numeric_limits::epsilon()); } @@ -181,7 +181,7 @@ BOOST_AUTO_TEST_CASE(ProtoTrackingGeometryTests) { BOOST_CHECK_EQUAL(cts1.constituentBinning.size(), 1u); BOOST_CHECK_EQUAL(cts1.constituentBinning[0].type, Acts::arbitrary); BOOST_CHECK_EQUAL(cts1.constituentBinning[0].binvalue, - Acts::BinningValue::binZ); + Acts::AxisDirection::AxisZ); const auto& binBoundariesZ = cts1.constituentBinning[0].boundaries(); BOOST_CHECK_EQUAL(binBoundariesZ.size(), 4u); diff --git a/Tests/UnitTests/Core/Detector/ReferenceGeneratorsTests.cpp b/Tests/UnitTests/Core/Detector/ReferenceGeneratorsTests.cpp index 662119ab3a1..c623bc23fa0 100644 --- a/Tests/UnitTests/Core/Detector/ReferenceGeneratorsTests.cpp +++ b/Tests/UnitTests/Core/Detector/ReferenceGeneratorsTests.cpp @@ -41,10 +41,10 @@ BOOST_AUTO_TEST_CASE(CenterReference) { BOOST_AUTO_TEST_CASE(BinningPositionReference) { // Simply return binning position, we test only the behavior of the generator // not the output - auto binningPosition = - BinningValueReferenceGenerator{}.references( + auto referencePosition = + AxisDirectionReferenceGenerator{}.references( tContext, *pSurface); - BOOST_CHECK_EQUAL(binningPosition.size(), 1u); + BOOST_CHECK_EQUAL(referencePosition.size(), 1u); } BOOST_AUTO_TEST_CASE(PolyhedronReference) { diff --git a/Tests/UnitTests/Core/Detector/SupportSurfacesHelperTests.cpp b/Tests/UnitTests/Core/Detector/SupportSurfacesHelperTests.cpp index c93f529db78..d76b90be92b 100644 --- a/Tests/UnitTests/Core/Detector/SupportSurfacesHelperTests.cpp +++ b/Tests/UnitTests/Core/Detector/SupportSurfacesHelperTests.cpp @@ -43,8 +43,8 @@ BOOST_AUTO_TEST_CASE(CylindricalSupportCase) { // phi max = 2pi Acts::Extent lExtent; - lExtent.set(Acts::BinningValue::binR, 100., 110.); - lExtent.set(Acts::BinningValue::binZ, -400., 400.); + lExtent.set(Acts::AxisDirection::AxisR, 100., 110.); + lExtent.set(Acts::AxisDirection::AxisZ, -400., 400.); // Test creation of surface components CylindricalSupport csCreator{10., {1., 1.}}; @@ -101,8 +101,8 @@ BOOST_AUTO_TEST_CASE(DiscSupportCase) { // phi min = 0 // phi max = 2pi Acts::Extent lExtent; - lExtent.set(Acts::BinningValue::binR, 100., 400.); - lExtent.set(Acts::BinningValue::binZ, -405., -395.); + lExtent.set(Acts::AxisDirection::AxisR, 100., 400.); + lExtent.set(Acts::AxisDirection::AxisZ, -405., -395.); // Test creation of surface components DiscSupport dsCreator{0., {1., 1.}}; @@ -162,14 +162,14 @@ BOOST_AUTO_TEST_CASE(RectangularSupportCase) { // dy = [-200,200] // dz = [-50, -60] Acts::Extent lExtent; - lExtent.set(Acts::BinningValue::binX, -100., 100.); - lExtent.set(Acts::BinningValue::binY, -200., 200.); - lExtent.set(Acts::BinningValue::binZ, -60., -50.); + lExtent.set(Acts::AxisDirection::AxisX, -100., 100.); + lExtent.set(Acts::AxisDirection::AxisY, -200., 200.); + lExtent.set(Acts::AxisDirection::AxisZ, -60., -50.); // place in Z with offset 2_mm // Asymmetric clearances in x an y for testing RectangularSupport rsCreator{ - Acts::BinningValue::binZ, 2., {1., 2.}, {3., 4.}}; + Acts::AxisDirection::AxisZ, 2., {1., 2.}, {3., 4.}}; auto rsComponents = rsCreator(lExtent); auto& [rsType, rsValues, rsTransform] = rsComponents; @@ -192,8 +192,8 @@ BOOST_AUTO_TEST_CASE(RectangularSupportCase) { // Invalid / runtime checks Acts::Extent invalid; - invalid.set(Acts::BinningValue::binX, -100., 100.); - invalid.set(Acts::BinningValue::binY, -200., 200.); + invalid.set(Acts::AxisDirection::AxisX, -100., 100.); + invalid.set(Acts::AxisDirection::AxisY, -200., 200.); BOOST_CHECK_THROW(rsCreator(invalid), std::invalid_argument); } @@ -209,8 +209,8 @@ BOOST_AUTO_TEST_CASE(addCylinderSupportCase) { // -> did yield and extend of 100 < r 110 // The volume would give an extend of -400 < z < 400 Acts::Extent lExtent; - lExtent.set(Acts::BinningValue::binR, 100., 110.); - lExtent.set(Acts::BinningValue::binZ, -400., 400.); + lExtent.set(Acts::AxisDirection::AxisR, 100., 110.); + lExtent.set(Acts::AxisDirection::AxisZ, -400., 400.); // Cylinder support CylindricalSupport csCreator{10., {1., 1.}}; @@ -249,8 +249,8 @@ BOOST_AUTO_TEST_CASE(addDiscSupportCase) { // The Extent Acts::Extent lExtent; - lExtent.set(Acts::BinningValue::binR, 100., 400.); - lExtent.set(Acts::BinningValue::binZ, -110., -100.); + lExtent.set(Acts::AxisDirection::AxisR, 100., 400.); + lExtent.set(Acts::AxisDirection::AxisZ, -110., -100.); // Disc support: this would set the disc at the center DiscSupport dsCreator{0., {1., 1.}}; @@ -291,14 +291,14 @@ BOOST_AUTO_TEST_CASE(addRectangularSupportCase) { // dy = [-200,200] // dz = [-50, -60] Acts::Extent lExtent; - lExtent.set(Acts::BinningValue::binX, -100., 100.); - lExtent.set(Acts::BinningValue::binY, -200., 200.); - lExtent.set(Acts::BinningValue::binZ, -60., -50.); + lExtent.set(Acts::AxisDirection::AxisX, -100., 100.); + lExtent.set(Acts::AxisDirection::AxisY, -200., 200.); + lExtent.set(Acts::AxisDirection::AxisZ, -60., -50.); // place in Z with offset 2_mm // Asymmetric clearances in x an y for testing RectangularSupport rsCreator{ - Acts::BinningValue::binZ, 2., {1., 2.}, {3., 4.}}; + Acts::AxisDirection::AxisZ, 2., {1., 2.}, {3., 4.}}; // Add a single disc as a support surface Acts::Experimental::detail::SupportSurfacesHelper::addSupport( @@ -337,8 +337,8 @@ BOOST_AUTO_TEST_CASE(addMisconfiguredSupportCase) { std::invalid_argument); // The Extent - lExtent.set(Acts::BinningValue::binR, 100., 400.); - lExtent.set(Acts::BinningValue::binZ, -110., -100.); + lExtent.set(Acts::AxisDirection::AxisR, 100., 400.); + lExtent.set(Acts::AxisDirection::AxisZ, -110., -100.); // Wrong surface type struct InvalidCreator { diff --git a/Tests/UnitTests/Core/Detector/VolumeStructureBuilderTests.cpp b/Tests/UnitTests/Core/Detector/VolumeStructureBuilderTests.cpp index 9d7064a52a4..fb50110efd6 100644 --- a/Tests/UnitTests/Core/Detector/VolumeStructureBuilderTests.cpp +++ b/Tests/UnitTests/Core/Detector/VolumeStructureBuilderTests.cpp @@ -107,9 +107,9 @@ BOOST_AUTO_TEST_CASE(VolumeStructureBuilderCuboid) { // Cuboid volume from extent Extent cuboidExtent; - cuboidExtent.set(BinningValue::binX, -100, 100); - cuboidExtent.set(BinningValue::binY, -200, 200); - cuboidExtent.set(BinningValue::binZ, -300, 300); + cuboidExtent.set(AxisDirection::AxisX, -100, 100); + cuboidExtent.set(AxisDirection::AxisY, -200, 200); + cuboidExtent.set(AxisDirection::AxisZ, -300, 300); VolumeStructureBuilder::Config cuboidExtentConfig; cuboidExtentConfig.boundsType = VolumeBounds::BoundsType::eCuboid; @@ -224,8 +224,8 @@ BOOST_AUTO_TEST_CASE(VolumeStructureBuilderCylinder) { // Cylinder volume from extent Extent cylinderExtent; - cylinderExtent.set(BinningValue::binR, 100., 200.); - cylinderExtent.set(BinningValue::binZ, -800., 0.); + cylinderExtent.set(AxisDirection::AxisR, 100., 200.); + cylinderExtent.set(AxisDirection::AxisZ, -800., 0.); VolumeStructureBuilder::Config cylExtentConfig; cylExtentConfig.extent = cylinderExtent; diff --git a/Tests/UnitTests/Core/Geometry/BlueprintApiTests.cpp b/Tests/UnitTests/Core/Geometry/BlueprintApiTests.cpp index 737f410e24b..dd42e620a17 100644 --- a/Tests/UnitTests/Core/Geometry/BlueprintApiTests.cpp +++ b/Tests/UnitTests/Core/Geometry/BlueprintApiTests.cpp @@ -254,28 +254,28 @@ BOOST_AUTO_TEST_CASE(NodeApiTestContainers) { }; Blueprint::Config cfg; - cfg.envelope[BinningValue::binZ] = {20_mm, 20_mm}; - cfg.envelope[BinningValue::binR] = {0_mm, 20_mm}; + cfg.envelope[AxisDirection::AxisZ] = {20_mm, 20_mm}; + cfg.envelope[AxisDirection::AxisR] = {0_mm, 20_mm}; auto root = std::make_unique(cfg); root->addMaterial("GlobalMaterial", [&](MaterialDesignatorBlueprintNode& mat) { - Experimental::ProtoBinning zBinning{BinningValue::binZ, + Experimental::ProtoBinning zBinning{AxisDirection::AxisZ, AxisBoundaryType::Bound, 20}; - Experimental::ProtoBinning rPhiBinning{BinningValue::binRPhi, + Experimental::ProtoBinning rPhiBinning{AxisDirection::AxisRPhi, AxisBoundaryType::Bound, 20}; mat.setBinning(std::vector{std::tuple{ CylinderVolumeBounds::Face::OuterCylinder, rPhiBinning, zBinning}}); - mat.addCylinderContainer("Detector", BinningValue::binR, [&](auto& det) { - det.addCylinderContainer("Pixel", BinningValue::binZ, [&](auto& cyl) { + mat.addCylinderContainer("Detector", AxisDirection::AxisR, [&](auto& det) { + det.addCylinderContainer("Pixel", AxisDirection::AxisZ, [&](auto& cyl) { cyl.setAttachmentStrategy(CylinderVolumeStack::AttachmentStrategy::Gap) .setResizeStrategy(CylinderVolumeStack::ResizeStrategy::Gap); cyl.addCylinderContainer( - "PixelNegativeEndcap", BinningValue::binZ, [&](auto& ec) { + "PixelNegativeEndcap", AxisDirection::AxisZ, [&](auto& ec) { ec.setAttachmentStrategy( CylinderVolumeStack::AttachmentStrategy::Gap); @@ -307,7 +307,7 @@ BOOST_AUTO_TEST_CASE(NodeApiTestContainers) { }); cyl.addCylinderContainer( - "PixelBarrel", BinningValue::binR, [&](auto& brl) { + "PixelBarrel", AxisDirection::AxisR, [&](auto& brl) { brl.setAttachmentStrategy( CylinderVolumeStack::AttachmentStrategy::Gap) .setResizeStrategy(CylinderVolumeStack::ResizeStrategy::Gap); @@ -342,7 +342,7 @@ BOOST_AUTO_TEST_CASE(NodeApiTestContainers) { }); auto& ec = - cyl.addCylinderContainer("PixelPosWrapper", BinningValue::binR); + cyl.addCylinderContainer("PixelPosWrapper", AxisDirection::AxisR); ec.setResizeStrategy(CylinderVolumeStack::ResizeStrategy::Gap); ec.addStaticVolume(std::make_unique( base * Translation3{Vector3{0, 0, 600_mm}}, diff --git a/Tests/UnitTests/Core/Geometry/BlueprintTests.cpp b/Tests/UnitTests/Core/Geometry/BlueprintTests.cpp index c3a0ecc028f..6d7a1a30fb9 100644 --- a/Tests/UnitTests/Core/Geometry/BlueprintTests.cpp +++ b/Tests/UnitTests/Core/Geometry/BlueprintTests.cpp @@ -168,8 +168,8 @@ BOOST_AUTO_TEST_CASE(Depth) { BOOST_AUTO_TEST_CASE(Static) { Blueprint::Config cfg; - cfg.envelope[BinningValue::binZ] = {20_mm, 20_mm}; - cfg.envelope[BinningValue::binR] = {1_mm, 2_mm}; + cfg.envelope[AxisDirection::AxisZ] = {20_mm, 20_mm}; + cfg.envelope[AxisDirection::AxisR] = {1_mm, 2_mm}; Blueprint root{cfg}; double hlZ = 30_mm; @@ -209,11 +209,11 @@ BOOST_AUTO_TEST_CASE(Static) { BOOST_AUTO_TEST_CASE(CylinderContainer) { Blueprint::Config cfg; - cfg.envelope[BinningValue::binZ] = {20_mm, 20_mm}; - cfg.envelope[BinningValue::binR] = {2_mm, 20_mm}; + cfg.envelope[AxisDirection::AxisZ] = {20_mm, 20_mm}; + cfg.envelope[AxisDirection::AxisR] = {2_mm, 20_mm}; auto root = std::make_unique(cfg); - auto& cyl = root->addCylinderContainer("Container", BinningValue::binZ); + auto& cyl = root->addCylinderContainer("Container", AxisDirection::AxisZ); cyl.setAttachmentStrategy(CylinderVolumeStack::AttachmentStrategy::Gap); double z0 = -200_mm; @@ -262,8 +262,8 @@ BOOST_AUTO_TEST_CASE(Confined) { Transform3 base{Transform3::Identity()}; Blueprint::Config cfg; - cfg.envelope[BinningValue::binZ] = {20_mm, 20_mm}; - cfg.envelope[BinningValue::binR] = {2_mm, 20_mm}; + cfg.envelope[AxisDirection::AxisZ] = {20_mm, 20_mm}; + cfg.envelope[AxisDirection::AxisR] = {2_mm, 20_mm}; auto root = std::make_unique(cfg); root->addStaticVolume( @@ -472,8 +472,8 @@ BOOST_AUTO_TEST_CASE(CylinderLayer) { BOOST_AUTO_TEST_CASE(Material) { Blueprint::Config cfg; - cfg.envelope[BinningValue::binZ] = {20_mm, 20_mm}; - cfg.envelope[BinningValue::binR] = {1_mm, 2_mm}; + cfg.envelope[AxisDirection::AxisZ] = {20_mm, 20_mm}; + cfg.envelope[AxisDirection::AxisR] = {1_mm, 2_mm}; Blueprint root{cfg}; double hlZ = 30_mm; @@ -481,17 +481,17 @@ BOOST_AUTO_TEST_CASE(Material) { auto cyl = std::make_unique(Transform3::Identity(), cylBounds, "child"); - using enum BinningValue; + using enum AxisDirection; using enum CylinderVolumeBounds::Face; using enum AxisBoundaryType; root.addMaterial("Material", [&](auto& mat) { // @TODO: This API is not great mat.setBinning(std::vector{ - std::tuple{NegativeDisc, Experimental::ProtoBinning{binR, Bound, 5}, - Experimental::ProtoBinning{binPhi, Bound, 10}}, - std::tuple{PositiveDisc, Experimental::ProtoBinning{binR, Bound, 15}, - Experimental::ProtoBinning{binPhi, Bound, 20}}, + std::tuple{NegativeDisc, Experimental::ProtoBinning{AxisR, Bound, 5}, + Experimental::ProtoBinning{AxisPhi, Bound, 10}}, + std::tuple{PositiveDisc, Experimental::ProtoBinning{AxisR, Bound, 15}, + Experimental::ProtoBinning{AxisPhi, Bound, 20}}, }); mat.addStaticVolume(std::move(cyl)); diff --git a/Tests/UnitTests/Core/Geometry/CuboidVolumeBoundsTests.cpp b/Tests/UnitTests/Core/Geometry/CuboidVolumeBoundsTests.cpp index a4c18aa3609..79688dad718 100644 --- a/Tests/UnitTests/Core/Geometry/CuboidVolumeBoundsTests.cpp +++ b/Tests/UnitTests/Core/Geometry/CuboidVolumeBoundsTests.cpp @@ -104,10 +104,13 @@ BOOST_AUTO_TEST_CASE(CuboidVolumeProperties) { } // Check the binning value positions - CHECK_CLOSE_ABS(box.binningBorder(Acts::BinningValue::binX), hx, s_epsilon); - CHECK_CLOSE_ABS(box.binningBorder(Acts::BinningValue::binY), hy, s_epsilon); - CHECK_CLOSE_ABS(box.binningBorder(Acts::BinningValue::binZ), hz, s_epsilon); - CHECK_CLOSE_ABS(box.binningBorder(Acts::BinningValue::binR), + CHECK_CLOSE_ABS(box.referenceBorder(Acts::AxisDirection::AxisX), hx, + s_epsilon); + CHECK_CLOSE_ABS(box.referenceBorder(Acts::AxisDirection::AxisY), hy, + s_epsilon); + CHECK_CLOSE_ABS(box.referenceBorder(Acts::AxisDirection::AxisZ), hz, + s_epsilon); + CHECK_CLOSE_ABS(box.referenceBorder(Acts::AxisDirection::AxisR), std::sqrt(hx * hx + hy * hy), s_epsilon); } diff --git a/Tests/UnitTests/Core/Geometry/CutoutCylinderVolumeBoundsTests.cpp b/Tests/UnitTests/Core/Geometry/CutoutCylinderVolumeBoundsTests.cpp index 7518ad5489a..90a455ebc81 100644 --- a/Tests/UnitTests/Core/Geometry/CutoutCylinderVolumeBoundsTests.cpp +++ b/Tests/UnitTests/Core/Geometry/CutoutCylinderVolumeBoundsTests.cpp @@ -194,7 +194,8 @@ BOOST_AUTO_TEST_CASE(CutoutCylinderVolumeOrientedBoundaries) { Vector3 zaxis(0., 0., 1.); for (auto& os : ccvbOrientedSurfaces) { - auto onSurface = os.surface->binningPosition(geoCtx, BinningValue::binR); + auto onSurface = + os.surface->referencePosition(geoCtx, AxisDirection::AxisR); auto locPos = os.surface->globalToLocal(geoCtx, onSurface, Vector3::Zero()).value(); auto osNormal = os.surface->normal(geoCtx, locPos); diff --git a/Tests/UnitTests/Core/Geometry/CylinderVolumeBoundsTests.cpp b/Tests/UnitTests/Core/Geometry/CylinderVolumeBoundsTests.cpp index 9de254dfb68..9c7ce9ac061 100644 --- a/Tests/UnitTests/Core/Geometry/CylinderVolumeBoundsTests.cpp +++ b/Tests/UnitTests/Core/Geometry/CylinderVolumeBoundsTests.cpp @@ -311,7 +311,8 @@ BOOST_AUTO_TEST_CASE(CylinderVolumeOrientedBoundaries) { Vector3 zaxis(0., 0., 1.); for (auto& os : cvbOrientedSurfaces) { - auto onSurface = os.surface->binningPosition(geoCtx, BinningValue::binR); + auto onSurface = + os.surface->referencePosition(geoCtx, AxisDirection::AxisR); auto locPos = os.surface->globalToLocal(geoCtx, onSurface, Vector3::Zero()).value(); auto osNormal = os.surface->normal(geoCtx, locPos); diff --git a/Tests/UnitTests/Core/Geometry/CylinderVolumeStackTests.cpp b/Tests/UnitTests/Core/Geometry/CylinderVolumeStackTests.cpp index 4ed2d419c49..59987bfb42e 100644 --- a/Tests/UnitTests/Core/Geometry/CylinderVolumeStackTests.cpp +++ b/Tests/UnitTests/Core/Geometry/CylinderVolumeStackTests.cpp @@ -108,12 +108,12 @@ BOOST_DATA_TEST_CASE(Baseline, if (shift < 1.0) { BOOST_CHECK_THROW( - CylinderVolumeStack(volumes, BinningValue::binZ, strategy, + CylinderVolumeStack(volumes, AxisDirection::AxisZ, strategy, CylinderVolumeStack::ResizeStrategy::Gap, *logger), std::invalid_argument); return; } - CylinderVolumeStack cylStack(volumes, BinningValue::binZ, strategy, + CylinderVolumeStack cylStack(volumes, AxisDirection::AxisZ, strategy, CylinderVolumeStack::ResizeStrategy::Gap, *logger); @@ -341,9 +341,10 @@ BOOST_AUTO_TEST_CASE(Asymmetric) { std::vector volumes = {vol2.get(), vol1.get(), vol3.get()}; - CylinderVolumeStack cylStack( - volumes, BinningValue::binZ, CylinderVolumeStack::AttachmentStrategy::Gap, - CylinderVolumeStack::ResizeStrategy::Gap, *logger); + CylinderVolumeStack cylStack(volumes, AxisDirection::AxisZ, + CylinderVolumeStack::AttachmentStrategy::Gap, + CylinderVolumeStack::ResizeStrategy::Gap, + *logger); BOOST_CHECK_EQUAL(volumes.size(), 5); auto stackBounds = @@ -383,7 +384,7 @@ BOOST_DATA_TEST_CASE(RotationInZ, boost::unit_test::data::make(strategies), std::vector volumes = {vol1.get(), vol2.get()}; - CylinderVolumeStack cylStack(volumes, BinningValue::binZ, strategy, + CylinderVolumeStack cylStack(volumes, AxisDirection::AxisZ, strategy, CylinderVolumeStack::ResizeStrategy::Gap, *logger); @@ -479,7 +480,7 @@ BOOST_DATA_TEST_CASE(UpdateStack, transform3}; CylinderVolumeStack cylStack( - volumes, BinningValue::binZ, + volumes, AxisDirection::AxisZ, CylinderVolumeStack::AttachmentStrategy::Gap, // should not make a // difference strategy, *logger); @@ -710,7 +711,7 @@ BOOST_DATA_TEST_CASE( std::vector volumes = {vol1.get(), vol2.get()}; - CylinderVolumeStack cylStack{volumes, BinningValue::binZ, + CylinderVolumeStack cylStack{volumes, AxisDirection::AxisZ, CylinderVolumeStack::AttachmentStrategy::Gap, strategy, *logger}; const auto* originalBounds = @@ -822,7 +823,7 @@ BOOST_AUTO_TEST_CASE(ResizeReproduction1) { Volume vol1{trf1, bounds1}; std::vector volumes = {&vol1}; - CylinderVolumeStack stack(volumes, BinningValue::binZ, + CylinderVolumeStack stack(volumes, AxisDirection::AxisZ, CylinderVolumeStack::AttachmentStrategy::Gap, CylinderVolumeStack::ResizeStrategy::Gap, *logger); @@ -848,7 +849,7 @@ BOOST_AUTO_TEST_CASE(ResizeReproduction2) { Volume vol1{trf1, bounds1}; std::vector volumes = {&vol1}; - CylinderVolumeStack stack(volumes, BinningValue::binZ, + CylinderVolumeStack stack(volumes, AxisDirection::AxisZ, CylinderVolumeStack::AttachmentStrategy::Gap, CylinderVolumeStack::ResizeStrategy::Gap, *logger); @@ -901,7 +902,7 @@ BOOST_AUTO_TEST_CASE(ResizeGapMultiple) { BOOST_TEST_CONTEXT("Positive") { std::vector volumes = {&vol}; - CylinderVolumeStack stack(volumes, BinningValue::binZ, + CylinderVolumeStack stack(volumes, AxisDirection::AxisZ, CylinderVolumeStack::AttachmentStrategy::Gap, CylinderVolumeStack::ResizeStrategy::Gap, *logger); @@ -938,7 +939,7 @@ BOOST_AUTO_TEST_CASE(ResizeGapMultiple) { BOOST_TEST_CONTEXT("Negative") { std::vector volumes = {&vol}; - CylinderVolumeStack stack(volumes, BinningValue::binZ, + CylinderVolumeStack stack(volumes, AxisDirection::AxisZ, CylinderVolumeStack::AttachmentStrategy::Gap, CylinderVolumeStack::ResizeStrategy::Gap, *logger); @@ -1034,13 +1035,13 @@ BOOST_DATA_TEST_CASE(Baseline, if (f < 0.0) { BOOST_CHECK_THROW( - CylinderVolumeStack(volumes, BinningValue::binR, strategy, + CylinderVolumeStack(volumes, AxisDirection::AxisR, strategy, CylinderVolumeStack::ResizeStrategy::Gap, *logger), std::invalid_argument); return; } - CylinderVolumeStack cylStack(volumes, BinningValue::binR, strategy, + CylinderVolumeStack cylStack(volumes, AxisDirection::AxisR, strategy, CylinderVolumeStack::ResizeStrategy::Gap, *logger); @@ -1276,7 +1277,7 @@ BOOST_DATA_TEST_CASE(UpdateStack, } cylStack = std::make_unique( - volumes, BinningValue::binR, + volumes, AxisDirection::AxisR, CylinderVolumeStack::AttachmentStrategy::Gap, // should not make a // difference strategy, *logger); @@ -1595,7 +1596,7 @@ BOOST_DATA_TEST_CASE( std::vector volumes = {vol1.get(), vol2.get()}; - CylinderVolumeStack cylStack{volumes, BinningValue::binR, + CylinderVolumeStack cylStack{volumes, AxisDirection::AxisR, CylinderVolumeStack::AttachmentStrategy::Gap, strategy, *logger}; const auto* originalBounds = @@ -1671,7 +1672,7 @@ BOOST_AUTO_TEST_CASE(ResizeGapMultiple) { BOOST_TEST_CONTEXT("Outer") { std::vector volumes = {&vol}; - CylinderVolumeStack stack(volumes, BinningValue::binR, + CylinderVolumeStack stack(volumes, AxisDirection::AxisR, CylinderVolumeStack::AttachmentStrategy::Gap, CylinderVolumeStack::ResizeStrategy::Gap, *logger); @@ -1706,7 +1707,7 @@ BOOST_AUTO_TEST_CASE(ResizeGapMultiple) { BOOST_TEST_CONTEXT("Inner") { std::vector volumes = {&vol}; - CylinderVolumeStack stack(volumes, BinningValue::binR, + CylinderVolumeStack stack(volumes, AxisDirection::AxisR, CylinderVolumeStack::AttachmentStrategy::Gap, CylinderVolumeStack::ResizeStrategy::Gap, *logger); @@ -1753,22 +1754,24 @@ BOOST_DATA_TEST_CASE(JoinCylinderVolumesInvalidDirection, volumes.push_back(vol1.get()); // Single volume invalid direction still gives an error - BOOST_CHECK_THROW(CylinderVolumeStack(volumes, BinningValue::binY, strategy), - std::invalid_argument); + BOOST_CHECK_THROW( + CylinderVolumeStack(volumes, AxisDirection::AxisY, strategy), + std::invalid_argument); auto vol2 = std::make_shared( Transform3::Identity(), std::make_shared(100_mm, 400_mm, 400_mm)); volumes.push_back(vol2.get()); - BOOST_CHECK_THROW(CylinderVolumeStack(volumes, BinningValue::binY, strategy), - std::invalid_argument); + BOOST_CHECK_THROW( + CylinderVolumeStack(volumes, AxisDirection::AxisY, strategy), + std::invalid_argument); } BOOST_DATA_TEST_CASE(JoinCylinderVolumesInvalidInput, (boost::unit_test::data::make(strategies) * - boost::unit_test::data::make(Acts::BinningValue::binZ, - Acts::BinningValue::binR)), + boost::unit_test::data::make(Acts::AxisDirection::AxisZ, + Acts::AxisDirection::AxisR)), strategy, direction) { BOOST_TEST_CONTEXT("Empty Volume") { std::vector volumes; @@ -1857,7 +1860,7 @@ BOOST_DATA_TEST_CASE(JoinCylinderVolumesInvalidInput, { std::shared_ptr vol; - if (direction == BinningValue::binZ) { + if (direction == AxisDirection::AxisZ) { vol = std::make_shared( Transform3{Translation3{Vector3{0_mm, 0_mm, 500_mm}}}, invalid); } else { @@ -1881,8 +1884,8 @@ BOOST_DATA_TEST_CASE(JoinCylinderVolumesInvalidInput, } BOOST_DATA_TEST_CASE(JoinCylinderVolumeSingle, - (boost::unit_test::data::make(Acts::BinningValue::binZ, - Acts::BinningValue::binR) * + (boost::unit_test::data::make(Acts::AxisDirection::AxisZ, + Acts::AxisDirection::AxisR) * boost::unit_test::data::make(strategies)), direction, strategy) { auto vol = std::make_shared( diff --git a/Tests/UnitTests/Core/Geometry/ExtentTests.cpp b/Tests/UnitTests/Core/Geometry/ExtentTests.cpp index 3d0595f807d..2b0f4d5ad95 100644 --- a/Tests/UnitTests/Core/Geometry/ExtentTests.cpp +++ b/Tests/UnitTests/Core/Geometry/ExtentTests.cpp @@ -42,24 +42,24 @@ BOOST_AUTO_TEST_CASE(ExtentTest) { double phiMax = std::atan2(3_mm, 15_mm); double rMin = std::hypot(15_mm, 3_mm); - CHECK_CLOSE_ABS(gExt.min(BinningValue::binX), 15_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.max(BinningValue::binX), 18_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.min(BinningValue::binY), -3_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.max(BinningValue::binY), 3_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.min(BinningValue::binZ), -10_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.max(BinningValue::binZ), 10_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.min(BinningValue::binR), rMin, 1e-6); - CHECK_CLOSE_ABS(gExt.max(BinningValue::binR), 18_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.min(BinningValue::binPhi), phiMin, 1e-6); - CHECK_CLOSE_ABS(gExt.max(BinningValue::binPhi), phiMax, 1e-6); + CHECK_CLOSE_ABS(gExt.min(AxisDirection::AxisX), 15_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.max(AxisDirection::AxisX), 18_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.min(AxisDirection::AxisY), -3_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.max(AxisDirection::AxisY), 3_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.min(AxisDirection::AxisZ), -10_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.max(AxisDirection::AxisZ), 10_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.min(AxisDirection::AxisR), rMin, 1e-6); + CHECK_CLOSE_ABS(gExt.max(AxisDirection::AxisR), 18_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.min(AxisDirection::AxisPhi), phiMin, 1e-6); + CHECK_CLOSE_ABS(gExt.max(AxisDirection::AxisPhi), phiMax, 1e-6); // Call with histogram filling Extent gExtHist; for (const auto& v : vertices) { - gExtHist.extend(v, {BinningValue::binX}, false, true); + gExtHist.extend(v, {AxisDirection::AxisX}, false, true); } const auto& vHist = gExtHist.valueHistograms(); - auto xVals = vHist[toUnderlying(BinningValue::binX)]; + auto xVals = vHist[toUnderlying(AxisDirection::AxisX)]; BOOST_CHECK_EQUAL(xVals.size(), 6u); std::vector reference = {15_mm, 18_mm, 15_mm, 15_mm, 18_mm, 15_mm}; @@ -68,31 +68,31 @@ BOOST_AUTO_TEST_CASE(ExtentTest) { // Call with ieterator range Extent gExtItr; gExtItr.extend(vertices.begin(), vertices.end()); - CHECK_CLOSE_ABS(gExtItr.min(BinningValue::binX), 15_mm, 1e-6); - CHECK_CLOSE_ABS(gExtItr.max(BinningValue::binX), 18_mm, 1e-6); - CHECK_CLOSE_ABS(gExtItr.min(BinningValue::binY), -3_mm, 1e-6); - CHECK_CLOSE_ABS(gExtItr.max(BinningValue::binY), 3_mm, 1e-6); - CHECK_CLOSE_ABS(gExtItr.min(BinningValue::binZ), -10_mm, 1e-6); - CHECK_CLOSE_ABS(gExtItr.max(BinningValue::binZ), 10_mm, 1e-6); - CHECK_CLOSE_ABS(gExtItr.min(BinningValue::binR), rMin, 1e-6); - CHECK_CLOSE_ABS(gExtItr.max(BinningValue::binR), 18_mm, 1e-6); - CHECK_CLOSE_ABS(gExtItr.min(BinningValue::binPhi), phiMin, 1e-6); - CHECK_CLOSE_ABS(gExtItr.max(BinningValue::binPhi), phiMax, 1e-6); + CHECK_CLOSE_ABS(gExtItr.min(AxisDirection::AxisX), 15_mm, 1e-6); + CHECK_CLOSE_ABS(gExtItr.max(AxisDirection::AxisX), 18_mm, 1e-6); + CHECK_CLOSE_ABS(gExtItr.min(AxisDirection::AxisY), -3_mm, 1e-6); + CHECK_CLOSE_ABS(gExtItr.max(AxisDirection::AxisY), 3_mm, 1e-6); + CHECK_CLOSE_ABS(gExtItr.min(AxisDirection::AxisZ), -10_mm, 1e-6); + CHECK_CLOSE_ABS(gExtItr.max(AxisDirection::AxisZ), 10_mm, 1e-6); + CHECK_CLOSE_ABS(gExtItr.min(AxisDirection::AxisR), rMin, 1e-6); + CHECK_CLOSE_ABS(gExtItr.max(AxisDirection::AxisR), 18_mm, 1e-6); + CHECK_CLOSE_ABS(gExtItr.min(AxisDirection::AxisPhi), phiMin, 1e-6); + CHECK_CLOSE_ABS(gExtItr.max(AxisDirection::AxisPhi), phiMax, 1e-6); // Create a second Extent Extent gExtCopy; gExtCopy.extend(gExt); - CHECK_CLOSE_ABS(gExtCopy.min(BinningValue::binX), 15_mm, 1e-6); - CHECK_CLOSE_ABS(gExtCopy.max(BinningValue::binX), 18_mm, 1e-6); - CHECK_CLOSE_ABS(gExtCopy.min(BinningValue::binY), -3_mm, 1e-6); - CHECK_CLOSE_ABS(gExtCopy.max(BinningValue::binY), 3_mm, 1e-6); - CHECK_CLOSE_ABS(gExtCopy.min(BinningValue::binZ), -10_mm, 1e-6); - CHECK_CLOSE_ABS(gExtCopy.max(BinningValue::binZ), 10_mm, 1e-6); - CHECK_CLOSE_ABS(gExtCopy.min(BinningValue::binR), rMin, 1e-6); - CHECK_CLOSE_ABS(gExtCopy.max(BinningValue::binR), 18_mm, 1e-6); - CHECK_CLOSE_ABS(gExtCopy.min(BinningValue::binPhi), phiMin, 1e-6); - CHECK_CLOSE_ABS(gExtCopy.max(BinningValue::binPhi), phiMax, 1e-6); + CHECK_CLOSE_ABS(gExtCopy.min(AxisDirection::AxisX), 15_mm, 1e-6); + CHECK_CLOSE_ABS(gExtCopy.max(AxisDirection::AxisX), 18_mm, 1e-6); + CHECK_CLOSE_ABS(gExtCopy.min(AxisDirection::AxisY), -3_mm, 1e-6); + CHECK_CLOSE_ABS(gExtCopy.max(AxisDirection::AxisY), 3_mm, 1e-6); + CHECK_CLOSE_ABS(gExtCopy.min(AxisDirection::AxisZ), -10_mm, 1e-6); + CHECK_CLOSE_ABS(gExtCopy.max(AxisDirection::AxisZ), 10_mm, 1e-6); + CHECK_CLOSE_ABS(gExtCopy.min(AxisDirection::AxisR), rMin, 1e-6); + CHECK_CLOSE_ABS(gExtCopy.max(AxisDirection::AxisR), 18_mm, 1e-6); + CHECK_CLOSE_ABS(gExtCopy.min(AxisDirection::AxisPhi), phiMin, 1e-6); + CHECK_CLOSE_ABS(gExtCopy.max(AxisDirection::AxisPhi), phiMax, 1e-6); // Check containment Extent unbound; @@ -101,55 +101,55 @@ BOOST_AUTO_TEST_CASE(ExtentTest) { // Check application of an envelope on it ExtentEnvelope xEnvelopes = ExtentEnvelope::Zero(); - xEnvelopes[BinningValue::binX] = {1., 2.}; + xEnvelopes[AxisDirection::AxisX] = {1., 2.}; // Take the extent and extend by an envelope Extent envelope(xEnvelopes); gExt.extend(envelope); // Changed ones - CHECK_CLOSE_ABS(gExt.min(BinningValue::binX), 14_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.max(BinningValue::binX), 20_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.min(AxisDirection::AxisX), 14_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.max(AxisDirection::AxisX), 20_mm, 1e-6); // Unchanged ones - CHECK_CLOSE_ABS(gExt.min(BinningValue::binY), -3_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.max(BinningValue::binY), 3_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.min(BinningValue::binZ), -10_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.max(BinningValue::binZ), 10_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.min(BinningValue::binR), rMin, 1e-6); - CHECK_CLOSE_ABS(gExt.max(BinningValue::binR), 18_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.min(BinningValue::binPhi), phiMin, 1e-6); - CHECK_CLOSE_ABS(gExt.max(BinningValue::binPhi), phiMax, 1e-6); + CHECK_CLOSE_ABS(gExt.min(AxisDirection::AxisY), -3_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.max(AxisDirection::AxisY), 3_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.min(AxisDirection::AxisZ), -10_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.max(AxisDirection::AxisZ), 10_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.min(AxisDirection::AxisR), rMin, 1e-6); + CHECK_CLOSE_ABS(gExt.max(AxisDirection::AxisR), 18_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.min(AxisDirection::AxisPhi), phiMin, 1e-6); + CHECK_CLOSE_ABS(gExt.max(AxisDirection::AxisPhi), phiMax, 1e-6); // Fill it with envelope Extent gExtEnv(envelope); gExtEnv.extend(vertices.begin(), vertices.end()); // Changed ones - CHECK_CLOSE_ABS(gExtEnv.min(BinningValue::binX), 14_mm, 1e-6); - CHECK_CLOSE_ABS(gExtEnv.max(BinningValue::binX), 20_mm, 1e-6); + CHECK_CLOSE_ABS(gExtEnv.min(AxisDirection::AxisX), 14_mm, 1e-6); + CHECK_CLOSE_ABS(gExtEnv.max(AxisDirection::AxisX), 20_mm, 1e-6); // Check the set method - gExt.set(BinningValue::binX, 2_mm, 8_mm); - CHECK_CLOSE_ABS(gExt.min(BinningValue::binX), 2_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.max(BinningValue::binX), 8_mm, 1e-6); + gExt.set(AxisDirection::AxisX, 2_mm, 8_mm); + CHECK_CLOSE_ABS(gExt.min(AxisDirection::AxisX), 2_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.max(AxisDirection::AxisX), 8_mm, 1e-6); // Radius can not go below 0 - gExt.set(BinningValue::binR, -2_mm, 18_mm); - CHECK_CLOSE_ABS(gExt.min(BinningValue::binR), 0_mm, 1e-6); - CHECK_CLOSE_ABS(gExt.max(BinningValue::binR), 18_mm, 1e-6); + gExt.set(AxisDirection::AxisR, -2_mm, 18_mm); + CHECK_CLOSE_ABS(gExt.min(AxisDirection::AxisR), 0_mm, 1e-6); + CHECK_CLOSE_ABS(gExt.max(AxisDirection::AxisR), 18_mm, 1e-6); // Take an Extent and add a constraint Extent gExtConst; - gExtConst.set(BinningValue::binR, 0., 5.); + gExtConst.set(AxisDirection::AxisR, 0., 5.); Extent gExtNonConst; - BOOST_CHECK(!gExtNonConst.constrains(BinningValue::binR)); + BOOST_CHECK(!gExtNonConst.constrains(AxisDirection::AxisR)); gExtNonConst.addConstrain(gExtConst); - BOOST_CHECK(gExtNonConst.constrains(BinningValue::binR)); + BOOST_CHECK(gExtNonConst.constrains(AxisDirection::AxisR)); std::string tString = gExtConst.toString(); BOOST_CHECK(!tString.empty()); // Check single vertex containment Extent gExtVertexCheck; - gExtVertexCheck.set(BinningValue::binR, 0., 5.); + gExtVertexCheck.set(AxisDirection::AxisR, 0., 5.); BOOST_CHECK(gExtVertexCheck.contains(Vector3(1., 0., 0.))); BOOST_CHECK(!gExtVertexCheck.contains(Vector3(6., 0., 0.))); } @@ -163,23 +163,23 @@ BOOST_AUTO_TEST_CASE(ProtoSupportCaseTests) { Vector3(18_mm, 0_mm, 10_mm), Vector3(15_mm, 3_mm, 10_mm)}; Extent volumeExtent; - volumeExtent.set(BinningValue::binZ, -300_mm, 300_mm); + volumeExtent.set(AxisDirection::AxisZ, -300_mm, 300_mm); - BOOST_CHECK(volumeExtent.constrains(BinningValue::binZ)); - BOOST_CHECK(!volumeExtent.constrains(BinningValue::binR)); + BOOST_CHECK(volumeExtent.constrains(AxisDirection::AxisZ)); + BOOST_CHECK(!volumeExtent.constrains(AxisDirection::AxisR)); for (const auto& v : vertices) { - volumeExtent.extend(v, {BinningValue::binR}); + volumeExtent.extend(v, {AxisDirection::AxisR}); } - BOOST_CHECK(volumeExtent.constrains(BinningValue::binR)); + BOOST_CHECK(volumeExtent.constrains(AxisDirection::AxisR)); } BOOST_AUTO_TEST_CASE(DesignatedInitializers) { - using enum BinningValue; + using enum AxisDirection; ExtentEnvelope exp; - exp[binX] = {1., 2.}; - exp[binEta] = {-1., 1.}; + exp[AxisX] = {1., 2.}; + exp[AxisEta] = {-1., 1.}; ExtentEnvelope act{{.x = {1., 2.}, .eta = {-1., 1.}}}; diff --git a/Tests/UnitTests/Core/Geometry/KDTreeTrackingGeometryBuilderTests.cpp b/Tests/UnitTests/Core/Geometry/KDTreeTrackingGeometryBuilderTests.cpp index f30bd15c6cb..87fd7a9b4cd 100644 --- a/Tests/UnitTests/Core/Geometry/KDTreeTrackingGeometryBuilderTests.cpp +++ b/Tests/UnitTests/Core/Geometry/KDTreeTrackingGeometryBuilderTests.cpp @@ -100,35 +100,35 @@ BOOST_AUTO_TEST_CASE(KDTreeTrackingGeometryBuilder_simple) { // Make a proto detectpr description Acts::ProtoVolume beamPipeContainer; beamPipeContainer.name = "odd-beam-pipe"; - beamPipeContainer.extent.set(Acts::BinningValue::binR, 0., 17); + beamPipeContainer.extent.set(Acts::AxisDirection::AxisR, 0., 17); Acts::ProtoVolume beamPipe; beamPipe.name = "odd-beam-pipe-l"; - beamPipe.extent.set(Acts::BinningValue::binR, 2., 16.); + beamPipe.extent.set(Acts::AxisDirection::AxisR, 2., 16.); beamPipe.internal = Acts::ProtoVolume::InternalStructure{ Acts::Surface::SurfaceType::Cylinder}; beamPipeContainer.container = Acts::ProtoVolume::ContainerStructure{ {beamPipe}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binR, {0., 1.})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisR, {0., 1.})}, true}; // Pixel section Acts::ProtoVolume pixelContainer; pixelContainer.name = "odd-pixel"; - pixelContainer.extent.set(Acts::BinningValue::binR, 18., 200); + pixelContainer.extent.set(Acts::AxisDirection::AxisR, 18., 200); Acts::ProtoVolume pixelNec; pixelNec.name = "odd-pixel-nec"; - pixelNec.extent.set(Acts::BinningValue::binZ, -1000., -580); + pixelNec.extent.set(Acts::AxisDirection::AxisZ, -1000., -580); Acts::ProtoVolume pixNecD1; pixNecD1.name = "odd-pixel-nec-d1"; - pixNecD1.extent.set(Acts::BinningValue::binZ, -720., -680); + pixNecD1.extent.set(Acts::AxisDirection::AxisZ, -720., -680); Acts::ProtoVolume pixNecD0; pixNecD0.name = "odd-pixel-nec-d0"; - pixNecD0.extent.set(Acts::BinningValue::binZ, -620., -580); + pixNecD0.extent.set(Acts::AxisDirection::AxisZ, -620., -580); pixelNec.container = Acts::ProtoVolume::ContainerStructure{ {pixNecD1, pixNecD0}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binZ, {0., 1.})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisZ, {0., 1.})}, true}; for (auto& cv : pixelNec.container.value().constituentVolumes) { cv.internal = @@ -137,52 +137,52 @@ BOOST_AUTO_TEST_CASE(KDTreeTrackingGeometryBuilder_simple) { Acts::ProtoVolume pixelBarrel; pixelBarrel.name = "odd-pixel-barrel"; - pixelBarrel.extent.set(Acts::BinningValue::binZ, -580., 580); + pixelBarrel.extent.set(Acts::AxisDirection::AxisZ, -580., 580); Acts::ProtoVolume pixBarrelL0; pixBarrelL0.name = "odd-pixel-barrel-l0"; - pixBarrelL0.extent.set(Acts::BinningValue::binR, 28., 48.); - pixBarrelL0.extent.set(Acts::BinningValue::binZ, -580., 580); + pixBarrelL0.extent.set(Acts::AxisDirection::AxisR, 28., 48.); + pixBarrelL0.extent.set(Acts::AxisDirection::AxisZ, -580., 580); pixBarrelL0.internal = Acts::ProtoVolume::InternalStructure{ Acts::Surface::SurfaceType::Cylinder}; Acts::ProtoVolume pixBarrelL1; pixBarrelL1.name = "odd-pixel-barrel-l1"; - pixBarrelL1.extent.set(Acts::BinningValue::binR, 62., 76); - pixBarrelL1.extent.set(Acts::BinningValue::binZ, -580., 580); + pixBarrelL1.extent.set(Acts::AxisDirection::AxisR, 62., 76); + pixBarrelL1.extent.set(Acts::AxisDirection::AxisZ, -580., 580); pixBarrelL1.internal = Acts::ProtoVolume::InternalStructure{ Acts::Surface::SurfaceType::Cylinder}; Acts::ProtoVolume pixBarrelL2; pixBarrelL2.name = "odd-pixel-barrel-l2"; - pixBarrelL2.extent.set(Acts::BinningValue::binR, 100., 120.); - pixBarrelL2.extent.set(Acts::BinningValue::binZ, -580., 580); + pixBarrelL2.extent.set(Acts::AxisDirection::AxisR, 100., 120.); + pixBarrelL2.extent.set(Acts::AxisDirection::AxisZ, -580., 580); pixBarrelL2.internal = Acts::ProtoVolume::InternalStructure{ Acts::Surface::SurfaceType::Cylinder}; Acts::ProtoVolume pixBarrelL3; pixBarrelL3.name = "odd-pixel-barrel-l3"; - pixBarrelL3.extent.set(Acts::BinningValue::binR, 160., 180.); - pixBarrelL3.extent.set(Acts::BinningValue::binZ, -580., 580); + pixBarrelL3.extent.set(Acts::AxisDirection::AxisR, 160., 180.); + pixBarrelL3.extent.set(Acts::AxisDirection::AxisZ, -580., 580); pixBarrelL3.internal = Acts::ProtoVolume::InternalStructure{ Acts::Surface::SurfaceType::Cylinder}; pixelBarrel.container = Acts::ProtoVolume::ContainerStructure{ {pixBarrelL0, pixBarrelL1, pixBarrelL2, pixBarrelL3}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binR, {0., 1})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisR, {0., 1})}, true}; Acts::ProtoVolume pixelPec; pixelPec.name = "odd-pixel-pec"; - pixelPec.extent.set(Acts::BinningValue::binZ, 580., 1000.); + pixelPec.extent.set(Acts::AxisDirection::AxisZ, 580., 1000.); Acts::ProtoVolume pixPecD0; pixPecD0.name = "odd-pixel-pec-d0"; - pixPecD0.extent.set(Acts::BinningValue::binZ, 580., 620); + pixPecD0.extent.set(Acts::AxisDirection::AxisZ, 580., 620); Acts::ProtoVolume pixPecD1; pixPecD1.name = "odd-pixel-pec-d1"; - pixPecD1.extent.set(Acts::BinningValue::binZ, 680., 720); + pixPecD1.extent.set(Acts::AxisDirection::AxisZ, 680., 720); pixelPec.container = Acts::ProtoVolume::ContainerStructure{ {pixPecD0, pixPecD1}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binZ, {0., 1})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisZ, {0., 1})}, true}; for (auto& cv : pixelPec.container.value().constituentVolumes) { cv.internal = @@ -191,15 +191,15 @@ BOOST_AUTO_TEST_CASE(KDTreeTrackingGeometryBuilder_simple) { pixelContainer.container = Acts::ProtoVolume::ContainerStructure{ {pixelNec, pixelBarrel, pixelPec}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binZ, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisZ, {-1000., -580., 580., 1000.})}}; Acts::ProtoVolume detectorContainer; detectorContainer.name = "odd-detector"; - detectorContainer.extent.set(Acts::BinningValue::binR, 0., 200); + detectorContainer.extent.set(Acts::AxisDirection::AxisR, 0., 200); detectorContainer.container = Acts::ProtoVolume::ContainerStructure{ {beamPipeContainer, pixelContainer}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binR, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisR, {0., 17.5, 200.})}}; Acts::ProtoDetector detector; diff --git a/Tests/UnitTests/Core/Geometry/LayerCreatorTests.cpp b/Tests/UnitTests/Core/Geometry/LayerCreatorTests.cpp index 20f43a3b68e..adf80a20880 100644 --- a/Tests/UnitTests/Core/Geometry/LayerCreatorTests.cpp +++ b/Tests/UnitTests/Core/Geometry/LayerCreatorTests.cpp @@ -245,8 +245,8 @@ BOOST_FIXTURE_TEST_CASE(LayerCreator_createCylinderLayer, LayerCreatorFixture) { // CASE I double envR = 0.1, envZ = 0.5; ProtoLayer pl(tgContext, srf); - pl.envelope[Acts::BinningValue::binR] = {envR, envR}; - pl.envelope[Acts::BinningValue::binZ] = {envZ, envZ}; + pl.envelope[Acts::AxisDirection::AxisR] = {envR, envR}; + pl.envelope[Acts::AxisDirection::AxisZ] = {envZ, envZ}; std::shared_ptr layer = std::dynamic_pointer_cast( p_LC->cylinderLayer(tgContext, srf, equidistant, equidistant, pl)); @@ -270,8 +270,8 @@ BOOST_FIXTURE_TEST_CASE(LayerCreator_createCylinderLayer, LayerCreatorFixture) { // CASE II ProtoLayer pl2(tgContext, srf); - pl2.envelope[Acts::BinningValue::binR] = {envR, envR}; - pl2.envelope[Acts::BinningValue::binZ] = {envZ, envZ}; + pl2.envelope[Acts::AxisDirection::AxisR] = {envR, envR}; + pl2.envelope[Acts::AxisDirection::AxisZ] = {envZ, envZ}; layer = std::dynamic_pointer_cast( p_LC->cylinderLayer(tgContext, srf, 30, 7, pl2)); CHECK_CLOSE_REL(layer->thickness(), (rMax - rMin) + 2 * envR, 1e-3); @@ -306,8 +306,8 @@ BOOST_FIXTURE_TEST_CASE(LayerCreator_createCylinderLayer, LayerCreatorFixture) { // CASE III ProtoLayer pl3; - pl3.extent.range(Acts::BinningValue::binR).set(1, 20); - pl3.extent.range(Acts::BinningValue::binZ).set(-25, 25); + pl3.extent.range(Acts::AxisDirection::AxisR).set(1, 20); + pl3.extent.range(Acts::AxisDirection::AxisZ).set(-25, 25); layer = std::dynamic_pointer_cast( p_LC->cylinderLayer(tgContext, srf, equidistant, equidistant, pl3)); CHECK_CLOSE_REL(layer->thickness(), 19, 1e-3); @@ -340,8 +340,8 @@ BOOST_FIXTURE_TEST_CASE(LayerCreator_createDiscLayer, LayerCreatorFixture) { draw_surfaces(surfaces, "LayerCreator_createDiscLayer_EC_1.obj"); ProtoLayer pl(tgContext, surfaces); - pl.extent.range(BinningValue::binZ).set(-10, 10); - pl.extent.range(BinningValue::binR).set(5., 25.); + pl.extent.range(AxisDirection::AxisZ).set(-10, 10); + pl.extent.range(AxisDirection::AxisR).set(5., 25.); std::shared_ptr layer = std::dynamic_pointer_cast( p_LC->discLayer(tgContext, surfaces, equidistant, equidistant, pl)); CHECK_CLOSE_REL(layer->thickness(), 20, 1e-3); @@ -368,8 +368,8 @@ BOOST_FIXTURE_TEST_CASE(LayerCreator_createDiscLayer, LayerCreatorFixture) { double envMinR = 1, envMaxR = 1, envZ = 5; std::size_t nBinsR = 3, nBinsPhi = 30; ProtoLayer pl2(tgContext, surfaces); - pl2.envelope[BinningValue::binR] = {envMinR, envMaxR}; - pl2.envelope[BinningValue::binZ] = {envZ, envZ}; + pl2.envelope[AxisDirection::AxisR] = {envMinR, envMaxR}; + pl2.envelope[AxisDirection::AxisZ] = {envZ, envZ}; layer = std::dynamic_pointer_cast( p_LC->discLayer(tgContext, surfaces, nBinsR, nBinsPhi, pl2)); @@ -424,8 +424,8 @@ BOOST_FIXTURE_TEST_CASE(LayerCreator_barrelStagger, LayerCreatorFixture) { double envR = 0, envZ = 0; ProtoLayer pl(tgContext, brl); - pl.envelope[BinningValue::binR] = {envR, envR}; - pl.envelope[BinningValue::binZ] = {envZ, envZ}; + pl.envelope[AxisDirection::AxisR] = {envR, envR}; + pl.envelope[AxisDirection::AxisZ] = {envZ, envZ}; std::shared_ptr layer = std::dynamic_pointer_cast( p_LC->cylinderLayer(tgContext, brl, equidistant, equidistant, pl)); @@ -444,7 +444,7 @@ BOOST_FIXTURE_TEST_CASE(LayerCreator_barrelStagger, LayerCreatorFixture) { // std::cout << "dPHi = " << A->center().phi() - B->center().phi() << // std::endl; - Vector3 ctr = A->binningPosition(tgContext, BinningValue::binR); + Vector3 ctr = A->referencePosition(tgContext, AxisDirection::AxisR); auto binContent = layer->surfaceArray()->at(ctr); BOOST_CHECK_EQUAL(binContent.size(), 2u); std::set act; diff --git a/Tests/UnitTests/Core/Geometry/NavigationLayerTests.cpp b/Tests/UnitTests/Core/Geometry/NavigationLayerTests.cpp index 32406c3a288..6e606e3e03c 100644 --- a/Tests/UnitTests/Core/Geometry/NavigationLayerTests.cpp +++ b/Tests/UnitTests/Core/Geometry/NavigationLayerTests.cpp @@ -51,10 +51,10 @@ BOOST_AUTO_TEST_CASE(NavigationLayerProperties) { auto rawSurfacePtr = pSurface.get(); auto pNavigationLayer = NavigationLayer::create(std::move(pSurface), thickness); - BinningValue b{BinningValue::binZ}; + AxisDirection b{AxisDirection::AxisZ}; Vector3 origin{0., 0., 0.}; - // binningPosition(), needs a better test - BOOST_CHECK_EQUAL(pNavigationLayer->binningPosition(tgContext, b), origin); + // referencePosition(), needs a better test + BOOST_CHECK_EQUAL(pNavigationLayer->referencePosition(tgContext, b), origin); // surfaceRepresentation() [looks dangerous] BOOST_CHECK_EQUAL(rawSurfacePtr, &(pNavigationLayer->surfaceRepresentation())); diff --git a/Tests/UnitTests/Core/Geometry/PlaneLayerTests.cpp b/Tests/UnitTests/Core/Geometry/PlaneLayerTests.cpp index b3d96a56943..229ce3fbe8e 100644 --- a/Tests/UnitTests/Core/Geometry/PlaneLayerTests.cpp +++ b/Tests/UnitTests/Core/Geometry/PlaneLayerTests.cpp @@ -58,7 +58,7 @@ BOOST_AUTO_TEST_CASE(PlaneLayerConstruction) { SurfaceArrayCreator sac; std::size_t binsX(2), binsY(4); auto pSurfaceArray = sac.surfaceArrayOnPlane(tgContext, aSurfaces, binsX, - binsY, BinningValue::binZ); + binsY, AxisDirection::AxisZ); auto pPlaneLayerFromSurfaces = PlaneLayer::create(pTransform, pRectangle, std::move(pSurfaceArray)); BOOST_CHECK_EQUAL(pPlaneLayerFromSurfaces->layerType(), LayerType::active); diff --git a/Tests/UnitTests/Core/Geometry/PolyhedronTests.cpp b/Tests/UnitTests/Core/Geometry/PolyhedronTests.cpp index d087c6485cf..6b6e8548d0c 100644 --- a/Tests/UnitTests/Core/Geometry/PolyhedronTests.cpp +++ b/Tests/UnitTests/Core/Geometry/PolyhedronTests.cpp @@ -83,18 +83,18 @@ BOOST_AUTO_TEST_CASE(PolyhedronExtent) { Polyhedron rectangle(rvertices, rfaces, rmesh); auto rExtent = rectangle.extent(); - CHECK_CLOSE_ABS(rExtent.min(BinningValue::binX), -1., 1e-6); - CHECK_CLOSE_ABS(rExtent.max(BinningValue::binX), 1., 1e-6); - CHECK_CLOSE_ABS(rExtent.min(BinningValue::binY), -2., 1e-6); - CHECK_CLOSE_ABS(rExtent.max(BinningValue::binY), -1., 1e-6); - CHECK_CLOSE_ABS(rExtent.min(BinningValue::binZ), 0., 1e-6); - CHECK_CLOSE_ABS(rExtent.max(BinningValue::binZ), 0., 1e-6); - CHECK_CLOSE_ABS(rExtent.min(BinningValue::binR), 1., 1e-6); - CHECK_CLOSE_ABS(rExtent.max(BinningValue::binR), + CHECK_CLOSE_ABS(rExtent.min(AxisDirection::AxisX), -1., 1e-6); + CHECK_CLOSE_ABS(rExtent.max(AxisDirection::AxisX), 1., 1e-6); + CHECK_CLOSE_ABS(rExtent.min(AxisDirection::AxisY), -2., 1e-6); + CHECK_CLOSE_ABS(rExtent.max(AxisDirection::AxisY), -1., 1e-6); + CHECK_CLOSE_ABS(rExtent.min(AxisDirection::AxisZ), 0., 1e-6); + CHECK_CLOSE_ABS(rExtent.max(AxisDirection::AxisZ), 0., 1e-6); + CHECK_CLOSE_ABS(rExtent.min(AxisDirection::AxisR), 1., 1e-6); + CHECK_CLOSE_ABS(rExtent.max(AxisDirection::AxisR), VectorHelpers::perp(rvertices[0]), 1e-6); - CHECK_CLOSE_ABS(rExtent.min(BinningValue::binPhi), + CHECK_CLOSE_ABS(rExtent.min(AxisDirection::AxisPhi), VectorHelpers::phi(rvertices[3]), 1e-6); - CHECK_CLOSE_ABS(rExtent.max(BinningValue::binPhi), + CHECK_CLOSE_ABS(rExtent.max(AxisDirection::AxisPhi), VectorHelpers::phi(rvertices[2]), 1e-6); // Now shift the Extent @@ -102,12 +102,12 @@ BOOST_AUTO_TEST_CASE(PolyhedronExtent) { Transform3 shiftedTransform = Transform3::Identity(); shiftedTransform.pretranslate(shift); rExtent = rectangle.extent(shiftedTransform); - CHECK_CLOSE_ABS(rExtent.min(BinningValue::binX), -2., 1e-6); - CHECK_CLOSE_ABS(rExtent.max(BinningValue::binX), 0., 1e-6); - CHECK_CLOSE_ABS(rExtent.min(BinningValue::binY), -2., 1e-6); - CHECK_CLOSE_ABS(rExtent.max(BinningValue::binY), -1., 1e-6); - CHECK_CLOSE_ABS(rExtent.min(BinningValue::binZ), 1., 1e-6); - CHECK_CLOSE_ABS(rExtent.max(BinningValue::binZ), 1., 1e-6); + CHECK_CLOSE_ABS(rExtent.min(AxisDirection::AxisX), -2., 1e-6); + CHECK_CLOSE_ABS(rExtent.max(AxisDirection::AxisX), 0., 1e-6); + CHECK_CLOSE_ABS(rExtent.min(AxisDirection::AxisY), -2., 1e-6); + CHECK_CLOSE_ABS(rExtent.max(AxisDirection::AxisY), -1., 1e-6); + CHECK_CLOSE_ABS(rExtent.min(AxisDirection::AxisZ), 1., 1e-6); + CHECK_CLOSE_ABS(rExtent.max(AxisDirection::AxisZ), 1., 1e-6); // Test a rectangle in yz - pane (at x == 3) rvertices = {Vector3(3_mm, -5_mm, -10_mm), Vector3(3_mm, 5_mm, -10_mm), @@ -115,14 +115,14 @@ BOOST_AUTO_TEST_CASE(PolyhedronExtent) { rectangle = Polyhedron(rvertices, rfaces, rmesh); rExtent = rectangle.extent(); - CHECK_CLOSE_ABS(rExtent.min(BinningValue::binX), 3., 1e-6); - CHECK_CLOSE_ABS(rExtent.max(BinningValue::binX), 3., 1e-6); - CHECK_CLOSE_ABS(rExtent.min(BinningValue::binY), -5., 1e-6); - CHECK_CLOSE_ABS(rExtent.max(BinningValue::binY), 5., 1e-6); - CHECK_CLOSE_ABS(rExtent.min(BinningValue::binZ), -10., 1e-6); - CHECK_CLOSE_ABS(rExtent.max(BinningValue::binZ), 10., 1e-6); - CHECK_CLOSE_ABS(rExtent.min(BinningValue::binR), 3., 1e-6); - CHECK_CLOSE_ABS(rExtent.max(BinningValue::binR), std::sqrt(9. + 25.), 1e-6); + CHECK_CLOSE_ABS(rExtent.min(AxisDirection::AxisX), 3., 1e-6); + CHECK_CLOSE_ABS(rExtent.max(AxisDirection::AxisX), 3., 1e-6); + CHECK_CLOSE_ABS(rExtent.min(AxisDirection::AxisY), -5., 1e-6); + CHECK_CLOSE_ABS(rExtent.max(AxisDirection::AxisY), 5., 1e-6); + CHECK_CLOSE_ABS(rExtent.min(AxisDirection::AxisZ), -10., 1e-6); + CHECK_CLOSE_ABS(rExtent.max(AxisDirection::AxisZ), 10., 1e-6); + CHECK_CLOSE_ABS(rExtent.min(AxisDirection::AxisR), 3., 1e-6); + CHECK_CLOSE_ABS(rExtent.max(AxisDirection::AxisR), std::sqrt(9. + 25.), 1e-6); } BOOST_AUTO_TEST_SUITE_END() diff --git a/Tests/UnitTests/Core/Geometry/PortalLinkTests.cpp b/Tests/UnitTests/Core/Geometry/PortalLinkTests.cpp index fd87545d4f0..90b39c63d4d 100644 --- a/Tests/UnitTests/Core/Geometry/PortalLinkTests.cpp +++ b/Tests/UnitTests/Core/Geometry/PortalLinkTests.cpp @@ -23,7 +23,7 @@ #include "Acts/Surfaces/RadialBounds.hpp" #include "Acts/Surfaces/SurfaceMergingException.hpp" #include "Acts/Tests/CommonHelpers/FloatComparisons.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/ThrowAssert.hpp" #include @@ -94,23 +94,23 @@ BOOST_AUTO_TEST_CASE(Cylinder) { std::make_shared(30_mm, 40_mm, 100_mm)); // Incompatible binning - BOOST_CHECK_THROW( - GridPortalLink::make(cyl, BinningValue::binZ, Axis{AxisBound, 0, 5, 5}), - std::invalid_argument); + BOOST_CHECK_THROW(GridPortalLink::make(cyl, AxisDirection::AxisZ, + Axis{AxisBound, 0, 5, 5}), + std::invalid_argument); - auto grid1dCyl = GridPortalLink::make(cyl, BinningValue::binZ, + auto grid1dCyl = GridPortalLink::make(cyl, AxisDirection::AxisZ, Axis{AxisBound, -100_mm, 100_mm, 10}); BOOST_REQUIRE(grid1dCyl); grid1dCyl->setVolume(vol.get()); // Throws because non-closed axis - BOOST_CHECK_THROW(GridPortalLink::make(cyl, BinningValue::binRPhi, + BOOST_CHECK_THROW(GridPortalLink::make(cyl, AxisDirection::AxisRPhi, Axis{AxisBound, -180_degree * 30_mm, 180_degree * 30_mm, 10}), std::invalid_argument); auto grid1dCylRPhi = GridPortalLink::make( - cyl, BinningValue::binRPhi, + cyl, AxisDirection::AxisRPhi, Axis{AxisClosed, -180_degree * 30_mm, 180_degree * 30_mm, 10}); BOOST_REQUIRE_NE(grid1dCylRPhi, nullptr); grid1dCylRPhi->setVolume(vol.get()); @@ -124,14 +124,14 @@ BOOST_AUTO_TEST_CASE(Cylinder) { auto cyl2 = Surface::makeShared( Transform3{Translation3{Vector3::UnitZ() * 150_mm}}, 30_mm, 50_mm); - auto grid1dCyl2 = GridPortalLink::make(cyl2, BinningValue::binZ, + auto grid1dCyl2 = GridPortalLink::make(cyl2, AxisDirection::AxisZ, Axis{AxisBound, -50_mm, 50_mm, 5}); // Test exception on cylinder with non-zero average phi auto cylNonZeroAverage = Surface::makeShared( Transform3::Identity(), 30_mm, 100_mm, 20_degree, 45_degree); BOOST_CHECK_THROW( - GridPortalLink::make(cylNonZeroAverage, BinningValue::binZ, + GridPortalLink::make(cylNonZeroAverage, AxisDirection::AxisZ, Axis{AxisBound, -100_mm, 100_mm, 10}), std::invalid_argument); @@ -185,12 +185,12 @@ BOOST_AUTO_TEST_CASE(Cylinder) { auto cylPhi = Surface::makeShared( Transform3::Identity(), 30_mm, 100_mm, 45_degree); std::unique_ptr grid1dCylPhi = GridPortalLink::make( - cylPhi, BinningValue::binZ, Axis{AxisBound, -100_mm, 100_mm, 10}); + cylPhi, AxisDirection::AxisZ, Axis{AxisBound, -100_mm, 100_mm, 10}); grid1dCylPhi->setVolume(vol.get()); // Check that phi sector portal does not accept closed axis - BOOST_CHECK_THROW(GridPortalLink::make(cylPhi, BinningValue::binRPhi, + BOOST_CHECK_THROW(GridPortalLink::make(cylPhi, AxisDirection::AxisRPhi, Axis{AxisClosed, -45_degree * 30_mm, 45_degree * 30_mm, 10}), std::invalid_argument); @@ -290,17 +290,17 @@ BOOST_AUTO_TEST_CASE(Disc) { Transform3::Identity(), std::make_shared(30_mm, 40_mm, 100_mm)); - BOOST_CHECK_THROW(GridPortalLink::make(disc1, BinningValue::binZ, + BOOST_CHECK_THROW(GridPortalLink::make(disc1, AxisDirection::AxisZ, Axis{AxisBound, 30_mm, 100_mm, 3}), std::invalid_argument); // Check exception for full disc and non-closed phi axis BOOST_CHECK_THROW( - GridPortalLink::make(disc1, BinningValue::binPhi, + GridPortalLink::make(disc1, AxisDirection::AxisPhi, Axis{AxisBound, -180_degree, 180_degree, 3}), std::invalid_argument); - auto grid1 = GridPortalLink::make(disc1, BinningValue::binR, + auto grid1 = GridPortalLink::make(disc1, AxisDirection::AxisR, Axis{AxisBound, 30_mm, 100_mm, 3}); BOOST_REQUIRE_NE(grid1, nullptr); BOOST_CHECK_EQUAL(grid1->grid().axes().size(), 1); @@ -315,12 +315,12 @@ BOOST_AUTO_TEST_CASE(Disc) { // Check thet disc with phi sector does not accept closed axis BOOST_CHECK_THROW( - GridPortalLink::make(discPhi, BinningValue::binPhi, + GridPortalLink::make(discPhi, AxisDirection::AxisPhi, Axis{AxisClosed, -45_degree, 45_degree, 3}), std::invalid_argument); auto gridPhi = - GridPortalLink::make(discPhi, BinningValue::binPhi, + GridPortalLink::make(discPhi, AxisDirection::AxisPhi, Axis{AxisBound, -45_degree, 45_degree, 3}); BOOST_REQUIRE_NE(gridPhi, nullptr); gridPhi->setVolume(vol.get()); @@ -330,7 +330,7 @@ BOOST_AUTO_TEST_CASE(Disc) { Transform3::Identity(), std::make_shared(30_mm, 100_mm, 45_degree, 75_degree)); BOOST_CHECK_THROW( - GridPortalLink::make(discNonZeroAverage, BinningValue::binR, + GridPortalLink::make(discNonZeroAverage, AxisDirection::AxisR, Axis{AxisBound, 30_mm, 100_mm, 3}), std::invalid_argument); @@ -379,7 +379,7 @@ BOOST_AUTO_TEST_CASE(Disc) { *grid2dExplicit)); auto gridPhiBinnedInR = GridPortalLink::make( - discPhi, BinningValue::binR, Axis{AxisBound, 30_mm, 100_mm, 3}); + discPhi, AxisDirection::AxisR, Axis{AxisBound, 30_mm, 100_mm, 3}); gridPhiBinnedInR->setVolume(vol.get()); auto grid2dPhiNonClosed = gridPhiBinnedInR->extendTo2d(nullptr); BOOST_REQUIRE(grid2dPhiNonClosed); @@ -483,7 +483,7 @@ BOOST_AUTO_TEST_CASE(FromTrivial) { BOOST_CHECK_EQUAL(trivial->resolveVolume(gctx, Vector2{1, 2}).value(), vol.get()); - auto gridZ = trivial->makeGrid(BinningValue::binZ); + auto gridZ = trivial->makeGrid(AxisDirection::AxisZ); BOOST_REQUIRE(gridZ); BOOST_CHECK_EQUAL(gridZ->grid().axes().size(), 1); @@ -495,7 +495,7 @@ BOOST_AUTO_TEST_CASE(FromTrivial) { gridZ->resolveVolume(gctx, Vector2{20_degree * 30_mm, 90_mm}).value(), vol.get()); - auto gridRPhi = trivial->makeGrid(BinningValue::binRPhi); + auto gridRPhi = trivial->makeGrid(AxisDirection::AxisRPhi); BOOST_REQUIRE(gridRPhi); BOOST_CHECK_EQUAL(gridRPhi->grid().axes().size(), 1); @@ -513,7 +513,7 @@ BOOST_AUTO_TEST_CASE(FromTrivial) { BOOST_CHECK_EQUAL(trivialPhi->resolveVolume(gctx, Vector2{1, 2}).value(), vol.get()); - auto gridRPhiSector = trivialPhi->makeGrid(BinningValue::binRPhi); + auto gridRPhiSector = trivialPhi->makeGrid(AxisDirection::AxisRPhi); BOOST_REQUIRE(gridRPhiSector); BOOST_CHECK_EQUAL( @@ -543,7 +543,7 @@ BOOST_AUTO_TEST_CASE(FromTrivial) { BOOST_CHECK_EQUAL(trivial->resolveVolume(gctx, Vector2{1, 2}).value(), vol.get()); - auto gridR = trivial->makeGrid(BinningValue::binR); + auto gridR = trivial->makeGrid(AxisDirection::AxisR); BOOST_REQUIRE(gridR); BOOST_CHECK_EQUAL(gridR->grid().axes().size(), 1); @@ -555,7 +555,7 @@ BOOST_AUTO_TEST_CASE(FromTrivial) { gridR->resolveVolume(gctx, Vector2{90_mm, 10_degree}).value(), vol.get()); - auto gridPhi = trivial->makeGrid(BinningValue::binPhi); + auto gridPhi = trivial->makeGrid(AxisDirection::AxisPhi); BOOST_REQUIRE(gridPhi); BOOST_CHECK_EQUAL(gridPhi->grid().axes().size(), 1); @@ -584,7 +584,7 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { auto cyl = Surface::makeShared(Transform3::Identity(), 30_mm, 100_mm); - auto grid1dCyl = GridPortalLink::make(cyl, BinningValue::binZ, + auto grid1dCyl = GridPortalLink::make(cyl, AxisDirection::AxisZ, Axis{AxisBound, -100_mm, 100_mm, 10}); grid1dCyl->setVolume(vol1.get()); @@ -592,24 +592,24 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { auto cyl2 = Surface::makeShared( Transform3{Translation3{Vector3::UnitZ() * 150_mm}}, 30_mm, 50_mm); - auto grid1dCyl2 = GridPortalLink::make(cyl2, BinningValue::binZ, + auto grid1dCyl2 = GridPortalLink::make(cyl2, AxisDirection::AxisZ, Axis{AxisBound, -50_mm, 50_mm, 5}); grid1dCyl2->setVolume(vol2.get()); // Completely invalid BOOST_CHECK_THROW(GridPortalLink::merge(*grid1dCyl, *grid1dCyl2, - BinningValue::binPhi, *logger), + AxisDirection::AxisPhi, *logger), AssertionFailureException); // Invalid direction, as the cylinders are shifted in z, and can't be merged // in r x phi BOOST_CHECK_THROW(GridPortalLink::merge(*grid1dCyl, *grid1dCyl2, - BinningValue::binRPhi, *logger), + AxisDirection::AxisRPhi, *logger), SurfaceMergingException); BOOST_TEST_CONTEXT("Consistent equidistant") { auto mergedPtr = GridPortalLink::merge(*grid1dCyl, *grid1dCyl2, - BinningValue::binZ, *logger); + AxisDirection::AxisZ, *logger); BOOST_REQUIRE_NE(mergedPtr, nullptr); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(merged, nullptr); @@ -624,10 +624,10 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { BOOST_TEST_CONTEXT("Inconsistent equidistant") { auto grid1dCyl2BinWidthChanged = GridPortalLink::make( - cyl2, BinningValue::binZ, Axis{AxisBound, -50_mm, 50_mm, 6}); + cyl2, AxisDirection::AxisZ, Axis{AxisBound, -50_mm, 50_mm, 6}); auto mergedPtr = GridPortalLink::merge( - *grid1dCyl, *grid1dCyl2BinWidthChanged, BinningValue::binZ, *logger); + *grid1dCyl, *grid1dCyl2BinWidthChanged, AxisDirection::AxisZ, *logger); BOOST_REQUIRE_NE(mergedPtr, nullptr); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(merged, nullptr); @@ -641,15 +641,15 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { } BOOST_TEST_CONTEXT("Right Variable") { - auto gridLeft = GridPortalLink::make(cyl, BinningValue::binZ, + auto gridLeft = GridPortalLink::make(cyl, AxisDirection::AxisZ, Axis{AxisBound, -100_mm, 100_mm, 10}); auto gridRight = - GridPortalLink::make(cyl2, BinningValue::binZ, + GridPortalLink::make(cyl2, AxisDirection::AxisZ, Axis{AxisBound, {-50_mm, -10_mm, 10_mm, 50_mm}}); auto mergedPtr = GridPortalLink::merge(*gridLeft, *gridRight, - BinningValue::binZ, *logger); + AxisDirection::AxisZ, *logger); BOOST_REQUIRE_NE(mergedPtr, nullptr); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(merged, nullptr); @@ -664,14 +664,14 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { BOOST_TEST_CONTEXT("Left Variable") { auto gridLeft = - GridPortalLink::make(cyl, BinningValue::binZ, + GridPortalLink::make(cyl, AxisDirection::AxisZ, Axis{AxisBound, {-100_mm, -80_mm, 10_mm, 100_mm}}); - auto gridRight = GridPortalLink::make(cyl2, BinningValue::binZ, + auto gridRight = GridPortalLink::make(cyl2, AxisDirection::AxisZ, Axis{AxisBound, -50_mm, 50_mm, 8}); auto mergedPtr = GridPortalLink::merge(*gridLeft, *gridRight, - BinningValue::binZ, *logger); + AxisDirection::AxisZ, *logger); BOOST_REQUIRE_NE(mergedPtr, nullptr); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(merged, nullptr); @@ -686,15 +686,15 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { BOOST_TEST_CONTEXT("Both Variable") { auto gridLeft = - GridPortalLink::make(cyl, BinningValue::binZ, + GridPortalLink::make(cyl, AxisDirection::AxisZ, Axis{AxisBound, {-100_mm, -80_mm, 10_mm, 100_mm}}); auto gridRight = - GridPortalLink::make(cyl2, BinningValue::binZ, + GridPortalLink::make(cyl2, AxisDirection::AxisZ, Axis{AxisBound, {-50_mm, -10_mm, 10_mm, 50_mm}}); auto mergedPtr = GridPortalLink::merge(*gridLeft, *gridRight, - BinningValue::binZ, *logger); + AxisDirection::AxisZ, *logger); BOOST_REQUIRE_NE(mergedPtr, nullptr); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(merged, nullptr); @@ -709,21 +709,21 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { BOOST_TEST_CONTEXT("Non bound axis") { std::unique_ptr gridLeft = - GridPortalLink::make(cyl, BinningValue::binZ, + GridPortalLink::make(cyl, AxisDirection::AxisZ, Axis{AxisBound, {-100_mm, -80_mm, 10_mm, 100_mm}}); std::unique_ptr gridRightClosed = - GridPortalLink::make(cyl2, BinningValue::binZ, + GridPortalLink::make(cyl2, AxisDirection::AxisZ, Axis{AxisClosed, {-50_mm, -10_mm, 10_mm, 50_mm}}); std::unique_ptr gridRightOpen = - GridPortalLink::make(cyl2, BinningValue::binZ, + GridPortalLink::make(cyl2, AxisDirection::AxisZ, Axis{AxisOpen, {-50_mm, -10_mm, 10_mm, 50_mm}}); auto compositeLR = PortalLinkBase::merge( - copy(gridLeft), copy(gridRightClosed), BinningValue::binZ, *logger); + copy(gridLeft), copy(gridRightClosed), AxisDirection::AxisZ, *logger); BOOST_CHECK_NE(dynamic_cast(compositeLR.get()), nullptr); auto compositeRL = PortalLinkBase::merge( - copy(gridLeft), copy(gridRightOpen), BinningValue::binZ, *logger); + copy(gridLeft), copy(gridRightOpen), AxisDirection::AxisZ, *logger); BOOST_CHECK_NE(dynamic_cast(compositeRL.get()), nullptr); } @@ -735,7 +735,7 @@ BOOST_AUTO_TEST_CASE(ParallelMerge) { 30_mm, 100_mm, 35_degree); auto grid1 = GridPortalLink::make( - cyl1, BinningValue::binRPhi, + cyl1, AxisDirection::AxisRPhi, Axis{AxisBound, -35_degree * 30_mm, 35_degree * 30_mm, 3}); auto cyl2 = Surface::makeShared( @@ -743,11 +743,11 @@ BOOST_AUTO_TEST_CASE(ParallelMerge) { 35_degree); auto grid2 = GridPortalLink::make( - cyl2, BinningValue::binRPhi, + cyl2, AxisDirection::AxisRPhi, Axis{AxisBound, -35_degree * 30_mm, 35_degree * 30_mm, 3}); auto merged12Ptr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binZ, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisZ, *logger); BOOST_REQUIRE_NE(merged12Ptr, nullptr); auto merged12 = dynamic_cast(merged12Ptr.get()); BOOST_REQUIRE_NE(merged12, nullptr); @@ -769,7 +769,7 @@ BOOST_AUTO_TEST_SUITE(RPhiDirection) BOOST_AUTO_TEST_CASE(ColinearMerge) { auto cyl = Surface::makeShared(Transform3::Identity(), 30_mm, 100_mm); - BOOST_CHECK_THROW(GridPortalLink::make(cyl, BinningValue::binRPhi, + BOOST_CHECK_THROW(GridPortalLink::make(cyl, AxisDirection::AxisRPhi, Axis{AxisBound, 0, 5, 5}), std::invalid_argument); @@ -778,7 +778,7 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { BOOST_CHECK_THROW( GridPortalLink::make( - cylNonZeroAverage, BinningValue::binRPhi, + cylNonZeroAverage, AxisDirection::AxisRPhi, Axis{AxisBound, -20_degree * 30_mm, 20_degree * 30_mm, 5}), std::invalid_argument); @@ -792,11 +792,11 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { 30_mm, 100_mm, 40_degree, 0_degree); auto portalPhi1 = GridPortalLink::make( - cylPhi1, BinningValue::binRPhi, + cylPhi1, AxisDirection::AxisRPhi, Axis{AxisBound, -20_degree * 30_mm, 20_degree * 30_mm, 5}); auto portalPhi2 = GridPortalLink::make( - cylPhi2, BinningValue::binRPhi, + cylPhi2, AxisDirection::AxisRPhi, Axis{AxisBound, -40_degree * 30_mm, 40_degree * 30_mm, 10}); auto cylPhi3 = Surface::makeShared( @@ -808,16 +808,16 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { 30_mm, 100_mm, 90_degree, 0_degree); auto portalPhi3 = GridPortalLink::make( - cylPhi3, BinningValue::binRPhi, + cylPhi3, AxisDirection::AxisRPhi, Axis{AxisBound, -90_degree * 30_mm, 90_degree * 30_mm, 2}); auto portalPhi4 = GridPortalLink::make( - cylPhi4, BinningValue::binRPhi, + cylPhi4, AxisDirection::AxisRPhi, Axis{AxisBound, -90_degree * 30_mm, 90_degree * 30_mm, 2}); BOOST_TEST_CONTEXT("Consistent equidistant") { - auto portalMerged = GridPortalLink::merge(*portalPhi1, *portalPhi2, - BinningValue::binRPhi, *logger); + auto portalMerged = GridPortalLink::merge( + *portalPhi1, *portalPhi2, AxisDirection::AxisRPhi, *logger); BOOST_REQUIRE_NE(portalMerged, nullptr); const auto* merged = @@ -833,7 +833,7 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { // Test that if you merge half-circles, we get a closed axis auto portalMerged34 = GridPortalLink::merge( - *portalPhi3, *portalPhi4, BinningValue::binRPhi, *logger); + *portalPhi3, *portalPhi4, AxisDirection::AxisRPhi, *logger); BOOST_REQUIRE_NE(portalMerged34, nullptr); const auto* merged34 = @@ -850,11 +850,11 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { BOOST_TEST_CONTEXT("Inconsistent equidistant") { auto portalPhi2Mod = GridPortalLink::make( - cylPhi2, BinningValue::binRPhi, + cylPhi2, AxisDirection::AxisRPhi, Axis{AxisBound, -40_degree * 30_mm, 40_degree * 30_mm, 3}); auto portalMergedMod = GridPortalLink::merge( - *portalPhi1, *portalPhi2Mod, BinningValue::binRPhi, *logger); + *portalPhi1, *portalPhi2Mod, AxisDirection::AxisRPhi, *logger); BOOST_REQUIRE_NE(portalMergedMod, nullptr); const auto* merged12 = @@ -874,11 +874,11 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { CHECK_CLOSE_OR_SMALL(axis12.getBinEdges(), expected12, 1e-4, 10e-10); auto portalPhi4Mod = GridPortalLink::make( - cylPhi4, BinningValue::binRPhi, + cylPhi4, AxisDirection::AxisRPhi, Axis{AxisBound, -90_degree * 30_mm, 90_degree * 30_mm, 1}); auto portalMerged34 = GridPortalLink::merge( - *portalPhi3, *portalPhi4Mod, BinningValue::binRPhi, *logger); + *portalPhi3, *portalPhi4Mod, AxisDirection::AxisRPhi, *logger); BOOST_REQUIRE_NE(portalMerged34, nullptr); const auto* merged34 = @@ -901,16 +901,16 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { BOOST_TEST_CONTEXT("Left variable") { BOOST_TEST_CONTEXT("Non-closed") { auto gridLeft = - GridPortalLink::make(cylPhi1, BinningValue::binRPhi, + GridPortalLink::make(cylPhi1, AxisDirection::AxisRPhi, Axis{AxisBound, {-20_degree * 30_mm, -10_degree * 30_mm, 10_degree * 30_mm, 20_degree * 30_mm}}); auto gridRight = GridPortalLink::make( - cylPhi2, BinningValue::binRPhi, + cylPhi2, AxisDirection::AxisRPhi, Axis{AxisBound, -40_degree * 30_mm, 40_degree * 30_mm, 3}); - auto mergedPtr = GridPortalLink::merge(*gridLeft, *gridRight, - BinningValue::binRPhi, *logger); + auto mergedPtr = GridPortalLink::merge( + *gridLeft, *gridRight, AxisDirection::AxisRPhi, *logger); BOOST_REQUIRE_NE(mergedPtr, nullptr); const auto* merged = @@ -931,16 +931,16 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { BOOST_TEST_CONTEXT("Closed") { auto gridLeft = GridPortalLink::make( - cylPhi4, BinningValue::binRPhi, + cylPhi4, AxisDirection::AxisRPhi, Axis{AxisBound, {-90_degree * 30_mm, 25_degree * 30_mm, 90_degree * 30_mm}}); auto gridRight = GridPortalLink::make( - cylPhi3, BinningValue::binRPhi, + cylPhi3, AxisDirection::AxisRPhi, Axis{AxisBound, -90_degree * 30_mm, 90_degree * 30_mm, 3}); - auto mergedPtr = GridPortalLink::merge(*gridLeft, *gridRight, - BinningValue::binRPhi, *logger); + auto mergedPtr = GridPortalLink::merge( + *gridLeft, *gridRight, AxisDirection::AxisRPhi, *logger); BOOST_REQUIRE_NE(mergedPtr, nullptr); const auto* merged = @@ -965,16 +965,16 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { BOOST_TEST_CONTEXT("Right variable") { BOOST_TEST_CONTEXT("Non-closed") { auto gridLeft = GridPortalLink::make( - cylPhi1, BinningValue::binRPhi, + cylPhi1, AxisDirection::AxisRPhi, Axis{AxisBound, -20_degree * 30_mm, 20_degree * 30_mm, 3}); auto gridRight = - GridPortalLink::make(cylPhi2, BinningValue::binRPhi, + GridPortalLink::make(cylPhi2, AxisDirection::AxisRPhi, Axis{AxisBound, {-40_degree * 30_mm, -10_degree * 30_mm, 10_degree * 30_mm, 40_degree * 30_mm}}); - auto mergedPtr = GridPortalLink::merge(*gridLeft, *gridRight, - BinningValue::binRPhi, *logger); + auto mergedPtr = GridPortalLink::merge( + *gridLeft, *gridRight, AxisDirection::AxisRPhi, *logger); BOOST_REQUIRE_NE(mergedPtr, nullptr); const auto* merged = @@ -995,16 +995,16 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { BOOST_TEST_CONTEXT("Closed") { auto gridLeft = GridPortalLink::make( - cylPhi4, BinningValue::binRPhi, + cylPhi4, AxisDirection::AxisRPhi, Axis{AxisBound, -90_degree * 30_mm, 90_degree * 30_mm, 3}); auto gridRight = GridPortalLink::make( - cylPhi3, BinningValue::binRPhi, + cylPhi3, AxisDirection::AxisRPhi, Axis{AxisBound, {-90_degree * 30_mm, 25_degree * 30_mm, 90_degree * 30_mm}}); - auto mergedPtr = GridPortalLink::merge(*gridLeft, *gridRight, - BinningValue::binRPhi, *logger); + auto mergedPtr = GridPortalLink::merge( + *gridLeft, *gridRight, AxisDirection::AxisRPhi, *logger); BOOST_REQUIRE_NE(mergedPtr, nullptr); const auto* merged = @@ -1029,17 +1029,17 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { BOOST_TEST_CONTEXT("Both variable") { BOOST_TEST_CONTEXT("Non-closed") { auto gridLeft = - GridPortalLink::make(cylPhi1, BinningValue::binRPhi, + GridPortalLink::make(cylPhi1, AxisDirection::AxisRPhi, Axis{AxisBound, {-20_degree * 30_mm, -10_degree * 30_mm, 10_degree * 30_mm, 20_degree * 30_mm}}); auto gridRight = GridPortalLink::make( - cylPhi2, BinningValue::binRPhi, + cylPhi2, AxisDirection::AxisRPhi, Axis{AxisBound, {-40_degree * 30_mm, -5_degree * 30_mm, 40_degree * 30_mm}}); - auto mergedPtr = GridPortalLink::merge(*gridLeft, *gridRight, - BinningValue::binRPhi, *logger); + auto mergedPtr = GridPortalLink::merge( + *gridLeft, *gridRight, AxisDirection::AxisRPhi, *logger); BOOST_REQUIRE_NE(mergedPtr, nullptr); const auto* merged = @@ -1060,18 +1060,18 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { BOOST_TEST_CONTEXT("Closed") { auto gridLeft = GridPortalLink::make( - cylPhi4, BinningValue::binRPhi, + cylPhi4, AxisDirection::AxisRPhi, Axis{AxisBound, {-90_degree * 30_mm, 25_degree * 30_mm, 90_degree * 30_mm}}); auto gridRight = - GridPortalLink::make(cylPhi3, BinningValue::binRPhi, + GridPortalLink::make(cylPhi3, AxisDirection::AxisRPhi, Axis{AxisBound, {-90_degree * 30_mm, -10_degree * 30_mm, 10_degree * 30_mm, 90_degree * 30_mm}}); - auto mergedPtr = GridPortalLink::merge(*gridLeft, *gridRight, - BinningValue::binRPhi, *logger); + auto mergedPtr = GridPortalLink::merge( + *gridLeft, *gridRight, AxisDirection::AxisRPhi, *logger); BOOST_REQUIRE_NE(mergedPtr, nullptr); const auto* merged = @@ -1105,14 +1105,14 @@ BOOST_AUTO_TEST_CASE(ParallelMerge) { Transform3::Identity() * AngleAxis3(85_degree, Vector3::UnitZ()), 30_mm, 100_mm, 20_degree, 0_degree); - auto portalPhi1 = GridPortalLink::make(cylPhi1, BinningValue::binZ, + auto portalPhi1 = GridPortalLink::make(cylPhi1, AxisDirection::AxisZ, Axis{AxisBound, -100_mm, 100_mm, 5}); - auto portalPhi2 = GridPortalLink::make(cylPhi2, BinningValue::binZ, + auto portalPhi2 = GridPortalLink::make(cylPhi2, AxisDirection::AxisZ, Axis{AxisBound, -100_mm, 100_mm, 5}); auto merged12Ptr = GridPortalLink::merge(*portalPhi1, *portalPhi2, - BinningValue::binRPhi, *logger); + AxisDirection::AxisRPhi, *logger); BOOST_REQUIRE_NE(merged12Ptr, nullptr); auto merged12 = dynamic_cast(merged12Ptr.get()); BOOST_REQUIRE_NE(merged12, nullptr); @@ -1154,7 +1154,7 @@ BOOST_AUTO_TEST_CASE(ZDirection) { // We're merging in z direction, so the phi binnings need to be the same auto mergedPtr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binZ, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisZ, *logger); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(mergedPtr, nullptr); @@ -1178,7 +1178,7 @@ BOOST_AUTO_TEST_CASE(ZDirection) { Axis{AxisBound, -50_mm, 50_mm, 5}); auto composite = PortalLinkBase::merge(copy(grid1), copy(grid3), - BinningValue::binZ, *logger); + AxisDirection::AxisZ, *logger); BOOST_CHECK_NE(dynamic_cast(composite.get()), nullptr); } @@ -1202,7 +1202,7 @@ BOOST_AUTO_TEST_CASE(ZDirection) { Axis{AxisBound, -50_mm, 50_mm, 5}); auto mergedPtr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binZ, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisZ, *logger); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(mergedPtr, nullptr); @@ -1240,7 +1240,7 @@ BOOST_AUTO_TEST_CASE(RPhiDirection) { // We're merging in z direction, so the phi binnings need to be the same auto mergedPtr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binRPhi, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisRPhi, *logger); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(mergedPtr, nullptr); @@ -1266,17 +1266,17 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { auto disc1 = Surface::makeShared(Transform3::Identity(), 30_mm, 100_mm); - auto grid1 = GridPortalLink::make(disc1, BinningValue::binR, + auto grid1 = GridPortalLink::make(disc1, AxisDirection::AxisR, Axis{AxisBound, 30_mm, 100_mm, 7}); auto disc2 = Surface::makeShared(Transform3::Identity(), 100_mm, 150_mm); - auto grid2 = GridPortalLink::make(disc2, BinningValue::binR, + auto grid2 = GridPortalLink::make(disc2, AxisDirection::AxisR, Axis{AxisBound, 100_mm, 150_mm, 5}); auto mergedPtr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binR, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisR, *logger); BOOST_REQUIRE(mergedPtr); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(merged, nullptr); @@ -1289,17 +1289,17 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { auto discPhi1 = Surface::makeShared(Transform3::Identity(), 30_mm, 100_mm, 30_degree); - auto discPhiGrid1 = GridPortalLink::make(discPhi1, BinningValue::binR, + auto discPhiGrid1 = GridPortalLink::make(discPhi1, AxisDirection::AxisR, Axis{AxisBound, 30_mm, 100_mm, 7}); auto discPhi2 = Surface::makeShared(Transform3::Identity(), 100_mm, 150_mm, 30_degree); - auto discPhiGrid2 = GridPortalLink::make(discPhi2, BinningValue::binR, + auto discPhiGrid2 = GridPortalLink::make(discPhi2, AxisDirection::AxisR, Axis{AxisBound, 100_mm, 150_mm, 5}); auto mergedPhiPtr = GridPortalLink::merge(*discPhiGrid1, *discPhiGrid2, - BinningValue::binR, *logger); + AxisDirection::AxisR, *logger); BOOST_REQUIRE(mergedPhiPtr); const auto* mergedPhi = dynamic_cast(mergedPhiPtr.get()); @@ -1314,18 +1314,18 @@ BOOST_AUTO_TEST_CASE(ParallelMerge) { Surface::makeShared(Transform3::Identity(), 30_mm, 100_mm); auto grid1 = - GridPortalLink::make(disc1, BinningValue::binPhi, + GridPortalLink::make(disc1, AxisDirection::AxisPhi, Axis{AxisClosed, -180_degree, 180_degree, 5}); auto disc2 = Surface::makeShared(Transform3::Identity(), 100_mm, 150_mm); auto grid2 = - GridPortalLink::make(disc2, BinningValue::binPhi, + GridPortalLink::make(disc2, AxisDirection::AxisPhi, Axis{AxisClosed, -180_degree, 180_degree, 5}); auto mergedPtr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binR, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisR, *logger); BOOST_REQUIRE(mergedPtr); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(merged, nullptr); @@ -1347,18 +1347,18 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { auto disc1 = Surface::makeShared(Transform3::Identity(), 30_mm, 100_mm, 30_degree); - auto grid1 = GridPortalLink::make(disc1, BinningValue::binPhi, + auto grid1 = GridPortalLink::make(disc1, AxisDirection::AxisPhi, Axis{AxisBound, -30_degree, 30_degree, 3}); auto disc2 = Surface::makeShared( Transform3{AngleAxis3{90_degree, Vector3::UnitZ()}}, 30_mm, 100_mm, 60_degree); - auto grid2 = GridPortalLink::make(disc2, BinningValue::binPhi, + auto grid2 = GridPortalLink::make(disc2, AxisDirection::AxisPhi, Axis{AxisBound, -60_degree, 60_degree, 6}); auto mergedPtr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binPhi, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisPhi, *logger); BOOST_REQUIRE(mergedPtr); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(merged, nullptr); @@ -1376,7 +1376,7 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { 90_degree); auto grid1Half = - GridPortalLink::make(disc1Half, BinningValue::binPhi, + GridPortalLink::make(disc1Half, AxisDirection::AxisPhi, Axis{AxisBound, -90_degree, 90_degree, 3}); auto disc2Half = Surface::makeShared( @@ -1384,11 +1384,11 @@ BOOST_AUTO_TEST_CASE(ColinearMerge) { 90_degree); auto grid2Half = - GridPortalLink::make(disc2Half, BinningValue::binPhi, + GridPortalLink::make(disc2Half, AxisDirection::AxisPhi, Axis{AxisBound, -90_degree, 90_degree, 3}); auto mergedHalfPtr = GridPortalLink::merge(*grid1Half, *grid2Half, - BinningValue::binPhi, *logger); + AxisDirection::AxisPhi, *logger); BOOST_REQUIRE(mergedHalfPtr); const auto* mergedHalf = dynamic_cast(mergedHalfPtr.get()); @@ -1403,18 +1403,18 @@ BOOST_AUTO_TEST_CASE(ParallelMerge) { auto disc1 = Surface::makeShared(Transform3::Identity(), 30_mm, 100_mm, 30_degree); - auto grid1 = GridPortalLink::make(disc1, BinningValue::binR, + auto grid1 = GridPortalLink::make(disc1, AxisDirection::AxisR, Axis{AxisBound, 30_mm, 100_mm, 3}); auto disc2 = Surface::makeShared( Transform3{AngleAxis3{90_degree, Vector3::UnitZ()}}, 30_mm, 100_mm, 60_degree); - auto grid2 = GridPortalLink::make(disc2, BinningValue::binR, + auto grid2 = GridPortalLink::make(disc2, AxisDirection::AxisR, Axis{AxisBound, 30_mm, 100_mm, 3}); auto mergedPtr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binPhi, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisPhi, *logger); BOOST_REQUIRE(mergedPtr); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(merged, nullptr); @@ -1446,7 +1446,7 @@ BOOST_AUTO_TEST_CASE(BinFilling) { auto disc1 = Surface::makeShared(Transform3::Identity(), 30_mm, 60_mm, 30_degree); - auto grid1 = GridPortalLink::make(disc1, BinningValue::binR, + auto grid1 = GridPortalLink::make(disc1, AxisDirection::AxisR, Axis{AxisBound, 30_mm, 60_mm, 2}); grid1->setVolume(vol1.get()); @@ -1454,13 +1454,13 @@ BOOST_AUTO_TEST_CASE(BinFilling) { auto disc2 = Surface::makeShared(Transform3::Identity(), 60_mm, 90_mm, 30_degree); - auto grid2 = GridPortalLink::make(disc2, BinningValue::binR, + auto grid2 = GridPortalLink::make(disc2, AxisDirection::AxisR, Axis{AxisBound, 60_mm, 90_mm, 2}); grid2->setVolume(vol2.get()); auto mergedPtr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binR, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisR, *logger); using merged_type = GridPortalLinkT>; @@ -1482,8 +1482,9 @@ BOOST_AUTO_TEST_CASE(BinFilling) { auto disc1 = Surface::makeShared(Transform3::Identity(), 30_mm, 100_mm, 30_degree); - auto grid1 = GridPortalLink::make( - disc1, BinningValue::binPhi, Axis{AxisBound, -30_degree, 30_degree, 2}); + auto grid1 = + GridPortalLink::make(disc1, AxisDirection::AxisPhi, + Axis{AxisBound, -30_degree, 30_degree, 2}); grid1->setVolume(vol1.get()); @@ -1491,13 +1492,14 @@ BOOST_AUTO_TEST_CASE(BinFilling) { Transform3{AngleAxis3{60_degree, Vector3::UnitZ()}}, 30_mm, 100_mm, 30_degree); - auto grid2 = GridPortalLink::make( - disc2, BinningValue::binPhi, Axis{AxisBound, -30_degree, 30_degree, 2}); + auto grid2 = + GridPortalLink::make(disc2, AxisDirection::AxisPhi, + Axis{AxisBound, -30_degree, 30_degree, 2}); grid2->setVolume(vol2.get()); auto mergedPtr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binPhi, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisPhi, *logger); BOOST_REQUIRE(mergedPtr); using merged_type = @@ -1538,7 +1540,7 @@ BOOST_AUTO_TEST_CASE(RDirection) { Axis{AxisBound, -30_degree, 30_degree, 3}); auto mergedPtr = GridPortalLink::merge(*discPhiGrid1, *discPhiGrid2, - BinningValue::binR, *logger); + AxisDirection::AxisR, *logger); BOOST_REQUIRE(mergedPtr); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(merged, nullptr); @@ -1573,7 +1575,7 @@ BOOST_AUTO_TEST_CASE(PhiDirection) { Axis{AxisBound, -60_degree, 60_degree, 6}); auto mergedPtr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binPhi, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisPhi, *logger); BOOST_REQUIRE(mergedPtr); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(merged, nullptr); @@ -1649,7 +1651,7 @@ BOOST_AUTO_TEST_CASE(BinFilling) { checkCheckerBoard(discPhiGrid2->grid()); auto mergedPtr = GridPortalLink::merge(*discPhiGrid1, *discPhiGrid2, - BinningValue::binR, *logger); + AxisDirection::AxisR, *logger); using merged_type = GridPortalLinkT, @@ -1664,7 +1666,7 @@ BOOST_AUTO_TEST_CASE(BinFilling) { discPhiGrid2->setVolume(vol2.get()); mergedPtr = GridPortalLink::merge(*discPhiGrid1, *discPhiGrid2, - BinningValue::binR, *logger); + AxisDirection::AxisR, *logger); merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE(merged); @@ -1720,7 +1722,7 @@ BOOST_AUTO_TEST_CASE(BinFilling) { checkCheckerBoard(grid2->grid()); auto mergedPtr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binPhi, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisPhi, *logger); BOOST_REQUIRE(mergedPtr); @@ -1738,7 +1740,7 @@ BOOST_AUTO_TEST_CASE(BinFilling) { grid2->setVolume(vol2.get()); mergedPtr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binPhi, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisPhi, *logger); merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE(merged); @@ -1787,18 +1789,18 @@ BOOST_AUTO_TEST_CASE(RDirection) { 100_mm, 150_mm, 30_degree); auto discPhiGrid21dPhi = - GridPortalLink::make(discPhi2, BinningValue::binPhi, + GridPortalLink::make(discPhi2, AxisDirection::AxisPhi, Axis{AxisBound, -30_degree, 30_degree, 3}); auto merged12PhiPtr = GridPortalLink::merge(*discPhiGrid1, *discPhiGrid21dPhi, - BinningValue::binR, *logger); + AxisDirection::AxisR, *logger); BOOST_REQUIRE(merged12PhiPtr); const auto* merged12Phi = dynamic_cast(merged12PhiPtr.get()); BOOST_REQUIRE_NE(merged12Phi, nullptr); auto merged21PhiPtr = GridPortalLink::merge(*discPhiGrid21dPhi, *discPhiGrid1, - BinningValue::binR, *logger); + AxisDirection::AxisR, *logger); BOOST_REQUIRE(merged21PhiPtr); const auto* merged21Phi = dynamic_cast(merged21PhiPtr.get()); @@ -1822,17 +1824,17 @@ BOOST_AUTO_TEST_CASE(RDirection) { BOOST_CHECK_EQUAL(axis2.getBoundaryType(), AxisBoundaryType::Bound); auto discPhiGrid21dR = GridPortalLink::make( - discPhi2, BinningValue::binR, Axis{AxisBound, 100_mm, 150_mm, 5}); + discPhi2, AxisDirection::AxisR, Axis{AxisBound, 100_mm, 150_mm, 5}); auto merged12RPtr = GridPortalLink::merge(*discPhiGrid1, *discPhiGrid21dR, - BinningValue::binR, *logger); + AxisDirection::AxisR, *logger); BOOST_REQUIRE(merged12RPtr); const auto* merged12R = dynamic_cast(merged12RPtr.get()); BOOST_REQUIRE_NE(merged12R, nullptr); auto merged21RPtr = GridPortalLink::merge(*discPhiGrid21dR, *discPhiGrid1, - BinningValue::binR, *logger); + AxisDirection::AxisR, *logger); BOOST_REQUIRE(merged21RPtr); const auto* merged21R = dynamic_cast(merged21RPtr.get()); @@ -1867,12 +1869,12 @@ BOOST_AUTO_TEST_CASE(PhiDirection) { 60_degree); auto grid21dPhi = - GridPortalLink::make(disc2, BinningValue::binPhi, + GridPortalLink::make(disc2, AxisDirection::AxisPhi, Axis{AxisBound, -60_degree, 60_degree, 6}); - auto merged12PhiPtr = - GridPortalLink::merge(*grid1, *grid21dPhi, BinningValue::binPhi, *logger); + auto merged12PhiPtr = GridPortalLink::merge(*grid1, *grid21dPhi, + AxisDirection::AxisPhi, *logger); BOOST_REQUIRE(merged12PhiPtr); const auto* merged12Phi = dynamic_cast(merged12PhiPtr.get()); @@ -1893,11 +1895,11 @@ BOOST_AUTO_TEST_CASE(PhiDirection) { BOOST_CHECK_EQUAL(axis2.getType(), AxisType::Equidistant); BOOST_CHECK_EQUAL(axis2.getBoundaryType(), AxisBoundaryType::Bound); - auto grid21dR = GridPortalLink::make(disc2, BinningValue::binR, + auto grid21dR = GridPortalLink::make(disc2, AxisDirection::AxisR, Axis{AxisBound, 30_mm, 100_mm, 3}); auto merged12RPtr = - GridPortalLink::merge(*grid1, *grid21dR, BinningValue::binPhi, *logger); + GridPortalLink::merge(*grid1, *grid21dR, AxisDirection::AxisPhi, *logger); BOOST_REQUIRE(merged12RPtr); const auto* merged12R = dynamic_cast(merged12RPtr.get()); @@ -1933,7 +1935,7 @@ BOOST_AUTO_TEST_CASE(RDirection) { auto disc1 = Surface::makeShared(Transform3::Identity(), 30_mm, 100_mm, 30_degree); - auto grid1 = GridPortalLink::make(disc1, BinningValue::binR, + auto grid1 = GridPortalLink::make(disc1, AxisDirection::AxisR, Axis{AxisBound, 30_mm, 100_mm, 2}); grid1->grid().atLocalBins({1}) = vol1.get(); grid1->grid().atLocalBins({2}) = vol2.get(); @@ -1941,14 +1943,14 @@ BOOST_AUTO_TEST_CASE(RDirection) { auto disc2 = Surface::makeShared(Transform3::Identity(), 100_mm, 150_mm, 30_degree); - auto grid2 = GridPortalLink::make(disc2, BinningValue::binPhi, + auto grid2 = GridPortalLink::make(disc2, AxisDirection::AxisPhi, Axis{AxisBound, -30_degree, 30_degree, 2}); grid2->grid().atLocalBins({1}) = vol3.get(); grid2->grid().atLocalBins({2}) = vol4.get(); auto mergedPtr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binR, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisR, *logger); const auto* merged = dynamic_cast(mergedPtr.get()); BOOST_REQUIRE_NE(merged, nullptr); @@ -1990,7 +1992,7 @@ BOOST_AUTO_TEST_CASE(PhiDirection) { auto disc1 = Surface::makeShared(Transform3::Identity(), 30_mm, 100_mm, 30_degree); - auto grid1 = GridPortalLink::make(disc1, BinningValue::binR, + auto grid1 = GridPortalLink::make(disc1, AxisDirection::AxisR, Axis{AxisBound, 30_mm, 100_mm, 2}); grid1->grid().atLocalBins({1}) = vol1.get(); @@ -2000,14 +2002,14 @@ BOOST_AUTO_TEST_CASE(PhiDirection) { Transform3{AngleAxis3{90_degree, Vector3::UnitZ()}}, 30_mm, 100_mm, 60_degree); - auto grid2 = GridPortalLink::make(disc2, BinningValue::binPhi, + auto grid2 = GridPortalLink::make(disc2, AxisDirection::AxisPhi, Axis{AxisBound, -60_degree, 60_degree, 2}); grid2->grid().atLocalBins({1}) = vol3.get(); grid2->grid().atLocalBins({2}) = vol4.get(); auto mergedPtr = - GridPortalLink::merge(*grid1, *grid2, BinningValue::binPhi, *logger); + GridPortalLink::merge(*grid1, *grid2, AxisDirection::AxisPhi, *logger); using merged_type = GridPortalLinkT, @@ -2072,10 +2074,10 @@ BOOST_AUTO_TEST_CASE(CompositeConstruction) { auto trivial2 = std::make_unique(disc2, *vol2); auto composite = std::make_unique( - copy(trivial1), copy(trivial2), BinningValue::binR); + copy(trivial1), copy(trivial2), AxisDirection::AxisR); auto compositeCopy = std::make_unique( - copy(trivial1), copy(trivial2), BinningValue::binR); + copy(trivial1), copy(trivial2), AxisDirection::AxisR); BOOST_CHECK_EQUAL( composite->resolveVolume(gctx, Vector2{40_mm, 0_degree}).value(), @@ -2090,9 +2092,9 @@ BOOST_AUTO_TEST_CASE(CompositeConstruction) { auto cyl = Surface::makeShared(Transform3::Identity(), 30_mm, 40_mm); auto trivialCyl = std::make_unique(cyl, *vol3); - BOOST_CHECK_THROW( - CompositePortalLink(copy(trivial1), copy(trivialCyl), BinningValue::binR), - std::invalid_argument); + BOOST_CHECK_THROW(CompositePortalLink(copy(trivial1), copy(trivialCyl), + AxisDirection::AxisR), + std::invalid_argument); auto disc3 = Surface::makeShared(Transform3::Identity(), 90_mm, 120_mm); @@ -2100,13 +2102,13 @@ BOOST_AUTO_TEST_CASE(CompositeConstruction) { // Test exception on un-mergable surfaces BOOST_CHECK_THROW( - CompositePortalLink(copy(trivial1), copy(trivial3), BinningValue::binR), + CompositePortalLink(copy(trivial1), copy(trivial3), AxisDirection::AxisR), SurfaceMergingException); // Composite with a composite (this should work regardless of flattening) CompositePortalLink composite2(std::move(composite), copy(trivial3), - BinningValue::binR, false); + AxisDirection::AxisR, false); BOOST_CHECK_EQUAL( composite2.resolveVolume(gctx, Vector2{40_mm, 0_degree}).value(), @@ -2122,7 +2124,7 @@ BOOST_AUTO_TEST_CASE(CompositeConstruction) { BOOST_CHECK_EQUAL(composite2.depth(), 2); CompositePortalLink composite2Flat(std::move(compositeCopy), copy(trivial3), - BinningValue::binR, true); + AxisDirection::AxisR, true); // One because of flattening BOOST_CHECK_EQUAL(composite2Flat.depth(), 1); @@ -2177,17 +2179,18 @@ BOOST_DATA_TEST_CASE(TrivialTrivial, auto trivial3 = std::make_unique(disc3, *vol3); BOOST_REQUIRE(trivial3); - auto grid1 = trivial1->makeGrid(BinningValue::binR); + auto grid1 = trivial1->makeGrid(AxisDirection::AxisR); auto compGridTrivial = PortalLinkBase::merge( std::move(grid1), std::make_unique(*trivial2), - BinningValue::binR, *logger); + AxisDirection::AxisR, *logger); BOOST_REQUIRE(compGridTrivial); BOOST_CHECK_EQUAL(dynamic_cast(*compGridTrivial) .makeGrid(gctx, *logger), nullptr); - auto composite = PortalLinkBase::merge( - std::move(trivial1), std::move(trivial2), BinningValue::binR, *logger); + auto composite = + PortalLinkBase::merge(std::move(trivial1), std::move(trivial2), + AxisDirection::AxisR, *logger); BOOST_REQUIRE(composite); auto grid12 = @@ -2203,7 +2206,7 @@ BOOST_DATA_TEST_CASE(TrivialTrivial, vol2.get()); composite = PortalLinkBase::merge(std::move(composite), std::move(trivial3), - BinningValue::binR, *logger); + AxisDirection::AxisR, *logger); BOOST_REQUIRE(composite); auto grid123 = @@ -2250,17 +2253,18 @@ BOOST_DATA_TEST_CASE(TrivialTrivial, auto trivial3 = std::make_unique(cyl3, *vol3); BOOST_REQUIRE(trivial3); - auto grid1 = trivial1->makeGrid(BinningValue::binZ); + auto grid1 = trivial1->makeGrid(AxisDirection::AxisZ); auto compGridTrivial = PortalLinkBase::merge( std::move(grid1), std::make_unique(*trivial2), - BinningValue::binZ, *logger); + AxisDirection::AxisZ, *logger); BOOST_REQUIRE(compGridTrivial); BOOST_CHECK_EQUAL(dynamic_cast(*compGridTrivial) .makeGrid(gctx, *logger), nullptr); - auto composite = PortalLinkBase::merge( - std::move(trivial1), std::move(trivial2), BinningValue::binZ, *logger); + auto composite = + PortalLinkBase::merge(std::move(trivial1), std::move(trivial2), + AxisDirection::AxisZ, *logger); BOOST_REQUIRE(composite); auto grid12 = @@ -2275,7 +2279,7 @@ BOOST_DATA_TEST_CASE(TrivialTrivial, grid12->resolveVolume(gctx, Vector2{40_mm, 40_mm}).value(), vol2.get()); composite = PortalLinkBase::merge(std::move(composite), std::move(trivial3), - BinningValue::binZ, *logger); + AxisDirection::AxisZ, *logger); BOOST_REQUIRE(composite); auto grid123 = @@ -2315,24 +2319,24 @@ BOOST_AUTO_TEST_CASE(TrivialGridR) { BOOST_REQUIRE(trivial); auto gridPhi = GridPortalLink::make( - disc1, BinningValue::binPhi, + disc1, AxisDirection::AxisPhi, Axis{AxisClosed, -std::numbers::pi, std::numbers::pi, 2}); gridPhi->setVolume(vol1.get()); - auto gridR = GridPortalLink::make(disc1, BinningValue::binR, + auto gridR = GridPortalLink::make(disc1, AxisDirection::AxisR, Axis{AxisBound, 30_mm, 60_mm, 2}); gridR->setVolume(vol1.get()); BOOST_TEST_CONTEXT("Colinear") { auto merged = PortalLinkBase::merge(copy(trivial), copy(gridR), - BinningValue::binR, *logger); + AxisDirection::AxisR, *logger); BOOST_REQUIRE(merged); BOOST_CHECK_NE(dynamic_cast(merged.get()), nullptr); } BOOST_TEST_CONTEXT("Orthogonal") { auto merged = PortalLinkBase::merge(copy(gridPhi), copy(trivial), - BinningValue::binR, *logger); + AxisDirection::AxisR, *logger); BOOST_REQUIRE(merged); BOOST_CHECK_NE(dynamic_cast(merged.get()), nullptr); } @@ -2358,23 +2362,23 @@ BOOST_AUTO_TEST_CASE(TrivialGridPhi) { BOOST_REQUIRE(trivial); auto gridPhi = GridPortalLink::make( - disc1, BinningValue::binPhi, Axis{AxisBound, -30_degree, 30_degree, 2}); + disc1, AxisDirection::AxisPhi, Axis{AxisBound, -30_degree, 30_degree, 2}); gridPhi->setVolume(vol1.get()); - auto gridR = GridPortalLink::make(disc1, BinningValue::binR, + auto gridR = GridPortalLink::make(disc1, AxisDirection::AxisR, Axis{AxisBound, 30_mm, 100_mm, 2}); gridR->setVolume(vol1.get()); BOOST_TEST_CONTEXT("Colinear") { auto merged = PortalLinkBase::merge(copy(trivial), copy(gridPhi), - BinningValue::binPhi, *logger); + AxisDirection::AxisPhi, *logger); BOOST_REQUIRE(merged); BOOST_CHECK_NE(dynamic_cast(merged.get()), nullptr); } BOOST_TEST_CONTEXT("Orthogonal") { auto merged = PortalLinkBase::merge(copy(gridR), copy(trivial), - BinningValue::binPhi, *logger); + AxisDirection::AxisPhi, *logger); BOOST_REQUIRE(merged); BOOST_CHECK_NE(dynamic_cast(merged.get()), nullptr); } @@ -2400,19 +2404,20 @@ BOOST_AUTO_TEST_CASE(CompositeOther) { auto disc3 = Surface::makeShared(Transform3::Identity(), 90_mm, 120_mm); - auto grid1 = GridPortalLink::make(disc1, *vol1, BinningValue::binR); + auto grid1 = GridPortalLink::make(disc1, *vol1, AxisDirection::AxisR); auto trivial2 = std::make_unique(disc2, *vol2); auto composite12 = std::make_unique( - std::move(grid1), std::move(trivial2), BinningValue::binR); + std::move(grid1), std::move(trivial2), AxisDirection::AxisR); BOOST_CHECK_EQUAL(composite12->depth(), 1); BOOST_CHECK_EQUAL(composite12->size(), 2); auto trivial3 = std::make_unique(disc3, *vol3); - auto composite123Ptr = PortalLinkBase::merge( - std::move(composite12), std::move(trivial3), BinningValue::binR, *logger); + auto composite123Ptr = + PortalLinkBase::merge(std::move(composite12), std::move(trivial3), + AxisDirection::AxisR, *logger); const auto* composite123 = dynamic_cast(composite123Ptr.get()); diff --git a/Tests/UnitTests/Core/Geometry/PortalShellTests.cpp b/Tests/UnitTests/Core/Geometry/PortalShellTests.cpp index 090dc851611..e12a3ca3dbc 100644 --- a/Tests/UnitTests/Core/Geometry/PortalShellTests.cpp +++ b/Tests/UnitTests/Core/Geometry/PortalShellTests.cpp @@ -317,7 +317,7 @@ BOOST_AUTO_TEST_CASE(PortalAssignment) { oCyl->getLink(Direction::OppositeNormal)); BOOST_REQUIRE_NE(oCylLink, nullptr); - auto grid = oCylLink->makeGrid(BinningValue::binZ); + auto grid = oCylLink->makeGrid(AxisDirection::AxisZ); auto portal2 = std::make_shared(Direction::OppositeNormal, std::move(grid)); @@ -335,7 +335,7 @@ BOOST_AUTO_TEST_CASE(PortalAssignment) { nDisc->getLink(Direction::AlongNormal)); BOOST_REQUIRE_NE(nDiscLink, nullptr); - grid = nDiscLink->makeGrid(BinningValue::binR); + grid = nDiscLink->makeGrid(AxisDirection::AxisR); auto portal3 = std::make_shared(Direction::AlongNormal, std::move(grid)); @@ -366,7 +366,7 @@ BOOST_AUTO_TEST_CASE(ZDirection) { BOOST_CHECK_NE(shell1.portal(PositiveDisc), shell2.portal(NegativeDisc)); CylinderStackPortalShell stack{ - gctx, {&shell1, &shell2}, BinningValue::binZ}; + gctx, {&shell1, &shell2}, AxisDirection::AxisZ}; BOOST_CHECK_EQUAL(stack.size(), 4); const auto* iCyl = stack.portal(InnerCylinder); @@ -392,9 +392,9 @@ BOOST_AUTO_TEST_CASE(ZDirection) { shell1 = SingleCylinderPortalShell{vol1}; shell2 = SingleCylinderPortalShell{vol2}; - BOOST_CHECK_THROW( - CylinderStackPortalShell(gctx, {&shell1, &shell2}, BinningValue::binR), - SurfaceMergingException); + BOOST_CHECK_THROW(CylinderStackPortalShell(gctx, {&shell1, &shell2}, + AxisDirection::AxisR), + SurfaceMergingException); } BOOST_TEST_CONTEXT("rMin==0") { @@ -415,7 +415,7 @@ BOOST_AUTO_TEST_CASE(ZDirection) { BOOST_CHECK_NE(shell1.portal(PositiveDisc), shell2.portal(NegativeDisc)); CylinderStackPortalShell stack{ - gctx, {&shell1, &shell2}, BinningValue::binZ}; + gctx, {&shell1, &shell2}, AxisDirection::AxisZ}; BOOST_CHECK_EQUAL(stack.size(), 3); // Disc portals have been fused @@ -440,9 +440,9 @@ BOOST_AUTO_TEST_CASE(ZDirection) { shell1 = SingleCylinderPortalShell{vol1}; shell2 = SingleCylinderPortalShell{vol2}; - BOOST_CHECK_THROW( - CylinderStackPortalShell(gctx, {&shell1, &shell2}, BinningValue::binR), - SurfaceMergingException); + BOOST_CHECK_THROW(CylinderStackPortalShell(gctx, {&shell1, &shell2}, + AxisDirection::AxisR), + SurfaceMergingException); } } @@ -463,7 +463,7 @@ BOOST_AUTO_TEST_CASE(RDirection) { BOOST_CHECK_NE(shell1.portal(OuterCylinder), shell2.portal(InnerCylinder)); CylinderStackPortalShell stack{ - gctx, {&shell1, &shell2}, BinningValue::binR}; + gctx, {&shell1, &shell2}, AxisDirection::AxisR}; BOOST_CHECK_EQUAL(stack.size(), 4); // Internal cylinder portals have been fused @@ -492,9 +492,9 @@ BOOST_AUTO_TEST_CASE(RDirection) { shell1 = SingleCylinderPortalShell{vol1}; shell2 = SingleCylinderPortalShell{vol2}; - BOOST_CHECK_THROW( - CylinderStackPortalShell(gctx, {&shell1, &shell2}, BinningValue::binZ), - SurfaceMergingException); + BOOST_CHECK_THROW(CylinderStackPortalShell(gctx, {&shell1, &shell2}, + AxisDirection::AxisZ), + SurfaceMergingException); } BOOST_TEST_CONTEXT("rMin==0") { @@ -513,7 +513,7 @@ BOOST_AUTO_TEST_CASE(RDirection) { BOOST_CHECK_NE(shell1.portal(OuterCylinder), shell2.portal(InnerCylinder)); CylinderStackPortalShell stack{ - gctx, {&shell1, &shell2}, BinningValue::binR}; + gctx, {&shell1, &shell2}, AxisDirection::AxisR}; BOOST_CHECK_EQUAL(stack.size(), 4); // Internal cylinder portals have been fused @@ -541,9 +541,9 @@ BOOST_AUTO_TEST_CASE(RDirection) { shell1 = SingleCylinderPortalShell{vol1}; shell2 = SingleCylinderPortalShell{vol2}; - BOOST_CHECK_THROW( - CylinderStackPortalShell(gctx, {&shell1, &shell2}, BinningValue::binZ), - std::invalid_argument); + BOOST_CHECK_THROW(CylinderStackPortalShell(gctx, {&shell1, &shell2}, + AxisDirection::AxisZ), + std::invalid_argument); } } @@ -599,7 +599,7 @@ BOOST_AUTO_TEST_CASE(NestedStacks) { BOOST_CHECK(shell2.isValid()); CylinderStackPortalShell stack{ - gctx, {&shell1, &gapShell, &shell2}, BinningValue::binR}; + gctx, {&shell1, &gapShell, &shell2}, AxisDirection::AxisR}; BOOST_CHECK(stack.isValid()); @@ -607,7 +607,7 @@ BOOST_AUTO_TEST_CASE(NestedStacks) { BOOST_CHECK(shell3.isValid()); CylinderStackPortalShell stack2{ - gctx, {&stack, &shell3}, BinningValue::binZ, *logger}; + gctx, {&stack, &shell3}, AxisDirection::AxisZ, *logger}; BOOST_CHECK(stack2.isValid()); using enum CylinderVolumeBounds::Face; diff --git a/Tests/UnitTests/Core/Geometry/PortalTests.cpp b/Tests/UnitTests/Core/Geometry/PortalTests.cpp index 8997ccedda7..0eb38677154 100644 --- a/Tests/UnitTests/Core/Geometry/PortalTests.cpp +++ b/Tests/UnitTests/Core/Geometry/PortalTests.cpp @@ -127,7 +127,7 @@ BOOST_AUTO_TEST_CASE(Cylinder) { // | // v BOOST_CHECK_THROW( - Portal::merge(gctx, portal1, portal4, BinningValue::binZ, *logger), + Portal::merge(gctx, portal1, portal4, AxisDirection::AxisZ, *logger), PortalMergingException); // This call leaves both valid because the exception is thrown before the @@ -146,9 +146,9 @@ BOOST_AUTO_TEST_CASE(Cylinder) { .value(), nullptr); - // Cannot merge in binRPhi + // Cannot merge in AxisRPhi BOOST_CHECK_THROW( - Portal::merge(gctx, portal1, portal2, BinningValue::binRPhi, *logger), + Portal::merge(gctx, portal1, portal2, AxisDirection::AxisRPhi, *logger), SurfaceMergingException); // The call above leaves both portals invalid because the exception is thrown @@ -168,7 +168,7 @@ BOOST_AUTO_TEST_CASE(Cylinder) { portal2 = Portal{gctx, {.alongNormal = {cyl2, *vol2}}}; Portal merged12 = - Portal::merge(gctx, portal1, portal2, BinningValue::binZ, *logger); + Portal::merge(gctx, portal1, portal2, AxisDirection::AxisZ, *logger); BOOST_CHECK_NE(merged12.getLink(Direction::AlongNormal), nullptr); BOOST_CHECK_EQUAL(merged12.getLink(Direction::OppositeNormal), nullptr); @@ -204,14 +204,14 @@ BOOST_AUTO_TEST_CASE(Cylinder) { // Can't merge with self BOOST_CHECK_THROW( - Portal::merge(gctx, portal1, portal1, BinningValue::binZ, *logger), + Portal::merge(gctx, portal1, portal1, AxisDirection::AxisZ, *logger), PortalMergingException); // Can't merge because the surfaces are the same portal1 = Portal{gctx, {.alongNormal = {cyl1, *vol1}}}; portal2 = Portal{gctx, {.alongNormal = {cyl1, *vol2}}}; BOOST_CHECK_THROW( - Portal::merge(gctx, portal1, portal2, BinningValue::binZ, *logger), + Portal::merge(gctx, portal1, portal2, AxisDirection::AxisZ, *logger), AssertionFailureException); // Can't merge because surface has material @@ -221,7 +221,7 @@ BOOST_AUTO_TEST_CASE(Cylinder) { portal1 = Portal{gctx, {.alongNormal = {cyl1, *vol1}}}; portal2 = Portal{gctx, {.alongNormal = {cyl2, *vol2}}}; BOOST_CHECK_THROW( - Portal::merge(gctx, portal1, portal2, BinningValue::binZ, *logger), + Portal::merge(gctx, portal1, portal2, AxisDirection::AxisZ, *logger), PortalMergingException); } @@ -270,14 +270,14 @@ BOOST_AUTO_TEST_CASE(Disc) { vol4.get()); BOOST_CHECK_THROW( - Portal::merge(gctx, portal1, portal2, BinningValue::binZ, *logger), + Portal::merge(gctx, portal1, portal2, AxisDirection::AxisZ, *logger), AssertionFailureException); BOOST_CHECK(portal1.isValid()); BOOST_CHECK(portal2.isValid()); BOOST_CHECK_THROW( - Portal::merge(gctx, portal1, portal2, BinningValue::binPhi, *logger), + Portal::merge(gctx, portal1, portal2, AxisDirection::AxisPhi, *logger), SurfaceMergingException); // Portals not valid anymore because they were moved before the exception was @@ -302,7 +302,7 @@ BOOST_AUTO_TEST_CASE(Disc) { // | | // v v Portal merged12 = - Portal::merge(gctx, portal1, portal2, BinningValue::binR, *logger); + Portal::merge(gctx, portal1, portal2, AxisDirection::AxisR, *logger); BOOST_CHECK_EQUAL( merged12.resolveVolume(gctx, Vector3{55_mm, 0_mm, 0_mm}, Vector3::UnitZ()) @@ -334,7 +334,7 @@ BOOST_AUTO_TEST_CASE(Disc) { portal2 = Portal{ gctx, {.alongNormal = {disc2, *vol3}, .oppositeNormal = {disc2, *vol4}}}; BOOST_CHECK_THROW( - Portal::merge(gctx, portal1, portal2, BinningValue::binR, *logger), + Portal::merge(gctx, portal1, portal2, AxisDirection::AxisR, *logger), PortalMergingException); } @@ -565,7 +565,7 @@ BOOST_AUTO_TEST_CASE(GridCreationOnFuse) { links.push_back(std::move(trivial3)); auto composite = std::make_unique(std::move(links), - BinningValue::binR); + AxisDirection::AxisR); auto discOpposite = Surface::makeShared(Transform3::Identity(), 30_mm, 120_mm); diff --git a/Tests/UnitTests/Core/Geometry/ProtoLayerHelperTests.cpp b/Tests/UnitTests/Core/Geometry/ProtoLayerHelperTests.cpp index c6ccd763095..10d446cff53 100644 --- a/Tests/UnitTests/Core/Geometry/ProtoLayerHelperTests.cpp +++ b/Tests/UnitTests/Core/Geometry/ProtoLayerHelperTests.cpp @@ -74,7 +74,7 @@ BOOST_AUTO_TEST_CASE(ProtoLayerHelperTests) { // Sort into ProtoLayers auto radialLayers = plHelper.protoLayers( tgContext, cylinderSurfaces, - ProtoLayerHelper::SortingConfig(BinningValue::binR, 5.)); + ProtoLayerHelper::SortingConfig(AxisDirection::AxisR, 5.)); BOOST_CHECK_EQUAL(radialLayers.size(), 4); @@ -129,7 +129,7 @@ BOOST_AUTO_TEST_CASE(ProtoLayerHelperTests) { // Sort into ProtoLayers auto discLayersZ = - plHelper.protoLayers(tgContext, discSurfaces, {BinningValue::binZ, 5.}); + plHelper.protoLayers(tgContext, discSurfaces, {AxisDirection::AxisZ, 5.}); BOOST_CHECK_EQUAL(discLayersZ.size(), 4); @@ -181,7 +181,7 @@ BOOST_AUTO_TEST_CASE(ProtoLayerHelperTests) { // First: Sort into ProtoLayers radially auto rSorted = plHelper.protoLayers( tgContext, ringSurfaces, - ProtoLayerHelper::SortingConfig(BinningValue::binR, 1.)); + ProtoLayerHelper::SortingConfig(AxisDirection::AxisR, 1.)); BOOST_CHECK_EQUAL(rSorted.size(), 3); Color dColor = {0, 0, 0}; @@ -190,7 +190,7 @@ BOOST_AUTO_TEST_CASE(ProtoLayerHelperTests) { for (auto& rBatch : rSorted) { auto lSorted = plHelper.protoLayers( tgContext, rBatch.surfaces(), - ProtoLayerHelper::SortingConfig(BinningValue::binZ, 5.)); + ProtoLayerHelper::SortingConfig(AxisDirection::AxisZ, 5.)); il = 0; dColor[ir] = 256; for (auto& layer : lSorted) { @@ -206,9 +206,9 @@ BOOST_AUTO_TEST_CASE(ProtoLayerHelperTests) { objVis.write("ProtoLayerHelper_RingLayers_sorted"); // Perform the split at once - auto rzSorted = - plHelper.protoLayers(tgContext, ringSurfaces, - {{BinningValue::binR, 1.}, {BinningValue::binZ, 5}}); + auto rzSorted = plHelper.protoLayers( + tgContext, ringSurfaces, + {{AxisDirection::AxisR, 1.}, {AxisDirection::AxisZ, 5}}); std::size_t irz = 0; for (auto& layer : rzSorted) { diff --git a/Tests/UnitTests/Core/Geometry/ProtoLayerTests.cpp b/Tests/UnitTests/Core/Geometry/ProtoLayerTests.cpp index 3fdf8ec1c16..a0cc315b4b1 100644 --- a/Tests/UnitTests/Core/Geometry/ProtoLayerTests.cpp +++ b/Tests/UnitTests/Core/Geometry/ProtoLayerTests.cpp @@ -36,7 +36,7 @@ GeometryContext tgContext = GeometryContext(); BOOST_AUTO_TEST_SUITE(Geometry) BOOST_AUTO_TEST_CASE(ProtoLayerTests) { - using enum BinningValue; + using enum AxisDirection; // Create a proto layer with 4 surfaces on the x/y grid auto recBounds = std::make_shared(3., 6.); @@ -111,20 +111,20 @@ BOOST_AUTO_TEST_CASE(ProtoLayerTests) { // Test 1 - identity transform auto protoLayer = createProtoLayer(Transform3::Identity()); - CHECK_CLOSE_ABS(protoLayer.range(binX), 12., 1e-8); - CHECK_CLOSE_ABS(protoLayer.medium(binX), 0., 1e-8); - CHECK_CLOSE_ABS(protoLayer.min(binX), -6., 1e-8); - CHECK_CLOSE_ABS(protoLayer.max(binX), 6., 1e-8); - CHECK_CLOSE_ABS(protoLayer.range(binY), 6., 1e-8); - CHECK_CLOSE_ABS(protoLayer.medium(binY), 0., 1e-8); - CHECK_CLOSE_ABS(protoLayer.min(binY), -3., 1e-8); - CHECK_CLOSE_ABS(protoLayer.max(binY), 3., 1e-8); - CHECK_CLOSE_ABS(protoLayer.range(binZ), 12., 1e-8); - CHECK_CLOSE_ABS(protoLayer.medium(binZ), 0., 1e-8); - CHECK_CLOSE_ABS(protoLayer.min(binZ), -6., 1e-8); - CHECK_CLOSE_ABS(protoLayer.max(binZ), 6., 1e-8); - CHECK_CLOSE_ABS(protoLayer.max(binR), std::hypot(3, 6), 1e-8); - CHECK_CLOSE_ABS(protoLayer.min(binR), 3., 1e-8); + CHECK_CLOSE_ABS(protoLayer.range(AxisX), 12., 1e-8); + CHECK_CLOSE_ABS(protoLayer.medium(AxisX), 0., 1e-8); + CHECK_CLOSE_ABS(protoLayer.min(AxisX), -6., 1e-8); + CHECK_CLOSE_ABS(protoLayer.max(AxisX), 6., 1e-8); + CHECK_CLOSE_ABS(protoLayer.range(AxisY), 6., 1e-8); + CHECK_CLOSE_ABS(protoLayer.medium(AxisY), 0., 1e-8); + CHECK_CLOSE_ABS(protoLayer.min(AxisY), -3., 1e-8); + CHECK_CLOSE_ABS(protoLayer.max(AxisY), 3., 1e-8); + CHECK_CLOSE_ABS(protoLayer.range(AxisZ), 12., 1e-8); + CHECK_CLOSE_ABS(protoLayer.medium(AxisZ), 0., 1e-8); + CHECK_CLOSE_ABS(protoLayer.min(AxisZ), -6., 1e-8); + CHECK_CLOSE_ABS(protoLayer.max(AxisZ), 6., 1e-8); + CHECK_CLOSE_ABS(protoLayer.max(AxisR), std::hypot(3, 6), 1e-8); + CHECK_CLOSE_ABS(protoLayer.min(AxisR), 3., 1e-8); // Test 1a @@ -133,35 +133,35 @@ BOOST_AUTO_TEST_CASE(ProtoLayerTests) { auto protoLayerRot = createProtoLayer(AngleAxis3(-0.345, Vector3::UnitZ()) * Transform3::Identity()); - BOOST_CHECK_NE(protoLayer.min(binX), -6.); - CHECK_CLOSE_ABS(protoLayerRot.medium(binX), 0., 1e-8); - CHECK_CLOSE_ABS(protoLayerRot.medium(binY), 0., 1e-8); - CHECK_CLOSE_ABS(protoLayerRot.range(binZ), 12., 1e-8); - CHECK_CLOSE_ABS(protoLayerRot.medium(binZ), 0., 1e-8); - CHECK_CLOSE_ABS(protoLayerRot.min(binZ), -6., 1e-8); - CHECK_CLOSE_ABS(protoLayerRot.max(binZ), 6., 1e-8); - CHECK_CLOSE_ABS(protoLayerRot.min(binR), 3., 1e-8); - CHECK_CLOSE_ABS(protoLayerRot.max(binR), std::hypot(3, 6), 1e-8); + BOOST_CHECK_NE(protoLayer.min(AxisX), -6.); + CHECK_CLOSE_ABS(protoLayerRot.medium(AxisX), 0., 1e-8); + CHECK_CLOSE_ABS(protoLayerRot.medium(AxisY), 0., 1e-8); + CHECK_CLOSE_ABS(protoLayerRot.range(AxisZ), 12., 1e-8); + CHECK_CLOSE_ABS(protoLayerRot.medium(AxisZ), 0., 1e-8); + CHECK_CLOSE_ABS(protoLayerRot.min(AxisZ), -6., 1e-8); + CHECK_CLOSE_ABS(protoLayerRot.max(AxisZ), 6., 1e-8); + CHECK_CLOSE_ABS(protoLayerRot.min(AxisR), 3., 1e-8); + CHECK_CLOSE_ABS(protoLayerRot.max(AxisR), std::hypot(3, 6), 1e-8); std::stringstream sstream; protoLayerRot.toStream(sstream); std::string oString = R"(ProtoLayer with dimensions (min/max) Extent in space : - - value : binX | range = [-6.66104, 6.66104] - - value : binY | range = [-4.85241, 4.85241] - - value : binZ | range = [-6, 6] - - value : binR | range = [3, 6.7082] - - value : binPhi | range = [-3.02295, 2.33295] - - value : binRPhi | range = [-20.2785, 15.6499] - - value : binH | range = [0.61548, 2.52611] - - value : binEta | range = [-1.14622, 1.14622] - - value : binMag | range = [7.34847, 7.34847] + - value : AxisX | range = [-6.66104, 6.66104] + - value : AxisY | range = [-4.85241, 4.85241] + - value : AxisZ | range = [-6, 6] + - value : AxisR | range = [3, 6.7082] + - value : AxisPhi | range = [-3.02295, 2.33295] + - value : AxisRPhi | range = [-20.2785, 15.6499] + - value : AxisTheta | range = [0.61548, 2.52611] + - value : AxisEta | range = [-1.14622, 1.14622] + - value : AxisMag | range = [7.34847, 7.34847] )"; BOOST_CHECK_EQUAL(sstream.str(), oString); } BOOST_AUTO_TEST_CASE(OrientedLayer) { - using enum BinningValue; + using enum AxisDirection; using namespace Acts::UnitLiterals; Transform3 base = Transform3::Identity(); @@ -197,14 +197,14 @@ BOOST_AUTO_TEST_CASE(OrientedLayer) { ProtoLayer protoLayer(tgContext, surfaces); BOOST_CHECK_EQUAL(protoLayer.surfaces().size(), 8); - BOOST_CHECK_CLOSE(protoLayer.min(binX), -23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.max(binX), 23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.min(binY), -23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.max(binY), 23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.min(binZ), 0_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.max(binZ), 0_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.min(binR), 17_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.max(binR), 23.769728648_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.min(AxisX), -23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.max(AxisX), 23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.min(AxisY), -23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.max(AxisY), 23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.min(AxisZ), 0_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.max(AxisZ), 0_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.min(AxisR), 17_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.max(AxisR), 23.769728648_mm, 1e-8); surfaces = makeFan(45_degree); @@ -212,41 +212,41 @@ BOOST_AUTO_TEST_CASE(OrientedLayer) { protoLayer = {tgContext, surfaces}; BOOST_CHECK_EQUAL(protoLayer.surfaces().size(), 8); - BOOST_CHECK_CLOSE(protoLayer.min(binX), -16.26345596_mm, 1e-4); - BOOST_CHECK_CLOSE(protoLayer.max(binX), 16.26345596_mm, 1e-4); - BOOST_CHECK_CLOSE(protoLayer.min(binY), -23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.max(binY), 23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.min(binZ), -16.26345596_mm, 1e-4); - BOOST_CHECK_CLOSE(protoLayer.max(binZ), 16.26345596_mm, 1e-4); + BOOST_CHECK_CLOSE(protoLayer.min(AxisX), -16.26345596_mm, 1e-4); + BOOST_CHECK_CLOSE(protoLayer.max(AxisX), 16.26345596_mm, 1e-4); + BOOST_CHECK_CLOSE(protoLayer.min(AxisY), -23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.max(AxisY), 23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.min(AxisZ), -16.26345596_mm, 1e-4); + BOOST_CHECK_CLOSE(protoLayer.max(AxisZ), 16.26345596_mm, 1e-4); protoLayer = {tgContext, surfaces, Transform3{AngleAxis3{45_degree, Vector3::UnitY()}}.inverse()}; BOOST_CHECK_EQUAL(protoLayer.surfaces().size(), 8); - BOOST_CHECK_CLOSE(protoLayer.range(binX), 46_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.min(binX), -23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.max(binX), 23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.range(binY), 46_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.min(binY), -23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.max(binY), 23_mm, 1e-8); - CHECK_SMALL(protoLayer.range(binZ), 1e-14); - CHECK_SMALL(protoLayer.min(binZ), 1e-14); - CHECK_SMALL(protoLayer.max(binZ), 1e-14); + BOOST_CHECK_CLOSE(protoLayer.range(AxisX), 46_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.min(AxisX), -23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.max(AxisX), 23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.range(AxisY), 46_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.min(AxisY), -23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.max(AxisY), 23_mm, 1e-8); + CHECK_SMALL(protoLayer.range(AxisZ), 1e-14); + CHECK_SMALL(protoLayer.min(AxisZ), 1e-14); + CHECK_SMALL(protoLayer.max(AxisZ), 1e-14); surfaces = makeFan(0_degree, 10_mm); protoLayer = {tgContext, surfaces}; BOOST_CHECK_EQUAL(protoLayer.surfaces().size(), 8); - BOOST_CHECK_CLOSE(protoLayer.range(binX), 46_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.min(binX), -23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.max(binX), 23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.range(binY), 46_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.min(binY), -23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.max(binY), 23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.range(binZ), 10_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.min(binZ), -5_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.max(binZ), 5_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.range(AxisX), 46_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.min(AxisX), -23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.max(AxisX), 23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.range(AxisY), 46_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.min(AxisY), -23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.max(AxisY), 23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.range(AxisZ), 10_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.min(AxisZ), -5_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.max(AxisZ), 5_mm, 1e-8); surfaces = makeFan(45_degree, 10_mm); @@ -254,15 +254,15 @@ BOOST_AUTO_TEST_CASE(OrientedLayer) { Transform3{AngleAxis3{45_degree, Vector3::UnitY()}}.inverse()}; BOOST_CHECK_EQUAL(protoLayer.surfaces().size(), 8); - BOOST_CHECK_CLOSE(protoLayer.range(binX), 46_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.min(binX), -23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.max(binX), 23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.range(binY), 46_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.min(binY), -23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.max(binY), 23_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.range(binZ), 10_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.min(binZ), -5_mm, 1e-8); - BOOST_CHECK_CLOSE(protoLayer.max(binZ), 5_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.range(AxisX), 46_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.min(AxisX), -23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.max(AxisX), 23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.range(AxisY), 46_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.min(AxisY), -23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.max(AxisY), 23_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.range(AxisZ), 10_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.min(AxisZ), -5_mm, 1e-8); + BOOST_CHECK_CLOSE(protoLayer.max(AxisZ), 5_mm, 1e-8); } BOOST_AUTO_TEST_SUITE_END() diff --git a/Tests/UnitTests/Core/Geometry/SurfaceArrayCreatorTests.cpp b/Tests/UnitTests/Core/Geometry/SurfaceArrayCreatorTests.cpp index 6d69c1667da..9681f1b221d 100644 --- a/Tests/UnitTests/Core/Geometry/SurfaceArrayCreatorTests.cpp +++ b/Tests/UnitTests/Core/Geometry/SurfaceArrayCreatorTests.cpp @@ -20,7 +20,7 @@ #include "Acts/Surfaces/SurfaceBounds.hpp" #include "Acts/Tests/CommonHelpers/FloatComparisons.hpp" #include "Acts/Utilities/Axis.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinningType.hpp" #include "Acts/Utilities/Grid.hpp" #include "Acts/Utilities/Helpers.hpp" @@ -272,9 +272,9 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_Phi, std::vector emptyRaw; ProtoLayer pl(tgContext, emptyRaw); auto tr = Transform3::Identity(); - BOOST_CHECK_THROW( - createEquidistantAxis(tgContext, emptyRaw, BinningValue::binPhi, pl, tr), - std::logic_error); + BOOST_CHECK_THROW(createEquidistantAxis(tgContext, emptyRaw, + AxisDirection::AxisPhi, pl, tr), + std::logic_error); std::vector bdExp = { -3.14159, -2.93215, -2.72271, -2.51327, -2.30383, -2.0944, -1.88496, @@ -296,7 +296,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_Phi, pl = ProtoLayer(tgContext, surfacesRaw); tr = Transform3::Identity(); auto axis = createEquidistantAxis(tgContext, surfacesRaw, - BinningValue::binPhi, pl, tr); + AxisDirection::AxisPhi, pl, tr); BOOST_CHECK_EQUAL(axis.nBins, 30u); CHECK_CLOSE_REL(axis.max, std::numbers::pi, 1e-6); @@ -310,7 +310,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_Phi, surfacesRaw = unpack_shared_vector(surfaces); pl = ProtoLayer(tgContext, surfacesRaw); tr = Transform3::Identity(); - axis = createEquidistantAxis(tgContext, surfacesRaw, BinningValue::binPhi, + axis = createEquidistantAxis(tgContext, surfacesRaw, AxisDirection::AxisPhi, pl, tr); draw_surfaces(surfaces, "SurfaceArrayCreator_createEquidistantAxis_EC_2.obj"); @@ -326,7 +326,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_Phi, surfacesRaw = unpack_shared_vector(surfaces); pl = ProtoLayer(tgContext, surfacesRaw); tr = Transform3::Identity(); - axis = createEquidistantAxis(tgContext, surfacesRaw, BinningValue::binPhi, + axis = createEquidistantAxis(tgContext, surfacesRaw, AxisDirection::AxisPhi, pl, tr); draw_surfaces(surfaces, "SurfaceArrayCreator_createEquidistantAxis_EC_3.obj"); @@ -343,7 +343,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_Phi, pl = ProtoLayer(tgContext, surfaces); surfacesRaw = unpack_shared_vector(surfaces); tr = Transform3::Identity(); - axis = createEquidistantAxis(tgContext, surfacesRaw, BinningValue::binPhi, + axis = createEquidistantAxis(tgContext, surfacesRaw, AxisDirection::AxisPhi, pl, tr); surfacesRaw = unpack_shared_vector(surfaces); draw_surfaces(surfaces, @@ -364,7 +364,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_Phi, pl = ProtoLayer(tgContext, surfacesRaw); tr = Transform3::Identity(); auto axis = createEquidistantAxis(tgContext, surfacesRaw, - BinningValue::binPhi, pl, tr); + AxisDirection::AxisPhi, pl, tr); draw_surfaces(surfaces, "SurfaceArrayCreator_createEquidistantAxis_BRL_1.obj"); BOOST_CHECK_EQUAL(axis.nBins, 30u); @@ -379,7 +379,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_Phi, surfacesRaw = unpack_shared_vector(surfaces); pl = ProtoLayer(tgContext, surfacesRaw); tr = Transform3::Identity(); - axis = createEquidistantAxis(tgContext, surfacesRaw, BinningValue::binPhi, + axis = createEquidistantAxis(tgContext, surfacesRaw, AxisDirection::AxisPhi, pl, tr); draw_surfaces(surfaces, "SurfaceArrayCreator_createEquidistantAxis_BRL_2.obj"); @@ -396,7 +396,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_Phi, surfacesRaw = unpack_shared_vector(surfaces); pl = ProtoLayer(tgContext, surfacesRaw); tr = Transform3::Identity(); - axis = createEquidistantAxis(tgContext, surfacesRaw, BinningValue::binPhi, + axis = createEquidistantAxis(tgContext, surfacesRaw, AxisDirection::AxisPhi, pl, tr); draw_surfaces(surfaces, "SurfaceArrayCreator_createEquidistantAxis_BRL_3.obj"); @@ -413,7 +413,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_Phi, surfacesRaw = unpack_shared_vector(surfaces); pl = ProtoLayer(tgContext, surfacesRaw); tr = Transform3::Identity(); - axis = createEquidistantAxis(tgContext, surfacesRaw, BinningValue::binPhi, + axis = createEquidistantAxis(tgContext, surfacesRaw, AxisDirection::AxisPhi, pl, tr); draw_surfaces(surfaces, "SurfaceArrayCreator_createEquidistantAxis_BRL_4.obj"); @@ -436,7 +436,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_Phi, pl = ProtoLayer(tgContext, surfacesRaw); tr = Transform3::Identity(); auto axis = createEquidistantAxis(tgContext, surfacesRaw, - BinningValue::binPhi, pl, tr); + AxisDirection::AxisPhi, pl, tr); BOOST_CHECK_EQUAL(axis.nBins, 1u); CHECK_CLOSE_ABS(axis.max, phi(Vector3(8, 1, 0)), 1e-3); @@ -451,8 +451,8 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_Z, auto surfacesRaw = unpack_shared_vector(surfaces); ProtoLayer pl = ProtoLayer(tgContext, surfacesRaw); auto trf = Transform3::Identity(); - auto axis = createEquidistantAxis(tgContext, surfacesRaw, BinningValue::binZ, - pl, trf); + auto axis = createEquidistantAxis(tgContext, surfacesRaw, + AxisDirection::AxisZ, pl, trf); draw_surfaces(surfaces, "SurfaceArrayCreator_createEquidistantAxis_Z_1.obj"); BOOST_CHECK_EQUAL(axis.nBins, 1u); CHECK_CLOSE_ABS(axis.max, 3, 1e-6); @@ -466,8 +466,8 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_Z, surfacesRaw = unpack_shared_vector(surfaces); pl = ProtoLayer(tgContext, surfacesRaw); trf = Transform3::Identity(); - axis = createEquidistantAxis(tgContext, surfacesRaw, BinningValue::binZ, pl, - trf); + axis = createEquidistantAxis(tgContext, surfacesRaw, AxisDirection::AxisZ, + pl, trf); draw_surfaces( surfaces, (boost::format( @@ -487,7 +487,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_Z, surfacesRaw = unpack_shared_vector(surfaces); pl = ProtoLayer(tgContext, surfacesRaw); trf = Transform3::Identity(); - axis = createEquidistantAxis(tgContext, surfacesRaw, BinningValue::binZ, pl, + axis = createEquidistantAxis(tgContext, surfacesRaw, AxisDirection::AxisZ, pl, trf); draw_surfaces(surfaces, "SurfaceArrayCreator_createEquidistantAxis_Z_3.obj"); BOOST_CHECK_EQUAL(axis.nBins, 10u); @@ -504,8 +504,8 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_R, draw_surfaces(surfaces, "SurfaceArrayCreator_createEquidistantAxis_R_1.obj"); auto trf = Transform3::Identity(); ProtoLayer pl = ProtoLayer(tgContext, surfacesRaw); - auto axis = createEquidistantAxis(tgContext, surfacesRaw, BinningValue::binR, - pl, trf); + auto axis = createEquidistantAxis(tgContext, surfacesRaw, + AxisDirection::AxisR, pl, trf); BOOST_CHECK_EQUAL(axis.nBins, 1u); CHECK_CLOSE_ABS(axis.max, perp(Vector3(17, 1, 0)), 1e-3); CHECK_CLOSE_ABS(axis.min, 13, 1e-3); @@ -524,7 +524,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_createEquidistantAxis_R, surfacesRaw = unpack_shared_vector(surfaces); pl = ProtoLayer(tgContext, surfacesRaw); trf = Transform3::Identity(); - axis = createEquidistantAxis(tgContext, surfacesRaw, BinningValue::binR, pl, + axis = createEquidistantAxis(tgContext, surfacesRaw, AxisDirection::AxisR, pl, trf); BOOST_CHECK_EQUAL(axis.nBins, 3u); @@ -595,7 +595,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_completeBinning, // actually filled SA for (const auto& srf : brl) { - Vector3 ctr = srf->binningPosition(tgContext, BinningValue::binR); + Vector3 ctr = srf->referencePosition(tgContext, AxisDirection::AxisR); auto binContent = sa.at(ctr); BOOST_CHECK_EQUAL(binContent.size(), 1u); @@ -616,9 +616,9 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_barrelStagger, Transform3 tr = Transform3::Identity(); auto pAxisPhi = - createEquidistantAxis(tgContext, brlRaw, BinningValue::binPhi, pl, tr); + createEquidistantAxis(tgContext, brlRaw, AxisDirection::AxisPhi, pl, tr); auto pAxisZ = - createEquidistantAxis(tgContext, brlRaw, BinningValue::binZ, pl, tr); + createEquidistantAxis(tgContext, brlRaw, AxisDirection::AxisZ, pl, tr); double R = 10.; Transform3 itr = tr.inverse(); @@ -645,7 +645,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_barrelStagger, auto A = pr.first; auto B = pr.second; - Vector3 ctr = A->binningPosition(tgContext, BinningValue::binR); + Vector3 ctr = A->referencePosition(tgContext, AxisDirection::AxisR); auto binContent = sa.at(ctr); BOOST_CHECK_EQUAL(binContent.size(), 2u); std::set act; @@ -664,9 +664,9 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_barrelStagger, tr = Transform3::Identity(); auto pAxisPhiVar = - createVariableAxis(tgContext, brlRaw, BinningValue::binPhi, pl, tr); + createVariableAxis(tgContext, brlRaw, AxisDirection::AxisPhi, pl, tr); auto pAxisZVar = - createVariableAxis(tgContext, brlRaw, BinningValue::binZ, pl, tr); + createVariableAxis(tgContext, brlRaw, AxisDirection::AxisZ, pl, tr); itr = tr.inverse(); @@ -715,7 +715,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArrayCreator_barrelStagger, auto A = pr.first; auto B = pr.second; - Vector3 ctr = A->binningPosition(tgContext, BinningValue::binR); + Vector3 ctr = A->referencePosition(tgContext, AxisDirection::AxisR); auto binContent = sa2.at(ctr); BOOST_CHECK_EQUAL(binContent.size(), 2u); std::set act; diff --git a/Tests/UnitTests/Core/Geometry/SurfaceBinningMatcherTests.cpp b/Tests/UnitTests/Core/Geometry/SurfaceBinningMatcherTests.cpp index 6a3c92aa8a3..726620a15c1 100644 --- a/Tests/UnitTests/Core/Geometry/SurfaceBinningMatcherTests.cpp +++ b/Tests/UnitTests/Core/Geometry/SurfaceBinningMatcherTests.cpp @@ -58,25 +58,25 @@ BOOST_AUTO_TEST_CASE(PlaneSurfaceMatcher) { Surface::makeShared(identity, similarPhiBounds); SurfaceBinningMatcher sbm; - sbm.tolerances[toUnderlying(BinningValue::binR)] = {rMinTol, rMaxTol}; - sbm.tolerances[toUnderlying(BinningValue::binPhi)] = {phiTol, phiTol}; + sbm.tolerances[toUnderlying(AxisDirection::AxisR)] = {rMinTol, rMaxTol}; + sbm.tolerances[toUnderlying(AxisDirection::AxisPhi)] = {phiTol, phiTol}; // Always true - for (BinningValue ib : allBinningValues()) { + for (AxisDirection ib : allAxisDirections()) { BOOST_CHECK(sbm(tgContext, ib, oneSurface.get(), oneSurface.get())); } // Not matching in R - BOOST_CHECK(!sbm(tgContext, BinningValue::binR, oneSurface.get(), + BOOST_CHECK(!sbm(tgContext, AxisDirection::AxisR, oneSurface.get(), otherSurface.get())); // Not matching in phi - BOOST_CHECK(!sbm(tgContext, BinningValue::binPhi, oneSurface.get(), + BOOST_CHECK(!sbm(tgContext, AxisDirection::AxisPhi, oneSurface.get(), otherSurface.get())); // Good enough matching in R - BOOST_CHECK(sbm(tgContext, BinningValue::binR, oneSurface.get(), + BOOST_CHECK(sbm(tgContext, AxisDirection::AxisR, oneSurface.get(), similarRSurface.get())); // Good enough matching in phi - BOOST_CHECK(sbm(tgContext, BinningValue::binPhi, oneSurface.get(), + BOOST_CHECK(sbm(tgContext, AxisDirection::AxisPhi, oneSurface.get(), similarPhiSurface.get())); } diff --git a/Tests/UnitTests/Core/Geometry/TrackingVolumeCreation.hpp b/Tests/UnitTests/Core/Geometry/TrackingVolumeCreation.hpp index d895f74ccab..899bcaa8a41 100644 --- a/Tests/UnitTests/Core/Geometry/TrackingVolumeCreation.hpp +++ b/Tests/UnitTests/Core/Geometry/TrackingVolumeCreation.hpp @@ -96,14 +96,14 @@ MutableTrackingVolumePtr constructContainerVolume(const GeometryContext& gctx, /// create the volume array using VAP = std::pair; std::vector volumes = { - {iVolume, iVolume->binningPosition(gctx, BinningValue::binR)}, - {oVolume, oVolume->binningPosition(gctx, BinningValue::binR)}}; + {iVolume, iVolume->referencePosition(gctx, AxisDirection::AxisR)}, + {oVolume, oVolume->referencePosition(gctx, AxisDirection::AxisR)}}; /// the bounds for the container auto hVolumeBounds = std::make_shared(0., hVolumeR, hVolumeHalflength); /// create the BinUtility & the BinnedArray auto vUtility = std::make_unique( - volumes.size(), 0., hVolumeR, open, BinningValue::binR); + volumes.size(), 0., hVolumeR, open, AxisDirection::AxisR); std::shared_ptr vArray = std::make_shared>( volumes, std::move(vUtility)); diff --git a/Tests/UnitTests/Core/Geometry/VolumeTests.cpp b/Tests/UnitTests/Core/Geometry/VolumeTests.cpp index 8c10abc18c2..8e9c8296ef3 100644 --- a/Tests/UnitTests/Core/Geometry/VolumeTests.cpp +++ b/Tests/UnitTests/Core/Geometry/VolumeTests.cpp @@ -72,7 +72,7 @@ BOOST_AUTO_TEST_CASE(VolumeTest) { // Binning test GeometryContext gctx; - BOOST_CHECK_EQUAL(volume.binningPosition(gctx, BinningValue::binX), + BOOST_CHECK_EQUAL(volume.referencePosition(gctx, AxisDirection::AxisX), volume.center()); } diff --git a/Tests/UnitTests/Core/MagneticField/InterpolatedBFieldMapTests.cpp b/Tests/UnitTests/Core/MagneticField/InterpolatedBFieldMapTests.cpp index 925d6617018..e7620de6d06 100644 --- a/Tests/UnitTests/Core/MagneticField/InterpolatedBFieldMapTests.cpp +++ b/Tests/UnitTests/Core/MagneticField/InterpolatedBFieldMapTests.cpp @@ -13,7 +13,7 @@ #include "Acts/MagneticField/MagneticFieldContext.hpp" #include "Acts/Tests/CommonHelpers/FloatComparisons.hpp" #include "Acts/Utilities/Axis.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Grid.hpp" #include "Acts/Utilities/Result.hpp" #include "Acts/Utilities/VectorHelpers.hpp" diff --git a/Tests/UnitTests/Core/Material/AccumulatedSurfaceMaterialTests.cpp b/Tests/UnitTests/Core/Material/AccumulatedSurfaceMaterialTests.cpp index 9eb412a344d..3326c258c77 100644 --- a/Tests/UnitTests/Core/Material/AccumulatedSurfaceMaterialTests.cpp +++ b/Tests/UnitTests/Core/Material/AccumulatedSurfaceMaterialTests.cpp @@ -35,7 +35,7 @@ BOOST_AUTO_TEST_CASE(AccumulatedSurfaceMaterial_construction_test) { // Test: // BinsSurfaceMaterial accumulation - 1D - BinUtility binUtility1D(10, -5., 5., open, BinningValue::binX); + BinUtility binUtility1D(10, -5., 5., open, AxisDirection::AxisX); AccumulatedSurfaceMaterial material1D{binUtility1D}; auto accMat1D = material1D.accumulatedMaterial(); BOOST_CHECK_EQUAL(accMat1D.size(), 1u); @@ -43,8 +43,8 @@ BOOST_AUTO_TEST_CASE(AccumulatedSurfaceMaterial_construction_test) { // Test: // BinsSurfaceMaterial accumulation - 2D - BinUtility binUtility2D(10, -5., 5., open, BinningValue::binX); - binUtility2D += BinUtility(20, -10., 10., open, BinningValue::binY); + BinUtility binUtility2D(10, -5., 5., open, AxisDirection::AxisX); + binUtility2D += BinUtility(20, -10., 10., open, AxisDirection::AxisY); AccumulatedSurfaceMaterial material2D{binUtility2D}; auto accMat2D = material2D.accumulatedMaterial(); BOOST_CHECK_EQUAL(accMat2D.size(), 20u); @@ -91,8 +91,8 @@ BOOST_AUTO_TEST_CASE(AccumulatedSurfaceMaterial_fill_convert_1D) { MaterialSlab four(mat, 4.); // BinsSurfaceMaterial accumulation - 2D - BinUtility binUtility2D(2, -1., 1., open, BinningValue::binX); - binUtility2D += BinUtility(2, -1., 1., open, BinningValue::binY); + BinUtility binUtility2D(2, -1., 1., open, AxisDirection::AxisX); + binUtility2D += BinUtility(2, -1., 1., open, AxisDirection::AxisY); AccumulatedSurfaceMaterial material2D{binUtility2D}; const std::vector> bin; diff --git a/Tests/UnitTests/Core/Material/BinnedSurfaceMaterialAccumulaterTests.cpp b/Tests/UnitTests/Core/Material/BinnedSurfaceMaterialAccumulaterTests.cpp index a249d22ba4b..d3759c16400 100644 --- a/Tests/UnitTests/Core/Material/BinnedSurfaceMaterialAccumulaterTests.cpp +++ b/Tests/UnitTests/Core/Material/BinnedSurfaceMaterialAccumulaterTests.cpp @@ -87,14 +87,14 @@ BOOST_AUTO_TEST_CASE(AccumulationTest) { // Second surface is binned Phi / Z BinUtility sb1(4, -std::numbers::pi, std::numbers::pi, closed, - BinningValue::binPhi); - sb1 += BinUtility(2, -100., 100., open, BinningValue::binZ); + AxisDirection::AxisPhi); + sb1 += BinUtility(2, -100., 100., open, AxisDirection::AxisZ); surfaces[1u]->assignSurfaceMaterial( std::make_shared(sb1)); // Third is binned std::vector mps = {mp, mp, mp}; - BinUtility sb2(3, -100., 100., open, BinningValue::binZ); + BinUtility sb2(3, -100., 100., open, AxisDirection::AxisZ); surfaces[2u]->assignSurfaceMaterial( std::make_shared(sb2, mps)); diff --git a/Tests/UnitTests/Core/Material/BinnedSurfaceMaterialTests.cpp b/Tests/UnitTests/Core/Material/BinnedSurfaceMaterialTests.cpp index f9c2d26df40..9551c131adc 100644 --- a/Tests/UnitTests/Core/Material/BinnedSurfaceMaterialTests.cpp +++ b/Tests/UnitTests/Core/Material/BinnedSurfaceMaterialTests.cpp @@ -21,8 +21,8 @@ namespace Acts::Test { /// Test the constructors BOOST_AUTO_TEST_CASE(BinnedSurfaceMaterial_construction_test) { - BinUtility xyBinning(2, -1., 1., open, BinningValue::binX); - xyBinning += BinUtility(3, -3., 3., open, BinningValue::binY); + BinUtility xyBinning(2, -1., 1., open, AxisDirection::AxisX); + xyBinning += BinUtility(3, -3., 3., open, AxisDirection::AxisY); // Constructor a few material properties MaterialSlab a00(Material::fromMolarDensity(1., 2., 3., 4., 5.), 6.); diff --git a/Tests/UnitTests/Core/Material/InterpolatedMaterialMapTests.cpp b/Tests/UnitTests/Core/Material/InterpolatedMaterialMapTests.cpp index 10933ccfa0c..4977918c05d 100644 --- a/Tests/UnitTests/Core/Material/InterpolatedMaterialMapTests.cpp +++ b/Tests/UnitTests/Core/Material/InterpolatedMaterialMapTests.cpp @@ -13,7 +13,7 @@ #include "Acts/Material/Material.hpp" #include "Acts/Tests/CommonHelpers/FloatComparisons.hpp" #include "Acts/Utilities/Axis.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Grid.hpp" #include diff --git a/Tests/UnitTests/Core/Material/MaterialGridHelperTests.cpp b/Tests/UnitTests/Core/Material/MaterialGridHelperTests.cpp index 1c76cf866f7..51d330a2bc9 100644 --- a/Tests/UnitTests/Core/Material/MaterialGridHelperTests.cpp +++ b/Tests/UnitTests/Core/Material/MaterialGridHelperTests.cpp @@ -15,7 +15,7 @@ #include "Acts/Material/MaterialSlab.hpp" #include "Acts/Tests/CommonHelpers/FloatComparisons.hpp" #include "Acts/Utilities/Axis.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinUtility.hpp" #include "Acts/Utilities/BinningType.hpp" #include "Acts/Utilities/Grid.hpp" @@ -40,8 +40,8 @@ using MaterialGrid3D = /// @brief Various test for the Material in the case of a Cuboid volume and 2D /// Grid BOOST_AUTO_TEST_CASE(Square_Grid_test) { - BinUtility bu(7, -3., 3., open, BinningValue::binX); - bu += BinUtility(3, -2., 2., open, BinningValue::binY); + BinUtility bu(7, -3., 3., open, AxisDirection::AxisX); + bu += BinUtility(3, -2., 2., open, AxisDirection::AxisY); auto bd = bu.binningData(); std::function transfoGlobalToLocal; @@ -129,9 +129,9 @@ BOOST_AUTO_TEST_CASE(Square_Grid_test) { /// @brief Various test for the Material in the case of a Cylindrical volume /// with a 2D grid BOOST_AUTO_TEST_CASE(PhiZ_Grid_test) { - BinUtility bu(2, -2., 2., open, BinningValue::binZ); + BinUtility bu(2, -2., 2., open, AxisDirection::AxisZ); bu += BinUtility(3, -std::numbers::pi, std::numbers::pi, closed, - BinningValue::binPhi); + AxisDirection::AxisPhi); auto bd = bu.binningData(); std::function transfoGlobalToLocal; @@ -219,9 +219,9 @@ BOOST_AUTO_TEST_CASE(PhiZ_Grid_test) { /// @brief Various test for the Material in the case of a Cuboid volume BOOST_AUTO_TEST_CASE(Cubic_Grid_test) { - BinUtility bu(7, -3., 3., open, BinningValue::binX); - bu += BinUtility(3, -2., 2., open, BinningValue::binY); - bu += BinUtility(2, -1., 1., open, BinningValue::binZ); + BinUtility bu(7, -3., 3., open, AxisDirection::AxisX); + bu += BinUtility(3, -2., 2., open, AxisDirection::AxisY); + bu += BinUtility(2, -1., 1., open, AxisDirection::AxisZ); auto bd = bu.binningData(); std::function transfoGlobalToLocal; @@ -310,10 +310,10 @@ BOOST_AUTO_TEST_CASE(Cubic_Grid_test) { /// @brief Various test for the Material in the case of a Cylindrical volume BOOST_AUTO_TEST_CASE(Cylindrical_Grid_test) { - BinUtility bu(4, 1., 4., open, BinningValue::binR); + BinUtility bu(4, 1., 4., open, AxisDirection::AxisR); bu += BinUtility(3, -std::numbers::pi, std::numbers::pi, closed, - BinningValue::binPhi); - bu += BinUtility(2, -2., 2., open, BinningValue::binZ); + AxisDirection::AxisPhi); + bu += BinUtility(2, -2., 2., open, AxisDirection::AxisZ); auto bd = bu.binningData(); std::function transfoGlobalToLocal; diff --git a/Tests/UnitTests/Core/Material/PropagatorMaterialAssignerTests.cpp b/Tests/UnitTests/Core/Material/PropagatorMaterialAssignerTests.cpp index 03ab7415d1b..18f5880c98e 100644 --- a/Tests/UnitTests/Core/Material/PropagatorMaterialAssignerTests.cpp +++ b/Tests/UnitTests/Core/Material/PropagatorMaterialAssignerTests.cpp @@ -69,7 +69,7 @@ BOOST_AUTO_TEST_CASE(FindSurfaceIntersectionsTrackingGeometry) { LayerArrayCreator::Config lacConfig; LayerArrayCreator lac = LayerArrayCreator(lacConfig); auto layers = lac.layerArray(tContext, {pCylinderLayer}, rMin, rMid, - arbitrary, BinningValue::binR); + arbitrary, AxisDirection::AxisR); auto innerVolume = std::make_shared( Transform3::Identity(), vCylinderInner, nullptr, std::move(layers), @@ -85,7 +85,7 @@ BOOST_AUTO_TEST_CASE(FindSurfaceIntersectionsTrackingGeometry) { TrackingVolumeArrayCreator tvac = TrackingVolumeArrayCreator(tvacConfig); auto volumes = tvac.trackingVolumeArray(tContext, {innerVolume, outerVolume}, - BinningValue::binR); + AxisDirection::AxisR); auto vCylinderTop = std::make_shared(rMin, rMax, 110.); diff --git a/Tests/UnitTests/Core/Material/ProtoSurfaceMaterialTests.cpp b/Tests/UnitTests/Core/Material/ProtoSurfaceMaterialTests.cpp index 195ef30b81d..b2b3b153626 100644 --- a/Tests/UnitTests/Core/Material/ProtoSurfaceMaterialTests.cpp +++ b/Tests/UnitTests/Core/Material/ProtoSurfaceMaterialTests.cpp @@ -18,8 +18,8 @@ namespace Acts::Test { /// Test the constructors BOOST_AUTO_TEST_CASE(ProtoSurfaceMaterial_construction_test) { - BinUtility smpBU(10, -10., 10., open, BinningValue::binX); - smpBU += BinUtility(10, -10., 10., open, BinningValue::binY); + BinUtility smpBU(10, -10., 10., open, AxisDirection::AxisX); + smpBU += BinUtility(10, -10., 10., open, AxisDirection::AxisY); // Constructor from arguments ProtoSurfaceMaterial smp(smpBU); diff --git a/Tests/UnitTests/Core/Material/ProtoVolumeMaterialTests.cpp b/Tests/UnitTests/Core/Material/ProtoVolumeMaterialTests.cpp index f5cc2c90953..fac92072e41 100644 --- a/Tests/UnitTests/Core/Material/ProtoVolumeMaterialTests.cpp +++ b/Tests/UnitTests/Core/Material/ProtoVolumeMaterialTests.cpp @@ -18,9 +18,9 @@ namespace Acts::Test { /// Test the constructors BOOST_AUTO_TEST_CASE(ProtoVolumeMaterial_construction_test) { - BinUtility vmpBU(10, -10., 10., open, BinningValue::binX); - vmpBU += BinUtility(10, -10., 10., open, BinningValue::binY); - vmpBU += BinUtility(10, -10., 10., open, BinningValue::binZ); + BinUtility vmpBU(10, -10., 10., open, AxisDirection::AxisX); + vmpBU += BinUtility(10, -10., 10., open, AxisDirection::AxisY); + vmpBU += BinUtility(10, -10., 10., open, AxisDirection::AxisZ); // Constructor from arguments ProtoVolumeMaterial vmp(vmpBU); diff --git a/Tests/UnitTests/Core/Material/SurfaceMaterialMapperTests.cpp b/Tests/UnitTests/Core/Material/SurfaceMaterialMapperTests.cpp index 6d7b94fecde..d31e8bac9cf 100644 --- a/Tests/UnitTests/Core/Material/SurfaceMaterialMapperTests.cpp +++ b/Tests/UnitTests/Core/Material/SurfaceMaterialMapperTests.cpp @@ -40,7 +40,7 @@ namespace Acts { std::shared_ptr trackingGeometry() { using namespace Acts::UnitLiterals; - BinUtility zbinned(8, -40, 40, open, BinningValue::binZ); + BinUtility zbinned(8, -40, 40, open, AxisDirection::AxisZ); auto matProxy = std::make_shared(zbinned); Logging::Level surfaceLLevel = Logging::INFO; diff --git a/Tests/UnitTests/Core/Material/VolumeMaterialMapperTests.cpp b/Tests/UnitTests/Core/Material/VolumeMaterialMapperTests.cpp index ffe731cb6ca..ec3d0d733c9 100644 --- a/Tests/UnitTests/Core/Material/VolumeMaterialMapperTests.cpp +++ b/Tests/UnitTests/Core/Material/VolumeMaterialMapperTests.cpp @@ -85,17 +85,17 @@ namespace Acts::Test { BOOST_AUTO_TEST_CASE(SurfaceMaterialMapper_tests) { using namespace Acts::UnitLiterals; - BinUtility bu1(4, 0_m, 1_m, open, BinningValue::binX); - bu1 += BinUtility(2, -0.5_m, 0.5_m, open, BinningValue::binY); - bu1 += BinUtility(2, -0.5_m, 0.5_m, open, BinningValue::binZ); + BinUtility bu1(4, 0_m, 1_m, open, AxisDirection::AxisX); + bu1 += BinUtility(2, -0.5_m, 0.5_m, open, AxisDirection::AxisY); + bu1 += BinUtility(2, -0.5_m, 0.5_m, open, AxisDirection::AxisZ); - BinUtility bu2(4, 1_m, 2_m, open, BinningValue::binX); - bu2 += BinUtility(2, -0.5_m, 0.5_m, open, BinningValue::binY); - bu2 += BinUtility(2, -0.5_m, 0.5_m, open, BinningValue::binZ); + BinUtility bu2(4, 1_m, 2_m, open, AxisDirection::AxisX); + bu2 += BinUtility(2, -0.5_m, 0.5_m, open, AxisDirection::AxisY); + bu2 += BinUtility(2, -0.5_m, 0.5_m, open, AxisDirection::AxisZ); - BinUtility bu3(4, 2_m, 3_m, open, BinningValue::binX); - bu3 += BinUtility(2, -0.5_m, 0.5_m, open, BinningValue::binY); - bu3 += BinUtility(2, -0.5_m, 0.5_m, open, BinningValue::binZ); + BinUtility bu3(4, 2_m, 3_m, open, AxisDirection::AxisX); + bu3 += BinUtility(2, -0.5_m, 0.5_m, open, AxisDirection::AxisY); + bu3 += BinUtility(2, -0.5_m, 0.5_m, open, AxisDirection::AxisZ); // Build a vacuum volume CuboidVolumeBuilder::VolumeConfig vCfg1; diff --git a/Tests/UnitTests/Core/Navigation/DetectorNavigatorTests.cpp b/Tests/UnitTests/Core/Navigation/DetectorNavigatorTests.cpp index 2dc5bbacdbd..7596c4881ad 100644 --- a/Tests/UnitTests/Core/Navigation/DetectorNavigatorTests.cpp +++ b/Tests/UnitTests/Core/Navigation/DetectorNavigatorTests.cpp @@ -232,7 +232,7 @@ BOOST_AUTO_TEST_CASE(DetectorNavigatorTestsForwardBackward) { auto portalContainer = Acts::Experimental::detail::CuboidalDetectorHelper::connect( - geoContext, detectorVolumes, Acts::BinningValue::binX, {}, + geoContext, detectorVolumes, Acts::AxisDirection::AxisX, {}, Acts::Logging::VERBOSE); // Make sure that the geometry ids are diff --git a/Tests/UnitTests/Core/Navigation/DetectorVolumeFindersTests.cpp b/Tests/UnitTests/Core/Navigation/DetectorVolumeFindersTests.cpp index 1b6d423ed75..83ed81e5d56 100644 --- a/Tests/UnitTests/Core/Navigation/DetectorVolumeFindersTests.cpp +++ b/Tests/UnitTests/Core/Navigation/DetectorVolumeFindersTests.cpp @@ -19,7 +19,7 @@ #include "Acts/Navigation/InternalNavigation.hpp" #include "Acts/Navigation/NavigationState.hpp" #include "Acts/Utilities/Axis.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinningType.hpp" #include "Acts/Utilities/Grid.hpp" @@ -131,7 +131,7 @@ BOOST_AUTO_TEST_CASE(IndexedDetectorVolumeFinder) { g.atPosition(std::array{150.}) = 2u; Acts::Experimental::IndexedDetectorVolumesImpl idv( - std::move(g), {Acts::BinningValue::binR}); + std::move(g), {Acts::AxisDirection::AxisR}); // Cylinder 0 nState.position = Acts::Vector3(5., 0., 0.); diff --git a/Tests/UnitTests/Core/Navigation/MultiWireNavigationTests.cpp b/Tests/UnitTests/Core/Navigation/MultiWireNavigationTests.cpp index dbf40914e27..ccce81a5b62 100644 --- a/Tests/UnitTests/Core/Navigation/MultiWireNavigationTests.cpp +++ b/Tests/UnitTests/Core/Navigation/MultiWireNavigationTests.cpp @@ -76,9 +76,9 @@ BOOST_AUTO_TEST_CASE(Navigation_in_Indexed_Surfaces) { mlCfg.mlSurfaces = strawSurfaces; mlCfg.mlBinning = { - ProtoBinning(Acts::BinningValue::binX, Acts::AxisBoundaryType::Bound, + ProtoBinning(Acts::AxisDirection::AxisX, Acts::AxisBoundaryType::Bound, -vBounds[0], vBounds[0], nSurfacesX, 1u), - ProtoBinning(Acts::BinningValue::binY, Acts::AxisBoundaryType::Bound, + ProtoBinning(Acts::AxisDirection::AxisY, Acts::AxisBoundaryType::Bound, -vBounds[1], vBounds[1], nSurfacesY, 0u)}; mlCfg.mlBounds = vBounds; diff --git a/Tests/UnitTests/Core/Navigation/NavigationStateUpdatersTests.cpp b/Tests/UnitTests/Core/Navigation/NavigationStateUpdatersTests.cpp index 93996bcae07..8f0eaefca4a 100644 --- a/Tests/UnitTests/Core/Navigation/NavigationStateUpdatersTests.cpp +++ b/Tests/UnitTests/Core/Navigation/NavigationStateUpdatersTests.cpp @@ -13,7 +13,7 @@ #include "Acts/Navigation/NavigationState.hpp" #include "Acts/Navigation/NavigationStateFillers.hpp" #include "Acts/Navigation/NavigationStateUpdaters.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinningType.hpp" #include "Acts/Utilities/IAxis.hpp" @@ -268,7 +268,7 @@ BOOST_AUTO_TEST_CASE(AllPortalsGrid1DSurfaces) { Acts::Experimental::IndexedSurfacesExtractor, Acts::Experimental::SurfacesFiller>; auto grid1DSurfaces = - Grid1DSurfacesProvider(std::move(grid), {Acts::BinningValue::binR}); + Grid1DSurfacesProvider(std::move(grid), {Acts::AxisDirection::AxisR}); auto allPortalsGrid1DSurfaces = Acts::Experimental::ChainedNavigation< Acts::Experimental::IInternalNavigation, AllPortalsProvider, @@ -295,7 +295,8 @@ BOOST_AUTO_TEST_CASE(AllPortalsGrid2DSurfaces) { Acts::Experimental::IndexedSurfacesExtractor, Acts::Experimental::SurfacesFiller>; auto grid2DSurfaces = Grid2DSurfacesProvider( - std::move(grid), {Acts::BinningValue::binR, Acts::BinningValue::binZ}); + std::move(grid), + {Acts::AxisDirection::AxisR, Acts::AxisDirection::AxisZ}); auto allPortalsGrid2DSurfaces = Acts::Experimental::ChainedNavigation< Acts::Experimental::IInternalNavigation, AllPortalsProvider, diff --git a/Tests/UnitTests/Core/Navigation/PortalNavigationTests.cpp b/Tests/UnitTests/Core/Navigation/PortalNavigationTests.cpp index 30836c9396e..822a5d949dc 100644 --- a/Tests/UnitTests/Core/Navigation/PortalNavigationTests.cpp +++ b/Tests/UnitTests/Core/Navigation/PortalNavigationTests.cpp @@ -76,7 +76,7 @@ BOOST_AUTO_TEST_CASE(VolumeArrayUpdate) { std::vector volumes = { volumeA.get(), volumeB.get(), volumeC.get(), volumeD.get()}; Acts::Experimental::BoundVolumesGrid1Navigation bvg( - zArray, Acts::BinningValue::binZ, volumes); + zArray, Acts::AxisDirection::AxisZ, volumes); // Reset the navigation state nState.currentVolume = nullptr; @@ -94,7 +94,7 @@ BOOST_AUTO_TEST_CASE(VolumeArrayUpdate) { shift300.pretranslate(Acts::Vector3(0, 0, 300)); Acts::Experimental::BoundVolumesGrid1Navigation bvgs( - zArray, Acts::BinningValue::binZ, volumes, shift300.inverse()); + zArray, Acts::AxisDirection::AxisZ, volumes, shift300.inverse()); // 150 (-300) -> transforms to -150, hence it yields A nState.position = Acts::Vector3(0., 0., 150.); diff --git a/Tests/UnitTests/Core/Seeding/PathSeederTest.cpp b/Tests/UnitTests/Core/Seeding/PathSeederTest.cpp index 1a347344592..0162fb78525 100644 --- a/Tests/UnitTests/Core/Seeding/PathSeederTest.cpp +++ b/Tests/UnitTests/Core/Seeding/PathSeederTest.cpp @@ -265,7 +265,7 @@ std::shared_ptr constructTelescopeDetector() { // Connect the volumes auto portalContainer = Experimental::detail::CuboidalDetectorHelper::connect( - gctx, volumes, BinningValue::binX, {}, Logging::INFO); + gctx, volumes, AxisDirection::AxisX, {}, Logging::INFO); // Make sure that the geometry ids are // independent of the potential Id generation diff --git a/Tests/UnitTests/Core/Surfaces/ConeSurfaceTests.cpp b/Tests/UnitTests/Core/Surfaces/ConeSurfaceTests.cpp index 4e037a105ba..3c9e114c05e 100644 --- a/Tests/UnitTests/Core/Surfaces/ConeSurfaceTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/ConeSurfaceTests.cpp @@ -103,11 +103,11 @@ BOOST_AUTO_TEST_CASE(ConeSurfaceProperties) { /// Test type (redundant) BOOST_CHECK_EQUAL(coneSurfaceObject->type(), Surface::Cone); - /// Test binningPosition - Vector3 binningPosition{0., 1., 2.}; + /// Test referencePosition + Vector3 referencePosition{0., 1., 2.}; CHECK_CLOSE_ABS( - coneSurfaceObject->binningPosition(tgContext, BinningValue::binPhi), - binningPosition, 1e-6); + coneSurfaceObject->referencePosition(tgContext, AxisDirection::AxisPhi), + referencePosition, 1e-6); /// Test referenceFrame Vector3 globalPosition{2., 2., 2.}; @@ -225,21 +225,21 @@ BOOST_AUTO_TEST_CASE(ConeSurfaceExtent) { auto pConeExtent = pCone->polyhedronRepresentation(tgContext, 1).extent(); double rMax = zMax * std::tan(alpha); - CHECK_CLOSE_ABS(zMin, pConeExtent.min(BinningValue::binZ), + CHECK_CLOSE_ABS(zMin, pConeExtent.min(AxisDirection::AxisZ), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(zMax, pConeExtent.max(BinningValue::binZ), + CHECK_CLOSE_ABS(zMax, pConeExtent.max(AxisDirection::AxisZ), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(0., pConeExtent.min(BinningValue::binR), + CHECK_CLOSE_ABS(0., pConeExtent.min(AxisDirection::AxisR), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(rMax, pConeExtent.max(BinningValue::binR), + CHECK_CLOSE_ABS(rMax, pConeExtent.max(AxisDirection::AxisR), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(-rMax, pConeExtent.min(BinningValue::binX), + CHECK_CLOSE_ABS(-rMax, pConeExtent.min(AxisDirection::AxisX), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(rMax, pConeExtent.max(BinningValue::binX), + CHECK_CLOSE_ABS(rMax, pConeExtent.max(AxisDirection::AxisX), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(-rMax, pConeExtent.min(BinningValue::binY), + CHECK_CLOSE_ABS(-rMax, pConeExtent.min(AxisDirection::AxisY), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(rMax, pConeExtent.max(BinningValue::binY), + CHECK_CLOSE_ABS(rMax, pConeExtent.max(AxisDirection::AxisY), s_onSurfaceTolerance); /// Now a sector @@ -248,13 +248,13 @@ BOOST_AUTO_TEST_CASE(ConeSurfaceExtent) { pCone = Surface::makeShared(pTransform, pConeBounds); pConeExtent = pCone->polyhedronRepresentation(tgContext, 1).extent(); - CHECK_CLOSE_ABS(zMin, pConeExtent.min(BinningValue::binZ), + CHECK_CLOSE_ABS(zMin, pConeExtent.min(AxisDirection::AxisZ), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(zMax, pConeExtent.max(BinningValue::binZ), + CHECK_CLOSE_ABS(zMax, pConeExtent.max(AxisDirection::AxisZ), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(0., pConeExtent.min(BinningValue::binR), + CHECK_CLOSE_ABS(0., pConeExtent.min(AxisDirection::AxisR), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(rMax, pConeExtent.max(BinningValue::binR), + CHECK_CLOSE_ABS(rMax, pConeExtent.max(AxisDirection::AxisR), s_onSurfaceTolerance); } diff --git a/Tests/UnitTests/Core/Surfaces/CylinderSurfaceTests.cpp b/Tests/UnitTests/Core/Surfaces/CylinderSurfaceTests.cpp index e37b339d00c..073f743ad29 100644 --- a/Tests/UnitTests/Core/Surfaces/CylinderSurfaceTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/CylinderSurfaceTests.cpp @@ -107,11 +107,11 @@ BOOST_AUTO_TEST_CASE(CylinderSurfaceProperties) { /// Test type (redundant) BOOST_CHECK_EQUAL(cylinderSurfaceObject->type(), Surface::Cylinder); - /// Test binningPosition - Vector3 binningPosition{0., 1., 2.}; - CHECK_CLOSE_ABS( - cylinderSurfaceObject->binningPosition(testContext, BinningValue::binPhi), - binningPosition, 1e-9); + /// Test referencePosition + Vector3 referencePosition{0., 1., 2.}; + CHECK_CLOSE_ABS(cylinderSurfaceObject->referencePosition( + testContext, AxisDirection::AxisPhi), + referencePosition, 1e-9); /// Test referenceFrame const double invSqrt2 = 1. / std::numbers::sqrt2; @@ -254,6 +254,8 @@ BOOST_AUTO_TEST_CASE(CylinderSurfaceEqualityOperators) { /// Unit test for testing CylinderSurface properties BOOST_AUTO_TEST_CASE(CylinderSurfaceExtent) { + using enum AxisDirection; + // Some radius and half length const double radius = 1.; const double halfZ = 10.; @@ -266,22 +268,14 @@ BOOST_AUTO_TEST_CASE(CylinderSurfaceExtent) { auto cylinderExtent = cylinderSurface->polyhedronRepresentation(testContext, 1).extent(); - CHECK_CLOSE_ABS(-8, cylinderExtent.min(BinningValue::binZ), - s_onSurfaceTolerance); - CHECK_CLOSE_ABS(12, cylinderExtent.max(BinningValue::binZ), - s_onSurfaceTolerance); - CHECK_CLOSE_ABS(radius, cylinderExtent.min(BinningValue::binR), - s_onSurfaceTolerance); - CHECK_CLOSE_ABS(radius, cylinderExtent.max(BinningValue::binR), - s_onSurfaceTolerance); - CHECK_CLOSE_ABS(-radius, cylinderExtent.min(BinningValue::binX), - s_onSurfaceTolerance); - CHECK_CLOSE_ABS(radius, cylinderExtent.max(BinningValue::binX), - s_onSurfaceTolerance); - CHECK_CLOSE_ABS(-radius, cylinderExtent.min(BinningValue::binY), - s_onSurfaceTolerance); - CHECK_CLOSE_ABS(radius, cylinderExtent.max(BinningValue::binY), - s_onSurfaceTolerance); + CHECK_CLOSE_ABS(-8, cylinderExtent.min(AxisZ), s_onSurfaceTolerance); + CHECK_CLOSE_ABS(12, cylinderExtent.max(AxisZ), s_onSurfaceTolerance); + CHECK_CLOSE_ABS(radius, cylinderExtent.min(AxisR), s_onSurfaceTolerance); + CHECK_CLOSE_ABS(radius, cylinderExtent.max(AxisR), s_onSurfaceTolerance); + CHECK_CLOSE_ABS(-radius, cylinderExtent.min(AxisX), s_onSurfaceTolerance); + CHECK_CLOSE_ABS(radius, cylinderExtent.max(AxisX), s_onSurfaceTolerance); + CHECK_CLOSE_ABS(-radius, cylinderExtent.min(AxisY), s_onSurfaceTolerance); + CHECK_CLOSE_ABS(radius, cylinderExtent.max(AxisY), s_onSurfaceTolerance); } /// Unit test for testing CylinderSurface alignment derivatives @@ -331,23 +325,23 @@ BOOST_AUTO_TEST_CASE(CylinderSurfaceBinningPosition) { Vector3 exp = Vector3{r * std::cos(averagePhi), r * std::sin(averagePhi), 0}; exp = trf * exp; - Vector3 bp = cylinder->binningPosition(testContext, BinningValue::binR); + Vector3 bp = cylinder->referencePosition(testContext, AxisDirection::AxisR); CHECK_CLOSE_ABS(bp, exp, 1e-10); CHECK_CLOSE_ABS( - cylinder->binningPositionValue(testContext, BinningValue::binR), + cylinder->referencePositionValue(testContext, AxisDirection::AxisR), VectorHelpers::perp(exp), 1e-10); - bp = cylinder->binningPosition(testContext, BinningValue::binRPhi); + bp = cylinder->referencePosition(testContext, AxisDirection::AxisRPhi); CHECK_CLOSE_ABS(bp, exp, 1e-10); CHECK_CLOSE_ABS( - cylinder->binningPositionValue(testContext, BinningValue::binRPhi), + cylinder->referencePositionValue(testContext, AxisDirection::AxisRPhi), VectorHelpers::phi(exp) * VectorHelpers::perp(exp), 1e-10); - for (auto b : - {BinningValue::binX, BinningValue::binY, BinningValue::binZ, - BinningValue::binEta, BinningValue::binH, BinningValue::binMag}) { + for (auto b : {AxisDirection::AxisX, AxisDirection::AxisY, + AxisDirection::AxisZ, AxisDirection::AxisEta, + AxisDirection::AxisTheta, AxisDirection::AxisMag}) { BOOST_TEST_CONTEXT("binValue: " << b) { - BOOST_CHECK_EQUAL(cylinder->binningPosition(testContext, b), + BOOST_CHECK_EQUAL(cylinder->referencePosition(testContext, b), cylinder->center(testContext)); } } @@ -363,7 +357,7 @@ BOOST_AUTO_TEST_CASE(InvalidDetectorElement) { auto cyl2 = Surface::makeShared(bounds, detElem); BOOST_CHECK_THROW( - cyl1->mergedWith(*cyl2, Acts::BinningValue::binR, false, *logger), + cyl1->mergedWith(*cyl2, Acts::AxisDirection::AxisR, false, *logger), SurfaceMergingException); } @@ -385,28 +379,28 @@ BOOST_DATA_TEST_CASE(IncompatibleZDirection, base * Translation3{Vector3::UnitZ() * 200_mm}, 30_mm, 100_mm); BOOST_CHECK_THROW( - cyl->mergedWith(*cyl2, Acts::BinningValue::binPhi, false, *logger), + cyl->mergedWith(*cyl2, Acts::AxisDirection::AxisPhi, false, *logger), SurfaceMergingException); auto cylShiftedXy = Surface::makeShared( base * Translation3{Vector3{1_mm, 2_mm, 200_mm}}, 30_mm, 100_mm); - BOOST_CHECK_THROW( - cyl->mergedWith(*cylShiftedXy, Acts::BinningValue::binZ, false, *logger), - SurfaceMergingException); + BOOST_CHECK_THROW(cyl->mergedWith(*cylShiftedXy, Acts::AxisDirection::AxisZ, + false, *logger), + SurfaceMergingException); auto cylRotatedX = Surface::makeShared( base * AngleAxis3{10_degree, Vector3::UnitX()} * Translation3{Vector3::UnitZ() * 200_mm}, 30_mm, 100_mm); BOOST_CHECK_THROW( - cyl->mergedWith(*cylRotatedX, Acts::BinningValue::binZ, false, *logger), + cyl->mergedWith(*cylRotatedX, Acts::AxisDirection::AxisZ, false, *logger), SurfaceMergingException); // Cylinder with different radius auto cyl3 = Surface::makeShared( base * Translation3{Vector3::UnitZ() * 200_mm}, 35_mm, 100_mm); BOOST_CHECK_THROW( - cyl->mergedWith(*cyl3, Acts::BinningValue::binZ, false, *logger), + cyl->mergedWith(*cyl3, Acts::AxisDirection::AxisZ, false, *logger), SurfaceMergingException); // Cylinder with bevel @@ -414,28 +408,28 @@ BOOST_DATA_TEST_CASE(IncompatibleZDirection, base * Translation3{Vector3::UnitZ() * 200_mm}, 30_mm, 100_mm, std::numbers::pi, 0, std::numbers::pi / 8.); BOOST_CHECK_THROW( - cyl->mergedWith(*cyl4, Acts::BinningValue::binZ, false, *logger), + cyl->mergedWith(*cyl4, Acts::AxisDirection::AxisZ, false, *logger), SurfaceMergingException); auto cyl5 = Surface::makeShared( base * Translation3{Vector3::UnitZ() * 200_mm}, 30_mm, 100_mm, std::numbers::pi, 0, 0, std::numbers::pi / 8.); BOOST_CHECK_THROW( - cyl->mergedWith(*cyl5, Acts::BinningValue::binZ, false, *logger), + cyl->mergedWith(*cyl5, Acts::AxisDirection::AxisZ, false, *logger), SurfaceMergingException); // Cylinder with overlap in z auto cyl6 = Surface::makeShared( base * Translation3{Vector3::UnitZ() * 150_mm}, 30_mm, 100_mm); BOOST_CHECK_THROW( - cyl->mergedWith(*cyl6, Acts::BinningValue::binZ, false, *logger), + cyl->mergedWith(*cyl6, Acts::AxisDirection::AxisZ, false, *logger), SurfaceMergingException); // Cylinder with gap in z auto cyl7 = Surface::makeShared( base * Translation3{Vector3::UnitZ() * 250_mm}, 30_mm, 100_mm); BOOST_CHECK_THROW( - cyl->mergedWith(*cyl7, Acts::BinningValue::binZ, false, *logger), + cyl->mergedWith(*cyl7, Acts::AxisDirection::AxisZ, false, *logger), SurfaceMergingException); // Cylinder with phi sector and relative z rotation @@ -444,7 +438,7 @@ BOOST_DATA_TEST_CASE(IncompatibleZDirection, Translation3{Vector3::UnitZ() * 200_mm}, 30_mm, 100_mm, 10_degree, 40_degree); BOOST_CHECK_THROW( - cyl->mergedWith(*cyl8, Acts::BinningValue::binZ, false, *logger), + cyl->mergedWith(*cyl8, Acts::AxisDirection::AxisZ, false, *logger), SurfaceMergingException); auto cylPhi1 = Surface::makeShared(Transform3::Identity(), @@ -453,7 +447,7 @@ BOOST_DATA_TEST_CASE(IncompatibleZDirection, Transform3{Translation3{Vector3::UnitZ() * 150_mm}}, 30_mm, 50_mm, 55_degree); BOOST_CHECK_THROW( - cylPhi1->mergedWith(*cylPhi2, Acts::BinningValue::binZ, false, *logger), + cylPhi1->mergedWith(*cylPhi2, Acts::AxisDirection::AxisZ, false, *logger), SurfaceMergingException); } @@ -476,12 +470,12 @@ BOOST_DATA_TEST_CASE(ZDirection, 30_mm, 100_mm); auto [cyl3, reversed] = - cyl->mergedWith(*cyl2, Acts::BinningValue::binZ, false, *logger); + cyl->mergedWith(*cyl2, Acts::AxisDirection::AxisZ, false, *logger); BOOST_REQUIRE_NE(cyl3, nullptr); BOOST_CHECK(!reversed); auto [cyl3Reversed, reversed2] = - cyl2->mergedWith(*cyl, Acts::BinningValue::binZ, false, *logger); + cyl2->mergedWith(*cyl, Acts::AxisDirection::AxisZ, false, *logger); BOOST_REQUIRE_NE(cyl3Reversed, nullptr); BOOST_CHECK(cyl3->bounds() == cyl3Reversed->bounds()); BOOST_CHECK(reversed2); @@ -509,7 +503,7 @@ BOOST_DATA_TEST_CASE(ZDirection, 45_degree); auto [cylPhi12, reversedPhy12] = - cylPhi1->mergedWith(*cylPhi2, Acts::BinningValue::binZ, false, *logger); + cylPhi1->mergedWith(*cylPhi2, Acts::AxisDirection::AxisZ, false, *logger); BOOST_REQUIRE_NE(cylPhi12, nullptr); auto boundsPhi12 = cylPhi12->bounds(); @@ -542,31 +536,31 @@ BOOST_DATA_TEST_CASE(IncompatibleRPhiDirection, // Cylinder with overlap in phi auto cylPhi2 = Surface::makeShared(base, 30_mm, 100_mm, 45_degree, a(85_degree)); - BOOST_CHECK_THROW( - cylPhi->mergedWith(*cylPhi2, Acts::BinningValue::binRPhi, false, *logger), - SurfaceMergingException); + BOOST_CHECK_THROW(cylPhi->mergedWith(*cylPhi2, Acts::AxisDirection::AxisRPhi, + false, *logger), + SurfaceMergingException); // Cylinder with gap in phi auto cylPhi3 = Surface::makeShared(base, 30_mm, 100_mm, 45_degree, a(105_degree)); - BOOST_CHECK_THROW( - cylPhi->mergedWith(*cylPhi3, Acts::BinningValue::binRPhi, false, *logger), - SurfaceMergingException); + BOOST_CHECK_THROW(cylPhi->mergedWith(*cylPhi3, Acts::AxisDirection::AxisRPhi, + false, *logger), + SurfaceMergingException); // Cylinder with a z shift auto cylPhi4 = Surface::makeShared( base * Translation3{Vector3::UnitZ() * 20_mm}, 30_mm, 100_mm, 45_degree, a(95_degree)); - BOOST_CHECK_THROW( - cylPhi->mergedWith(*cylPhi4, Acts::BinningValue::binRPhi, false, *logger), - SurfaceMergingException); + BOOST_CHECK_THROW(cylPhi->mergedWith(*cylPhi4, Acts::AxisDirection::AxisRPhi, + false, *logger), + SurfaceMergingException); // Test phi sector with different z halflengths auto cylPhi5 = Surface::makeShared(base, 30_mm, 110_mm, 45_degree, a(95_degree)); - BOOST_CHECK_THROW( - cylPhi->mergedWith(*cylPhi5, Acts::BinningValue::binRPhi, false, *logger), - SurfaceMergingException); + BOOST_CHECK_THROW(cylPhi->mergedWith(*cylPhi5, Acts::AxisDirection::AxisRPhi, + false, *logger), + SurfaceMergingException); } BOOST_DATA_TEST_CASE(RPhiDirection, @@ -592,13 +586,13 @@ BOOST_DATA_TEST_CASE(RPhiDirection, 45_degree, a(95_degree)); auto [cyl3, reversed] = - cyl->mergedWith(*cyl2, Acts::BinningValue::binRPhi, false, *logger); + cyl->mergedWith(*cyl2, Acts::AxisDirection::AxisRPhi, false, *logger); BOOST_REQUIRE_NE(cyl3, nullptr); BOOST_CHECK_EQUAL(base.matrix(), cyl3->transform(testContext).matrix()); BOOST_CHECK(reversed); auto [cyl3Reversed, reversed2] = - cyl2->mergedWith(*cyl, Acts::BinningValue::binRPhi, false, *logger); + cyl2->mergedWith(*cyl, Acts::AxisDirection::AxisRPhi, false, *logger); BOOST_REQUIRE_NE(cyl3Reversed, nullptr); BOOST_CHECK(*cyl3 == *cyl3Reversed); BOOST_CHECK(!reversed2); @@ -617,13 +611,13 @@ BOOST_DATA_TEST_CASE(RPhiDirection, auto cyl5 = Surface::makeShared(base, 30_mm, 100_mm, 10_degree, a(-160_degree)); auto [cyl45, reversed45] = - cyl4->mergedWith(*cyl5, Acts::BinningValue::binRPhi, false, *logger); + cyl4->mergedWith(*cyl5, Acts::AxisDirection::AxisRPhi, false, *logger); BOOST_REQUIRE_NE(cyl45, nullptr); BOOST_CHECK_EQUAL(base.matrix(), cyl45->transform(testContext).matrix()); BOOST_CHECK(reversed45); auto [cyl54, reversed54] = - cyl5->mergedWith(*cyl4, Acts::BinningValue::binRPhi, false, *logger); + cyl5->mergedWith(*cyl4, Acts::AxisDirection::AxisRPhi, false, *logger); BOOST_REQUIRE_NE(cyl54, nullptr); BOOST_CHECK(!reversed54); @@ -642,12 +636,12 @@ BOOST_DATA_TEST_CASE(RPhiDirection, 90_degree, a(-90_degree)); auto [cyl67, reversed67] = - cyl6->mergedWith(*cyl7, Acts::BinningValue::binRPhi, false, *logger); + cyl6->mergedWith(*cyl7, Acts::AxisDirection::AxisRPhi, false, *logger); BOOST_REQUIRE_NE(cyl67, nullptr); BOOST_CHECK_EQUAL(base.matrix(), cyl67->transform(testContext).matrix()); auto [cyl76, reversed76] = - cyl7->mergedWith(*cyl6, Acts::BinningValue::binRPhi, false, *logger); + cyl7->mergedWith(*cyl6, Acts::AxisDirection::AxisRPhi, false, *logger); BOOST_REQUIRE_NE(cyl76, nullptr); BOOST_CHECK_EQUAL(base.matrix(), cyl76->transform(testContext).matrix()); @@ -674,7 +668,7 @@ BOOST_DATA_TEST_CASE(RPhiDirection, 45_degree, 0_degree); auto [cyl3, reversed] = - cyl1->mergedWith(*cyl2, Acts::BinningValue::binRPhi, true, *logger); + cyl1->mergedWith(*cyl2, Acts::AxisDirection::AxisRPhi, true, *logger); BOOST_REQUIRE_NE(cyl3, nullptr); Transform3 trfExpected12 = @@ -694,7 +688,7 @@ BOOST_DATA_TEST_CASE(RPhiDirection, auto cyl5 = Surface::makeShared(trf5, 30_mm, 100_mm, 10_degree, 0_degree); auto [cyl45, reversed45] = - cyl4->mergedWith(*cyl5, Acts::BinningValue::binRPhi, true, *logger); + cyl4->mergedWith(*cyl5, Acts::AxisDirection::AxisRPhi, true, *logger); BOOST_REQUIRE_NE(cyl45, nullptr); Transform3 trfExpected45 = base * AngleAxis3(a(180_degree), Vector3::UnitZ()); @@ -703,7 +697,7 @@ BOOST_DATA_TEST_CASE(RPhiDirection, BOOST_CHECK(reversed45); auto [cyl54, reversed54] = - cyl5->mergedWith(*cyl4, Acts::BinningValue::binRPhi, true, *logger); + cyl5->mergedWith(*cyl4, Acts::AxisDirection::AxisRPhi, true, *logger); BOOST_REQUIRE_NE(cyl54, nullptr); BOOST_CHECK(!reversed54); @@ -721,14 +715,14 @@ BOOST_DATA_TEST_CASE(RPhiDirection, 90_degree, 0_degree); auto [cyl67, reversed67] = - cyl6->mergedWith(*cyl7, Acts::BinningValue::binRPhi, true, *logger); + cyl6->mergedWith(*cyl7, Acts::AxisDirection::AxisRPhi, true, *logger); BOOST_REQUIRE_NE(cyl67, nullptr); Transform3 expected67 = trf6 * AngleAxis3(90_degree, Vector3::UnitZ()); CHECK_CLOSE_OR_SMALL(cyl67->transform(testContext).matrix(), expected67.matrix(), 1e-6, 1e-10); auto [cyl76, reversed76] = - cyl7->mergedWith(*cyl6, Acts::BinningValue::binRPhi, true, *logger); + cyl7->mergedWith(*cyl6, Acts::AxisDirection::AxisRPhi, true, *logger); BOOST_REQUIRE_NE(cyl76, nullptr); Transform3 expected76 = trf7 * AngleAxis3(90_degree, Vector3::UnitZ()); CHECK_CLOSE_OR_SMALL(cyl76->transform(testContext).matrix(), diff --git a/Tests/UnitTests/Core/Surfaces/DiscSurfaceTests.cpp b/Tests/UnitTests/Core/Surfaces/DiscSurfaceTests.cpp index 15140f73c7a..4a304f23510 100644 --- a/Tests/UnitTests/Core/Surfaces/DiscSurfaceTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/DiscSurfaceTests.cpp @@ -106,9 +106,9 @@ BOOST_AUTO_TEST_CASE(DiscSurfaceProperties) { Vector2 lpos(2., 0.05); BOOST_CHECK_EQUAL(discSurfaceObject->normal(tgContext, lpos), zAxis); - /// Test binningPosition + /// Test referencePosition BOOST_CHECK_EQUAL( - discSurfaceObject->binningPosition(tgContext, BinningValue::binRPhi), + discSurfaceObject->referencePosition(tgContext, AxisDirection::AxisRPhi), origin3D); /// Test bounds @@ -248,46 +248,46 @@ BOOST_AUTO_TEST_CASE(DiscSurfaceExtent) { Surface::makeShared(Transform3::Identity(), 0., rMax); auto pDiscExtent = pDisc->polyhedronRepresentation(tgContext, 1).extent(); - CHECK_CLOSE_ABS(0., pDiscExtent.min(BinningValue::binZ), + CHECK_CLOSE_ABS(0., pDiscExtent.min(AxisDirection::AxisZ), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(0., pDiscExtent.max(BinningValue::binZ), + CHECK_CLOSE_ABS(0., pDiscExtent.max(AxisDirection::AxisZ), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(0., pDiscExtent.min(BinningValue::binR), + CHECK_CLOSE_ABS(0., pDiscExtent.min(AxisDirection::AxisR), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(rMax, pDiscExtent.max(BinningValue::binR), + CHECK_CLOSE_ABS(rMax, pDiscExtent.max(AxisDirection::AxisR), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(-rMax, pDiscExtent.min(BinningValue::binX), + CHECK_CLOSE_ABS(-rMax, pDiscExtent.min(AxisDirection::AxisX), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(rMax, pDiscExtent.max(BinningValue::binX), + CHECK_CLOSE_ABS(rMax, pDiscExtent.max(AxisDirection::AxisX), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(-rMax, pDiscExtent.min(BinningValue::binY), + CHECK_CLOSE_ABS(-rMax, pDiscExtent.min(AxisDirection::AxisY), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(rMax, pDiscExtent.max(BinningValue::binY), + CHECK_CLOSE_ABS(rMax, pDiscExtent.max(AxisDirection::AxisY), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(-std::numbers::pi, pDiscExtent.min(BinningValue::binPhi), + CHECK_CLOSE_ABS(-std::numbers::pi, pDiscExtent.min(AxisDirection::AxisPhi), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(std::numbers::pi, pDiscExtent.max(BinningValue::binPhi), + CHECK_CLOSE_ABS(std::numbers::pi, pDiscExtent.max(AxisDirection::AxisPhi), s_onSurfaceTolerance); auto pRing = Surface::makeShared(Transform3::Identity(), rMin, rMax); auto pRingExtent = pRing->polyhedronRepresentation(tgContext, 1).extent(); - CHECK_CLOSE_ABS(0., pRingExtent.min(BinningValue::binZ), + CHECK_CLOSE_ABS(0., pRingExtent.min(AxisDirection::AxisZ), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(0., pRingExtent.max(BinningValue::binZ), + CHECK_CLOSE_ABS(0., pRingExtent.max(AxisDirection::AxisZ), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(rMin, pRingExtent.min(BinningValue::binR), + CHECK_CLOSE_ABS(rMin, pRingExtent.min(AxisDirection::AxisR), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(rMax, pRingExtent.max(BinningValue::binR), + CHECK_CLOSE_ABS(rMax, pRingExtent.max(AxisDirection::AxisR), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(-rMax, pRingExtent.min(BinningValue::binX), + CHECK_CLOSE_ABS(-rMax, pRingExtent.min(AxisDirection::AxisX), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(rMax, pRingExtent.max(BinningValue::binX), + CHECK_CLOSE_ABS(rMax, pRingExtent.max(AxisDirection::AxisX), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(-rMax, pRingExtent.min(BinningValue::binY), + CHECK_CLOSE_ABS(-rMax, pRingExtent.min(AxisDirection::AxisY), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(rMax, pRingExtent.max(BinningValue::binY), + CHECK_CLOSE_ABS(rMax, pRingExtent.max(AxisDirection::AxisY), s_onSurfaceTolerance); } @@ -349,27 +349,29 @@ BOOST_AUTO_TEST_CASE(DiscSurfaceBinningPosition) { std::make_shared(minR, maxR, std::numbers::pi / 8, 0.1); auto disc = Acts::Surface::makeShared(trf, bounds); - Vector3 bp = disc->binningPosition(tgContext, BinningValue::binR); + Vector3 bp = disc->referencePosition(tgContext, AxisDirection::AxisR); double r = (bounds->rMax() + bounds->rMin()) / 2.0; double phi = bounds->get(RadialBounds::eAveragePhi); Vector3 exp = Vector3{r * std::cos(phi), r * std::sin(phi), 0}; exp = trf * exp; BOOST_CHECK_EQUAL(bp, exp); - BOOST_CHECK_EQUAL(disc->binningPositionValue(tgContext, BinningValue::binR), - VectorHelpers::perp(exp)); + BOOST_CHECK_EQUAL( + disc->referencePositionValue(tgContext, AxisDirection::AxisR), + VectorHelpers::perp(exp)); - bp = disc->binningPosition(tgContext, BinningValue::binPhi); + bp = disc->referencePosition(tgContext, AxisDirection::AxisPhi); BOOST_CHECK_EQUAL(bp, exp); BOOST_CHECK_EQUAL( - disc->binningPositionValue(tgContext, BinningValue::binPhi), + disc->referencePositionValue(tgContext, AxisDirection::AxisPhi), VectorHelpers::phi(exp)); - for (auto b : {BinningValue::binX, BinningValue::binY, BinningValue::binZ, - BinningValue::binEta, BinningValue::binRPhi, - BinningValue::binH, BinningValue::binMag}) { + for (auto b : + {AxisDirection::AxisX, AxisDirection::AxisY, AxisDirection::AxisZ, + AxisDirection::AxisEta, AxisDirection::AxisRPhi, + AxisDirection::AxisTheta, AxisDirection::AxisMag}) { BOOST_TEST_CONTEXT("binValue: " << b) { - BOOST_CHECK_EQUAL(disc->binningPosition(tgContext, b), + BOOST_CHECK_EQUAL(disc->referencePosition(tgContext, b), disc->center(tgContext)); } } @@ -385,7 +387,7 @@ BOOST_AUTO_TEST_CASE(DiscSurfaceBinningPosition) { auto disc = Acts::Surface::makeShared(trf, bounds); - Vector3 bp = disc->binningPosition(tgContext, BinningValue::binR); + Vector3 bp = disc->referencePosition(tgContext, AxisDirection::AxisR); double r = (bounds->rMax() + bounds->rMin()) / 2.0; double phi = bounds->get(AnnulusBounds::eAveragePhi); Vector3 exp = Vector3{r * std::cos(phi), r * std::sin(phi), 0}; @@ -393,14 +395,15 @@ BOOST_AUTO_TEST_CASE(DiscSurfaceBinningPosition) { BOOST_CHECK_EQUAL(bp, exp); - bp = disc->binningPosition(tgContext, BinningValue::binPhi); + bp = disc->referencePosition(tgContext, AxisDirection::AxisPhi); BOOST_CHECK_EQUAL(bp, exp); - for (auto b : {BinningValue::binX, BinningValue::binY, BinningValue::binZ, - BinningValue::binEta, BinningValue::binRPhi, - BinningValue::binH, BinningValue::binMag}) { + for (auto b : + {AxisDirection::AxisX, AxisDirection::AxisY, AxisDirection::AxisZ, + AxisDirection::AxisEta, AxisDirection::AxisRPhi, + AxisDirection::AxisTheta, AxisDirection::AxisMag}) { BOOST_TEST_CONTEXT("binValue: " << b) { - BOOST_CHECK_EQUAL(disc->binningPosition(tgContext, b), + BOOST_CHECK_EQUAL(disc->referencePosition(tgContext, b), disc->center(tgContext)); } } @@ -430,12 +433,12 @@ BOOST_AUTO_TEST_CASE(IncompatibleBounds) { Surface::makeShared(base, 20_mm, 40_mm, 30_mm, 100_mm); BOOST_CHECK_THROW( - discRadial->mergedWith(*discTrap, BinningValue::binR, false, *logger), + discRadial->mergedWith(*discTrap, AxisDirection::AxisR, false, *logger), SurfaceMergingException); BOOST_CHECK_THROW( - discTrap2->mergedWith(*discTrap, BinningValue::binR, false, *logger), + discTrap2->mergedWith(*discTrap, AxisDirection::AxisR, false, *logger), SurfaceMergingException); } @@ -449,7 +452,7 @@ BOOST_AUTO_TEST_CASE(InvalidDetectorElement) { auto disc2 = Surface::makeShared(bounds2, detElem); BOOST_CHECK_THROW( - disc1->mergedWith(*disc2, BinningValue::binR, false, *logger), + disc1->mergedWith(*disc2, AxisDirection::AxisR, false, *logger), SurfaceMergingException); } @@ -470,50 +473,50 @@ BOOST_DATA_TEST_CASE(IncompatibleRDirection, // Disc with overlap in r auto discOverlap = makeDisc(base, 90_mm, 150_mm); - BOOST_CHECK_THROW( - disc->mergedWith(*discOverlap, Acts::BinningValue::binR, false, *logger), - SurfaceMergingException); + BOOST_CHECK_THROW(disc->mergedWith(*discOverlap, Acts::AxisDirection::AxisR, + false, *logger), + SurfaceMergingException); // Disc with gap in r auto discGap = makeDisc(base, 110_mm, 150_mm); BOOST_CHECK_THROW( - disc->mergedWith(*discGap, Acts::BinningValue::binR, false, *logger), + disc->mergedWith(*discGap, Acts::AxisDirection::AxisR, false, *logger), SurfaceMergingException); auto discShiftedZ = Surface::makeShared( base * Translation3{Vector3::UnitZ() * 10_mm}, 100_mm, 150_mm); - BOOST_CHECK_THROW( - disc->mergedWith(*discShiftedZ, Acts::BinningValue::binR, false, *logger), - SurfaceMergingException); + BOOST_CHECK_THROW(disc->mergedWith(*discShiftedZ, Acts::AxisDirection::AxisR, + false, *logger), + SurfaceMergingException); auto discShiftedXy = makeDisc( base * Translation3{Vector3{1_mm, 2_mm, 200_mm}}, 100_mm, 150_mm); - BOOST_CHECK_THROW(disc->mergedWith(*discShiftedXy, Acts::BinningValue::binZ, + BOOST_CHECK_THROW(disc->mergedWith(*discShiftedXy, Acts::AxisDirection::AxisZ, false, *logger), SurfaceMergingException); auto discRotatedZ = makeDisc(base * AngleAxis3{10_degree, Vector3::UnitZ()}, 100_mm, 150_mm, 60_degree, 0_degree); - BOOST_CHECK_THROW( - disc->mergedWith(*discRotatedZ, Acts::BinningValue::binR, false, *logger), - SurfaceMergingException); + BOOST_CHECK_THROW(disc->mergedWith(*discRotatedZ, Acts::AxisDirection::AxisR, + false, *logger), + SurfaceMergingException); auto discRotatedX = makeDisc(base * AngleAxis3{10_degree, Vector3::UnitX()}, 100_mm, 150_mm); - BOOST_CHECK_THROW( - disc->mergedWith(*discRotatedX, Acts::BinningValue::binR, false, *logger), - SurfaceMergingException); + BOOST_CHECK_THROW(disc->mergedWith(*discRotatedX, Acts::AxisDirection::AxisR, + false, *logger), + SurfaceMergingException); // Test not same phi sector auto discPhi1 = makeDisc(base, 30_mm, 100_mm, 10_degree, 40_degree); auto discPhi2 = makeDisc(base, 100_mm, 160_mm, 20_degree, 40_degree); auto discPhi3 = makeDisc(base, 100_mm, 160_mm, 10_degree, 50_degree); BOOST_CHECK_THROW( - discPhi1->mergedWith(*discPhi2, BinningValue::binR, false, *logger), + discPhi1->mergedWith(*discPhi2, AxisDirection::AxisR, false, *logger), SurfaceMergingException); BOOST_CHECK_THROW( - discPhi1->mergedWith(*discPhi3, BinningValue::binR, false, *logger), + discPhi1->mergedWith(*discPhi3, AxisDirection::AxisR, false, *logger), SurfaceMergingException); } @@ -534,12 +537,12 @@ BOOST_DATA_TEST_CASE(RDirection, makeDisc(base * AngleAxis3(14_degree, Vector3::UnitZ()), 100_mm, 150_mm); auto [disc3, reversed] = - disc->mergedWith(*disc2, Acts::BinningValue::binR, false, *logger); + disc->mergedWith(*disc2, Acts::AxisDirection::AxisR, false, *logger); BOOST_REQUIRE_NE(disc3, nullptr); BOOST_CHECK(!reversed); auto [disc3Reversed, reversed2] = - disc2->mergedWith(*disc, Acts::BinningValue::binR, false, *logger); + disc2->mergedWith(*disc, Acts::AxisDirection::AxisR, false, *logger); BOOST_REQUIRE_NE(disc3Reversed, nullptr); BOOST_CHECK(disc3->bounds() == disc3Reversed->bounds()); BOOST_CHECK(reversed2); @@ -565,7 +568,7 @@ BOOST_DATA_TEST_CASE(RDirection, auto discPhi1 = makeDisc(base, 30_mm, 100_mm, 10_degree, 40_degree); auto discPhi2 = makeDisc(base, 100_mm, 160_mm, 10_degree, 40_degree); auto [discPhi12, reversedPhi12] = - discPhi1->mergedWith(*discPhi2, BinningValue::binR, false, *logger); + discPhi1->mergedWith(*discPhi2, AxisDirection::AxisR, false, *logger); BOOST_REQUIRE_NE(discPhi12, nullptr); const auto* boundsPhi12 = @@ -598,26 +601,26 @@ BOOST_DATA_TEST_CASE(IncompatiblePhiDirection, // Disc with overlap in phi auto discPhi2 = makeDisc(base, 30_mm, 100_mm, 45_degree, a(85_degree)); - BOOST_CHECK_THROW(discPhi->mergedWith(*discPhi2, Acts::BinningValue::binPhi, + BOOST_CHECK_THROW(discPhi->mergedWith(*discPhi2, Acts::AxisDirection::AxisPhi, false, *logger), SurfaceMergingException); // Disc with gap in phi auto discPhi3 = makeDisc(base, 30_mm, 100_mm, 45_degree, a(105_degree)); - BOOST_CHECK_THROW(discPhi->mergedWith(*discPhi3, Acts::BinningValue::binPhi, + BOOST_CHECK_THROW(discPhi->mergedWith(*discPhi3, Acts::AxisDirection::AxisPhi, false, *logger), SurfaceMergingException); // Disc with a z shift auto discPhi4 = makeDisc(base * Translation3{Vector3::UnitZ() * 20_mm}, 30_mm, 100_mm, 45_degree, a(95_degree)); - BOOST_CHECK_THROW(discPhi->mergedWith(*discPhi4, Acts::BinningValue::binPhi, + BOOST_CHECK_THROW(discPhi->mergedWith(*discPhi4, Acts::AxisDirection::AxisPhi, false, *logger), SurfaceMergingException); // Disc with different r bounds: could be merged in r but not in phi auto discPhi5 = makeDisc(base, 100_mm, 150_mm, 45_degree, a(95_degree)); - BOOST_CHECK_THROW(discPhi->mergedWith(*discPhi5, Acts::BinningValue::binPhi, + BOOST_CHECK_THROW(discPhi->mergedWith(*discPhi5, Acts::AxisDirection::AxisPhi, false, *logger), SurfaceMergingException); } @@ -643,13 +646,13 @@ BOOST_DATA_TEST_CASE(PhiDirection, auto disc2 = makeDisc(base, 30_mm, 100_mm, 45_degree, a(95_degree)); auto [disc3, reversed] = - disc->mergedWith(*disc2, Acts::BinningValue::binPhi, false, *logger); + disc->mergedWith(*disc2, Acts::AxisDirection::AxisPhi, false, *logger); BOOST_REQUIRE_NE(disc3, nullptr); BOOST_CHECK_EQUAL(base.matrix(), disc3->transform(tgContext).matrix()); BOOST_CHECK(reversed); auto [disc3Reversed, reversed2] = - disc2->mergedWith(*disc, Acts::BinningValue::binPhi, false, *logger); + disc2->mergedWith(*disc, Acts::AxisDirection::AxisPhi, false, *logger); BOOST_REQUIRE_NE(disc3Reversed, nullptr); BOOST_CHECK(*disc3 == *disc3Reversed); BOOST_CHECK(!reversed2); @@ -667,13 +670,13 @@ BOOST_DATA_TEST_CASE(PhiDirection, auto disc4 = makeDisc(base, 30_mm, 100_mm, 20_degree, a(170_degree)); auto disc5 = makeDisc(base, 30_mm, 100_mm, 10_degree, a(-160_degree)); auto [disc45, reversed45] = - disc4->mergedWith(*disc5, Acts::BinningValue::binPhi, false, *logger); + disc4->mergedWith(*disc5, Acts::AxisDirection::AxisPhi, false, *logger); BOOST_REQUIRE_NE(disc45, nullptr); BOOST_CHECK_EQUAL(base.matrix(), disc45->transform(tgContext).matrix()); BOOST_CHECK(reversed45); auto [disc54, reversed54] = - disc5->mergedWith(*disc4, Acts::BinningValue::binPhi, false, *logger); + disc5->mergedWith(*disc4, Acts::AxisDirection::AxisPhi, false, *logger); BOOST_REQUIRE_NE(disc54, nullptr); BOOST_CHECK(!reversed54); @@ -693,14 +696,14 @@ BOOST_DATA_TEST_CASE(PhiDirection, auto disc7 = makeDisc(base, 30_mm, 100_mm, 90_degree, a(180_degree)); auto [disc67, reversed67] = - disc6->mergedWith(*disc7, Acts::BinningValue::binPhi, false, *logger); + disc6->mergedWith(*disc7, Acts::AxisDirection::AxisPhi, false, *logger); BOOST_REQUIRE_NE(disc67, nullptr); CHECK_CLOSE_OR_SMALL(disc67->transform(tgContext).matrix(), base.matrix(), 1e-6, 1e-10); BOOST_CHECK(!reversed67); auto [disc76, reversed76] = - disc7->mergedWith(*disc6, Acts::BinningValue::binPhi, false, *logger); + disc7->mergedWith(*disc6, Acts::AxisDirection::AxisPhi, false, *logger); BOOST_REQUIRE_NE(disc76, nullptr); // surfaces are not equal because bounds are not equal BOOST_CHECK(*disc76 != *disc67); @@ -729,7 +732,7 @@ BOOST_DATA_TEST_CASE(PhiDirection, auto disc2 = makeDisc(trf2, 30_mm, 100_mm, 45_degree, 0_degree); auto [disc3, reversed] = - disc->mergedWith(*disc2, Acts::BinningValue::binPhi, true, *logger); + disc->mergedWith(*disc2, Acts::AxisDirection::AxisPhi, true, *logger); BOOST_REQUIRE_NE(disc3, nullptr); Transform3 trfExpected12 = base * AngleAxis3(a(85_degree), Vector3::UnitZ()); @@ -738,7 +741,7 @@ BOOST_DATA_TEST_CASE(PhiDirection, BOOST_CHECK(reversed); auto [disc3Reversed, reversed2] = - disc2->mergedWith(*disc, Acts::BinningValue::binPhi, true, *logger); + disc2->mergedWith(*disc, Acts::AxisDirection::AxisPhi, true, *logger); BOOST_REQUIRE_NE(disc3Reversed, nullptr); BOOST_CHECK(*disc3 == *disc3Reversed); BOOST_CHECK(!reversed2); @@ -755,7 +758,7 @@ BOOST_DATA_TEST_CASE(PhiDirection, Transform3 trf5 = base * AngleAxis3(a(-160_degree), Vector3::UnitZ()); auto disc5 = makeDisc(trf5, 30_mm, 100_mm, 10_degree, 0_degree); auto [disc45, reversed45] = - disc4->mergedWith(*disc5, Acts::BinningValue::binPhi, true, *logger); + disc4->mergedWith(*disc5, Acts::AxisDirection::AxisPhi, true, *logger); BOOST_REQUIRE_NE(disc45, nullptr); Transform3 trfExpected45 = base * AngleAxis3(a(180_degree), Vector3::UnitZ()); @@ -764,7 +767,7 @@ BOOST_DATA_TEST_CASE(PhiDirection, BOOST_CHECK(reversed45); auto [disc54, reversed54] = - disc5->mergedWith(*disc4, Acts::BinningValue::binPhi, true, *logger); + disc5->mergedWith(*disc4, Acts::AxisDirection::AxisPhi, true, *logger); BOOST_REQUIRE_NE(disc54, nullptr); BOOST_CHECK(!reversed54); @@ -782,7 +785,7 @@ BOOST_DATA_TEST_CASE(PhiDirection, Transform3 trf7 = base * AngleAxis3(a(180_degree), Vector3::UnitZ()); auto disc7 = makeDisc(trf7, 30_mm, 100_mm, 90_degree, 0_degree); auto [disc67, reversed67] = - disc6->mergedWith(*disc7, Acts::BinningValue::binPhi, true, *logger); + disc6->mergedWith(*disc7, Acts::AxisDirection::AxisPhi, true, *logger); BOOST_REQUIRE_NE(disc67, nullptr); Transform3 trfExpected67 = base * AngleAxis3(a(90_degree), Vector3::UnitZ()); @@ -791,7 +794,7 @@ BOOST_DATA_TEST_CASE(PhiDirection, BOOST_CHECK(!reversed67); auto [disc76, reversed76] = - disc7->mergedWith(*disc6, Acts::BinningValue::binPhi, true, *logger); + disc7->mergedWith(*disc6, Acts::AxisDirection::AxisPhi, true, *logger); BOOST_REQUIRE_NE(disc76, nullptr); // surfaces are not equal due to different transforms BOOST_CHECK(*disc76 != *disc67); diff --git a/Tests/UnitTests/Core/Surfaces/LineSurfaceTests.cpp b/Tests/UnitTests/Core/Surfaces/LineSurfaceTests.cpp index 0721039acef..b1e4e3d9a93 100644 --- a/Tests/UnitTests/Core/Surfaces/LineSurfaceTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/LineSurfaceTests.cpp @@ -92,13 +92,14 @@ BOOST_AUTO_TEST_CASE(LineSurface_Constructors_test) { /// Unit tests of all named methods BOOST_AUTO_TEST_CASE(LineSurface_allNamedMethods_test) { - // binningPosition() + // referencePosition() Translation3 translation{0., 1., 2.}; Transform3 transform(translation); LineSurfaceStub line(transform, 2., 20.); Vector3 referencePosition{0., 1., 2.}; CHECK_CLOSE_ABS(referencePosition, - line.binningPosition(tgContext, BinningValue::binX), 1e-6); + line.referencePosition(tgContext, AxisDirection::AxisX), + 1e-6); // bounds() auto pLineBounds = std::make_shared(2., 10.); diff --git a/Tests/UnitTests/Core/Surfaces/PlaneSurfaceTests.cpp b/Tests/UnitTests/Core/Surfaces/PlaneSurfaceTests.cpp index b62517f3e2c..6c09e65ab65 100644 --- a/Tests/UnitTests/Core/Surfaces/PlaneSurfaceTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/PlaneSurfaceTests.cpp @@ -97,11 +97,11 @@ BOOST_AUTO_TEST_CASE(PlaneSurfaceProperties) { /// Test type (redundant) BOOST_CHECK_EQUAL(planeSurfaceObject->type(), Surface::Plane); - /// Test binningPosition - Vector3 binningPosition{0., 1., 2.}; + /// Test referencePosition + Vector3 referencePosition{0., 1., 2.}; BOOST_CHECK_EQUAL( - planeSurfaceObject->binningPosition(tgContext, BinningValue::binX), - binningPosition); + planeSurfaceObject->referencePosition(tgContext, AxisDirection::AxisX), + referencePosition); /// Test referenceFrame Vector3 arbitraryGlobalPosition{2., 2., 2.}; @@ -246,21 +246,21 @@ BOOST_AUTO_TEST_CASE(PlaneSurfaceExtent) { auto planeExtent = plane->polyhedronRepresentation(tgContext, 1).extent(); - CHECK_CLOSE_ABS(planeExtent.min(BinningValue::binZ), -rHx, + CHECK_CLOSE_ABS(planeExtent.min(AxisDirection::AxisZ), -rHx, s_onSurfaceTolerance); - CHECK_CLOSE_ABS(planeExtent.max(BinningValue::binZ), rHx, + CHECK_CLOSE_ABS(planeExtent.max(AxisDirection::AxisZ), rHx, s_onSurfaceTolerance); - CHECK_CLOSE_ABS(planeExtent.min(BinningValue::binX), -rHy, + CHECK_CLOSE_ABS(planeExtent.min(AxisDirection::AxisX), -rHy, s_onSurfaceTolerance); - CHECK_CLOSE_ABS(planeExtent.max(BinningValue::binX), rHy, + CHECK_CLOSE_ABS(planeExtent.max(AxisDirection::AxisX), rHy, s_onSurfaceTolerance); - CHECK_CLOSE_ABS(planeExtent.min(BinningValue::binY), yPs, + CHECK_CLOSE_ABS(planeExtent.min(AxisDirection::AxisY), yPs, s_onSurfaceTolerance); - CHECK_CLOSE_ABS(planeExtent.max(BinningValue::binY), yPs, + CHECK_CLOSE_ABS(planeExtent.max(AxisDirection::AxisY), yPs, s_onSurfaceTolerance); - CHECK_CLOSE_ABS(planeExtent.min(BinningValue::binR), yPs, + CHECK_CLOSE_ABS(planeExtent.min(AxisDirection::AxisR), yPs, s_onSurfaceTolerance); - CHECK_CLOSE_ABS(planeExtent.max(BinningValue::binR), std::hypot(yPs, rHy), + CHECK_CLOSE_ABS(planeExtent.max(AxisDirection::AxisR), std::hypot(yPs, rHy), s_onSurfaceTolerance); // Now rotate @@ -272,20 +272,20 @@ BOOST_AUTO_TEST_CASE(PlaneSurfaceExtent) { auto planeExtentRot = planeRot->polyhedronRepresentation(tgContext, 1).extent(); - CHECK_CLOSE_ABS(planeExtentRot.min(BinningValue::binZ), -rHx, + CHECK_CLOSE_ABS(planeExtentRot.min(AxisDirection::AxisZ), -rHx, s_onSurfaceTolerance); - CHECK_CLOSE_ABS(planeExtentRot.max(BinningValue::binZ), rHx, + CHECK_CLOSE_ABS(planeExtentRot.max(AxisDirection::AxisZ), rHx, s_onSurfaceTolerance); - CHECK_CLOSE_ABS(planeExtentRot.min(BinningValue::binX), + CHECK_CLOSE_ABS(planeExtentRot.min(AxisDirection::AxisX), -rHy * std::cos(alpha), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(planeExtentRot.max(BinningValue::binX), rHy * std::cos(alpha), - s_onSurfaceTolerance); - CHECK_CLOSE_ABS(planeExtentRot.min(BinningValue::binY), + CHECK_CLOSE_ABS(planeExtentRot.max(AxisDirection::AxisX), + rHy * std::cos(alpha), s_onSurfaceTolerance); + CHECK_CLOSE_ABS(planeExtentRot.min(AxisDirection::AxisY), yPs - rHy * std::sin(alpha), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(planeExtentRot.max(BinningValue::binY), + CHECK_CLOSE_ABS(planeExtentRot.max(AxisDirection::AxisY), yPs + rHy * std::sin(alpha), s_onSurfaceTolerance); - CHECK_CLOSE_ABS(planeExtentRot.min(BinningValue::binR), yPs * std::cos(alpha), - s_onSurfaceTolerance); + CHECK_CLOSE_ABS(planeExtentRot.min(AxisDirection::AxisR), + yPs * std::cos(alpha), s_onSurfaceTolerance); } BOOST_AUTO_TEST_CASE(RotatedTrapezoid) { diff --git a/Tests/UnitTests/Core/Surfaces/PolyhedronSurfacesTests.cpp b/Tests/UnitTests/Core/Surfaces/PolyhedronSurfacesTests.cpp index 8029a53426b..fc8a865f813 100644 --- a/Tests/UnitTests/Core/Surfaces/PolyhedronSurfacesTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/PolyhedronSurfacesTests.cpp @@ -70,14 +70,14 @@ BOOST_AUTO_TEST_CASE(ConeSurfacePolyhedrons) { auto oneConePh = oneCone->polyhedronRepresentation(tgContext, segments); const auto extent = oneConePh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), -rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), -rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), 0_mm, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), 0_mm, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), hzPos, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), -rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), 0_mm, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), 0_mm, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), hzPos, epsAbs); const unsigned int expectedFaces = 4 * segments; BOOST_CHECK_EQUAL(oneConePh.faces.size(), expectedFaces); @@ -97,14 +97,14 @@ BOOST_AUTO_TEST_CASE(ConeSurfacePolyhedrons) { oneConePiece->polyhedronRepresentation(tgContext, segments); const auto extent = oneConePiecePh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), -rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), -rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), rMin, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), hzpMin, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), hzPos, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), -rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), rMin, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), hzpMin, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), hzPos, epsAbs); const unsigned int expectedFaces = 4 * segments; BOOST_CHECK_EQUAL(oneConePiecePh.faces.size(), expectedFaces); @@ -119,14 +119,14 @@ BOOST_AUTO_TEST_CASE(ConeSurfacePolyhedrons) { auto twoConesPh = twoCones->polyhedronRepresentation(tgContext, segments); const auto extent = twoConesPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), -rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), -rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), 0_mm, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), hzNeg, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), hzPos, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), -rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), 0_mm, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), hzNeg, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), hzPos, epsAbs); const unsigned int expectedFaces = 2 * segments * 4; const unsigned int expectedVertices = 2 * (4 * segments + 1) + 1; @@ -147,16 +147,16 @@ BOOST_AUTO_TEST_CASE(ConeSurfacePolyhedrons) { sectoralCones->polyhedronRepresentation(tgContext, segments); const auto extent = sectoralConesPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), 0, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), 0, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -rMax * std::sin(phiSector), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), rMax * std::sin(phiSector), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), 0_mm, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), rMax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), hzNeg, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), hzPos, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), 0_mm, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), rMax, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), hzNeg, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), hzPos, epsAbs); // Segment numbers are further checked with the VertexHelper checks } @@ -185,14 +185,14 @@ BOOST_AUTO_TEST_CASE(CylinderSurfacePolyhedrons) { fullCylinder->polyhedronRepresentation(tgContext, segments); const auto extent = fullCylinderPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), -r, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), r, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), -r, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), r, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), r, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), r, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), -hZ, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), hZ, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), -r, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), r, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -r, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), r, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), r, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), r, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), -hZ, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), hZ, epsAbs); const unsigned int expectedFaces = 4 * segments; const unsigned int expectedVertices = (4 * segments + 1) * 2; @@ -211,17 +211,17 @@ BOOST_AUTO_TEST_CASE(CylinderSurfacePolyhedrons) { centerSectoredCylinder->polyhedronRepresentation(tgContext, segments); const auto extent = centerSectoredCylinderPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), r * std::cos(phiSector), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), r, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), r, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -r * std::sin(phiSector), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), r * std::sin(phiSector), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), r, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), r, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), -hZ, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), hZ, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), r, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), r, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), -hZ, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), hZ, epsAbs); } } } @@ -247,14 +247,16 @@ BOOST_AUTO_TEST_CASE(DiscSurfacePolyhedrons) { auto fullDiscPh = fullDisc->polyhedronRepresentation(tgContext, segments); const auto extent = fullDiscPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), -outerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), outerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), -outerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), outerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), outerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), -outerR, + epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), outerR, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -outerR, + epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), outerR, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), outerR, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), 0., epsAbs); const unsigned int expectedFaces = 1; // Segments + overlap + center @@ -270,14 +272,16 @@ BOOST_AUTO_TEST_CASE(DiscSurfacePolyhedrons) { auto radialPh = radialDisc->polyhedronRepresentation(tgContext, segments); const auto extent = radialPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), -outerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), outerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), -outerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), outerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), innerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), outerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), -outerR, + epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), outerR, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -outerR, + epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), outerR, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), innerR, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), outerR, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), 0., epsAbs); } /// Sectoral disc - around 0. @@ -287,16 +291,16 @@ BOOST_AUTO_TEST_CASE(DiscSurfacePolyhedrons) { auto sectorPh = sectorDisc->polyhedronRepresentation(tgContext, segments); const auto extent = sectorPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), outerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), outerR, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -outerR * std::sin(phiSector), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), outerR * std::sin(phiSector), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), outerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), outerR, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), 0., epsAbs); } /// Sectoral ring - around 0. @@ -309,17 +313,17 @@ BOOST_AUTO_TEST_CASE(DiscSurfacePolyhedrons) { sectorRingDisc->polyhedronRepresentation(tgContext, segments); const auto extent = sectorRingDiscPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), innerR * std::cos(phiSector), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), outerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), outerR, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -outerR * std::sin(phiSector), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), outerR * std::sin(phiSector), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), innerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), outerR, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), innerR, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), outerR, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), 0., epsAbs); } /// Trapezoid for a disc @@ -335,19 +339,20 @@ BOOST_AUTO_TEST_CASE(DiscSurfacePolyhedrons) { trapezoidDiscSf->polyhedronRepresentation(tgContext, segments); const auto extent = trapezoidDiscSfPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), -std::abs(outerR - innerR) / 2., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), std::abs(outerR - innerR) / 2., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), -halfXmax, + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -halfXmax, + epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), halfXmax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), halfXmax, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), std::hypot(std::abs(outerR - innerR) / 2., halfXmax), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), 0., epsAbs); } /// AnnulusBounds for a disc @@ -364,12 +369,12 @@ BOOST_AUTO_TEST_CASE(DiscSurfacePolyhedrons) { auto annulusDiscPh = annulusDisc->polyhedronRepresentation(tgContext, segments); const auto extent = annulusDiscPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), minRadius, + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), minRadius, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), maxRadius, + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), maxRadius, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), 0., epsAbs); } } } @@ -396,15 +401,15 @@ BOOST_AUTO_TEST_CASE(PlaneSurfacePolyhedrons) { rectangularPlane->polyhedronRepresentation(tgContext, segments); const auto extent = rectangularPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), -rhX, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), rhX, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), -rhY, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), rhY, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), -rhX, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), rhX, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -rhY, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), rhY, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), std::hypot(rhX, rhY), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), 0., epsAbs); BOOST_CHECK_EQUAL(rectangularPh.vertices.size(), 4); BOOST_CHECK_EQUAL(rectangularPh.faces.size(), 1); @@ -426,17 +431,17 @@ BOOST_AUTO_TEST_CASE(PlaneSurfacePolyhedrons) { trapezoidalPlane->polyhedronRepresentation(tgContext, segments); const auto extent = trapezoidalPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), -std::max(thX1, thX2), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), std::max(thX1, thX2), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), -thY, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), thY, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -thY, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), thY, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), std::hypot(std::max(thX1, thX2), thY), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), 0., epsAbs); BOOST_CHECK_EQUAL(trapezoidalPh.vertices.size(), 4); BOOST_CHECK_EQUAL(trapezoidalPh.faces.size(), 1); @@ -459,16 +464,16 @@ BOOST_AUTO_TEST_CASE(PlaneSurfacePolyhedrons) { ellipsoidPlane->polyhedronRepresentation(tgContext, segments); const auto extent = ellipsoidPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), -rMaxX, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), rMaxX, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), -rMaxY, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), rMaxY, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), -rMaxX, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), rMaxX, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -rMaxY, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), rMaxY, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), std::min(rMinX, rMinY), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), std::max(rMaxX, rMaxY), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), 0., epsAbs); } { @@ -484,16 +489,16 @@ BOOST_AUTO_TEST_CASE(PlaneSurfacePolyhedrons) { ellipsoidRingPlane->polyhedronRepresentation(tgContext, segments); const auto extent = ellipsoidRingPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), -rMaxX, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), rMaxX, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), -rMaxY, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), rMaxY, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), -rMaxX, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), rMaxX, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -rMaxY, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), rMaxY, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), std::min(rMinX, rMinY), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), std::max(rMaxX, rMaxY), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), 0., epsAbs); } /// ConvexPolygonBounds test @@ -509,15 +514,15 @@ BOOST_AUTO_TEST_CASE(PlaneSurfacePolyhedrons) { hexagonPlane->polyhedronRepresentation(tgContext, segments); const auto extent = hexagonPlanePh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), -40, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), 30, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), -30, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), 50, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), 0, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), std::sqrt(2900), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), -40, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), 30, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -30, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), 50, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), 0, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), std::sqrt(2900), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), 0., epsAbs); } /// Diamond shaped plane @@ -535,15 +540,15 @@ BOOST_AUTO_TEST_CASE(PlaneSurfacePolyhedrons) { diamondPlane->polyhedronRepresentation(tgContext, segments); const auto extent = diamondPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), -hMedX, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), hMedX, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), -hMinY, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), hMaxY, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), -hMedX, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), hMedX, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -hMinY, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), hMaxY, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), std::hypot(hMaxX, hMaxY), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), 0., epsAbs); BOOST_CHECK_EQUAL(diamondPh.vertices.size(), 6); BOOST_CHECK_EQUAL(diamondPh.faces.size(), 1); @@ -578,17 +583,17 @@ BOOST_AUTO_TEST_CASE(ShiftedSurfacePolyhedrons) { rectangularPlane->polyhedronRepresentation(tgContext, segments); const auto extent = rectangularPh.extent(); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).min(), -rhX, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binX).max(), rhX, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).min(), -rhY + shiftY, + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).min(), -rhX, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisX).max(), rhX, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).min(), -rhY + shiftY, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binY).max(), rhY + shiftY, + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisY).max(), rhY + shiftY, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).min(), 25, epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binR).max(), + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).min(), 25, epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisR).max(), std::hypot(rhX, rhY + shiftY), epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).min(), 0., epsAbs); - CHECK_CLOSE_ABS(extent.range(BinningValue::binZ).max(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).min(), 0., epsAbs); + CHECK_CLOSE_ABS(extent.range(AxisDirection::AxisZ).max(), 0., epsAbs); BOOST_CHECK_EQUAL(rectangularPh.vertices.size(), 4); BOOST_CHECK_EQUAL(rectangularPh.faces.size(), 1); diff --git a/Tests/UnitTests/Core/Surfaces/SurfaceArrayTests.cpp b/Tests/UnitTests/Core/Surfaces/SurfaceArrayTests.cpp index 732e7d9ff6a..bf2474d3101 100644 --- a/Tests/UnitTests/Core/Surfaces/SurfaceArrayTests.cpp +++ b/Tests/UnitTests/Core/Surfaces/SurfaceArrayTests.cpp @@ -16,7 +16,7 @@ #include "Acts/Surfaces/Surface.hpp" #include "Acts/Surfaces/SurfaceArray.hpp" #include "Acts/Utilities/Axis.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/BinningType.hpp" #include "Acts/Utilities/Helpers.hpp" @@ -208,7 +208,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArray_create, SurfaceArrayFixture) { sa.toStream(tgContext, std::cout); for (const auto& srf : brl) { - Vector3 ctr = srf->binningPosition(tgContext, BinningValue::binR); + Vector3 ctr = srf->referencePosition(tgContext, AxisDirection::AxisR); std::vector binContent = sa.at(ctr); BOOST_CHECK_EQUAL(binContent.size(), 1u); @@ -228,7 +228,7 @@ BOOST_FIXTURE_TEST_CASE(SurfaceArray_create, SurfaceArrayFixture) { SurfaceArray sa2(std::move(sl2), brl); sa.toStream(tgContext, std::cout); for (const auto& srf : brl) { - Vector3 ctr = srf->binningPosition(tgContext, BinningValue::binR); + Vector3 ctr = srf->referencePosition(tgContext, AxisDirection::AxisR); std::vector binContent = sa2.at(ctr); BOOST_CHECK_EQUAL(binContent.size(), 1u); diff --git a/Tests/UnitTests/Core/Surfaces/SurfaceStub.hpp b/Tests/UnitTests/Core/Surfaces/SurfaceStub.hpp index 647372e124c..4815420aa1c 100644 --- a/Tests/UnitTests/Core/Surfaces/SurfaceStub.hpp +++ b/Tests/UnitTests/Core/Surfaces/SurfaceStub.hpp @@ -76,8 +76,8 @@ class SurfaceStub : public RegularSurface { } /// Inherited from GeometryObject base - Vector3 binningPosition(const GeometryContext& /*txt*/, - BinningValue /*bValue*/) const final { + Vector3 referencePosition(const GeometryContext& /*txt*/, + AxisDirection /*bValue*/) const final { const Vector3 v{0., 0., 0.}; return v; } diff --git a/Tests/UnitTests/Core/TrackFinding/TrackParamsLookupAccumulatorTests.cpp b/Tests/UnitTests/Core/TrackFinding/TrackParamsLookupAccumulatorTests.cpp index 358753810db..af442f428d9 100644 --- a/Tests/UnitTests/Core/TrackFinding/TrackParamsLookupAccumulatorTests.cpp +++ b/Tests/UnitTests/Core/TrackFinding/TrackParamsLookupAccumulatorTests.cpp @@ -19,7 +19,7 @@ #include "Acts/Surfaces/Surface.hpp" #include "Acts/Tests/CommonHelpers/FloatComparisons.hpp" #include "Acts/TrackFinding/TrackParamsLookupAccumulator.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Grid.hpp" #include "Acts/Utilities/GridAxisGenerators.hpp" diff --git a/Tests/UnitTests/Core/Utilities/AxesTests.cpp b/Tests/UnitTests/Core/Utilities/AxesTests.cpp index 4aa00b23288..c777b763630 100644 --- a/Tests/UnitTests/Core/Utilities/AxesTests.cpp +++ b/Tests/UnitTests/Core/Utilities/AxesTests.cpp @@ -10,7 +10,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Utilities/Axis.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include #include diff --git a/Tests/UnitTests/Core/Utilities/BinAdjustmentTests.cpp b/Tests/UnitTests/Core/Utilities/BinAdjustmentTests.cpp index 1db5ee9ccfe..ecf8d4ca457 100644 --- a/Tests/UnitTests/Core/Utilities/BinAdjustmentTests.cpp +++ b/Tests/UnitTests/Core/Utilities/BinAdjustmentTests.cpp @@ -28,8 +28,8 @@ namespace Acts::Test { BOOST_AUTO_TEST_CASE(BinAdjustment_Radial) { RadialBounds bound(50, 75, std::numbers::pi, 0); BinUtility bu; - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binR); - bu += BinUtility(1, 0, 1, Acts::closed, Acts::BinningValue::binPhi); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisR); + bu += BinUtility(1, 0, 1, Acts::closed, Acts::AxisDirection::AxisPhi); BinUtility buAdjust = adjustBinUtility(bu, bound, Transform3::Identity()); @@ -43,8 +43,8 @@ BOOST_AUTO_TEST_CASE(BinAdjustment_Radial) { BOOST_AUTO_TEST_CASE(BinAdjustment_Cylinder) { CylinderBounds bound(25, 50, std::numbers::pi / 4, 0); BinUtility bu; - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binPhi); - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binZ); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisPhi); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisZ); BinUtility buAdjust = adjustBinUtility(bu, bound, Transform3::Identity()); @@ -60,8 +60,8 @@ BOOST_AUTO_TEST_CASE(BinAdjustment_Cylinder) { BOOST_AUTO_TEST_CASE(BinAdjustment_Rectangle) { RectangleBounds bound(20, 30); BinUtility bu; - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binX); - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binY); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisX); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisY); BinUtility buAdjust = adjustBinUtility(bu, bound, Transform3::Identity()); @@ -75,8 +75,8 @@ BOOST_AUTO_TEST_CASE(BinAdjustment_Rectangle) { BOOST_AUTO_TEST_CASE(BinAdjustment_Trapezoid) { TrapezoidBounds bound(5, 15, 30); BinUtility bu; - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binX); - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binY); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisX); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisY); BinUtility buAdjust = adjustBinUtility(bu, bound, Transform3::Identity()); diff --git a/Tests/UnitTests/Core/Utilities/BinAdjustmentVolumeTests.cpp b/Tests/UnitTests/Core/Utilities/BinAdjustmentVolumeTests.cpp index 1b91120dd7f..2d6aa35e867 100644 --- a/Tests/UnitTests/Core/Utilities/BinAdjustmentVolumeTests.cpp +++ b/Tests/UnitTests/Core/Utilities/BinAdjustmentVolumeTests.cpp @@ -27,9 +27,9 @@ namespace Acts::Test { BOOST_AUTO_TEST_CASE(BinAdjustmentVolume_Cylinder) { CylinderVolumeBounds bound(10, 50, 150, std::numbers::pi / 2., 0); BinUtility bu; - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binR); - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binPhi); - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binZ); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisR); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisPhi); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisZ); BinUtility buAdjust = adjustBinUtility(bu, bound, Transform3::Identity()); @@ -47,9 +47,9 @@ BOOST_AUTO_TEST_CASE(BinAdjustmentVolume_Cylinder) { BOOST_AUTO_TEST_CASE(BinAdjustmentVolume_CutoutCylinder) { CutoutCylinderVolumeBounds bound(10, 20, 50, 100, 15); BinUtility bu; - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binR); - bu += BinUtility(1, 0, 1, Acts::closed, Acts::BinningValue::binPhi); - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binZ); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisR); + bu += BinUtility(1, 0, 1, Acts::closed, Acts::AxisDirection::AxisPhi); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisZ); BinUtility buAdjust = adjustBinUtility(bu, bound, Transform3::Identity()); @@ -65,9 +65,9 @@ BOOST_AUTO_TEST_CASE(BinAdjustmentVolume_CutoutCylinder) { BOOST_AUTO_TEST_CASE(BinAdjustmentVolume_Cuboid) { CuboidVolumeBounds bound(13, 23, 42); BinUtility bu; - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binX); - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binY); - bu += BinUtility(1, 0, 1, Acts::open, Acts::BinningValue::binZ); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisX); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisY); + bu += BinUtility(1, 0, 1, Acts::open, Acts::AxisDirection::AxisZ); BinUtility buAdjust = adjustBinUtility(bu, bound, Transform3::Identity()); diff --git a/Tests/UnitTests/Core/Utilities/BinUtilityTests.cpp b/Tests/UnitTests/Core/Utilities/BinUtilityTests.cpp index b44d939831f..ab38d7bd78a 100644 --- a/Tests/UnitTests/Core/Utilities/BinUtilityTests.cpp +++ b/Tests/UnitTests/Core/Utilities/BinUtilityTests.cpp @@ -27,12 +27,12 @@ BOOST_AUTO_TEST_CASE(BinUtility_equidistant_binning) { Vector3 edgePosition(0.5, 0.5, 0.5); // | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | - BinUtility xUtil_eq(10, 0., 10., open, BinningValue::binX); - BinUtility yUtil_eq(10, 0., 10., open, BinningValue::binY); - BinUtility zUtil_eq(10, 0., 10., open, BinningValue::binZ); + BinUtility xUtil_eq(10, 0., 10., open, AxisDirection::AxisX); + BinUtility yUtil_eq(10, 0., 10., open, AxisDirection::AxisY); + BinUtility zUtil_eq(10, 0., 10., open, AxisDirection::AxisZ); BOOST_CHECK_EQUAL(xUtil_eq.bins(), std::size_t{10}); // make it 2-dim - BinUtility xyUtil_eq(10, 0., 10., open, BinningValue::binX); + BinUtility xyUtil_eq(10, 0., 10., open, AxisDirection::AxisX); xyUtil_eq += yUtil_eq; BOOST_CHECK_EQUAL(xyUtil_eq.bins(), 100u); // make it 3-dim @@ -45,7 +45,7 @@ BOOST_AUTO_TEST_CASE(BinUtility_equidistant_binning) { BOOST_CHECK_EQUAL(xyzUtil_eq.dimensions(), 3u); // check equality operator - BinUtility xUtil_eq_copy(10, 0., 10., open, BinningValue::binX); + BinUtility xUtil_eq_copy(10, 0., 10., open, AxisDirection::AxisX); BOOST_CHECK_EQUAL(xUtil_eq_copy, xUtil_eq); BOOST_CHECK_NE(yUtil_eq, xUtil_eq); @@ -70,7 +70,7 @@ BOOST_AUTO_TEST_CASE(BinUtility_equidistant_binning) { // OPEN - equidistant binning tests BOOST_AUTO_TEST_CASE(BinUtility_arbitrary_binning) { std::vector bvalues = {-5., 0., 1., 1.1, 8.}; - BinUtility xUtil(bvalues, Acts::open, Acts::BinningValue::binX); + BinUtility xUtil(bvalues, Acts::open, Acts::AxisDirection::AxisX); // Underflow BOOST_CHECK_EQUAL(xUtil.bin(Vector3(-6., 0., 0.)), 0u); @@ -95,10 +95,10 @@ BOOST_AUTO_TEST_CASE(BinUtility_transform) { Transform3 transform_GtoL = transform_LtoG.inverse(); - BinUtility rUtil(10, 0., 100., open, BinningValue::binR); + BinUtility rUtil(10, 0., 100., open, AxisDirection::AxisR); BinUtility phiUtil(10, -std::numbers::pi, std::numbers::pi, closed, - BinningValue::binPhi); - BinUtility zUtil(10, -100., 100., open, BinningValue::binZ); + AxisDirection::AxisPhi); + BinUtility zUtil(10, -100., 100., open, AxisDirection::AxisZ); BinUtility noTranform; noTranform += rUtil; diff --git a/Tests/UnitTests/Core/Utilities/BinningDataTests.cpp b/Tests/UnitTests/Core/Utilities/BinningDataTests.cpp index 95de3899f92..ff99a53f709 100644 --- a/Tests/UnitTests/Core/Utilities/BinningDataTests.cpp +++ b/Tests/UnitTests/Core/Utilities/BinningDataTests.cpp @@ -37,36 +37,36 @@ Vector2 rphiPosition(3.5, std::numbers::pi / 8.); // x/y/zData // bin boundaries // | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -BinningData xData_eq(open, BinningValue::binX, 10, 0., 10.); -BinningData yData_eq(open, BinningValue::binY, 10, 0., 10.); -BinningData zData_eq(open, BinningValue::binZ, 10, 0., 10.); +BinningData xData_eq(open, AxisDirection::AxisX, 10, 0., 10.); +BinningData yData_eq(open, AxisDirection::AxisY, 10, 0., 10.); +BinningData zData_eq(open, AxisDirection::AxisZ, 10, 0., 10.); // r/phi/rphiData // bin boundaries // | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -BinningData rData_eq(open, BinningValue::binR, 10, 0., 10.); +BinningData rData_eq(open, AxisDirection::AxisR, 10, 0., 10.); // bin boundaries // > -PI | -3/5 PI | -1/5 PI | 1/5 PI | 3/5 PI | PI < -BinningData phiData_eq(closed, BinningValue::binPhi, 5, -std::numbers::pi, +BinningData phiData_eq(closed, AxisDirection::AxisPhi, 5, -std::numbers::pi, std::numbers::pi); -// BinningData rPhiData_eq(closed, BinningValue::binRPhi, 5, -std::numbers::pi, -// std::numbers::pi); h/etaData bin boundaries | 0 | 2 | 4 | 6 | 8 | 10 | -// BinningData hData_eq(open, BinningValue::binH, 5, 0., 10.); -// | -2.5 | -1.5 | -0.5 | 0.5 | 1.5 | 2.5 | -BinningData etaData_eq(open, BinningValue::binEta, 5, -2.5, 2.5); +// BinningData rPhiData_eq(closed, AxisDirection::AxisRPhi, 5, +// -std::numbers::pi, std::numbers::pi); h/etaData bin boundaries | 0 | 2 | 4 | +// 6 | 8 | 10 | BinningData hData_eq(open, AxisDirection::AxisTheta, 5, +// 0., 10.); | -2.5 | -1.5 | -0.5 | 0.5 | 1.5 | 2.5 | +BinningData etaData_eq(open, AxisDirection::AxisEta, 5, -2.5, 2.5); // Fest equality operator -BinningData xData_eq_copy(open, BinningValue::binX, 10, 0., 10.); +BinningData xData_eq_copy(open, AxisDirection::AxisX, 10, 0., 10.); // the binnings - arbitrary std::vector values = {0., 1., 2., 3., 4., 10.}; // bin boundaries // | 0 | 1 | 2 | 3 | 4 | 10 | -BinningData xData_arb(open, BinningValue::binX, values); -BinningData yData_arb(open, BinningValue::binY, values); +BinningData xData_arb(open, AxisDirection::AxisX, values); +BinningData yData_arb(open, AxisDirection::AxisY, values); // | -PI | -2 | -1 | 1 | 2 | PI | std::vector phiValues = {-std::numbers::pi, -2., -1., 1., 2., std::numbers::pi}; -BinningData phiData_arb(closed, BinningValue::binPhi, phiValues); +BinningData phiData_arb(closed, AxisDirection::AxisPhi, phiValues); // the binnings - arbitrary when switching to binary search - for boundary // sizes >= 50 @@ -80,24 +80,24 @@ double phiDelta = 0.1064; std::vector sstr = {0., 1., 1.5, 2., 3.}; // multiplicative auto xData_sstr_mult = - std::make_unique(open, BinningValue::binX, sstr); + std::make_unique(open, AxisDirection::AxisX, sstr); // | 0 | 1 | 1.5 | 2 | 3 | 4 | 4.5 | 5 | 6 | 7 | 7.5 | 8 | 9 | -BinningData xData_mult(open, BinningValue::binX, 3, 0., 9., +BinningData xData_mult(open, AxisDirection::AxisX, 3, 0., 9., std::move(xData_sstr_mult)); /// additive // | 0 | 1 | 1.5 | 2 | 3 | 4 | 5 | std::vector main_sstr = {0., 3., 4., 5.}; auto xData_sstr_add = - std::make_unique(open, BinningValue::binX, sstr); -BinningData xData_add(open, BinningValue::binX, main_sstr, + std::make_unique(open, AxisDirection::AxisX, sstr); +BinningData xData_add(open, AxisDirection::AxisX, main_sstr, std::move(xData_sstr_add)); -// enum BinningValue { BinningValue::binX, BinningValue::binY, -// BinningValue::binZ, BinningValue::binR, BinningValue::binPhi, -// BinningValue::binRPhi, BinningValue::binH, BinningValue::binEta } +// enum AxisDirection { AxisDirection::AxisX, AxisDirection::AxisY, +// AxisDirection::AxisZ, AxisDirection::AxisR, AxisDirection::AxisPhi, +// AxisDirection::AxisRPhi, AxisDirection::AxisTheta, AxisDirection::AxisEta } // // test the different binning values -BOOST_AUTO_TEST_CASE(BinningData_BinningValue) { +BOOST_AUTO_TEST_CASE(BinningData_AxisDirection) { // the binnings - arbitrary when switching to binary search - for boundary // sizes >= 50 std::vector values_binary; @@ -107,8 +107,8 @@ BOOST_AUTO_TEST_CASE(BinningData_BinningValue) { phiValues_binary.push_back(phiMin + i * phiDelta); } // bin boundaries when switching to binary search - for boundary sizes >= 50 - BinningData xData_arb_binary(open, BinningValue::binX, values_binary); - BinningData phiData_arb_binary(closed, BinningValue::binPhi, + BinningData xData_arb_binary(open, AxisDirection::AxisX, values_binary); + BinningData phiData_arb_binary(closed, AxisDirection::AxisPhi, phiValues_binary); /// x/y/zData /// check the global position requests @@ -170,8 +170,8 @@ BOOST_AUTO_TEST_CASE(BinningData_bins) { phiValues_binary.push_back(phiMin + i * phiDelta); } // bin boundaries when switching to binary search - for boundary sizes >= 50 - BinningData xData_arb_binary(open, BinningValue::binX, values_binary); - BinningData phiData_arb_binary(closed, BinningValue::binPhi, + BinningData xData_arb_binary(open, AxisDirection::AxisX, values_binary); + BinningData phiData_arb_binary(closed, AxisDirection::AxisPhi, phiValues_binary); /// x/y/zData /// check the global position requests @@ -239,8 +239,8 @@ BOOST_AUTO_TEST_CASE(BinningData_inside_outside) { phiValues_binary.push_back(phiMin + i * phiDelta); } // bin boundaries when switching to binary search - for boundary sizes >= 50 - BinningData xData_arb_binary(open, BinningValue::binX, values_binary); - BinningData phiData_arb_binary(closed, BinningValue::binPhi, + BinningData xData_arb_binary(open, AxisDirection::AxisX, values_binary); + BinningData phiData_arb_binary(closed, AxisDirection::AxisPhi, phiValues_binary); // check the global inside BOOST_CHECK_EQUAL(xData_eq.inside(xyzPosition), true); @@ -283,8 +283,8 @@ BOOST_AUTO_TEST_CASE(BinningData_open_close) { phiValues_binary.push_back(phiMin + i * phiDelta); } // bin boundaries when switching to binary search - for boundary sizes >= 50 - BinningData xData_arb_binary(open, BinningValue::binX, values_binary); - BinningData phiData_arb_binary(closed, BinningValue::binPhi, + BinningData xData_arb_binary(open, AxisDirection::AxisX, values_binary); + BinningData phiData_arb_binary(closed, AxisDirection::AxisPhi, phiValues_binary); // open values BOOST_CHECK_EQUAL(xData_eq.searchGlobal(xyzPositionOutside), std::size_t{9}); @@ -336,8 +336,8 @@ BOOST_AUTO_TEST_CASE(BinningData_bincenter) { phiValues_binary.push_back(phiMin + i * phiDelta); } // bin boundaries when switching to binary search - for boundary sizes >= 50 - BinningData xData_arb_binary(open, BinningValue::binX, values_binary); - BinningData phiData_arb_binary(closed, BinningValue::binPhi, + BinningData xData_arb_binary(open, AxisDirection::AxisX, values_binary); + BinningData phiData_arb_binary(closed, AxisDirection::AxisPhi, phiValues_binary); /// check the global position requests // | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | @@ -383,7 +383,7 @@ BOOST_AUTO_TEST_CASE(BinningData_phi_modules) { // n phi modules with phi boundary at -pi/+pi are checked above one module // expands over -pi/+pi const float deltaPhi = 0.1; - BinningData phiData_mod(closed, BinningValue::binPhi, 5, + BinningData phiData_mod(closed, AxisDirection::AxisPhi, 5, -std::numbers::pi + deltaPhi, std::numbers::pi + deltaPhi); diff --git a/Tests/UnitTests/Core/Utilities/GridAccessHelpersTests.cpp b/Tests/UnitTests/Core/Utilities/GridAccessHelpersTests.cpp index 5fbe3b1ffa4..cc310f7e37a 100644 --- a/Tests/UnitTests/Core/Utilities/GridAccessHelpersTests.cpp +++ b/Tests/UnitTests/Core/Utilities/GridAccessHelpersTests.cpp @@ -44,9 +44,9 @@ BOOST_AUTO_TEST_CASE(Grid1DAccess) { // Global access Vector3 gPosition{0.5, 3.5, 6.5}; - std::vector fCast = {Acts::BinningValue::binX}; - std::vector sCast = {Acts::BinningValue::binY}; - std::vector tCast = {Acts::BinningValue::binZ}; + std::vector fCast = {Acts::AxisDirection::AxisX}; + std::vector sCast = {Acts::AxisDirection::AxisY}; + std::vector tCast = {Acts::AxisDirection::AxisZ}; auto fgAccess = GridAccessHelpers::castPosition(gPosition, fCast); auto sgAccess = GridAccessHelpers::castPosition(gPosition, sCast); @@ -57,10 +57,10 @@ BOOST_AUTO_TEST_CASE(Grid1DAccess) { // Can this go into a delegate? auto gsu = std::make_unique< - const Acts::GridAccess::GlobalSubspace>(); + const Acts::GridAccess::GlobalSubspace>(); Acts::GridAccess::GlobalToGridLocal1DimDelegate gsuDelegate; gsuDelegate.connect< - &Acts::GridAccess::GlobalSubspace::toGridLocal>( + &Acts::GridAccess::GlobalSubspace::toGridLocal>( std::move(gsu)); BOOST_CHECK(gsuDelegate.connected()); @@ -88,26 +88,26 @@ BOOST_AUTO_TEST_CASE(Grid2DAccess) { // Global access Vector3 gPosition{0.5, 3.5, 6.5}; - std::vector fCast = {Acts::BinningValue::binX, - Acts::BinningValue::binY}; + std::vector fCast = {Acts::AxisDirection::AxisX, + Acts::AxisDirection::AxisY}; auto fgAccess = GridAccessHelpers::castPosition(gPosition, fCast); BOOST_CHECK_EQUAL(grid.atPosition(fgAccess), 300u); } BOOST_AUTO_TEST_CASE(GlobalToGridLocalTests) { - Acts::GridAccess::GlobalSubspace + Acts::GridAccess::GlobalSubspace gssXY; auto xy = gssXY.toGridLocal(Vector3{1., 2., 3.}); BOOST_CHECK_EQUAL(xy[0], 1.); BOOST_CHECK_EQUAL(xy[1], 2.); - Acts::GridAccess::GlobalSubspace gssZ; + Acts::GridAccess::GlobalSubspace gssZ; auto z = gssZ.toGridLocal(Vector3{1., 2., 3.}); BOOST_CHECK_EQUAL(z[0], 3.); Acts::GridAccess::Affine3Transformed< - Acts::GridAccess::GlobalSubspace> + Acts::GridAccess::GlobalSubspace> gssZT(gssZ, Acts::Transform3{Acts::Transform3::Identity()}.pretranslate( Vector3{0., 0., 100.})); diff --git a/Tests/UnitTests/Core/Utilities/GridAxisGeneratorsTests.cpp b/Tests/UnitTests/Core/Utilities/GridAxisGeneratorsTests.cpp index 4cfb0ea6088..5d865047d28 100644 --- a/Tests/UnitTests/Core/Utilities/GridAxisGeneratorsTests.cpp +++ b/Tests/UnitTests/Core/Utilities/GridAxisGeneratorsTests.cpp @@ -10,7 +10,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Utilities/Axis.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Grid.hpp" #include "Acts/Utilities/GridAxisGenerators.hpp" diff --git a/Tests/UnitTests/Core/Utilities/GridIterationTests.cpp b/Tests/UnitTests/Core/Utilities/GridIterationTests.cpp index 82a92a4be4a..30698c02435 100644 --- a/Tests/UnitTests/Core/Utilities/GridIterationTests.cpp +++ b/Tests/UnitTests/Core/Utilities/GridIterationTests.cpp @@ -8,7 +8,7 @@ #include -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Grid.hpp" #include "Acts/Utilities/GridIterator.hpp" diff --git a/Tests/UnitTests/Core/Utilities/GridTests.cpp b/Tests/UnitTests/Core/Utilities/GridTests.cpp index eceec2e6468..494c406bedc 100644 --- a/Tests/UnitTests/Core/Utilities/GridTests.cpp +++ b/Tests/UnitTests/Core/Utilities/GridTests.cpp @@ -11,7 +11,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Tests/CommonHelpers/FloatComparisons.hpp" #include "Acts/Utilities/Axis.hpp" -#include "Acts/Utilities/AxisFwd.hpp" +#include "Acts/Utilities/AxisDefinitions.hpp" #include "Acts/Utilities/Grid.hpp" #include "Acts/Utilities/detail/grid_helper.hpp" diff --git a/Tests/UnitTests/Examples/Algorithms/Digitization/ModuleClustersTests.cpp b/Tests/UnitTests/Examples/Algorithms/Digitization/ModuleClustersTests.cpp index f2913475b4a..c2e41bd063c 100644 --- a/Tests/UnitTests/Examples/Algorithms/Digitization/ModuleClustersTests.cpp +++ b/Tests/UnitTests/Examples/Algorithms/Digitization/ModuleClustersTests.cpp @@ -47,10 +47,10 @@ DigitizedParameters makeDigitizationParameters(const Vector2 &position, auto testDigitizedParametersWithTwoClusters(bool merge, const Vector2 &firstHit, const Vector2 &secondHit) { BinUtility binUtility; - binUtility += BinUtility{ - BinningData(BinningOption::open, BinningValue::binX, 20, -10.0f, 10.0f)}; - binUtility += BinUtility{ - BinningData(BinningOption::open, BinningValue::binY, 20, -10.0f, 10.0f)}; + binUtility += BinUtility(BinningData( + BinningOption::open, AxisDirection::AxisX, 20, -10.0f, 10.0f)); + binUtility += BinUtility(BinningData( + BinningOption::open, AxisDirection::AxisY, 20, -10.0f, 10.0f)); std::vector boundIndices = {eBoundLoc0, eBoundLoc1}; double nsigma = 1; bool commonCorner = true; diff --git a/Tests/UnitTests/Examples/Io/Json/JsonDigitizationConfigTests.cpp b/Tests/UnitTests/Examples/Io/Json/JsonDigitizationConfigTests.cpp index f7c1db0f496..dfa8978f17c 100644 --- a/Tests/UnitTests/Examples/Io/Json/JsonDigitizationConfigTests.cpp +++ b/Tests/UnitTests/Examples/Io/Json/JsonDigitizationConfigTests.cpp @@ -157,9 +157,9 @@ BOOST_AUTO_TEST_CASE(DigitizationConfigRoundTrip) { Acts::BinUtility segmentation; segmentation += - Acts::BinUtility(336, -8.4, 8.4, Acts::open, Acts::BinningValue::binX); + Acts::BinUtility(336, -8.4, 8.4, Acts::open, Acts::AxisDirection::AxisX); segmentation += - Acts::BinUtility(1280, -36, 36, Acts::open, Acts::BinningValue::binY); + Acts::BinUtility(1280, -36, 36, Acts::open, Acts::AxisDirection::AxisY); gdc.segmentation = segmentation; gdc.threshold = 0.01; diff --git a/Tests/UnitTests/Fatras/Digitization/ChannelizerTests.cpp b/Tests/UnitTests/Fatras/Digitization/ChannelizerTests.cpp index b1d142cc545..72443aa02c4 100644 --- a/Tests/UnitTests/Fatras/Digitization/ChannelizerTests.cpp +++ b/Tests/UnitTests/Fatras/Digitization/ChannelizerTests.cpp @@ -40,9 +40,9 @@ struct Helper { float max = 200_um; int bins = static_cast((max - min) / pitchSize); segmentation = Acts::BinUtility(bins, min, max, Acts::BinningOption::open, - Acts::BinningValue::binX); + Acts::AxisDirection::AxisX); segmentation += Acts::BinUtility(bins, min, max, Acts::BinningOption::open, - Acts::BinningValue::binY); + Acts::AxisDirection::AxisY); } auto channelize(const Acts::Vector3 &pos3, const Acts::Vector3 &dir3) const { diff --git a/Tests/UnitTests/Fatras/Digitization/PlanarSurfaceTestBeds.hpp b/Tests/UnitTests/Fatras/Digitization/PlanarSurfaceTestBeds.hpp index 42327d7e5eb..c7185dab920 100644 --- a/Tests/UnitTests/Fatras/Digitization/PlanarSurfaceTestBeds.hpp +++ b/Tests/UnitTests/Fatras/Digitization/PlanarSurfaceTestBeds.hpp @@ -54,9 +54,9 @@ struct PlanarSurfaceTestBeds { auto rSurface = Acts::Surface::makeShared( Acts::Transform3::Identity(), rectangle); Acts::BinUtility pixelated(15, -xhalf, xhalf, Acts::open, - Acts::BinningValue::binX); + Acts::AxisDirection::AxisX); pixelated += Acts::BinUtility(26, -yhalf, yhalf, Acts::open, - Acts::BinningValue::binY); + Acts::AxisDirection::AxisY); RectangleRandom rRandom(xhalf * rScale, yhalf * rScale); // Cartesian strip test in Trapezoid @@ -68,9 +68,9 @@ struct PlanarSurfaceTestBeds { auto tSurface = Acts::Surface::makeShared( Acts::Transform3::Identity(), trapezoid); Acts::BinUtility stripsX(35, -xhalfmaxy, xhalfmaxy, Acts::open, - Acts::BinningValue::binX); + Acts::AxisDirection::AxisX); stripsX += Acts::BinUtility(1, -yhalf, yhalf, Acts::open, - Acts::BinningValue::binY); + Acts::AxisDirection::AxisY); TrapezoidRandom tRandom(xhalfminy * rScale, xhalfmaxy * rScale, yhalf * rScale); @@ -87,10 +87,10 @@ struct PlanarSurfaceTestBeds { auto dtSurface = Acts::Surface::makeShared( Acts::Transform3::Identity(), discTrapezoid); Acts::BinUtility stripsPhi(1, rmin, rmax, Acts::open, - Acts::BinningValue::binR); + Acts::AxisDirection::AxisR); stripsPhi += Acts::BinUtility(25, std::numbers::pi / 2. - alpha, std::numbers::pi / 2. + alpha, Acts::open, - Acts::BinningValue::binPhi); + Acts::AxisDirection::AxisPhi); TrapezoidRandom dtRandom(xmin * rScale, xmax * rScale, rmin * irScale, ymax * rScale); @@ -100,11 +100,11 @@ struct PlanarSurfaceTestBeds { auto dSurface = Acts::Surface::makeShared( Acts::Transform3::Identity(), discRadial); Acts::BinUtility rphiseg(10, rmin, rmax, Acts::open, - Acts::BinningValue::binR); + Acts::AxisDirection::AxisR); rphiseg += Acts::BinUtility(20, (std::numbers::pi / 2. - std::numbers::pi / 4.), (std::numbers::pi / 2. + std::numbers::pi / 4.), - Acts::open, Acts::BinningValue::binPhi); + Acts::open, Acts::AxisDirection::AxisPhi); DiscRandom dRandom( rmin * irScale, rmax * rScale, @@ -132,9 +132,9 @@ struct PlanarSurfaceTestBeds { }); Acts::BinUtility stripsPhiA(1, rmin, rmax, Acts::open, - Acts::BinningValue::binR); + Acts::AxisDirection::AxisR); stripsPhiA += Acts::BinUtility(12, phimin, phimax, Acts::open, - Acts::BinningValue::binPhi); + Acts::AxisDirection::AxisPhi); AnnulusRandom aRandom(rmin * irScale, rmax * rScale, phimin * rScale, phimax * rScale, aorigin.x(), aorigin.y()); diff --git a/Tests/UnitTests/Fatras/Digitization/SegmentizerTests.cpp b/Tests/UnitTests/Fatras/Digitization/SegmentizerTests.cpp index ad74a9024d1..9afa5b0d938 100644 --- a/Tests/UnitTests/Fatras/Digitization/SegmentizerTests.cpp +++ b/Tests/UnitTests/Fatras/Digitization/SegmentizerTests.cpp @@ -47,9 +47,10 @@ BOOST_AUTO_TEST_CASE(SegmentizerCartesian) { Acts::Transform3::Identity(), rectangleBounds); // The segmentation - Acts::BinUtility pixelated(20, -1., 1., Acts::open, Acts::BinningValue::binX); + Acts::BinUtility pixelated(20, -1., 1., Acts::open, + Acts::AxisDirection::AxisX); pixelated += - Acts::BinUtility(20, -1., 1., Acts::open, Acts::BinningValue::binY); + Acts::BinUtility(20, -1., 1., Acts::open, Acts::AxisDirection::AxisY); Segmentizer cl; @@ -92,9 +93,9 @@ BOOST_AUTO_TEST_CASE(SegmentizerPolarRadial) { Acts::Transform3::Identity(), radialBounds); // The segmentation - Acts::BinUtility strips(2, 5., 10., Acts::open, Acts::BinningValue::binR); + Acts::BinUtility strips(2, 5., 10., Acts::open, Acts::AxisDirection::AxisR); strips += Acts::BinUtility(250, -0.25, 0.25, Acts::open, - Acts::BinningValue::binPhi); + Acts::AxisDirection::AxisPhi); Segmentizer cl; @@ -169,8 +170,10 @@ BOOST_DATA_TEST_CASE( } // 1 - write the grid grid.open("Segmentizer" + name + "Grid.csv"); - if (segmentation.binningData()[0].binvalue == Acts::BinningValue::binX && - segmentation.binningData()[1].binvalue == Acts::BinningValue::binY) { + if (segmentation.binningData()[0].binvalue == + Acts::AxisDirection::AxisX && + segmentation.binningData()[1].binvalue == + Acts::AxisDirection::AxisY) { double bxmin = segmentation.binningData()[0].min; double bxmax = segmentation.binningData()[0].max; double bymin = segmentation.binningData()[1].min; @@ -184,9 +187,9 @@ BOOST_DATA_TEST_CASE( csvHelper.writeLine(grid, {bxmin, yval}, {bxmax, yval}); } } else if (segmentation.binningData()[0].binvalue == - Acts::BinningValue::binR && + Acts::AxisDirection::AxisR && segmentation.binningData()[1].binvalue == - Acts::BinningValue::binPhi) { + Acts::AxisDirection::AxisPhi) { double brmin = segmentation.binningData()[0].min; double brmax = segmentation.binningData()[0].max; double bphimin = segmentation.binningData()[1].min; diff --git a/Tests/UnitTests/Plugins/ActSVG/DetectorVolumeSvgConverterTests.cpp b/Tests/UnitTests/Plugins/ActSVG/DetectorVolumeSvgConverterTests.cpp index c1ed95854f8..b3ba0f4f5fc 100644 --- a/Tests/UnitTests/Plugins/ActSVG/DetectorVolumeSvgConverterTests.cpp +++ b/Tests/UnitTests/Plugins/ActSVG/DetectorVolumeSvgConverterTests.cpp @@ -150,7 +150,7 @@ BOOST_AUTO_TEST_CASE(EndcapVolumeWithSurfaces) { lsConfig.auxiliary = "*** Endcap with 22 surfaces ***"; lsConfig.surfacesProvider = endcapSurfaces; lsConfig.binnings = {Acts::Experimental::ProtoBinning( - Acts::BinningValue::binPhi, Acts::AxisBoundaryType::Closed, + Acts::AxisDirection::AxisPhi, Acts::AxisBoundaryType::Closed, -std::numbers::pi, std::numbers::pi, 22u, 1u)}; auto layerBuilder = @@ -220,11 +220,11 @@ BOOST_AUTO_TEST_CASE(BarrelVolumeWithSurfaces) { lsConfig.auxiliary = "*** Barrel with 448 surfaces ***"; lsConfig.surfacesProvider = barrelSurfaces; lsConfig.binnings = { - Acts::Experimental::ProtoBinning{Acts::BinningValue::binZ, + Acts::Experimental::ProtoBinning{Acts::AxisDirection::AxisZ, Acts::AxisBoundaryType::Bound, -480., 480., 14u, 1u}, Acts::Experimental::ProtoBinning( - Acts::BinningValue::binPhi, Acts::AxisBoundaryType::Closed, + Acts::AxisDirection::AxisPhi, Acts::AxisBoundaryType::Closed, -std::numbers::pi, std::numbers::pi, 32u, 1u)}; auto barrelBuilder = diff --git a/Tests/UnitTests/Plugins/ActSVG/GridSvgConverterTests.cpp b/Tests/UnitTests/Plugins/ActSVG/GridSvgConverterTests.cpp index 2fc643b6a53..16e49c7356e 100644 --- a/Tests/UnitTests/Plugins/ActSVG/GridSvgConverterTests.cpp +++ b/Tests/UnitTests/Plugins/ActSVG/GridSvgConverterTests.cpp @@ -58,7 +58,7 @@ BOOST_AUTO_TEST_CASE(BoundGridXY) { Svg::GridConverter::Options cOptions; auto pGrid = Svg::GridConverter::convert( - gridXY, {BinningValue::binX, BinningValue::binY}, cOptions); + gridXY, {AxisDirection::AxisX, AxisDirection::AxisY}, cOptions); BOOST_CHECK_EQUAL(pGrid._type, actsvg::proto::grid::type::e_x_y); // Labelling the grid tiles @@ -110,8 +110,10 @@ BOOST_AUTO_TEST_CASE(BoundGridXY) { std::vector captionText = { "Binning schema for global and local bins: ", - "- axis 0 : AxisBoundaryType::Bound, (-200., 200, 4), BinningValue::binX", - "- axis 1 : AxisBoundaryType::Bound, (-200, 200, 6), BinningValue::binY"}; + "- axis 0 : AxisBoundaryType::Bound, (-200., 200, 4), " + "AxisDirection::AxisX", + "- axis 1 : AxisBoundaryType::Bound, (-200, 200, 6), " + "AxisDirection::AxisY"}; auto caption = actsvg::draw::text("caption", {-180, -220}, captionText); @@ -135,7 +137,7 @@ BOOST_AUTO_TEST_CASE(OpenGridXY) { Svg::GridConverter::Options cOptions; auto pGrid = Svg::GridConverter::convert( - gridXY, {BinningValue::binX, BinningValue::binY}, cOptions); + gridXY, {AxisDirection::AxisX, AxisDirection::AxisY}, cOptions); BOOST_CHECK_EQUAL(pGrid._type, actsvg::proto::grid::type::e_x_y); // Labelling the grid tiles @@ -186,8 +188,10 @@ BOOST_AUTO_TEST_CASE(OpenGridXY) { std::vector captionText = { "Binning schema for global and local bins: ", - "- axis 0 : AxisBoundaryType::Open, (-200., 200, 4), BinningValue::binX", - "- axis 1 : AxisBoundaryType::Open, (-200, 200, 6), BinningValue::binY"}; + "- axis 0 : AxisBoundaryType::Open, (-200., 200, 4), " + "AxisDirection::AxisX", + "- axis 1 : AxisBoundaryType::Open, (-200, 200, 6), " + "AxisDirection::AxisY"}; auto caption = actsvg::draw::text("caption", {-180, -220}, captionText); auto oGrid = actsvg::display::grid("OpenGridXY", pGrid); @@ -212,7 +216,7 @@ BOOST_AUTO_TEST_CASE(ClosedCylinderGridZPhi) { Svg::GridConverter::Options cOptions; auto pGrid = Svg::GridConverter::convert( - gridZPhi, {BinningValue::binZ, BinningValue::binPhi}, cOptions); + gridZPhi, {AxisDirection::AxisZ, AxisDirection::AxisPhi}, cOptions); BOOST_CHECK_EQUAL(pGrid._type, actsvg::proto::grid::type::e_z_phi); pGrid._reference_r = 80.; @@ -264,8 +268,10 @@ BOOST_AUTO_TEST_CASE(ClosedCylinderGridZPhi) { std::vector captionText = { "Binning schema for global and local bins: ", - "- axis 0 : AxisBoundaryType::Bound, (-200., 200, 3), BinningValue::binZ", - "- axis 1 : AxisBoundaryType::Closed, (-PI, PI, 6), BinningValue::binPhi", + "- axis 0 : AxisBoundaryType::Bound, (-200., 200, 3), " + "AxisDirection::AxisZ", + "- axis 1 : AxisBoundaryType::Closed, (-PI, PI, 6), " + "AxisDirection::AxisPhi", "- draw reference radius set to 80"}; auto caption = actsvg::draw::text("caption", {-180, -270}, captionText); @@ -291,7 +297,7 @@ BOOST_AUTO_TEST_CASE(ClosedDiscGridRPhi) { Svg::GridConverter::Options cOptions; auto pGrid = Svg::GridConverter::convert( - gridRPhi, {BinningValue::binR, BinningValue::binPhi}, cOptions); + gridRPhi, {AxisDirection::AxisR, AxisDirection::AxisPhi}, cOptions); BOOST_CHECK_EQUAL(pGrid._type, actsvg::proto::grid::type::e_r_phi); // Labelling the grid tiles @@ -347,7 +353,7 @@ BOOST_AUTO_TEST_CASE(ClosedDiscGridRPhi) { std::vector captionText = { "Binning schema for global and local bins: ", - "- axis 0 : AxisBoundaryType::Bound, (100., 400, 3), binR", + "- axis 0 : AxisBoundaryType::Bound, (100., 400, 3), AxisR", "- axis 1 : AxisBoundaryType::Closed, (-PI, PI, 4), " "binPhi"}; diff --git a/Tests/UnitTests/Plugins/ActSVG/IndexedSurfacesSvgConverterTests.cpp b/Tests/UnitTests/Plugins/ActSVG/IndexedSurfacesSvgConverterTests.cpp index f7f7e247bbb..21066266404 100644 --- a/Tests/UnitTests/Plugins/ActSVG/IndexedSurfacesSvgConverterTests.cpp +++ b/Tests/UnitTests/Plugins/ActSVG/IndexedSurfacesSvgConverterTests.cpp @@ -76,7 +76,7 @@ BOOST_AUTO_TEST_CASE(RingDisc1D) { 55., 0., 2., 22u); IndexedSurfacesGenerator - irSurfaces{rSurfaces, {}, {BinningValue::binPhi}}; + irSurfaces{rSurfaces, {}, {AxisDirection::AxisPhi}}; GridAxisGenerators::EqClosed aGenerator{{-std::numbers::pi, std::numbers::pi}, 44u}; @@ -102,7 +102,7 @@ BOOST_AUTO_TEST_CASE(RingDisc1DWithSupport) { rSurfaces.push_back(dSurface.get()); IndexedSurfacesGenerator - irSurfaces{rSurfaces, {rSurfaces.size() - 1u}, {BinningValue::binPhi}}; + irSurfaces{rSurfaces, {rSurfaces.size() - 1u}, {AxisDirection::AxisPhi}}; GridAxisGenerators::EqClosed aGenerator{{-std::numbers::pi, std::numbers::pi}, 44u}; @@ -129,7 +129,7 @@ BOOST_AUTO_TEST_CASE(RingDisc2D) { rSurfaces.insert(rSurfaces.end(), rSurfacesR1.begin(), rSurfacesR1.end()); IndexedSurfacesGenerator - irSurfaces{rSurfaces, {}, {BinningValue::binR, BinningValue::binPhi}}; + irSurfaces{rSurfaces, {}, {AxisDirection::AxisR, AxisDirection::AxisPhi}}; GridAxisGenerators::VarBoundEqClosed aGenerator{ {24., 74., 110.}, {-std::numbers::pi, std::numbers::pi}, 44u}; @@ -161,7 +161,7 @@ BOOST_AUTO_TEST_CASE(RingDisc2DFine) { rSurfaces.insert(rSurfaces.end(), rSurfacesR2.begin(), rSurfacesR2.end()); IndexedSurfacesGenerator - irSurfaces{rSurfaces, {}, {BinningValue::binR, BinningValue::binPhi}}; + irSurfaces{rSurfaces, {}, {AxisDirection::AxisR, AxisDirection::AxisPhi}}; GridAxisGenerators::EqBoundEqClosed aGenerator{ {24., 152}, 8u, {-std::numbers::pi, std::numbers::pi}, 88u}; @@ -193,8 +193,10 @@ BOOST_AUTO_TEST_CASE(RingDisc2DFineExpanded) { rSurfaces.insert(rSurfaces.end(), rSurfacesR2.begin(), rSurfacesR2.end()); IndexedSurfacesGenerator - irSurfaces{ - rSurfaces, {}, {BinningValue::binR, BinningValue::binPhi}, {2u, 4u}}; + irSurfaces{rSurfaces, + {}, + {AxisDirection::AxisR, AxisDirection::AxisPhi}, + {2u, 4u}}; GridAxisGenerators::EqBoundEqClosed aGenerator{ {24., 152}, 8u, {-std::numbers::pi, std::numbers::pi}, 88u}; @@ -215,8 +217,10 @@ BOOST_AUTO_TEST_CASE(Cylinder2D) { 116., 3., 2., {52, 14}); IndexedSurfacesGenerator - icSurfaces{ - surfaces, {}, {BinningValue::binZ, BinningValue::binPhi}, {1u, 1u}}; + icSurfaces{surfaces, + {}, + {AxisDirection::AxisZ, AxisDirection::AxisPhi}, + {1u, 1u}}; GridAxisGenerators::EqBoundEqClosed aGenerator{ {-500., 500}, 28, {-std::numbers::pi, std::numbers::pi}, 52u}; diff --git a/Tests/UnitTests/Plugins/DD4hep/DD4hepCylinderLayerStructureTests.cpp b/Tests/UnitTests/Plugins/DD4hep/DD4hepCylinderLayerStructureTests.cpp index 994ac8bb927..0bc4e5c97c0 100644 --- a/Tests/UnitTests/Plugins/DD4hep/DD4hepCylinderLayerStructureTests.cpp +++ b/Tests/UnitTests/Plugins/DD4hep/DD4hepCylinderLayerStructureTests.cpp @@ -295,16 +295,16 @@ BOOST_AUTO_TEST_CASE(DD4hepPluginCylinderLayerStructureAutoRange) { lsOptions.name = "AutoRangeLayer"; auto extent = Acts::Extent(); lsOptions.extent = extent; - lsOptions.extentConstraints = {Acts::BinningValue::binZ, - Acts::BinningValue::binR}; + lsOptions.extentConstraints = {Acts::AxisDirection::AxisZ, + Acts::AxisDirection::AxisR}; lsOptions.logLevel = Acts::Logging::VERBOSE; auto [barrelInternalsBuilder, barrelExt] = barrelStructure.builder(dd4hepStore, tContext, world, lsOptions); BOOST_CHECK(barrelExt != std::nullopt); - BOOST_CHECK(barrelExt.value().constrains(Acts::BinningValue::binZ)); - BOOST_CHECK(barrelExt.value().constrains(Acts::BinningValue::binR)); + BOOST_CHECK(barrelExt.value().constrains(Acts::AxisDirection::AxisZ)); + BOOST_CHECK(barrelExt.value().constrains(Acts::AxisDirection::AxisR)); } BOOST_AUTO_TEST_SUITE_END() diff --git a/Tests/UnitTests/Plugins/Detray/DetrayMaterialConverterTests.cpp b/Tests/UnitTests/Plugins/Detray/DetrayMaterialConverterTests.cpp index 28fe7571b54..f5cb3b2ae82 100644 --- a/Tests/UnitTests/Plugins/Detray/DetrayMaterialConverterTests.cpp +++ b/Tests/UnitTests/Plugins/Detray/DetrayMaterialConverterTests.cpp @@ -92,7 +92,7 @@ BOOST_AUTO_TEST_CASE(DetrayHomogeneousMaterialConversion) { BOOST_AUTO_TEST_CASE(DetrayBinnedMaterialConversionX) { // Create a binned material in 4 bins in x direction Acts::BinUtility binUtility(4u, -2., 2., Acts::BinningOption::open, - Acts::BinningValue::binX); + Acts::AxisDirection::AxisX); std::vector materialSlabs = { materialSlab12345, materialSlab678910, materialSlab54321, @@ -152,7 +152,7 @@ BOOST_AUTO_TEST_CASE(DetrayBinnedMaterialConversionX) { BOOST_AUTO_TEST_CASE(DetrayBinnedMaterialConversionY) { // Create a binned material in 4 bins in y direction Acts::BinUtility binUtility(4u, -2., 2., Acts::BinningOption::open, - Acts::BinningValue::binY); + Acts::AxisDirection::AxisY); std::vector materialSlabs = { materialSlab12345, materialSlab678910, materialSlab54321, @@ -212,9 +212,9 @@ BOOST_AUTO_TEST_CASE(DetrayBinnedMaterialConversionY) { BOOST_AUTO_TEST_CASE(DetrayBinnedMaterialConversionXY) { // Create a binned material in 2 x2 bins in x-y direction Acts::BinUtility binUtility(2u, -1., 1., Acts::BinningOption::open, - Acts::BinningValue::binX); + Acts::AxisDirection::AxisX); binUtility += Acts::BinUtility(2u, -2., 2., Acts::BinningOption::open, - Acts::BinningValue::binY); + Acts::AxisDirection::AxisY); std::vector materialSlabs0 = {materialSlab12345, materialSlab678910}; @@ -269,7 +269,7 @@ BOOST_AUTO_TEST_CASE(DetrayBinnedMaterialConversionR) { // Create a binned material in 4 bins (irregularly) in r direction std::vector binEdges = {0., 5., 10., 15., 20.}; Acts::BinUtility binUtility(binEdges, Acts::BinningOption::open, - Acts::BinningValue::binR); + Acts::AxisDirection::AxisR); std::vector materialSlabs = { materialSlab12345, materialSlab678910, materialSlab54321, @@ -308,10 +308,10 @@ BOOST_AUTO_TEST_CASE(DetrayBinnedMaterialConversionRPhi) { // Create a binned material in 2 bins - irregularly in r, 2 bins in phi std::vector binEdges = {0., 5., 20.}; Acts::BinUtility binUtility(binEdges, Acts::BinningOption::open, - Acts::BinningValue::binR); - binUtility += - Acts::BinUtility(2u, -std::numbers::pi, std::numbers::pi, - Acts::BinningOption::closed, Acts::BinningValue::binPhi); + Acts::AxisDirection::AxisR); + binUtility += Acts::BinUtility(2u, -std::numbers::pi, std::numbers::pi, + Acts::BinningOption::closed, + Acts::AxisDirection::AxisPhi); std::vector materialSlabs0 = {materialSlab12345, materialSlab678910}; @@ -347,7 +347,7 @@ BOOST_AUTO_TEST_CASE(DetrayBinnedMaterialConversionZ) { // Create a binned material in 4 bins in x direction std::vector binEdges = {-20, 0, 25, 50, 100}; Acts::BinUtility binUtility(binEdges, Acts::BinningOption::open, - Acts::BinningValue::binZ); + Acts::AxisDirection::AxisZ); std::vector materialSlabs = { materialSlab12345, materialSlab678910, materialSlab54321, @@ -386,10 +386,10 @@ BOOST_AUTO_TEST_CASE(DetrayBinnedMaterialConversionZ) { BOOST_AUTO_TEST_CASE(DetrayBinnedMaterialConversionZPhi) { // Create a binned material in 2 x2 bins in x-y direction Acts::BinUtility binUtility(2u, -1., 1., Acts::BinningOption::open, - Acts::BinningValue::binZ); - binUtility += - Acts::BinUtility(2u, -std::numbers::pi, std::numbers::pi, - Acts::BinningOption::closed, Acts::BinningValue::binPhi); + Acts::AxisDirection::AxisZ); + binUtility += Acts::BinUtility(2u, -std::numbers::pi, std::numbers::pi, + Acts::BinningOption::closed, + Acts::AxisDirection::AxisPhi); std::vector materialSlabs0 = {materialSlab12345, materialSlab678910}; @@ -418,9 +418,9 @@ BOOST_AUTO_TEST_CASE(DetrayBinnedMaterialConversionZPhi) { BOOST_AUTO_TEST_CASE(DetrayBinnedMaterialConversionInvalid) { // Create a binned material in 4 bins in x direction Acts::BinUtility binUtility(2u, -1., 1., Acts::BinningOption::open, - Acts::BinningValue::binR); + Acts::AxisDirection::AxisR); binUtility += Acts::BinUtility(2u, -2., 2., Acts::BinningOption::open, - Acts::BinningValue::binEta); + Acts::AxisDirection::AxisEta); std::vector materialSlabs0 = {materialSlab12345, materialSlab678910}; diff --git a/Tests/UnitTests/Plugins/Geant4/Geant4SurfaceProviderTests.cpp b/Tests/UnitTests/Plugins/Geant4/Geant4SurfaceProviderTests.cpp index 7508fe9a148..e1846e108c7 100644 --- a/Tests/UnitTests/Plugins/Geant4/Geant4SurfaceProviderTests.cpp +++ b/Tests/UnitTests/Plugins/Geant4/Geant4SurfaceProviderTests.cpp @@ -32,17 +32,17 @@ /// @brief Convert Acts binning value to Geant4 axis /// as Geant4 uses a different axis convention /// @param bv the Acts binning value -EAxis binToGeant4Axis(const Acts::BinningValue& bv) { +EAxis binToGeant4Axis(const Acts::AxisDirection& bv) { switch (bv) { - case Acts::BinningValue::binX: + case Acts::AxisDirection::AxisX: return EAxis::kXAxis; - case Acts::BinningValue::binY: + case Acts::AxisDirection::AxisY: return EAxis::kYAxis; - case Acts::BinningValue::binZ: + case Acts::AxisDirection::AxisZ: return EAxis::kZAxis; - case Acts::BinningValue::binR: + case Acts::AxisDirection::AxisR: return EAxis::kRho; - case Acts::BinningValue::binPhi: + case Acts::AxisDirection::AxisPhi: return EAxis::kPhi; default: throw std::invalid_argument( @@ -225,7 +225,7 @@ BOOST_AUTO_TEST_CASE(Geant4SurfaceProviderRanges) { auto kdt1DOpt = Acts::Experimental::Geant4SurfaceProvider<1>::kdtOptions(); kdt1DOpt.range = Acts::RangeXD<1, double>(); kdt1DOpt.range[0].set(8, 12); - kdt1DOpt.binningValues = {Acts::BinningValue::binZ}; + kdt1DOpt.binningValues = {Acts::AxisDirection::AxisZ}; auto sp1D = std::make_shared>( sp1DCfg, kdt1DOpt); @@ -260,7 +260,7 @@ BOOST_AUTO_TEST_CASE(Geant4SurfaceProviderRanges) { kdt2DOpt.range = Acts::RangeXD<2, double>(); kdt2DOpt.range[0].set(8, 12); kdt2DOpt.range[1].set(armOffset - 5, armOffset + 100); - kdt2DOpt.binningValues = {Acts::BinningValue::binZ}; + kdt2DOpt.binningValues = {Acts::AxisDirection::AxisZ}; auto sp2D = std::make_shared>( sp2DCfg, kdt2DOpt); @@ -289,8 +289,8 @@ BOOST_AUTO_TEST_CASE(Geant4SurfaceProviderRanges) { std::map> ranges; std::array g4Axes{0}; - for (auto& bv : {Acts::BinningValue::binX, Acts::BinningValue::binY, - Acts::BinningValue::binZ}) { + for (auto& bv : {Acts::AxisDirection::AxisX, Acts::AxisDirection::AxisY, + Acts::AxisDirection::AxisZ}) { g4Axes[toUnderlying(bv)] = binToGeant4Axis(bv); } @@ -390,7 +390,7 @@ BOOST_AUTO_TEST_CASE(Geant4RectangleFromGDML) { auto kdt1DOpt = Acts::Experimental::Geant4SurfaceProvider<1>::kdtOptions(); kdt1DOpt.range = Acts::RangeXD<1, double>(); kdt1DOpt.range[0].set(-100, 100); - kdt1DOpt.binningValues = {Acts::BinningValue::binZ}; + kdt1DOpt.binningValues = {Acts::AxisDirection::AxisZ}; auto tContext = Acts::GeometryContext(); diff --git a/Tests/UnitTests/Plugins/Json/DetectorJsonConverterTests.cpp b/Tests/UnitTests/Plugins/Json/DetectorJsonConverterTests.cpp index 7195c38eb9a..9a9cbcccb67 100644 --- a/Tests/UnitTests/Plugins/Json/DetectorJsonConverterTests.cpp +++ b/Tests/UnitTests/Plugins/Json/DetectorJsonConverterTests.cpp @@ -169,7 +169,7 @@ BOOST_AUTO_TEST_CASE(BeamPipeEndcapBarrelDetector) { lsConfig.auxiliary = "*** Endcap with 22 surfaces ***"; lsConfig.surfacesProvider = endcapSurfaces; lsConfig.binnings = {Acts::Experimental::ProtoBinning( - Acts::BinningValue::binPhi, Acts::AxisBoundaryType::Closed, + Acts::AxisDirection::AxisPhi, Acts::AxisBoundaryType::Closed, -std::numbers::pi, std::numbers::pi, 22u, 1u)}; auto layerBuilder = @@ -231,11 +231,11 @@ BOOST_AUTO_TEST_CASE(BeamPipeEndcapBarrelDetector) { lsConfig.auxiliary = "*** Barrel with 448 surfaces ***"; lsConfig.surfacesProvider = barrelSurfaces; lsConfig.binnings = { - Acts::Experimental::ProtoBinning{Acts::BinningValue::binZ, + Acts::Experimental::ProtoBinning{Acts::AxisDirection::AxisZ, Acts::AxisBoundaryType::Bound, -480., 480., 14u, 1u}, Acts::Experimental::ProtoBinning( - Acts::BinningValue::binPhi, Acts::AxisBoundaryType::Closed, + Acts::AxisDirection::AxisPhi, Acts::AxisBoundaryType::Closed, -std::numbers::pi, std::numbers::pi, 32u, 1u)}; auto barrelBuilder = @@ -280,7 +280,7 @@ BOOST_AUTO_TEST_CASE(BeamPipeEndcapBarrelDetector) { // Build the combined barrel Acts::Experimental::CylindricalContainerBuilder::Config ccBarrelBuilderCfg; ccBarrelBuilderCfg.builders = {ivBuilder, dvBuilder, ovBuilder}; - ccBarrelBuilderCfg.binning = {Acts::BinningValue::binR}; + ccBarrelBuilderCfg.binning = {Acts::AxisDirection::AxisR}; auto ccBarrelBuilder = std::make_shared( @@ -291,7 +291,7 @@ BOOST_AUTO_TEST_CASE(BeamPipeEndcapBarrelDetector) { Acts::Experimental::CylindricalContainerBuilder::Config ccBarrelEcBuilderCfg; ccBarrelEcBuilderCfg.builders = {endcapBuilders[0u], ccBarrelBuilder, endcapBuilders[1u]}; - ccBarrelEcBuilderCfg.binning = {Acts::BinningValue::binZ}; + ccBarrelEcBuilderCfg.binning = {Acts::AxisDirection::AxisZ}; auto ccBarrelEndcapBuilder = std::make_shared( @@ -318,7 +318,7 @@ BOOST_AUTO_TEST_CASE(BeamPipeEndcapBarrelDetector) { // Full detector Acts::Experimental::CylindricalContainerBuilder::Config detCompBuilderCfg; detCompBuilderCfg.builders = {bpBuilder, ccBarrelEndcapBuilder}; - detCompBuilderCfg.binning = {Acts::BinningValue::binR}; + detCompBuilderCfg.binning = {Acts::AxisDirection::AxisR}; auto detCompBuilder = std::make_shared( diff --git a/Tests/UnitTests/Plugins/Json/DetectorVolumeFinderJsonConverterTests.cpp b/Tests/UnitTests/Plugins/Json/DetectorVolumeFinderJsonConverterTests.cpp index 1d4aca927d9..88cfc784059 100644 --- a/Tests/UnitTests/Plugins/Json/DetectorVolumeFinderJsonConverterTests.cpp +++ b/Tests/UnitTests/Plugins/Json/DetectorVolumeFinderJsonConverterTests.cpp @@ -51,8 +51,8 @@ BOOST_AUTO_TEST_CASE(RzVolumes) { grid.atPosition(p22) = 22u; grid.atPosition(p23) = 23u; - auto casts = std::array{Acts::BinningValue::binZ, - Acts::BinningValue::binR}; + auto casts = std::array{Acts::AxisDirection::AxisZ, + Acts::AxisDirection::AxisR}; using IndexedDetectorVolumesImpl = Acts::Experimental::IndexedGridNavigation< Acts::Experimental::IExternalNavigation, GridType, diff --git a/Tests/UnitTests/Plugins/Json/DetectorVolumeJsonConverterTests.cpp b/Tests/UnitTests/Plugins/Json/DetectorVolumeJsonConverterTests.cpp index b1701f06128..3713cc46f90 100644 --- a/Tests/UnitTests/Plugins/Json/DetectorVolumeJsonConverterTests.cpp +++ b/Tests/UnitTests/Plugins/Json/DetectorVolumeJsonConverterTests.cpp @@ -149,7 +149,7 @@ BOOST_AUTO_TEST_CASE(EndcapVolumeWithSurfaces) { lsConfig.auxiliary = "*** Endcap with 22 surfaces ***"; lsConfig.surfacesProvider = endcapSurfaces; lsConfig.binnings = {Acts::Experimental::ProtoBinning( - Acts::BinningValue::binPhi, Acts::AxisBoundaryType::Closed, + Acts::AxisDirection::AxisPhi, Acts::AxisBoundaryType::Closed, -std::numbers::pi, std::numbers::pi, 22u, 1u)}; auto layerBuilder = @@ -228,11 +228,11 @@ BOOST_AUTO_TEST_CASE(BarrelVolumeWithSurfaces) { lsConfig.auxiliary = "*** Barrel with 448 surfaces ***"; lsConfig.surfacesProvider = barrelSurfaces; lsConfig.binnings = { - Acts::Experimental::ProtoBinning{Acts::BinningValue::binZ, + Acts::Experimental::ProtoBinning{Acts::AxisDirection::AxisZ, Acts::AxisBoundaryType::Bound, -480., 480., 14u, 1u}, Acts::Experimental::ProtoBinning( - Acts::BinningValue::binPhi, Acts::AxisBoundaryType::Closed, + Acts::AxisDirection::AxisPhi, Acts::AxisBoundaryType::Closed, -std::numbers::pi, std::numbers::pi, 32u, 1u)}; auto barrelBuilder = diff --git a/Tests/UnitTests/Plugins/Json/EqualityHelpers.hpp b/Tests/UnitTests/Plugins/Json/EqualityHelpers.hpp index 1544941002d..1a8286aa05c 100644 --- a/Tests/UnitTests/Plugins/Json/EqualityHelpers.hpp +++ b/Tests/UnitTests/Plugins/Json/EqualityHelpers.hpp @@ -91,7 +91,7 @@ inline static bool isEqual(const Acts::Extent& ea, const Acts::Extent& eb, double tolerance = 0.) { bool equalConstrains = true; bool equalRange = true; - for (auto& bVal : allBinningValues()) { + for (auto& bVal : allAxisDirections()) { equalConstrains = equalConstrains && (ea.constrains(bVal) == eb.constrains(bVal)); BOOST_CHECK(equalConstrains); diff --git a/Tests/UnitTests/Plugins/Json/ExtentJsonConverterTests.cpp b/Tests/UnitTests/Plugins/Json/ExtentJsonConverterTests.cpp index 3fc16ad0ccf..7c1884d5a3a 100644 --- a/Tests/UnitTests/Plugins/Json/ExtentJsonConverterTests.cpp +++ b/Tests/UnitTests/Plugins/Json/ExtentJsonConverterTests.cpp @@ -22,8 +22,8 @@ BOOST_AUTO_TEST_SUITE(ExtentJsonConverter) BOOST_AUTO_TEST_CASE(ExtentRoundtripTests) { Extent e; - e.set(BinningValue::binR, 0, 200); - e.set(BinningValue::binZ, -50, 50); + e.set(AxisDirection::AxisR, 0, 200); + e.set(AxisDirection::AxisZ, -50, 50); nlohmann::json j; j["extent"] = e; @@ -32,13 +32,13 @@ BOOST_AUTO_TEST_CASE(ExtentRoundtripTests) { Extent eIn = j["extent"]; - CHECK_CLOSE_ABS(eIn.min(BinningValue::binR), e.min(BinningValue::binR), + CHECK_CLOSE_ABS(eIn.min(AxisDirection::AxisR), e.min(AxisDirection::AxisR), 10e-5); - CHECK_CLOSE_ABS(eIn.max(BinningValue::binR), e.max(BinningValue::binR), + CHECK_CLOSE_ABS(eIn.max(AxisDirection::AxisR), e.max(AxisDirection::AxisR), 10e-5); - CHECK_CLOSE_ABS(eIn.min(BinningValue::binZ), e.min(BinningValue::binZ), + CHECK_CLOSE_ABS(eIn.min(AxisDirection::AxisZ), e.min(AxisDirection::AxisZ), 10e-5); - CHECK_CLOSE_ABS(eIn.max(BinningValue::binZ), e.max(BinningValue::binZ), + CHECK_CLOSE_ABS(eIn.max(AxisDirection::AxisZ), e.max(AxisDirection::AxisZ), 10e-5); } diff --git a/Tests/UnitTests/Plugins/Json/GridJsonConverterTests.cpp b/Tests/UnitTests/Plugins/Json/GridJsonConverterTests.cpp index cac514a18ac..98c0c731021 100644 --- a/Tests/UnitTests/Plugins/Json/GridJsonConverterTests.cpp +++ b/Tests/UnitTests/Plugins/Json/GridJsonConverterTests.cpp @@ -363,12 +363,13 @@ void checkGlobalSubspaceTuple(const SubspactTuple& sstuple) { BOOST_AUTO_TEST_CASE(GlobalSubSpaceTests1D) { // One dimensional sub spaces - const std::tuple, - Acts::GridAccess::GlobalSubspace, - Acts::GridAccess::GlobalSubspace, - Acts::GridAccess::GlobalSubspace, - Acts::GridAccess::GlobalSubspace, - Acts::GridAccess::GlobalSubspace> + const std::tuple< + Acts::GridAccess::GlobalSubspace, + Acts::GridAccess::GlobalSubspace, + Acts::GridAccess::GlobalSubspace, + Acts::GridAccess::GlobalSubspace, + Acts::GridAccess::GlobalSubspace, + Acts::GridAccess::GlobalSubspace> sspace1D; // Check the tuple for 1D @@ -377,26 +378,27 @@ BOOST_AUTO_TEST_CASE(GlobalSubSpaceTests1D) { BOOST_AUTO_TEST_CASE(GlobalSubSpaceTests2D) { // Two dimensional sub spaces - const std::tuple, - Acts::GridAccess::GlobalSubspace, - Acts::GridAccess::GlobalSubspace, - Acts::GridAccess::GlobalSubspace, - Acts::GridAccess::GlobalSubspace, - Acts::GridAccess::GlobalSubspace, - Acts::GridAccess::GlobalSubspace, - Acts::GridAccess::GlobalSubspace, - Acts::GridAccess::GlobalSubspace, - Acts::GridAccess::GlobalSubspace> + const std::tuple< + Acts::GridAccess::GlobalSubspace, + Acts::GridAccess::GlobalSubspace, + Acts::GridAccess::GlobalSubspace, + Acts::GridAccess::GlobalSubspace, + Acts::GridAccess::GlobalSubspace, + Acts::GridAccess::GlobalSubspace, + Acts::GridAccess::GlobalSubspace, + Acts::GridAccess::GlobalSubspace, + Acts::GridAccess::GlobalSubspace, + Acts::GridAccess::GlobalSubspace> sspace2D = {}; // Check the tuple for 2D diff --git a/Tests/UnitTests/Plugins/Json/MaterialJsonConverterTests.cpp b/Tests/UnitTests/Plugins/Json/MaterialJsonConverterTests.cpp index 6647ee69fe4..b7f982de739 100644 --- a/Tests/UnitTests/Plugins/Json/MaterialJsonConverterTests.cpp +++ b/Tests/UnitTests/Plugins/Json/MaterialJsonConverterTests.cpp @@ -55,11 +55,10 @@ BOOST_AUTO_TEST_CASE(IndexedSurfaceMaterial1DTests) { std::move(localX)); auto globalX = std::make_unique< - const Acts::GridAccess::GlobalSubspace>(); + const Acts::GridAccess::GlobalSubspace>(); Acts::IndexedSurfaceMaterial::GlobalToGridLocalDelegate gToX; - gToX.connect< - &Acts::GridAccess::GlobalSubspace::toGridLocal>( - std::move(globalX)); + gToX.connect<&Acts::GridAccess::GlobalSubspace< + Acts::AxisDirection::AxisX>::toGridLocal>(std::move(globalX)); Acts::IndexedSurfaceMaterial ism( std::move(eqGrid), Acts::IndexedMaterialAccessor{std::move(material)}, @@ -132,10 +131,10 @@ BOOST_AUTO_TEST_CASE(IndexedSurfaceMaterial2DTests) { // With z shift 10 auto globalToGrid = std::make_unique>(); + Acts::AxisDirection::AxisZ, Acts::AxisDirection::AxisPhi>>(); Acts::IndexedSurfaceMaterial::GlobalToGridLocalDelegate gToZphi; gToZphi.connect<&Acts::GridAccess::GlobalSubspace< - Acts::BinningValue::binZ, Acts::BinningValue::binPhi>::toGridLocal>( + Acts::AxisDirection::AxisZ, Acts::AxisDirection::AxisPhi>::toGridLocal>( std::move(globalToGrid)); // Create the indexed material grid diff --git a/Tests/UnitTests/Plugins/Json/PortalJsonConverterTests.cpp b/Tests/UnitTests/Plugins/Json/PortalJsonConverterTests.cpp index 770076c1a0e..c52b72f2b60 100644 --- a/Tests/UnitTests/Plugins/Json/PortalJsonConverterTests.cpp +++ b/Tests/UnitTests/Plugins/Json/PortalJsonConverterTests.cpp @@ -129,7 +129,8 @@ BOOST_AUTO_TEST_CASE(PortalMultiConnected) { Acts::Experimental::detail::PortalHelper::attachDetectorVolumesUpdater( tContext, *portal, {forwardVolumeA, forwardVolumeB, forwardVolumeC}, - Acts::Direction::Forward, {-100, 10, 20, 200}, Acts::BinningValue::binX); + Acts::Direction::Forward, {-100, 10, 20, 200}, + Acts::AxisDirection::AxisX); std::vector detectorVolumes = { forwardVolumeA.get(), forwardVolumeB.get(), forwardVolumeC.get(), diff --git a/Tests/UnitTests/Plugins/Json/ProtoDetectorJsonConverterTests.cpp b/Tests/UnitTests/Plugins/Json/ProtoDetectorJsonConverterTests.cpp index 5cf5f75ce58..1e97184801b 100644 --- a/Tests/UnitTests/Plugins/Json/ProtoDetectorJsonConverterTests.cpp +++ b/Tests/UnitTests/Plugins/Json/ProtoDetectorJsonConverterTests.cpp @@ -117,66 +117,66 @@ BOOST_AUTO_TEST_SUITE(ProtoDetectorJsonConverter) BOOST_AUTO_TEST_CASE(ProtoDetectorRoundTrip) { Acts::ExtentEnvelope cylinderLayerEnvelope = ExtentEnvelope::Zero(); - cylinderLayerEnvelope[Acts::BinningValue::binR] = {1., 1.}; - cylinderLayerEnvelope[Acts::BinningValue::binZ] = {2., 2.}; + cylinderLayerEnvelope[Acts::AxisDirection::AxisR] = {1., 1.}; + cylinderLayerEnvelope[Acts::AxisDirection::AxisZ] = {2., 2.}; Acts::ExtentEnvelope discLayerEnvelope = ExtentEnvelope::Zero(); - discLayerEnvelope[Acts::BinningValue::binR] = {1., 1.}; - discLayerEnvelope[Acts::BinningValue::binZ] = {1., 1.}; + discLayerEnvelope[Acts::AxisDirection::AxisR] = {1., 1.}; + discLayerEnvelope[Acts::AxisDirection::AxisZ] = {1., 1.}; // Beam Pipe container Acts::ProtoVolume beamPipeContainer; beamPipeContainer.name = "odd-beam-pipe"; - beamPipeContainer.extent.set(Acts::BinningValue::binR, 0., 25); + beamPipeContainer.extent.set(Acts::AxisDirection::AxisR, 0., 25); Acts::ProtoVolume beamPipe; beamPipe.name = "odd-beam-pipe-l"; - beamPipe.extent.set(Acts::BinningValue::binR, 2., 24.); + beamPipe.extent.set(Acts::AxisDirection::AxisR, 2., 24.); beamPipe.internal = Acts::ProtoVolume::InternalStructure{ Acts::Surface::SurfaceType::Cylinder}; beamPipeContainer.container = Acts::ProtoVolume::ContainerStructure{ {beamPipe}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binR, {0., 1.})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisR, {0., 1.})}, true}; // Pixel section Acts::ProtoVolume pixelContainer; pixelContainer.name = "odd-pixel"; - pixelContainer.extent.set(Acts::BinningValue::binR, 25., 200); + pixelContainer.extent.set(Acts::AxisDirection::AxisR, 25., 200); Acts::ProtoVolume pixelNec; pixelNec.name = "odd-pixel-nec"; - pixelNec.extent.set(Acts::BinningValue::binZ, -3100., -580); + pixelNec.extent.set(Acts::AxisDirection::AxisZ, -3100., -580); Acts::ProtoVolume pixNecD6; pixNecD6.name = "odd-pixel-nec-d6"; - pixNecD6.extent.set(Acts::BinningValue::binZ, -1540., -1500); + pixNecD6.extent.set(Acts::AxisDirection::AxisZ, -1540., -1500); Acts::ProtoVolume pixNecD5; pixNecD5.name = "odd-pixel-nec-d5"; - pixNecD5.extent.set(Acts::BinningValue::binZ, -1340., -1300); + pixNecD5.extent.set(Acts::AxisDirection::AxisZ, -1340., -1300); Acts::ProtoVolume pixNecD4; pixNecD4.name = "odd-pixel-nec-d4"; - pixNecD4.extent.set(Acts::BinningValue::binZ, -1140., -1100); + pixNecD4.extent.set(Acts::AxisDirection::AxisZ, -1140., -1100); Acts::ProtoVolume pixNecD3; pixNecD3.name = "odd-pixel-nec-d3"; - pixNecD3.extent.set(Acts::BinningValue::binZ, -1000., -960.); + pixNecD3.extent.set(Acts::AxisDirection::AxisZ, -1000., -960.); Acts::ProtoVolume pixNecD2; pixNecD2.name = "odd-pixel-nec-d2"; - pixNecD2.extent.set(Acts::BinningValue::binZ, -860., -820); + pixNecD2.extent.set(Acts::AxisDirection::AxisZ, -860., -820); Acts::ProtoVolume pixNecD1; pixNecD1.name = "odd-pixel-nec-d1"; - pixNecD1.extent.set(Acts::BinningValue::binZ, -740., -700); + pixNecD1.extent.set(Acts::AxisDirection::AxisZ, -740., -700); Acts::ProtoVolume pixNecD0; pixNecD0.name = "odd-pixel-nec-d0"; - pixNecD0.extent.set(Acts::BinningValue::binZ, -640., -600); + pixNecD0.extent.set(Acts::AxisDirection::AxisZ, -640., -600); pixelNec.container = Acts::ProtoVolume::ContainerStructure{ {pixNecD6, pixNecD5, pixNecD4, pixNecD3, pixNecD2, pixNecD1, pixNecD0}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binZ, {0., 1.})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisZ, {0., 1.})}, true}; Acts::BinningData pixEcBinningR = - Acts::BinningData(Acts::open, Acts::BinningValue::binR, 2., 0., 1.); + Acts::BinningData(Acts::open, Acts::AxisDirection::AxisR, 2., 0., 1.); Acts::BinningData pixEcBinningPhi = - Acts::BinningData(Acts::closed, Acts::BinningValue::binPhi, 30., + Acts::BinningData(Acts::closed, Acts::AxisDirection::AxisPhi, 30., -std::numbers::pi, std::numbers::pi); for (auto& cv : pixelNec.container.value().constituentVolumes) { @@ -187,28 +187,28 @@ BOOST_AUTO_TEST_CASE(ProtoDetectorRoundTrip) { Acts::ProtoVolume pixelBarrel; pixelBarrel.name = "odd-pixel-barrel"; - pixelBarrel.extent.set(Acts::BinningValue::binZ, -580., 580); + pixelBarrel.extent.set(Acts::AxisDirection::AxisZ, -580., 580); Acts::ProtoVolume pixBarrelL0; pixBarrelL0.name = "odd-pixel-barrel-l0"; - pixBarrelL0.extent.set(Acts::BinningValue::binR, 28., 48.); - pixBarrelL0.extent.set(Acts::BinningValue::binZ, -580., 580); + pixBarrelL0.extent.set(Acts::AxisDirection::AxisR, 28., 48.); + pixBarrelL0.extent.set(Acts::AxisDirection::AxisZ, -580., 580); Acts::ProtoVolume pixBarrelL1; pixBarrelL1.name = "odd-pixel-barrel-l1"; - pixBarrelL1.extent.set(Acts::BinningValue::binR, 62., 76); - pixBarrelL1.extent.set(Acts::BinningValue::binZ, -580., 580); + pixBarrelL1.extent.set(Acts::AxisDirection::AxisR, 62., 76); + pixBarrelL1.extent.set(Acts::AxisDirection::AxisZ, -580., 580); Acts::ProtoVolume pixBarrelL2; pixBarrelL2.name = "odd-pixel-barrel-l2"; - pixBarrelL2.extent.set(Acts::BinningValue::binR, 100., 120.); - pixBarrelL2.extent.set(Acts::BinningValue::binZ, -580., 580); + pixBarrelL2.extent.set(Acts::AxisDirection::AxisR, 100., 120.); + pixBarrelL2.extent.set(Acts::AxisDirection::AxisZ, -580., 580); Acts::ProtoVolume pixBarrelL3; pixBarrelL3.name = "odd-pixel-barrel-l3"; - pixBarrelL3.extent.set(Acts::BinningValue::binR, 160., 180.); - pixBarrelL3.extent.set(Acts::BinningValue::binZ, -580., 580); + pixBarrelL3.extent.set(Acts::AxisDirection::AxisR, 160., 180.); + pixBarrelL3.extent.set(Acts::AxisDirection::AxisZ, -580., 580); pixelBarrel.container = Acts::ProtoVolume::ContainerStructure{ {pixBarrelL0, pixBarrelL1, pixBarrelL2, pixBarrelL3}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binR, {0., 1})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisR, {0., 1})}, true}; for (auto& cv : pixelBarrel.container.value().constituentVolumes) { @@ -219,33 +219,33 @@ BOOST_AUTO_TEST_CASE(ProtoDetectorRoundTrip) { Acts::ProtoVolume pixelPec; pixelPec.name = "odd-pixel-pec"; - pixelPec.extent.set(Acts::BinningValue::binZ, 580., 3100.); + pixelPec.extent.set(Acts::AxisDirection::AxisZ, 580., 3100.); Acts::ProtoVolume pixPecD0; pixPecD0.name = "odd-pixel-pec-d0"; - pixPecD0.extent.set(Acts::BinningValue::binZ, 600., 640); + pixPecD0.extent.set(Acts::AxisDirection::AxisZ, 600., 640); Acts::ProtoVolume pixPecD1; pixPecD1.name = "odd-pixel-pec-d1"; - pixPecD1.extent.set(Acts::BinningValue::binZ, 700., 740); + pixPecD1.extent.set(Acts::AxisDirection::AxisZ, 700., 740); Acts::ProtoVolume pixPecD2; pixPecD2.name = "odd-pixel-pec-d2"; - pixPecD2.extent.set(Acts::BinningValue::binZ, 820., 860.); + pixPecD2.extent.set(Acts::AxisDirection::AxisZ, 820., 860.); Acts::ProtoVolume pixPecD3; pixPecD3.name = "odd-pixel-pec-d3"; - pixPecD3.extent.set(Acts::BinningValue::binZ, 960., 1000.); + pixPecD3.extent.set(Acts::AxisDirection::AxisZ, 960., 1000.); Acts::ProtoVolume pixPecD4; pixPecD4.name = "odd-pixel-pec-d4"; - pixPecD4.extent.set(Acts::BinningValue::binZ, 1100., 1140); + pixPecD4.extent.set(Acts::AxisDirection::AxisZ, 1100., 1140); Acts::ProtoVolume pixPecD5; pixPecD5.name = "odd-pixel-pec-d5"; - pixPecD5.extent.set(Acts::BinningValue::binZ, 1300., 1340.); + pixPecD5.extent.set(Acts::AxisDirection::AxisZ, 1300., 1340.); Acts::ProtoVolume pixPecD6; pixPecD6.name = "odd-pixel-pec-d6"; - pixPecD6.extent.set(Acts::BinningValue::binZ, 1500., 1540.); + pixPecD6.extent.set(Acts::AxisDirection::AxisZ, 1500., 1540.); pixelPec.container = Acts::ProtoVolume::ContainerStructure{ {pixPecD0, pixPecD1, pixPecD2, pixPecD3, pixPecD4, pixPecD5, pixPecD6}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binZ, {0., 1})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisZ, {0., 1})}, true}; for (auto& cv : pixelPec.container.value().constituentVolumes) { @@ -256,60 +256,60 @@ BOOST_AUTO_TEST_CASE(ProtoDetectorRoundTrip) { pixelContainer.container = Acts::ProtoVolume::ContainerStructure{ {pixelNec, pixelBarrel, pixelPec}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binZ, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisZ, {-3100., -580., 580., 3100.})}}; // Short Strip section Acts::ProtoVolume pstContainer; pstContainer.name = "odd-pst"; - pstContainer.extent.set(Acts::BinningValue::binR, 200., 210.); + pstContainer.extent.set(Acts::AxisDirection::AxisR, 200., 210.); Acts::ProtoVolume pst; pst.name = "odd-pst-l"; - pst.extent.set(Acts::BinningValue::binR, 201., 209.); + pst.extent.set(Acts::AxisDirection::AxisR, 201., 209.); pst.internal = Acts::ProtoVolume::InternalStructure{ Acts::Surface::SurfaceType::Cylinder}; pstContainer.container = Acts::ProtoVolume::ContainerStructure{ {pst}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binR, {0., 1.})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisR, {0., 1.})}, true}; // Short Strip section Acts::ProtoVolume sstripContainer; sstripContainer.name = "odd-sstrip"; - sstripContainer.extent.set(Acts::BinningValue::binR, 210., 720); + sstripContainer.extent.set(Acts::AxisDirection::AxisR, 210., 720); Acts::BinningData sstripEcBinningR = - Acts::BinningData(Acts::open, Acts::BinningValue::binR, 3., 0., 1.); + Acts::BinningData(Acts::open, Acts::AxisDirection::AxisR, 3., 0., 1.); Acts::BinningData sstripEcBinningPhi = - Acts::BinningData(Acts::closed, Acts::BinningValue::binPhi, 42., + Acts::BinningData(Acts::closed, Acts::AxisDirection::AxisPhi, 42., -std::numbers::pi, std::numbers::pi); Acts::ProtoVolume sstripNec; sstripNec.name = "odd-sstrip-nec"; - sstripNec.extent.set(Acts::BinningValue::binZ, -3100., -1200); + sstripNec.extent.set(Acts::AxisDirection::AxisZ, -3100., -1200); Acts::ProtoVolume sstripNecD5; sstripNecD5.name = "odd-sstrip-nec-d5"; - sstripNecD5.extent.set(Acts::BinningValue::binZ, -3000, -2900.); + sstripNecD5.extent.set(Acts::AxisDirection::AxisZ, -3000, -2900.); Acts::ProtoVolume sstripNecD4; sstripNecD4.name = "odd-sstrip-nec-d4"; - sstripNecD4.extent.set(Acts::BinningValue::binZ, -2600., -2500.); + sstripNecD4.extent.set(Acts::AxisDirection::AxisZ, -2600., -2500.); Acts::ProtoVolume sstripNecD3; sstripNecD3.name = "odd-sstrip-nec-d3"; - sstripNecD3.extent.set(Acts::BinningValue::binZ, -2250, -2150.); + sstripNecD3.extent.set(Acts::AxisDirection::AxisZ, -2250, -2150.); Acts::ProtoVolume sstripNecD2; sstripNecD2.name = "odd-sstrip-nec-d2"; - sstripNecD2.extent.set(Acts::BinningValue::binZ, -1900, -1800.); + sstripNecD2.extent.set(Acts::AxisDirection::AxisZ, -1900, -1800.); Acts::ProtoVolume sstripNecD1; sstripNecD1.name = "odd-sstrip-nec-d1"; - sstripNecD1.extent.set(Acts::BinningValue::binZ, -1600., -1500.); + sstripNecD1.extent.set(Acts::AxisDirection::AxisZ, -1600., -1500.); Acts::ProtoVolume sstripNecD0; sstripNecD0.name = "odd-sstrip-nec-d0"; - sstripNecD0.extent.set(Acts::BinningValue::binZ, -1350., -1250.); + sstripNecD0.extent.set(Acts::AxisDirection::AxisZ, -1350., -1250.); sstripNec.container = Acts::ProtoVolume::ContainerStructure{ {sstripNecD5, sstripNecD4, sstripNecD3, sstripNecD2, sstripNecD1, sstripNecD0}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binZ, {0., 1})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisZ, {0., 1})}, true}; for (auto& cv : sstripNec.container.value().constituentVolumes) { @@ -321,24 +321,24 @@ BOOST_AUTO_TEST_CASE(ProtoDetectorRoundTrip) { Acts::ProtoVolume sstripBarrel; sstripBarrel.name = "odd-sstrip-barrel"; - sstripBarrel.extent.set(Acts::BinningValue::binZ, -1200., 1200); + sstripBarrel.extent.set(Acts::AxisDirection::AxisZ, -1200., 1200); Acts::ProtoVolume sstripBarrelL0; sstripBarrelL0.name = "odd-sstrip-barrel-l0"; - sstripBarrelL0.extent.set(Acts::BinningValue::binR, 240., 280.); + sstripBarrelL0.extent.set(Acts::AxisDirection::AxisR, 240., 280.); Acts::ProtoVolume sstripBarrelL1; sstripBarrelL1.name = "odd-sstrip-barrel-l1"; - sstripBarrelL1.extent.set(Acts::BinningValue::binR, 340., 380.); + sstripBarrelL1.extent.set(Acts::AxisDirection::AxisR, 340., 380.); Acts::ProtoVolume sstripBarrelL2; sstripBarrelL2.name = "odd-sstrip-barrel-l2"; - sstripBarrelL2.extent.set(Acts::BinningValue::binR, 480., 520.); + sstripBarrelL2.extent.set(Acts::AxisDirection::AxisR, 480., 520.); Acts::ProtoVolume sstripBarrelL3; sstripBarrelL3.name = "odd-sstrip-barrel-l3"; - sstripBarrelL3.extent.set(Acts::BinningValue::binR, 640., 680.); + sstripBarrelL3.extent.set(Acts::AxisDirection::AxisR, 640., 680.); sstripBarrel.container = Acts::ProtoVolume::ContainerStructure{ {sstripBarrelL0, sstripBarrelL1, sstripBarrelL2, sstripBarrelL3}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binR, {0., 1})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisR, {0., 1})}, true}; for (auto& cv : sstripBarrel.container.value().constituentVolumes) { @@ -349,31 +349,31 @@ BOOST_AUTO_TEST_CASE(ProtoDetectorRoundTrip) { Acts::ProtoVolume sstripPec; sstripPec.name = "odd-sstrip-pec"; - sstripPec.extent.set(Acts::BinningValue::binZ, 1200., 3100); + sstripPec.extent.set(Acts::AxisDirection::AxisZ, 1200., 3100); Acts::ProtoVolume sstripPecD0; sstripPecD0.name = "odd-sstrip-pec-d0"; - sstripPecD0.extent.set(Acts::BinningValue::binZ, 1250., 1350); + sstripPecD0.extent.set(Acts::AxisDirection::AxisZ, 1250., 1350); Acts::ProtoVolume sstripPecD1; sstripPecD1.name = "odd-sstrip-pec-d1"; - sstripPecD1.extent.set(Acts::BinningValue::binZ, 1500., 1600.); + sstripPecD1.extent.set(Acts::AxisDirection::AxisZ, 1500., 1600.); Acts::ProtoVolume sstripPecD2; sstripPecD2.name = "odd-sstrip-pec-d2"; - sstripPecD2.extent.set(Acts::BinningValue::binZ, 1800., 1900.); + sstripPecD2.extent.set(Acts::AxisDirection::AxisZ, 1800., 1900.); Acts::ProtoVolume sstripPecD3; sstripPecD3.name = "odd-sstrip-pec-d3"; - sstripPecD3.extent.set(Acts::BinningValue::binZ, 2150., 2250.); + sstripPecD3.extent.set(Acts::AxisDirection::AxisZ, 2150., 2250.); Acts::ProtoVolume sstripPecD4; sstripPecD4.name = "odd-sstrip-pec-d4"; - sstripPecD4.extent.set(Acts::BinningValue::binZ, 2500., 2600.); + sstripPecD4.extent.set(Acts::AxisDirection::AxisZ, 2500., 2600.); Acts::ProtoVolume sstripPecD5; sstripPecD5.name = "odd-sstrip-pec-d5"; - sstripPecD5.extent.set(Acts::BinningValue::binZ, 2900., 3000.); + sstripPecD5.extent.set(Acts::AxisDirection::AxisZ, 2900., 3000.); sstripPec.container = Acts::ProtoVolume::ContainerStructure{ {sstripPecD0, sstripPecD1, sstripPecD2, sstripPecD3, sstripPecD4, sstripPecD5}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binZ, {0., 1})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisZ, {0., 1})}, true}; for (auto& cv : sstripPec.container.value().constituentVolumes) { cv.extent.setEnvelope(discLayerEnvelope); @@ -384,40 +384,40 @@ BOOST_AUTO_TEST_CASE(ProtoDetectorRoundTrip) { sstripContainer.container = Acts::ProtoVolume::ContainerStructure{ {sstripNec, sstripBarrel, sstripPec}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binZ, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisZ, {-3100., -1200., 1200., 3100.})}}; // Long Strip section Acts::ProtoVolume lstripContainer; lstripContainer.name = "odd-lstrip"; - lstripContainer.extent.set(Acts::BinningValue::binR, 720, 1100.); + lstripContainer.extent.set(Acts::AxisDirection::AxisR, 720, 1100.); Acts::ProtoVolume lstripNec; lstripNec.name = "odd-lstrip-nec"; - lstripNec.extent.set(Acts::BinningValue::binZ, -3100., -1200); + lstripNec.extent.set(Acts::AxisDirection::AxisZ, -3100., -1200); Acts::ProtoVolume lstripNecD5; lstripNecD5.name = "odd-lstrip-nec-d5"; - lstripNecD5.extent.set(Acts::BinningValue::binZ, -3050, -2900.); + lstripNecD5.extent.set(Acts::AxisDirection::AxisZ, -3050, -2900.); Acts::ProtoVolume lstripNecD4; lstripNecD4.name = "odd-lstrip-nec-d4"; - lstripNecD4.extent.set(Acts::BinningValue::binZ, -2650., -2500.); + lstripNecD4.extent.set(Acts::AxisDirection::AxisZ, -2650., -2500.); Acts::ProtoVolume lstripNecD3; lstripNecD3.name = "odd-lstrip-nec-d3"; - lstripNecD3.extent.set(Acts::BinningValue::binZ, -2300, -2150.); + lstripNecD3.extent.set(Acts::AxisDirection::AxisZ, -2300, -2150.); Acts::ProtoVolume lstripNecD2; lstripNecD2.name = "odd-lstrip-nec-d2"; - lstripNecD2.extent.set(Acts::BinningValue::binZ, -1950, -1800.); + lstripNecD2.extent.set(Acts::AxisDirection::AxisZ, -1950, -1800.); Acts::ProtoVolume lstripNecD1; lstripNecD1.name = "odd-lstrip-nec-d1"; - lstripNecD1.extent.set(Acts::BinningValue::binZ, -1650., -1500.); + lstripNecD1.extent.set(Acts::AxisDirection::AxisZ, -1650., -1500.); Acts::ProtoVolume lstripNecD0; lstripNecD0.name = "odd-lstrip-nec-d0"; - lstripNecD0.extent.set(Acts::BinningValue::binZ, -1400., -1250.); + lstripNecD0.extent.set(Acts::AxisDirection::AxisZ, -1400., -1250.); lstripNec.container = Acts::ProtoVolume::ContainerStructure{ {lstripNecD5, lstripNecD4, lstripNecD3, lstripNecD2, lstripNecD1, lstripNecD0}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binZ, {0., 1})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisZ, {0., 1})}, true}; for (auto& cv : lstripNec.container.value().constituentVolumes) { @@ -428,18 +428,18 @@ BOOST_AUTO_TEST_CASE(ProtoDetectorRoundTrip) { Acts::ProtoVolume lstripBarrel; lstripBarrel.name = "odd-lstrip-barrel"; - lstripBarrel.extent.set(Acts::BinningValue::binZ, -1200., 1200); + lstripBarrel.extent.set(Acts::AxisDirection::AxisZ, -1200., 1200); Acts::ProtoVolume lstripBarrelL0; lstripBarrelL0.name = "odd-lstrip-barrel-l0"; - lstripBarrelL0.extent.set(Acts::BinningValue::binR, 800., 840.); + lstripBarrelL0.extent.set(Acts::AxisDirection::AxisR, 800., 840.); Acts::ProtoVolume lstripBarrelL1; lstripBarrelL1.name = "odd-lstrip-barrel-l1"; - lstripBarrelL1.extent.set(Acts::BinningValue::binR, 1000., 1050.); + lstripBarrelL1.extent.set(Acts::AxisDirection::AxisR, 1000., 1050.); lstripBarrel.container = Acts::ProtoVolume::ContainerStructure{ {lstripBarrelL0, lstripBarrelL1}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binR, {0., 1})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisR, {0., 1})}, true}; for (auto& cv : lstripBarrel.container.value().constituentVolumes) { @@ -450,31 +450,31 @@ BOOST_AUTO_TEST_CASE(ProtoDetectorRoundTrip) { Acts::ProtoVolume lstripPec; lstripPec.name = "odd-lstrip-pec"; - lstripPec.extent.set(Acts::BinningValue::binZ, 1200., 3100); + lstripPec.extent.set(Acts::AxisDirection::AxisZ, 1200., 3100); Acts::ProtoVolume lstripPecD0; lstripPecD0.name = "odd-lstrip-pec-d0"; - lstripPecD0.extent.set(Acts::BinningValue::binZ, 1250., 1400); + lstripPecD0.extent.set(Acts::AxisDirection::AxisZ, 1250., 1400); Acts::ProtoVolume lstripPecD1; lstripPecD1.name = "odd-lstrip-pec-d1"; - lstripPecD1.extent.set(Acts::BinningValue::binZ, 1500., 1650.); + lstripPecD1.extent.set(Acts::AxisDirection::AxisZ, 1500., 1650.); Acts::ProtoVolume lstripPecD2; lstripPecD2.name = "odd-lstrip-pec-d2"; - lstripPecD2.extent.set(Acts::BinningValue::binZ, 1800., 1950.); + lstripPecD2.extent.set(Acts::AxisDirection::AxisZ, 1800., 1950.); Acts::ProtoVolume lstripPecD3; lstripPecD3.name = "odd-lstrip-pec-d3"; - lstripPecD3.extent.set(Acts::BinningValue::binZ, 2150., 2300.); + lstripPecD3.extent.set(Acts::AxisDirection::AxisZ, 2150., 2300.); Acts::ProtoVolume lstripPecD4; lstripPecD4.name = "odd-lstrip-pec-d4"; - lstripPecD4.extent.set(Acts::BinningValue::binZ, 2500., 2650.); + lstripPecD4.extent.set(Acts::AxisDirection::AxisZ, 2500., 2650.); Acts::ProtoVolume lstripPecD5; lstripPecD5.name = "odd-lstrip-pec-d5"; - lstripPecD5.extent.set(Acts::BinningValue::binZ, 2900., 3050.); + lstripPecD5.extent.set(Acts::AxisDirection::AxisZ, 2900., 3050.); lstripPec.container = Acts::ProtoVolume::ContainerStructure{ {lstripPecD0, lstripPecD1, lstripPecD2, lstripPecD3, lstripPecD4, lstripPecD5}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binZ, {0., 1})}, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisZ, {0., 1})}, true}; for (auto& cv : lstripPec.container.value().constituentVolumes) { cv.internal = @@ -483,18 +483,18 @@ BOOST_AUTO_TEST_CASE(ProtoDetectorRoundTrip) { } lstripContainer.container = Acts::ProtoVolume::ContainerStructure{ {lstripNec, lstripBarrel, lstripPec}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binZ, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisZ, {-3100., -1200., 1200., 3100.})}}; // The overall container Acts::ProtoVolume detectorContainer; detectorContainer.name = "odd-light-world"; - detectorContainer.extent.set(Acts::BinningValue::binR, 0., 1100.); - detectorContainer.extent.set(Acts::BinningValue::binZ, -3100., 3100.); + detectorContainer.extent.set(Acts::AxisDirection::AxisR, 0., 1100.); + detectorContainer.extent.set(Acts::AxisDirection::AxisZ, -3100., 3100.); detectorContainer.container = Acts::ProtoVolume::ContainerStructure{ {beamPipeContainer, pixelContainer, pstContainer, sstripContainer, lstripContainer}, - {Acts::BinningData(Acts::open, Acts::BinningValue::binR, + {Acts::BinningData(Acts::open, Acts::AxisDirection::AxisR, {0., 25., 200., 210., 720., 1100.})}}; // ---------------------------------------------------------- diff --git a/Tests/UnitTests/Plugins/Json/UtilitiesJsonConverterTests.cpp b/Tests/UnitTests/Plugins/Json/UtilitiesJsonConverterTests.cpp index 41f080db7f5..db6d314df7f 100644 --- a/Tests/UnitTests/Plugins/Json/UtilitiesJsonConverterTests.cpp +++ b/Tests/UnitTests/Plugins/Json/UtilitiesJsonConverterTests.cpp @@ -31,7 +31,7 @@ using namespace Acts; BOOST_AUTO_TEST_SUITE(UtilitiesJsonConverter) BOOST_AUTO_TEST_CASE(BinUtilityRoundTripTests) { - BinUtility reference(2, 0., 4., open, BinningValue::binR); + BinUtility reference(2, 0., 4., open, AxisDirection::AxisR); std::ofstream out; @@ -56,7 +56,7 @@ BOOST_AUTO_TEST_CASE(BinUtilityRoundTripTests) { // Increase to two dimensions reference += BinUtility(10., -std::numbers::pi, std::numbers::pi, closed, - BinningValue::binPhi); + AxisDirection::AxisPhi); nlohmann::json jtwoDimOut; to_json(jtwoDimOut, reference); out.open("BinUtility_2D.json"); @@ -77,7 +77,7 @@ BOOST_AUTO_TEST_CASE(BinUtilityRoundTripTests) { // Increase to three dimensions std::vector boundaries = {-4., -1.5, 0., 10.}; - reference += BinUtility(boundaries, open, BinningValue::binZ); + reference += BinUtility(boundaries, open, AxisDirection::AxisZ); nlohmann::json jthreeDimOut; to_json(jthreeDimOut, reference); out.open("BinUtility_3D.json"); diff --git a/Tests/UnitTests/Plugins/TGeo/TGeoLayerBuilderTests.cpp b/Tests/UnitTests/Plugins/TGeo/TGeoLayerBuilderTests.cpp index b45e188f9ec..abfe5461fc9 100644 --- a/Tests/UnitTests/Plugins/TGeo/TGeoLayerBuilderTests.cpp +++ b/Tests/UnitTests/Plugins/TGeo/TGeoLayerBuilderTests.cpp @@ -56,8 +56,8 @@ BOOST_AUTO_TEST_CASE(TGeoLayerBuilderTests) { b0Config.sensorNames = {"PixelActiveo2", "PixelActiveo4", "PixelActiveo5", "PixelActiveo6"}; b0Config.localAxes = "XYZ"; - b0Config.parseRanges = {{BinningValue::binR, {0., 40_mm}}, - {BinningValue::binZ, {-60_mm, 15_mm}}}; + b0Config.parseRanges = {{AxisDirection::AxisR, {0., 40_mm}}, + {AxisDirection::AxisZ, {-60_mm, 15_mm}}}; b0Config.envelope = {0_mm, 0_mm}; TglConfig eAllConfig; @@ -65,9 +65,9 @@ BOOST_AUTO_TEST_CASE(TGeoLayerBuilderTests) { eAllConfig.sensorNames = {"PixelActiveo2", "PixelActiveo4", "PixelActiveo5", "PixelActiveo6"}; eAllConfig.localAxes = "XYZ"; - eAllConfig.parseRanges = {{BinningValue::binR, {0., 40_mm}}, - {BinningValue::binZ, {16_mm, 60_mm}}}; - eAllConfig.splitConfigs = {{BinningValue::binZ, 5_mm}}; + eAllConfig.parseRanges = {{AxisDirection::AxisR, {0., 40_mm}}, + {AxisDirection::AxisZ, {16_mm, 60_mm}}}; + eAllConfig.splitConfigs = {{AxisDirection::AxisZ, 5_mm}}; eAllConfig.envelope = {0_mm, 0_mm}; std::vector cConfigs = {b0Config}; diff --git a/Tests/UnitTests/Plugins/TGeo/TGeoParserTests.cpp b/Tests/UnitTests/Plugins/TGeo/TGeoParserTests.cpp index 1292d311b84..78fd673d0bf 100644 --- a/Tests/UnitTests/Plugins/TGeo/TGeoParserTests.cpp +++ b/Tests/UnitTests/Plugins/TGeo/TGeoParserTests.cpp @@ -78,8 +78,8 @@ BOOST_AUTO_TEST_CASE(TGeoParser_Pixel_SelectInnermost) { tgpOptions.volumeNames = {volumeName}; tgpOptions.targetNames = {"PixelActiveo2", "PixelActiveo4", "PixelActiveo5", "PixelActiveo6"}; - tgpOptions.parseRanges.push_back({BinningValue::binR, {0., 40.}}); - tgpOptions.parseRanges.push_back({BinningValue::binZ, {-60., 15.}}); + tgpOptions.parseRanges.push_back({AxisDirection::AxisR, {0., 40.}}); + tgpOptions.parseRanges.push_back({AxisDirection::AxisZ, {-60., 15.}}); tgpOptions.unit = 10.; std::string axes = "XYZ"; diff --git a/docs/_extensions/lazy_autodoc.py b/docs/_extensions/lazy_autodoc.py index 3c9513c4268..a2f455c561a 100644 --- a/docs/_extensions/lazy_autodoc.py +++ b/docs/_extensions/lazy_autodoc.py @@ -131,9 +131,8 @@ def run() -> None: } role_instances["enum"] = { - "Acts::BinningValue", + "Acts::AxisDirection", "Acts::BinningType", - "Acts::BinningValue", "Acts::BoundIndices", "Acts::FreeIndices", "Acts::MagneticFieldError", From 093232956eff419a72b25feaf3be649645f779db Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Wed, 15 Jan 2025 10:12:14 +0100 Subject: [PATCH 09/11] fix: Reset component state in `MultiEigenStepperLoop` over `MultiStepperSurfaceReached` (#4027) After facing another problem with the GSF in https://github.com/acts-project/acts/pull/3449 this might resolve it. The problem seems to be that the navigator and the surface reached aborter are fighting over the surface reached status which can lead to removing all components if the target surface is not reached and the maximum step trials for the multi stepper are reached. This might introduce other problems so waiting for physmon report. blocked by - https://github.com/acts-project/acts/pull/4025 ## Summary by CodeRabbit - **Refactor** - Updated inheritance for `MultiStepperSurfaceReached` struct to use `ForcedSurfaceReached` as base class - Removed explicit constructor for `MultiStepperSurfaceReached` - Modified `checkAbort` method to use new base class implementation - **Chores** - Improved component handling and logging in `MultiEigenStepperLoop` class - Enhanced state management for components during stepping process --- .../Acts/Propagator/MultiEigenStepperLoop.ipp | 20 +++++++++++++------ .../Acts/Propagator/MultiStepperAborters.hpp | 1 - 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/Core/include/Acts/Propagator/MultiEigenStepperLoop.ipp b/Core/include/Acts/Propagator/MultiEigenStepperLoop.ipp index a09e35b9a18..01b392dbf2a 100644 --- a/Core/include/Acts/Propagator/MultiEigenStepperLoop.ipp +++ b/Core/include/Acts/Propagator/MultiEigenStepperLoop.ipp @@ -116,15 +116,18 @@ Result MultiEigenStepperLoop::step( } } - removeMissedComponents(stepping); - reweightComponents(stepping); - ACTS_VERBOSE("Stepper performed " << m_stepLimitAfterFirstComponentOnSurface - << " after the first component hit a surface."); + << " steps after the first component hit a surface."); ACTS_VERBOSE( "-> remove all components not on a surface, perform no step"); + removeMissedComponents(stepping); + reweightComponents(stepping); + + ACTS_VERBOSE(components.size() + << " components left after removing missed components"); + stepping.stepCounterAfterFirstComponentOnSurface.reset(); return 0.0; @@ -184,7 +187,7 @@ Result MultiEigenStepperLoop::step( }; // Loop over components and remove errorous components - stepping.components.erase( + components.erase( std::remove_if(components.begin(), components.end(), errorInStep), components.end()); @@ -218,10 +221,15 @@ Result MultiEigenStepperLoop::step( } // Return error if there is no ok result - if (stepping.components.empty()) { + if (components.empty()) { return MultiStepperError::AllComponentsSteppingError; } + // Invalidate the component status after each step + for (auto& cmp : components) { + cmp.status = Status::unreachable; + } + // Return the weighted accumulated path length of all successful steps stepping.pathAccumulated += accumulatedPathLength; return accumulatedPathLength; diff --git a/Core/include/Acts/Propagator/MultiStepperAborters.hpp b/Core/include/Acts/Propagator/MultiStepperAborters.hpp index 2ef821a2c9d..577c9c7e43f 100644 --- a/Core/include/Acts/Propagator/MultiStepperAborters.hpp +++ b/Core/include/Acts/Propagator/MultiStepperAborters.hpp @@ -83,7 +83,6 @@ struct MultiStepperSurfaceReached : public ForcedSurfaceReached { if (!ForcedSurfaceReached::checkAbort(singleState, singleStepper, navigator, logger)) { - cmp.status() = Acts::IntersectionStatus::reachable; reached = false; } else { cmp.status() = Acts::IntersectionStatus::onSurface; From c0e65bc9ee2d99eca81a7098bd43653e071e3200 Mon Sep 17 00:00:00 2001 From: Benjamin Huth <37871400+benjaminhuth@users.noreply.github.com> Date: Wed, 15 Jan 2025 12:57:16 +0100 Subject: [PATCH 10/11] feat: Add support for CUDA streams in GNN plugin (#4012) Uses the torch framework (as it is required anyways currently) as a source of cuda streams. Extends the interface of the some components to use the streams. --- .../Plugins/ExaTrkX/BoostTrackBuilding.hpp | 2 +- .../Plugins/ExaTrkX/OnnxEdgeClassifier.hpp | 2 +- .../Plugins/ExaTrkX/OnnxMetricLearning.hpp | 2 +- .../include/Acts/Plugins/ExaTrkX/Stages.hpp | 20 ++++++++++++------- .../Plugins/ExaTrkX/TorchEdgeClassifier.hpp | 2 +- .../Plugins/ExaTrkX/TorchMetricLearning.hpp | 2 +- Plugins/ExaTrkX/src/BoostTrackBuilding.cpp | 2 +- Plugins/ExaTrkX/src/ExaTrkXPipeline.cpp | 16 ++++++++++----- Plugins/ExaTrkX/src/OnnxEdgeClassifier.cpp | 3 ++- Plugins/ExaTrkX/src/TorchEdgeClassifier.cpp | 12 ++++++++--- Plugins/ExaTrkX/src/TorchMetricLearning.cpp | 10 ++++++++-- 11 files changed, 49 insertions(+), 24 deletions(-) diff --git a/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/BoostTrackBuilding.hpp b/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/BoostTrackBuilding.hpp index a6905d5b06c..95d7f10e3b8 100644 --- a/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/BoostTrackBuilding.hpp +++ b/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/BoostTrackBuilding.hpp @@ -25,7 +25,7 @@ class BoostTrackBuilding final : public Acts::TrackBuildingBase { std::vector> operator()( std::any nodes, std::any edges, std::any edge_weights, std::vector &spacepointIDs, - torch::Device device = torch::Device(torch::kCPU)) override; + const ExecutionContext &execContext = {}) override; torch::Device device() const override { return m_device; }; private: diff --git a/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/OnnxEdgeClassifier.hpp b/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/OnnxEdgeClassifier.hpp index 5682b7e84a9..529e31409d4 100644 --- a/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/OnnxEdgeClassifier.hpp +++ b/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/OnnxEdgeClassifier.hpp @@ -35,7 +35,7 @@ class OnnxEdgeClassifier final : public Acts::EdgeClassificationBase { std::tuple operator()( std::any nodeFeatures, std::any edgeIndex, std::any edgeFeatures = {}, - torch::Device device = torch::Device(torch::kCPU)) override; + const ExecutionContext &execContext = {}) override; Config config() const { return m_cfg; } torch::Device device() const override { return m_device; }; diff --git a/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/OnnxMetricLearning.hpp b/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/OnnxMetricLearning.hpp index d78139d0732..0a97ab697c3 100644 --- a/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/OnnxMetricLearning.hpp +++ b/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/OnnxMetricLearning.hpp @@ -39,7 +39,7 @@ class OnnxMetricLearning final : public Acts::GraphConstructionBase { std::tuple operator()( std::vector& inputValues, std::size_t numNodes, const std::vector& moduleIds, - torch::Device device = torch::Device(torch::kCPU)) override; + const ExecutionContext& execContext = {}) override; Config config() const { return m_cfg; } torch::Device device() const override { return m_device; }; diff --git a/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/Stages.hpp b/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/Stages.hpp index 1e35fb08a82..13753713917 100644 --- a/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/Stages.hpp +++ b/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/Stages.hpp @@ -13,6 +13,7 @@ #include #include +#include #include namespace Acts { @@ -20,6 +21,12 @@ namespace Acts { /// Error that is thrown if no edges are found struct NoEdgesError : std::exception {}; +/// Capture the context of the execution +struct ExecutionContext { + torch::Device device{torch::kCPU}; + std::optional stream; +}; + // TODO maybe replace std::any with some kind of variant, // unique_ptr>? // TODO maybe replace input for GraphConstructionBase with some kind of @@ -34,13 +41,12 @@ class GraphConstructionBase { /// then gives the number of features /// @param moduleIds Module IDs of the features (used for module-map-like /// graph construction) - /// @param device Which GPU device to pick. Not relevant for CPU-only builds - /// + /// @param execContext Device & stream information /// @return (node_features, edge_features, edge_index) virtual std::tuple operator()( std::vector &inputValues, std::size_t numNodes, const std::vector &moduleIds, - torch::Device device = torch::Device(torch::kCPU)) = 0; + const ExecutionContext &execContext = {}) = 0; virtual torch::Device device() const = 0; @@ -54,12 +60,12 @@ class EdgeClassificationBase { /// @param nodeFeatures Node tensor with shape (n_nodes, n_node_features) /// @param edgeIndex Edge-index tensor with shape (2, n_edges) /// @param edgeFeatures Edge-feature tensor with shape (n_edges, n_edge_features) - /// @param device Which GPU device to pick. Not relevant for CPU-only builds + /// @param execContext Device & stream information /// /// @return (node_features, edge_features, edge_index, edge_scores) virtual std::tuple operator()( std::any nodeFeatures, std::any edgeIndex, std::any edgeFeatures = {}, - torch::Device device = torch::Device(torch::kCPU)) = 0; + const ExecutionContext &execContext = {}) = 0; virtual torch::Device device() const = 0; @@ -74,13 +80,13 @@ class TrackBuildingBase { /// @param edgeIndex Edge-index tensor with shape (2, n_edges) /// @param edgeScores Scores of the previous edge classification phase /// @param spacepointIDs IDs of the nodes (must have size=n_nodes) - /// @param device Which GPU device to pick. Not relevant for CPU-only builds + /// @param execContext Device & stream information /// /// @return tracks (as vectors of node-IDs) virtual std::vector> operator()( std::any nodeFeatures, std::any edgeIndex, std::any edgeScores, std::vector &spacepointIDs, - torch::Device device = torch::Device(torch::kCPU)) = 0; + const ExecutionContext &execContext = {}) = 0; virtual torch::Device device() const = 0; diff --git a/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/TorchEdgeClassifier.hpp b/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/TorchEdgeClassifier.hpp index 4cf92a7115d..e7c1d04e9d6 100644 --- a/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/TorchEdgeClassifier.hpp +++ b/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/TorchEdgeClassifier.hpp @@ -42,7 +42,7 @@ class TorchEdgeClassifier final : public Acts::EdgeClassificationBase { std::tuple operator()( std::any nodeFeatures, std::any edgeIndex, std::any edgeFeatures = {}, - torch::Device device = torch::Device(torch::kCPU)) override; + const ExecutionContext &execContext = {}) override; Config config() const { return m_cfg; } torch::Device device() const override { return m_device; }; diff --git a/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/TorchMetricLearning.hpp b/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/TorchMetricLearning.hpp index 9d87e5c59d5..dba7d7f2220 100644 --- a/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/TorchMetricLearning.hpp +++ b/Plugins/ExaTrkX/include/Acts/Plugins/ExaTrkX/TorchMetricLearning.hpp @@ -44,7 +44,7 @@ class TorchMetricLearning final : public Acts::GraphConstructionBase { std::tuple operator()( std::vector &inputValues, std::size_t numNodes, const std::vector &moduleIds, - torch::Device device = torch::Device(torch::kCPU)) override; + const ExecutionContext &execContext = {}) override; Config config() const { return m_cfg; } torch::Device device() const override { return m_device; }; diff --git a/Plugins/ExaTrkX/src/BoostTrackBuilding.cpp b/Plugins/ExaTrkX/src/BoostTrackBuilding.cpp index 0d75b31cedd..d46bc2f58d5 100644 --- a/Plugins/ExaTrkX/src/BoostTrackBuilding.cpp +++ b/Plugins/ExaTrkX/src/BoostTrackBuilding.cpp @@ -48,7 +48,7 @@ namespace Acts { std::vector> BoostTrackBuilding::operator()( std::any /*nodes*/, std::any edges, std::any weights, - std::vector& spacepointIDs, torch::Device) { + std::vector& spacepointIDs, const ExecutionContext& execContext) { ACTS_DEBUG("Start track building"); const auto edgeTensor = std::any_cast(edges).to(torch::kCPU); const auto edgeWeightTensor = diff --git a/Plugins/ExaTrkX/src/ExaTrkXPipeline.cpp b/Plugins/ExaTrkX/src/ExaTrkXPipeline.cpp index 6a05ae96f8e..d81e94ab342 100644 --- a/Plugins/ExaTrkX/src/ExaTrkXPipeline.cpp +++ b/Plugins/ExaTrkX/src/ExaTrkXPipeline.cpp @@ -39,11 +39,18 @@ std::vector> ExaTrkXPipeline::run( std::vector &features, const std::vector &moduleIds, std::vector &spacepointIDs, const ExaTrkXHook &hook, ExaTrkXTiming *timing) const { + ExecutionContext ctx; + ctx.device = m_graphConstructor->device(); +#ifndef ACTS_EXATRKX_CPUONLY + if (ctx.device.type() == torch::kCUDA) { + ctx.stream = c10::cuda::getStreamFromPool(ctx.device.index()); + } +#endif + try { auto t0 = std::chrono::high_resolution_clock::now(); auto [nodeFeatures, edgeIndex, edgeFeatures] = - (*m_graphConstructor)(features, spacepointIDs.size(), moduleIds, - m_graphConstructor->device()); + (*m_graphConstructor)(features, spacepointIDs.size(), moduleIds, ctx); auto t1 = std::chrono::high_resolution_clock::now(); if (timing != nullptr) { @@ -59,7 +66,7 @@ std::vector> ExaTrkXPipeline::run( t0 = std::chrono::high_resolution_clock::now(); auto [newNodeFeatures, newEdgeIndex, newEdgeFeatures, newEdgeScores] = (*edgeClassifier)(std::move(nodeFeatures), std::move(edgeIndex), - std::move(edgeFeatures), edgeClassifier->device()); + std::move(edgeFeatures), ctx); t1 = std::chrono::high_resolution_clock::now(); if (timing != nullptr) { @@ -76,8 +83,7 @@ std::vector> ExaTrkXPipeline::run( t0 = std::chrono::high_resolution_clock::now(); auto res = (*m_trackBuilder)(std::move(nodeFeatures), std::move(edgeIndex), - std::move(edgeScores), spacepointIDs, - m_trackBuilder->device()); + std::move(edgeScores), spacepointIDs, ctx); t1 = std::chrono::high_resolution_clock::now(); if (timing != nullptr) { diff --git a/Plugins/ExaTrkX/src/OnnxEdgeClassifier.cpp b/Plugins/ExaTrkX/src/OnnxEdgeClassifier.cpp index 59452daec09..71cdd0097b5 100644 --- a/Plugins/ExaTrkX/src/OnnxEdgeClassifier.cpp +++ b/Plugins/ExaTrkX/src/OnnxEdgeClassifier.cpp @@ -90,7 +90,8 @@ std::ostream &operator<<(std::ostream &os, Ort::Value &v) { std::tuple OnnxEdgeClassifier::operator()(std::any inputNodes, std::any inputEdges, - std::any inEdgeFeatures, torch::Device) { + std::any inEdgeFeatures, + const ExecutionContext & /*unused*/) { auto torchDevice = torch::kCPU; Ort::MemoryInfo memoryInfo("Cpu", OrtArenaAllocator, /*device_id*/ 0, OrtMemTypeDefault); diff --git a/Plugins/ExaTrkX/src/TorchEdgeClassifier.cpp b/Plugins/ExaTrkX/src/TorchEdgeClassifier.cpp index b81335ad0a9..3aff05eb4e2 100644 --- a/Plugins/ExaTrkX/src/TorchEdgeClassifier.cpp +++ b/Plugins/ExaTrkX/src/TorchEdgeClassifier.cpp @@ -67,17 +67,23 @@ TorchEdgeClassifier::~TorchEdgeClassifier() {} std::tuple TorchEdgeClassifier::operator()(std::any inNodeFeatures, std::any inEdgeIndex, - std::any inEdgeFeatures, torch::Device device) { - decltype(std::chrono::high_resolution_clock::now()) t0, t1, t2, t3, t4, t5; + std::any inEdgeFeatures, + const ExecutionContext& execContext) { + const auto& device = execContext.device; + decltype(std::chrono::high_resolution_clock::now()) t0, t1, t2, t3, t4; t0 = std::chrono::high_resolution_clock::now(); ACTS_DEBUG("Start edge classification, use " << device); c10::InferenceMode guard(true); // add a protection to avoid calling for kCPU -#ifndef ACTS_EXATRKX_CPUONLY +#ifdef ACTS_EXATRKX_CPUONLY + assert(device == torch::Device(torch::kCPU)); +#else std::optional device_guard; + std::optional streamGuard; if (device.is_cuda()) { device_guard.emplace(device.index()); + streamGuard.emplace(execContext.stream.value()); } #endif diff --git a/Plugins/ExaTrkX/src/TorchMetricLearning.cpp b/Plugins/ExaTrkX/src/TorchMetricLearning.cpp index 08088a5d904..57cb271351a 100644 --- a/Plugins/ExaTrkX/src/TorchMetricLearning.cpp +++ b/Plugins/ExaTrkX/src/TorchMetricLearning.cpp @@ -69,15 +69,21 @@ TorchMetricLearning::~TorchMetricLearning() {} std::tuple TorchMetricLearning::operator()( std::vector &inputValues, std::size_t numNodes, - const std::vector & /*moduleIds*/, torch::Device device) { + const std::vector & /*moduleIds*/, + const ExecutionContext &execContext) { + const auto &device = execContext.device; ACTS_DEBUG("Start graph construction"); c10::InferenceMode guard(true); // add a protection to avoid calling for kCPU -#ifndef ACTS_EXATRKX_CPUONLY +#ifdef ACTS_EXATRKX_CPUONLY + assert(device == torch::Device(torch::kCPU)); +#else std::optional device_guard; + std::optional streamGuard; if (device.is_cuda()) { device_guard.emplace(device.index()); + streamGuard.emplace(execContext.stream.value()); } #endif From f060123b034411791d6c94a419acb2799f85297a Mon Sep 17 00:00:00 2001 From: Andreas Stefl Date: Wed, 15 Jan 2025 15:04:27 +0100 Subject: [PATCH 11/11] refactor!: Decouple navigation and stepping (#3449) This is a proposal to decouple navigation from stepping by - changing the navigator interface to only consume **its** state and not the propagation state - providing position and direction as an input to the navigation - putting the `Propagator` in charge of communicating the target and estimated distance to the stepper Originally I wanted the navigator to return the next step size but that clashes with the multi stepper. The current solution allows the stepper to judge on the step size given a surface. This allows the stepper to tweak the step size or to just take what the navigator proposed. In case of the multi stepper we will still just run intersections with the individual components. The navigator is reduced to providing surface candidates and the surface status will be purely determined by the stepper. The propagator passes the information so the navigator knows when to switch surface / layer / volume. Ultimately this removes all the templating from the navigator and the interface captures well what the navigator is supposed to do by having dedicated and visible I/O paths. In case this is where we want to go I would like to do something similar to the steppers. blocked by - https://github.com/acts-project/acts/pull/3984 - https://github.com/acts-project/acts/pull/3985 - https://github.com/acts-project/acts/pull/3986 ## Summary by CodeRabbit ## Release Notes - **Navigation Improvements** - Introduced a new `NavigationTarget` structure to enhance navigation precision. - Streamlined navigator initialization and target resolution processes. - Added more robust surface and target validation mechanisms. - Removed unnecessary member variables from navigators to simplify state management. - **Propagator Enhancements** - Updated propagation logic to improve step size management. - Introduced configurable maximum target skipping limit. - Enhanced error handling for navigation scenarios. - Updated error enumerations to reflect new conditions. - **Stepper Refinements** - Simplified stepper state initialization. - Improved step size update and release mechanisms. - Added more flexible context and options handling. - Removed redundant tolerance parameters from stepper states. - **Testing and Validation** - Updated test cases to reflect new navigation and propagation interfaces. - Enhanced logging and error reporting. - Improved test coverage for various navigation scenarios. - Streamlined test setup and initialization processes. - **Performance Optimizations** - Removed redundant state management variables. - Simplified navigation and stepping logic. - Improved memory management in propagation states. --- .../seeded/performance_fitting_ckf.root | Bin 155362 -> 155598 bytes .../performance_finding_ckf.root | Bin 31645 -> 31923 bytes .../performance_finding_ckf_ambi.root | Bin 28280 -> 28448 bytes .../performance_finding_ckf_ml_solver.root | Bin 28287 -> 28262 bytes .../performance_fitting_ckf.root | Bin 185263 -> 185025 bytes .../performance_fitting_ckf_ambi.root | Bin 170664 -> 170227 bytes .../performance_fitting_ckf_ml_solver.root | Bin 169787 -> 169766 bytes .../performance_seeding.root | Bin 11999 -> 11954 bytes ...ance_vertexing_amvf_gauss_notime_hist.root | Bin 48540 -> 48436 bytes ...ormance_vertexing_amvf_grid_time_hist.root | Bin 48659 -> 48753 bytes .../tracksummary_ckf_hist.root | Bin 40301 -> 40266 bytes .../performance_trackfitting.root | Bin 201532 -> 201623 bytes .../Acts/Navigation/DetectorNavigator.hpp | 338 ++--- .../Acts/Navigation/NavigationState.hpp | 11 - Core/include/Acts/Propagator/AtlasStepper.hpp | 14 +- .../Acts/Propagator/DirectNavigator.hpp | 294 ++--- Core/include/Acts/Propagator/EigenStepper.hpp | 3 +- .../Acts/Propagator/MultiEigenStepperLoop.hpp | 2 +- .../Acts/Propagator/NavigationTarget.hpp | 46 + Core/include/Acts/Propagator/Navigator.hpp | 1158 +++++------------ .../Acts/Propagator/NavigatorOptions.hpp | 10 + Core/include/Acts/Propagator/Propagator.ipp | 194 ++- .../Acts/Propagator/PropagatorError.hpp | 2 +- .../Acts/Propagator/PropagatorOptions.hpp | 15 +- .../Acts/Propagator/PropagatorState.hpp | 23 +- .../Acts/Propagator/StandardAborters.hpp | 5 - .../Acts/Propagator/StepperOptions.hpp | 5 +- .../Acts/Propagator/StraightLineStepper.hpp | 5 - Core/include/Acts/Propagator/SympyStepper.hpp | 2 +- .../Acts/Propagator/TryAllNavigator.hpp | 819 ++++++------ .../include/Acts/Propagator/VoidNavigator.hpp | 86 +- .../Propagator/detail/NavigationHelpers.hpp | 25 +- .../Acts/Propagator/detail/SteppingHelper.hpp | 6 +- .../CombinatorialKalmanFilter.hpp | 4 +- .../Acts/TrackFitting/KalmanFitter.hpp | 8 +- .../Acts/TrackFitting/detail/GsfActor.hpp | 2 +- .../Acts/TrackFitting/detail/GsfUtils.hpp | 13 +- Core/src/Geometry/TrackingGeometry.cpp | 7 +- Core/src/Propagator/PropagatorError.cpp | 5 +- Examples/Python/tests/root_file_hashes.txt | 30 +- Examples/Scripts/Python/hashing_seeding.py | 4 +- .../Kernel/detail/SimulationActor.hpp | 1 + .../IntegrationTests/NavigatorConsistency.cpp | 136 +- .../Navigation/DetectorNavigatorTests.cpp | 17 +- .../Core/Propagator/DirectNavigatorTests.cpp | 4 - .../Core/Propagator/NavigatorTests.cpp | 578 +++----- .../Core/Propagator/PropagatorTests.cpp | 59 +- .../Fatras/Kernel/SimulationActorTests.cpp | 12 +- 48 files changed, 1666 insertions(+), 2277 deletions(-) create mode 100644 Core/include/Acts/Propagator/NavigationTarget.hpp 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 94fcbafbdbfcf8d0f831f6adc5393b1e82cf40df..77c44fa3c2a6efb05db736cbeda397d7f75147a1 100644 GIT binary patch delta 140200 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�}kzm!Oi)2lPoCcz*JV*sG*#E2gtm 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

Vk_NEg4& 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 OjzeUG;!<>mIsXrYO@o&J diff --git a/CI/physmon/reference/trackfinding_ttbar_pu200/performance_finding_ckf.root b/CI/physmon/reference/trackfinding_ttbar_pu200/performance_finding_ckf.root index d4b5a8b9dde68fac45d8d5e3025cdfaf864a206a..0a36fb363534d366207b1be23af3d7bb768de871 100644 GIT binary patch delta 29908 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

gcS!*XG4UwDg*j#lb-2lEt4h zr1KpUcqI-K_ck*FSy8NXNC&aYROAO`IkO#lSfoV}aPOsH_dmYq*dr_`(=p*6ICIrW zpyMOti_n`G6a-pX)Xi}lah~~^-#u8>Wn4xK>e3A`IeQ({kIjrm@@d>|SV+#!YAjTQ z30?y)s!z#_H?VdTJvzPzFJDak>b3mBMIfI^aa-Qu?Cl=zA5N5M~ima`XZ6=tTEZf&`Lg9naN-8H62W7f%OWW zRKn4S-ESwgC!%<9w{h(f)?j8DQh&XME7w&*@R^jy*4(V_`WcIMx{+=esr@8iREI%#GOkkvUiEs%ANNu%4(H` z>S%2Q8mrsdt5sf|mB@sSnL97Q@6Y)*Yh%8Q%?Sw?;n!JLmN44t^v#OYPJ>NKU) zQ~ZXs(_4+3j)Ua`O~DaMg3mCcO+W;NsX*y!kKm(r&D?p!Me*mDz?>0S-!O zII)lih>!;W516$&&#WzcjuoEUUQNJ@-G8&UXn$m__NoN`SlmC7)@QcDLO~S%6(h(h zfURxsBV&0Up?Ae-;MVJkuS_g2MMWS8!skQs;Pp-e6*)M_SI4S_3ySYh!mT)8_t^RG zg16)xg*P#|P*YleaWdVihMCa#B%8N;zvVZQn)EBRkLto(3@x*Xl=$;7vlIqPIJDoS za!c_9;r@VZpt6TURkH^2$Tp{%9q}LkX$NE@181by2XppZA3_L)y!i zLd{17qEWoaPO{&+q?rQZUG!d4^qF4CAcF8j&TXsNyGyy8RFv@VXK(cg5QSI0rqKE{ zREEX-CH+~|1c&Jf&1f6vFe>QOXWe!X>5mYxc=T*MoXTV-hHhAYbTQYB&%PQY z0hz_2zS4Twb>p;pjRjTKs3eO<5tvkBdqs$dz9>|9AoMjR*`>l!8;9XRo_AUZ)q9m# zY;89HcC*)u>S7dx*Sg(xIf$k@(U2M)jSaS5rEDlkn_Tb(YSP0a1?#hO1D zUi>VTK)PHlz#T{;s+{9HO6_X-38f39>X)UoGDb+n36Xo@0rkR$c(jVU=DI$;ynAd( z+2y|dlUEE&h%H%FkwxIz9rMjt8kQ&pJwUHsnJFPHAa0RapJN#nBS=K7a5Ws1e#Z|d z;PX1TMKI31okEZF{I-5Zyj;Qkon?EhFG$t$wi=3GbixeFn3f}5{Ue_Ft&vf4+{*#P z6SjBy2-eB1$@t~s>4m4B-T3tF*J-eh!Ez^uW8MK%^%lsBVbDJH%u*}q{W^Wq13-8HP6I4f&8mP zei$b!3vN{Eef(1XH9|vo-Vu-K4N~{3KuppJqj$wIxAisCw;}U!i0?lY8Z|WnGn@}4 z?6=Jn9e3gE>5nQW({LAMwg*$OvZ)MMWvMs7*2?rqj@!%;0p-q|Y_cvpNYU#vKBTnR zbvCY*R?2;4eKhF8b5q;bkiPBfx%Na#vFsd*9jGdwe59+n)H^@%{N@xtYm7i80OTp= zpUnPi?cj7-7{VAqBlB-Xqll2{ofWAq|lxJIKgM|zMfC7POZdjl7c7@-WJE}g2)$+Ty(VQu`KWSp`NSJ8v`)$(HNU6NmlHF5( zQs+?{@_RHy;c}@<#SFQ?elDm{mO>JQxa>?eMu--wDdR}-sdazH&MM^iSb|(;h?}M& zV6=%64-O5`D{*;O2B71&-GuF^5^uSN6DHPAdHwITZr$)sn8?01Lne0qNl z4R0<&tPt>hJU(&Ui_-FrqJ%0}=jn; z`hVf_VWU3Xr0#FH!cVw182=kC_TMde&tu>J7dRN=>817?IL|Zq)6@Bnn?`wh4)%tQ z&KAbtqTB!HQ7Ab){nFaMp$a~ucKvUtn12uW{uj`^(RAQO90-HophcgcZNWL?f8H?O NpHJhzzz3s1{13N1BBlTU 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 754dd91bb0a2f22f884d315a9446c6eab3c4108f..a1e728f876e1f60d6d8a1e3c6a3eacf3846784ef 100644 GIT binary patch delta 172434 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 Wz+)!KwIW`1|TGod`l7)cuI?2>1JiX8K)v+2?VH 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 K;%tThKmG?fp}_0_ diff --git a/CI/physmon/reference/trackfinding_ttbar_pu200/performance_fitting_ckf_ambi.root b/CI/physmon/reference/trackfinding_ttbar_pu200/performance_fitting_ckf_ambi.root index 949d8cebfc3546f86804af996aa8d43d8883d00f..02283c04dd6c3183dfc232f89239459df99fe3b7 100644 GIT binary patch delta 155483 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 KvX=!2^Zx;-?{3Zj delta 155281 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⋘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℞^YPE0355?m>KcS7e@p@rqsd| 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 LfQh0NLq-1wA8mWS diff --git a/CI/physmon/reference/trackfinding_ttbar_pu200/performance_fitting_ckf_ml_solver.root b/CI/physmon/reference/trackfinding_ttbar_pu200/performance_fitting_ckf_ml_solver.root index 0a40506d1bbb157e084c011c7355e0f89d8e4e11..ec28bba43f0eca53453dca776f1485555a312de9 100644 GIT binary patch delta 155434 zcmZsCc{o&m^gmHrWGt1)7L_D~?97k~DMXT8)lF(&Sk7D9s7wOdR~KbcsWn3y~Qp2R<4GG=1_d++#{n2tZW@9OS!OUC!r>wn}K z@KWB>)5AWY>oV8>!4%W|C;uPDKVc@OcYoroh87({rdhYnNWVzq9(Oosd4(3*V4BtYIBkNqC%@3Hksm=1tDG zzrM`+?BsY$=9;a7x7$5SxANBpy$K%Dt`6C0pPUP|L_ks7k1ca2`7I|8CDq7T!Kdas z$6?eE2sSIY1)CE*fW#D-dVKjkext(h_zz>?-b+53BWr41hh<&Y9m(RQ(zBHsYBu|y zaL8wo&Bty?;sclTcD+;bp6q*GSxLOBxShgBvTzcAQuegywbsLwk(ONK7t(m@W_INu z-sY9V(wXH-t+}tGRlua@QvUoCkM&nW!TKIq>xz{hAIe{naAqIb`^M~=FA&t3eYRXD z4A^^cPMlio%yDji$x*B8iIXieebil4ajD~~kaDYs)=@%Mk#png*#PJ_ujWzZ)IT-k z{q@@M zN3HeQfjkip{Y*!c9aFP|xY<;YtZ-oDBMR6#jRlU$_{_^JTpgHb_f$d4Hg_K&V=%96 z43~}%=qyZR=|FOpNSQk~%P)152Ow`>3(OWeN?Zcou?YApz*~3rmt1*Vd^rqvs9x$l zgcy5aDk{8d(o;!j^`Mk;c?Q2NI38Wm`G`t&tvOk=*0yRIV>w8SaYDu zUj&Fki24a%gs4e z$fEGRjS?`_DClf`FG*iIeMgIeIWsK&(gMWpbw9|iSG04lh$smedN2We9A({!ok)!M zs!m8xVF-~_7pqen^j^VyHCeO8H;z^}JzDH45q?3}W|V`nN&X?IvFMw@sf1dA9|BeG z;4im-IFRWl++?b)>pc}2yCl-w;ipw zkZn$O@#ww3$$r4FTg_spE$$4;Ee zL|x%;9QTg#e3FN#J}Ox$_?WVh0zXk*8>u(C<|8Zd|8+XgcY3(vUO6)^y`4J)Ls#`Nw73lRWRvt&2y- zar*Q4C0IQQhkV&4# zg4a}?xaO+zXd~MFWv)W&Yx~fRBzHS^){!&S41l@e5m3y;#IOA?x1n?Yv^}RfW)^uEWhu?jDmhUoc`AGEww{ekAFbSPU6|;yu7+`i+owxt7l){ zxvVHVTC;D1f}u+?G_YAN1M=kB*|{wu2EU0Kw+RLiE?d2QXU8VMPqPJ!K(Mc>Iyopa z!PBNSHrbaMd0uM~9`*a3#c?IJwE0WrE&EF4fm1W($elSIIQ|pfnGiU!(S5jqR2sM| zDH~BFk3PB@lSFD5%P@tG*EvF4O75B|rF^Vu(uQ`r6cO(+b`9R+vNFpW*5{ORXrJ!x zO#`@%BGo18&;rS`VUu!@M%y+mZ`x}@P%9GGEN+(b*0x701pYpG3Z1xuAC$5=DpS57 z(x|6sPX4bmbgQn?XkyOT4((UN&}R4I#@hbMFY_T!nAiP1YPDjc2K6Bo7=jy8 zAC5BgsK|?TQ*iM^)E63Ijp9o!eZj~D_90*Cuc_saTk>ee9e8OCA^kGk6^x}gwE(wl zJ0U?&A~EiweDEEBUiPlF8H6Vg{InpbMTmRO{PGx;_wpEHHGZF{sY|7jUSC(u;jxKd z)W&sPUAX6E3wl3Vj#ooI?8|ofKJcllJ$R+Iohqo&%sc;@M2#(BY;9yu*aD2+FGU|* zzWZj&s}Fk=<`>~gPhz`?7QUNG<*GNk;HFfHwHcVyYBoOxhA;FRTEV-*H&Mc4mR>(# zH^w{6YX`M0rYU%z^@92)PTA1aGPV(mV$fj7r)`$K201dALOw9wo znH}xT_I2qW7^6CZ^t9)7V2;gp2z+j2eiVFBQ23?rN0+8~xb+;E{AHiHbnCbH4BPEZ z9tdV$xHq%THrjs?m?`f(B)Frv@${PgmS=<#ns*72tLakLbg+XpY7j0vZc@V#z}FYk z?(_jaXw7qlz=wm{>3e-XZq%u6hS}y^0y%HfWswgv47Ugrf&-1Th>O50YT-rl>tLNd zM*DtwF2?hRaNK@f4Zugr+(g_z7~5n!Cqo&|V_aNZ7<~+%x`cBCzQ@wbgIu#0JoBY-h4pzfC-m+HpW!8SG!el)F6 zb#4MQ5%AL~>ARv2-OvU+PY)v6T0D6T84HAae5X(BwLWRE+mBkU(j?c^wWs(F- zJD!Ee&P7Nf=qWHxs82n~-0*#qaAf0avW!Ppv?ryK*fRHI;R_W^?<51%I9}m~8`G_u zcisFw)BGPSw0%2Mu5k3Yeebv?nOCQC?~9AYLA;)Dk-2lI&|S#+6Jj@ZW+Hrm6tWB5 z98Gubc{4wo`rcSWpC^YyeJ*rF@L40v^Yw18P{?(H29>o7>I$7Nu+V_1NsV1PJVthv zS(y{xTz@?gYEp_e8IwOB=Vo?cfvtK$rBQheMhSuK`ur$Gq6q0PZCe17ouC}k74ua8 zDP@$5Oj^KDSYCbN9F_6;cL87lJhe8g2(y6-ZSe$Z?iHvS%jhC)?nBPEf!gp+duRo9 zbL#aKsdYnA%L%j37&f`JSu^Rxx_6Q?c8F6?t(A^i9`4!QVsqp~#tGkOmmkGYkC(3{ z=pQ^d6l!dBrf3~Q&K7im6;g56S6Wf;^6CrsS|ht5$^In_qxnS4BoOjN^LA>1X3`ie z1h)UsH<7n>H>^cqZ=)-hjCdeTLq3rJ^iY_fKZ3nWOLst_WP+FQtM?eOyR8={hl2TN zqie*EDGf3(FOxAr0j@v|)w-LDY3C(v;z4`sZzX;vBH}VFgg*IyN0i4Y@2_uCQx+m3 z)YmpMzuq#8HCg$x1vs7g#<7U}IG;-E0#kH-Gu2x=JyH_vx%n&k`ORs@E^CVL`;8bC-?S`_G} zKVxl%990I>3zr20t?71A+qpt}-J?sis+@4`MJ<;B3=j*RJO&`*=t02IVEO4VF19Ab z=sFiL&JtI%Cv3{px+(*;J8<1xFqtneDNX z^0WtYN80WQY#M&WXLv(J2uYpo@YtfBK=axpTo03VU>h<)O}I>rZPIq|+J_Hpj*vO! z`d4SUTo4Ym{p=K{Utrz?_-@0gT_1&ONlMSahhviM*rj@iO4}Hv#H;8K!@6EPJ<$MwT4XlTXphBdl%6NX zpFu+FV$G8Y3!#|akeueB-FO80-ciE3j4pWpIX&vtp*S{$aF+U22&cKfMw^1HQIQ_7 z9jXgvQibg>f?XzPOIYq8ej(3*SpHOfm#WQB_Qx?#fpoLGXLAt-$Jrb=Hqxl(iNNp0 z9m$?$HkS)sK!b^r--u6KB6$ye)H0&8uLo<9c06RYv8O&~tTou~MSvL}4{RNEZH@}D zkDSGYG@!3B3G2e}h@0@#*QSO8u3glDmhU6DZq&RpY9onmm35<^ET~34PtEKH(a;$W zZ5MJeBD7^6W>im*)7wT>{}IwFO`yvny7FtalI`l!LM5RXA%ARHdLoC~0~ z7Y!kSp7kJ#4`g%x;hf&#Nl$u^;|D=h`DdE}1h~R*V=oC-X&bLRzzp7x$%eN_&-GS6 zc`YJ?JuM?gyX}Z+0j;IoqwG$I;cAI!KiqT3C`3Pl1*Umos9j$`J&TQs1rGyz9V5by zTM`G#I$+dz33y&6+HiVI!v_KsPKZ&z+H5qNb^kTq5*l_lAF+|v!qY`HM67{!Mzw7g z2mdY;)5ssOR3wQndu&!c~i00GYCJdfEces8678K^k6TdqIFM!nh75lRVbk+JdgY5=E+NTy_}l3+kGSlnN3hrwAg�rm1=H73MkJ3fLe5SS_u8I}gA>uIJm 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

194m6R^j&xXCKLFC5cO(vK~g}8Z-23 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 E4c=_LouBg0Mxfy2 z1~SSv!~1|IZaE=dk||M7Oj? z1te&y~@V%?Ia~WuS$vNKW?kGN-+S3)(pZygBdso3_HBRicO}qn2 znL0jO{m4ssW27-1e`BiX9Tej;=$VPe2c=`>11}s1JrVpg<{O)MlP!$xaAk<8w_;Mt zCS?aG)C@U4dOoek5^*EWrp!78D_#`af29^`{XXj>!9G^6_SI2t`T6@SdX;+jzpA~W zSAH3qd9zcJ?d6q=*q%?M8!0gl(gGx?Hi*?%?pq;AEQc4m;dB>UH|jcKrp-LA82#i> zVC3Lq{2@fQR38yh$D1MX_D(R{E5uD)+5@XNHo)!4i7p6brS_r) zf&VZgN{c@0cB;QeJTXM~x9`Fpis4bJSu>2>m~Y=l=ebFZ0h6r}+s3od!Z!x5^MA^uq-!nfhmSVPfVt8aJfvZg&~x|lw=cIlm_p~HjKLI3zn3+s?gI_&Zp z4e9TKB&SH69lfq#+6(l?otom8Ly|__Uuk`k^$q;)C>GWRbB@~;MR z@s_EH(=9;XneO2&;O_R;2jT9YKn=g)(jA$=L1+;F zp?uR1bGoI3z_)hREPw7Hp5*hz_oq%w7Jjz~gXgNmai&rW5B2`7$oUTqB=KQ9TcQZS zaPhx25a%cZ6)s+mA;vhizUkyQ8_`mA&JJ^Gor0IJnVtnRg2MHsx9Pq`&M6P+xxATK z%tl?ix38jUFUfLUapG;Nl;oH2L`j!)$H=PjM3InklZeBE?zb;BG)-2Rtum+-;M#8N zoF^vJ$R||1Vv0DJ?vGBf%}fErJ$Fy)TFfUAHnjDpVp1m1UCV)%Nt{zCDQ8IDH_&w< zlv2frKXSh3Tm5@`XJ*6`(N%wOMv9#)>x@8qbKuedq{0MCvJ|%c6*1{v#RXi;A^_t)lbtle_qs_^#OgBh+)2%j!*=u>6 zog3O+8=dX}_UY$a7|!h$sH)=N2H5vF&gVX~`w`L)i z&UbDkQp9=ajXNy*9A16vEI>c}qQ5>NXdbI&hW3e!?=5T=)DqDJVs@6-K)*`0qXhp< zNO#<8^NwKI@cy~Nsq}FNWX~ZWRWQV7uIJ+VxkVvaz^;%)YC90-3=0t$TI%RskqqZnxx2u+w&ssFPGB&o{_lw z@DUd8YOgNS5CB8@P^fPt+=_B>|LUwc>q7S-eTR!RT5*PQ?yZ2kMl+f({Q%~9*u3eX zwFX-IjF%7~HM{?IwZ5810ImMD{m~M>AS%0W)*F6`O`rDs0O%7bodu2RC+}7(!s2;V zWHvnM1R9(Esy0&}o-k_>M3#Txt7SG$1;9}Qegb(E|8#wzXmJcE@!Uj!_N?-;mRe-8 zpkfRTvn;_2?zayjg^c=5b=i~p(Gr*=-ZsOW~En<6;;}N@)&JO*Zir@V2U*_8F0nmuOkrKw_BD|h*@bT>mktp4)to zzepWlpn@h7T}{XkiTbk!_hLHt>te=phS_GhC5=0X+TUq9n7uU?mn*n+XymfbH#9n? zo++KB#(e1Vow%9s&Cg3~(yssh9%%s}N5B0N1uchB8ZvPk2`IWkA$t*UGcDZ*UgED6 zqw@1lJhw0UzAD8HrCYIFmg1Q>voU3PMWS1$v`j64!{foH)}POqKc1l94ScznrpEBY zg6Z96O%Gd4%4>6Zwqv#5=)eN4FNK4JyzW>5=f%QTY{oqfJe3&|Zd#Yxsu)Z%frdfZ z%*+*M*n`!hh$bZD$;Q7SXyXUlT=w7(VGu&UqSUh^n z`u5J!iTB^A;vsgJzPMYh%Ey`PS;x0}G^g^PR3+E2rQt;MKsK70aXE>C21?fSM=crn z&K+&lb3w@1X&bMxdxR6sj3cSEGgox{|DIn_@4mQ>FFH9H?f*K2lpOf(&(_SF!gH1Y z;k41kMxKZN{deN^-~)-?_tSb+6)Lh$MktUmo9+*%WWM%*E=tdqyb7;sr0Oybfw>oa~zZG`r4kUwfIUebkMc zI>a?Ir)f67w?8E-P~Y;$99EunJYr1k881k9XhlAj$jN!JAMnp_J|+L9&hkzW!jbyq z*yr;T%E>@fz!@uyO~usZ&sm7FFVx)wy*oic`1zlf=Kuvo^7Pht*r~ozz-ZP2sb+_z z3&mJ)yAOO#j1$U!^Io*`_o9OD1FvnY{OLl<>`nAP7Im;TeEQgNUOm3`se1SwJGuo` zr&5WH{)RtDJ=&{(KB-*2{y_75Mk1^FkVj~q5LQq2R%vd}TX=2<>!0)#w3!hslxsy- z>HVenR`D2M&ntI9h{NZA?jBuE%wfF{F?MxBiD9s=C9ce^m~RF9JxG3zR<+$fW-op1 zLvoy@Uk0CiYc%=ZSV?*G_JpLVi?rf^NP}+ocGbK3Ig&(usS5Ssl1=@Iz0VS_3M!XY z#Sfg7P&pH7pmHdG81CpcFc-X295eEq>86gH42?MFX9Mh`Po3Sj|4|s>T|Xg9oZH1}7F}>g~qG zod9?WbGD;oSZZQf!@GeY&eq5wMQ_-vI?JzqHKlDhbbFa-=QQ17eVeIMh+jMTZ+lEb zwmdVc&Hbg{r^EDJGJg@Wtv${*HJ< z8#(P4vSb#WloG=_XsYrBfzS?n5k1D$08D(rAD)CBjKP_VQ?FBhjZ-P%4h-<T01tet(XLpf ze*qHN`e*V{zYT2!CsBK0Z?tO~K&p)AJrNg?N|&F?F;Ka>cOR(SO8Z0P|n-H%vEsj~`aKiBoPAntee@Upu4vM8MuywwijXrpPHTvV{dlA|BI+)qV70%KU?x_{F zgR|IyeqZ!p(ry0NPb8Ist}HX`(Yylo;Z=Ul?|xMKcE3@--Ivb&H?PZhk~Qq*>K)q^ z=;hlqep&v`Q{`G{l;U54Uzq#oX^LEe6656 z5s{eNot>OH#`_AYV*5C~=wtAY{9}Zxq~j-Dc-fd>RZ(oXYrT-FuNE=O_WT96SA9%inYs6)4*dj~-lb@@m|9fmD3& zrD&0A(c#;^4qXsOTF;HYSU^V&;{(S@_nS;mKl_16JFsyy3jKRHXe|nuM4@!BvLUGp z?qfk{UFN{@E5Vshijo*6)H9ov zit<+SapS?pu8uleB^N7s@!u!V5)O@3SrZr;sm;jm6TVE9^9W15gVBfp5R+()kcY@6 z;L6)KB4|jY2zqPR1DF7hE6PvCU$;cW;YSB57onjTx@$%EIh(AWeE=It*V@gARg1W} z_0S1{8BPPAQl!kfda&hO>FK5&W5lV$^40|!ZC}XOS-!0SKZedYV?`O zZ>?EBF>Nz*_x=t!cMa^35Y(&{Rd5mdcdKPrzejlcs!1c$3iW@mal-S9uYa`i#@p#F zoVnr(Zq!^6?O%b`JXgH*8X@}S+^qRGrrjrNW_Q*yl-EqvYV&@`-#qu`<~UsmedI5d z^4=0NeO|q@OgTvL-r!a5U=P{^qFOIe9wRVb?<0QpV?+CXw&p^Vc?Q3J3=)Yju~K_8QPv zn770F*t*WH@L{h?C^0U0ArFx%^2*8BjcFT(CJ%! zFU6RSp&wHknl670e{^ghz7xe5rPXykO8eT?DA8-%2vfkC#5e?D4u)@-clsrY_4=jh zzHjI|{=+aw&((cR;EndfW<=2E6HOGji=(SADvS%ZIXl;Y>}Ol?>{30i81EnH{-rGC z<7M#jp>Gt|`4U4Y>;ZmC0F!2Uejt4GFW4&}u{Fb^sYbNc%j&zE+-hoA?}=754T*kZ z?Zp@k4cFC$f3NNT0~{$RiB~NU1`@gc8yr#pZH?3o^{t-q=}!LP%-2ejb@ut+G6wtZ zTdPa!ueGl|+;nIA7Q^~jY=d7oD(CBPV)FYdPp@1I$1c-+x}b5*xZJDy(`N?%$KkhM z$g(oCT-d+-aqmmPFN1};t%*kBE@W3WZ*FInr-WGYi?CH!9Q!Py=ZKuXr-i4c&3Zn;CfSH+6G@8XEjg<1gXt z+B&J;h_p%EE@pGkcaCRaVosq>f5CiV!*j!EV^CpqE{6hgUafzuxL3t2zrPv+7f}+$ zhJ2wAa5$a4iUv7^&5uZ?1Qc z+rNVID1mP|>Y;F%Hi^o$C->)gv_aSd=$u97+?9>G;UrtRfxf`*Jw9b4-n~{b+!(fW z9pK%&t0*SF_$+9^ty%gccL@q2)Q1uk@FX`l7A!f7Za^|6rQ;Kp;;_&=BJCkd*1Uj~ zX#}20aofKcl(e$d-dODGYZ@ng8Sh64TrPhQ7HR$R8P~E|`&==eP$Q2Fd)%k9!m1#> zPB(!btkEdBK3G3rzoG}RSvSQL29E-Dmxv4awnJ!N#CN+h1Hb<{79m@S;f zpcOfjFy6$|O`Kwdg~&h%88|$aUVcPrr7YA_h|7B5x@M2Yq>eSxD7nO+TE?SZ*L)ha zMc%1E;Iw9ij>c>LXz#F7w7b^GL-W-n9*Vx{a@dhtqeV;~DVD0Yz%f7qbB`}o8v#Z4 zk$+LO5k%)5fH)5%{-cdpQMD0fsy0HRY9m%uZG_@a)kc(p7%~$dVY*k^_rCn2jf5>n zQne9*<@SB8`xva`{w-O7H3)DY`~d#V12oSLN`)tRSPXWDq5Jf9NAs4S9e$>2Bh$wZ z|ItPk?ymt*sBSL=^1PP}G2RuTkM(E<#d|C$iZUMu`oHN#FIf%Pb}pzBsoIDFWhrQJ zNP3HYr+v!a?Jzi{$>3xVvwS_jDE7#g6f93P!1q)jc-xi|n43?cfxLzOh2tDo622O` zJl^iw+_|#&E=&E+Nh$X0ov`2TeE2BF7~5h_AY~+;Kj~yj>rfo)bjJ3oOj^sJz(bsZ z1p9)2u;L=!AnNoil(s5}R6+c+_Hp;k?ly#ncW+X@ixgIYtS)z{LK@CGcl{(grz+yT zth~EOp5E1+^#+8=LwPG||GcZQtI0{)k-&_@`{!Yl7M5vEUrZfb3^KK^+P%43vz-r+ zibj|rA95H~-bP8I;3JQngA8#)ba{ldWzA0OUoDqzYFptq&u%i!cOuC(>_5iAgczk(>h3YJPQwLvJG{2<<;CQ`c>dws~F`?keMRE z%D=;vqxX4M8Mp%I@6zVk4lkFy41j)rOi3F>4SZYRc6NcM2n;_x8odU+a>}N)Z>_fY zZQoQH*|T5pXfN;KR!cX0=YI2(q`-H?GWy%kcOOtQ^+TTAggy+h zB|Rplmt|_2ece6|zM8C}(-x0?6e~lz(H$Db7;_S?{caF(^olZj{LLlCN*!Qp8GH#L z=}QId`N3pQ8AMqZKdyhUf-cXrmB~#hTB|$Uo1tPPTJ|{4m-1F9tM>LL1D$LZLZ8fp zfWIs_5q^>qCcGa;U)KG#uA@v`k28H4P4eC$$>#9lhTGw>GRZ6Z^oUJ`=hE1}^h?%( z{TBXf%r7Paj$Nfj1d_L4z{!#r$nU1Rlb^m!Vv={)?pcCt%x-b%MD&?ju=_(ey<+l; zRluHLS0i_2{lTi-Qt?f1L#ZjPrJ}U4m07lYNRnc!3!sG^dUhkPRP_spEOuRC`R^(w zaucRGz6LqRyR)Kh9#Fh`e@evoqhp*{c3Jw=NK1)j)*Mf{whOH>!DwN`{U`NFQn7rcgv7@=f%NszA z&{ukG=1y?;4^xzZ@Yd)$>fSULyr}CBfY(X~#x=E@P*o!ke>6hg5zv(?3URS9|@}IA5 zUer}=Goe=aYGtUW(Ag4=||J;8s_ud#sd1IiGZqn>4YtmtLK^R4`w5_rx(l~ z_D6pNx5^0+Xj7QcE$4#`y}JgL!S1LJOg_|9{AXcLAHw+-lG4vcojYE2jaVO-eGp-p z;W#O&rRXp6&X5-^;*mkpSf2(KerYSXiq!|W4i9)QhBQwsHGU0a98qb2f8AKkn{?*9 zv+4lMMpC<48VDz=4SO3PQ??~Jf#YNKn!dyZ9xibbyGX9f?s%?p7^PHO= zBAb?@%tzTWn-J7&M>pyd2y#W?;jZp@7=2rg`P)X&;n}uG!d~xvsnhVx&#%Z$sD|_~ zioPOF;fe}9FUD5)jJJp=bDGS_%?0MwVeN@dZGiU+m<-$KOjnnlAsQ)y4)Jf(lbY7! zv1F%?vYz%(1pbcaqUoe8ETH45*VBV?UI+`Ow;gW{fwQ2&bk0^X2jngy70<|0T<+iU zI8+Z}p(gLos-XGNQAoboY8AET$(OLX+Ju!G!xm%+i~H9g z6b)QPuKz5hFo*fLBSriR(-(N)2hAIeGTH?m1b73dj*^-mFh;jwtNR5vOE?Bbo=v)p#P#_V(HvNXSYf)W8~Uo5PESoaurRQr5}us zMF`ZT$9w8?UN_rZ$zwiV*TGmGswfbmWj(Y8%_h@MpO-)Zl&1$TVG#Y@V)-T>M&(s5 z$uIYZ%PyjuVqqY#=c>XoeTt~}hT@?VeDNI}>cRv<3{A&*r-VXy1~eb`_&*(N^-ocM zfeHq{1bhE|25VY;7q89hGsvunK3~rW@@nD3E<-$AcKM{p9=yAEpo34-EiC+)`@?F# zh7F+OPriqN=EQzzU*Q=nTO$1&*}`nea(br-K?gf!lP}?~@>1*a(N-?$R~4@Cy3e2W ze&SUo4wv^!FBF2E16(f7s+Urr(a{qFTbGke zRsqqiWf)Nx(YSGw&*G6tM6ku_CPrW*m_j{7A~qHwzv!-YeA3ur1s;0_lSf7KdWITK zW6rJenm=Ir2y*{WYv~%ndWKyVg!|{Dc+VeRg2}r%0V2mKLUrqV^M2a>SApWlXeN25 zub$7-Wk1a&@?OY@h+NLc$74Tq$SP7l1cM@i<@$S($<=*mvZ6eyE4>^94!Buo=3gbL z?Zxj!J$wBjgj$R3eiOE=0ANYX@GzMfx=qgq;$67j9}>_XOOjXdTYuZ$9z$6^HVGyW z{WpORhnk>%0YT)+3O#3t&gqF=)si*OAhRAEx*mLz9jO)5es=hRya!y#R{siNDN`rO za};qc4sqizI%t;fV82~Ji&q|Xfmu=hio*7ySQ3HwWvGBM`OuJ*b~^wE7VExJjF%?- zG+%39kzW<3M}2~0#X+P=EBDP0>uC8yB_J;oCV%|yDzm56lM*PDs-CnY8?K=}t>U#$ zC;P7}dftV}MJnY3z*An&4=^Um-xBf?{RZFW3&O;QItDeTO-KjRXAA!h>`6AJ7k#7u z(rWt60DtIlPh`Ln_!vJBxm@5~A#!qjc6dta;G~HBP+)UZn~meE-`fFdsqD}tAdNCy z;J??ye0x7CsQ8!p;RVd!TD|lJ=Ud+5YHTft##|Ap20jRV*+H@ZCM56@^Jh+}7RA$F z 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

{BFO2hMj&+y-ZlPP5T^Q-&K@|o5-YAX21zaiZ+ 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 O7r-2fa_u`uOO?FH^4ykf z>reUQ2WH+Ey4iVj<6v+|XK{X>Oo&$u@0KmFO&>}Aemce7))nbNq(|tj|tK2(ae*XU{Yc!bu!=jIl z`tPzPargt|A!UKlcr#&5V`gzIwGE7__f;S9a*ZM_tVtA1EUYYPIsvAlWS!ObnzrRB zl#6~Tzo}N}wiK&>>hm<=k7k@GhG}$0_(7N!aapk(cj&SmVtiQ1BuCTEPX zt$ckTIzjE&_c81s1;R;l69uFU48nK1R0VZv^ss zo+qWwm&&_8PwU;h93X(Ul{s98=c|euOsWOnY(#g9Q1aXLG4rD__w{?voCT-(wrYya zcC5=2|JHlg9HBkd>}PYK1} zpC6;9`POfryT^FMXV8wu9aX*w&7d?StzTg{%SeVL0&vWaJO1JHS{uapkez6~f!JtK z0Ie`Cgb2px_7;gM;}9b5FTGp988-U@}3c2K9?Cqy65dJ7Q%h_ zinGJkr@$tDUPk_ghKS7;iWDx!26wT8L!ZU-#!bQV`EPWxYK*wSG>mw>;kg%)`6!8@ zUeSwJI+elNjQPsiZ+eI*q^OA7dP{Kgfz)&qnSAk_P}!EOophwa{VCUTe7MKvT523oUcy(D zE3+m^Puod8vQ=KlskS{m+foahl;7nW<{{(~w$sCT!je|;(baI+IU0A2k4$|Owd3P9 z-^8>6YpN?WYMt;oqGH;}Cg;9T9pGPKzV>Qtdh=XC=WbSH!DkVAt(boJ^(f?M!!HXX zA?Gl1*W+X%cdAvXEjDdqSJM!s%qs22Iq;U&{e?x_!H_x>&ktiYZ#_Lf!RVU{o6YIT zW*hhOz}@Vh=GjkOhXLrXFINQdNE8%mLXDqlop>*7mSVCFp<#4cKOb^d;1L%8$VUI) zq!pIn9fCnpkCm>f-~$~ZIODR?pn#3mBUWF<9xY5M%W@YO*U-!(NqR_Jl zuLnVy@}mU@}$LC@;Y5$HltL)&`R%(4!$KhMUc?!w-Wk@XXrW2~# z`oVSUm5)c3e3yvX=Of=X+I5nm^L)qA&9fFIVJ&U%$;k@^aNOwhW?K5e{q*Jiw^j4Y z{Ed^t0hz{4;Jn3W;?{scE&9ac^7isF_t(w+Y-8&v^$k4DyD}aaME(!;3Jf8u|3*k8 zj9e8=zo0ERLhJ7O(R+)=B=9Sud3@OIodH4KyW9X#MIT^J#psFFzTrA}pryak_2HH{#&)jN^0ZSUj-@lU%7;!F_($-qPNVT&Qco)yr3S zXUWBNE8hCmbHIkq)Qhr%v-Zr(^7E63^~K|HC%eMN7rcnpH(w)$t+KWDNz9A1D)0F{ z)0<5VInzM|8b?%f(ofV6BmlgnFADl8F)NZ;9}DkyMVei*s?Iopdt1ljj+A?w9NX(= z@5}cQYg@Yx-a4&9_iMNQpETEJX4WGomwz5hpiK$GWr*j>X1@>rQq)jg{pxf3i@LZ;-XC<(uW%c(3S~bzb2TaWc`tpB;0u zH+YYB{{6D11hD9%j0BW?v#v_LSVpkm4iQJ9L#nV`oMHvOqXu0wxOQKX!S^%Tr)IFy zRGj0mZ?<`vbyGMZ7c9Y0@&8+&!Z2|L28lg-jl@>Dbl9Px60VvUfi6?eI8|VT_-96f z_LvAsp!OYCZ&(3sa-N1dwQmlK4XNO|?Vf<4wU9c6DfV>gcp?gaUWoiOTlz^AQl^Q7L?(5J2Ne0rK@`dd$eC0!mC z{CV}@O5(Ad0N&@zw9)(2#?ALlX!q0pcQFgtBzr4;1j0fvZUiII+~*tN^qmgx4Q@kD z7X`F=r1$_6i6+~($UuK2xX;7T{4~$g0D2Ps#4QnZ9BK#Jv3>~a(yES za9n+UlQQr_@J6|DN3>v;;C8M``5)^lh|Qm{xPh+wb`DoUvBg2Yc! zmWAkKfV&BQR%0~oT;e-Yo66gjX{H}%HHU=cloEDq=dhp&8 z4AG13pg6x|*wM`YfuVS4<;eWIXl#BcGkS$tv0}J{MA2{}DL)wJeu?<_90BbG6=lf< z2nQcAQ1o4yUs&O+_H%?A>27KlrdvX9E|~M!JCK*3A}w$bJE({9IB_<+Ny}ir3!)5< z^AmDDilspcI$D`>Am0l?3E+k-yWoP&q3%g5PrZOfRQWv|Ws!)=Kn1}##{I-UO4baD zg*eDfZ8n{zf0pUEp{?xf=V#7lA5*!_>A`!)P^3ba$t(oYncQ1u@zEjWniECjS=M(s^Y+O+jA8;CqwW~y8Ug!`5j&Z#?NBWR|0 zoz#G5?Yev1+cC+fzioH7?naJW$B%T}-za8Jlf9tpQ#-FJZP<4fb!U8C^~yr)^nDL; zEsL+gDH9*?_B0`h(maqr!aTUlTv7>*lYF?iKbL|kI+7d@6HPi;O>Fo)Y>J;j6n^D} z__$E0j?e9@H@gMdSF*V6?0w}{Ydx`I>X}!<{7Q$h$J~c%qq#nbzL}MEF)cxd((A2r zcQX6=KjGRblFDD5!85JL1rJk`imo<5Dx6!{LMQdWup^eOQ)0z*rI$j)B##rX!Y(K}xU{w9n zNy0TB)M=!3bAciVok~FlgOYj)=jy^l4qoMcWcq@&$S#!8AE~Me%g7E=M3EjnQyBP@%}}4y8HSD=k~Szq9v!+ z6?t^5UN;c&#@VBKVwN?S-vm1o9*h;goc|7xt3RJt>2w?9X_O($1#I1Fr{B6v&!BQK zX06+_jjwPOxM*gp3Fe(D1x3>*P7FL-moxkHlCfCN-a_*-LZTfL^i(%5QnA4T9d`}N zOVTPAlvMpY|JaGTNw$mC!+7|4Z18S1RoM%k#9_|wJb!}bn2iN-UQGolsM2>aGg$uu zyv>*yj%G8ed<%6>4)Mk(TkJK?IKo*d&|ZLZ9I2Z!w7v$NfOB{hPj%Nn^%iT4GNKJU zFI<@B4NwuaoIMcyaZ&YS(cg0LJWt*#cHeDU!w#_^X7cSk7ayS*Pq|0(L*w#)Aqf92 zF98_Y=*jj#1P=VqPHu%XE0U;ShXB@5q&x_?;WAt-s-UDoWeHUOY)o3zfS@2;xtEO> z1nBR`&`7Xnc>G$xss?`2+A5S;lqyZkZ&E@CI5&r8k}%%LLxyBehJ~G6H!@nWpHV9m zgv8OYMSvT-e~7sLp13jqCk#^qNuD-LxL8zlli9fIv-G+g8#{abT2?nZl|So7EB@ax8g$2aKd8oRv?=E$R^1JN;jKU z%vfJ)y_v+EVkc21sI)B%s3Q>$V5wJVQ_cVrXZNYoS54(9G?Pb{FFYob@Cpf;2IC!t zlq*68v=mvjpRkn2+%sR*?EnezW?>&no03g|9BeFnquw> zBe1~l9cp!!U@Fj5;jX3!8sTeLo=~#-fK#t%A#b zn=8D=*2ggrhx$FoShkx>4k}3l3!I-7ox!`BlhtPX^R*bTXfMFu z7Dl}#)X;w7v)SUc*nBQ1dVo|NAdlk#j>!>cC3{N=7&%@{B_03zdHRwINRp;kL$i!N zr^%;-ax+;J7;uXcsljonj5RjfP_1qBZWfulrc8LV{sEH-n`l4_&qjj>IGJQEBoz5(BD#|bP%KV(2svZM-q&NS&V{bue_8GVtV#s#6kZ7jn+IAi zzWHPSTR-=Q_C4dtVS9@&aOPNBr-Nn5n{Sbgz#Eidn-sG*B2cff1>SXt0iu%+gYiF$ z@qd3klk_gUNnri_M)ca#Y|5kEU`KV}oZs;L$0~x19J_>Qw<-9Quce+ zF3~0;KiS!)Wm!JUrtOus>J3jg5*^g0k;a`k@3&GBvrP~`fWRwmR6;htN3J1O%U-pG z80v*yG-l)r9g!q&XVc29l_t8jL)ySAn+MQBfT8E-ZN+UH%f|Ng{Zis}G8BoUh^)z^K=RTd>xwH^JUaZ$CDRUy7A5`egsxJf<&cm1i!lc3~TJ>tlN*5(s) zQ8}fCQJ?n1#pX?~h^00J!hjlpqy+^VgzRI{0BUJFa~4X=QmA14jkuu>>Q9#gb#**e{qA}&>G2~`~b=ZFsb3!ms}1bwk)vUKh_7=L?(ys!eL2tR)UWq~U5jZ*(sak8SoV`im%|G%O;?q@ z#4pyL*JQY4xG|{kT~l7_*|EA_T0Rs8lXnzi`^7#5$^dc`CO6K?LB??l6Xm71xYgK=MKG_569(>VeOJDBFM$ zC2w;_G|0eyO!_^jL3ip^&5S8OzaY8n`(z%!k%cAaUJZ<%;iZBm!U*6sz6y(VKs6YF z(J$27O`OMmUF~vxJ|#_Y%Nvp59*dT6B6%AY^99Pkcpruu4v`)+Aj$L8#X--;+b$Gy&y2NH4ZME z%tsm-_=g)g`vrqCm-1qV5UPl$oYLgI`8YVAg;f^3@;@dZ0(t{VavR9e%e?aX#c?u& zt+8JPfdrPQp!$;-^Orr|AM%SBo?hl)cAT-u-R7I0XMO3_27aGaznl$E8X59Zis zB&DT&PM1vF6yaQk3O!WMBk1QvH8D-my`jJiV zQKvsYGaa*V2SWZwdp*)3UhwpIKu!1*3Opj_;KA zSIKRa<|#R6v&D^rk%Ctfvhf8&`Tfzl*3oy}v(myiAT8|kjqfsjj1Ew-WIx6BrG{<} z-NHE?hNN+)&HZ4#?dGS_6P+6Dx@6pa2I0#z);Z_Sqg(PD;|D4Uw+@(G!wztof;AW4 zHLp#0ka>gHMqT_NBMHQKSC298>%VOlXbi!&Bf)#*$q;HE#~*uOgLNT7cEotdkMa%w z_Mo9QkeJYCkRUr8;Kjpxh{~|{wEqg9cK<$8MKx2GkyID`SNJ>!gOvYjHd0c;Gsf`@bt)U{vC!*Mig` zFKOd6&Z~x<+|fE_oIu>@7QgVsQ-2Eb3uQby)6=5Ef0dqYb>6(=(8Z_-f^Vm_+51sG zS~ys&#S(Ma?n59OEGXRzs=Z*1RLlg_=6v|~nolRUg&);BdqjHuoe)cc4 z>2}sDr*HfBQ*p63$gS73cxOl7`T|piD??BByLJ!9Pc8nulRVDwiS3-g%IlEsc>$ab z>091}#5-@B=r$?lZI3r`aJS-=D|)(DmfbDjm`Q`06v`lE>rLBVw||{}#y1|1mVb80 zxLfKNpE#ISZF?04lwLgr_j^p-=oB4&>|5ZG+L-2?8H>7nYNBsF*5WX5gSh(X(rjYU zeD>zq>ZhL8k*6nvZ56gCthTuCzpb()z{vOh|l38KE;gI zr@ryKX_Y7{ml8G?PO&Pu)KV+VwiBnd_`Y@ceU$I(%|#?_8~|V`4BF{>b5FQ?Nz6Df zpTiqOB5FgMiOSHOQ=Lw(7>4YWXG>>rkM|-qG$KTl&ikXU%^1r}x z^sm+=h@70R3U*&#L42Gf1&Zw+b)xd8hN_0Do@spRD`j9WdPVnV`O$|s+nqoOU0$fj z4U)gF|G_+Y)0T9}Skj>DW|6MLNZS1q;-~Yx{wL}8L-U;HLyg7*EyY}FJ5*+AC7C*F z49WBZ@2BOm^VSQh#S^}(GI1YPuhgr`GTnuz;3>WP7Lq|HUn|G=R)A$+Jne(tXKNl; zh_gRAc3lQ=omX*p$k5m+9m$GxcmLX%gwK#eUqbzBHLpqgVw=oejorL!p~En@D;Bga zSGd`V(|coTF51qv0kFd`TLLbp?e3+9Ycs=ZQe%a?4F&Eb{#cApBN_;VwA|ti^p|x1 zh~_k8f?OBUZn2^H7U3Kqd40SfZo=9_K<Xwdqw~1j3a*tm zob_vHBG%FK^0Nsf)Aaxi77y%Ee}_eZ7SqIX7c;mD;>q++dIB2By91~%>d|YFk2DR= zMzGeiRHk+Y;583K?Q|xMeZ>uMoA1+!?52}6%5RDYzj1HrZ?VFvJ4yo>m5qPd!trXr zWec!hd^+XsA=zl1R71`oobQR6QD0{MI*cKg;q598uW?SNeWi(zJn4??*zz@Fo-e64 zd>i~TbSE??QYyQ7v_FBYop2YV=+G0jt-gUO1CSY2`X?AnUOvL)AKmg!tAE1;>E8+Y z4eWSd=Fz1<6s#s-yc@$CH8B>|J;~qL-GP7TQSvlTh?t%hyi%A*2&ui*N~kSldhIt$}M@)h|Fis!zHok2@P&57y{<<3aFU(na1F9q&>o|H6*AS$=X(_s&*#sH*< zc|V*h8yBDy*w=Ien{%bTmt5(H+Rgq1(= zRSxRq)0(fhbuSl#N6sz{v!O+1sv}8!)H}VguhZeBa5m8?J?U*&vn;Rq>lC1Ol^AAF z%iEn%t~)_{-)}tkpQ$L$-MlZE41>nE(52P-sGil$m#;p1?>+tIIFY&+8GBec9*B*| zw{P0~^31#0JB7kFBG^;?YtEiV;%%G~j{EOfM5 zCLnvlam>>-Z%=8y)u&(mtSB)N{{ASWq{-Xn%-rJ2n)tG6dr zIwggitSNSbhSJLuWA)c`IiDj?Ud%=rCk^@++zwY6? z9vkXOea9v^0OJlvM#;`F8?O%LMme>hMXXk{Ze>JSsav#WM<4IzPn5+BIC{jdwCQMi zYBcQ;So{b(B8_lbFq83^-JiCgwSW9*2w#sofrZ>#6u@g6wL@@|+3h`#Q%^I|JQA|) z3jIY!BoKdu<1E0w;D1oPZ42GH%tSivXh0*AE}FCM1~!L}I%>}spa(RB&nOCdr6^2I zBt=`c`MKMLHtc9O?7G^q^buct!dO(sh6ch`Yai+5Mm!=u<=EmgtjzcjH;B5z;V2h= zNe63#`ye+Gez%fp;NKQ}M`m$vtH+vmxXUaKMX+1q7nc6c?T*nnm$Ml;hPZ}lU~xo3 z-;xUuz@YJ0Q{z9N;r<$8=uQG`{tb;`*~bWDL5mdKKv-%bkU+=~i-FfrS3g2Ry*!>vBFI_U-*Ez~O*mz&V z#rVf|GAtqRuKrx6Ug20lU6Irb)xu__F>n#B6yupvh!yuu5=A`X*NzNqLy{t0kr5>o z1$G14I{nkl{ihf*_`eL7HpW#tE{Ty|An76P`y>Ng3OA^q_+8v_zBu>?+FEB4?nJPx z4H5*7=5VgStq|t)(5bF&F1^&=%2|;6Zkgv|r&f{<-W2g#yh;;_y>XV#oSeIRpGi=4 zR_B?&{YP+JML4`oN&tD6C#Ge8@c8Y-cwZZ|cq}@bMWX?!IVu`fUc#|Ih86WkF9AGe zxSp`D1N{#Vh;HWSX!y_W=xZ=Y{V(4!`T^D*9jb&!LxnGah=YS(i{iR0=4>X1nWr55 zvw&V>f~)cTD+WGJL6e34Fk09JNUR|Jia?xDNQBUJSJruxVm{n`BLk|Jkh9eLq!D`Q z>%`#%9L}>P5v!XrW#n?ezG(aWvY!z*shFp}{yIInXYRIhiZfw`<0)$97}c2rlgzYv zDU<3OO(*S;6@D-}zIg&9x&uX(jYKiKn14QF}Xd=5*h?en}W@A^6itF%kZ z-p7Q!S}V{0Lt9Sa>vPR{MVq$u#n#u;`edQX18@%j7L-RRUm9HFRsa+?n;6*-&SOmY zsQKJedJo#5yw-B;u+g*FSvq?+er~rv9eYz=@kg>O$^hm)lGaL0@lVXjx8vO8192!` ztj@5h3fUoMBbs-nYAvU9MlNamo(&rPX2;8XLGOwL}J( zdzhkm2yE~xWT4kAA+wvGJhj^kz?ylDDA2DKO4`=DA&BU3bIX5>?!o^vV4{p2T+{6h zzv#5#gXn;y)Uv)SZqn78#q(Z+mt@t4fnw--v7so=NoGiEhUoCVjpvXub`yKlMWZ!JjDfzJ7hjs`MLjO3HB^{PEWp{J z+qrzED$Vff92MeovRUB`To0w3v<*e!j_2J3K85UjK8JqwO;v=1Yl>ath0fM{djS~t zvuqiGtOl=tuR^2m=j~V9xf4z9hvu4%rCVB8TPBugVol()x73d=2YD!vSiEi8Q?WdH zDVvb#`4##2n7&wVeryIf)>zc6XGa2VnQ>Mfeixx(Lj5bG%2un7MRn77*ZFI|oawA8 zEj~{l+r@N9549z;xM2^}u1_v8uz5kEc=`VobLHVsu5Elq$r_@JtTTj|Y{?d3lwFaX ztc6h7w-H8`Y*~ji$)251Lze7&5k+Y1sxgrnLZa}!^d0A%FXx=T>-w(i`|rKpxu195 z=eeKfexK)e|L&hXS8I)pp=WTC`a`V0{HRe~kPpY{1IZ)rqm#L9ONz~I$E42k8VUy) zhnAh}8{*Q{6&2mJT%n13kHX}?_&Fv`OqjQae8}nIe>Jf_ycu1v z5|`>6QU_@OEzD#9WO(rX-AH2s+6goPwYziXN1#E^1<-(P(5nGYQ4(cQqJ+s_O)d&l zgVolv5Y6oG=8d-^#H>6;SzFi?hiFcg?bZ?=xN`-lC7gg|fB|_NwZJ|mk|M!D54zmV zN_pl3RR}Q^oH-&3_0R-|IGqM(vWaIbAEX=u85jkCn?+m#`_y%C<>2P0U_Dwo6&+J@ z4LHI<;_~qxa1QM7@y#X>a~_>25*%K&FC?faxT|F#yI&OP;jeRL(t#qEj!#~Lp2PqG z^$~B70bTr2w77lp|2J?RXt3Kw>L1JEx5L~QbW~tD-A*@AUnmqAW9$+jXw6$ZA_Y=` z!*n@T{npLd%l4FaZi93wL7;|CWeVW=)7wM1{|_j|Efl&Zfn^&DECPcncYyc=O--eX z41pa*?aJYirYse4amOLA3MtO8i<(j?v+?YA&4jXqv)+UAn5y>WrrI=QSV9pSA-GEW zi?z%ZN%#ktY9HRr^X}I5;<4`dG)yoevxExGo&-Jyuj44M&x{DrK-DYd*r zI40ipmOx?IXJ4xn5KCuNWFCE!yAXjg%$H0FbX`p0R|+y@l0b>dcTiP9%@`k1e@OGS zJhw=y{6yCCj;~288RIPeqO-W;9^?jo1-4Y#@kzgJt6lCXNDgURd&0}&lUCG*sR-{P z)7Cq55w6R$B{;2?^~D-0CfvMS%hO`MEfmIawV?j*2?>hiN#Co({XA zngCFRo0mM`(YctTQ-f2j@=5vd-rEvaomxRRgqOV{` zo0YMm>jd*Qs2(->8a=veCT&+?u*4LnI-LNxH#PAfQRzj1h;e8;jfR`&7nD|L8_ zV+{qh$yYrTbjIG`8zcur9^pbJ-rOJgx_UcoYfy){6iVV+VOt#YJdj%AlWiQQN3WeZ zuaCmXqz@rAg#v`N^i@Jx`d6j4^5bAH)K+_V%UDBMhCWycP0w5D8K%DZ@}RPK-H_nh zhp)|Ou@Yg~UyH^~aT4UqxE3jwLCY-C0D?;t~^`HUQ-W^B;;m<{22)1Qv=2 z%TR6NbYZ}*jv#PVN3pByflghKBh{vcJeK6Rt+q`rNvD~Sz?x6~@~w4~i#cBPptXG= zo4_Y?ZzK`2y>>^zAncE|`vTBmU})1$FjQjDKYU2aYpR`CXq+fte~9bG0>V_VKFA?) z@HWmgB?B4mN7Ix#xCNbTH~6Rk4al!zhSa=CCC)aNNUy%Eh6!v#JKs{=i7xyTsc^!G zqDtI&Y%z!;{&l*_fli`XYSCRhHG1u}A1dd-SPyqTi-fo3Lg~Q`jw-rWxtF#$AN#l9foyB?rn$V|mo2q%g*oeGN7QOb zRC>T*_E1Yfd$#xdd*xRo3g1_Clw}kfz6PwAmr~vaggc&D(XE%JRWe~M@5N3M#AYwL zh0_L1s;|ETc)_$Xh&0~b4*7UF6UxI&d2&z)!SX_PdL|0Jd1QTv0BPetIU+fpTYpyg zb%UlbdX-{Q$r0W@YxJ%~;tE_$9yKo7PN6m^rEuTr1}hgfT4KHETCNdcVu|rF6mQfS zYSODj0DC-!?9x&^WQXkS^^NS~0tWv6rAaI&92c%2H_5E;+FyRmruB@a`?6ITi#jcB0v$I%uwfT~ zl~Yarj;S%h$G=FoSNa9G5oGu+kg)DoAgT-CKS&*po}J> z5~#yNXG3N=1tRs%r7;DX^i!4{bj6JnT?np;{@$+faRj430ImQ@kSei7-w2Z9BUQt1 zmwd~w#fXd9)_|bMwB`0v%a{pv7*auazj4KUN&|M{)O-)eCa$kO_~WEp%EoFaz}sGb zdVBd3y$|vV>QGuz!@_ru46OT2BiEDK7O3OgLne`~$Wi6|H1IXD2 z9-Fgs-#y1$KKu8~A%myqwj6a|dbg4we60%49=B683qEKAd``df$^JtEA;M#KOF+Am zOTVa%+J$)E{uT-18?K>&j9$ZeQz}GUR=9^)Fy$9Zoi6K-A~$ZlHY^mo!HCAHx3ziM z&wW;^^<|_YZz0d@N;4&ezSR-du+sX?dkq1(z8`RW`AFK{*?#B_i*fU!D<2 zm`!CNlY2aMRj)+~J=I0C>6zglY@@WO>b802{rg*&03L3@a;e+brcG3Q>xcjmwYBE7 z{N`Km^wbBM+ThRJ0frU684=@W0}-@@yw{zab=7%iy^GoWIa7G0xMz-;NKze@!E5VG z0K5hv<4%u-wiQ}WnZE0tCssIS8`rL^)DF;Gj?m99DxbS)6K!^i?KO0cT=Sv8%Rx>P zZ+Yk?K3GrZhS#T0aWBYGL*}kt`9@t~%SI)%A9YI4*>!3(y)Be&@sF0Cmr|&GM2e4h zk2hl+s`u~opIspG!p{o2);P!b!rV}4>-Lrd*6Hqp2dX(txb@ykn=r1njPsvYQt68C zoV%sB%-<5&c2gH1*2(F`GI|;B(Np;lK>$b zJ#gngG%f#M>WG|D|ELfL^u=mtoB!WygK;taSvv_B7rDFWtZ3dJdN9AspK<@EK+OM4 zkp}fEq9Z^Tf2zv*No)czg6@pNAL@92QeXm%{#=N=UB~-VB`)CqJ&H8Z+ObDbJ2PlU z-RY-7zrEh_r`j>VXpaJ--SG5JWzeYKV4~mZpns{X0Ql2?q?rSK{)IAV%RRZPyRQ%M z7yq&h`j18c$#HkI{zQjEm)RZ$(9*rMBhaKc2(?!9wa^U?l-tvBZ$c0|)84d`ZBK(+ zw`0-1=R3H>j$UJOB>Gu0>-JASwZdFLqcA(I8g^PW@3h(xbxdJ;(vdh##G=gxqa! zZ|6b~g(@lyuvJ)<)$uW=d3vlzvp?}BDS+hXO&LQi&G1Ry1*RxFOi;yxT#%1bFj{V| zcHF0#)P-~070HFmM&1>Mqo(c3^rqm-PLanU!hrybY?wl7O>xX~vb*;~KbxgUPT>W6 zvNC@HZgSy6_RUr_fv#?X`HjC|E*c72zI5Y#mrmzwt!kjbSVKkTR?KWE=i<<9U&h&W z7lUnfi&ND%=YtMJ5o2WE79}Z-&7MP9)+u-V!h-zFNWF1{Nlpk#UTPp~9HvMk?VxWH zgG-qcwC}+Vh+geJ(aq@Su_(j(C7j4ucqGAEP5K!75tWcvL3A#(@4yV zlS>wO>pMs@t2COZykgC)gHfM1OfbE%kM2O z&p++}y9gH#lc#lzuVxTK9Au>3hahK)WTOlfDwLueJqPES;vV2JesQ+T|bxv^MBp=DZBq^(>(WFb?t!-SWz>aJkblth;HN;-7Dmb_c(>631 ziaXzioz9+^(V|Cg>)j9!O)7eGef$`ZUsDACUXdwZg_9q+xar-J&SnUti|b~@$Dgi5 zEIe|^Z_L7sQZlp7d;2{z7uLQ#hQb@@4w(#Ojldd3rERs+y@`bxuzt0751Je@S*ect zN`N3C08>cubCHr}X}ATG6Log;y@GwChlt#BpCrUdws*gGXY(zcGiJN&@7q$mL|!&- z?H};AHXxVR>Y$ACLyW<}#%ZQGrI2cpt=;SHsxB?4xSeQrv!@WarI|O=5+x1Cj^8j_ zCM4Ggyc%40)#H~38CbX<20XUM%G(VGG(W<@E(13b3~K(N$lD7K**-FOm5dL9T{9k@ zQG0t#UDtl*7{9R6@uFg!sY#|+(z8Qdy@^FQoI+p&O3^uTbkr*;ibo1!gqgu0pRN>{ zbzfS-kmR0-lVp1tgN!H{$qu?u+AEPOTt_q(Tqw=aeG*arHuSyV*FFSP)RtQMky2ok zg*3H$YxO;vD`)oGFxXA#4pL`!oAFiaj>o}GFH-408>z8J)w6IGV;s1AYURc1w7U5( zg2pU(P&XxYBiD&k#@Huw3Oz6Hzs2v{Jl*Hih>fjd-Ku@nyKe}fZIZrYoM^s86LNHiQg}zyPWlu9K5<&k0pw(h` delta 24157 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 v!+ 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

FTXTA65#U-93taIGG)YEz= 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 o(MW)YC~oI&P>5PtuPhqr%Wz15+bYJ!c~ai_@% delta 192698 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≠J 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 = options; } @@ -57,12 +60,12 @@ class DetectorNavigator { /// created for every propagation/extrapolation step /// and keep thread-local navigation information struct State : public NavigationState { + explicit State(const Options& options_) : options(options_) {} + Options options; /// Navigation state - external state: the current surface const Surface* currentSurface = nullptr; - /// Indicator if the target is reached - bool targetReached = false; /// Navigation state : a break has been detected bool navigationBreak = false; @@ -81,8 +84,7 @@ class DetectorNavigator { : m_cfg{cfg}, m_logger{std::move(_logger)} {} State makeState(const Options& options) const { - State state; - state.options = options; + State state(options); return state; } @@ -106,8 +108,6 @@ class DetectorNavigator { return state.options.targetSurface; } - bool targetReached(const State& state) const { return state.targetReached; } - bool endOfWorldReached(State& state) const { return state.currentVolume == nullptr; } @@ -116,147 +116,109 @@ class DetectorNavigator { return state.navigationBreak; } - void currentSurface(State& state, const Surface* surface) const { - state.currentSurface = surface; - } - - void targetReached(State& state, bool targetReached) const { - state.targetReached = targetReached; - } - - void navigationBreak(State& state, bool navigationBreak) const { - state.navigationBreak = navigationBreak; - } + void initialize(State& state, const Vector3& position, + const Vector3& direction, + Direction propagationDirection) const { + (void)propagationDirection; - /// Initialize call - start of propagation - /// - /// @tparam propagator_state_t The state type of the propagator - /// @tparam stepper_t The type of stepper used for the propagation - /// - /// @param [in,out] state is the propagation state object - /// @param [in] stepper Stepper in use - /// - /// @return boolean return triggers exit to stepper - template - void initialize(propagator_state_t& state, const stepper_t& stepper) const { - ACTS_VERBOSE(volInfo(state) << posInfo(state, stepper) << "initialize"); + ACTS_VERBOSE(volInfo(state) << posInfo(state, position) << "initialize"); - auto& nState = state.navigation; - - if (nState.currentDetector == nullptr) { + if (state.currentDetector == nullptr) { ACTS_VERBOSE("Assigning detector from the config."); - nState.currentDetector = m_cfg.detector; + state.currentDetector = m_cfg.detector; } - if (nState.currentDetector == nullptr) { + if (state.currentDetector == nullptr) { throw std::invalid_argument("DetectorNavigator: no detector assigned"); } - fillNavigationState(state, stepper, nState); - if (nState.currentVolume == nullptr) { - nState.currentVolume = nState.currentDetector->findDetectorVolume( - state.geoContext, nState.position); + fillNavigationState(position, direction, state); + if (state.currentVolume == nullptr) { + state.currentVolume = state.currentDetector->findDetectorVolume( + state.options.geoContext, state.position); } - if (nState.currentVolume == nullptr) { + if (state.currentVolume == nullptr) { throw std::invalid_argument("DetectorNavigator: no current volume found"); } - updateCandidateSurfaces(state, stepper); + updateCandidateSurfaces(state, position); } - /// @brief Navigator pre step call - /// - /// This will invalid the current surface and current portal in order - /// to navigate to the next ones. - /// - /// @tparam propagator_state_t is the type of Propagatgor state - /// @tparam stepper_t is the used type of the Stepper by the Propagator - /// - /// @param [in,out] state is the mutable propagator state object - /// @param [in] stepper Stepper in use - template - void preStep(propagator_state_t& state, const stepper_t& stepper) const { + NavigationTarget nextTarget(State& state, const Vector3& position, + const Vector3& direction) const { ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) << "Entering navigator::preStep."); + << posInfo(state, position) << "Entering navigator::preStep."); if (inactive()) { ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) << "navigator inactive"); - return; + << posInfo(state, position) << "navigator inactive"); + return NavigationTarget::None(); } - auto& nState = state.navigation; - fillNavigationState(state, stepper, nState); + fillNavigationState(position, direction, state); - if (nState.currentSurface != nullptr) { + if (state.currentSurface != nullptr) { ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) << "stepping through surface"); + << posInfo(state, position) << "stepping through surface"); } - for (; nState.surfaceCandidateIndex != nState.surfaceCandidates.size(); - ++nState.surfaceCandidateIndex) { - // Screen output how much is left to try - ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) - << (nState.surfaceCandidates.size() - - nState.surfaceCandidateIndex) - << " out of " << nState.surfaceCandidates.size() - << " surfaces remain to try."); - // Take the surface - const auto& c = nState.surfaceCandidate(); - const auto& surface = - (c.surface != nullptr) ? (*c.surface) : (c.portal->surface()); - // Screen output which surface you are on + if (state.surfaceCandidateIndex == state.surfaceCandidates.size()) { ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) - << "next surface candidate will be " << surface.geometryId() - << " (" << surface.center(state.geoContext).transpose() - << ")"); - // Estimate the surface status - auto surfaceStatus = stepper.updateSurfaceStatus( - state.stepping, surface, c.objectIntersection.index(), - state.options.direction, c.boundaryTolerance, - state.options.surfaceTolerance, ConstrainedStep::navigator, logger()); - - ACTS_VERBOSE(volInfo(state) << posInfo(state, stepper) - << "surface status is " << surfaceStatus); - - if (surfaceStatus == IntersectionStatus::reachable) { - ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) << "surface " - << surface.center(state.geoContext).transpose() - << " is reachable, step size updated to " - << stepper.outputStepSize(state.stepping)); - break; - } + << posInfo(state, position) << "no surface candidates"); + return NavigationTarget::None(); } - nState.currentSurface = nullptr; - nState.currentPortal = nullptr; + // Screen output how much is left to try + ACTS_VERBOSE(volInfo(state) << posInfo(state, position) + << (state.surfaceCandidates.size() - + state.surfaceCandidateIndex) + << " out of " << state.surfaceCandidates.size() + << " surfaces remain to try."); + // Take the surface + const auto& candidate = state.surfaceCandidate(); + const auto& surface = (candidate.surface != nullptr) + ? (*candidate.surface) + : (candidate.portal->surface()); + // Screen output which surface you are on + ACTS_VERBOSE(volInfo(state) + << posInfo(state, position) + << "next surface candidate will be " << surface.geometryId() + << " (" << surface.center(state.options.geoContext).transpose() + << ")"); + + state.currentSurface = nullptr; + state.currentPortal = nullptr; + + return NavigationTarget(surface, candidate.objectIntersection.index(), + candidate.boundaryTolerance); } - /// @brief Navigator post step call - /// - /// @tparam propagator_state_t is the type of Propagatgor state - /// @tparam stepper_t is the used type of the Stepper by the Propagator - /// - /// @param [in,out] state is the mutable propagator state object - /// @param [in] stepper Stepper in use - template - void postStep(propagator_state_t& state, const stepper_t& stepper) const { - ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) << "Entering navigator::postStep."); + bool checkTargetValid(const State& state, const Vector3& position, + const Vector3& direction) const { + (void)state; + (void)position; + (void)direction; + + return true; + } + + void handleSurfaceReached(State& state, const Vector3& position, + const Vector3& direction, + const Surface& surface) const { + (void)surface; - auto& nState = state.navigation; - fillNavigationState(state, stepper, nState); + ACTS_VERBOSE(volInfo(state) << posInfo(state, position) + << "Entering navigator::handleSurfaceReached."); + + fillNavigationState(position, direction, state); if (inactive()) { ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) << "navigator inactive"); + << posInfo(state, position) << "navigator inactive"); return; } - if (nState.surfaceCandidateIndex == nState.surfaceCandidates.size()) { + if (state.surfaceCandidateIndex == state.surfaceCandidates.size()) { ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) + << posInfo(state, position) << "no surface candidates - waiting for target call"); return; } @@ -264,74 +226,62 @@ class DetectorNavigator { const Portal* nextPortal = nullptr; const Surface* nextSurface = nullptr; bool isPortal = false; - BoundaryTolerance boundaryTolerance = - nState.surfaceCandidate().boundaryTolerance; - if (nState.surfaceCandidate().surface != nullptr) { - nextSurface = nState.surfaceCandidate().surface; - } else if (nState.surfaceCandidate().portal != nullptr) { - nextPortal = nState.surfaceCandidate().portal; + if (state.surfaceCandidate().surface != nullptr) { + nextSurface = state.surfaceCandidate().surface; + } else if (state.surfaceCandidate().portal != nullptr) { + nextPortal = state.surfaceCandidate().portal; nextSurface = &nextPortal->surface(); isPortal = true; } else { std::string msg = "DetectorNavigator: " + volInfo(state) + - posInfo(state, stepper) + + posInfo(state, position) + "panic: not a surface not a portal - what is it?"; throw std::runtime_error(msg); } - // TODO not sure about the boundary check - auto surfaceStatus = stepper.updateSurfaceStatus( - state.stepping, *nextSurface, - nState.surfaceCandidate().objectIntersection.index(), - state.options.direction, boundaryTolerance, - state.options.surfaceTolerance, ConstrainedStep::navigator, logger()); + ACTS_VERBOSE(volInfo(state) + << posInfo(state, position) << "landed on surface"); - // Check if we are at a surface - if (surfaceStatus == IntersectionStatus::onSurface) { + if (isPortal) { ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) << "landed on surface"); - - if (isPortal) { + << posInfo(state, position) + << "this is a portal, updating to new volume."); + state.currentPortal = nextPortal; + state.currentSurface = &nextPortal->surface(); + state.surfaceCandidates.clear(); + state.surfaceCandidateIndex = 0; + + state.currentPortal->updateDetectorVolume(state.options.geoContext, + state); + + // If no Volume is found, we are at the end of the world + if (state.currentVolume == nullptr) { ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) - << "this is a portal, updating to new volume."); - nState.currentPortal = nextPortal; - nState.currentSurface = &nextPortal->surface(); - nState.surfaceCandidates.clear(); - nState.surfaceCandidateIndex = 0; - - nState.currentPortal->updateDetectorVolume(state.geoContext, nState); - - // If no Volume is found, we are at the end of the world - if (nState.currentVolume == nullptr) { - ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) - << "no volume after Portal update, end of world."); - nState.navigationBreak = true; - return; - } - - // Switched to a new volume - // Update candidate surfaces - updateCandidateSurfaces(state, stepper); + << posInfo(state, position) + << "no volume after Portal update, end of world."); + state.navigationBreak = true; + return; + } - ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) << "current portal set to " - << nState.currentPortal->surface().geometryId()); + // Switched to a new volume + // Update candidate surfaces + updateCandidateSurfaces(state, position); - } else { - ACTS_VERBOSE(volInfo(state) << posInfo(state, stepper) - << "this is a surface, storing it."); + ACTS_VERBOSE(volInfo(state) + << posInfo(state, position) << "current portal set to " + << state.currentPortal->surface().geometryId()); + } else { + ACTS_VERBOSE(volInfo(state) << posInfo(state, position) + << "this is a surface, storing it."); - // If we are on the surface pointed at by the iterator, we can make - // it the current one to pass it to the other actors - nState.currentSurface = nextSurface; - ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) << "current surface set to " - << nState.currentSurface->geometryId()); - ++nState.surfaceCandidateIndex; - } + // If we are on the surface pointed at by the iterator, we can make + // it the current one to pass it to the other actors + state.currentSurface = nextSurface; + ACTS_VERBOSE(volInfo(state) + << posInfo(state, position) << "current surface set to " + << state.currentSurface->geometryId()); + ++state.surfaceCandidateIndex; } } @@ -340,19 +290,15 @@ class DetectorNavigator { std::shared_ptr m_logger; - template - std::string volInfo(const propagator_state_t& state) const { - auto& nState = state.navigation; - - return (nState.currentVolume ? nState.currentVolume->name() : "No Volume") + + std::string volInfo(const State& state) const { + return (state.currentVolume != nullptr ? state.currentVolume->name() + : "No Volume") + " | "; } - template - std::string posInfo(const propagator_state_t& state, - const stepper_t& stepper) const { + std::string posInfo(const State& /*state*/, const Vector3& position) const { std::stringstream ss; - ss << stepper.position(state.stepping).transpose(); + ss << position.transpose(); ss << " | "; return ss.str(); } @@ -362,7 +308,7 @@ class DetectorNavigator { /// This checks if a navigation break had been triggered or navigator /// is misconfigured /// - /// boolean return triggers exit to stepper + /// @return true if the navigator is inactive bool inactive() const { if (m_cfg.detector == nullptr) { return true; @@ -386,48 +332,28 @@ class DetectorNavigator { /// - attempted volume switch /// Target finding by association will not be done again /// - /// @tparam propagator_state_t The state type of the propagator - /// @tparam stepper_t The type of stepper used for the propagation - /// /// @param [in,out] state is the propagation state object - /// @param [in] stepper Stepper in use - /// - /// boolean return triggers exit to stepper - template - void updateCandidateSurfaces(propagator_state_t& state, - const stepper_t& stepper) const { + /// @param [in] position is the current position + void updateCandidateSurfaces(State& state, const Vector3& position) const { ACTS_VERBOSE(volInfo(state) - << posInfo(state, stepper) << "initialize target"); - - auto& nState = state.navigation; + << posInfo(state, position) << "initialize target"); // Here we get the candidate surfaces - nState.currentVolume->updateNavigationState(state.geoContext, nState); + state.currentVolume->updateNavigationState(state.options.geoContext, state); // Sort properly the surface candidates - auto& nCandidates = nState.surfaceCandidates; + auto& nCandidates = state.surfaceCandidates; std::ranges::sort(nCandidates, {}, [](const auto& c) { return c.objectIntersection.pathLength(); }); // Set the surface candidate - nState.surfaceCandidateIndex = 0; + state.surfaceCandidateIndex = 0; } - template - void fillNavigationState(propagator_state_t& state, const stepper_t& stepper, - NavigationState& nState) const { - nState.position = stepper.position(state.stepping); - nState.direction = - state.options.direction * stepper.direction(state.stepping); - nState.absMomentum = stepper.absoluteMomentum(state.stepping); - auto fieldResult = stepper.getField(state.stepping, nState.position); - if (!fieldResult.ok()) { - std::string msg = "DetectorNavigator: " + volInfo(state) + - posInfo(state, stepper) + - "could not read from the magnetic field"; - throw std::runtime_error(msg); - } - nState.magneticField = *fieldResult; + void fillNavigationState(const Vector3& position, const Vector3& direction, + State& state) const { + state.position = position; + state.direction = direction; } }; diff --git a/Core/include/Acts/Navigation/NavigationState.hpp b/Core/include/Acts/Navigation/NavigationState.hpp index 0e0d8e5af9c..e2a7cb96bae 100644 --- a/Core/include/Acts/Navigation/NavigationState.hpp +++ b/Core/include/Acts/Navigation/NavigationState.hpp @@ -10,9 +10,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/Units.hpp" -#include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" -#include "Acts/Utilities/Delegate.hpp" #include "Acts/Utilities/Intersection.hpp" #include @@ -59,15 +57,6 @@ struct NavigationState { /// The current direction Vector3 direction = Vector3(0., 0., 0.); - /// The current absolute momentum - double absMomentum = 0.; - - /// The current absolute charge - double absCharge = 0.; - - /// The current magnetic field - Vector3 magneticField = Vector3(0., 0., 0.); - /// The current detector in processing const Detector* currentDetector = nullptr; diff --git a/Core/include/Acts/Propagator/AtlasStepper.hpp b/Core/include/Acts/Propagator/AtlasStepper.hpp index da832863fdb..4a103bcaae5 100644 --- a/Core/include/Acts/Propagator/AtlasStepper.hpp +++ b/Core/include/Acts/Propagator/AtlasStepper.hpp @@ -28,10 +28,11 @@ #include -// This is based original stepper code from the ATLAS RungeKuttaPropagator namespace Acts { /// @brief the AtlasStepper implementation for the +/// +/// This is based original stepper code from the ATLAS RungeKuttaPropagator class AtlasStepper { public: using Jacobian = BoundMatrix; @@ -78,7 +79,7 @@ class AtlasStepper { bool needgradient = false; bool newfield = true; // internal parameters to be used - Vector3 field; + Vector3 field = Vector3::Zero(); std::array pVector{}; /// Storage pattern of pVector @@ -115,9 +116,6 @@ class AtlasStepper { // Previous step size for overstep estimation double previousStepSize = 0.; - /// The tolerance for the stepping - double tolerance = s_onSurfaceTolerance; - /// It caches the current magnetic field cell and stays (and interpolates) /// within as long as this is valid. See step() code for details. MagneticFieldProvider::Cache fieldCache; @@ -143,11 +141,13 @@ class AtlasStepper { const BoundTrackParameters& par) const { State state{options, m_bField->makeCache(options.magFieldContext)}; + state.particleHypothesis = par.particleHypothesis(); + // The rest of this constructor is copy&paste of AtlasStepper::update() - // this is a nasty but working solution for the stepper state without // functions - const auto pos = par.position(state.options.geoContext); + const auto pos = par.position(options.geoContext); const auto Vp = par.parameters(); double Sf = std::sin(Vp[eBoundPhi]); @@ -179,7 +179,7 @@ class AtlasStepper { state.covTransport = true; state.useJacobian = true; const auto transform = par.referenceSurface().referenceFrame( - state.options.geoContext, pos, par.direction()); + options.geoContext, pos, par.direction()); pVector[8] = transform(0, eBoundLoc0); pVector[16] = transform(0, eBoundLoc1); diff --git a/Core/include/Acts/Propagator/DirectNavigator.hpp b/Core/include/Acts/Propagator/DirectNavigator.hpp index fd85f71af91..46acae90411 100644 --- a/Core/include/Acts/Propagator/DirectNavigator.hpp +++ b/Core/include/Acts/Propagator/DirectNavigator.hpp @@ -13,7 +13,7 @@ #include "Acts/Geometry/Layer.hpp" #include "Acts/Geometry/TrackingGeometry.hpp" #include "Acts/Geometry/TrackingVolume.hpp" -#include "Acts/Propagator/ConstrainedStep.hpp" +#include "Acts/Propagator/NavigationTarget.hpp" #include "Acts/Propagator/NavigatorOptions.hpp" #include "Acts/Propagator/NavigatorStatistics.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" @@ -27,29 +27,42 @@ namespace Acts { -/// This is a fully guided navigator that progresses through a pre-given -/// sequence of surfaces. +/// @brief A fully guided navigator +/// +/// This is a fully guided navigator that progresses through a provided sequence +/// of surfaces. /// /// This can either be used as a validation tool, for truth tracking, or track /// refitting. +/// class DirectNavigator { public: /// The sequentially crossed surfaces using SurfaceSequence = std::vector; - using SurfaceIter = SurfaceSequence::const_iterator; + /// @brief The nested configuration struct struct Config {}; + /// @brief The nested options struct struct Options : public NavigatorPlainOptions { + explicit Options(const GeometryContext& gctx) + : NavigatorPlainOptions(gctx) {} + /// The Surface sequence SurfaceSequence surfaces; + /// The surface tolerance + double surfaceTolerance = s_onSurfaceTolerance; + // TODO https://github.com/acts-project/acts/issues/2738 /// Distance limit to discard intersections "behind us" /// @note this is only necessary because some surfaces have more than one /// intersection double nearLimit = -100 * UnitConstants::um; + /// The far limit to resolve surfaces + double farLimit = std::numeric_limits::max(); + void setPlainOptions(const NavigatorPlainOptions& options) { static_cast(*this) = options; } @@ -61,27 +74,31 @@ class DirectNavigator { /// propagation/extrapolation step and keep thread-local navigation /// information struct State { + explicit State(const Options& options_) : options(options_) {} + Options options; + Direction direction = Direction::Forward; + /// Index of the next surface to try - int surfaceIndex = 0; + /// @note -1 means before the first surface in the sequence and size() + /// means after the last surface in the sequence + int surfaceIndex = -1; /// Navigation state - external interface: the current surface const Surface* currentSurface = nullptr; - /// Navigation state - external interface: target is reached - bool targetReached = false; /// 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); + const Surface& navSurface() const { + return *options.surfaces.at(surfaceIndex); } - void nextSurface(Direction direction) { + void nextSurface() { if (direction == Direction::Forward) { ++surfaceIndex; } else { @@ -90,20 +107,23 @@ class DirectNavigator { } bool endOfSurfaces() const { - return surfaceIndex < 0 || - surfaceIndex >= static_cast(options.surfaces.size()); + if (direction == Direction::Forward) { + return surfaceIndex >= static_cast(options.surfaces.size()); + } + return surfaceIndex < 0; } - int remainingSurfaces(Direction direction) const { + int remainingSurfaces() const { if (direction == Direction::Forward) { return options.surfaces.size() - surfaceIndex; } return surfaceIndex + 1; } - void resetSurfaceIndex(Direction direction) { - surfaceIndex = - direction == Direction::Forward ? 0 : options.surfaces.size() - 1; + void resetSurfaceIndex() { + surfaceIndex = direction == Direction::Forward + ? -1 + : static_cast(options.surfaces.size()); } }; @@ -113,8 +133,7 @@ class DirectNavigator { : m_logger{std::move(_logger)} {} State makeState(const Options& options) const { - State state; - state.options = options; + State state(options); return state; } @@ -138,196 +157,159 @@ class DirectNavigator { return state.options.targetSurface; } - bool targetReached(const State& state) const { return state.targetReached; } - bool endOfWorldReached(State& /*state*/) const { return false; } bool navigationBreak(const State& state) const { return state.navigationBreak; } - void currentSurface(State& state, const Surface* surface) const { - state.currentSurface = surface; - } - - void targetReached(State& state, bool targetReached) const { - state.targetReached = targetReached; - } - - void navigationBreak(State& state, bool navigationBreak) const { - state.navigationBreak = navigationBreak; - } - - /// @brief Initialize call - start of propagation + /// @brief Initialize the navigator /// - /// @tparam propagator_state_t The state type of the propagator - /// @tparam stepper_t The type of stepper used for the propagation + /// This function initializes the navigator for a new propagation. /// - /// @param [in,out] state is the propagation state object - template - void initialize(propagator_state_t& state, - const stepper_t& /*stepper*/) const { + /// @param state The navigation state + /// @param position The start position + /// @param direction The start direction + /// @param propagationDirection The propagation direction + void initialize(State& state, const Vector3& position, + const Vector3& direction, + Direction propagationDirection) const { + (void)position; + (void)direction; + ACTS_VERBOSE("Initialize. Surface sequence for navigation:"); - for (const Surface* surface : state.navigation.options.surfaces) { + for (const Surface* surface : state.options.surfaces) { ACTS_VERBOSE(surface->geometryId() - << " - " << surface->center(state.geoContext).transpose()); + << " - " + << surface->center(state.options.geoContext).transpose()); } + state.direction = propagationDirection; + // We set the current surface to the start surface - state.navigation.currentSurface = state.navigation.options.startSurface; - if (state.navigation.currentSurface != nullptr) { + state.currentSurface = state.options.startSurface; + if (state.currentSurface != nullptr) { ACTS_VERBOSE("Current surface set to start surface " - << state.navigation.currentSurface->geometryId()); + << state.currentSurface->geometryId()); } else { ACTS_VERBOSE("Current surface set to nullptr"); } // Reset the surface index - state.navigation.resetSurfaceIndex(state.options.direction); - for (const Surface* surface : state.navigation.options.surfaces) { - // make sure we skip over the start surface - state.navigation.nextSurface(state.options.direction); - if (surface == state.navigation.currentSurface) { + state.resetSurfaceIndex(); + bool foundStartSurface = false; + for (const Surface* surface : state.options.surfaces) { + if (surface == state.currentSurface) { + foundStartSurface = true; break; } + state.nextSurface(); } - ACTS_VERBOSE("Start surface index set to " - << state.navigation.surfaceIndex); - if (state.navigation.endOfSurfaces()) { + ACTS_VERBOSE("Initial surface index set to " << state.surfaceIndex); + if (!foundStartSurface) { ACTS_DEBUG( "Did not find the start surface in the sequence. Assuming it is not " "part of the sequence. Trusting the correctness of the input " "sequence. Resetting the surface index."); - state.navigation.resetSurfaceIndex(state.options.direction); + state.resetSurfaceIndex(); } - state.navigation.navigationBreak = false; - state.navigation.targetReached = false; + state.navigationBreak = false; } - /// @brief Navigator pre step call + /// @brief Get the next target surface /// - /// @tparam propagator_state_t is the type of Propagatgor state - /// @tparam stepper_t is the used type of the Stepper by the Propagator + /// This function gets the next target surface for the propagation. For + /// the direct navigator this is always the next surface in the sequence. /// - /// @param [in,out] state is the mutable propagator state object - /// @param [in] stepper Stepper in use - template - void preStep(propagator_state_t& state, const stepper_t& stepper) const { - if (state.navigation.navigationBreak) { - return; + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction + /// + /// @return The next target surface + NavigationTarget nextTarget(State& state, const Vector3& position, + const Vector3& direction) const { + if (state.navigationBreak) { + return NavigationTarget::None(); } - ACTS_VERBOSE("pre step"); + ACTS_VERBOSE("DirectNavigator::nextTarget"); // Navigator target always resets the current surface - state.navigation.currentSurface = nullptr; + state.currentSurface = nullptr; - // Output the position in the sequence - ACTS_VERBOSE(state.navigation.remainingSurfaces(state.options.direction) - << " out of " << state.navigation.options.surfaces.size() - << " surfaces remain to try."); + // Move the sequence to the next surface + state.nextSurface(); - if (state.navigation.endOfSurfaces()) { - // Set the navigation break + if (!state.endOfSurfaces()) { + ACTS_VERBOSE("Next surface candidate is " + << state.navSurface().geometryId() << ". " + << state.remainingSurfaces() << " out of " + << state.options.surfaces.size() + << " surfaces remain to try."); + } else { ACTS_VERBOSE("End of surfaces reached, navigation break."); - state.navigation.navigationBreak = true; - stepper.releaseStepSize(state.stepping, ConstrainedStep::navigator); - // If no externally provided target is given, the target is reached - if (state.navigation.options.targetSurface == nullptr) { - state.navigation.targetReached = true; - // Announce it then - ACTS_VERBOSE("No target Surface, job done."); - } - return; + state.navigationBreak = true; + return NavigationTarget::None(); } // Establish & update the surface status // TODO we do not know the intersection index - passing the closer one - const auto& surface = *state.navigation.navSurface(); + const Surface& surface = state.navSurface(); const double farLimit = std::numeric_limits::max(); - const auto index = - chooseIntersection( - state.geoContext, surface, stepper.position(state.stepping), - state.options.direction * stepper.direction(state.stepping), - BoundaryTolerance::Infinite(), state.navigation.options.nearLimit, - farLimit, state.options.surfaceTolerance) - .index(); - auto surfaceStatus = stepper.updateSurfaceStatus( - state.stepping, surface, index, state.options.direction, - BoundaryTolerance::Infinite(), state.options.surfaceTolerance, - ConstrainedStep::navigator, *m_logger); - if (surfaceStatus == IntersectionStatus::unreachable) { - ACTS_VERBOSE( - "Surface not reachable anymore, switching to next one in " - "sequence"); - // Move the sequence to the next surface - state.navigation.nextSurface(state.options.direction); - } else { - ACTS_VERBOSE("Navigation stepSize set to " - << stepper.outputStepSize(state.stepping)); - } + const auto intersection = chooseIntersection( + state.options.geoContext, surface, position, direction, + BoundaryTolerance::Infinite(), state.options.nearLimit, farLimit, + state.options.surfaceTolerance); + return NavigationTarget(surface, intersection.index(), + BoundaryTolerance::Infinite()); } - /// @brief Navigator post step call + /// @brief Check if the current target is still valid /// - /// @tparam propagator_state_t is the type of Propagatgor state - /// @tparam stepper_t is the used type of the Stepper by the Propagator + /// This function checks if the target is valid. For the direct navigator this + /// is always true. /// - /// @param [in,out] state is the mutable propagator state object - /// @param [in] stepper Stepper in use - template - void postStep(propagator_state_t& state, const stepper_t& stepper) const { - if (state.navigation.navigationBreak) { - return; - } - - ACTS_VERBOSE("post step"); - - // Navigator post step always resets the current surface - state.navigation.currentSurface = nullptr; - - // Output the position in the sequence - ACTS_VERBOSE(state.navigation.remainingSurfaces(state.options.direction) - << " out of " << state.navigation.options.surfaces.size() - << " surfaces remain to try."); + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction + /// + /// @return True if the target is valid + bool checkTargetValid(const State& state, const Vector3& position, + const Vector3& direction) const { + (void)state; + (void)position; + (void)direction; + + return true; + } - if (state.navigation.endOfSurfaces()) { + /// @brief Handle the surface reached + /// + /// This function handles the surface reached. For the direct navigator this + /// effectively sets the current surface to the reached surface. + /// + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction + /// @param surface The surface reached + void handleSurfaceReached(State& state, const Vector3& position, + const Vector3& direction, + const Surface& surface) const { + (void)position; + (void)direction; + (void)surface; + + if (state.navigationBreak) { return; } - // Establish the surface status - // TODO we do not know the intersection index - passing the closer one - const auto& surface = *state.navigation.navSurface(); - const double farLimit = std::numeric_limits::max(); - const auto index = - chooseIntersection( - state.geoContext, surface, stepper.position(state.stepping), - state.options.direction * stepper.direction(state.stepping), - BoundaryTolerance::Infinite(), state.navigation.options.nearLimit, - farLimit, state.options.surfaceTolerance) - .index(); - auto surfaceStatus = stepper.updateSurfaceStatus( - state.stepping, surface, index, state.options.direction, - BoundaryTolerance::Infinite(), state.options.surfaceTolerance, - ConstrainedStep::navigator, *m_logger); - if (surfaceStatus == IntersectionStatus::onSurface) { - // Set the current surface - state.navigation.currentSurface = state.navigation.navSurface(); - ACTS_VERBOSE("Current surface set to " - << state.navigation.currentSurface->geometryId()); - // Move the sequence to the next surface - state.navigation.nextSurface(state.options.direction); - if (!state.navigation.endOfSurfaces()) { - ACTS_VERBOSE("Next surface candidate is " - << state.navigation.options.surfaces - .at(state.navigation.surfaceIndex) - ->geometryId()); - } - } else if (surfaceStatus == IntersectionStatus::reachable) { - ACTS_VERBOSE("Next surface reachable at distance " - << stepper.outputStepSize(state.stepping)); - } + ACTS_VERBOSE("DirectNavigator::handleSurfaceReached"); + + // Set the current surface + state.currentSurface = &state.navSurface(); + ACTS_VERBOSE("Current surface set to " + << state.currentSurface->geometryId()); } private: diff --git a/Core/include/Acts/Propagator/EigenStepper.hpp b/Core/include/Acts/Propagator/EigenStepper.hpp index b1ed263d3fc..5dd61626f3c 100644 --- a/Core/include/Acts/Propagator/EigenStepper.hpp +++ b/Core/include/Acts/Propagator/EigenStepper.hpp @@ -21,6 +21,7 @@ #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" #include "Acts/Utilities/Result.hpp" @@ -71,7 +72,7 @@ class EigenStepper { struct State { /// Constructor from the initial bound track parameters /// - /// @param [in] optionsIn The stepper options + /// @param [in] optionsIn is the options object for the stepper /// @param [in] fieldCacheIn is the cache object for the magnetic field /// /// @note the covariance matrix is copied when needed diff --git a/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp b/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp index 5c4eaa87da6..6e1364a16e4 100644 --- a/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp +++ b/Core/include/Acts/Propagator/MultiEigenStepperLoop.hpp @@ -221,7 +221,7 @@ class MultiEigenStepperLoop : public EigenStepper { /// Constructor from the initial bound track parameters /// - /// @param [in] optionsIn The options for the stepper + /// @param [in] optionsIn is the options object for the stepper /// /// @note the covariance matrix is copied when needed explicit State(const Options& optionsIn) : options(optionsIn) {} diff --git a/Core/include/Acts/Propagator/NavigationTarget.hpp b/Core/include/Acts/Propagator/NavigationTarget.hpp new file mode 100644 index 00000000000..ce23132195b --- /dev/null +++ b/Core/include/Acts/Propagator/NavigationTarget.hpp @@ -0,0 +1,46 @@ +// 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/Surfaces/BoundaryTolerance.hpp" + +#include + +namespace Acts { + +class Surface; + +/// @brief The navigation target +/// +/// This struct represents a navigation target which is communicated from the +/// navigator to the stepper through the propagator. +/// +/// @note This incorporates `std::optional` semantics as the next target might +/// not exist. +struct NavigationTarget { + const Surface* surface = nullptr; + std::uint8_t surfaceIntersectionIndex = 0; + BoundaryTolerance boundaryTolerance = BoundaryTolerance::None(); + + static NavigationTarget None() { return NavigationTarget(); } + + NavigationTarget(const Surface& surface_, + std::uint8_t surfaceIntersectionIndex_, + BoundaryTolerance boundaryTolerance_) + : surface(&surface_), + surfaceIntersectionIndex(surfaceIntersectionIndex_), + boundaryTolerance(std::move(boundaryTolerance_)) {} + + bool isNone() const { return surface == nullptr; } + + private: + NavigationTarget() = default; +}; + +} // namespace Acts diff --git a/Core/include/Acts/Propagator/Navigator.hpp b/Core/include/Acts/Propagator/Navigator.hpp index d1df6025717..221963d0020 100644 --- a/Core/include/Acts/Propagator/Navigator.hpp +++ b/Core/include/Acts/Propagator/Navigator.hpp @@ -12,15 +12,17 @@ #include "Acts/Geometry/Layer.hpp" #include "Acts/Geometry/TrackingGeometry.hpp" #include "Acts/Geometry/TrackingVolume.hpp" -#include "Acts/Propagator/ConstrainedStep.hpp" +#include "Acts/Propagator/NavigationTarget.hpp" #include "Acts/Propagator/NavigatorOptions.hpp" #include "Acts/Propagator/NavigatorStatistics.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" #include "Acts/Surfaces/Surface.hpp" +#include "Acts/Utilities/Intersection.hpp" #include "Acts/Utilities/Logger.hpp" #include "Acts/Utilities/StringHelpers.hpp" #include +#include #include #include @@ -28,8 +30,7 @@ namespace Acts { -/// @brief struct for the Navigation options that are forwarded to -/// the geometry +/// @brief The navigation options for the tracking geometry /// /// @tparam object_t Type of the object for navigation to check against template @@ -59,11 +60,11 @@ struct NavigationOptions { double farLimit = std::numeric_limits::max(); }; -/// @brief Steers the propagation through the geometry by adjusting the step -/// size and providing the next surface to be targeted. +/// @brief Steers the propagation through the geometry by providing the next +/// surface to be targeted. /// /// The Navigator is part of the propagation and responsible for steering -/// the step size in order to encounter all the relevant surfaces which are +/// the surface sequence to encounter all the relevant surfaces which are /// intersected by the trajectory. /// /// The current navigation stage is cached in the state struct and updated @@ -73,13 +74,11 @@ struct NavigationOptions { /// The current target surface is referenced by an index which points into /// the navigation candidates. The navigation candidates are ordered by the /// path length to the surface. If a surface is hit, the -/// `state.navigation.currentSurface` pointer is set. This actors to observe +/// `state.currentSurface` pointer is set. This actors to observe /// that we are on a surface. /// class Navigator { public: - using Surfaces = std::vector; - using NavigationSurfaces = boost::container::small_vector; @@ -93,12 +92,13 @@ class Navigator { /// The navigation stage enum struct Stage : int { - undefined = 0, + initial = 0, surfaceTarget = 1, layerTarget = 2, - boundaryTarget = 3 + boundaryTarget = 3, }; + /// The navigator configuration struct Config { /// Tracking Geometry for this Navigator std::shared_ptr trackingGeometry{nullptr}; @@ -111,7 +111,20 @@ class Navigator { bool resolvePassive = false; }; + /// The navigator options struct Options : public NavigatorPlainOptions { + explicit Options(const GeometryContext& gctx) + : NavigatorPlainOptions(gctx) {} + + /// The surface tolerance + double surfaceTolerance = s_onSurfaceTolerance; + + /// The near limit to resolve surfaces + double nearLimit = s_onSurfaceTolerance; + + /// The far limit to resolve surfaces + double farLimit = std::numeric_limits::max(); + /// Externally provided surfaces - these are tried to be hit ExternalSurfaces externalSurfaces = {}; @@ -130,71 +143,75 @@ class Navigator { /// It acts as an internal state which is created for every propagation and /// meant to keep thread-local navigation information. struct State { + explicit State(const Options& options_) : options(options_) {} + Options options; // Navigation on surface level /// the vector of navigation surfaces to work through NavigationSurfaces navSurfaces = {}; /// the current surface index of the navigation state - std::size_t navSurfaceIndex = navSurfaces.size(); + std::optional navSurfaceIndex; // Navigation on layer level /// the vector of navigation layers to work through NavigationLayers navLayers = {}; /// the current layer index of the navigation state - std::size_t navLayerIndex = navLayers.size(); + std::optional navLayerIndex; // Navigation on volume level /// the vector of boundary surfaces to work through NavigationBoundaries navBoundaries = {}; /// the current boundary index of the navigation state - std::size_t navBoundaryIndex = navBoundaries.size(); - - auto navSurface() const { return navSurfaces.at(navSurfaceIndex); } - auto navLayer() const { return navLayers.at(navLayerIndex); } - auto navBoundary() const { return navBoundaries.at(navBoundaryIndex); } + std::optional navBoundaryIndex; - /// Navigation state: the world volume - const TrackingVolume* worldVolume = nullptr; + SurfaceIntersection& navSurface() { + return navSurfaces.at(navSurfaceIndex.value()); + } + LayerIntersection& navLayer() { + return navLayers.at(navLayerIndex.value()); + } + BoundaryIntersection& navBoundary() { + return navBoundaries.at(navBoundaryIndex.value()); + } - /// Navigation state: the start volume const TrackingVolume* startVolume = nullptr; - /// Navigation state: the start layer const Layer* startLayer = nullptr; - /// Navigation state: the start surface const Surface* startSurface = nullptr; - /// Navigation state: the current volume const TrackingVolume* currentVolume = nullptr; - /// Navigation state: the current layer const Layer* currentLayer = nullptr; - /// Navigation state - external state: the current surface const Surface* currentSurface = nullptr; - /// Navigation state: the target surface const Surface* targetSurface = nullptr; - /// Indicator if the target is reached - bool targetReached = false; - /// Navigation state : a break has been detected bool navigationBreak = false; - /// The navigation stage (@todo: integrate break, target) - Stage navigationStage = Stage::undefined; + Stage navigationStage = Stage::initial; - /// Navigation statistics NavigatorStatistics statistics; - void reset() { + void resetAfterLayerSwitch() { navSurfaces.clear(); - navSurfaceIndex = navSurfaces.size(); + navSurfaceIndex.reset(); + } + + void resetAfterVolumeSwitch() { + resetAfterLayerSwitch(); + navLayers.clear(); - navLayerIndex = navLayers.size(); + navLayerIndex.reset(); navBoundaries.clear(); - navBoundaryIndex = navBoundaries.size(); + navBoundaryIndex.reset(); - currentVolume = nullptr; currentLayer = nullptr; + } + + void reset() { + resetAfterVolumeSwitch(); + + currentVolume = nullptr; currentSurface = nullptr; - navigationStage = Stage::undefined; + navigationBreak = false; + navigationStage = Stage::initial; } }; @@ -208,8 +225,7 @@ class Navigator { : m_cfg{std::move(cfg)}, m_logger{std::move(_logger)} {} State makeState(const Options& options) const { - State state; - state.options = options; + State state(options); state.startSurface = options.startSurface; state.targetSurface = options.targetSurface; return state; @@ -238,8 +254,6 @@ class Navigator { return state.targetSurface; } - bool targetReached(const State& state) const { return state.targetReached; } - bool endOfWorldReached(const State& state) const { return state.currentVolume == nullptr; } @@ -248,940 +262,482 @@ class Navigator { return state.navigationBreak; } - void currentSurface(State& state, const Surface* surface) const { - state.currentSurface = surface; - } - - void targetReached(State& state, bool targetReached) const { - state.targetReached = targetReached; - } - - void navigationBreak(State& state, bool navigationBreak) const { - state.navigationBreak = navigationBreak; - } - - /// @brief Initialize call - start of navigation + /// @brief Initialize the navigator /// - /// @tparam propagator_state_t The state type of the propagator - /// @tparam stepper_t The type of stepper used for the propagation + /// This function initializes the navigator for a new propagation. /// - /// @param [in,out] state is the propagation state object - /// @param [in] stepper Stepper in use - template - void initialize(propagator_state_t& state, const stepper_t& stepper) const { - // Call the navigation helper prior to actual navigation + /// @param state The navigation state + /// @param position The start position + /// @param direction The start direction + /// @param propagationDirection The propagation direction + void initialize(State& state, const Vector3& position, + const Vector3& direction, + Direction propagationDirection) const { + (void)propagationDirection; + ACTS_VERBOSE(volInfo(state) << "Initialization."); - // Set the world volume if it is not set - if (state.navigation.worldVolume == nullptr) { - state.navigation.worldVolume = - m_cfg.trackingGeometry->highestTrackingVolume(); - } + state.reset(); // Fast Navigation initialization for start condition: // - short-cut through object association, saves navigation in the // - geometry and volume tree search for the lowest volume - if (state.navigation.startSurface != nullptr && - state.navigation.startSurface->associatedLayer() != nullptr) { + if (state.startSurface != nullptr && + state.startSurface->associatedLayer() != nullptr) { ACTS_VERBOSE( volInfo(state) << "Fast start initialization through association from Surface."); - // assign the current layer and volume by association - state.navigation.startLayer = - state.navigation.startSurface->associatedLayer(); - state.navigation.currentLayer = state.navigation.startLayer; - - state.navigation.startVolume = - state.navigation.startLayer->trackingVolume(); - state.navigation.currentVolume = state.navigation.startVolume; - } else if (state.navigation.startVolume != nullptr) { + state.startLayer = state.startSurface->associatedLayer(); + state.startVolume = state.startLayer->trackingVolume(); + } else if (state.startVolume != nullptr) { ACTS_VERBOSE( volInfo(state) << "Fast start initialization through association from Volume."); - state.navigation.currentVolume = state.navigation.startVolume; - - state.navigation.startLayer = - state.navigation.startVolume->associatedLayer( - state.geoContext, stepper.position(state.stepping)); - state.navigation.currentLayer = state.navigation.startLayer; + state.startLayer = state.startVolume->associatedLayer( + state.options.geoContext, position); } else { ACTS_VERBOSE(volInfo(state) << "Slow start initialization through search."); - // current volume and layer search through global search ACTS_VERBOSE(volInfo(state) - << "Starting from position " - << toString(stepper.position(state.stepping)) - << " and direction " - << toString(stepper.direction(state.stepping))); - - state.navigation.startVolume = - m_cfg.trackingGeometry->lowestTrackingVolume( - state.geoContext, stepper.position(state.stepping)); - state.navigation.currentVolume = state.navigation.startVolume; - - if (state.navigation.startVolume != nullptr) { - state.navigation.startLayer = - state.navigation.startVolume->associatedLayer( - state.geoContext, stepper.position(state.stepping)); - state.navigation.currentLayer = state.navigation.startLayer; - ACTS_VERBOSE(volInfo(state) << "Start volume resolved."); + << "Starting from position " << toString(position) + << " and direction " << toString(direction)); + + // current volume and layer search through global search + state.startVolume = m_cfg.trackingGeometry->lowestTrackingVolume( + state.options.geoContext, position); + + if (state.startVolume != nullptr) { + state.startLayer = state.startVolume->associatedLayer( + state.options.geoContext, position); } else { - ACTS_VERBOSE(volInfo(state) - << "No start volume resolved. Nothing left to do."); - // set the navigation break - state.navigation.navigationBreak = true; + ACTS_ERROR(volInfo(state) + << "No start volume resolved. Nothing left to do."); + state.navigationBreak = true; } } - if (state.navigation.startVolume != nullptr) { - ACTS_VERBOSE(volInfo(state) << "Start volume resolved."); - assert(state.navigation.startVolume->inside( - stepper.position(state.stepping), - state.options.surfaceTolerance) && + state.currentVolume = state.startVolume; + state.currentLayer = state.startLayer; + state.currentSurface = state.startSurface; + + if (state.currentVolume != nullptr) { + ACTS_VERBOSE(volInfo(state) << "Start volume resolved " + << state.currentVolume->geometryId()); + assert(state.currentVolume->inside(position, + state.options.surfaceTolerance) && "We did not end up inside the volume."); } - - if (state.navigation.startLayer != nullptr) { + if (state.currentLayer != nullptr) { ACTS_VERBOSE(volInfo(state) << "Start layer resolved " - << state.navigation.startLayer->geometryId()); - // We provide the layer to the resolve surface method in this case - resolveSurfaces(state, stepper); + << state.currentLayer->geometryId()); } - - // Set the start volume as current volume - state.navigation.currentVolume = state.navigation.startVolume; - // Set the start layer as current layer - state.navigation.currentLayer = state.navigation.startLayer; - - // We set the current surface to the start surface for eventual post-update - // action, e.g. material integration or collection when leaving a surface at - // the start of an extrapolation process - state.navigation.currentSurface = state.navigation.startSurface; - if (state.navigation.currentSurface != nullptr) { - ACTS_VERBOSE(volInfo(state) - << "Current surface set to start surface " - << state.navigation.currentSurface->geometryId()); - - assert(state.navigation.currentSurface->isOnSurface( - state.geoContext, stepper.position(state.stepping), - stepper.direction(state.stepping), + if (state.currentSurface != nullptr) { + ACTS_VERBOSE(volInfo(state) << "Start surface resolved " + << state.currentSurface->geometryId()); + assert(state.currentSurface->isOnSurface( + state.options.geoContext, position, direction, BoundaryTolerance::Infinite(), state.options.surfaceTolerance) && "Stepper not on surface"); } } - /// @brief Navigator pre step call + /// @brief Get the next target surface /// - /// Call options - /// (a) there are still surfaces to be resolved: handle those - /// (b) there no surfaces but still layers to be resolved, handle those - /// (c) there are no surfaces nor layers to be resolved, handle boundary + /// This function gets the next target surface for the propagation. /// - /// @tparam propagator_state_t is the type of Propagatgor state - /// @tparam stepper_t is the used type of the Stepper by the Propagator + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction /// - /// @param [in,out] state is the mutable propagator state object - /// @param [in] stepper Stepper in use - template - void preStep(propagator_state_t& state, const stepper_t& stepper) const { - // Check if the navigator is inactive - if (inactive(state, stepper)) { - return; + /// @return The next target surface + NavigationTarget nextTarget(State& state, const Vector3& position, + const Vector3& direction) const { + if (inactive(state)) { + return NavigationTarget::None(); } - // Call the navigation helper prior to actual navigation - ACTS_VERBOSE(volInfo(state) << "Entering navigator::preStep."); + ACTS_VERBOSE(volInfo(state) << "Entering Navigator::nextTarget."); - // Navigator pre step always resets the current surface - state.navigation.currentSurface = nullptr; + // Reset the current surface + state.currentSurface = nullptr; - auto tryTargetNextSurface = [&]() { + auto tryGetNextTarget = [&]() -> NavigationTarget { // Try targeting the surfaces - then layers - then boundaries - if (state.navigation.navigationStage <= Stage::surfaceTarget && - targetSurfaces(state, stepper)) { - ACTS_VERBOSE(volInfo(state) << "Target set to next surface."); - return true; + if (state.navigationStage == Stage::initial) { + ACTS_VERBOSE(volInfo(state) << "Target surfaces."); + state.navigationStage = Stage::surfaceTarget; + } + + if (state.navigationStage == Stage::surfaceTarget) { + if (!state.navSurfaceIndex.has_value()) { + // First time, resolve the surfaces + resolveSurfaces(state, position, direction); + state.navSurfaceIndex = 0; + } else { + ++state.navSurfaceIndex.value(); + } + if (state.navSurfaceIndex.value() < state.navSurfaces.size()) { + ACTS_VERBOSE(volInfo(state) << "Target set to next surface."); + return NavigationTarget(*state.navSurface().object(), + state.navSurface().index(), + BoundaryTolerance::None()); + } else { + // This was the last surface, switch to layers + ACTS_VERBOSE(volInfo(state) << "Target layers."); + state.navigationStage = Stage::layerTarget; + } } - if (state.navigation.navigationStage <= Stage::layerTarget && - targetLayers(state, stepper)) { - ACTS_VERBOSE(volInfo(state) << "Target set to next layer."); - return true; + if (state.navigationStage == Stage::layerTarget) { + if (!state.navLayerIndex.has_value()) { + // First time, resolve the layers + resolveLayers(state, position, direction); + state.navLayerIndex = 0; + } else { + ++state.navLayerIndex.value(); + } + if (state.navLayerIndex.value() < state.navLayers.size()) { + ACTS_VERBOSE(volInfo(state) << "Target set to next layer."); + return NavigationTarget(*state.navLayer().first.object(), + state.navLayer().first.index(), + BoundaryTolerance::None()); + } else { + // This was the last layer, switch to boundaries + ACTS_VERBOSE(volInfo(state) << "Target boundaries."); + state.navigationStage = Stage::boundaryTarget; + } } - if (targetBoundaries(state, stepper)) { - ACTS_VERBOSE(volInfo(state) << "Target set to next boundary."); - return true; + if (state.navigationStage == Stage::boundaryTarget) { + if (!state.navBoundaryIndex.has_value()) { + // First time, resolve the boundaries + resolveBoundaries(state, position, direction); + state.navBoundaryIndex = 0; + } else { + ++state.navBoundaryIndex.value(); + } + if (state.navBoundaryIndex.value() < state.navBoundaries.size()) { + ACTS_VERBOSE(volInfo(state) << "Target set to next boundary."); + return NavigationTarget(*state.navBoundary().first.object(), + state.navBoundary().first.index(), + BoundaryTolerance::None()); + } else { + // This was the last boundary, we have to leave the volume somehow, + // renavigate + ACTS_VERBOSE(volInfo(state) + << "Boundary targets exhausted. Renavigate."); + } } - return false; + ACTS_VERBOSE(volInfo(state) + << "Unknown state. No target found. Renavigate."); + return NavigationTarget::None(); }; - if (tryTargetNextSurface()) { - // Proceed to the next surface - return; + NavigationTarget nextTarget = tryGetNextTarget(); + if (!nextTarget.isNone()) { + return nextTarget; } - ACTS_VERBOSE(volInfo(state) - << "No targets found, we got lost! Attempt renavigation."); - - state.navigation.reset(); - ++state.navigation.statistics.nRenavigations; + state.reset(); + ++state.statistics.nRenavigations; // We might have punched through a boundary and entered another volume // so we have to reinitialize - state.navigation.currentVolume = - m_cfg.trackingGeometry->lowestTrackingVolume( - state.geoContext, stepper.position(state.stepping)); + state.currentVolume = m_cfg.trackingGeometry->lowestTrackingVolume( + state.options.geoContext, position); - if (state.navigation.currentVolume == nullptr) { + if (state.currentVolume == nullptr) { ACTS_VERBOSE(volInfo(state) << "No volume found, stop navigation."); - // Set navigation break and release the navigation step size - state.navigation.navigationBreak = true; - stepper.releaseStepSize(state.stepping, ConstrainedStep::navigator); - return; + state.navigationBreak = true; + return NavigationTarget::None(); } - state.navigation.currentLayer = - state.navigation.currentVolume->associatedLayer( - state.geoContext, stepper.position(state.stepping)); + state.currentLayer = state.currentVolume->associatedLayer( + state.options.geoContext, position); ACTS_VERBOSE(volInfo(state) << "Resolved volume and layer."); // Rerun the targeting - if (tryTargetNextSurface()) { - return; + nextTarget = tryGetNextTarget(); + if (!nextTarget.isNone()) { + return nextTarget; } - ACTS_VERBOSE(volInfo(state) << "No targets found again, we got " - "really lost! Stop navigation."); - // Set navigation break and release the navigation step size - state.navigation.navigationBreak = true; - stepper.releaseStepSize(state.stepping, ConstrainedStep::navigator); + ACTS_VERBOSE( + volInfo(state) + << "No targets found again, we got really lost! Stop navigation."); + state.navigationBreak = true; + return NavigationTarget::None(); } - /// @brief Navigator post step call - /// - /// (a) It initializes the Navigation stream if start volume is - /// not yet defined: - /// - initialize the volume - /// - establish the start layer and start volume - /// - set the current surface to the start surface + /// @brief Check if the current target is still valid /// - /// (b) It establishes the currentSurface status during - /// the propagation flow, currentSurface can be - /// - surfaces still to be handled within a layer - /// - layers still to be handled within a volume - /// - boundaries still to be handled to exit a volume + /// This function checks if the target is valid. /// - /// @tparam propagator_state_t is the type of Propagatgor state - /// @tparam stepper_t is the used type of the Stepper by the Propagator + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction /// - /// @param [in,out] state is the mutable propagator state object - /// @param [in] stepper Stepper in use - template - void postStep(propagator_state_t& state, const stepper_t& stepper) const { - // Check if the navigator is inactive - if (inactive(state, stepper)) { - return; - } - - // Set the navigation stage - state.navigation.navigationStage = Stage::undefined; - - // Call the navigation helper prior to actual navigation - ACTS_VERBOSE(volInfo(state) << "Entering navigator::postStep."); - - // Navigator post step always starts without current surface - state.navigation.currentSurface = nullptr; - - // (b) Status call within propagation loop - // Try finding status of surfaces - if (surfaceStatus(state, stepper, state.navigation.navSurfaces, - state.navigation.navSurfaceIndex)) { - ACTS_VERBOSE(volInfo(state) << "Post step: in surface handling."); - if (state.navigation.currentSurface != nullptr) { - ACTS_VERBOSE(volInfo(state) - << "On surface: switch forward or release."); - if (++state.navigation.navSurfaceIndex == - state.navigation.navSurfaces.size()) { - // this was the last surface, check if we have layers - if (!state.navigation.navLayers.empty()) { - ++state.navigation.navLayerIndex; - } else { - state.navigation.navigationStage = Stage::layerTarget; - ACTS_VERBOSE(volInfo(state) << "Target layers."); - return; - } - } - } - // Set the navigation stage to surface target - state.navigation.navigationStage = Stage::surfaceTarget; - ACTS_VERBOSE(volInfo(state) << "Staying focussed on surface."); - // Try finding status of layer - } else if (surfaceStatus(state, stepper, state.navigation.navLayers, - state.navigation.navLayerIndex)) { - ACTS_VERBOSE(volInfo(state) << "Post step: in layer handling."); - if (state.navigation.currentSurface != nullptr) { - ACTS_VERBOSE(volInfo(state) << "On layer: update layer information."); - state.navigation.currentLayer = state.navigation.navLayer().second; - if (resolveSurfaces(state, stepper)) { - // Set the navigation stage back to surface handling - state.navigation.navigationStage = Stage::surfaceTarget; - return; - } - } else { - // Set the navigation stage to layer target - state.navigation.navigationStage = Stage::layerTarget; - ACTS_VERBOSE(volInfo(state) << "Staying focussed on layer."); - } - // Try finding status of boundaries - } else if (surfaceStatus(state, stepper, state.navigation.navBoundaries, - state.navigation.navBoundaryIndex)) { - ACTS_VERBOSE(volInfo(state) << "Post step: in boundary handling."); - - // Are we on the boundary - then overwrite the stage - if (state.navigation.currentSurface != nullptr) { - // Set the navigation stage back to surface handling - ACTS_VERBOSE(volInfo(state) - << "On boundary: update volume information."); - // We are on a boundary, reset all information - state.navigation.navSurfaces.clear(); - state.navigation.navSurfaceIndex = state.navigation.navSurfaces.size(); - state.navigation.navLayers.clear(); - state.navigation.navLayerIndex = state.navigation.navLayers.size(); - // Update volume information - // get the attached volume information - const BoundarySurface* boundary = state.navigation.navBoundary().second; - state.navigation.currentVolume = boundary->attachedVolume( - state.geoContext, stepper.position(state.stepping), - state.options.direction * stepper.direction(state.stepping)); - state.navigation.currentLayer = nullptr; - // No volume anymore : end of known world - if (state.navigation.currentVolume == nullptr) { - ACTS_VERBOSE( - volInfo(state) - << "No more volume to progress to, stopping navigation."); - // Navigation break & release navigation stepping - state.navigation.navigationBreak = true; - stepper.releaseStepSize(state.stepping, ConstrainedStep::navigator); - return; - } else { - ACTS_VERBOSE(volInfo(state) << "Volume updated."); - assert(state.navigation.currentVolume->inside( - stepper.position(state.stepping), - state.options.surfaceTolerance) && - "We did not end up inside the volume."); - // Forget the boundary information - state.navigation.navBoundaries.clear(); - state.navigation.navBoundaryIndex = - state.navigation.navBoundaries.size(); - ++state.navigation.statistics.nVolumeSwitches; - } - } else { - // Set the navigation stage back to boundary target - state.navigation.navigationStage = Stage::boundaryTarget; - ACTS_VERBOSE(volInfo(state) << "Staying focussed on boundary."); - } - } else { - ACTS_VERBOSE(volInfo(state) - << "Status could not be determined - good luck."); - } + /// @return True if the target is valid + bool checkTargetValid(const State& state, const Vector3& position, + const Vector3& direction) const { + (void)position; + (void)direction; - if (state.navigation.currentSurface != nullptr) { - assert(state.navigation.currentSurface->isOnSurface( - state.geoContext, stepper.position(state.stepping), - stepper.direction(state.stepping), - BoundaryTolerance::Infinite(), - state.options.surfaceTolerance) && - "Stepper not on surface"); - } - } - - private: - const SurfaceIntersection& candidateIntersection( - const NavigationSurfaces& surfaces, std::size_t index) const { - return surfaces.at(index); - } - const SurfaceIntersection& candidateIntersection( - const NavigationLayers& surfaces, std::size_t index) const { - return surfaces.at(index).first; - } - const SurfaceIntersection& candidateIntersection( - const NavigationBoundaries& surfaces, std::size_t index) const { - return surfaces.at(index).first; - } - - /// @brief Status call for test surfaces (surfaces, layers, boundaries) - /// - /// If there are surfaces to be handled, check if the current - /// state is on the surface - /// - /// @tparam propagator_state_t The state type of the propagator - /// @tparam stepper_t The type of stepper used for the propagation - /// @tparam navigation_surfaces_t Type of the propagator - /// - /// @param [in,out] state is the propagation state object - /// @param [in] stepper Stepper in use - /// @param [in] navSurfaces is the navigation status objects - /// @param [in] navIndex test surface fore the status test - /// - /// @return boolean return triggers exit to stepper - template - bool surfaceStatus(propagator_state_t& state, const stepper_t& stepper, - const navigation_surfaces_t& navSurfaces, - std::size_t navIndex) const { - // No surfaces, status check will be done on layer - if (navSurfaces.empty() || navIndex == navSurfaces.size()) { - return false; - } - const auto& intersection = candidateIntersection(navSurfaces, navIndex); - // Take the current surface - const auto* surface = intersection.object(); - // Check if we are at a surface - // If we are on the surface pointed at by the index, we can make - // it the current one to pass it to the other actors - auto surfaceStatus = stepper.updateSurfaceStatus( - state.stepping, *surface, intersection.index(), state.options.direction, - BoundaryTolerance::None(), state.options.surfaceTolerance, - ConstrainedStep::navigator, logger()); - 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 - state.navigation.currentSurface = surface; - if (state.navigation.currentSurface != nullptr) { - ACTS_VERBOSE(volInfo(state) - << "Current surface set to surface " - << state.navigation.currentSurface->geometryId()); - } - } - // Return a positive status: either on it, or on the way - return true; + return state.navigationStage != Stage::initial; } - /// Loop over surface candidates here: - /// - if an intersect is valid but not yet reached - /// then return with updated step size - /// - if an intersect is not valid, switch to next - /// - /// @tparam propagator_state_t The state type of the propagator - /// @tparam stepper_t The type of stepper used for the propagation + /// @brief Handle the surface reached /// - /// @param [in,out] state is the propagation state object - /// @param [in] stepper Stepper in use + /// This function handles the surface reached. /// - /// boolean return triggers exit to stepper - template - bool targetSurfaces(propagator_state_t& state, - const stepper_t& stepper) const { - if (state.navigation.navigationBreak) { - return false; - } - - // The call that we are on a layer and have not yet resolved the surfaces - // No surfaces, do not return to stepper - if (state.navigation.navSurfaces.empty() || - state.navigation.navSurfaceIndex == - state.navigation.navSurfaces.size()) { - ACTS_VERBOSE(volInfo(state) - << "No surfaces present, target at layer first."); - return false; - } - - auto layerID = state.navigation.navSurface().object()->geometryId().layer(); - std::pair - externalSurfaceRange = - state.navigation.options.externalSurfaces.equal_range(layerID); - // Loop over the remaining navigation surfaces - while (state.navigation.navSurfaceIndex != - state.navigation.navSurfaces.size()) { - // Screen output how much is left to try - ACTS_VERBOSE(volInfo(state) - << (state.navigation.navSurfaces.size() - - state.navigation.navSurfaceIndex) - << " out of " << state.navigation.navSurfaces.size() - << " surfaces remain to try."); - const auto& intersection = state.navigation.navSurface(); - // Take the surface - const auto* surface = intersection.object(); - // Screen output which surface you are on - ACTS_VERBOSE(volInfo(state) << "Next surface candidate will be " - << surface->geometryId()); - // Estimate the surface status - BoundaryTolerance boundaryTolerance = BoundaryTolerance::None(); - for (auto it = externalSurfaceRange.first; - it != externalSurfaceRange.second; it++) { - if (surface->geometryId() == it->second) { - boundaryTolerance = BoundaryTolerance::Infinite(); - break; - } - } - auto surfaceStatus = stepper.updateSurfaceStatus( - state.stepping, *surface, intersection.index(), - state.options.direction, boundaryTolerance, - state.options.surfaceTolerance, ConstrainedStep::navigator, logger()); - if (surfaceStatus == IntersectionStatus::reachable) { - ACTS_VERBOSE(volInfo(state) - << "Surface reachable, step size updated to " - << stepper.outputStepSize(state.stepping)); - return true; - } - ++state.navigation.navSurfaceIndex; - continue; - } - - // Reached the end of the surface iteration - if (state.navigation.navSurfaceIndex == - state.navigation.navSurfaces.size()) { - // first clear the surface cache - state.navigation.navSurfaces.clear(); - state.navigation.navSurfaceIndex = state.navigation.navSurfaces.size(); - - if (state.navigation.navLayerIndex != state.navigation.navLayers.size()) { - ACTS_VERBOSE(volInfo(state) - << "Last surface on layer reached, switching layer."); - // now switch to the next layer - ++state.navigation.navLayerIndex; - } else { - ACTS_VERBOSE(volInfo(state) - << "Last surface on layer reached, and no layer."); - } + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction + /// @param surface The surface reached + void handleSurfaceReached(State& state, const Vector3& position, + const Vector3& direction, + const Surface& surface) const { + if (inactive(state)) { + return; } - // Do not return to the propagator - return false; - } + ACTS_VERBOSE(volInfo(state) << "Entering Navigator::handleSurfaceReached."); - /// @brief Target layer candidates. - /// - /// We are now trying to advance to the next layer (with surfaces) - /// Check if we are on the representing surface of the layer pointed - /// at by navLayerIndex. If so, we unpack the compatible surfaces - /// (determined by straight line intersect), and set up the index - /// so that the next postStep() call will enter the surface - /// check mode above. If no surfaces are found, we skip the layer. - /// If we unpack a surface, the step size is set to the path length - /// to the first surface, as determined by straight line intersect. - /// - /// @tparam propagator_state_t The state type of the propagator - /// @tparam stepper_t The type of stepper used for the propagation - /// - /// @param [in,out] state is the propagation state object - /// @param [in] stepper Stepper in use - /// - /// @return boolean return triggers exit to stepper - template - bool targetLayers(propagator_state_t& state, const stepper_t& stepper) const { - if (state.navigation.navigationBreak) { - return false; - } + state.currentSurface = &surface; - // if there are no layers, go back to the navigator (not stepper yet) - if (state.navigation.navLayers.empty()) { - ACTS_VERBOSE(volInfo(state) - << "No layers present, resolve volume first."); - - if (resolveLayers(state, stepper)) { - // The layer resolving worked - return true; - } - } + if (state.navigationStage == Stage::surfaceTarget && + state.navSurface().object() == &surface) { + ACTS_VERBOSE(volInfo(state) << "Handling surface status."); - // loop over the available navigation layer candidates - while (state.navigation.navLayerIndex != - state.navigation.navLayers.size()) { - const auto& intersection = state.navigation.navLayer().first; - // The layer surface - const auto* layerSurface = intersection.object(); - // We are on the layer - if (state.navigation.currentSurface == layerSurface) { - ACTS_VERBOSE(volInfo(state) << "We are on a layer, resolve Surfaces."); - // If you found surfaces return to the propagator - if (resolveSurfaces(state, stepper)) { - return true; - } else { - // Try the next one - ++state.navigation.navLayerIndex; - continue; - } - } - // Try to step towards it - auto layerStatus = stepper.updateSurfaceStatus( - state.stepping, *layerSurface, intersection.index(), - state.options.direction, BoundaryTolerance::None(), - state.options.surfaceTolerance, ConstrainedStep::navigator, logger()); - if (layerStatus == IntersectionStatus::reachable) { - ACTS_VERBOSE(volInfo(state) << "Layer reachable, step size updated to " - << stepper.outputStepSize(state.stepping)); - return true; - } - ACTS_VERBOSE(volInfo(state) - << "Layer intersection not valid, skipping it."); - ++state.navigation.navLayerIndex; + return; } - ACTS_VERBOSE(volInfo(state) << "Last layer done, target volume boundary."); + if (state.navigationStage == Stage::layerTarget && + state.navLayer().first.object() == &surface) { + ACTS_VERBOSE(volInfo(state) << "Handling layer status."); - return false; - } + // Switch to the next layer + state.currentLayer = state.navLayer().second; + state.navigationStage = Stage::surfaceTarget; - /// @brief Navigation through volumes - /// - /// This is the boundary check routine. If the code above set up the - /// boundary surface index, we advance through them here. If we are on - /// the boundary surface, we set the current surface to the boundary - /// surface, and get the volume pointed at by the boundary surface. Next - /// we unpack the layers from that volume. If the volume contains layers - /// we set the step size to the straight line path length to the first - /// layer. If we don't find a next volume, the navigationBreak - /// indicator is set. This ends the navigation. Finally, the boundary - /// index is cleared, so that the subsequent call goes back to - /// the layer iteration logic. - /// - /// If we are not on the current boundary surface, we try the next one. - /// The index is advanced and the step size is set. If no straight - /// line intersect is found, the boundary surface is skipped. - /// If we are out of boundary surfaces, the navigation is terminated. - /// - /// @tparam propagator_state_t The state type of the propagator - /// @tparam stepper_t The type of stepper used for the propagation - /// - /// @param [in,out] state is the propagation state object - /// @param [in] stepper Stepper in use - /// - /// boolean return triggers exit to stepper - template - bool targetBoundaries(propagator_state_t& state, - const stepper_t& stepper) const { - if (state.navigation.navigationBreak) { - return false; - } + // partial reset + state.resetAfterLayerSwitch(); - if (state.navigation.currentVolume == nullptr) { - ACTS_VERBOSE(volInfo(state) - << "No sufficient information to resolve boundary, " - "stopping navigation."); - stepper.releaseStepSize(state.stepping, ConstrainedStep::navigator); - return false; + return; } - // Helper function to find boundaries - auto findBoundaries = [&]() -> bool { - // The navigation options - NavigationOptions navOpts; - // Exclude the current surface in case it's a boundary - navOpts.startObject = state.navigation.currentSurface; - navOpts.nearLimit = state.options.surfaceTolerance; - navOpts.farLimit = - stepper.getStepSize(state.stepping, ConstrainedStep::actor); + if (state.navigationStage == Stage::boundaryTarget && + state.navBoundary().first.object() == &surface) { + ACTS_VERBOSE(volInfo(state) << "Handling boundary status."); - ACTS_VERBOSE(volInfo(state) - << "Try to find boundaries, we are at: " - << stepper.position(state.stepping).transpose() << ", dir: " - << stepper.direction(state.stepping).transpose()); - - // Evaluate the boundary surfaces - state.navigation.navBoundaries = - state.navigation.currentVolume->compatibleBoundaries( - state.geoContext, stepper.position(state.stepping), - state.options.direction * stepper.direction(state.stepping), - navOpts, logger()); - std::ranges::sort( - state.navigation.navBoundaries, [](const auto& a, const auto& b) { - return SurfaceIntersection::pathLengthOrder(a.first, b.first); - }); - - // Print boundary information - if (logger().doPrint(Logging::VERBOSE)) { - std::ostringstream os; - os << state.navigation.navBoundaries.size(); - os << " boundary candidates found at path(s): "; - for (auto& bc : state.navigation.navBoundaries) { - os << bc.first.pathLength() << " "; - } - logger().log(Logging::VERBOSE, os.str()); - } + // Switch to the next volume using the boundary + const BoundarySurface* boundary = state.navBoundary().second; + state.currentVolume = boundary->attachedVolume(state.options.geoContext, + position, direction); - // Set the begin index - state.navigation.navBoundaryIndex = 0; - if (!state.navigation.navBoundaries.empty()) { - // Set to the first and return to the stepper - stepper.updateStepSize( - state.stepping, state.navigation.navBoundary().first, - state.options.direction, ConstrainedStep::navigator); - ACTS_VERBOSE(volInfo(state) << "Navigation stepSize updated to " - << stepper.outputStepSize(state.stepping)); - return true; - } - return false; - }; + // partial reset + state.resetAfterVolumeSwitch(); - // No boundaries are assigned yet, find them - if (state.navigation.navBoundaries.empty() && findBoundaries()) { - return true; - } - - // Loop over the boundary surface - while (state.navigation.navBoundaryIndex != - state.navigation.navBoundaries.size()) { - const auto& intersection = state.navigation.navBoundary().first; - // That is the current boundary surface - const auto* boundarySurface = intersection.object(); - // Step towards the boundary surfrace - auto boundaryStatus = stepper.updateSurfaceStatus( - state.stepping, *boundarySurface, intersection.index(), - state.options.direction, BoundaryTolerance::None(), - state.options.surfaceTolerance, ConstrainedStep::navigator, logger()); - if (boundaryStatus == IntersectionStatus::reachable) { - ACTS_VERBOSE(volInfo(state) - << "Boundary reachable, step size updated to " - << stepper.outputStepSize(state.stepping)); - return true; + if (state.currentVolume != nullptr) { + ACTS_VERBOSE(volInfo(state) << "Volume updated."); + state.navigationStage = Stage::layerTarget; } else { - ACTS_VERBOSE("Boundary " - << (state.navigation.navBoundaries.size() - - state.navigation.navBoundaryIndex) - << " out of " << state.navigation.navBoundaries.size() - << " not reachable anymore, switching to next."); - ACTS_VERBOSE("Targeted boundary surface was: \n" - << boundarySurface->toStream(state.geoContext)); + ACTS_VERBOSE(volInfo(state) + << "No more volume to progress to, stopping navigation."); + state.navigationBreak = true; } - // Increase the index to the next one - ++state.navigation.navBoundaryIndex; + + return; } - // Tried our best, but couldn't do anything - state.navigation.navBoundaries.clear(); - state.navigation.navBoundaryIndex = state.navigation.navBoundaries.size(); - return false; + ACTS_ERROR(volInfo(state) << "Surface reached but unknown state."); } - /// @brief Resolve the surfaces of this layer - /// - /// @tparam propagator_state_t The state type of the propagator - /// @tparam stepper_t The type of stepper used for the propagation + private: + /// @brief Resolve compatible surfaces /// - /// @param [in,out] state is the propagation state object - /// @param [in] stepper Stepper in use + /// This function resolves the compatible surfaces for the navigation. /// - /// boolean return triggers exit to stepper - template - bool resolveSurfaces(propagator_state_t& state, - const stepper_t& stepper) const { - // get the layer and layer surface - const Layer* currentLayer = state.navigation.currentLayer; + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction + void resolveSurfaces(State& state, const Vector3& position, + const Vector3& direction) const { + ACTS_VERBOSE(volInfo(state) << "Searching for compatible surfaces."); + + const Layer* currentLayer = state.currentLayer; if (currentLayer == nullptr) { ACTS_VERBOSE(volInfo(state) << "No layer to resolve surfaces."); - return false; + return; } const Surface* layerSurface = ¤tLayer->surfaceRepresentation(); - // Use navigation parameters and NavigationOptions NavigationOptions navOpts; navOpts.resolveSensitive = m_cfg.resolveSensitive; navOpts.resolveMaterial = m_cfg.resolveMaterial; navOpts.resolvePassive = m_cfg.resolvePassive; - navOpts.startObject = state.navigation.currentSurface; - navOpts.endObject = state.navigation.targetSurface; + navOpts.startObject = state.currentSurface; + navOpts.endObject = state.targetSurface; + navOpts.nearLimit = state.options.nearLimit; + navOpts.farLimit = state.options.farLimit; - std::vector externalSurfaces; - if (!state.navigation.options.externalSurfaces.empty()) { - auto layerID = layerSurface->geometryId().layer(); + if (!state.options.externalSurfaces.empty()) { + auto layerId = layerSurface->geometryId().layer(); auto externalSurfaceRange = - state.navigation.options.externalSurfaces.equal_range(layerID); + state.options.externalSurfaces.equal_range(layerId); navOpts.externalSurfaces.reserve( - state.navigation.options.externalSurfaces.count(layerID)); + state.options.externalSurfaces.count(layerId)); for (auto itSurface = externalSurfaceRange.first; itSurface != externalSurfaceRange.second; itSurface++) { navOpts.externalSurfaces.push_back(itSurface->second); } } - navOpts.nearLimit = state.options.surfaceTolerance; - navOpts.farLimit = - stepper.getStepSize(state.stepping, ConstrainedStep::actor); - - // get the surfaces - state.navigation.navSurfaces = currentLayer->compatibleSurfaces( - state.geoContext, stepper.position(state.stepping), - state.options.direction * stepper.direction(state.stepping), navOpts); - std::ranges::sort(state.navigation.navSurfaces, - SurfaceIntersection::pathLengthOrder); + // Request the compatible surfaces + state.navSurfaces = currentLayer->compatibleSurfaces( + state.options.geoContext, position, direction, navOpts); + std::ranges::sort(state.navSurfaces, SurfaceIntersection::pathLengthOrder); // Print surface information if (logger().doPrint(Logging::VERBOSE)) { std::ostringstream os; - os << state.navigation.navSurfaces.size(); + os << state.navSurfaces.size(); os << " surface candidates found at path(s): "; - for (auto& sfc : state.navigation.navSurfaces) { + for (auto& sfc : state.navSurfaces) { os << sfc.pathLength() << " "; } logger().log(Logging::VERBOSE, os.str()); } - // Surface candidates have been found - if (!state.navigation.navSurfaces.empty()) { - // set the index - state.navigation.navSurfaceIndex = 0; - // The stepper updates the step size ( single / multi component) - stepper.updateStepSize(state.stepping, state.navigation.navSurface(), - state.options.direction, - ConstrainedStep::navigator); - ACTS_VERBOSE(volInfo(state) << "Navigation stepSize updated to " - << stepper.outputStepSize(state.stepping)); - return true; + if (state.navSurfaces.empty()) { + ACTS_VERBOSE(volInfo(state) << "No surface candidates found."); } - - state.navigation.navSurfaceIndex = state.navigation.navSurfaces.size(); - ACTS_VERBOSE(volInfo(state) << "No surface candidates found."); - return false; } - /// @brief Navigation through layers - /// - /// Resolve layers. - /// - /// This initializes the layer candidates when starting - /// or when entering a new volume + /// @brief Resolve compatible layers /// - /// @tparam propagator_state_t The state type of the propagator - /// @tparam stepper_t The type of stepper used for the propagation + /// This function resolves the compatible layers for the navigation. /// - /// @param [in,out] state is the propagation state object - /// @param [in] stepper Stepper in use - /// - /// @return boolean return triggers exit to stepper - template - bool resolveLayers(propagator_state_t& state, - const stepper_t& stepper) const { + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction + void resolveLayers(State& state, const Vector3& position, + const Vector3& direction) const { ACTS_VERBOSE(volInfo(state) << "Searching for compatible layers."); - // Create the navigation options - // - and get the compatible layers, start layer will be excluded NavigationOptions navOpts; navOpts.resolveSensitive = m_cfg.resolveSensitive; navOpts.resolveMaterial = m_cfg.resolveMaterial; navOpts.resolvePassive = m_cfg.resolvePassive; - navOpts.startObject = state.navigation.currentLayer; - navOpts.nearLimit = state.options.surfaceTolerance; - navOpts.farLimit = - stepper.getStepSize(state.stepping, ConstrainedStep::actor); + navOpts.startObject = state.currentLayer; + navOpts.nearLimit = state.options.nearLimit; + navOpts.farLimit = state.options.farLimit; // Request the compatible layers - state.navigation.navLayers = - state.navigation.currentVolume->compatibleLayers( - state.geoContext, stepper.position(state.stepping), - state.options.direction * stepper.direction(state.stepping), - navOpts); - std::ranges::sort( - state.navigation.navLayers, [](const auto& a, const auto& b) { - return SurfaceIntersection::pathLengthOrder(a.first, b.first); - }); + state.navLayers = state.currentVolume->compatibleLayers( + state.options.geoContext, position, direction, navOpts); + std::ranges::sort(state.navLayers, [](const auto& a, const auto& b) { + return SurfaceIntersection::pathLengthOrder(a.first, b.first); + }); // Print layer information if (logger().doPrint(Logging::VERBOSE)) { std::ostringstream os; - os << state.navigation.navLayers.size(); + os << state.navLayers.size(); os << " layer candidates found at path(s): "; - for (auto& lc : state.navigation.navLayers) { + for (auto& lc : state.navLayers) { os << lc.first.pathLength() << " "; } logger().log(Logging::VERBOSE, os.str()); } - // Layer candidates have been found - if (!state.navigation.navLayers.empty()) { - // Set the index to the first - state.navigation.navLayerIndex = 0; - // Setting the step size towards first - ACTS_VERBOSE(volInfo(state) << "Target at layer."); - // The stepper updates the step size ( single / multi component) - stepper.updateStepSize(state.stepping, state.navigation.navLayer().first, - state.options.direction, - ConstrainedStep::navigator); - ACTS_VERBOSE(volInfo(state) << "Navigation stepSize updated to " - << stepper.outputStepSize(state.stepping)); - return true; + if (state.navLayers.empty()) { + ACTS_VERBOSE(volInfo(state) << "No layer candidates found."); } + } - // Set the index to the end of the list - state.navigation.navLayerIndex = state.navigation.navLayers.size(); + /// @brief Resolve compatible boundaries + /// + /// This function resolves the compatible boundaries for the navigation. + /// + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction + void resolveBoundaries(State& state, const Vector3& position, + const Vector3& direction) const { + ACTS_VERBOSE(volInfo(state) << "Searching for compatible boundaries."); - // Screen output - no layer candidates found - ACTS_VERBOSE(volInfo(state) << "No compatible layer candidates found."); - // Release the step size - stepper.releaseStepSize(state.stepping, ConstrainedStep::navigator); - return false; + NavigationOptions navOpts; + navOpts.startObject = state.currentSurface; + navOpts.nearLimit = state.options.nearLimit; + navOpts.farLimit = state.options.farLimit; + + ACTS_VERBOSE(volInfo(state) + << "Try to find boundaries, we are at: " << toString(position) + << ", dir: " << toString(direction)); + + // Request the compatible boundaries + state.navBoundaries = state.currentVolume->compatibleBoundaries( + state.options.geoContext, position, direction, navOpts, logger()); + std::ranges::sort(state.navBoundaries, [](const auto& a, const auto& b) { + return SurfaceIntersection::pathLengthOrder(a.first, b.first); + }); + + // Print boundary information + if (logger().doPrint(Logging::VERBOSE)) { + std::ostringstream os; + os << state.navBoundaries.size(); + os << " boundary candidates found at path(s): "; + for (auto& bc : state.navBoundaries) { + os << bc.first.pathLength() << " "; + } + logger().log(Logging::VERBOSE, os.str()); + } + + if (state.navBoundaries.empty()) { + ACTS_VERBOSE(volInfo(state) << "No boundary candidates found."); + } } - /// Inactive - /// - /// This checks if a navigation break had been triggered or navigator - /// is misconfigured + /// @brief Check if the navigator is inactive /// - /// @tparam propagator_state_t The state type of the propagator - /// @tparam stepper_t The type of stepper used for the propagation + /// This function checks if the navigator is inactive. /// - /// @param [in,out] state is the propagation state object - /// @param [in] stepper Stepper in use + /// @param state The navigation state /// - /// boolean return triggers exit to stepper - template - bool inactive(propagator_state_t& state, const stepper_t& stepper) const { + /// @return True if the navigator is inactive + bool inactive(const State& state) const { // Void behavior in case no tracking geometry is present if (m_cfg.trackingGeometry == nullptr) { return true; } - // turn the navigator into void when you are instructed to do nothing + + // Turn the navigator into void when you are instructed to do nothing if (!m_cfg.resolveSensitive && !m_cfg.resolveMaterial && !m_cfg.resolvePassive) { return true; } - // Navigation break handling - // This checks if a navigation break had been triggered: - // - If so & the target exists or was hit - it simply returns - // - If a target exists and was not yet hit, it checks for it - // -> return is always to the stepper - if (state.navigation.navigationBreak) { - // target exists and reached, or no target exists - if (state.navigation.targetReached || - state.navigation.targetSurface == nullptr) { - return true; - } - // TODO we do not know the intersection index - passing 0 - auto targetStatus = stepper.updateSurfaceStatus( - state.stepping, *state.navigation.targetSurface, 0, - state.options.direction, BoundaryTolerance::None(), - state.options.surfaceTolerance, ConstrainedStep::navigator, logger()); - // the only advance could have been to the target - if (targetStatus == IntersectionStatus::onSurface) { - // set the target surface - state.navigation.currentSurface = state.navigation.targetSurface; - ACTS_VERBOSE(volInfo(state) - << volInfo(state) - << "Current surface set to target surface " - << state.navigation.currentSurface->geometryId()); - return true; - } + if (state.navigationBreak) { + return true; } + return false; } private: template std::string volInfo(const propagator_state_t& state) const { - return (state.navigation.currentVolume != nullptr - ? state.navigation.currentVolume->volumeName() - : "No Volume") + + return (state.currentVolume != nullptr ? state.currentVolume->volumeName() + : "No Volume") + " | "; } diff --git a/Core/include/Acts/Propagator/NavigatorOptions.hpp b/Core/include/Acts/Propagator/NavigatorOptions.hpp index 27f017d47b2..ca2472a9dc8 100644 --- a/Core/include/Acts/Propagator/NavigatorOptions.hpp +++ b/Core/include/Acts/Propagator/NavigatorOptions.hpp @@ -8,11 +8,21 @@ #pragma once +#include + namespace Acts { +class GeometryContext; class Surface; struct NavigatorPlainOptions { + /// NavigatorPlainOptions with context + explicit NavigatorPlainOptions(const GeometryContext &gctx) + : geoContext(gctx) {} + + /// Context object for the geometry + std::reference_wrapper geoContext; + const Surface *startSurface{}; const Surface *targetSurface{}; }; diff --git a/Core/include/Acts/Propagator/Propagator.ipp b/Core/include/Acts/Propagator/Propagator.ipp index 37814e9a4fc..9def3449f61 100644 --- a/Core/include/Acts/Propagator/Propagator.ipp +++ b/Core/include/Acts/Propagator/Propagator.ipp @@ -9,9 +9,12 @@ #include "Acts/EventData/TrackParametersConcept.hpp" #include "Acts/Propagator/ActorList.hpp" #include "Acts/Propagator/ConstrainedStep.hpp" +#include "Acts/Propagator/NavigationTarget.hpp" #include "Acts/Propagator/PropagatorError.hpp" #include "Acts/Propagator/StandardAborters.hpp" #include "Acts/Propagator/detail/LoopProtection.hpp" +#include "Acts/Surfaces/BoundaryTolerance.hpp" +#include "Acts/Utilities/Intersection.hpp" #include @@ -19,7 +22,7 @@ namespace Acts::detail { template concept propagator_stepper_compatible_with = requires(const Stepper& s, StateType& st, const N& n) { - { s.step(st, n) } -> std::same_as>; + { s.step(st, n) } -> std::same_as>; }; } // namespace Acts::detail @@ -27,80 +30,156 @@ template template auto Acts::Propagator::propagate(propagator_state_t& state) const -> Result { - // Pre-stepping call to the navigator and actor list ACTS_VERBOSE("Entering propagation."); state.stage = PropagatorStage::prePropagation; - // Pre-Stepping call to the actor list + // Pre-Propagation: call to the actor list, abort condition check state.options.actorList.act(state, m_stepper, m_navigator, logger()); - // assume negative outcome, only set to true later if we actually have - // a positive outcome. - - // start at true, if we don't begin the stepping loop we're fine. - bool terminatedNormally = true; - - // Pre-Stepping: abort condition check - if (!state.options.actorList.checkAbort(state, m_stepper, m_navigator, - logger())) { - // Stepping loop - ACTS_VERBOSE("Starting stepping loop."); - - terminatedNormally = false; // priming error condition - - // Propagation loop : stepping - for (; state.steps < state.options.maxSteps; ++state.steps) { - // Pre-Stepping: target setting - state.stage = PropagatorStage::preStep; - m_navigator.preStep(state, m_stepper); - // Perform a propagation step - it takes the propagation state - Result res = m_stepper.step(state, m_navigator); - if (res.ok()) { - // Accumulate the path length - double s = *res; - state.pathLength += s; - ACTS_VERBOSE("Step with size = " << s << " performed"); - } else { - ACTS_ERROR("Step failed with " << res.error() << ": " - << res.error().message()); - // pass error to caller - return res.error(); + + if (state.options.actorList.checkAbort(state, m_stepper, m_navigator, + logger())) { + ACTS_VERBOSE("Propagation terminated without going into stepping loop."); + + state.stage = PropagatorStage::postPropagation; + + state.options.actorList.act(state, m_stepper, m_navigator, logger()); + + return Result::success(); + } + + auto getNextTarget = [&]() -> Result { + for (unsigned int i = 0; i < state.options.maxTargetSkipping; ++i) { + NavigationTarget nextTarget = m_navigator.nextTarget( + state.navigation, state.position, state.direction); + if (nextTarget.isNone()) { + return NavigationTarget::None(); } - // release actor and aborter constrains after step was performed - m_stepper.releaseStepSize(state.stepping, ConstrainedStep::navigator); - m_stepper.releaseStepSize(state.stepping, ConstrainedStep::actor); - // Post-stepping: - // navigator post step call - actor list act - actor list check - state.stage = PropagatorStage::postStep; - m_navigator.postStep(state, m_stepper); - state.options.actorList.act(state, m_stepper, m_navigator, logger()); - if (state.options.actorList.checkAbort(state, m_stepper, m_navigator, - logger())) { - terminatedNormally = true; - break; + IntersectionStatus preStepSurfaceStatus = m_stepper.updateSurfaceStatus( + state.stepping, *nextTarget.surface, + nextTarget.surfaceIntersectionIndex, state.options.direction, + nextTarget.boundaryTolerance, state.options.surfaceTolerance, + ConstrainedStep::navigator, logger()); + if (preStepSurfaceStatus == IntersectionStatus::reachable || + preStepSurfaceStatus == IntersectionStatus::onSurface) { + return nextTarget; } } - } else { - ACTS_VERBOSE("Propagation terminated without going into stepping loop."); + + ACTS_ERROR("getNextTarget failed to find a valid target surface after " + << state.options.maxTargetSkipping << " attempts."); + return Result::failure( + PropagatorError::NextTargetLimitReached); + }; + + // priming error condition + bool terminatedNormally = false; + + // Pre-Stepping: target setting + state.stage = PropagatorStage::preStep; + + Result nextTargetResult = getNextTarget(); + if (!nextTargetResult.ok()) { + return nextTargetResult.error(); } + NavigationTarget nextTarget = *nextTargetResult; + + ACTS_VERBOSE("Starting stepping loop."); + + // Stepping loop + for (; state.steps < state.options.maxSteps; ++state.steps) { + // Perform a step + Result res = m_stepper.step(state, m_navigator); + if (!res.ok()) { + ACTS_ERROR("Step failed with " << res.error() << ": " + << res.error().message()); + // pass error to caller + return res.error(); + } + // Accumulate the path length + state.pathLength += *res; + // Update the position and direction + state.position = m_stepper.position(state.stepping); + state.direction = + state.options.direction * m_stepper.direction(state.stepping); + + ACTS_VERBOSE("Step with size " << *res << " performed. We are now at " + << state.position.transpose() + << " with direction " + << state.direction.transpose()); + + // release actor and aborter constrains after step was performed + m_stepper.releaseStepSize(state.stepping, ConstrainedStep::navigator); + m_stepper.releaseStepSize(state.stepping, ConstrainedStep::actor); + + // Post-stepping: check target status, call actors, check abort conditions + state.stage = PropagatorStage::postStep; + + if (!nextTarget.isNone()) { + IntersectionStatus postStepSurfaceStatus = m_stepper.updateSurfaceStatus( + state.stepping, *nextTarget.surface, + nextTarget.surfaceIntersectionIndex, state.options.direction, + nextTarget.boundaryTolerance, state.options.surfaceTolerance, + ConstrainedStep::navigator, logger()); + if (postStepSurfaceStatus == IntersectionStatus::onSurface) { + m_navigator.handleSurfaceReached(state.navigation, state.position, + state.direction, *nextTarget.surface); + } + if (postStepSurfaceStatus != IntersectionStatus::reachable) { + nextTarget = NavigationTarget::None(); + } + } - state.stage = PropagatorStage::postPropagation; + state.options.actorList.act(state, m_stepper, m_navigator, logger()); + + if (state.options.actorList.checkAbort(state, m_stepper, m_navigator, + logger())) { + terminatedNormally = true; + break; + } + + // Update the position and direction because actors might have changed it + state.position = m_stepper.position(state.stepping); + state.direction = + state.options.direction * m_stepper.direction(state.stepping); + + // Pre-Stepping: target setting + state.stage = PropagatorStage::preStep; + + if (!nextTarget.isNone() && + !m_navigator.checkTargetValid(state.navigation, state.position, + state.direction)) { + ACTS_VERBOSE("Target is not valid anymore."); + nextTarget = NavigationTarget::None(); + } + + if (nextTarget.isNone()) { + // navigator step constraint is not valid anymore + m_stepper.releaseStepSize(state.stepping, ConstrainedStep::navigator); - // if we didn't terminate normally (via aborters) set navigation break. - // this will trigger error output in the lines below + nextTargetResult = getNextTarget(); + if (!nextTargetResult.ok()) { + return nextTargetResult.error(); + } + nextTarget = *nextTargetResult; + } + } // end of stepping loop + + // check if we didn't terminate normally via aborters if (!terminatedNormally) { - m_navigator.navigationBreak(state.navigation, true); ACTS_ERROR("Propagation reached the step count limit of " << state.options.maxSteps << " (did " << state.steps << " steps)"); return PropagatorError::StepCountLimitReached; } - // Post-stepping call to the actor list ACTS_VERBOSE("Stepping loop done."); + + state.stage = PropagatorStage::postPropagation; + + // Post-stepping call to the actor list state.options.actorList.act(state, m_stepper, m_navigator, logger()); - // return progress flag here, decide on SUCCESS later return Result::success(); } @@ -318,8 +397,13 @@ auto Acts::Propagator::makeResult( template template void Acts::Propagator::initialize(propagator_state_t& state) const { + state.position = m_stepper.position(state.stepping); + state.direction = + state.options.direction * m_stepper.direction(state.stepping); + // Navigator initialize state call - m_navigator.initialize(state, m_stepper); + m_navigator.initialize(state.navigation, state.position, state.direction, + state.options.direction); // Apply the loop protection - it resets the internal path limit detail::setupLoopProtection( diff --git a/Core/include/Acts/Propagator/PropagatorError.hpp b/Core/include/Acts/Propagator/PropagatorError.hpp index 34bd9df0f90..ba92240821e 100644 --- a/Core/include/Acts/Propagator/PropagatorError.hpp +++ b/Core/include/Acts/Propagator/PropagatorError.hpp @@ -16,8 +16,8 @@ namespace Acts { enum class PropagatorError { // ensure all values are non-zero Failure = 1, - WrongDirection, StepCountLimitReached, + NextTargetLimitReached, }; std::error_code make_error_code(Acts::PropagatorError e); diff --git a/Core/include/Acts/Propagator/PropagatorOptions.hpp b/Core/include/Acts/Propagator/PropagatorOptions.hpp index c6d77550661..7d7f606c20d 100644 --- a/Core/include/Acts/Propagator/PropagatorOptions.hpp +++ b/Core/include/Acts/Propagator/PropagatorOptions.hpp @@ -28,8 +28,17 @@ struct PurePropagatorPlainOptions { Direction direction = Direction::Forward; /// Maximum number of steps for one propagate call + /// + /// This ensures that the propagation does not hang in the stepping loop in + /// case of misconfiguration or bugs. unsigned int maxSteps = 1000; + /// Maximum number of next target calls for one step + /// + /// This ensures that the propagation does not hang in the target resolution + /// loop in case of misconfiguration or bugs. + unsigned int maxTargetSkipping = 100; + /// Absolute maximum path length double pathLimit = std::numeric_limits::max(); @@ -61,7 +70,7 @@ struct PropagatorPlainOptions : public detail::PurePropagatorPlainOptions { : geoContext(gctx), magFieldContext(mctx), stepping(gctx, mctx), - navigation() {} + navigation(gctx) {} /// The context object for the geometry std::reference_wrapper geoContext; @@ -94,14 +103,14 @@ struct PropagatorOptions : public detail::PurePropagatorPlainOptions { : geoContext(gctx), magFieldContext(mctx), stepping(gctx, mctx), - navigation() {} + navigation(gctx) {} /// PropagatorOptions with context and plain options PropagatorOptions(const PropagatorPlainOptions& pOptions) : geoContext(pOptions.geoContext), magFieldContext(pOptions.magFieldContext), stepping(pOptions.geoContext, pOptions.magFieldContext), - navigation() { + navigation(pOptions.geoContext) { setPlainOptions(pOptions); } diff --git a/Core/include/Acts/Propagator/PropagatorState.hpp b/Core/include/Acts/Propagator/PropagatorState.hpp index 03346cfd57d..f8b639d1faa 100644 --- a/Core/include/Acts/Propagator/PropagatorState.hpp +++ b/Core/include/Acts/Propagator/PropagatorState.hpp @@ -8,6 +8,7 @@ #pragma once +#include "Acts/Definitions/Algebra.hpp" #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Propagator/PropagatorStatistics.hpp" #include "Acts/Utilities/detail/Extendable.hpp" @@ -45,29 +46,35 @@ struct PropagatorState : private detail::Extendable { /// @param navigationIn Navigator state instance to begin with PropagatorState(const propagator_options_t& topts, stepper_state_t steppingIn, navigator_state_t navigationIn) - : options(topts), + : geoContext(topts.geoContext), + options(topts), stepping{std::move(steppingIn)}, - navigation{std::move(navigationIn)}, - geoContext(topts.geoContext) {} + navigation{std::move(navigationIn)} {} using detail::Extendable::get; using detail::Extendable::tuple; - /// Propagation stage - PropagatorStage stage = PropagatorStage::invalid; + /// Context object for the geometry + std::reference_wrapper geoContext; /// These are the options - provided for each propagation step propagator_options_t options; + /// Propagation stage + PropagatorStage stage = PropagatorStage::invalid; + + /// The position of the propagation + Vector3 position = Vector3::Zero(); + + /// The direction of the propagation + Vector3 direction = Vector3::Zero(); + /// Stepper state - internal state of the Stepper stepper_state_t stepping; /// Navigation state - internal state of the Navigator navigator_state_t navigation; - /// Context object for the geometry - std::reference_wrapper geoContext; - /// Number of propagation steps that were carried out std::size_t steps = 0; diff --git a/Core/include/Acts/Propagator/StandardAborters.hpp b/Core/include/Acts/Propagator/StandardAborters.hpp index 8aa49982965..42c692fe850 100644 --- a/Core/include/Acts/Propagator/StandardAborters.hpp +++ b/Core/include/Acts/Propagator/StandardAborters.hpp @@ -8,8 +8,6 @@ #pragma once -#include "Acts/Definitions/Algebra.hpp" -#include "Acts/Definitions/Direction.hpp" #include "Acts/Definitions/Units.hpp" #include "Acts/Propagator/ConstrainedStep.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" @@ -18,9 +16,6 @@ #include "Acts/Utilities/Logger.hpp" #include -#include -#include -#include namespace Acts { diff --git a/Core/include/Acts/Propagator/StepperOptions.hpp b/Core/include/Acts/Propagator/StepperOptions.hpp index b1be1e799f7..8b8a425f736 100644 --- a/Core/include/Acts/Propagator/StepperOptions.hpp +++ b/Core/include/Acts/Propagator/StepperOptions.hpp @@ -8,8 +8,9 @@ #pragma once +#include "Acts/Definitions/Units.hpp" + #include -#include namespace Acts { @@ -35,7 +36,7 @@ struct StepperPlainOptions { double stepSizeCutOff = 0.; /// Absolute maximum step size - double maxStepSize = std::numeric_limits::max(); + double maxStepSize = 10 * Acts::UnitConstants::m; /// Maximum number of Runge-Kutta steps for the stepper step call unsigned int maxRungeKuttaStepTrials = 10000; diff --git a/Core/include/Acts/Propagator/StraightLineStepper.hpp b/Core/include/Acts/Propagator/StraightLineStepper.hpp index 29b73edac26..de472497090 100644 --- a/Core/include/Acts/Propagator/StraightLineStepper.hpp +++ b/Core/include/Acts/Propagator/StraightLineStepper.hpp @@ -13,11 +13,9 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/Direction.hpp" -#include "Acts/Definitions/Tolerance.hpp" #include "Acts/Definitions/TrackParametrization.hpp" #include "Acts/EventData/TrackParameters.hpp" #include "Acts/EventData/detail/CorrectedTransformationFreeToBound.hpp" -#include "Acts/Geometry/GeometryContext.hpp" #include "Acts/MagneticField/NullBField.hpp" #include "Acts/Propagator/ConstrainedStep.hpp" #include "Acts/Propagator/PropagatorTraits.hpp" @@ -112,9 +110,6 @@ class StraightLineStepper { // Previous step size for overstep estimation (ignored for SL stepper) double previousStepSize = 0.; - /// The tolerance for the stepping - double tolerance = s_onSurfaceTolerance; - /// Statistics of the stepper StepperStatistics statistics; }; diff --git a/Core/include/Acts/Propagator/SympyStepper.hpp b/Core/include/Acts/Propagator/SympyStepper.hpp index 4105e79d7f4..53b3474b851 100644 --- a/Core/include/Acts/Propagator/SympyStepper.hpp +++ b/Core/include/Acts/Propagator/SympyStepper.hpp @@ -53,7 +53,7 @@ class SympyStepper { struct State { /// Constructor from the initial bound track parameters /// - /// @param [in] optionsIn The stepper options + /// @param [in] optionsIn is the configuration of the stepper /// @param [in] fieldCacheIn is the cache object for the magnetic field /// /// @note the covariance matrix is copied when needed diff --git a/Core/include/Acts/Propagator/TryAllNavigator.hpp b/Core/include/Acts/Propagator/TryAllNavigator.hpp index f34dd9b5982..84686bcee99 100644 --- a/Core/include/Acts/Propagator/TryAllNavigator.hpp +++ b/Core/include/Acts/Propagator/TryAllNavigator.hpp @@ -12,7 +12,7 @@ #include "Acts/Geometry/Layer.hpp" #include "Acts/Geometry/TrackingGeometry.hpp" #include "Acts/Geometry/TrackingVolume.hpp" -#include "Acts/Propagator/ConstrainedStep.hpp" +#include "Acts/Propagator/NavigationTarget.hpp" #include "Acts/Propagator/NavigatorOptions.hpp" #include "Acts/Propagator/NavigatorStatistics.hpp" #include "Acts/Propagator/detail/NavigationHelpers.hpp" @@ -30,7 +30,11 @@ namespace Acts { -/// @brief Captures the common functionality of the `TryAllNavigator`s +/// @brief Captures the common functionality of the try-all navigators +/// +/// This class is not meant to be used directly, but to be inherited by the +/// actual navigator implementations. +/// class TryAllNavigatorBase { public: /// @brief Configuration for this Navigator @@ -50,7 +54,20 @@ class TryAllNavigatorBase { BoundaryTolerance::None(); }; + /// @brief Options for this Navigator struct Options : public NavigatorPlainOptions { + explicit Options(const GeometryContext& gctx) + : NavigatorPlainOptions(gctx) {} + + /// The surface tolerance + double surfaceTolerance = s_onSurfaceTolerance; + + /// The near limit to resolve surfaces + double nearLimit = s_onSurfaceTolerance; + + /// The far limit to resolve surfaces + double farLimit = std::numeric_limits::max(); + void setPlainOptions(const NavigatorPlainOptions& options) { static_cast(*this) = options; } @@ -61,6 +78,8 @@ class TryAllNavigatorBase { /// It acts as an internal state which is created for every propagation and /// meant to keep thread-local navigation information. struct State { + explicit State(const Options& options_) : options(options_) {} + Options options; // Starting geometry information of the navigation which should only be set @@ -80,11 +99,7 @@ class TryAllNavigatorBase { /// The vector of navigation candidates to work through std::vector navigationCandidates; - /// The vector of intersection candidates to work through - std::vector intersectionCandidates; - /// Indicator if the target is reached - bool targetReached = false; /// If a break has been detected bool navigationBreak = false; @@ -95,17 +110,9 @@ class TryAllNavigatorBase { /// Constructor with configuration object /// /// @param cfg The navigator configuration - /// @param _logger a logger instance - TryAllNavigatorBase(Config cfg, std::unique_ptr _logger) - : m_cfg(std::move(cfg)), m_logger{std::move(_logger)} {} - - State makeState(const Options& options) const { - State state; - state.options = options; - state.startSurface = options.startSurface; - state.targetSurface = options.targetSurface; - return state; - } + /// @param logger a logger instance + TryAllNavigatorBase(Config cfg, std::unique_ptr logger) + : m_cfg(std::move(cfg)), m_logger{std::move(logger)} {} const Surface* currentSurface(const State& state) const { return state.currentSurface; @@ -130,8 +137,6 @@ class TryAllNavigatorBase { return state.targetSurface; } - bool targetReached(const State& state) const { return state.targetReached; } - bool endOfWorldReached(State& state) const { return state.currentVolume == nullptr; } @@ -140,61 +145,52 @@ class TryAllNavigatorBase { return state.navigationBreak; } - void currentSurface(State& state, const Surface* surface) const { - state.currentSurface = surface; - } - - void targetReached(State& state, bool targetReached) const { - state.targetReached = targetReached; - } - - void navigationBreak(State& state, bool navigationBreak) const { - state.navigationBreak = navigationBreak; - } - - /// @brief Initialize call - start of navigation + /// @brief Initialize the navigator /// - /// @tparam propagator_state_t The state type of the propagator - /// @tparam stepper_t The type of stepper used for the propagation + /// This method initializes the navigator for a new propagation. It sets the + /// current volume and surface to the start volume and surface, respectively. /// - /// @param [in,out] state is the propagation state object - /// @param [in] stepper Stepper in use - template - void initialize(propagator_state_t& state, const stepper_t& stepper) const { + /// @param state The navigation state + /// @param position The starting position + /// @param direction The starting direction + /// @param propagationDirection The propagation direction + void initialize(State& state, const Vector3& position, + const Vector3& direction, + Direction propagationDirection) const { + (void)propagationDirection; + ACTS_VERBOSE("initialize"); const TrackingVolume* startVolume = nullptr; - if (state.navigation.startSurface != nullptr && - state.navigation.startSurface->associatedLayer() != nullptr) { + if (state.startSurface != nullptr && + state.startSurface->associatedLayer() != nullptr) { ACTS_VERBOSE( "Fast start initialization through association from Surface."); - const auto* startLayer = state.navigation.startSurface->associatedLayer(); + const auto* startLayer = state.startSurface->associatedLayer(); startVolume = startLayer->trackingVolume(); } else { ACTS_VERBOSE("Slow start initialization through search."); - ACTS_VERBOSE("Starting from position " - << toString(stepper.position(state.stepping)) - << " and direction " - << toString(stepper.direction(state.stepping))); + ACTS_VERBOSE("Starting from position " << toString(position) + << " and direction " + << toString(direction)); startVolume = m_cfg.trackingGeometry->lowestTrackingVolume( - state.geoContext, stepper.position(state.stepping)); + state.options.geoContext, position); } // Initialize current volume, layer and surface { - state.navigation.currentVolume = startVolume; - if (state.navigation.currentVolume != nullptr) { + state.currentVolume = startVolume; + if (state.currentVolume != nullptr) { ACTS_VERBOSE(volInfo(state) << "Start volume resolved."); } else { ACTS_ERROR("Start volume not resolved."); } - state.navigation.currentSurface = state.navigation.startSurface; - if (state.navigation.currentSurface != nullptr) { - ACTS_VERBOSE(volInfo(state) - << "Current surface set to start surface " - << state.navigation.currentSurface->geometryId()); + state.currentSurface = state.startSurface; + if (state.currentSurface != nullptr) { + ACTS_VERBOSE(volInfo(state) << "Current surface set to start surface " + << state.currentSurface->geometryId()); } else { ACTS_VERBOSE(volInfo(state) << "No start surface set."); } @@ -203,28 +199,25 @@ class TryAllNavigatorBase { protected: /// Helper method to initialize navigation candidates for the current volume. - template - void initializeVolumeCandidates(propagator_state_t& state) const { - const TrackingVolume* volume = state.navigation.currentVolume; + void initializeVolumeCandidates(State& state) const { + const TrackingVolume* volume = state.currentVolume; ACTS_VERBOSE(volInfo(state) << "Initialize volume"); if (volume == nullptr) { - state.navigation.navigationBreak = true; + state.navigationBreak = true; ACTS_VERBOSE(volInfo(state) << "No volume set. Good luck."); return; } emplaceAllVolumeCandidates( - state.navigation.navigationCandidates, *volume, m_cfg.resolveSensitive, + state.navigationCandidates, *volume, m_cfg.resolveSensitive, m_cfg.resolveMaterial, m_cfg.resolvePassive, m_cfg.boundaryToleranceSurfaceApproach, logger()); } - template - std::string volInfo(const propagator_state_t& state) const { - return (state.navigation.currentVolume != nullptr - ? state.navigation.currentVolume->volumeName() - : "No Volume") + + std::string volInfo(const State& state) const { + return (state.currentVolume != nullptr ? state.currentVolume->volumeName() + : "No Volume") + " | "; } @@ -248,7 +241,14 @@ class TryAllNavigator : public TryAllNavigatorBase { public: using Config = TryAllNavigatorBase::Config; using Options = TryAllNavigatorBase::Options; - using State = TryAllNavigatorBase::State; + + /// @brief Nested State struct + struct State : public TryAllNavigatorBase::State { + explicit State(const Options& options_) + : TryAllNavigatorBase::State(options_) {} + + std::vector currentCandidates; + }; /// Constructor with configuration object /// @@ -259,7 +259,13 @@ class TryAllNavigator : public TryAllNavigatorBase { getDefaultLogger("TryAllNavigator", Logging::INFO)) : TryAllNavigatorBase(std::move(cfg), std::move(logger)) {} - using TryAllNavigatorBase::makeState; + State makeState(const Options& options) const { + State state(options); + state.startSurface = options.startSurface; + state.targetSurface = options.targetSurface; + + return state; + } using TryAllNavigatorBase::currentSurface; using TryAllNavigatorBase::currentVolume; @@ -267,81 +273,83 @@ class TryAllNavigator : public TryAllNavigatorBase { using TryAllNavigatorBase::endOfWorldReached; using TryAllNavigatorBase::navigationBreak; using TryAllNavigatorBase::startSurface; - using TryAllNavigatorBase::targetReached; using TryAllNavigatorBase::targetSurface; - using TryAllNavigatorBase::initialize; - - /// @brief Initialize call - start of navigation + /// @brief Initialize the navigator /// - /// @tparam propagator_state_t The state type of the propagator - /// @tparam stepper_t The type of stepper used for the propagation + /// This method initializes the navigator for a new propagation. It sets the + /// current volume and surface to the start volume and surface, respectively. /// - /// @param [in,out] state is the propagation state object - /// @param [in] stepper Stepper in use - template - void initialize(propagator_state_t& state, const stepper_t& stepper) const { - TryAllNavigatorBase::initialize(state, stepper); + /// @param state The navigation state + /// @param position The starting position + /// @param direction The starting direction + /// @param propagationDirection The propagation direction + void initialize(State& state, const Vector3& position, + const Vector3& direction, + Direction propagationDirection) const { + TryAllNavigatorBase::initialize(state, position, direction, + propagationDirection); // Initialize navigation candidates for the start volume reinitializeCandidates(state); } - /// @brief Navigator pre step call + /// @brief Get the next target surface /// - /// This determines the next surface to be targeted and sets the step length - /// accordingly. + /// This method gets the next target surface based on the current + /// position and direction. It returns a none target if no target can be + /// found. /// - /// @tparam propagator_state_t is the type of Propagatgor state - /// @tparam stepper_t is the used type of the Stepper by the Propagator + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction /// - /// @param [in,out] state is the mutable propagator state object - /// @param [in] stepper Stepper in use - template - void preStep(propagator_state_t& state, const stepper_t& stepper) const { - ACTS_VERBOSE(volInfo(state) << "pre step"); - - // Navigator preStep always resets the current surface - state.navigation.currentSurface = nullptr; + /// @return The next target surface + NavigationTarget nextTarget(State& state, const Vector3& position, + const Vector3& direction) const { + // Check if the navigator is inactive + if (state.navigationBreak) { + return NavigationTarget::None(); + } - ACTS_VERBOSE(volInfo(state) << "intersect candidates"); + ACTS_VERBOSE(volInfo(state) << "nextTarget"); - Vector3 position = stepper.position(state.stepping); - Vector3 direction = - state.options.direction * stepper.direction(state.stepping); + // Navigator preStep always resets the current surface + state.currentSurface = nullptr; - double nearLimit = state.options.surfaceTolerance; - double farLimit = std::numeric_limits::max(); + double nearLimit = state.options.nearLimit; + double farLimit = state.options.farLimit; // handle overstepping - if (!state.navigation.intersectionCandidates.empty()) { - const detail::IntersectionCandidate& previousIntersection = - state.navigation.intersectionCandidates.front(); + if (!state.currentCandidates.empty()) { + const detail::IntersectedNavigationObject& previousCandidate = + state.currentCandidates.front(); - const Surface& surface = *previousIntersection.intersection.object(); - std::uint8_t index = previousIntersection.intersection.index(); - BoundaryTolerance boundaryTolerance = - previousIntersection.boundaryTolerance; + const Surface& surface = *previousCandidate.intersection.object(); + std::uint8_t index = previousCandidate.intersection.index(); + BoundaryTolerance boundaryTolerance = previousCandidate.boundaryTolerance; auto intersection = surface.intersect( - state.geoContext, position, direction, boundaryTolerance, + state.options.geoContext, position, direction, boundaryTolerance, state.options.surfaceTolerance)[index]; if (intersection.pathLength() < 0) { - ACTS_VERBOSE(volInfo(state) << "handle overstepping"); - nearLimit = std::min(nearLimit, intersection.pathLength() - state.options.surfaceTolerance); farLimit = -state.options.surfaceTolerance; + + ACTS_VERBOSE(volInfo(state) + << "handle overstepping with nearLimit " << nearLimit + << " and farLimit " << farLimit); } } - std::vector intersectionCandidates; + std::vector intersectionCandidates; // Find intersections with all candidates - for (const auto& candidate : state.navigation.navigationCandidates) { + for (const auto& candidate : state.navigationCandidates) { auto intersections = - candidate.intersect(state.geoContext, position, direction, + candidate.intersect(state.options.geoContext, position, direction, state.options.surfaceTolerance); for (const auto& intersection : intersections.first.split()) { // exclude invalid intersections @@ -357,24 +365,20 @@ class TryAllNavigator : public TryAllNavigatorBase { } std::ranges::sort(intersectionCandidates, - detail::IntersectionCandidate::forwardOrder); + detail::IntersectedNavigationObject::forwardOrder); ACTS_VERBOSE(volInfo(state) << "found " << intersectionCandidates.size() << " intersections"); - bool intersectionFound = false; + NavigationTarget nextTarget = NavigationTarget::None(); + state.currentCandidates.clear(); for (const auto& candidate : intersectionCandidates) { const auto& intersection = candidate.intersection; const Surface& surface = *intersection.object(); BoundaryTolerance boundaryTolerance = candidate.boundaryTolerance; - auto surfaceStatus = stepper.updateSurfaceStatus( - state.stepping, surface, intersection.index(), - state.options.direction, boundaryTolerance, - state.options.surfaceTolerance, ConstrainedStep::navigator, logger()); - - if (surfaceStatus == IntersectionStatus::onSurface) { + if (intersection.status() == IntersectionStatus::onSurface) { ACTS_ERROR(volInfo(state) << "We are on surface " << surface.geometryId() << " before trying to reach it. This should not happen. " @@ -382,125 +386,114 @@ class TryAllNavigator : public TryAllNavigatorBase { continue; } - if (surfaceStatus == IntersectionStatus::reachable) { - ACTS_VERBOSE(volInfo(state) - << "Surface reachable, step size updated to " - << stepper.outputStepSize(state.stepping)); - intersectionFound = true; + if (intersection.status() == IntersectionStatus::reachable) { + nextTarget = + NavigationTarget(surface, intersection.index(), boundaryTolerance); break; } } - if (!intersectionFound) { - stepper.releaseStepSize(state.stepping, ConstrainedStep::navigator); + state.currentCandidates = std::move(intersectionCandidates); - ACTS_VERBOSE(volInfo(state) << "no intersections found. advance without " - "constraints. step size is " - << stepper.outputStepSize(state.stepping)); + if (nextTarget.isNone()) { + ACTS_VERBOSE(volInfo(state) << "no target found"); + } else { + ACTS_VERBOSE(volInfo(state) + << "next target is " << nextTarget.surface->geometryId()); } - state.navigation.intersectionCandidates = std::move(intersectionCandidates); + return nextTarget; } - /// @brief Navigator post step call + /// @brief Check if the target is still valid /// - /// This determines if we hit the next navigation candidate and deals with it - /// accordingly. It sets the current surface, enters layers and changes - /// volumes. + /// This method checks if the target is valid based on the current position + /// and direction. It returns true if the target is still valid. /// - /// @tparam propagator_state_t is the type of Propagatgor state - /// @tparam stepper_t is the used type of the Stepper by the Propagator + /// For the TryAllNavigator, the target is always invalid since we do not want + /// to assume any specific surface sequence over multiple steps. /// - /// @param [in,out] state is the mutable propagator state object - /// @param [in] stepper Stepper in use + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction /// - /// @return Boolean to indicate if we continue with the actors and - /// aborters or if we should target again. - template - void postStep(propagator_state_t& state, const stepper_t& stepper) const { - ACTS_VERBOSE(volInfo(state) << "post step"); - - assert(state.navigation.currentSurface == nullptr && - "Current surface must be reset."); + /// @return True if the target is still valid + bool checkTargetValid(const State& state, const Vector3& position, + const Vector3& direction) const { + (void)state; + (void)position; + (void)direction; + + return false; + } - if (state.navigation.intersectionCandidates.empty()) { - ACTS_VERBOSE(volInfo(state) << "no intersections."); + /// @brief Handle the surface reached + /// + /// This method is called when a surface is reached. It sets the current + /// surface in the navigation state and updates the navigation candidates. + /// + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction + void handleSurfaceReached(State& state, const Vector3& position, + const Vector3& direction, + const Surface& /*surface*/) const { + // Check if the navigator is inactive + if (state.navigationBreak) { return; } - std::vector hitCandidates; - - for (const auto& candidate : state.navigation.intersectionCandidates) { - const auto& intersection = candidate.intersection; - const Surface& surface = *intersection.object(); + ACTS_VERBOSE(volInfo(state) << "handleSurfaceReached"); - IntersectionStatus surfaceStatus = stepper.updateSurfaceStatus( - state.stepping, surface, intersection.index(), - state.options.direction, BoundaryTolerance::Infinite(), - state.options.surfaceTolerance, ConstrainedStep::navigator, logger()); - - if (surfaceStatus != IntersectionStatus::onSurface) { - break; - } - - hitCandidates.emplace_back(candidate); - } - - if (hitCandidates.empty()) { - ACTS_VERBOSE(volInfo(state) << "Staying focussed on surface."); + if (state.currentCandidates.empty()) { + ACTS_VERBOSE(volInfo(state) << "No current candidate set."); return; } - state.navigation.intersectionCandidates.clear(); + assert(state.currentSurface == nullptr && "Current surface must be reset."); - ACTS_VERBOSE(volInfo(state) - << "Found " << hitCandidates.size() - << " intersections on surface without bounds check."); + // handle multiple surface intersections due to increased bounds - std::vector trueHitCandidates; + std::vector hitCandidates; - for (const auto& candidate : hitCandidates) { - const auto& intersection = candidate.intersection; - const Surface& surface = *intersection.object(); + for (const auto& candidate : state.currentCandidates) { + const Surface& surface = *candidate.intersection.object(); + std::uint8_t index = candidate.intersection.index(); + BoundaryTolerance boundaryTolerance = BoundaryTolerance::None(); - IntersectionStatus surfaceStatus = stepper.updateSurfaceStatus( - state.stepping, surface, intersection.index(), - state.options.direction, BoundaryTolerance::None(), - state.options.surfaceTolerance, ConstrainedStep::navigator, logger()); + auto intersection = surface.intersect( + state.options.geoContext, position, direction, boundaryTolerance, + state.options.surfaceTolerance)[index]; - if (surfaceStatus != IntersectionStatus::onSurface) { - continue; + if (intersection.status() == IntersectionStatus::onSurface) { + hitCandidates.emplace_back(candidate); } - - trueHitCandidates.emplace_back(candidate); } + state.currentCandidates.clear(); + ACTS_VERBOSE(volInfo(state) - << "Found " << trueHitCandidates.size() + << "Found " << hitCandidates.size() << " intersections on surface with bounds check."); - if (trueHitCandidates.empty()) { - ACTS_VERBOSE(volInfo(state) - << "Surface successfully hit, but outside bounds."); + if (hitCandidates.empty()) { + ACTS_VERBOSE(volInfo(state) << "No hit candidates found."); return; } - if (trueHitCandidates.size() > 1) { + if (hitCandidates.size() > 1) { ACTS_VERBOSE(volInfo(state) << "Only using first intersection within bounds."); } - const auto& candidate = trueHitCandidates.front(); + // we can only handle a single surface hit so we pick the first one + const auto candidate = hitCandidates.front(); const auto& intersection = candidate.intersection; const Surface& surface = *intersection.object(); - ACTS_VERBOSE(volInfo(state) << "Surface successfully hit, storing it."); - // Set in navigation state, so actors and aborters can access it - state.navigation.currentSurface = &surface; - if (state.navigation.currentSurface) { - ACTS_VERBOSE(volInfo(state) << "Current surface set to surface " - << surface.geometryId()); - } + ACTS_VERBOSE(volInfo(state) << "Surface " << surface.geometryId() + << " successfully hit, storing it."); + state.currentSurface = &surface; if (candidate.template checkType()) { ACTS_VERBOSE(volInfo(state) << "This is a surface"); @@ -512,9 +505,8 @@ class TryAllNavigator : public TryAllNavigatorBase { const auto& boundary = *candidate.template object(); - state.navigation.currentVolume = boundary.attachedVolume( - state.geoContext, stepper.position(state.stepping), - state.options.direction * stepper.direction(state.stepping)); + state.currentVolume = boundary.attachedVolume(state.options.geoContext, + position, direction); ACTS_VERBOSE(volInfo(state) << "Switched volume"); @@ -526,10 +518,9 @@ class TryAllNavigator : public TryAllNavigatorBase { private: /// Helper method to reset and reinitialize the navigation candidates. - template - void reinitializeCandidates(propagator_state_t& state) const { - state.navigation.navigationCandidates.clear(); - state.navigation.intersectionCandidates.clear(); + void reinitializeCandidates(State& state) const { + state.navigationCandidates.clear(); + state.currentCandidates.clear(); initializeVolumeCandidates(state); } @@ -560,22 +551,25 @@ class TryAllOverstepNavigator : public TryAllNavigatorBase { /// It acts as an internal state which is created for every propagation and /// meant to keep thread-local navigation information. struct State : public TryAllNavigatorBase::State { - /// The vector of navigation candidates to work through - std::vector navigationCandidates; + explicit State(const Options& options_) + : TryAllNavigatorBase::State(options_) {} + /// The vector of active intersection candidates to work through - std::vector activeCandidates; + std::vector activeCandidates; /// The current active candidate index of the navigation state - std::size_t activeCandidateIndex = 0; + int activeCandidateIndex = -1; /// The position before the last step std::optional lastPosition; - /// The last intersection used to avoid rehitting the same surface - std::optional lastIntersection; /// Provides easy access to the active intersection candidate - const detail::IntersectionCandidate& activeCandidate() const { + const detail::IntersectedNavigationObject& activeCandidate() const { return activeCandidates.at(activeCandidateIndex); } + + bool endOfCandidates() const { + return activeCandidateIndex >= static_cast(activeCandidates.size()); + } }; /// Constructor with configuration object @@ -589,10 +583,10 @@ class TryAllOverstepNavigator : public TryAllNavigatorBase { : TryAllNavigatorBase(std::move(cfg), std::move(logger)) {} State makeState(const Options& options) const { - State state; - state.options = options; + State state(options); state.startSurface = options.startSurface; state.targetSurface = options.targetSurface; + return state; } @@ -602,149 +596,85 @@ class TryAllOverstepNavigator : public TryAllNavigatorBase { using TryAllNavigatorBase::endOfWorldReached; using TryAllNavigatorBase::navigationBreak; using TryAllNavigatorBase::startSurface; - using TryAllNavigatorBase::targetReached; using TryAllNavigatorBase::targetSurface; - /// @brief Initialize call - start of navigation + /// @brief Initialize the navigator /// - /// @tparam propagator_state_t The state type of the propagator - /// @tparam stepper_t The type of stepper used for the propagation + /// This method initializes the navigator for a new propagation. It sets the + /// current volume and surface to the start volume and surface, respectively. /// - /// @param [in,out] state is the propagation state object - /// @param [in] stepper Stepper in use - template - void initialize(propagator_state_t& state, const stepper_t& stepper) const { - TryAllNavigatorBase::initialize(state, stepper); + /// @param state The navigation state + /// @param position The starting position + /// @param direction The starting direction + /// @param propagationDirection The propagation direction + void initialize(State& state, const Vector3& position, + const Vector3& direction, + Direction propagationDirection) const { + TryAllNavigatorBase::initialize(state, position, direction, + propagationDirection); // Initialize navigation candidates for the start volume reinitializeCandidates(state); - state.navigation.lastPosition.reset(); - state.navigation.lastIntersection.reset(); + state.lastPosition.reset(); } - /// @brief Navigator pre step call + /// @brief Get the next target surface /// - /// This determines the next surface to be targeted and sets the step length - /// accordingly. + /// This method gets the next target surface based on the current + /// position and direction. It returns an invalid target if no target can be + /// found. /// - /// @tparam propagator_state_t is the type of Propagatgor state - /// @tparam stepper_t is the used type of the Stepper by the Propagator + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction /// - /// @param [in,out] state is the mutable propagator state object - /// @param [in] stepper Stepper in use - template - void preStep(propagator_state_t& state, const stepper_t& stepper) const { - ACTS_VERBOSE(volInfo(state) << "pre step"); - - // Navigator preStep always resets the current surface - state.navigation.currentSurface = nullptr; - - ACTS_VERBOSE(volInfo(state) << "handle active candidates"); - - // Check next navigation candidate - while (state.navigation.activeCandidateIndex != - state.navigation.activeCandidates.size()) { - // Screen output how much is left to try - ACTS_VERBOSE(volInfo(state) - << (state.navigation.activeCandidates.size() - - state.navigation.activeCandidateIndex) - << " out of " << state.navigation.activeCandidates.size() - << " surfaces remain to try."); - - const auto& candidate = state.navigation.activeCandidate(); - const auto& intersection = candidate.intersection; - const Surface& surface = *intersection.object(); - BoundaryTolerance boundaryTolerance = candidate.boundaryTolerance; - - // Screen output which surface you are on - ACTS_VERBOSE(volInfo(state) << "Next surface candidate will be " - << surface.geometryId()); - - // Estimate the surface status - auto surfaceStatus = stepper.updateSurfaceStatus( - state.stepping, surface, intersection.index(), - state.options.direction, boundaryTolerance, - state.options.surfaceTolerance, ConstrainedStep::navigator, logger()); - - if (surfaceStatus == IntersectionStatus::onSurface) { - ACTS_ERROR(volInfo(state) - << "We are on surface " << surface.geometryId() - << " before trying to reach it. This should not happen. " - "Good luck."); - ++state.navigation.activeCandidateIndex; - continue; - } + /// @return The next target surface + NavigationTarget nextTarget(State& state, const Vector3& position, + const Vector3& direction) const { + (void)direction; - if (surfaceStatus == IntersectionStatus::reachable) { - ACTS_VERBOSE(volInfo(state) - << "Surface reachable, step size updated to " - << stepper.outputStepSize(state.stepping)); - break; - } - - ACTS_VERBOSE(volInfo(state) << "Surface " << surface.geometryId() - << " unreachable, skip."); - ++state.navigation.activeCandidateIndex; + if (state.navigationBreak) { + return NavigationTarget::None(); } - if (state.navigation.activeCandidateIndex == - state.navigation.activeCandidates.size()) { - state.navigation.lastPosition = stepper.position(state.stepping); - - stepper.releaseStepSize(state.stepping, ConstrainedStep::navigator); + ACTS_VERBOSE(volInfo(state) << "nextTarget"); - ACTS_VERBOSE(volInfo(state) - << "blindly step forwards. step size updated to " - << stepper.outputStepSize(state.stepping)); + state.currentSurface = nullptr; - return; + // We cannot do anything without a last position + if (!state.lastPosition.has_value() && state.endOfCandidates()) { + ACTS_VERBOSE( + volInfo(state) + << "Initial position, nothing to do, blindly stepping forward."); + state.lastPosition = position; + return NavigationTarget::None(); } - } - /// @brief Navigator post step call - /// - /// This determines if we hit the next navigation candidate and deals with it - /// accordingly. It sets the current surface, enters layers and changes - /// volumes. - /// - /// @tparam propagator_state_t is the type of Propagatgor state - /// @tparam stepper_t is the used type of the Stepper by the Propagator - /// - /// @param [in,out] state is the mutable propagator state object - /// @param [in] stepper Stepper in use - /// - /// @return Boolean to indicate if we continue with the actors and - /// aborters or if we should target again. - template - void postStep(propagator_state_t& state, const stepper_t& stepper) const { - ACTS_VERBOSE(volInfo(state) << "post step"); - - assert(state.navigation.currentSurface == nullptr && - "Current surface must be reset."); - - if (state.navigation.activeCandidateIndex == - state.navigation.activeCandidates.size()) { + if (state.endOfCandidates()) { ACTS_VERBOSE(volInfo(state) << "evaluate blind step"); - state.navigation.activeCandidates.clear(); - - assert(state.navigation.lastPosition.has_value() && - "last position not set"); + Vector3 stepStart = state.lastPosition.value(); + Vector3 stepEnd = position; + Vector3 step = stepEnd - stepStart; + double stepDistance = step.norm(); + if (stepDistance < std::numeric_limits::epsilon()) { + ACTS_ERROR(volInfo(state) << "Step distance is zero. " << stepDistance); + } + Vector3 stepDirection = step.normalized(); - Vector3 start = state.navigation.lastPosition.value(); - Vector3 end = stepper.position(state.stepping); - Vector3 step = end - start; - double distance = step.norm(); - Vector3 direction = step.normalized(); + double nearLimit = -stepDistance + state.options.surfaceTolerance; + double farLimit = 0; - double nearLimit = -distance + state.options.surfaceTolerance; - double farLimit = state.options.surfaceTolerance; + state.lastPosition.reset(); + state.activeCandidates.clear(); + state.activeCandidateIndex = -1; // Find intersections with all candidates - for (const auto& candidate : state.navigation.navigationCandidates) { - auto intersections = candidate.intersect( - state.geoContext, end, direction, state.options.surfaceTolerance); + for (const auto& candidate : state.navigationCandidates) { + auto intersections = + candidate.intersect(state.options.geoContext, stepEnd, + stepDirection, state.options.surfaceTolerance); for (const auto& intersection : intersections.first.split()) { // exclude invalid intersections if (!intersection.isValid() || @@ -752,142 +682,189 @@ class TryAllOverstepNavigator : public TryAllNavigatorBase { farLimit)) { continue; } - // exclude last candidate - if (state.navigation.lastIntersection.has_value() && - state.navigation.lastIntersection->object() == - intersection.object() && - state.navigation.lastIntersection->index() == - intersection.index()) { - continue; - } // store candidate - state.navigation.activeCandidates.emplace_back( + state.activeCandidates.emplace_back( intersection, intersections.second, candidate.boundaryTolerance); } } - std::ranges::sort(state.navigation.activeCandidates, - detail::IntersectionCandidate::forwardOrder); + std::ranges::sort(state.activeCandidates, + detail::IntersectedNavigationObject::forwardOrder); - state.navigation.activeCandidateIndex = 0; + ACTS_VERBOSE(volInfo(state) << "Found " << state.activeCandidates.size() + << " intersections"); + for (const auto& candidate : state.activeCandidates) { + ACTS_VERBOSE("found candidate " + << candidate.intersection.object()->geometryId()); + } + } + + ++state.activeCandidateIndex; + + if (state.endOfCandidates()) { ACTS_VERBOSE(volInfo(state) - << "Found " << state.navigation.activeCandidates.size() - << " intersections"); + << "No target found, blindly stepping forward."); + state.lastPosition = position; + return NavigationTarget::None(); } - if (state.navigation.activeCandidateIndex != - state.navigation.activeCandidates.size()) { - ACTS_VERBOSE(volInfo(state) << "handle active candidates"); + ACTS_VERBOSE(volInfo(state) << "handle active candidates"); - std::vector hitCandidates; + ACTS_VERBOSE(volInfo(state) + << (state.activeCandidates.size() - state.activeCandidateIndex) + << " out of " << state.activeCandidates.size() + << " surfaces remain to try."); - while (state.navigation.activeCandidateIndex != - state.navigation.activeCandidates.size()) { - const auto& candidate = state.navigation.activeCandidate(); - const auto& intersection = candidate.intersection; - const Surface& surface = *intersection.object(); + const auto& candidate = state.activeCandidate(); + const auto& intersection = candidate.intersection; + const Surface& surface = *intersection.object(); + BoundaryTolerance boundaryTolerance = candidate.boundaryTolerance; - IntersectionStatus surfaceStatus = stepper.updateSurfaceStatus( - state.stepping, surface, intersection.index(), - state.options.direction, BoundaryTolerance::Infinite(), - state.options.surfaceTolerance, ConstrainedStep::navigator, - logger()); + ACTS_VERBOSE(volInfo(state) + << "Next surface candidate will be " << surface.geometryId()); - if (surfaceStatus != IntersectionStatus::onSurface) { - break; - } + return NavigationTarget(surface, intersection.index(), boundaryTolerance); + } - hitCandidates.emplace_back(candidate); + /// @brief Check if the target is still valid + /// + /// This method checks if the target is valid based on the current position + /// and direction. It returns true if the target is still valid. + /// + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction + /// + /// @return True if the target is still valid + bool checkTargetValid(const State& state, const Vector3& position, + const Vector3& direction) const { + (void)state; + (void)position; + (void)direction; + + return true; + } - ++state.navigation.activeCandidateIndex; - } + /// @brief Handle the surface reached + /// + /// This method is called when a surface is reached. It sets the current + /// surface in the navigation state and updates the navigation candidates. + /// + /// @param state The navigation state + /// @param position The current position + /// @param direction The current direction + void handleSurfaceReached(State& state, const Vector3& position, + const Vector3& direction, + const Surface& /*surface*/) const { + if (state.navigationBreak) { + return; + } - if (hitCandidates.empty()) { - ACTS_VERBOSE(volInfo(state) << "Staying focussed on surface."); - return; - } + ACTS_VERBOSE(volInfo(state) << "handleSurfaceReached"); - state.navigation.lastIntersection.reset(); + assert(state.currentSurface == nullptr && "Current surface must be reset."); - std::vector trueHitCandidates; + if (state.endOfCandidates()) { + ACTS_VERBOSE(volInfo(state) << "No active candidate set."); + return; + } - for (const auto& candidate : hitCandidates) { - const auto& intersection = candidate.intersection; - const Surface& surface = *intersection.object(); + std::vector hitCandidates; - IntersectionStatus surfaceStatus = stepper.updateSurfaceStatus( - state.stepping, surface, intersection.index(), - state.options.direction, BoundaryTolerance::None(), - state.options.surfaceTolerance, ConstrainedStep::navigator, - logger()); + while (!state.endOfCandidates()) { + const auto& candidate = state.activeCandidate(); + const auto& intersection = candidate.intersection; + const Surface& surface = *intersection.object(); + BoundaryTolerance boundaryTolerance = candidate.boundaryTolerance; - if (surfaceStatus != IntersectionStatus::onSurface) { - continue; - } + // first with boundary tolerance + IntersectionStatus surfaceStatus = + surface + .intersect(state.options.geoContext, position, direction, + boundaryTolerance, + state.options.surfaceTolerance)[intersection.index()] + .status(); - trueHitCandidates.emplace_back(candidate); + if (surfaceStatus != IntersectionStatus::onSurface) { + break; } - ACTS_VERBOSE(volInfo(state) - << "Found " << trueHitCandidates.size() - << " intersections on surface with bounds check."); + // now without boundary tolerance + boundaryTolerance = BoundaryTolerance::None(); + surfaceStatus = + surface + .intersect(state.options.geoContext, position, direction, + boundaryTolerance, + state.options.surfaceTolerance)[intersection.index()] + .status(); - if (trueHitCandidates.empty()) { - ACTS_VERBOSE(volInfo(state) - << "Surface successfully hit, but outside bounds."); - return; + if (surfaceStatus == IntersectionStatus::onSurface) { + hitCandidates.emplace_back(candidate); } - if (trueHitCandidates.size() > 1) { - ACTS_VERBOSE(volInfo(state) - << "Only using first intersection within bounds."); - } + ++state.activeCandidateIndex; + ACTS_VERBOSE("skip candidate " << surface.geometryId()); + } - const auto& candidate = trueHitCandidates.front(); - const auto& intersection = candidate.intersection; - const Surface& surface = *intersection.object(); + // we increased the candidate index one too many times + --state.activeCandidateIndex; - state.navigation.lastIntersection = intersection; + ACTS_VERBOSE(volInfo(state) + << "Found " << hitCandidates.size() + << " intersections on surface with bounds check."); - ACTS_VERBOSE(volInfo(state) << "Surface successfully hit, storing it."); - // Set in navigation state, so actors and aborters can access it - state.navigation.currentSurface = &surface; - if (state.navigation.currentSurface) { - ACTS_VERBOSE(volInfo(state) << "Current surface set to surface " - << surface.geometryId()); - } + if (hitCandidates.empty()) { + ACTS_VERBOSE(volInfo(state) + << "Surface successfully hit, but outside bounds."); + return; + } - if (candidate.template checkType()) { - ACTS_VERBOSE(volInfo(state) << "This is a surface"); - } else if (candidate.template checkType()) { - ACTS_VERBOSE(volInfo(state) << "This is a layer"); - } else if (candidate.template checkType()) { - ACTS_VERBOSE(volInfo(state) - << "This is a boundary. Reinitialize navigation"); + if (hitCandidates.size() > 1) { + ACTS_VERBOSE(volInfo(state) + << "Only using first intersection within bounds."); + } - const auto& boundary = *candidate.template object(); + // we can only handle a single surface hit so we pick the first one + const auto& candidate = hitCandidates.front(); + const auto& intersection = candidate.intersection; + const Surface& surface = *intersection.object(); - state.navigation.currentVolume = boundary.attachedVolume( - state.geoContext, stepper.position(state.stepping), - state.options.direction * stepper.direction(state.stepping)); + ACTS_VERBOSE(volInfo(state) << "Surface successfully hit, storing it."); + state.currentSurface = &surface; - ACTS_VERBOSE(volInfo(state) << "Switched volume"); + if (state.currentSurface != nullptr) { + ACTS_VERBOSE(volInfo(state) << "Current surface set to surface " + << surface.geometryId()); + } - reinitializeCandidates(state); - } else { - ACTS_ERROR(volInfo(state) << "Unknown intersection type"); - } + if (candidate.template checkType()) { + ACTS_VERBOSE(volInfo(state) << "This is a surface"); + } else if (candidate.template checkType()) { + ACTS_VERBOSE(volInfo(state) << "This is a layer"); + } else if (candidate.template checkType()) { + ACTS_VERBOSE(volInfo(state) + << "This is a boundary. Reinitialize navigation"); + + const auto& boundary = *candidate.template object(); + + state.currentVolume = boundary.attachedVolume(state.options.geoContext, + position, direction); + + ACTS_VERBOSE(volInfo(state) << "Switched volume"); + + reinitializeCandidates(state); + } else { + ACTS_ERROR(volInfo(state) << "Unknown intersection type"); } } private: /// Helper method to reset and reinitialize the navigation candidates. - template - void reinitializeCandidates(propagator_state_t& state) const { - state.navigation.navigationCandidates.clear(); - state.navigation.activeCandidates.clear(); - state.navigation.activeCandidateIndex = 0; + void reinitializeCandidates(State& state) const { + state.navigationCandidates.clear(); + state.activeCandidates.clear(); + state.activeCandidateIndex = -1; initializeVolumeCandidates(state); } diff --git a/Core/include/Acts/Propagator/VoidNavigator.hpp b/Core/include/Acts/Propagator/VoidNavigator.hpp index 6b461f79210..d91b75450ec 100644 --- a/Core/include/Acts/Propagator/VoidNavigator.hpp +++ b/Core/include/Acts/Propagator/VoidNavigator.hpp @@ -8,28 +8,39 @@ #pragma once +#include "Acts/Definitions/Algebra.hpp" +#include "Acts/Definitions/Direction.hpp" +#include "Acts/Propagator/NavigationTarget.hpp" #include "Acts/Propagator/NavigatorOptions.hpp" #include "Acts/Propagator/NavigatorStatistics.hpp" + namespace Acts { class Surface; -/// @brief The void navigator struct as a default navigator +/// @brief A navigator that does nothing /// -/// It does not provide any navigation action, the compiler -/// should eventually optimise that the function call is not done +/// It does not provide any navigation action /// -struct VoidNavigator { +class VoidNavigator { + public: + /// @brief Nested Config struct struct Config {}; + /// @brief Nested Options struct struct Options : public NavigatorPlainOptions { + explicit Options(const GeometryContext& gctx) + : NavigatorPlainOptions(gctx) {} + void setPlainOptions(const NavigatorPlainOptions& options) { static_cast(*this) = options; } }; - /// @brief Nested State struct, minimal requirement + /// @brief Nested State struct struct State { + explicit State(const Options& options_) : options(options_) {} + Options options; /// Navigation statistics @@ -37,8 +48,7 @@ struct VoidNavigator { }; State makeState(const Options& options) const { - State state; - state.options = options; + State state(options); return state; } @@ -50,45 +60,29 @@ struct VoidNavigator { const Surface* targetSurface(const State& /*state*/) const { return nullptr; } - bool targetReached(const State& /*state*/) const { return false; } - - bool navigationBreak(const State& /*state*/) const { return false; } - - void currentSurface(State& /*state*/, const Surface* /*surface*/) const {} - - void targetReached(State& /*state*/, bool /*targetReached*/) const {} - - void navigationBreak(State& /*state*/, bool /*navigationBreak*/) const {} - - /// Navigation call - void - /// - /// @tparam propagator_state_t is the type of Propagatgor state - /// @tparam stepper_t Type of the Stepper - /// - /// Empty call, compiler should optimise that - template - void initialize(propagator_state_t& /*state*/, - const stepper_t& /*stepper*/) const {} - - /// Navigation call - void - /// - /// @tparam propagator_state_t is the type of Propagatgor state - /// @tparam stepper_t Type of the Stepper - /// - /// Empty call, compiler should optimise that - template - void preStep(propagator_state_t& /*state*/, - const stepper_t& /*stepper*/) const {} - - /// Navigation call - void - /// - /// @tparam propagator_state_t is the type of Propagatgor state - /// @tparam stepper_t Type of the Stepper - /// - /// Empty call, compiler should optimise that - template - void postStep(propagator_state_t& /*state*/, - const stepper_t& /*stepper*/) const {} + bool navigationBreak(const State& /*state*/) const { return true; } + + void initialize(State& /*state*/, const Vector3& /*position*/, + const Vector3& /*direction*/, + Direction /*propagationDirection*/) const { + return; + } + + NavigationTarget nextTarget(State& /*state*/, const Vector3& /*position*/, + const Vector3& /*direction*/) const { + return NavigationTarget::None(); + } + + bool checkTargetValid(const State& /*state*/, const Vector3& /*position*/, + const Vector3& /*direction*/) const { + return true; + } + + void handleSurfaceReached(State& /*state*/, const Vector3& /*position*/, + const Vector3& /*direction*/, + const Surface& /*surface*/) const { + return; + } }; } // namespace Acts diff --git a/Core/include/Acts/Propagator/detail/NavigationHelpers.hpp b/Core/include/Acts/Propagator/detail/NavigationHelpers.hpp index 8965dacae45..646606132b9 100644 --- a/Core/include/Acts/Propagator/detail/NavigationHelpers.hpp +++ b/Core/include/Acts/Propagator/detail/NavigationHelpers.hpp @@ -37,22 +37,19 @@ struct NavigationObjectCandidate { std::pair intersect( const GeometryContext& gctx, const Vector3& position, const Vector3& direction, double tolerance) const { + auto intersection = representation->intersect(gctx, position, direction, + boundaryTolerance, tolerance); + if (std::holds_alternative(object)) { const auto& surface = std::get(object); - auto intersection = representation->intersect( - gctx, position, direction, boundaryTolerance, tolerance); return {intersection, surface}; } if (std::holds_alternative(object)) { const auto& layer = std::get(object); - auto intersection = representation->intersect( - gctx, position, direction, boundaryTolerance, tolerance); return {intersection, layer}; } if (std::holds_alternative(object)) { const auto& boundary = std::get(object); - auto intersection = representation->intersect( - gctx, position, direction, boundaryTolerance, tolerance); return {intersection, boundary}; } throw std::runtime_error("unknown type"); @@ -61,14 +58,14 @@ struct NavigationObjectCandidate { /// Composes an intersection and a bounds check into a navigation candidate. /// This is used to consistently update intersections after creation. -struct IntersectionCandidate { +struct IntersectedNavigationObject { SurfaceIntersection intersection; - detail::AnyIntersectionObject anyObject; + AnyIntersectionObject anyObject; BoundaryTolerance boundaryTolerance; - IntersectionCandidate(SurfaceIntersection _intersection, - detail::AnyIntersectionObject _anyObject, - BoundaryTolerance _boundaryTolerance) + IntersectedNavigationObject(SurfaceIntersection _intersection, + AnyIntersectionObject _anyObject, + BoundaryTolerance _boundaryTolerance) : intersection(std::move(_intersection)), anyObject(_anyObject), boundaryTolerance(std::move(_boundaryTolerance)) {} @@ -83,8 +80,8 @@ struct IntersectionCandidate { return std::get(anyObject); } - static bool forwardOrder(const IntersectionCandidate& aCandidate, - const IntersectionCandidate& bCandidate) { + static bool forwardOrder(const IntersectedNavigationObject& aCandidate, + const IntersectedNavigationObject& bCandidate) { return Intersection3D::pathLengthOrder( aCandidate.intersection.intersection(), bCandidate.intersection.intersection()); @@ -93,7 +90,7 @@ struct IntersectionCandidate { /// @brief Emplace all navigation candidates for a given volume inline void emplaceAllVolumeCandidates( - std::vector& candidates, + std::vector& candidates, const TrackingVolume& volume, bool resolveSensitive, bool resolveMaterial, bool resolvePassive, const BoundaryTolerance& boundaryToleranceSurfaceApproach, diff --git a/Core/include/Acts/Propagator/detail/SteppingHelper.hpp b/Core/include/Acts/Propagator/detail/SteppingHelper.hpp index ca5acaaf8da..45ee00ead52 100644 --- a/Core/include/Acts/Propagator/detail/SteppingHelper.hpp +++ b/Core/include/Acts/Propagator/detail/SteppingHelper.hpp @@ -53,14 +53,14 @@ Acts::IntersectionStatus updateSingleSurfaceStatus( // The intersection is on surface already if (sIntersection.status() == IntersectionStatus::onSurface) { - // Release navigation step size - state.stepSize.release(stype); ACTS_VERBOSE("Intersection: state is ON SURFACE"); + state.stepSize.release(stype); + stepper.updateStepSize(state, sIntersection.pathLength(), stype); return IntersectionStatus::onSurface; } const double nearLimit = std::numeric_limits::lowest(); - const double farLimit = state.stepSize.value(ConstrainedStep::actor); + const double farLimit = std::numeric_limits::max(); if (sIntersection.isValid() && detail::checkPathLength(sIntersection.pathLength(), nearLimit, farLimit, diff --git a/Core/include/Acts/TrackFinding/CombinatorialKalmanFilter.hpp b/Core/include/Acts/TrackFinding/CombinatorialKalmanFilter.hpp index d991f2532c0..bf0b55e7f3f 100644 --- a/Core/include/Acts/TrackFinding/CombinatorialKalmanFilter.hpp +++ b/Core/include/Acts/TrackFinding/CombinatorialKalmanFilter.hpp @@ -682,7 +682,9 @@ class CombinatorialKalmanFilter { navigationOptions.startSurface = ¤tState.referenceSurface(); navigationOptions.targetSurface = nullptr; state.navigation = navigator.makeState(navigationOptions); - navigator.initialize(state, stepper); + navigator.initialize(state.navigation, stepper.position(state.stepping), + stepper.direction(state.stepping), + state.options.direction); // No Kalman filtering for the starting surface, but still need // to consider the material effects here diff --git a/Core/include/Acts/TrackFitting/KalmanFitter.hpp b/Core/include/Acts/TrackFitting/KalmanFitter.hpp index 12b70c8a562..1bc0858b3df 100644 --- a/Core/include/Acts/TrackFitting/KalmanFitter.hpp +++ b/Core/include/Acts/TrackFitting/KalmanFitter.hpp @@ -562,7 +562,9 @@ class KalmanFitter { navigationOptions.startSurface = &st.referenceSurface(); navigationOptions.targetSurface = nullptr; state.navigation = navigator.makeState(navigationOptions); - navigator.initialize(state, stepper); + navigator.initialize(state.navigation, stepper.position(state.stepping), + stepper.direction(state.stepping), + state.options.direction); // Update material effects for last measurement state in reversed // direction @@ -1044,7 +1046,9 @@ class KalmanFitter { navigationOptions.startSurface = &surface; navigationOptions.targetSurface = nullptr; state.navigation = navigator.makeState(navigationOptions); - navigator.initialize(state, stepper); + navigator.initialize(state.navigation, stepper.position(state.stepping), + stepper.direction(state.stepping), + state.options.direction); return Result::success(); } diff --git a/Core/include/Acts/TrackFitting/detail/GsfActor.hpp b/Core/include/Acts/TrackFitting/detail/GsfActor.hpp index 695198a7dfc..94ffec57f8d 100644 --- a/Core/include/Acts/TrackFitting/detail/GsfActor.hpp +++ b/Core/include/Acts/TrackFitting/detail/GsfActor.hpp @@ -492,7 +492,7 @@ struct GsfActor { auto proxy = tmpStates.traj.getTrackState(idx); cmp.pars() = - MultiTrajectoryHelpers::freeFiltered(state.options.geoContext, proxy); + MultiTrajectoryHelpers::freeFiltered(state.geoContext, proxy); cmp.cov() = proxy.filteredCovariance(); cmp.weight() = tmpStates.weights.at(idx); } diff --git a/Core/include/Acts/TrackFitting/detail/GsfUtils.hpp b/Core/include/Acts/TrackFitting/detail/GsfUtils.hpp index 574a69e8f71..103d83935b7 100644 --- a/Core/include/Acts/TrackFitting/detail/GsfUtils.hpp +++ b/Core/include/Acts/TrackFitting/detail/GsfUtils.hpp @@ -192,12 +192,19 @@ void computePosteriorWeights( state.predictedCovariance(), state.projectorSubspaceIndices(), state.calibratedSize()); + if (detR <= 0) { + // If the determinant is not positive, just leave the weight as it is + continue; + } + const auto factor = std::sqrt(1. / detR) * safeExp(-0.5 * chi2); - // If something is not finite here, just leave the weight as it is - if (std::isfinite(factor)) { - weights.at(tip) *= factor; + if (!std::isfinite(factor)) { + // If something is not finite here, just leave the weight as it is + continue; } + + weights.at(tip) *= factor; } } diff --git a/Core/src/Geometry/TrackingGeometry.cpp b/Core/src/Geometry/TrackingGeometry.cpp index f9207afbd18..d54a31dce04 100644 --- a/Core/src/Geometry/TrackingGeometry.cpp +++ b/Core/src/Geometry/TrackingGeometry.cpp @@ -8,15 +8,12 @@ #include "Acts/Geometry/TrackingGeometry.hpp" +#include "Acts/Definitions/Tolerance.hpp" #include "Acts/Geometry/GeometryIdentifier.hpp" #include "Acts/Geometry/TrackingVolume.hpp" -#include "Acts/Surfaces/PerigeeSurface.hpp" #include "Acts/Surfaces/Surface.hpp" -#include "Acts/Surfaces/SurfaceArray.hpp" -#include #include -#include Acts::TrackingGeometry::TrackingGeometry( const MutableTrackingVolumePtr& highestVolume, @@ -41,7 +38,7 @@ Acts::TrackingGeometry::~TrackingGeometry() = default; const Acts::TrackingVolume* Acts::TrackingGeometry::lowestTrackingVolume( const GeometryContext& gctx, const Acts::Vector3& gp) const { - return m_world->lowestTrackingVolume(gctx, gp); + return m_world->lowestTrackingVolume(gctx, gp, s_onSurfaceTolerance); } const Acts::TrackingVolume* Acts::TrackingGeometry::highestTrackingVolume() diff --git a/Core/src/Propagator/PropagatorError.cpp b/Core/src/Propagator/PropagatorError.cpp index 20931b27515..3973038b53a 100644 --- a/Core/src/Propagator/PropagatorError.cpp +++ b/Core/src/Propagator/PropagatorError.cpp @@ -24,10 +24,11 @@ class PropagatorErrorCategory : public std::error_category { switch (static_cast(c)) { case PropagatorError::Failure: return "Propagation failed"; - case PropagatorError::WrongDirection: - return "Propagation occurred in the wrong direction"; case PropagatorError::StepCountLimitReached: return "Propagation reached the configured maximum number of steps"; + case PropagatorError::NextTargetLimitReached: + return "Propagation reached the configured maximum number of next " + "target calls"; default: return "unknown"; } diff --git a/Examples/Python/tests/root_file_hashes.txt b/Examples/Python/tests/root_file_hashes.txt index 4d874a7bc48..73f8ebb5e30 100644 --- a/Examples/Python/tests/root_file_hashes.txt +++ b/Examples/Python/tests/root_file_hashes.txt @@ -7,7 +7,7 @@ test_seeding__estimatedparams.root: 6759004f945cabe03098c94b3eea7e3323acd9f37edf test_seeding__performance_seeding.root: 992f9c611d30dde0d3f3ab676bab19ada61ab6a4442828e27b65ec5e5b7a2880 test_seeding__particles.root: c423bc666df3674f1a1140dec68ea13f44173232b8057e8a02572aee4f3e7d5b test_seeding__particles_simulation.root: f937a4cc474e80cfbb6eac4384e42e9c5c7ac981fcd6870d624cc898d1a0c006 -test_hashing_seeding__estimatedparams.root: 6b52f27b2feac2fa46a8ed52abacfe6dc8e6319f86e031cdc2f9ba28a0393cb2 +test_hashing_seeding__estimatedparams.root: 1e750a9aaf029b210acbcc5af3d4c4cc8bbb93682972be6e4b86dd92392472f5 test_seeding_orthogonal__estimatedparams.root: 6cb69ee239e11ff112dd50c2bcfe945a6f7b00e43e13b2cba4e08f1bfcf6a583 test_seeding_orthogonal__performance_seeding.root: 60fbedcf5cb2b37cd8e526251940564432890d3a159d231ed819e915a904682c test_seeding_orthogonal__particles.root: c423bc666df3674f1a1140dec68ea13f44173232b8057e8a02572aee4f3e7d5b @@ -16,11 +16,11 @@ 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: de0c105ab0de0096241855fe3db46d7c5d054d897625ede4df276472a7e43c57 +test_propagation__propagation_summary.root: 6e8dbf303c72dc9bba0971ec3140e3bf1a7e154a6af7c13cc8b09c6fec1caf34 test_material_recording__geant4_material_tracks.root: c022b9362249b29f57a07926b20644e3ab4ab8ebcf03f773fbf46c446fc1a0a1 -test_truth_tracking_gsf[generic]__trackstates_gsf.root: 4df2c69d5dd7d5446a547651e4e962daf17924f5c8617165a93a3223c8ba18fd +test_truth_tracking_gsf[generic]__trackstates_gsf.root: dace43da68574a2ad89a3b7e31f9f2eac04e34d6a703b2ae7ee31082e8a9b1f9 test_truth_tracking_gsf[generic]__tracksummary_gsf.root: 8c01d139cb865afa1959c62dbca76f3a1fb8b684c57ea4c2968baa6ffedadb6f -test_truth_tracking_gsf[odd]__trackstates_gsf.root: c7397e53ea093f2432943ae263fc99bc9aa774504ea6152c6907066a06d21caf +test_truth_tracking_gsf[odd]__trackstates_gsf.root: 4691352f2f83a15f96336705a7461cb54231c422ba21c25038670534c279a87c test_truth_tracking_gsf[odd]__tracksummary_gsf.root: 4562341f12a61ea0d5e25872b6bf466b79a73781dc95fc18ef9c6515f0a47916 test_particle_gun__particles.root: 669d0304eb8bcf244aa627809a117944e5e3b994fdfcfb8710f2b9a8f9a62d3b test_material_mapping__material-map_tracks.root: 938b1a855369e9304401cb10d2751df3fd7acf32a2573f2057eb1691cd94edf3 @@ -56,9 +56,9 @@ test_vertex_fitting_reading[AMVF-False-100]__performance_vertexing.root: 009e4b1 test_vertex_fitting_reading[AMVF-True-100]__performance_vertexing.root: 2d0dc1e02bfd1f7eaae26ef8ac657ce0291f70c7e4efddd35d171d31988a631e test_bfield_writing__solenoid.root: 7be51f0ed9cb99f59ae0271ba79cdb84635e6ee3d2109ea8a4b521875029c21d test_bfield_writing__solenoid2.root: 2db149336c9cd749dc50025076b49f9bc0586d53792b87a0fdd7f21a649a01a5 -test_root_prop_step_writer[configPosConstructor]__prop_steps.root: 200ece7cde60eb0dd8835cf4830835e9058d897ba5759099d96914b06a1df092 -test_root_prop_step_writer[configKwConstructor]__prop_steps.root: 200ece7cde60eb0dd8835cf4830835e9058d897ba5759099d96914b06a1df092 -test_root_prop_step_writer[kwargsConstructor]__prop_steps.root: 200ece7cde60eb0dd8835cf4830835e9058d897ba5759099d96914b06a1df092 +test_root_prop_step_writer[configPosConstructor]__prop_steps.root: b2c4036d0f1ae273ec2eb105187983c354cb73db4d8df43758b8c53a6b869859 +test_root_prop_step_writer[configKwConstructor]__prop_steps.root: b2c4036d0f1ae273ec2eb105187983c354cb73db4d8df43758b8c53a6b869859 +test_root_prop_step_writer[kwargsConstructor]__prop_steps.root: b2c4036d0f1ae273ec2eb105187983c354cb73db4d8df43758b8c53a6b869859 test_root_particle_writer[configPosConstructor]__particles.root: e5d723e138b4e121c6e74a6dba072072f622995e117a40b8e63755ac784baad6 test_root_particle_writer[configKwConstructor]__particles.root: e5d723e138b4e121c6e74a6dba072072f622995e117a40b8e63755ac784baad6 test_root_particle_writer[kwargsConstructor]__particles.root: e5d723e138b4e121c6e74a6dba072072f622995e117a40b8e63755ac784baad6 @@ -74,14 +74,14 @@ test_exatrkx[cpu-torch]__performance_track_finding.root: 36b3045589c4c17c038dbc8 test_exatrkx[gpu-onnx]__performance_track_finding.root: 9090de10ffb1489d3f1993e2a3081a3038227e3e5c453e98a9a4f33ea3d6d817 test_exatrkx[gpu-torch]__performance_track_finding.root: 6b658fa22c7532e082eaab7aa4b71b852f1c324adcc59d1156aff45124b222d9 test_ML_Ambiguity_Solver__performance_finding_ambiML.root: 166dd8bb189097c4957b7b02c04c41267868d72d9a08c4bb892985b06849cb76 -test_refitting[odd]__trackstates_gsf_refit.root: e297749dc1e7eda3b8dea13defa0499986c584740d93e723a901b498b8e90c71 -test_refitting[odd]__tracksummary_gsf_refit.root: d5085882e45a0b699194dff9f40a36e9291227bf65f9aaaf9087f9242ef5ae22 -test_refitting[generic]__trackstates_gsf_refit.root: 4424fdf2f27575db825c1a59f8e53a1595946211cbd5b2c8d3a2f71cdcc77ae9 -test_refitting[generic]__tracksummary_gsf_refit.root: 562deecee4cfb97ceee72eff53d63da079e3249fb62d6bcd556e6f27d495dfd9 -test_truth_tracking_kalman[generic-0.0]__trackstates_kf.root: 9f77962b92037cb760b1629a602b1dae61f45e659c45d9a87baa784f6190960e -test_truth_tracking_kalman[generic-0.0]__tracksummary_kf.root: 562deecee4cfb97ceee72eff53d63da079e3249fb62d6bcd556e6f27d495dfd9 -test_truth_tracking_kalman[generic-1000.0]__trackstates_kf.root: 56a1bd989b9c1316b9098c65fa75df9e6683e62e35ae68d8f72d27220be0fd7d -test_truth_tracking_kalman[generic-1000.0]__tracksummary_kf.root: 2d85be3a5dff01a1076e80f8c225aca32f65b30dc9c3551b610ac2f12d006a39 +test_refitting[odd]__trackstates_gsf_refit.root: 74551db2ca2ff1699fbb3f9760906abfcfdbe9e63343de242eb3433f22e35bc7 +test_refitting[odd]__tracksummary_gsf_refit.root: 771160d8937f8436b6e9b75955c10e408cffda99779622286b3bff5cfdc0c7f2 +test_refitting[generic]__trackstates_gsf_refit.root: 5dc080f2bbd5b2fe49d0252970cdbce023844d82833240cd83aeb7e891dfe0b2 +test_refitting[generic]__tracksummary_gsf_refit.root: 0957b863d6a065b3688ecd569ddbb32bcfb30c369f7031cd75885307c0c20ba4 +test_truth_tracking_kalman[generic-0.0]__trackstates_kf.root: eba0b055e4f8e3e30dae2e27ef662f213fe4fc9a5c9ed00e44adb86e7219e068 +test_truth_tracking_kalman[generic-0.0]__tracksummary_kf.root: 94fad00ab0aa9f380a85135f89a81cc2e8761ab402d821a8af854e381f4982fc +test_truth_tracking_kalman[generic-1000.0]__trackstates_kf.root: 85d397a24d5546d580bd5c69fa60655d78db7392915ed67343717e99885f97d9 +test_truth_tracking_kalman[generic-1000.0]__tracksummary_kf.root: 8a1b1a05fddfd0149b4359fdce8e43ec24a859e5ce0dc72f4ce57396dfec4d3c test_truth_tracking_kalman[odd-0.0]__trackstates_kf.root: 7e144571b19aaf00002aef4f5bec5d488b96fb9ed8e1b2904c3756b31be83513 test_truth_tracking_kalman[odd-0.0]__tracksummary_kf.root: d5085882e45a0b699194dff9f40a36e9291227bf65f9aaaf9087f9242ef5ae22 test_truth_tracking_kalman[odd-1000.0]__trackstates_kf.root: efdf37f56fa3ef85265cda61853f4c0f989e3d4f4745b5e351c9bcca78cd93cc diff --git a/Examples/Scripts/Python/hashing_seeding.py b/Examples/Scripts/Python/hashing_seeding.py index b13ee204604..2b7499fab73 100755 --- a/Examples/Scripts/Python/hashing_seeding.py +++ b/Examples/Scripts/Python/hashing_seeding.py @@ -209,8 +209,8 @@ def runHashingSeeding( trackingGeometry, field, preSelectParticles=ParticleSelectorConfig( - eta=(-eta, eta), - pt=(150 * u.MeV, None), + rho=(0.0, 24 * u.mm), + absZ=(0.0, 1.0 * u.m), ), postSelectParticles=ParticleSelectorConfig( pt=(1.0 * u.GeV, None), diff --git a/Fatras/include/ActsFatras/Kernel/detail/SimulationActor.hpp b/Fatras/include/ActsFatras/Kernel/detail/SimulationActor.hpp index 58ece1e52c7..fdae2107cda 100644 --- a/Fatras/include/ActsFatras/Kernel/detail/SimulationActor.hpp +++ b/Fatras/include/ActsFatras/Kernel/detail/SimulationActor.hpp @@ -122,6 +122,7 @@ struct SimulationActor { const auto stepSize = properTimeDiff * result.particle.absoluteMomentum() / result.particle.mass(); + stepper.releaseStepSize(state.stepping, Acts::ConstrainedStep::user); stepper.updateStepSize(state.stepping, stepSize, Acts::ConstrainedStep::user); } diff --git a/Tests/IntegrationTests/NavigatorConsistency.cpp b/Tests/IntegrationTests/NavigatorConsistency.cpp index ea74491a1c0..627c87161e4 100644 --- a/Tests/IntegrationTests/NavigatorConsistency.cpp +++ b/Tests/IntegrationTests/NavigatorConsistency.cpp @@ -11,6 +11,7 @@ #include "Acts/Definitions/Algebra.hpp" #include "Acts/Definitions/Units.hpp" +#include "Acts/EventData/TrackParameters.hpp" #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/MagneticField/ConstantBField.hpp" #include "Acts/Propagator/EigenStepper.hpp" @@ -21,6 +22,7 @@ #include "Acts/Propagator/TryAllNavigator.hpp" #include "Acts/Surfaces/BoundaryTolerance.hpp" #include "Acts/Tests/CommonHelpers/CylindricalTrackingGeometry.hpp" +#include "Acts/Utilities/Logger.hpp" #include "Acts/Utilities/VectorHelpers.hpp" #include @@ -42,8 +44,6 @@ auto tGeometry = cGeometry(); const double Bz = 2_T; auto bField = std::make_shared(Vector3{0, 0, Bz}); -Acts::Logging::Level logLevel = Acts::Logging::INFO; - using SurfaceCollector = SurfaceCollector; std::vector collectRelevantGeoIds( @@ -300,45 +300,46 @@ void runConsistencyTest(const propagator_probe_t& propProbe, refSurfaces.begin(), refSurfaces.end()); } +Acts::Logging::Level logLevel = Acts::Logging::INFO; + const int nTestsSelfConsistency = 500; const int nTestsRefConsistency = 500; -int skip = 0; +using StraightLinePropagator = Propagator; using EigenStepper = Acts::EigenStepper<>; using EigenPropagator = Propagator; -using StraightLinePropagator = Propagator; -using Reference1EigenPropagator = Propagator; using Reference1StraightLinePropagator = Propagator; -using Reference2EigenPropagator = - Propagator; +using Reference1EigenPropagator = Propagator; using Reference2StraightLinePropagator = Propagator; +using Reference2EigenPropagator = + Propagator; -EigenStepper estepper(bField); StraightLineStepper slstepper; +EigenStepper estepper(bField); -EigenPropagator epropagator(estepper, - Navigator({tGeometry, true, true, false}, - getDefaultLogger("e_nav", Logging::INFO)), - getDefaultLogger("e_prop", Logging::INFO)); StraightLinePropagator slpropagator(slstepper, Navigator({tGeometry, true, true, false}, getDefaultLogger("sl_nav", Logging::INFO)), getDefaultLogger("sl_prop", Logging::INFO)); +EigenPropagator epropagator(estepper, + Navigator({tGeometry, true, true, false}, + getDefaultLogger("e_nav", Logging::INFO)), + getDefaultLogger("e_prop", Logging::INFO)); +Reference1StraightLinePropagator refslpropagator1( + slstepper, + TryAllNavigator({tGeometry, true, true, false}, + getDefaultLogger("ref1_sl_nav", Logging::INFO)), + getDefaultLogger("ref1_sl_prop", Logging::INFO)); Reference1EigenPropagator refepropagator1( estepper, TryAllNavigator({tGeometry, true, true, false, BoundaryTolerance::Infinite()}, getDefaultLogger("ref1_e_nav", Logging::INFO)), getDefaultLogger("ref1_e_prop", Logging::INFO)); -Reference1StraightLinePropagator refslpropagator1( - slstepper, - TryAllNavigator({tGeometry, true, true, false}, - getDefaultLogger("ref1_sl_nav", Logging::INFO)), - getDefaultLogger("ref1_sl_prop", Logging::INFO)); Reference2EigenPropagator refepropagator2( estepper, @@ -366,19 +367,37 @@ auto eventGen = (bdata::engine = std::mt19937(), bdata::seed = 23, bdata::distribution = std::uniform_int_distribution(0, 1))); -BOOST_DATA_TEST_CASE(NavigatorSelfConsistency, +CurvilinearTrackParameters createStartParameters(double pT, double phi, + double theta, int charge) { + double p = pT / std::sin(theta); + double q = -1 + 2 * charge; + return CurvilinearTrackParameters(Vector4(0, 0, 0, 0), phi, theta, q / p, + std::nullopt, ParticleHypothesis::pion()); +} + +BOOST_DATA_TEST_CASE(NavigatorStraightLineSelfConsistency, eventGen ^ bdata::xrange(nTestsSelfConsistency), pT, phi, theta, charge, index) { - ACTS_LOCAL_LOGGER(Acts::getDefaultLogger("NavigatorTest", logLevel)) + ACTS_LOCAL_LOGGER(Acts::getDefaultLogger("NavigatorTest", logLevel)); - if (index < skip) { - return; - } + CurvilinearTrackParameters start = + createStartParameters(pT, phi, theta, charge); - double p = pT / std::sin(theta); - double q = -1 + 2 * charge; - CurvilinearTrackParameters start(Vector4(0, 0, 0, 0), phi, theta, q / p, - std::nullopt, ParticleHypothesis::pion()); + ACTS_DEBUG(">>> Run navigation tests with:\n pT = " + << pT << "\n phi = " << phi << "\n theta = " << theta + << "\n charge = " << charge << "\n index = " << index); + + ACTS_DEBUG(">>> Test self consistency slpropagator"); + runSelfConsistencyTest(slpropagator, start, logger()); +} + +BOOST_DATA_TEST_CASE(NavigatorEigenSelfConsistency, + eventGen ^ bdata::xrange(nTestsSelfConsistency), pT, phi, + theta, charge, index) { + ACTS_LOCAL_LOGGER(Acts::getDefaultLogger("NavigatorTest", logLevel)); + + CurvilinearTrackParameters start = + createStartParameters(pT, phi, theta, charge); ACTS_DEBUG(">>> Run navigation tests with:\n pT = " << pT << "\n phi = " << phi << "\n theta = " << theta @@ -386,49 +405,31 @@ BOOST_DATA_TEST_CASE(NavigatorSelfConsistency, ACTS_DEBUG(">>> Test self consistency epropagator"); runSelfConsistencyTest(epropagator, start, logger()); - - ACTS_DEBUG(">>> Test self consistency slpropagator"); - runSelfConsistencyTest(slpropagator, start, logger()); } -BOOST_DATA_TEST_CASE(NavigatorRef1Consistency, +BOOST_DATA_TEST_CASE(NavigatorRef1StraightLineConsistency, eventGen ^ bdata::xrange(nTestsRefConsistency), pT, phi, theta, charge, index) { - ACTS_LOCAL_LOGGER(Acts::getDefaultLogger("NavigatorTest", logLevel)) - - if (index < skip) { - return; - } + ACTS_LOCAL_LOGGER(Acts::getDefaultLogger("NavigatorTest", logLevel)); - double p = pT / std::sin(theta); - double q = -1 + 2 * charge; - CurvilinearTrackParameters start(Vector4(0, 0, 0, 0), phi, theta, q / p, - std::nullopt, ParticleHypothesis::pion()); + CurvilinearTrackParameters start = + createStartParameters(pT, phi, theta, charge); ACTS_DEBUG(">>> Run navigation tests with:\n pT = " << pT << "\n phi = " << phi << "\n theta = " << theta << "\n charge = " << charge << "\n index = " << index); - ACTS_DEBUG(">>> Test reference 1 consistency epropagator"); - runConsistencyTest(epropagator, refepropagator1, start, logger()); - ACTS_DEBUG(">>> Test reference 1 consistency slpropagator"); runConsistencyTest(slpropagator, refslpropagator1, start, logger()); } -BOOST_DATA_TEST_CASE(NavigatorRef2Consistency, +BOOST_DATA_TEST_CASE(NavigatorRef1EigenConsistency, eventGen ^ bdata::xrange(nTestsRefConsistency), pT, phi, theta, charge, index) { - ACTS_LOCAL_LOGGER(Acts::getDefaultLogger("NavigatorTest", logLevel)) + ACTS_LOCAL_LOGGER(Acts::getDefaultLogger("NavigatorTest", logLevel)); - if (index < skip) { - return; - } - - double p = pT / std::sin(theta); - double q = -1 + 2 * charge; - CurvilinearTrackParameters start(Vector4(0, 0, 0, 0), phi, theta, q / p, - std::nullopt, ParticleHypothesis::pion()); + CurvilinearTrackParameters start = + createStartParameters(pT, phi, theta, charge); ACTS_DEBUG(">>> Run navigation tests with:\n pT = " << pT << "\n phi = " << phi << "\n theta = " << theta @@ -436,15 +437,38 @@ BOOST_DATA_TEST_CASE(NavigatorRef2Consistency, ACTS_DEBUG(">>> Test reference 1 consistency epropagator"); runConsistencyTest(epropagator, refepropagator1, start, logger()); +} - ACTS_DEBUG(">>> Test reference 1 consistency slpropagator"); - runConsistencyTest(slpropagator, refslpropagator1, start, logger()); +BOOST_DATA_TEST_CASE(NavigatorRef2StraightLineConsistency, + eventGen ^ bdata::xrange(nTestsRefConsistency), pT, phi, + theta, charge, index) { + ACTS_LOCAL_LOGGER(Acts::getDefaultLogger("NavigatorTest", logLevel)); - ACTS_DEBUG(">>> Test reference 2 consistency epropagator"); - runConsistencyTest(epropagator, refepropagator2, start, logger()); + CurvilinearTrackParameters start = + createStartParameters(pT, phi, theta, charge); + + ACTS_DEBUG(">>> Run navigation tests with:\n pT = " + << pT << "\n phi = " << phi << "\n theta = " << theta + << "\n charge = " << charge << "\n index = " << index); ACTS_DEBUG(">>> Test reference 2 consistency slpropagator"); runConsistencyTest(slpropagator, refslpropagator2, start, logger()); } +BOOST_DATA_TEST_CASE(NavigatorRef2EigenConsistency, + eventGen ^ bdata::xrange(nTestsRefConsistency), pT, phi, + theta, charge, index) { + ACTS_LOCAL_LOGGER(Acts::getDefaultLogger("NavigatorTest", logLevel)); + + CurvilinearTrackParameters start = + createStartParameters(pT, phi, theta, charge); + + ACTS_DEBUG(">>> Run navigation tests with:\n pT = " + << pT << "\n phi = " << phi << "\n theta = " << theta + << "\n charge = " << charge << "\n index = " << index); + + ACTS_DEBUG(">>> Test reference 2 consistency epropagator"); + runConsistencyTest(epropagator, refepropagator2, start, logger()); +} + } // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Navigation/DetectorNavigatorTests.cpp b/Tests/UnitTests/Core/Navigation/DetectorNavigatorTests.cpp index 7596c4881ad..7f1b63301f1 100644 --- a/Tests/UnitTests/Core/Navigation/DetectorNavigatorTests.cpp +++ b/Tests/UnitTests/Core/Navigation/DetectorNavigatorTests.cpp @@ -117,17 +117,15 @@ BOOST_AUTO_TEST_CASE(DetectorNavigatorTestsInitialization) { auto state = propagator.makeState(start, options); - navigator.initialize(state, stepper); + navigator.initialize(state.navigation, stepper.position(state.stepping), + stepper.direction(state.stepping), + state.options.direction); - navigator.preStep(state, stepper); + navigator.nextTarget(state.navigation, stepper.position(state.stepping), + stepper.direction(state.stepping)); auto preStepState = state.navigation; BOOST_CHECK_EQUAL(preStepState.currentSurface, nullptr); BOOST_CHECK_EQUAL(preStepState.currentPortal, nullptr); - - navigator.postStep(state, stepper); - auto postStepState = state.navigation; - BOOST_CHECK_EQUAL(postStepState.currentSurface, nullptr); - BOOST_CHECK_EQUAL(postStepState.currentPortal, nullptr); } // @@ -166,7 +164,10 @@ BOOST_AUTO_TEST_CASE(DetectorNavigatorTestsInitialization) { auto state = propagator.makeState(start, options); - navigator.initialize(state, stepper); + navigator.initialize(state.navigation, stepper.position(state.stepping), + stepper.direction(state.stepping), + state.options.direction); + auto initState = state.navigation; BOOST_CHECK_EQUAL(initState.currentDetector, detector.get()); BOOST_CHECK_EQUAL( diff --git a/Tests/UnitTests/Core/Propagator/DirectNavigatorTests.cpp b/Tests/UnitTests/Core/Propagator/DirectNavigatorTests.cpp index 586e51bfc31..e17315bef8d 100644 --- a/Tests/UnitTests/Core/Propagator/DirectNavigatorTests.cpp +++ b/Tests/UnitTests/Core/Propagator/DirectNavigatorTests.cpp @@ -10,7 +10,6 @@ #include #include "Acts/Definitions/Algebra.hpp" -#include "Acts/Definitions/Direction.hpp" #include "Acts/Definitions/Units.hpp" #include "Acts/EventData/TrackParameters.hpp" #include "Acts/Geometry/GeometryContext.hpp" @@ -27,14 +26,11 @@ #include "Acts/Tests/CommonHelpers/CylindricalTrackingGeometry.hpp" #include "Acts/Tests/CommonHelpers/FloatComparisons.hpp" -#include -#include #include #include #include #include #include -#include #include #include diff --git a/Tests/UnitTests/Core/Propagator/NavigatorTests.cpp b/Tests/UnitTests/Core/Propagator/NavigatorTests.cpp index c6f9e8e6853..f540c560756 100644 --- a/Tests/UnitTests/Core/Propagator/NavigatorTests.cpp +++ b/Tests/UnitTests/Core/Propagator/NavigatorTests.cpp @@ -10,38 +10,25 @@ #include #include "Acts/Definitions/Algebra.hpp" -#include "Acts/Definitions/Common.hpp" #include "Acts/Definitions/Direction.hpp" #include "Acts/Definitions/Tolerance.hpp" -#include "Acts/Definitions/TrackParametrization.hpp" #include "Acts/Definitions/Units.hpp" -#include "Acts/EventData/GenericBoundTrackParameters.hpp" -#include "Acts/EventData/TrackParameters.hpp" -#include "Acts/EventData/detail/CorrectedTransformationFreeToBound.hpp" #include "Acts/Geometry/GeometryContext.hpp" #include "Acts/Geometry/TrackingGeometry.hpp" #include "Acts/Geometry/TrackingVolume.hpp" #include "Acts/MagneticField/ConstantBField.hpp" -#include "Acts/Propagator/ConstrainedStep.hpp" +#include "Acts/Propagator/NavigationTarget.hpp" #include "Acts/Propagator/Navigator.hpp" -#include "Acts/Propagator/StepperConcept.hpp" -#include "Acts/Propagator/detail/SteppingHelper.hpp" -#include "Acts/Surfaces/BoundaryTolerance.hpp" #include "Acts/Surfaces/PerigeeSurface.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Tests/CommonHelpers/CylindricalTrackingGeometry.hpp" #include "Acts/Tests/CommonHelpers/FloatComparisons.hpp" #include "Acts/Utilities/Intersection.hpp" #include "Acts/Utilities/Logger.hpp" -#include "Acts/Utilities/Result.hpp" #include -#include #include #include -#include -#include -#include namespace bdata = boost::unit_test::data; using namespace Acts::UnitLiterals; @@ -53,221 +40,17 @@ namespace Acts::Test { GeometryContext tgContext = GeometryContext(); MagneticFieldContext mfContext = MagneticFieldContext(); -/// This is a simple cache struct to mimic the -/// Propagator cache -struct PropagatorState { - /// This is a simple cache struct to mimic a Stepper - struct Stepper { - // comply with concept - using Jacobian = BoundMatrix; - using Covariance = BoundSquareMatrix; - using BoundState = std::tuple; - using CurvilinearState = - std::tuple; - using BField = int; - - template - using return_parameter_type = void; - - struct Options { - const GeometryContext& geoContext = tgContext; - }; - - /// This is a simple cache struct to mimic the - /// Stepper cache in the propagation - struct State { - Options options{}; - - /// Position - Vector4 pos4 = Vector4(0., 0., 0., 0.); - - /// Direction - Vector3 dir = Vector3(1., 0., 0.); - - /// Momentum - double p = 0; - - /// Charge - double q = 0; - - /// Particle hypothesis - ParticleHypothesis particleHypothesis = ParticleHypothesis::pion(); - - // accummulated path length cache - double pathAccumulated = 0.; - - // adaptive sep size of the runge-kutta integration - ConstrainedStep stepSize = ConstrainedStep(100_cm); - - // Previous step size for overstep estimation (ignored here) - double previousStepSize = 0.; - - GeometryContext geoContext = GeometryContext(); - }; - - /// State resetter - void resetState(State& /*state*/, const BoundVector& /*boundParams*/, - const BoundSquareMatrix& /*cov*/, - const Surface& /*surface*/, - const double /*stepSize*/) const {} - - /// Global particle position accessor - Vector3 position(const State& state) const { - return state.pos4.segment<3>(Acts::ePos0); - } - - /// Time access - double time(const State& state) const { return state.pos4[Acts::eTime]; } - - /// Momentum direction accessor - Vector3 direction(const State& state) const { return state.dir; } - - /// QoP accessor - double qOverP(const State& state) const { - return (state.q == 0 ? 1 : state.q) / state.p; - } - - /// Absolute momentum accessor - double absoluteMomentum(const State& state) const { return state.p; } - - /// Momentum accessor - Vector3 momentum(const State& state) const { return state.p * state.dir; } - - /// Charge access - double charge(const State& state) const { return state.q; } - - /// Overstep limit access - double overstepLimit(const State& /*state*/) const { - return s_onSurfaceTolerance; - } - - IntersectionStatus updateSurfaceStatus( - State& state, const Surface& surface, std::uint8_t index, - Direction navDir, const BoundaryTolerance& boundaryTolerance, - double surfaceTolerance, ConstrainedStep::Type stype, - const Logger& logger) const { - return detail::updateSingleSurfaceStatus( - *this, state, surface, index, navDir, boundaryTolerance, - surfaceTolerance, stype, logger); - } - - template - void updateStepSize(State& state, - const object_intersection_t& oIntersection, - Direction direction, - ConstrainedStep::Type stype) const { - (void)direction; - double stepSize = oIntersection.pathLength(); - updateStepSize(state, stepSize, stype); - } - - void updateStepSize(State& state, double stepSize, - ConstrainedStep::Type stype) const { - state.previousStepSize = state.stepSize.value(); - state.stepSize.update(stepSize, stype); - } - - double getStepSize(const State& state, ConstrainedStep::Type stype) const { - return state.stepSize.value(stype); - } - - void releaseStepSize(State& state, ConstrainedStep::Type stype) const { - state.stepSize.release(stype); - } - - std::string outputStepSize(const State& state) const { - return state.stepSize.toString(); - } - - Result boundState( - State& state, const Surface& surface, bool /*transportCov*/, - const FreeToBoundCorrection& /*freeToBoundCorrection*/ - ) const { - auto bound = BoundTrackParameters::create( - surface.getSharedPtr(), tgContext, state.pos4, state.dir, - state.q / state.p, std::nullopt, state.particleHypothesis); - if (!bound.ok()) { - return bound.error(); - } - BoundState bState{std::move(*bound), Jacobian::Identity(), - state.pathAccumulated}; - return bState; - } - - CurvilinearState curvilinearState(State& state, bool /*transportCov*/ - ) const { - CurvilinearTrackParameters parameters(state.pos4, state.dir, - state.q / state.p, std::nullopt, - state.particleHypothesis); - // Create the bound state - CurvilinearState curvState{std::move(parameters), Jacobian::Identity(), - state.pathAccumulated}; - return curvState; - } - - void update(State& /*state*/, const FreeVector& /*freePars*/, - const BoundVector& /*boundPars*/, const Covariance& /*cov*/, - const Surface& /*surface*/) const {} - - void update(State& /*state*/, const Vector3& /*uposition*/, - const Vector3& /*udirection*/, double /*up*/, - double /*time*/) const {} - - void transportCovarianceToCurvilinear(State& /*state*/) const {} - - void transportCovarianceToBound( - State& /*state*/, const Surface& /*surface*/, - const FreeToBoundCorrection& /*freeToBoundCorrection*/) const {} - - Result getField(State& /*state*/, const Vector3& /*pos*/) const { - // get the field from the cell - return Result::success({0., 0., 0.}); - } - }; - - static_assert(StepperConcept, - "Dummy stepper does not fulfill concept"); - - /// emulate the options template - struct Options { - Direction direction = Direction::Forward; - - const Acts::Logger& logger = Acts::getDummyLogger(); - - double surfaceTolerance = s_onSurfaceTolerance; - }; - - /// Navigation cache: the start surface - const Surface* startSurface = nullptr; - - /// Navigation cache: the current surface - const Surface* currentSurface = nullptr; - - /// Navigation cache: the target surface - const Surface* targetSurface = nullptr; - bool targetReached = false; - - /// Give some options - Options options; - - /// The Stepper state - internal state of the Stepper - Stepper::State stepping; - - /// Navigation state - internal state of the Navigator - Navigator::State navigation; - - // The context cache for this propagation - GeometryContext geoContext = GeometryContext(); -}; - -template -void step(stepper_state_t& sstate) { - // update the cache position - sstate.pos4[Acts::ePos0] += sstate.stepSize.value() * sstate.dir[Acts::eMom0]; - sstate.pos4[Acts::ePos1] += sstate.stepSize.value() * sstate.dir[Acts::eMom1]; - sstate.pos4[Acts::ePos2] += sstate.stepSize.value() * sstate.dir[Acts::eMom2]; - // create navigation parameters - return; +void step(Vector3& pos, const Vector3& dir, double stepSize) { + pos += stepSize * dir; +} + +void step(Vector3& pos, const Vector3& dir, const Surface& surface) { + auto intersection = surface.intersect(tgContext, pos, dir).closestForward(); + step(pos, dir, intersection.pathLength()); +} + +void step(Vector3& pos, const Vector3& dir, const NavigationTarget& target) { + step(pos, dir, *target.surface); } /// @brief Method for testing vectors in @c Navigator::State @@ -287,30 +70,37 @@ bool testNavigatorStateVectors(Navigator::State& state, std::size_t navSurf, /// @brief Method for testing pointers in @c Navigator::State /// /// @param [in] state Navigation state -/// @param [in] worldVol World volume /// @param [in] startVol Start volume /// @param [in] startLay Start layer /// @param [in] startSurf Start surface /// @param [in] currSurf Current surface /// @param [in] currVol Current volume -/// @param [in] targetVol Target volume -/// @param [in] targetLay Target layer /// @param [in] targetSurf Target surface bool testNavigatorStatePointers(Navigator::State& state, - const TrackingVolume* worldVol, const TrackingVolume* startVol, const Layer* startLay, const Surface* startSurf, const Surface* currSurf, const TrackingVolume* currVol, const Surface* targetSurf) { - return ((state.worldVolume == worldVol) && (state.startVolume == startVol) && - (state.startLayer == startLay) && (state.startSurface == startSurf) && - (state.currentSurface == currSurf) && - (state.currentVolume == currVol) && - (state.targetSurface == targetSurf)); + std::cout << "startVol: " << startVol << " startLay: " << startLay + << " startSurf: " << startSurf << " currSurf: " << currSurf + << " currVol: " << currVol << " targetSurf: " << targetSurf + << std::endl; + + std::cout << "state.startVolume: " << state.startVolume + << " state.startLayer: " << state.startLayer + << " state.startSurface: " << state.startSurface + << " state.currentSurface: " << state.currentSurface + << " state.currentVolume: " << state.currentVolume + << " state.targetSurface: " << state.targetSurface << std::endl; + + return ( + (state.startVolume == startVol) && (state.startLayer == startLay) && + (state.startSurface == startSurf) && (state.currentSurface == currSurf) && + (state.currentVolume == currVol) && (state.targetSurface == targetSurf)); } -// the surface cache & the creation of the geometry +// the surface cache & the creation of the geometry CylindricalTrackingGeometry cGeometry(tgContext); auto tGeometry = cGeometry(); @@ -320,21 +110,11 @@ auto bField = std::make_shared(Vector3{0, 0, Bz}); Acts::Logging::Level logLevel = Acts::Logging::INFO; BOOST_AUTO_TEST_CASE(Navigator_status_methods) { - ACTS_LOCAL_LOGGER(Acts::getDefaultLogger("NavigatorTest", logLevel)) + ACTS_LOCAL_LOGGER(Acts::getDefaultLogger("NavigatorTest", logLevel)); // position and direction vector - Vector4 position4(0., 0., 0, 0); - Vector3 momentum(1., 1., 0); - - // the propagator cache - PropagatorState state; - - // the stepper cache - state.stepping.pos4 = position4; - state.stepping.dir = momentum.normalized(); - - // Stepper - PropagatorState::Stepper stepper; + Vector3 position = Vector3::Zero(); + Vector3 direction = Vector3(1., 1., 0).normalized(); ACTS_INFO("(1) Test for inactivity"); ACTS_INFO(" a) Run without anything present"); @@ -345,11 +125,13 @@ BOOST_AUTO_TEST_CASE(Navigator_status_methods) { navCfg.resolvePassive = false; Navigator navigator{navCfg}; - navigator.postStep(state, stepper); - BOOST_CHECK(testNavigatorStateVectors(state.navigation, 0u, 0u, 0u)); - BOOST_CHECK(testNavigatorStatePointers(state.navigation, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, - nullptr)); + Navigator::Options options(tgContext); + + Navigator::State state = navigator.makeState(options); + + BOOST_CHECK(testNavigatorStateVectors(state, 0u, 0u, 0u)); + BOOST_CHECK(testNavigatorStatePointers(state, nullptr, nullptr, nullptr, + nullptr, nullptr, nullptr)); } ACTS_INFO(" b) Run with geometry but without resolving"); @@ -361,11 +143,13 @@ BOOST_AUTO_TEST_CASE(Navigator_status_methods) { navCfg.trackingGeometry = tGeometry; Navigator navigator{navCfg}; - navigator.postStep(state, stepper); - BOOST_CHECK(testNavigatorStateVectors(state.navigation, 0u, 0u, 0u)); - BOOST_CHECK(testNavigatorStatePointers(state.navigation, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, - nullptr)); + Navigator::Options options(tgContext); + + Navigator::State state = navigator.makeState(options); + + BOOST_CHECK(testNavigatorStateVectors(state, 0u, 0u, 0u)); + BOOST_CHECK(testNavigatorStatePointers(state, nullptr, nullptr, nullptr, + nullptr, nullptr, nullptr)); } ACTS_INFO( @@ -379,69 +163,64 @@ BOOST_AUTO_TEST_CASE(Navigator_status_methods) { navCfg.trackingGeometry = tGeometry; Navigator navigator{navCfg}; - state.navigation.navigationBreak = true; + Navigator::Options options(tgContext); + + Navigator::State state = navigator.makeState(options); + ACTS_INFO(" i) Because target is reached"); - state.navigation.targetReached = true; - navigator.postStep(state, stepper); - BOOST_CHECK(testNavigatorStateVectors(state.navigation, 0u, 0u, 0u)); - BOOST_CHECK(testNavigatorStatePointers(state.navigation, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, - nullptr)); + state.navigationBreak = true; + navigator.nextTarget(state, position, direction); + BOOST_CHECK(testNavigatorStateVectors(state, 0u, 0u, 0u)); + BOOST_CHECK(testNavigatorStatePointers(state, nullptr, nullptr, nullptr, + nullptr, nullptr, nullptr)); ACTS_INFO(" ii) Because of no target surface"); - state.navigation.targetReached = false; - state.navigation.targetSurface = nullptr; - navigator.postStep(state, stepper); - BOOST_CHECK(testNavigatorStateVectors(state.navigation, 0u, 0u, 0u)); - BOOST_CHECK(testNavigatorStatePointers(state.navigation, nullptr, nullptr, - nullptr, nullptr, nullptr, nullptr, - nullptr)); - ACTS_INFO(" iii) Because the target surface is reached"); + state.targetSurface = nullptr; + navigator.nextTarget(state, position, direction); + BOOST_CHECK(testNavigatorStateVectors(state, 0u, 0u, 0u)); + BOOST_CHECK(testNavigatorStatePointers(state, nullptr, nullptr, nullptr, + nullptr, nullptr, nullptr)); + ACTS_INFO(" iii) Because the target surface is reached"); auto beamline = Surface::makeShared(Vector3::Zero()); const Surface* startSurf = beamline.get(); - state.stepping.pos4.segment<3>(Acts::ePos0) = - startSurf->center(state.geoContext); - const Surface* targetSurf = startSurf; - state.navigation.targetSurface = targetSurf; - navigator.postStep(state, stepper); - BOOST_CHECK(testNavigatorStateVectors(state.navigation, 0u, 0u, 0u)); - BOOST_CHECK(testNavigatorStatePointers(state.navigation, nullptr, nullptr, - nullptr, nullptr, targetSurf, - nullptr, targetSurf)); + position = startSurf->center(tgContext); + const TrackingVolume* startVol = + tGeometry->lowestTrackingVolume(tgContext, position); + const Layer* startLay = startVol->associatedLayer(tgContext, position); + state.startSurface = startSurf; + state.targetSurface = startSurf; + navigator.initialize(state, position, direction, Direction::Forward); + BOOST_CHECK(testNavigatorStateVectors(state, 0u, 0u, 0u)); + BOOST_CHECK(testNavigatorStatePointers(state, startVol, startLay, startSurf, + startSurf, startVol, startSurf)); ACTS_INFO("(2) Test the initialisation"); ACTS_INFO(" a) Initialise without additional information"); - state.navigation = Navigator::State(); - state.stepping.pos4 << 0., 0., 0., 0.; - const TrackingVolume* worldVol = tGeometry->highestTrackingVolume(); - const TrackingVolume* startVol = tGeometry->lowestTrackingVolume( - state.geoContext, stepper.position(state.stepping)); - const Layer* startLay = startVol->associatedLayer( - state.geoContext, stepper.position(state.stepping)); - navigator.initialize(state, stepper); - BOOST_CHECK(testNavigatorStateVectors(state.navigation, 0u, 0u, 0u)); - BOOST_CHECK(testNavigatorStatePointers(state.navigation, worldVol, startVol, - startLay, nullptr, nullptr, startVol, - nullptr)); + state = navigator.makeState(options); + position = Vector3::Zero(); + startVol = tGeometry->lowestTrackingVolume(tgContext, position); + startLay = startVol->associatedLayer(tgContext, position); + navigator.initialize(state, position, direction, Direction::Forward); + BOOST_CHECK(testNavigatorStateVectors(state, 0u, 0u, 0u)); + BOOST_CHECK(testNavigatorStatePointers(state, startVol, startLay, nullptr, + nullptr, startVol, nullptr)); ACTS_INFO(" b) Initialise having a start surface"); - state.navigation = Navigator::State(); - state.navigation.startSurface = startSurf; - navigator.initialize(state, stepper); - BOOST_CHECK(testNavigatorStateVectors(state.navigation, 0u, 0u, 0u)); - BOOST_CHECK(testNavigatorStatePointers(state.navigation, worldVol, startVol, - startLay, startSurf, startSurf, - startVol, nullptr)); + state = navigator.makeState(options); + state.startSurface = startSurf; + navigator.initialize(state, position, direction, Direction::Forward); + BOOST_CHECK(testNavigatorStateVectors(state, 0u, 0u, 0u)); + BOOST_CHECK(testNavigatorStatePointers(state, startVol, startLay, startSurf, + startSurf, startVol, nullptr)); ACTS_INFO(" c) Initialise having a start volume"); - state.navigation = Navigator::State(); - state.navigation.startVolume = startVol; - navigator.initialize(state, stepper); - BOOST_CHECK(testNavigatorStateVectors(state.navigation, 0u, 0u, 0u)); - BOOST_CHECK(testNavigatorStatePointers(state.navigation, worldVol, startVol, - startLay, nullptr, nullptr, startVol, - nullptr)); + state = navigator.makeState(options); + state.startVolume = startVol; + navigator.initialize(state, position, direction, Direction::Forward); + BOOST_CHECK(testNavigatorStateVectors(state, 0u, 0u, 0u)); + BOOST_CHECK(testNavigatorStatePointers(state, startVol, startLay, nullptr, + nullptr, startVol, nullptr)); } } @@ -456,187 +235,198 @@ BOOST_AUTO_TEST_CASE(Navigator_target_methods) { navCfg.resolvePassive = false; Navigator navigator{navCfg}; - // position and direction vector - Vector4 position4(0., 0., 0, 0); - Vector3 momentum(1., 1., 0); + Navigator::Options options(tgContext); - // the propagator cache - PropagatorState state; + Navigator::State state = navigator.makeState(options); - // the stepper cache - state.stepping.pos4 = position4; - state.stepping.dir = momentum.normalized(); + // position and direction vector + Vector3 position = Vector3::Zero(); + Vector3 direction = Vector3(1., 1., 0).normalized(); // forward navigation ---------------------------------------------- ACTS_INFO("<<<<<<<<<<<<<<<<<<<<< FORWARD NAVIGATION >>>>>>>>>>>>>>>>>>"); - // Stepper - PropagatorState::Stepper stepper; - // (1) Initialization navigation from start point // - this will call resolveLayers() as well // - and thus should call a return to the stepper - navigator.initialize(state, stepper); + navigator.initialize(state, position, direction, Direction::Forward); // Check that the currentVolume is set - BOOST_CHECK_NE(state.navigation.currentVolume, nullptr); + BOOST_CHECK_NE(state.currentVolume, nullptr); // Check that the currentVolume is the startVolume - BOOST_CHECK_EQUAL(state.navigation.currentVolume, - state.navigation.startVolume); + BOOST_CHECK_EQUAL(state.currentVolume, state.startVolume); // Check that the currentSurface is reset to: - BOOST_CHECK_EQUAL(state.navigation.currentSurface, nullptr); + BOOST_CHECK_EQUAL(state.currentSurface, nullptr); // No layer has been found - BOOST_CHECK_EQUAL(state.navigation.navLayers.size(), 0u); - // ACTORS-ABORTERS-TARGET - navigator.preStep(state, stepper); + BOOST_CHECK_EQUAL(state.navLayers.size(), 0u); + + // Estimate the next target + NavigationTarget target = navigator.nextTarget(state, position, direction); + BOOST_CHECK(!target.isNone()); // A layer has been found - BOOST_CHECK_EQUAL(state.navigation.navLayers.size(), 1u); + BOOST_CHECK_EQUAL(state.navLayers.size(), 1u); // The index should points to the begin - BOOST_CHECK_EQUAL(state.navigation.navLayerIndex, 0); + BOOST_CHECK_EQUAL(state.navLayerIndex.value(), 0); + // Check the target is correct + BOOST_CHECK_EQUAL(target.surface, state.navLayer().first.object()); + // Intersect the target + auto targetIntersection = + target.surface->intersect(tgContext, position, direction) + .closestForward(); // Cache the beam pipe radius - double beamPipeR = perp(state.navigation.navLayer().first.position()); + double beamPipeR = perp(state.navLayer().first.position()); // step size has been updated - CHECK_CLOSE_ABS(state.stepping.stepSize.value(), beamPipeR, + CHECK_CLOSE_ABS(targetIntersection.pathLength(), beamPipeR, s_onSurfaceTolerance); - ACTS_INFO("<<< Test 1a >>> initialize at " << toString(state.stepping.pos4)); + ACTS_INFO("<<< Test 1a >>> initialize at " << toString(position)); // Do the step towards the beam pipe - step(state.stepping); + step(position, direction, target); // (2) re-entering navigator: // POST STEP - navigator.postStep(state, stepper); + navigator.handleSurfaceReached(state, position, direction, *target.surface); // Check that the currentVolume is the still startVolume - BOOST_CHECK_EQUAL(state.navigation.currentVolume, - state.navigation.startVolume); + BOOST_CHECK_EQUAL(state.currentVolume, state.startVolume); // The layer number has not changed - BOOST_CHECK_EQUAL(state.navigation.navLayers.size(), 1u); + BOOST_CHECK_EQUAL(state.navLayers.size(), 1u); // The index still points to the begin - BOOST_CHECK_EQUAL(state.navigation.navLayerIndex, 0); - // ACTORS - ABORTERS - PRE STEP - navigator.preStep(state, stepper); + BOOST_CHECK_EQUAL(state.navLayerIndex.value(), 0); + + ACTS_INFO("<<< Test 1b >>> step to the BeamPipe at " << toString(position)); - ACTS_INFO("<<< Test 1b >>> step to the BeamPipe at " - << toString(state.stepping.pos4)); + // Estimate the next target + target = navigator.nextTarget(state, position, direction); + BOOST_CHECK(!target.isNone()); // Do the step towards the boundary - step(state.stepping); + step(position, direction, target); // (3) re-entering navigator: // POST STEP - navigator.postStep(state, stepper); - // ACTORS - ABORTERS - PRE STEP - navigator.preStep(state, stepper); + navigator.handleSurfaceReached(state, position, direction, *target.surface); + + ACTS_INFO("<<< Test 1c >>> step to the Boundary at " << toString(position)); - ACTS_INFO("<<< Test 1c >>> step to the Boundary at " - << toString(state.stepping.pos4)); + // Estimate the next target + target = navigator.nextTarget(state, position, direction); + BOOST_CHECK(!target.isNone()); + // Intersect the target + targetIntersection = target.surface->intersect(tgContext, position, direction) + .closestForward(); // positive return: do the step - step(state.stepping); + step(position, direction, target); + // (4) re-entering navigator: // POST STEP - navigator.postStep(state, stepper); - // ACTORS - ABORTERS - PRE STEP - navigator.preStep(state, stepper); + navigator.handleSurfaceReached(state, position, direction, *target.surface); + + ACTS_INFO("<<< Test 1d >>> step to 1st layer at " << toString(position)); - ACTS_INFO("<<< Test 1d >>> step to 1st layer at " - << toString(state.stepping.pos4)); + // Estimate the next target + target = navigator.nextTarget(state, position, direction); + BOOST_CHECK(!target.isNone()); // Step through the surfaces on first layer for (std::size_t isf = 0; isf < 5; ++isf) { - step(state.stepping); + step(position, direction, target); // (5-9) re-entering navigator: // POST STEP - navigator.postStep(state, stepper); + navigator.handleSurfaceReached(state, position, direction, *target.surface); // ACTORS - ABORTERS - PRE STEP - navigator.preStep(state, stepper); + target = navigator.nextTarget(state, position, direction); + BOOST_CHECK(!target.isNone()); ACTS_INFO("<<< Test 1e-1i >>> step within 1st layer at " - << toString(state.stepping.pos4)); + << toString(position)); } // positive return: do the step - step(state.stepping); + step(position, direction, target); // (10) re-entering navigator: // POST STEP - navigator.postStep(state, stepper); + navigator.handleSurfaceReached(state, position, direction, *target.surface); // ACTORS - ABORTERS - PRE STEP - navigator.preStep(state, stepper); + target = navigator.nextTarget(state, position, direction); + BOOST_CHECK(!target.isNone()); - ACTS_INFO("<<< Test 1j >>> step to 2nd layer at " - << toString(state.stepping.pos4)); + ACTS_INFO("<<< Test 1j >>> step to 2nd layer at " << toString(position)); // Step through the surfaces on second layer for (std::size_t isf = 0; isf < 5; ++isf) { - step(state.stepping); + step(position, direction, target); // (11-15) re-entering navigator: // POST STEP - navigator.postStep(state, stepper); + navigator.handleSurfaceReached(state, position, direction, *target.surface); // ACTORS - ABORTERS - PRE STEP - navigator.preStep(state, stepper); + target = navigator.nextTarget(state, position, direction); + BOOST_CHECK(!target.isNone()); ACTS_INFO("<<< Test 1k-1o >>> step within 2nd layer at " - << toString(state.stepping.pos4)); + << toString(position)); } // positive return: do the step - step(state.stepping); + step(position, direction, target); // (16) re-entering navigator: // POST STEP - navigator.postStep(state, stepper); + navigator.handleSurfaceReached(state, position, direction, *target.surface); // ACTORS - ABORTERS - PRE STEP - navigator.preStep(state, stepper); + target = navigator.nextTarget(state, position, direction); + BOOST_CHECK(!target.isNone()); - ACTS_INFO("<<< Test 1p >>> step to 3rd layer at " - << toString(state.stepping.pos4)); + ACTS_INFO("<<< Test 1p >>> step to 3rd layer at " << toString(position)); // Step through the surfaces on third layer for (std::size_t isf = 0; isf < 3; ++isf) { - step(state.stepping); + step(position, direction, target); // (17-19) re-entering navigator: // POST STEP - navigator.postStep(state, stepper); + navigator.handleSurfaceReached(state, position, direction, *target.surface); // ACTORS - ABORTERS - PRE STEP - navigator.preStep(state, stepper); + target = navigator.nextTarget(state, position, direction); + BOOST_CHECK(!target.isNone()); ACTS_INFO("<<< Test 1q-1s >>> step within 3rd layer at " - << toString(state.stepping.pos4)); + << toString(position)); } // positive return: do the step - step(state.stepping); + step(position, direction, target); // (20) re-entering navigator: // POST STEP - navigator.postStep(state, stepper); + navigator.handleSurfaceReached(state, position, direction, *target.surface); // ACTORS - ABORTERS - PRE STEP - navigator.preStep(state, stepper); + target = navigator.nextTarget(state, position, direction); + BOOST_CHECK(!target.isNone()); - ACTS_INFO("<<< Test 1t >>> step to 4th layer at " - << toString(state.stepping.pos4)); + ACTS_INFO("<<< Test 1t >>> step to 4th layer at " << toString(position)); // Step through the surfaces on second layer for (std::size_t isf = 0; isf < 3; ++isf) { - step(state.stepping); + step(position, direction, target); // (21-23) re-entering navigator: // POST STEP - navigator.postStep(state, stepper); + navigator.handleSurfaceReached(state, position, direction, *target.surface); // ACTORS - ABORTERS - PRE STEP - navigator.preStep(state, stepper); + target = navigator.nextTarget(state, position, direction); + BOOST_CHECK(!target.isNone()); ACTS_INFO("<<< Test 1t-1v >>> step within 4th layer at " - << toString(state.stepping.pos4)); + << toString(position)); } // positive return: do the step - step(state.stepping); + step(position, direction, target); // (24) re-entering navigator: // POST STEP - navigator.postStep(state, stepper); + navigator.handleSurfaceReached(state, position, direction, *target.surface); // ACTORS - ABORTERS - PRE STEP - navigator.preStep(state, stepper); + target = navigator.nextTarget(state, position, direction); + BOOST_CHECK(target.isNone()); - ACTS_INFO("<<< Test 1w >>> step to boundary at " - << toString(state.stepping.pos4)); + ACTS_INFO("<<< Test 1w >>> step to boundary at " << toString(position)); } } // namespace Acts::Test diff --git a/Tests/UnitTests/Core/Propagator/PropagatorTests.cpp b/Tests/UnitTests/Core/Propagator/PropagatorTests.cpp index c48d36d6db5..63841c03f6b 100644 --- a/Tests/UnitTests/Core/Propagator/PropagatorTests.cpp +++ b/Tests/UnitTests/Core/Propagator/PropagatorTests.cpp @@ -25,12 +25,14 @@ #include "Acts/Propagator/EigenStepperDenseExtension.hpp" #include "Acts/Propagator/Propagator.hpp" #include "Acts/Propagator/StraightLineStepper.hpp" +#include "Acts/Propagator/VoidNavigator.hpp" #include "Acts/Surfaces/CurvilinearSurface.hpp" #include "Acts/Surfaces/CylinderBounds.hpp" #include "Acts/Surfaces/CylinderSurface.hpp" #include "Acts/Surfaces/PlaneSurface.hpp" #include "Acts/Surfaces/Surface.hpp" #include "Acts/Tests/CommonHelpers/FloatComparisons.hpp" +#include "Acts/Utilities/Logger.hpp" #include "Acts/Utilities/Result.hpp" #include @@ -81,7 +83,7 @@ struct SurfaceObserver { // the surface to be intersected const Surface* surface = nullptr; // the tolerance for intersection - double tolerance = 1.e-5; + double tolerance = 1e-5; /// Simple result struct to be returned struct this_result { @@ -91,32 +93,34 @@ struct SurfaceObserver { using result_type = this_result; - SurfaceObserver() = default; - template void act(propagator_state_t& state, const stepper_t& stepper, const navigator_t& /*navigator*/, result_type& result, const Logger& /*logger*/) const { - if (surface && !result.surfaces_passed) { - // calculate the distance to the surface - const double distance = - surface - ->intersect(state.geoContext, stepper.position(state.stepping), - stepper.direction(state.stepping), - BoundaryTolerance::None()) - .closest() - .pathLength(); - // Adjust the step size so that we cannot cross the target surface - state.stepping.stepSize.update(distance * state.options.direction, - ConstrainedStep::navigator); - // return true if you fall below tolerance - if (std::abs(distance) <= tolerance) { - ++result.surfaces_passed; - result.surface_passed_r = perp(stepper.position(state.stepping)); - // release the step size, will be re-adjusted - state.stepping.stepSize.release(ConstrainedStep::navigator); - } + if (surface == nullptr || result.surfaces_passed != 0) { + return; + } + + // calculate the distance to the surface + const double distance = + surface + ->intersect(state.geoContext, stepper.position(state.stepping), + stepper.direction(state.stepping), + BoundaryTolerance::None()) + .closest() + .pathLength(); + + // Adjust the step size so that we cannot cross the target surface + state.stepping.stepSize.release(ConstrainedStep::actor); + state.stepping.stepSize.update(distance * state.options.direction, + ConstrainedStep::actor); + + // return true if you fall below tolerance + if (std::abs(distance) <= tolerance) { + ++result.surfaces_passed; + result.surface_passed_r = perp(stepper.position(state.stepping)); + state.stepping.stepSize.release(ConstrainedStep::actor); } } }; @@ -129,7 +133,8 @@ using EigenPropagatorType = Propagator; const double Bz = 2_T; auto bField = std::make_shared(Vector3{0, 0, Bz}); EigenStepperType estepper(bField); -EigenPropagatorType epropagator(std::move(estepper)); +EigenPropagatorType epropagator(std::move(estepper), VoidNavigator(), + getDefaultLogger("prop", Logging::VERBOSE)); auto mCylinder = std::make_shared(10_mm, 1000_mm); auto mSurface = @@ -398,14 +403,14 @@ BOOST_AUTO_TEST_CASE(BasicPropagatorInterface) { MagneticFieldContext mctx; { + EigenPropagatorType::Options<> options{gctx, mctx}; + Propagator propagator{eigenStepper, navigator}; static_assert(std::is_base_of_v, "Propagator does not inherit from BasePropagator"); const BasePropagator* base = static_cast(&propagator); - EigenPropagatorType::Options<> options{gctx, mctx}; - // Ensure the propagation does the same thing auto result = propagator.propagate(startParameters, *targetSurface, options); @@ -431,14 +436,14 @@ BOOST_AUTO_TEST_CASE(BasicPropagatorInterface) { StraightLineStepper slStepper{}; { + Propagator::Options<> options{gctx, mctx}; + Propagator propagator{slStepper, navigator}; static_assert(std::is_base_of_v, "Propagator does not inherit from BasePropagator"); const BasePropagator* base = static_cast(&propagator); - Propagator::Options<> options{gctx, mctx}; - // Ensure the propagation does the same thing auto result = propagator.propagate(startParameters, *targetSurface, options); diff --git a/Tests/UnitTests/Fatras/Kernel/SimulationActorTests.cpp b/Tests/UnitTests/Fatras/Kernel/SimulationActorTests.cpp index c31f33547e0..a6358d1acb2 100644 --- a/Tests/UnitTests/Fatras/Kernel/SimulationActorTests.cpp +++ b/Tests/UnitTests/Fatras/Kernel/SimulationActorTests.cpp @@ -16,7 +16,6 @@ #include "Acts/Material/HomogeneousSurfaceMaterial.hpp" #include "Acts/Material/MaterialSlab.hpp" #include "Acts/Propagator/ConstrainedStep.hpp" -#include "Acts/Propagator/Propagator.hpp" #include "Acts/Surfaces/CurvilinearSurface.hpp" #include "Acts/Surfaces/PlaneSurface.hpp" #include "Acts/Surfaces/Surface.hpp" @@ -119,23 +118,16 @@ struct MockStepper { } void updateStepSize(State & /*state*/, double /*stepSize*/, Acts::ConstrainedStep::Type /*stype*/) const {} + void releaseStepSize(State & /*state*/, + Acts::ConstrainedStep::Type /*stype*/) const {} }; struct MockNavigatorState { - bool targetReached = false; Acts::Surface *startSurface = nullptr; Acts::Surface *currentSurface = nullptr; }; struct MockNavigator { - bool targetReached(const MockNavigatorState &state) const { - return state.targetReached; - } - - void targetReached(MockNavigatorState &state, bool reached) const { - state.targetReached = reached; - } - const Acts::Surface *startSurface(const MockNavigatorState &state) const { return state.startSurface; }

n?r^T|&?-1xFM15l4 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 brSPqnMcd+QBdevw>{mYJ9K+L2!}k9J<+~_R delta 155651 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 K%U5X!?f)NqFO1v( diff --git a/CI/physmon/reference/trackfinding_ttbar_pu200/performance_seeding.root b/CI/physmon/reference/trackfinding_ttbar_pu200/performance_seeding.root index 500783b48a421172bb5c3e23b7c8246a23512b2c..c372a4ca30124e69669825f714feb0492794f73e 100644 GIT binary patch delta 8975 zcmZ9QWmHu`zs3*U-BOB_bV_$hr*yY;bEr*sr*uh4N_U5n(%qehkP;4Db*+2fcij)O z*Pgw9GxOzn{`1Ui7}OaguwuKoy9v=H+!eQ&C%-Q5X-`D?pz;6Cs9W~ucBM~;48b%n1g9W9dg1lhPQYLNH#juCzy6w=nvDB2G zHv@&Z__P_QtSd9*Z0Djx@@}+fP}rvubS3Z_&yI57m5U?1G|-=MsE%!WfgX9G2o13Y zFV%w04>>tYv8?QJa*oRwOOw8yR#s`v?ZMcsaQ^Uzu$0g*p$i{}IF?LV@|4%;OXUEM z*^hN>-b;lA;!O#p<4Ql1*zUoJ@u!;RGH__-Qs!JoAZigf9*InY;0hb-^CfxiMBkU= z_5Sr^s#wPW73R)NSW#sEN3n6?#kJA_I^@^zC2wLH60Yk=dxn0Gm&j$f@Oj#}CJX81 za1a$?H-KNj1YvfKVCz*usra||hN3`-U=tWGY>0Cw^vc`k)O#;Vv#tsauC<{0RLbQf z;B^2*Kwubeu2pujZEJCTaOvF*cZwpXGwSLGz`<)m8=I3*4SlZGz_r3MyySM^OxIJu zZd0ks)237JBxL@vLE0S7=jPsD%Z(DQmQsq+DFm+i0vqmvEsDY|L`Hv06%p8E$M;)x zGW>-i<260)7Fs$jo&{qqg6;Q;`yf;z?jol62z9a~w7ZMO)-fE!^YFTPmV7sa|GRAW zo!ZMKvL^2&PG+-O`|i4%At_9?%dxe=@rTsRbN5ltlD!bORFQ4IOPMTVb#?Nz_%2{V9=$UqF`y$HxEM_Jp`3p<@sXBfpbE>%e+OS27Em$PzP>PEiB z7opE=`Q*V`bVu8en>!k;QKgRIKtXSwxtw_LmVKk>1qO``^UkRA=i z8tj}Wg?1ANtE&L8?3XNoAP`*iKdr|7)hbBtuT$V|lkwnr0A4sy+&|5JRFu_F#TVu* zdLNe*Hd_(|qc?^eWPzV_qojh(Ox>%AJdt0dG%=Z#C#Q$ekSzQ5cc}GuCz3{6b;vvw zgKi4qywYJf^&2sake}y52VIwZvBu2(Z&x9{2iZR7;Jbqulec}H~f<^v%YrRE}$W@ghl$! zIqi3f>dJH}{r6W}L!Cut(bHWRBWNd#L?H2{r>K-TJfHY?R|JB{x$>J*dwNxb9{8Fo z7GazjvXj-gQjc(_Xd`5G-gh>sGRI%N>8lOrf4&BY>U!wjdI)GSQKDl>b9Tl3TC(fz zHgrfpUxc#&Ra>Ci@^Zc36VRU_u`}=$E_^S3G(GcL9Z|B1toU`2%vZ4$+NRs2h+`h= z!mm0%gjK=vKNP=7oqZpvE6cB?P?a{R2@T)Q42j;Z*28bAGlx>WpxH*AYE|WNv6_#o z`xe~*!LUS?Bv(dF!ihr0e$@U`-crQ2IfY5R#?RBnFK>f)FoF-_PlBu2c!B8Nlff98 z5!Z!HZ`yOnKE(9F@+4U z%qbiS&-DZMcohp*vI3|Q>fOq>bWP` z0r0B;`HCzx{p6iys&-S$j};tcH!asXx~Slh&|0?9(^`;0`79YFmYfAgdo}h5Z`Pf6 zImWdUV9bTG`_!@jD*4TRIa$$ex@b=a-_|&7GF93oo5`664KYJ6$>o|40U7fCI+5atvCX1r=z0bPk z=yUN6b@FtC`N=>dOysVrKQ%*J|uNgBx$B zK8}WE*~XQnKhY&51gcUod}5eNQh8zj>58s{V{WQ<9ZyiA)5fHzXIbL0ez0@yZD0%_ z`XKpCTtj_wuR9KeNXwkT3?Mm0EuHi5+@FiUyu})hOeR%4?EHxJkTuy2?15gLNh zy!MQCbAx5*HA*?i+oJV`zIkF&c<&=iF6&&b+V9FfnX;L|M47Aqp^w`Y0ChgRh@`Dr^;JX}@{88<>d{|224bW6yB@> z8btjCSkzEnhqEHBj6?D;Z&bH2PG^|Z_U|We^p=z-SbR4A1d}sTT6Y!*&&Ku>oxuYJx zh7pkF?S(95M0|&b{Ot3VR0W1SeP7&wbn;NkocD`+dQD54aDnV-BIUJwl={ERZ3q^# z-?6yvb-wp`%(xLK-CMFl_Z&iOqKG%-T{MGB?smtyTV$fNzDCS)zbn9-9M`j%D`7ny zamM)gU=vT2Rq?ygh@bR$ER}D3!lkWMUn48~ev9V%uCh)qm-YO8x~1?;Csd&ncsOz1 zsGZgym_FwLsGeQ-VYk<9pG7+yGsFf+xVztWeb^V==C_!5le@OhGjJKk7yUq#VZ`oO zz!&>aNzx;T;)=VI_g=(wm1i7_*fEGN%-Q2}(V@u3uc8eWSNOATP9f`bTg-xI_G`Y8 zJCf)pFNw4B48Pg4C?Bq?VIQs|V8OZpl2h@cTT{Iw^wrLt(sT->qvWYE^MY(P1cIXI z#bZ0LAt0?TWS@B~@U?th>NnH&hfl}DpA?~d`Q=7L+&7RniqOib*^N7{n@9OrCPl|Av!w90+I&fSyHE`n)-F)ym2G@oW%=jZHay(~Z zI7M(DC7kMS2t8pumXY_7+9OlQF|t{z)(KK$H9Pk8J<}mNy-;uGJPw--AyqoWEKjaY zzcN>Q+?BEY*kMob>r4lDxe0FS_xM;?pd!s9Y22djDO>f#sX7-8BJ^nqf&cJ&$d@{p z#l#QZ3C3jKY;2f$G$XB6|Fnooh7*Ck#3W4y1|gx&$`9qlOo66mF;f3RW>I-tS`c59 zU42W+DCrFmnOe=PdrnSq3;XL=QrpL-hE6Hp1jk$=Sv}aXFx32k>2$TUQm0yAAjyv% z7s0uND!q$Nn+2N8{{^6_RNkti2bD|QGKQw#$P3o_q?HdubFjM0cT+1#{>t$G_<)6s zS>8{sMxV}W5)Y(40ne zInTiZO=)4io}UJO%h|fm->T#g#<54j(9pP#1u!M0CS0)vGf(FLTz*?eA^= zwSp5|CaN$Nq7B*Qvvkk|{x3DE^0!H)K~QR=uS#6%DqD%2_cS^zEs`wG@OiWE9uxb_ z-sS!hV7Sy~;T;gx#9H~#>2gPJ(#@L>6X8eO<#L6W-`f2!-cOl7Bzb9iI4J3;FU!S#+>x`i-w3mZRI7Nq zlChMt#^dPm8{4B3jt7EQ-x<>%GSb#iGHn(dbjr1kCFCKOQb z<2_bmZrtzpdR`z3_(|0J1j4U=b6f$?;&6<38MX37;~Rb}%=x-A`qupZ_D4G&t|lz3 zy>L1RfPs7ty0;lJIS5;~qb60>{H35&EECk~M8B9Pt6%(qyB4G8Mo+OypuYChab3Wv z!RBl{n;gwYA&uX~r!Puf86%WSu-ttV=X)+l55wNK!=6ty3 zw{Nb4V3#n`ZsuC(e=8*;O{WhN_|fbGrmG`6UoFUud4 zUd;+#OXq^EviWdK<1)rFU|r`;*WZ8keio`uwjSZH@43~WnR)8X#(t@5#41tVax=fy&(atl@Dj&Ub<^)BBF^!o=y}K0ZU(PgVjFgt2iR@YZ zf+SO{15CJY!^*^{KNB}jV{4>nIG|Onh!^1NE=%pAs!?ku zZb~J9U~<5m>di(K0WZYKN;A-LNGA`Z6Z|;t>&S;j`W=?ntY1gqvQ%0Y_$jUkGAb;D>o$n&}1JeqBO1bi>VYbp!hzoYbN+*Z^f;v>q0>GR9H zFAX&7-y^1pkccKGta67KJWXTZTl@0aLQiHUVh0(&4_x5 zwk`5$qv3W^R%-nUp~$-*4n(M=$wfw_+z6x%ep8Lh>IR175wQ)`0`Hd!U80m$& z6UvLzV4JtMD#BJ`=Y8=-DOX>`jtGvv;aa2^z3bBV2agwakYA|f)^8b*&~ikFr(fkn zxg4E8nWw0)@2KMNm+!XXC>I1>0k{P2(@yBOQ^L}wlmuSH!0nVjq8U)AU zl1Idpp*gD|Vz78ncJGH-wjv^1{B`Z4hZMT?`s_}OY)qTH-XRnN$!4Rs?A7v}Y40US zW9r$lNKTOL`f;u2&DVYiFLho2)rN}V%{|IoVdj>*NMYvj6*(rFV=vCeHrw0*DH+bj z`e4uuFV!do@XQ_e^P(W^STp*SYL2N7_op%kBo%>nzlFwg)LAv?h?9o@nkEgeocn5I z(E-&Au8*A*`J5}}@!@4wDF0Vm*yE;n!i)(}s{Jh2Y;-u|Yc9+ije~b(toO(BsX56i z$~U$@^5R?DfvD@ANtHLkRb zxl8#@1u_N6j0%jivOO*R6)j7XoSAgs6v4!ROYkd2^6gGJ5zSFL8x0#aiUZZ(D6h=8 zZOzO5316#1`G_K$2urF$ zZEQ^jG^bCs!aB~LMVJ*H_??BKJary)QGl(eL@56`fv>OEr>Vy4PQ??`gczvEeP<&Z zpj^@D8x>CLo2#`|4+uN`x1YRxEaj9t$SN_go@qYu)F26`f_)rFH2GJ7o0p zx8S%zs9fHOrnN44^KE+7UMq%N-iOy$+ff4CM%G(4e|m+^filiBBh+AmyismkHV55| zBMKVj3x=2jR7FP4jI#SSbng`Zko^+CJ#u=rfg#@3!RhmUN#jvvt3lBgVwKCxGI3{U z7GeKuEe8@vKCPll=Y*5}{I*qqrsI>&S?p@Qreh01ED$X1xL1;D`-TVY9H+H9@A8iB zJ*$@h2m}lKyOApT-+B)M5i$O~eMQrdvb3}@v$1e60~46LJK5EH6B)vy|HG92Ml_PI z$q{7K^~kT>{`)JLQhfy385~~w-&v8G|KWOn@z+Yp5wB$dEm%-9(w{U}oFd?e_vdbQ zc%nazG(uJku8k@&0_`>On?RK3U&aG5B|4W2yK z9GY!xv2H8Spj$Pz<~YHugwRRlk>eyQj|HjI_Si{h5q}aRoqpEEdgK}ol4?X_$ zE2MWHX78lHBzxtp9Wu*x`I6Bbua_58QxWIoPZ}*tw)mS%zjB6;c+Ljl9Mj1?ZCWg? z?tip2T{vC*0ddSb)L7O^tds+bLYJIoytyoe%E*=hHoKM$r-7f917bzPLLN@Dhi1~0 zJp5L_-W9=kI4zImT}lxVhty*W9if!^Zt)>*2}&AWgb?|eB#O1bPo*=j6xMk4Rm2sr zX6F*Mp$9#R|KcWY3gyhbXfr!Ra~wnKxBAiM3R2CfacVh1r95U-z}IXz7(Zen=dsF) zyV`IAzBC6~XE2^0eQhaVOhUb7BDP8GW-0T&<6Qq9=uvy~4xlR4J?K@dzDW~%zUs&kL!Z_4(((i0Dk&C1R5MoA2jv?<1@8odoCjK))yW%Qa%u}A# z_0pO%rQRy^maN-&aim7Xg;+jUr4w^GD2;$5hAmeptJuJJM|LH{D`r3b7#OGUe1RM{ zF5?b{3}ddh|HN$SMkK$*b9u>x{y9y={?lIFKke!N)!ti_zluiIP;p6~q$Nl;ddmdR z!-4Al>M%7$URJ{de|VBtSUP$AC#`jUkSZ#5a6*a?;ap*;Y(rET?eJ{&uwoTcVKpa< zuB3&fqisXPM^kK7lXZDXR$UFmDTjQ*W!g7B$OV3PPu+<>aECZApc5wo2R>^i42Pw# zB~RSD79)N#!nDf@6gR>5gfcwjTtI(pWAA+1&vOap_7mOUiV7_0+j;Isv&W}`qtD%q zeA+9!H5k$ov2RjW3sE2F>8!%_6pkKJBzDO)brYvkCTqW^s?knLFqjrvkl4SgVP2eH zOlntaR4>p>k>AZo37L-N5y97FUer;0fc_w9j;N@REoUHfBK)d~5^PwU_66{pc=DrC zy0pcyGHhi$$?hAi)^|ZI(a&(ZqG8_Mm0M;UW&~Tr$y~84CcWo2c}ctH^bvnDxW&q7 z9)6~Musy3u;&q6Zduo7wc!GH>T10s)X48KVOH)8RB|_Zx#MmW8+~0UVM9sP(3Ppv3 z_6>#1wwf3VL5TM{Vs38P=7H|OZ+XozQ0{NaxYsS%*CYq3y@Pc%CPQE;jtSgUPHEbx zkv(SU$yHoS`a$`}DILcN<|Jp=qdRHubcg%yK1rOTmfe~-nYFktLG|ymFE#2M$_&qt zMTT^rx8})SM&!cpp-wmV%ba^k2TC6l@ajus?jkK|I!J5;-Hh=4{ed1A0{;fs+d&`W zJMW9t*Irw=pI3{)YW0*I4uO7pJ?kK^@!6)|6DdwL)iZaf9(6FM?FhHC);5=O7>Hp5Bwq8OqI~H%?hJW8TJvQYoc|L5wq641|a`rEg!*NvfALha4g% z--g$SZcR*XZ#KbPTmZyg-{IqFdvA@5^+m}RhBq8~^L~1W53h_iY+wy>8ch%S{l0LIka8&Kfgd_-V6MU{k7dVuF1UrdL1gG_MZJf^Vp>w%kWLx%Py- zwioMMIZzSP8a2Y~gT3w0ZO>4;m>pH(cqR!rt%)1!(Cb>~{;eD=HvsZzb8sa&t%b`( z>m8!j&VwzAv&2Z(kZ-nJUeB0x<<=ngkp6VSmpmY9Q6IQ78b{UtVNra zJWTrmFhB%xVEwUEY?`f|h9>r~vXM%ltQ2nK8}p*Fh(coS`~WKjHU`*R1YBy9mGj$H zW;6t~h~6whb8tg@ReqsZbdf#gZFbJd*DInQ`ZlwKHG25?D?^&}TeNf@ z)|iEP10Ek8GYhv5)~fFGNjITsEahdNkTo^Aq>ib?oLm#ie(vs1Oj4ueB4y~CUBw|P zO9YknSPCV#e*Lj)&o1%(bH(peZUklmX7}-j1;jnr1?^-|H+lbBXTZQizzALm#ZI-cwXd00Uzi6-VeB~jUBoPOu)1kb&^c)@vWvLk zeS_wc2Am>x^11AJ-a*`gc`IiKPRAr!JP~;IFnundG6v7KR{l};uhT_X$~rdr)0=k& z=9_8Jox$1XA){;lEvK^wLM)!AJYqw@oxW1Z)crNfK_*lr1Y+-Mxk6WMFImNzQ5SCY z@Ul4Ue_k2;`=E3%_$}8I={L0r`v8`HpjU{K@16u+;|aKzH;f zABI~d^k0wgz76^p>;v$O^7Z2kH27(Kbq@3~SFmt`+(Z6y{Ab|IV_Tf<&i1 zLdY$@;lhMn#B?*n>cZ*AD~Itj1&?b*BanD%un*f*@0_MsVj4|n^zr^D3I z&`6!rh4<0W$B`@lbFxq0y3N0BjDB~5@`YSu(`CnFgj`>tZaw*m@+u>t9Gu{9b;Q2T z?nVi@z6Wjje#DtLVd#5U6X%_TU{Bl;gxte|h(o&w>;Q#s0g{;k$^+Tw z+X3}js%z){G0cwiCl1a6XqN(1h`mWUNgvi+;jLE3Rbdn(CxPN-hj}lI2*OLd@kNDO zh(}RYpqpp+Hyf#T&R;h^dfgpMRc<+Gyeg5+b$6fqs2qtzrt3L-XLV}HD@sd^!q!#b zJrwY}P#v<7szqRFcY#htCXB{TG#?K5YWZMt=FMeQAu7dz#LBOY-ZxODEYXLeKM$WbVg(Cq;{rUW`ktcOgX=UWhpQ+) zw#c);-$g1bg+U|XTXgnU7~It`ZzYLmh4b`LJ1tljk9(T%7iq5LKV(k`=pX~_Y;R5= z=+7_cEV``T%wmo#i0V5%+|0&W==ynxD?)4!3@y4X-w3_Y0=<=R>$(*2Odv^JdU%!f zJRJL|>e#+V835zskGekQ`=Va``$|G@yJDK8_k>{%ubotpW4w(q`c?dh+r+f2#EBXt`wck`?h?%_#GqpL)WFuxJB!@i-iM2T_gR`CP!`6lbs!nAR zwVRc(V062Di)j_#J|TOGr6_}FmKG4*1!}GtXPeMd%>o_#2ZK@(6==cS6pI~{l^DUX zn6rG+I^x(@#W15{l{u3!%ktv7wDjisrzeLB0oPXlr`Vi}PpjBS< zFoYG9I2?Kx%$FixkKc=5$mM-Frvwb;X&|>zlD!t9v zUU0WD%xRyHKl@rt*%8~Gm!>}>=$}tvN0r0>5k8*%1y;0#sp(IgQ~SFUfyn>uMBIpf zQy#N+ay|=wat$*Li8{%_pPyR)h4B9)zWyU%SQv@V1O5Q|{{@Kr1z2GI0op8V#H-)_ T0Gj^=@csh~{s2O-5k3C{xkyT= delta 9020 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 ckkE1f8e3+;62bN~PV delta 28050 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 L`c&`h@sR%j=%xui diff --git a/CI/physmon/reference/trackfinding_ttbar_pu200/performance_vertexing_amvf_grid_time_hist.root b/CI/physmon/reference/trackfinding_ttbar_pu200/performance_vertexing_amvf_grid_time_hist.root index 25110c369be5e6d08337abb73d5699d1c012aa0d..0d655efda59e916bb9c00ea5f7131a4ba24a2a78 100644 GIT binary patch delta 28317 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 diff --git a/CI/physmon/reference/trackfinding_ttbar_pu200/tracksummary_ckf_hist.root b/CI/physmon/reference/trackfinding_ttbar_pu200/tracksummary_ckf_hist.root index f803f21ee8f4d1b84d835468d52a3f04c9ce4c3d..9507d9082ddba7df0fc46b084681bee5a1572cdc 100644 GIT binary patch delta 24445 zcma&O1z42b);>N%OP7FjgD4GB(ka~_jevl3HxJ!Cq;!`864EIpjR;5%-616n|AF^A z?|IMnJJk;f~eqb7nL#I)VjA@L3h zZ(x5Op1uWv(2*a8VGr2U4?mHC4>Pdw{(A-x++Xkf>o-{IVJdj~hdDryN<<0-9eET= z2oty-3uBMkc{cvLESPrLqWFps(!oOt(57`zEr35wWCDRf zAUGwMKBfrjGVBshY?WM`tu4(Qoj@>6c0nL=c#u2T$;c@Aoslaf9&K{tH=lDv`;&JnJN1nkztZrg1(TwzXhqFW2zPVZ7(Z=K$|CGB(OD!A1)bD z^>NLY4{IVsLdp>a#lwXf^n+-fjNYNABIm~!P|71CA&DYs8YzRpob#jDd~8pm-i2_{ z-Z46HAxMdXq)|Gm=|DY1{7wI1HEPrU<1PI^UOh~V;L%3Z|5lho9Fh_B40ZeQLS$j% zkoG7tbP(9$QIPmyz#oYm%mc|mssdm(TC?Y>2Y368$H3iRiFo&Ig=Hg&Ty=C4VG}9_ z^7RM7!v|8rzu*d3@|98rM;Ra?(h5n+Bjbd*YNvKtAY+C#1kxqC2K}&A=3fG(E@MxD za`QS3 z0%UrrDgC&UVE2oO;qhuj9&SJKe9Zx}IurAMxy-+@fM%;^VeDvTDr4#V2#95f9Y>uI zY+ImvlBjz>3ld^uNBV>*W#SIM~HF&=5ZnP%s86_7SUv-OT^E zX(Rv)*bQKiEFuip!wCX%@S@m#_w-WY*xrF*!C_%KVcKCUR_fSaaNz?wSG=*KvBQp% zy2GY*OQKymSaDz8pv>xgFgJNIaxg^BPE>`H5qCQbytm!7b$t>~7xW~TUgF7?1lj$s zE|FRXb75`*;WvSJDnVjTAg1kLDi(JWR-l)>Z^N5N4%a@4sB+=y9A(1XKw-@M`;2{Q zLFIExtB~S@Y!lAmbnyuatm*d@t4{BUI#}*MkB6N2(t|DM>Th+SE!$QGcl8+iDd_}G zhwnezoH~8$%I044X#cSa@yY)%Qm=oO-hDH*U>yFoZGnp;=V=le_;c9rl3!h&JX(PI z?<4B%+H^!qKmP7qp+Y{US09yG7`422mGxZ28ub(02k_p%6nQ&o-q!8JBUT*QnukWW z9J~{$GA?AP=kb<6-x`O&GkCL&O{t4h$^DA@wI|{GH2O>5;lPIXpdF^uo(ix8Dw)Kg?=gYdxpvYz>sN z|M44zNHl`t72)ss$zVGBAAzgt1szA&q%3VtiR)obg`jtcaNedfvGgG#MQ`m6cuXlP zqG&LHf;M?UVXxZ^W=yT(4WUB;j*xD>@9?P`(?p*oQ~+Fi3(pPT)7SA?97p%BxLza^ z6k;6#BxiQ+{8b?>({?|-I5_hbO(;dX9S?f&2hKv%6-GiA$`Vb8CcO(_2Mqrhz3v9}sG)o<$aBF&_(b*^LI4h@Z{Z_Z^%8v^ft6Fl`P|*_4=AwDZL6Jra(8u~&1M`IPVFIVF9d

RB8T>K~79EE@ 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 diff --git a/CI/physmon/reference/trackfinding_ttbar_pu200/performance_finding_ckf_ambi.root b/CI/physmon/reference/trackfinding_ttbar_pu200/performance_finding_ckf_ambi.root index a083efffaff0d7157c463ac67a30e8f76bf23247..b560e3868c93c3b630fc2ebddedebf349ad22142 100644 GIT binary patch literal 28448 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 BB3=Lh diff --git a/CI/physmon/reference/trackfinding_ttbar_pu200/performance_finding_ckf_ml_solver.root b/CI/physmon/reference/trackfinding_ttbar_pu200/performance_finding_ckf_ml_solver.root index db22a916d9e2e307133652a03777039151c07eda..9437ebe5ff28188b9e17b720749f0646256b72e2 100644 GIT binary patch literal 28262 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 literal 28287 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%0AmgXq8r> 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