From f74f695f45374b5344b9280bfee7da206c632e70 Mon Sep 17 00:00:00 2001 From: Dimitra Amperiadou Date: Wed, 27 Aug 2025 14:59:59 +0200 Subject: [PATCH 1/3] serious fix --- Core/src/Geometry/MultiWireVolumeBuilder.cpp | 3 ++- .../Navigation/MultiLayerNavigationPolicy.cpp | 25 +++++++++++++------ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/Core/src/Geometry/MultiWireVolumeBuilder.cpp b/Core/src/Geometry/MultiWireVolumeBuilder.cpp index c8f9864d198..477df8d51a6 100644 --- a/Core/src/Geometry/MultiWireVolumeBuilder.cpp +++ b/Core/src/Geometry/MultiWireVolumeBuilder.cpp @@ -91,7 +91,8 @@ MultiWireVolumeBuilder::createNavigationPolicyFactory() const { // The indexed grid to be filled from the navigation policy IndexedSurfacesNavigation indexedGrid( std::move(grid), - {protoAxisA.getAxisDirection(), protoAxisB.getAxisDirection()}); + {protoAxisA.getAxisDirection(), protoAxisB.getAxisDirection()}, + m_config.transform.inverse()); TryAllNavigationPolicy::Config tryAllConfig; tryAllConfig.portals = true; diff --git a/Core/src/Navigation/MultiLayerNavigationPolicy.cpp b/Core/src/Navigation/MultiLayerNavigationPolicy.cpp index 5a58672f968..f08f54296e9 100644 --- a/Core/src/Navigation/MultiLayerNavigationPolicy.cpp +++ b/Core/src/Navigation/MultiLayerNavigationPolicy.cpp @@ -8,6 +8,8 @@ #include "Acts/Navigation/MultiLayerNavigationPolicy.hpp" +#include "Acts/Utilities/GridAccessHelpers.hpp" + namespace Acts::Experimental { MultiLayerNavigationPolicy::MultiLayerNavigationPolicy( @@ -38,7 +40,7 @@ void MultiLayerNavigationPolicy::initializeCandidates( << m_volume.volumeName()); const Transform3& itransform = m_volume.itransform(); const Vector3 locPosition = itransform * args.position; - const Vector3 locDirection = itransform * args.direction; + const Vector3 locDirection = itransform.linear() * args.direction; std::vector path = generatePath(locPosition, locDirection); @@ -47,13 +49,15 @@ void MultiLayerNavigationPolicy::initializeCandidates( surfCandidates.reserve(surfaces.size()); for (const auto& pos : path) { - std::vector indices = m_indexedGrid.grid.atPosition(pos); - + // Local access + std::vector fAccessor = {0u, 1u}; + const auto& indices = m_indexedGrid.grid.atPosition( + GridAccessHelpers::accessLocal(pos, fAccessor)); std::ranges::transform(indices, std::back_inserter(surfCandidates), [&](const auto& i) { return &surfaces[i]; }); } - ACTS_VERBOSE("MultiLayerNavigationPolicy Candidates reported" + ACTS_VERBOSE("MultiLayerNavigationPolicy Candidates reported " << surfCandidates.size() << " candidates"); // fill the navigation stream with the container @@ -70,14 +74,21 @@ std::vector MultiLayerNavigationPolicy::generatePath( auto maxYIndex = m_indexedGrid.grid.numLocalBins()[1]; Vector3 unitDir = direction.normalized(); + // cast the starting position and direction to the correct axis + Vectro2 startPoint{ + VectorHelpers::cast(startPosition, m_indexedGrid.casts[0]), + VectorHelpers::cast(startPosition, m_indexedGrid.casts[1])}; + Vector2 startDir { + VectorHelpers::cast(unitDir, m_indexedGrid.casts[0]), + VectorHelpers::cast(unitDir, m_indexedGrid.casts[1]) + } + for (std::size_t i = 0; i < maxYIndex; i++) { auto v1 = m_indexedGrid.grid.lowerLeftBinEdge({1, i + 1}); auto v2 = m_indexedGrid.grid.upperRightBinEdge({maxXIndex, i + 1}); auto intersection = Acts::detail::IntersectionHelper2D::intersectSegment( - Vector2(v1[0], v1[1]), Vector2(v2[0], v2[1]), - startPosition.template block<2, 1>(0, 0), - unitDir.template block<2, 1>(0, 0)); + Vector2(v1[0], v1[1]), Vector2(v2[0], v2[1]), startPoint, startDir); if (!intersection.isValid()) { continue; } From b18762e4532136e7e2ec18b1da0cc62b8dda9dae Mon Sep 17 00:00:00 2001 From: Dimitra Amperiadou Date: Wed, 27 Aug 2025 23:51:28 +0200 Subject: [PATCH 2/3] how drunk i was --- Core/src/Navigation/MultiLayerNavigationPolicy.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/Navigation/MultiLayerNavigationPolicy.cpp b/Core/src/Navigation/MultiLayerNavigationPolicy.cpp index f08f54296e9..cc68178c521 100644 --- a/Core/src/Navigation/MultiLayerNavigationPolicy.cpp +++ b/Core/src/Navigation/MultiLayerNavigationPolicy.cpp @@ -75,7 +75,7 @@ std::vector MultiLayerNavigationPolicy::generatePath( Vector3 unitDir = direction.normalized(); // cast the starting position and direction to the correct axis - Vectro2 startPoint{ + Vector2 startPoint{ VectorHelpers::cast(startPosition, m_indexedGrid.casts[0]), VectorHelpers::cast(startPosition, m_indexedGrid.casts[1])}; Vector2 startDir { From 32c32fa964d294ac78d0ba7ede42219f12b68bec Mon Sep 17 00:00:00 2001 From: Dimitra Amperiadou Date: Thu, 28 Aug 2025 00:05:48 +0200 Subject: [PATCH 3/3] fix --- Core/src/Navigation/MultiLayerNavigationPolicy.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Core/src/Navigation/MultiLayerNavigationPolicy.cpp b/Core/src/Navigation/MultiLayerNavigationPolicy.cpp index cc68178c521..455d542d6e6 100644 --- a/Core/src/Navigation/MultiLayerNavigationPolicy.cpp +++ b/Core/src/Navigation/MultiLayerNavigationPolicy.cpp @@ -78,10 +78,8 @@ std::vector MultiLayerNavigationPolicy::generatePath( Vector2 startPoint{ VectorHelpers::cast(startPosition, m_indexedGrid.casts[0]), VectorHelpers::cast(startPosition, m_indexedGrid.casts[1])}; - Vector2 startDir { - VectorHelpers::cast(unitDir, m_indexedGrid.casts[0]), - VectorHelpers::cast(unitDir, m_indexedGrid.casts[1]) - } + Vector2 startDir{VectorHelpers::cast(unitDir, m_indexedGrid.casts[0]), + VectorHelpers::cast(unitDir, m_indexedGrid.casts[1])}; for (std::size_t i = 0; i < maxYIndex; i++) { auto v1 = m_indexedGrid.grid.lowerLeftBinEdge({1, i + 1});