|
|
|||
File indexing completed on 2026-09-14 08:17:54
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/Definitions/Tolerance.hpp" 0013 #include "Acts/Utilities/Delegate.hpp" 0014 0015 #include <functional> 0016 0017 namespace Acts { 0018 0019 class GeometryContext; 0020 class Surface; 0021 class TrackingVolume; 0022 0023 /// Plain navigator options carrying geometry context and surfaces. 0024 struct NavigatorPlainOptions { 0025 /// NavigatorPlainOptions with context 0026 /// @param gctx The geometry context 0027 explicit NavigatorPlainOptions(const GeometryContext& gctx) 0028 : geoContext(gctx) {} 0029 0030 /// Context object for the geometry 0031 std::reference_wrapper<const GeometryContext> geoContext; 0032 0033 /// Start surface for navigation 0034 const Surface* startSurface{}; 0035 /// Target surface for navigation 0036 const Surface* targetSurface{}; 0037 0038 /// The surface tolerance 0039 double surfaceTolerance = s_onSurfaceTolerance; 0040 0041 /// The near limit to resolve surfaces 0042 double nearLimit = s_onSurfaceTolerance; 0043 0044 /// The far limit to resolve surfaces 0045 double farLimit = std::numeric_limits<double>::max(); 0046 0047 /// Delegate to decide whether free surfaces are appended to the navigation 0048 /// stream given the current volume and the track coordinates. If the 0049 /// delegate is set, it is called in each candidate resolution step 0050 /// for each surface that has not been marked as reached yet. 0051 /// @param gctx Current geometry context carrying the alignment information 0052 /// @param currentVol The current tracking volume in which the propagator resides 0053 /// @param pos Position of the track in global coordinates 0054 /// @param dir Direction vector of the track 0055 /// @param surface Free surface candidate to test 0056 using FreeSurfaceSelctor = Delegate<bool( 0057 const GeometryContext& gctx, const TrackingVolume& currentVol, 0058 const Vector3& pos, const Vector3& dir, const Surface& candidate)>; 0059 0060 /// Delegate for selecting free surfaces during navigation 0061 FreeSurfaceSelctor freeSurfaceSelector; 0062 0063 /// Surfaces that are not part of the tracking geometry 0064 std::vector<const Surface*> externalSurfaces; 0065 0066 /// Append an external surface to be considered during navigation. The surface 0067 /// will be intersected without bounds check to force the propagation to 0068 /// resolve it. Note the surface must outlive the propagation and surfaces 0069 /// have to be added in the order they should be considered during navigation. 0070 /// @param surface The surface to add to the list 0071 void appendExternalSurface(const Surface& surface) { 0072 externalSurfaces.push_back(&surface); 0073 } 0074 }; 0075 0076 } // namespace Acts
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|