Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-10-15 08:03:18

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/Surfaces/BoundaryTolerance.hpp"
0013 #include "Acts/Utilities/Delegate.hpp"
0014 
0015 namespace Acts {
0016 
0017 class NavigationStream;
0018 class AppendOnlyNavigationStream;
0019 class Logger;
0020 
0021 /// Struct that serves as the argument to the navigation delegate.
0022 /// It is not supposed to be used as an lvalue.
0023 struct NavigationArguments {
0024   /// Current position in 3D space for navigation
0025   Vector3 position;
0026   /// Direction vector for navigation propagation
0027   Vector3 direction;
0028 
0029   /// Boundary tolerance for surface intersection calculations
0030   BoundaryTolerance tolerance = BoundaryTolerance::None();
0031 
0032   /// Flag indicating whether portal intersections are desired
0033   bool wantsPortals = true;
0034   /// Flag indicating whether surface intersections are desired
0035   bool wantsSurfaces = true;
0036 };
0037 
0038 /// Central alias for the navigation delegate. This type is owning to support
0039 /// (type-erased) navigation delegate chains (i.e. multiple policies).
0040 // @TODO: Add geometry context to navigation delegate signature
0041 using NavigationDelegate = Delegate<void(
0042     const NavigationArguments&, AppendOnlyNavigationStream&, const Logger&)>;
0043 
0044 }  // namespace Acts