18 declareInterface<Trk::IExtrapolationEngine>(
this);
29 m_sopPrefix = m_sopPrefix_prop;
30 m_sopPostfix = m_sopPostfix_prop;
32 if (m_propagator.retrieve().isFailure()){
33 EX_MSG_FATAL(
"",
"initialize",
"",
"failed to retrieve propagator '"<< m_propagator <<
"'. Aborting." );
34 return StatusCode::FAILURE;
36 EX_MSG_DEBUG(
"",
"initialize",
"",
"successfully retrieved '" << m_propagator <<
"'." );
38 if (m_materialEffectsEngine.retrieve().isFailure()){
39 EX_MSG_FATAL(
"",
"initialize",
"",
"failed to retrieve material effect engine '"<< m_materialEffectsEngine <<
"'. Aborting." );
40 return StatusCode::FAILURE;
42 EX_MSG_DEBUG(
"",
"initialize",
"",
"successfully retrieved '" << m_materialEffectsEngine <<
"'." );
44 if (m_navigationEngine.retrieve().isFailure()){
45 EX_MSG_FATAL(
"",
"initialize",
"",
"failed to retrieve navigation engine '"<< m_navigationEngine <<
"'. Aborting." );
46 return StatusCode::FAILURE;
48 EX_MSG_DEBUG(
"",
"initialize",
"",
"successfully retrieved '" << m_navigationEngine <<
"'." );
52 m_targetSurfaces.setDebugModeOff();
54 return StatusCode::SUCCESS;
61 return StatusCode::SUCCESS;
95 exC = m_targetSurfaces.setOnInput(ecCharged,
sf,bcheck);
121 Gaudi::Hive::currentContext(),
137 m_targetSurfaces.setDebugModeOn();
191 eVol = targetSurfacesT(ecNeutral,
ts,
true,
sf,bcheck);
200 eVol = targetSurfacesT(ecNeutral,
ts,
true,
sf,bcheck);
206 for (
auto &
t :
ts) {
225 if (!stopAtThisBoundary)
237 if (stopAtThisBoundary){
262 double dist = distSol.
first();
268 if (trueOrdered && !
tt.surf->isOnSurface(posi,
tt.bcheck,m_tolerance,m_tolerance) )
return;
270 tt.setDistance(dist,fabs(dAbs),distSol.
signedDistance() && dAbs!=0. ? dAbs/fabs(dAbs) : 0.);
271 tt.setPosition(posi);
276 if (!trueOrdered || dist>m_tolerance ) {
278 tt.setDistance(dist,fabs(dAbs),distSol.
signedDistance() && dAbs!=0. ? dAbs/fabs(dAbs) : 0.);
279 tt.setPosition(posi);
287 if (
tt.surf->isOnSurface(posi,
tt.bcheck,m_tolerance,m_tolerance) ) {
289 tt.setDistance(dist,fabs(dAbs),distSol.
signedDistance() && dAbs!=0. ? dAbs/fabs(dAbs) : 0.);
290 tt.setPosition(posi);
301 for (
const auto & thisSurface : solutions){
308 return resolveFrameBoundaryT(ecCharged,ecCharged.
leadParameters->position(),