Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:22:28

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 
0009 #pragma once
0010 
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Geometry/GeometryContext.hpp"
0013 #include "Acts/Surfaces/BoundaryTolerance.hpp"
0014 #include "Acts/Utilities/Delegate.hpp"
0015 
0016 namespace Acts {
0017 
0018 class NavigationStream;
0019 class AppendOnlyNavigationStream;
0020 class Logger;
0021 
0022 /// Struct that serves as the argument to the navigation delegate.
0023 /// It is not supposed to be used as an lvalue.
0024 struct NavigationArguments {
0025   /// Current position in 3D space for navigation
0026   Vector3 position{};
0027   /// Direction vector for navigation propagation
0028   Vector3 direction{};
0029 
0030   /// Boundary tolerance for surface intersection calculations
0031   BoundaryTolerance tolerance = BoundaryTolerance::None();
0032 };
0033 
0034 /// Central alias for the navigation delegate. This type is owning to support
0035 /// (type-erased) navigation delegate chains (i.e. multiple policies).
0036 using NavigationDelegate =
0037     Delegate<void(const GeometryContext&, const NavigationArguments&,
0038                   AppendOnlyNavigationStream&, const Logger&)>;
0039 
0040 }  // namespace Acts