Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:10:59

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/Direction.hpp"
0013 #include "Acts/Propagator/NavigationTarget.hpp"
0014 #include "Acts/Propagator/NavigatorOptions.hpp"
0015 #include "Acts/Propagator/NavigatorStatistics.hpp"
0016 
0017 namespace Acts {
0018 
0019 class Surface;
0020 
0021 /// @brief A navigator that does nothing
0022 ///
0023 /// It does not provide any navigation action
0024 ///
0025 class VoidNavigator {
0026  public:
0027   /// @brief Nested Config struct
0028   struct Config {};
0029 
0030   /// @brief Nested Options struct
0031   struct Options : public NavigatorPlainOptions {
0032     explicit Options(const GeometryContext& gctx)
0033         : NavigatorPlainOptions(gctx) {}
0034 
0035     void setPlainOptions(const NavigatorPlainOptions& options) {
0036       static_cast<NavigatorPlainOptions&>(*this) = options;
0037     }
0038   };
0039 
0040   /// @brief Nested State struct
0041   struct State {
0042     explicit State(const Options& options_) : options(options_) {}
0043 
0044     Options options;
0045 
0046     /// Navigation statistics
0047     NavigatorStatistics statistics;
0048   };
0049 
0050   State makeState(const Options& options) const {
0051     State state(options);
0052     return state;
0053   }
0054 
0055   const Surface* currentSurface(const State& /*state*/) const {
0056     return nullptr;
0057   }
0058 
0059   const Surface* startSurface(const State& /*state*/) const { return nullptr; }
0060 
0061   const Surface* targetSurface(const State& /*state*/) const { return nullptr; }
0062 
0063   bool navigationBreak(const State& /*state*/) const { return true; }
0064 
0065   void initialize(State& /*state*/, const Vector3& /*position*/,
0066                   const Vector3& /*direction*/,
0067                   Direction /*propagationDirection*/) const {
0068     return;
0069   }
0070 
0071   NavigationTarget nextTarget(State& /*state*/, const Vector3& /*position*/,
0072                               const Vector3& /*direction*/) const {
0073     return NavigationTarget::None();
0074   }
0075 
0076   bool checkTargetValid(const State& /*state*/, const Vector3& /*position*/,
0077                         const Vector3& /*direction*/) const {
0078     return true;
0079   }
0080 
0081   void handleSurfaceReached(State& /*state*/, const Vector3& /*position*/,
0082                             const Vector3& /*direction*/,
0083                             const Surface& /*surface*/) const {
0084     return;
0085   }
0086 };
0087 
0088 }  // namespace Acts