ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RiddersPropagator.hpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file RiddersPropagator.hpp
1 // This file is part of the Acts project.
2 //
3 // Copyright (C) 2017-2019 CERN for the benefit of the Acts project
4 //
5 // This Source Code Form is subject to the terms of the Mozilla Public
6 // License, v. 2.0. If a copy of the MPL was not distributed with this
7 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 
9 #pragma once
10 
13 
14 namespace Acts {
15 
33 template <typename propagator_t>
37 
38  private:
43 
45  template <typename parameters_t, typename action_list_t>
48  template <typename... args>
49  using this_result_type = PropagatorResult<parameters_t, args...>;
50 
52  using type = typename action_list_t::template result_type<this_result_type>;
53  };
54 
56  template <typename parameters_t, typename action_list_t>
59 
60  public:
64  RiddersPropagator(propagator_t& propagator) : m_propagator(propagator) {}
65 
73  template <typename stepper_t, typename navigator_t = detail::VoidNavigator>
74  RiddersPropagator(stepper_t stepper, navigator_t navigator = navigator_t())
75  : m_propagator(Propagator(stepper, navigator)) {}
76 
86  template <typename parameters_t, typename propagator_options_t>
88  CurvilinearParameters, typename propagator_options_t::action_list_type>>
89  propagate(const parameters_t& start,
90  const propagator_options_t& options) const;
91 
103  template <typename parameters_t, typename propagator_options_t>
105  BoundParameters, typename propagator_options_t::action_list_type>>
106  propagate(const parameters_t& start, const Surface& target,
107  const propagator_options_t& options) const;
108 
109  private:
120  const std::vector<BoundVector>& derivatives) const;
121 
136  template <typename options_t, typename parameters_t>
137  std::vector<BoundVector> wiggleDimension(
138  const options_t& options, const parameters_t& startPars,
139  const unsigned int param, const Surface& target,
140  const BoundVector& nominal, const std::vector<double>& deviations) const;
141 
149  const std::array<std::vector<BoundVector>, eBoundParametersSize>&
150  derivatives,
151  const Covariance& startCov, const std::vector<double>& deviations) const;
152 
159  BoundVector fitLinear(const std::vector<BoundVector>& values,
160  const std::vector<double>& deviations) const;
161 
164 };
165 } // namespace Acts
166