File indexing completed on 2025-01-19 09:23:25
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Geometry/GeometryContext.hpp"
0013 #include "Acts/Navigation/NavigationState.hpp"
0014 #include "Acts/Surfaces/BoundaryCheck.hpp"
0015 #include "Acts/Utilities/Intersection.hpp"
0016
0017 #include <vector>
0018
0019 namespace Acts {
0020
0021 class Surface;
0022
0023 namespace Experimental {
0024
0025 class Portal;
0026 class Detector;
0027 class DetectorVolume;
0028
0029
0030 struct DetectorVolumeFiller {
0031
0032
0033
0034
0035
0036
0037 inline static void fill(NavigationState& nState,
0038 const DetectorVolume* volume) {
0039 nState.currentVolume = volume;
0040 }
0041 };
0042
0043
0044 struct SurfacesFiller {
0045
0046
0047
0048
0049
0050 inline static void fill(NavigationState& nState,
0051 const std::vector<const Surface*>& surfaces) {
0052 std::for_each(surfaces.begin(), surfaces.end(), [&](const auto& s) {
0053 nState.surfaceCandidates.push_back(NavigationState::SurfaceCandidate{
0054 ObjectIntersection<Surface>::invalid(), s, nullptr,
0055 nState.surfaceBoundaryCheck});
0056 });
0057 }
0058 };
0059
0060
0061 struct PortalsFiller {
0062
0063
0064
0065
0066
0067 inline static void fill(NavigationState& nState,
0068 const std::vector<const Portal*>& portals) {
0069 std::for_each(portals.begin(), portals.end(), [&](const auto& p) {
0070 nState.surfaceCandidates.push_back(NavigationState::SurfaceCandidate{
0071 ObjectIntersection<Surface>::invalid(), nullptr, p,
0072 BoundaryCheck(true)});
0073 });
0074 }
0075 };
0076
0077 }
0078 }