9 #include <boost/test/unit_test.hpp>
29 using namespace Acts::UnitLiterals;
46 std::vector<Jacobian> jacobians = {};
47 std::vector<double> paths = {};
51 bool finalized =
false;
64 template <
typename propagator_state_t,
typename stepper_t>
65 void operator()(propagator_state_t& state,
const stepper_t&
stepper,
68 auto surface = state.navigation.currentSurface;
76 if ((state.navigation.navigationBreak or state.navigation.targetReached) and
79 result.
paths.push_back(state.stepping.pathAccumulated);
81 result.
fullPath = state.stepping.pathAccumulated;
94 template <
typename propagator_state_t,
typename stepper_t>
95 void operator()(propagator_state_t& ,
96 const stepper_t& )
const {}
122 cov << 10
_mm, 0, 0.123, 0, 0.5, 0, 0, 10
_mm, 0, 0.162, 0, 0, 0.123, 0, 0.1, 0,
123 0, 0, 0, 0.162, 0, 0.1, 0, 0, 0.5, 0, 0, 0, 1. / (10
_GeV), 0, 0, 0, 0, 0,
144 const auto& pResult = propagator.propagate(start, pOptions).value();
146 const auto& pJacobian = *(pResult.transportJacobian);
149 const auto& swResult = propagator.propagate(start, swOptions).value();
150 auto swJacobianTest = swResult.template get<StepWiseResult>();
154 auto swPaths = swJacobianTest.paths;
156 for (
auto cpath = swPaths.rbegin(); cpath != swPaths.rend(); ++cpath) {
157 if (cpath != swPaths.rend() - 1) {
158 accPath += (*cpath) - (*(cpath + 1));
161 accPath += (*cpath) - 0.;
166 Jacobian accJacobian = Jacobian::Identity();
168 auto swJacobians = swJacobianTest.jacobians;
170 const auto& swlJacobian = *(swResult.transportJacobian);
173 for (
auto& j : swJacobians) {
174 accJacobian = j * accJacobian;
176 accJacobian = swlJacobian * accJacobian;