18 m_materialEffectsEngine(
""),
19 m_navigationEngine(
""),
24 declareInterface<Trk::IExtrapolationEngine>(
this);
43 if (m_propagator.retrieve().isFailure()){
44 EX_MSG_FATAL(
"",
"initialize",
"",
"failed to retrieve propagator '"<< m_propagator <<
"'. Aborting." );
45 return StatusCode::FAILURE;
47 EX_MSG_DEBUG(
"",
"initialize",
"",
"successfully retrieved '" << m_propagator <<
"'." );
49 if (m_materialEffectsEngine.retrieve().isFailure()){
50 EX_MSG_FATAL(
"",
"initialize",
"",
"failed to retrieve material effect engine '"<< m_materialEffectsEngine <<
"'. Aborting." );
51 return StatusCode::FAILURE;
53 EX_MSG_DEBUG(
"",
"initialize",
"",
"successfully retrieved '" << m_materialEffectsEngine <<
"'." );
55 if (m_navigationEngine.retrieve().isFailure()){
56 EX_MSG_FATAL(
"",
"initialize",
"",
"failed to retrieve navigation engine '"<< m_navigationEngine <<
"'. Aborting." );
57 return StatusCode::FAILURE;
59 EX_MSG_DEBUG(
"",
"initialize",
"",
"successfully retrieved '" << m_navigationEngine <<
"'." );
63 m_targetSurfaces.setDebugModeOff();
65 return StatusCode::SUCCESS;
72 return StatusCode::SUCCESS;
106 exC = m_targetSurfaces.setOnInput(ecCharged,
sf,bcheck);
132 Gaudi::Hive::currentContext(),
148 m_targetSurfaces.setDebugModeOn();
202 eVol = targetSurfacesT(ecNeutral,
ts,
true,
sf,bcheck);
211 eVol = targetSurfacesT(ecNeutral,
ts,
true,
sf,bcheck);
217 for (
auto &
t :
ts) {
236 if (!stopAtThisBoundary)
248 if (stopAtThisBoundary){
273 double dist = distSol.
first();
279 if (trueOrdered && !
tt.surf->isOnSurface(posi,
tt.bcheck,m_tolerance,m_tolerance) )
return;
281 tt.setDistance(dist,fabs(dAbs),distSol.
signedDistance() && dAbs!=0. ? dAbs/fabs(dAbs) : 0.);
282 tt.setPosition(posi);
287 if (!trueOrdered || dist>m_tolerance ) {
289 tt.setDistance(dist,fabs(dAbs),distSol.
signedDistance() && dAbs!=0. ? dAbs/fabs(dAbs) : 0.);
290 tt.setPosition(posi);
298 if (
tt.surf->isOnSurface(posi,
tt.bcheck,m_tolerance,m_tolerance) ) {
300 tt.setDistance(dist,fabs(dAbs),distSol.
signedDistance() && dAbs!=0. ? dAbs/fabs(dAbs) : 0.);
301 tt.setPosition(posi);
312 for (
const auto & thisSurface : solutions){
319 return resolveFrameBoundaryT(ecCharged,ecCharged.
leadParameters->position(),