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>
87  Result<
89  typename propagator_options_t::action_list_type>>
90  propagate(const parameters_t& start,
91  const propagator_options_t& options) const;
92 
104  template <typename parameters_t, typename propagator_options_t>
106  BoundTrackParameters, typename propagator_options_t::action_list_type>>
107  propagate(const parameters_t& start, const Surface& target,
108  const propagator_options_t& options) const;
109 
110  private:
121  const std::vector<BoundVector>& derivatives) const;
122 
137  template <typename options_t, typename parameters_t>
138  std::vector<BoundVector> wiggleDimension(
139  const options_t& options, const parameters_t& startPars,
140  const unsigned int param, const Surface& target,
141  const BoundVector& nominal, const std::vector<double>& deviations) const;
142 
150  const std::array<std::vector<BoundVector>, eBoundSize>& 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