134 const EventContext& ctx = Gaudi::Hive::currentContext();
144 ATH_MSG_WARNING(
"No highest TrackingVolume / no VolumeBounds ... pretty useless! ");
145 return StatusCode::SUCCESS;
198 surfacePhi *= (
m_flatDist->shoot() > 0.5 ) ? -1. : 1.;
205 alphaZ *= (
m_flatDist->shoot() > 0.5 ) ? -1. : 1.;
219 covariance.setZero();
242 std::move(covariance));
245 if(startParameters.covariance())
ATH_MSG_VERBOSE(
"Start Covariance : \n" << *startParameters.covariance() );
253 CylTrf.setIdentity();
260 if (!estimationParameters) {
261 ATH_MSG_VERBOSE(
"Estimation of intersection did not work - skip event !" );
262 return StatusCode::SUCCESS;
265 ATH_MSG_VERBOSE(
"Estimation of intersection is outside the known world - skip event !" );
266 delete estimationParameters;
267 return StatusCode::SUCCESS;
281 if(estimationParameters->covariance()){
307 delete estimationParameters; estimationParameters =
nullptr;
317 ATH_MSG_VERBOSE(
"Extrapolation to Destination Surface: " << destinationSurface );
332 const std::vector<const Trk::TrackStateOnSurface*>*
341 if (collectedMaterial && !collectedMaterial->empty()){
347 for (
const auto* tsos : *collectedMaterial) {
374 if(destParameters->covariance()){
410 const std::vector<const Trk::TrackStateOnSurface*>*
418 if (collectedBackMaterial && !collectedBackMaterial->empty()){
425 for (
const auto* tsos : *collectedBackMaterial) {
453 if(backParameters->covariance()){
470 delete backParameters;
474 delete destParameters;
488 return StatusCode::SUCCESS;
506 Amg::Vector3D surfaceYdirection(zAxis.cross(surfaceZdirection));
508 Amg::Vector3D surfaceXdirection(surfaceYdirection.cross(surfaceZdirection));
510 double nx = 1./sqrt(surfaceXdirection[0]*surfaceXdirection[0]+surfaceXdirection[1]*surfaceXdirection[1]+surfaceXdirection[2]*surfaceXdirection[2]);
511 double ny = 1./sqrt(surfaceYdirection[0]*surfaceYdirection[0]+surfaceYdirection[1]*surfaceYdirection[1]+surfaceYdirection[2]*surfaceYdirection[2]);
512 surfaceXdirection[0]*=nx;
513 surfaceXdirection[1]*=nx;
514 surfaceXdirection[2]*=nx;
516 surfaceYdirection[0]*=ny;
517 surfaceYdirection[1]*=ny;
518 surfaceYdirection[2]*=ny;
521 surfaceRotation.col(0) = surfaceXdirection;
522 surfaceRotation.col(1) = surfaceYdirection;
523 surfaceRotation.col(2) = surfaceZdirection;