Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-05 08:17:26

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/Propagator/SympyStepper.hpp"
0013 #include "Acts/Propagator/detail/SympyStepperStatus.hpp"
0014 
0015 #include <span>
0016 #include <system_error>
0017 
0018 namespace Acts {
0019 
0020 class IVolumeMaterial;
0021 
0022 namespace detail {
0023 
0024 /// @brief One Runge-Kutta step through material
0025 ///
0026 /// Kept in its own translation unit so that the dense kernel is not
0027 /// instantiated next to SympyStepper::step, where it would share a stack frame
0028 /// and a register allocation with the vacuum path.
0029 ///
0030 /// @param [in] stepper the stepper, for field access
0031 /// @param [in,out] state the stepper state, read for the start parameters and
0032 ///        written with the end parameters on success
0033 /// @param [in] material the volume material
0034 /// @param [in] h the step size to attempt
0035 /// @param [in] errTol the tolerated error estimate
0036 /// @param [out] errorEstimate the error estimate of the attempted step
0037 /// @param [out] lastField the field at the last sampled point, to seed the
0038 ///        next step
0039 /// @param [out] fieldErr the error of a failed field lookup
0040 /// @param [in,out] jac the bound-to-free jacobian, empty to skip transport
0041 ///
0042 /// @return whether the step was accepted, rejected or hit a field error
0043 Rk4Status sympyDenseStep(const SympyStepper& stepper,
0044                          SympyStepper::State& state,
0045                          const IVolumeMaterial& material, double h,
0046                          double errTol, double& errorEstimate,
0047                          Vector3& lastField, std::error_code& fieldErr,
0048                          std::span<double> jac);
0049 
0050 }  // namespace detail
0051 }  // namespace Acts