143 ATH_MSG_WARNING(
"No highest TrackingVolume / no VolumeBounds ... pretty useless! ");
144 return StatusCode::SUCCESS;
197 surfacePhi *= (
m_flatDist->shoot() > 0.5 ) ? -1. : 1.;
204 alphaZ *= (
m_flatDist->shoot() > 0.5 ) ? -1. : 1.;
218 covariance.setZero();
241 std::move(covariance));
244 if(startParameters.covariance())
ATH_MSG_VERBOSE(
"Start Covariance : \n" << *startParameters.covariance() );
252 CylTrf.setIdentity();
259 if (!estimationParameters) {
260 ATH_MSG_VERBOSE(
"Estimation of intersection did not work - skip event !" );
261 return StatusCode::SUCCESS;
264 ATH_MSG_VERBOSE(
"Estimation of intersection is outside the known world - skip event !" );
265 delete estimationParameters;
266 return StatusCode::SUCCESS;
280 if(estimationParameters->covariance()){
306 delete estimationParameters; estimationParameters =
nullptr;
316 ATH_MSG_VERBOSE(
"Extrapolation to Destination Surface: " << destinationSurface );
331 const std::vector<const Trk::TrackStateOnSurface*>*
340 if (collectedMaterial && !collectedMaterial->empty()){
346 for (
const auto* tsos : *collectedMaterial) {
373 if(destParameters->covariance()){
409 const std::vector<const Trk::TrackStateOnSurface*>*
417 if (collectedBackMaterial && !collectedBackMaterial->empty()){
424 for (
const auto* tsos : *collectedBackMaterial) {
452 if(backParameters->covariance()){
469 delete backParameters;
473 delete destParameters;
487 return StatusCode::SUCCESS;
505 Amg::Vector3D surfaceYdirection(zAxis.cross(surfaceZdirection));
507 Amg::Vector3D surfaceXdirection(surfaceYdirection.cross(surfaceZdirection));
509 double nx = 1./sqrt(surfaceXdirection[0]*surfaceXdirection[0]+surfaceXdirection[1]*surfaceXdirection[1]+surfaceXdirection[2]*surfaceXdirection[2]);
510 double ny = 1./sqrt(surfaceYdirection[0]*surfaceYdirection[0]+surfaceYdirection[1]*surfaceYdirection[1]+surfaceYdirection[2]*surfaceYdirection[2]);
511 surfaceXdirection[0]*=nx;
512 surfaceXdirection[1]*=nx;
513 surfaceXdirection[2]*=nx;
515 surfaceYdirection[0]*=ny;
516 surfaceYdirection[1]*=ny;
517 surfaceYdirection[2]*=ny;
520 surfaceRotation.col(0) = surfaceXdirection;
521 surfaceRotation.col(1) = surfaceYdirection;
522 surfaceRotation.col(2) = surfaceZdirection;