- // Update track parameters covariances if any
- if (trackParam->CovariancesExist()) {
- TMatrixD paramCov(trackParam->GetCovariances());
- paramCov(0,0) += dZ * dZ * paramCov(1,1) + 2. * dZ * paramCov(0,1);
- paramCov(0,1) += dZ * paramCov(1,1);
- paramCov(1,0) = paramCov(0,1);
- paramCov(2,2) += dZ * dZ * paramCov(3,3) + 2. * dZ * paramCov(2,3);
- paramCov(2,3) += dZ * paramCov(3,3);
- paramCov(3,2) = paramCov(2,3);
- trackParam->SetCovariances(paramCov);
-
- // Update the propagator if required
- if (updatePropagator) {
- TMatrixD jacob(5,5);
- jacob.UnitMatrix();
- jacob(0,1) = dZ;
- jacob(2,3) = dZ;
- trackParam->UpdatePropagator(jacob);
- }
-
+ if (trackParam->GetZ() == zEnd) return; // nothing to be done if same z
+
+ // No need to propagate the covariance matrix if it does not exist
+ if (!trackParam->CovariancesExist()) {
+ cout<<"W-AliMUONTrackExtrap::LinearExtrapToZCov: Covariance matrix does not exist"<<endl;
+ // Extrapolate linearly track parameters to "zEnd"
+ LinearExtrapToZ(trackParam,zEnd);
+ return;