File indexing completed on 2025-10-25 07:55:14
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Definitions/Units.hpp"
0013 #include "Acts/Propagator/NavigationTarget.hpp"
0014 #include "Acts/Surfaces/BoundaryTolerance.hpp"
0015
0016 #include <any>
0017 #include <cstddef>
0018 #include <vector>
0019
0020 namespace Acts {
0021
0022 class Surface;
0023
0024 namespace Experimental {
0025
0026 class Portal;
0027 class Detector;
0028 class DetectorVolume;
0029
0030
0031
0032
0033
0034 struct NavigationState {
0035
0036
0037 using SurfaceCandidates = std::vector<NavigationTarget>;
0038
0039
0040 Vector3 position = Vector3(0., 0., 0.);
0041
0042
0043 Vector3 direction = Vector3(0., 0., 0.);
0044
0045
0046 const Detector* currentDetector = nullptr;
0047
0048
0049 const DetectorVolume* currentVolume = nullptr;
0050
0051
0052 const Surface* currentSurface = nullptr;
0053
0054
0055 const Portal* currentPortal = nullptr;
0056
0057
0058 SurfaceCandidates surfaceCandidates = {};
0059
0060
0061
0062 int surfaceCandidateIndex = -1;
0063
0064
0065 BoundaryTolerance surfaceBoundaryTolerance = BoundaryTolerance::None();
0066
0067
0068 double overstepTolerance = -100 * UnitConstants::um;
0069
0070
0071 std::any auxiliary;
0072
0073
0074
0075 const NavigationTarget& surfaceCandidate() const {
0076 return surfaceCandidates.at(surfaceCandidateIndex);
0077 }
0078 };
0079
0080 }
0081 }