59 template <
typename propagator_state_t,
typename stepper_t>
62 if (state.navigation.currentSurface) {
63 if (state.navigation.currentSurface == state.navigation.targetSurface and
64 not state.navigation.targetReached) {
69 std::stringstream dstream;
70 dstream <<
"Material check on surface ";
71 dstream << state.navigation.currentSurface->geoID();
75 if (state.navigation.currentSurface->surfaceMaterial()) {
78 state.navigation.currentSurface->surfaceMaterial()->
material(
79 stepper.position(state.stepping));
83 if (state.navigation.startSurface ==
84 state.navigation.currentSurface) {
86 return std::string(
"Update on start surface: post-update mode.");
89 state.navigation.currentSurface->surfaceMaterial()->factor(
91 }
else if (state.navigation.targetSurface ==
92 state.navigation.currentSurface) {
94 return std::string(
"Update on target surface: pre-update mode");
97 state.navigation.currentSurface->surfaceMaterial()->factor(
101 return std::string(
"Update while pass through: full mode.");
109 return std::string(
"Pre/Post factor set material to zero.");
115 return std::string(
"Material properties found for this surface.");
120 prepofu * state.navigation.currentSurface->pathCorrection(
121 stepper.position(state.stepping),
122 stepper.direction(state.stepping));
128 std::stringstream dstream;
129 dstream <<
"t/X0 (t/L0) increased to ";
132 return dstream.str();
139 mHit.
surface = state.navigation.currentSurface;
140 mHit.
position = stepper.position(state.stepping);
141 mHit.
direction = stepper.direction(state.stepping);
155 template <
typename propagator_state_t>
170 template <
typename propagator_state_t>
173 if (state.options.debug) {
174 std::stringstream dstream;
175 dstream <<
" " << std::setw(state.options.debugPfxWidth);
176 dstream <<
"material collector"
178 dstream << std::setw(state.options.debugMsgWidth) << logAction() <<
'\n';
179 state.options.debugString += dstream.str();