File indexing completed on 2026-09-15 08:18:46
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "Acts/Geometry/BlueprintOptions.hpp"
0010
0011 #include "Acts/Geometry/NavigationPolicyFactory.hpp"
0012 #include "Acts/Geometry/TrackingVolume.hpp"
0013 #include "Acts/Navigation/CylinderNavigationPolicy.hpp"
0014 #include "Acts/Navigation/INavigationPolicy.hpp"
0015 #include "Acts/Navigation/TryAllNavigationPolicy.hpp"
0016
0017 #include <memory>
0018
0019 namespace Acts {
0020
0021 void BlueprintOptions::validate() const {
0022 if (!defaultNavigationPolicyFactory) {
0023 throw std::invalid_argument("Navigation policy factory is nullptr");
0024 }
0025 }
0026
0027 std::unique_ptr<NavigationPolicyFactory>
0028 BlueprintOptions::makeDefaultNavigationPolicyFactory() {
0029 return NavigationPolicyFactory{}
0030 .add([](const GeometryContext& gctx, const TrackingVolume& volume,
0031 const Logger& logger) -> std::unique_ptr<INavigationPolicy> {
0032
0033
0034 if (volume.surfaces().empty() &&
0035 CylinderNavigationPolicy::isApplicable(volume, logger)) {
0036 return std::make_unique<CylinderNavigationPolicy>(gctx, volume,
0037 logger);
0038 }
0039
0040
0041 return std::make_unique<TryAllNavigationPolicy>(gctx, volume, logger);
0042 })
0043 .asUniquePtr();
0044 }
0045
0046 }