24 #include <boost/algorithm/string.hpp>
70 template <
typename propagator_state_t,
typename stepper_t>
71 void operator()(propagator_state_t& state,
const stepper_t& ,
77 state.navigation.navSurfaceIter =
78 state.navigation.navSurfaces.begin();
84 template <
typename propagator_state_t,
typename stepper_t>
86 const stepper_t& )
const {}
132 template <
typename propagator_state_t,
typename stepper_t>
134 const auto& logger = state.options.logger;
139 state.navigation.currentSurface =
nullptr;
141 ACTS_VERBOSE(std::distance(state.navigation.navSurfaceIter,
142 state.navigation.navSurfaces.end())
143 <<
" out of " << state.navigation.navSurfaces.size()
144 <<
" surfaces remain to try.");
147 if (state.navigation.navSurfaceIter !=
148 state.navigation.navSurfaces.end()) {
150 auto surfaceStatus = stepper.updateSurfaceStatus(
151 state.stepping, **state.navigation.navSurfaceIter,
false);
152 if (surfaceStatus == Intersection3D::Status::onSurface) {
154 state.navigation.currentSurface = *state.navigation.navSurfaceIter;
156 << state.navigation.currentSurface->geometryId())
158 ++state.navigation.navSurfaceIter;
159 if (state.navigation.navSurfaceIter !=
160 state.navigation.navSurfaces.end()) {
162 << (*state.navigation.navSurfaceIter)->geometryId());
163 stepper.releaseStepSize(state.stepping);
165 }
else if (surfaceStatus == Intersection3D::Status::reachable) {
167 << stepper.outputStepSize(state.stepping));
179 template <
typename propagator_state_t,
typename stepper_t>
181 const auto& logger = state.options.logger;
186 state.navigation.currentSurface =
nullptr;
188 ACTS_VERBOSE(std::distance(state.navigation.navSurfaceIter,
189 state.navigation.navSurfaces.end())
190 <<
" out of " << state.navigation.navSurfaces.size()
191 <<
" surfaces remain to try.");
193 if (state.navigation.navSurfaceIter !=
194 state.navigation.navSurfaces.end()) {
196 auto surfaceStatus = stepper.updateSurfaceStatus(
197 state.stepping, **state.navigation.navSurfaceIter,
false);
198 if (surfaceStatus == Intersection3D::Status::unreachable) {
200 "Surface not reachable anymore, switching to next one in "
203 ++state.navigation.navSurfaceIter;
206 << stepper.outputStepSize(state.stepping));
210 state.navigation.navigationBreak =
true;
212 if (state.navigation.targetSurface ==
nullptr) {
213 state.navigation.targetReached =
true;