diff --git a/reco/L1/CbmL1Performance.cxx b/reco/L1/CbmL1Performance.cxx
index 08af527039f4af81a7413be052c17aaadd2abff2..87090be90e3134b64402b37088421a74676e5734 100644
--- a/reco/L1/CbmL1Performance.cxx
+++ b/reco/L1/CbmL1Performance.cxx
@@ -1240,7 +1240,7 @@ void CbmL1::TrackFitPerformance()
 
       CbmL1MCPoint& mcP = fvMCPoints[mc.Points[0]];
 
-      fit.Extrapolate(mcP.zIn, fit.fQp0, fld, fvec::One());
+      fit.Extrapolate(mcP.zIn, fld, fvec::One());
 
       double dx = tr.x[0] - mcP.xIn;
       double dy = tr.y[0] - mcP.yIn;
@@ -1346,7 +1346,7 @@ void CbmL1::TrackFitPerformance()
       const L1TrackPar& tr = fit.fTr;
 
       CbmL1MCPoint& mcP = fvMCPoints[iMC];
-      fit.Extrapolate(mcP.zOut, fit.fQp0, fld, fvec::One());
+      fit.Extrapolate(mcP.zOut, fld, fvec::One());
 
       h_fitL[0]->Fill((tr.x[0] - mcP.xOut) * 1.e4);
       h_fitL[1]->Fill((tr.y[0] - mcP.yOut) * 1.e4);
@@ -1407,7 +1407,7 @@ void CbmL1::TrackFitPerformance()
         {  // extrapolate to vertex
           L1FieldRegion fld _fvecalignment;
           fld.SetUseOriginalField();
-          fit.Extrapolate(mc.z, fit.fQp0, fld, fvec::One());
+          fit.Extrapolate(mc.z, fld, fvec::One());
           // add material
           const int fSta = fvHitStore[it->Hits[0]].iStation;
           const int dir  = int((mc.z - fpAlgo->GetParameters()->GetStation(fSta).fZ[0])
@@ -1469,14 +1469,14 @@ void CbmL1::TrackFitPerformance()
                                       && (dir * (mc.z - fpAlgo->GetParameters()->GetStation(iSta).fZ[0]) > 0);
                iSta += dir) {
 
-            fit.Extrapolate(fpAlgo->GetParameters()->GetStation(iSta).fZ, fit.fQp0, fld, fvec::One());
+            fit.Extrapolate(fpAlgo->GetParameters()->GetStation(iSta).fZ, fld, fvec::One());
 
             fit.AddMsInMaterial(fpAlgo->GetParameters()->GetMaterialThickness(iSta, fit.fTr.x, fit.fTr.y), fit.fQp0,
                                 fvec::One());
             fit.EnergyLossCorrection(fpAlgo->GetParameters()->GetMaterialThickness(iSta, fit.fTr.x, fit.fTr.y),
                                      fit.fQp0, fvec::One(), fvec::One());
           }
-          fit.Extrapolate(mc.z, fit.fQp0, fld, fvec::One());
+          fit.Extrapolate(mc.z, fld, fvec::One());
         }
         if (mc.z != tr.z[0]) continue;
 
diff --git a/reco/L1/L1Algo/L1BranchExtender.cxx b/reco/L1/L1Algo/L1BranchExtender.cxx
index 770db8283a91548ed4a70a61f3772cfe68560854..7c912c2c6fbed9e033da67c9d5d12bbb1280b75f 100644
--- a/reco/L1/L1Algo/L1BranchExtender.cxx
+++ b/reco/L1/L1Algo/L1BranchExtender.cxx
@@ -119,7 +119,7 @@ void L1Algo::BranchFitterFast(const L1Branch& t, L1TrackPar& Tout, const bool di
 
     const L1Station& sta = fParameters.GetStation(ista);
 
-    fit.Extrapolate(hit.z, fit.fQp0, fld, fvec::One());
+    fit.Extrapolate(hit.z, fld, fvec::One());
     fit.Filter(sta.frontInfo, hit.u, hit.du2, fvec::One());
     fit.Filter(sta.backInfo, hit.v, hit.dv2, fvec::One());
     fit.FilterTime(hit.t, hit.dt2, fvec::One(), sta.timeInfo);
@@ -216,7 +216,7 @@ void L1Algo::FindMoreHits(L1Branch& t, L1TrackPar& Tout, const bool dir,
 
     const L1Station& sta = fParameters.GetStation(ista);
 
-    fit.Extrapolate(sta.fZ, fit.fQp0, fld, fvec::One());
+    fit.Extrapolate(sta.fZ, fld, fvec::One());
 
     fscal r2_best = 1e8;  // best distance to hit
     int iHit_best = -1;   // index of the best hit
@@ -288,7 +288,7 @@ void L1Algo::FindMoreHits(L1Branch& t, L1TrackPar& Tout, const bool dir,
 
     auto [x, y] = sta.ConvUVtoXY<fvec>(hit.u, hit.v);
 
-    fit.Extrapolate(hit.z, fit.fQp0, fld, fvec::One());
+    fit.Extrapolate(hit.z, fld, fvec::One());
     fit.Filter(sta.frontInfo, hit.u, hit.du2, fvec::One());
     fit.Filter(sta.backInfo, hit.v, hit.dv2, fvec::One());
     fit.FilterTime(hit.t, hit.dt2, fvec::One(), sta.timeInfo);
diff --git a/reco/L1/L1Algo/L1CATrackFinder.cxx b/reco/L1/L1Algo/L1CATrackFinder.cxx
index 868a7354dee5308b992e65c902cb63cbfca6974f..0fadecf1e87297f62289b512b0bde42d7d3fb7af 100644
--- a/reco/L1/L1Algo/L1CATrackFinder.cxx
+++ b/reco/L1/L1Algo/L1CATrackFinder.cxx
@@ -415,7 +415,6 @@ inline void L1Algo::findDoubletsStep0(
       // check x-boundaries
       fvec x, C00;
       fit.ExtrapolateXC00Line(zm, x, C00);
-      //L1ExtrapolateXC00Line(T1, zm, x, C00);
 
       fscal dx_est2 = Pick_m22[i1_4] * fabs(C00[i1_4] + dxxScalMhit);
 
@@ -426,7 +425,6 @@ inline void L1Algo::findDoubletsStep0(
       // check chi2
       fvec C10;
       fit.ExtrapolateC10Line(zm, C10);
-      //L1ExtrapolateC10Line(T1, zm, C10);
 
       fvec chi2 = T1.chi2;
 
@@ -629,7 +627,7 @@ inline void L1Algo::findTripletsStep0(  // input
 
     // extrapolate to the right hit station
 
-    fit.Extrapolate(star.fZ, fit.fQp0, f2, fvec::One());
+    fit.Extrapolate(star.fZ, f2, fvec::One());
 
     // assert(T2.IsConsistent(true, n2_4));
 
@@ -706,7 +704,6 @@ inline void L1Algo::findTripletsStep0(  // input
         // check lower boundary
         fvec y, C11;
         fit3.ExtrapolateYC11Line(zr, y, C11);
-        //L1ExtrapolateYC11Line(T2, zr, y, C11);
 
         /// Covariation matrix of the hit
         auto [dxxScalRhit, dxyScalRhit, dyyScalRhit] = star.FormXYCovarianceMatrix(hitr.dU2(), hitr.dV2());
@@ -936,9 +933,9 @@ inline void L1Algo::findTripletsStep2(Tindex n3, int istal, int istam, int istar
     for (int iiter = 0; iiter < nIterations; ++iiter) {
       // fit forward
       {
-        fvec qp0 = T.qp;
-        if (qp0[0] > GetMaxInvMom()) { qp0 = GetMaxInvMom(); }
-        if (qp0[0] < -GetMaxInvMom()) { qp0 = -GetMaxInvMom(); }
+        fit.fQp0 = T.qp;
+        if (fit.fQp0[0] > GetMaxInvMom()) { fit.fQp0 = GetMaxInvMom(); }
+        if (fit.fQp0[0] < -GetMaxInvMom()) { fit.fQp0 = -GetMaxInvMom(); }
 
         T.ResetErrors(200., 200., 1., 1., 100., 1.e4);
         //T.ResetErrors(200., 200., 10., 10., 100., 1.e4);
@@ -960,9 +957,8 @@ inline void L1Algo::findTripletsStep2(Tindex n3, int istal, int istam, int istar
         fit.AddTargetToLine(fTargX, fTargY, fTargZ, TargetXYInfo, fldTarget);
 
         for (int ih = 1; ih < NHits; ++ih) {
-          fit.Extrapolate(z[ih], qp0, fld, fvec::One());
-          fit.AddMsInMaterial(fParameters.GetMaterialThickness(ista[ih], T.x, T.y), qp0, fvec::One());
-          //if (ista[ih] == fNstationsBeforePipe) { fit.AddPipeMaterial(qp0, fvec::One()); }
+          fit.Extrapolate(z[ih], fld, fvec::One());
+          fit.AddMsInMaterial(fParameters.GetMaterialThickness(ista[ih], T.x, T.y), fit.fQp0, fvec::One());
           fit.Filter(sta[ih].frontInfo, u[ih], du2[ih], fvec::One());
           fit.Filter(sta[ih].backInfo, v[ih], dv2[ih], fvec::One());
           fit.FilterTime(t[ih], dt2[ih], fvec::One(), sta[ih].timeInfo);
@@ -973,9 +969,9 @@ inline void L1Algo::findTripletsStep2(Tindex n3, int istal, int istam, int istar
 
       // fit backward
       {
-        fvec qp0 = T.qp;
-        if (qp0[0] > GetMaxInvMom()) { qp0 = GetMaxInvMom(); }
-        if (qp0[0] < -GetMaxInvMom()) { qp0 = -GetMaxInvMom(); }
+        fit.fQp0 = T.qp;
+        if (fit.fQp0[0] > GetMaxInvMom()) { fit.fQp0 = GetMaxInvMom(); }
+        if (fit.fQp0[0] < -GetMaxInvMom()) { fit.fQp0 = -GetMaxInvMom(); }
 
         T.ResetErrors(200., 200., 1., 1., 100., 1.e4);
         T.NDF   = ndf;
@@ -990,15 +986,14 @@ inline void L1Algo::findTripletsStep2(Tindex n3, int istal, int istam, int istar
         //std::tie(T.C00, T.C10, T.C11) = sta[ih0].FormXYCovarianceMatrix(du2[ih0], dv2[ih0]);
         fit.Filter(sta[ih0].frontInfo, u[ih0], du2[ih0], fvec::One());
         fit.Filter(sta[ih0].backInfo, v[ih0], dv2[ih0], fvec::One());
-        //fit.FilterTime(t[ih0], dt[ih0], fvec::One(), sta[ih0].timeInfo);
+        fit.FilterTime(t[ih0], dt2[ih0], fvec::One(), sta[ih0].timeInfo);
 
         for (int ih = NHits - 2; ih >= 0; --ih) {
-          fit.Extrapolate(z[ih], qp0, fld, fvec::One());
-          fit.AddMsInMaterial(fParameters.GetMaterialThickness(ista[ih], T.x, T.y), qp0, fvec::One());
-          //if (ista[ih] == fNstationsBeforePipe - 1) { fit.AddPipeMaterial(qp0, fvec::One()); }
+          fit.Extrapolate(z[ih], fld, fvec::One());
+          fit.AddMsInMaterial(fParameters.GetMaterialThickness(ista[ih], T.x, T.y), fit.fQp0, fvec::One());
           fit.Filter(sta[ih].frontInfo, u[ih], du2[ih], fvec::One());
           fit.Filter(sta[ih].backInfo, v[ih], dv2[ih], fvec::One());
-          //fit.FilterTime(t[ih], dt[ih], fvec::One(), sta[ih].timeInfo);
+          fit.FilterTime(t[ih], dt2[ih], fvec::One(), sta[ih].timeInfo);
         }
       }
     }  // for iiter
diff --git a/reco/L1/L1Algo/L1CloneMerger.cxx b/reco/L1/L1Algo/L1CloneMerger.cxx
index 219410cae2a6e25b7ef34b0e10ed8c567d14b156..78cead9bb5f463415d67687a9bdcb0872ed1a72b 100644
--- a/reco/L1/L1Algo/L1CloneMerger.cxx
+++ b/reco/L1/L1Algo/L1CloneMerger.cxx
@@ -188,8 +188,8 @@ void L1CloneMerger::Exec(L1Vector<L1Track>& extTracks, L1Vector<L1HitIndex_t>& e
 
       fvec zMiddle = fvec(0.5) * (Tb.z + Tf.z);
 
-      fitF.Extrapolate(zMiddle, fitF.fQp0, fld, fvec::One());
-      fitB.Extrapolate(zMiddle, fitB.fQp0, fld, fvec::One());
+      fitF.Extrapolate(zMiddle, fld, fvec::One());
+      fitB.Extrapolate(zMiddle, fld, fvec::One());
 
       fvec Chi2Tracks(0.);
       FilterTracks(&(Tf.x), &(Tf.C00), &(Tb.x), &(Tb.C00), 0, 0, &Chi2Tracks);
diff --git a/reco/L1/L1Algo/L1TrackFitter.cxx b/reco/L1/L1Algo/L1TrackFitter.cxx
index 3926955a1f411d72715d5a11a91db83dd8b2622c..a07fa6e64f7a86c101dc1416ff5d97fcf2aab7fb 100644
--- a/reco/L1/L1Algo/L1TrackFitter.cxx
+++ b/reco/L1/L1Algo/L1TrackFitter.cxx
@@ -219,7 +219,7 @@ void L1Algo::L1KFTrackFitter()
 
     for (int iter = 0; iter < 2; iter++) {  // 1.5 iterations
 
-      fvec qp01 = tr.qp;
+      fit.fQp0 = tr.qp;
 
       // fit backward
 
@@ -257,16 +257,11 @@ void L1Algo::L1KFTrackFitter()
 
         fld1 = fld;
 
-        fit.Extrapolate(z[ista], qp01, fld1, wExtr);
+        fit.Extrapolate(z[ista], fld1, wExtr);
 
+        fit.AddMsInMaterial(fParameters.GetMaterialThickness(ista, tr.x, tr.y), fit.fQp0, wExtr);
 
-        //if (ista == fNstationsBeforePipe - 1) {
-        //fit.AddPipeMaterial(qp01, wExtr);
-        //fit.EnergyLossCorrection(fit.fPipeRadThick, qp01, fvec(1.f), wExtr);
-        //}
-        fit.AddMsInMaterial(fParameters.GetMaterialThickness(ista, tr.x, tr.y), qp01, wExtr);
-
-        fit.EnergyLossCorrection(fParameters.GetMaterialThickness(ista, tr.x, tr.y), qp01, fvec(1.f), wExtr);
+        fit.EnergyLossCorrection(fParameters.GetMaterialThickness(ista, tr.x, tr.y), fit.fQp0, fvec(1.f), wExtr);
 
         fit.Filter(sta[ista].frontInfo, u[ista], du2[ista], w1);
         fit.Filter(sta[ista].backInfo, v[ista], dv2[ista], w1);
@@ -293,19 +288,18 @@ void L1Algo::L1KFTrackFitter()
         vtxInfoY.sin_phi = 1.;
 
         if (kGlobal == fTrackingMode) {
-          fvec qp00 = tr.qp;
           for (int vtxIter = 0; vtxIter < 2; vtxIter++) {
-            fitpv        = fit;
-            fitpv.fTr.qp = qp00;
-            fitpv.Extrapolate(fParameters.GetTargetPositionZ(), fitpv.fTr.qp, fld, fvec(1.));
+            fitpv.fQp0   = fitpv.fTr.qp;
+            fitpv.fTr    = fit.fTr;
+            fitpv.fTr.qp = fitpv.fQp0;
+            fitpv.Extrapolate(fParameters.GetTargetPositionZ(), fld, fvec(1.));
             fitpv.Filter(vtxInfoX, fParameters.GetTargetPositionX(), fvec(1.e-8), fvec::One());
             fitpv.Filter(vtxInfoY, fParameters.GetTargetPositionY(), fvec(1.e-8), fvec::One());
-            qp00 = fitpv.fTr.qp;
           }
         }
         else {
-          fitpv = fit;
-          fitpv.Extrapolate(fParameters.GetTargetPositionZ(), fitpv.fTr.qp, fld, fvec(1.));
+          fitpv.fQp0 = fitpv.fTr.qp;
+          fitpv.Extrapolate(fParameters.GetTargetPositionZ(), fld, fvec(1.));
         }
       }
 
@@ -387,7 +381,7 @@ void L1Algo::L1KFTrackFitter()
 
       FilterFirst(fit, x_first, y_first, time_first, dt2_first, d_xx_fst, d_yy_fst, d_xy_fst);
 
-      qp01 = tr.qp;
+      fit.fQp0 = tr.qp;
 
       fldZ1 = z[ista];
       sta[ista].fieldSlice.GetFieldValue(tr.x, tr.y, fldB1);
@@ -411,14 +405,10 @@ void L1Algo::L1KFTrackFitter()
         fvec w1_time      = iif(initialised, w_time[ista], fvec::Zero());
         fvec wExtr        = iif(initialised, fvec::One(), fvec::Zero());
 
-        fit.Extrapolate(z[ista], qp01, fld, w1);
+        fit.Extrapolate(z[ista], fld, w1);
 
-        //if (ista == fNstationsBeforePipe) {
-        //fit.AddPipeMaterial(qp01, wExtr);
-        //fit.EnergyLossCorrection(fit.fPipeRadThick, qp01, fvec(-1.f), wExtr);
-        //}
-        fit.AddMsInMaterial(fParameters.GetMaterialThickness(ista, tr.x, tr.y), qp01, wExtr);
-        fit.EnergyLossCorrection(fParameters.GetMaterialThickness(ista, tr.x, tr.y), qp01, fvec(-1.f), wExtr);
+        fit.AddMsInMaterial(fParameters.GetMaterialThickness(ista, tr.x, tr.y), fit.fQp0, wExtr);
+        fit.EnergyLossCorrection(fParameters.GetMaterialThickness(ista, tr.x, tr.y), fit.fQp0, fvec(-1.f), wExtr);
 
         fit.Filter(sta[ista].frontInfo, u[ista], du2[ista], w1);
         fit.Filter(sta[ista].backInfo, v[ista], dv2[ista], w1);
diff --git a/reco/L1/L1Algo/L1TrackParFit.cxx b/reco/L1/L1Algo/L1TrackParFit.cxx
index 817b036a2a775011639fd2e9679f7ffb03e01db6..27b328619e347a5aab6792317693e7d9df81a977 100644
--- a/reco/L1/L1Algo/L1TrackParFit.cxx
+++ b/reco/L1/L1Algo/L1TrackParFit.cxx
@@ -305,23 +305,25 @@ void L1TrackParFit::FilterExtrapolatedXY(const fvec& x, const fvec& y, const L1X
 
 void L1TrackParFit::Extrapolate  // extrapolates track parameters and returns jacobian for extrapolation of CovMatrix
   (fvec z_out,                   // extrapolate to this z position
-   fvec qp0,                     // use Q/p linearisation at this value
    const L1FieldRegion& F, const fvec& w)
 {
+  // use Q/p linearisation at fQp0
+
   fvec sgn = iif(fTr.z < z_out, fvec(1.), fvec(-1.));
   while (!(w * abs(z_out - fTr.z) <= fvec(1.e-6)).isFull()) {
     fvec zNew                              = fTr.z + sgn * fvec(50.);  // max. 50 cm step
     zNew(sgn * (z_out - zNew) <= fvec(0.)) = z_out;
-    ExtrapolateStep(zNew, qp0, F, w);
+    ExtrapolateStep(zNew, F, w);
   }
 }
 
 void
   L1TrackParFit::ExtrapolateStep  // extrapolates track parameters and returns jacobian for extrapolation of CovMatrix
   (fvec z_out,                    // extrapolate to this z position
-   fvec qp0,                      // use Q/p linearisation at this value
    const L1FieldRegion& F, const fvec& w)
 {
+  // use Q/p linearisation at fQp0
+
   //
   // Forth-order Runge-Kutta method for solution of the equation
   // of motion of a particle with parameter qp = Q /P
@@ -407,7 +409,7 @@ void
       fvec L2i   = fvec(1.) / L2;
       fvec L     = sqrt(L2);
       fvec cL    = c_light * L;
-      fvec cLqp0 = cL * qp0;
+      fvec cLqp0 = cL * fQp0;
 
       f0[step] = tx;
       f1[step] = ty;
@@ -425,11 +427,11 @@ void
       f3_qp[step] = cL * f3tmp;
 
       fvec m2     = fMass2;
-      fvec vi     = sqrt(fvec(1.) + m2 * qp0 * qp0) / fvec(29.9792458f);
+      fvec vi     = sqrt(fvec(1.) + m2 * fQp0 * fQp0) / fvec(29.9792458f);
       f4[step]    = vi * L;
       f4_tx[step] = vi * tx / L;
       f4_ty[step] = vi * ty / L;
-      f4_qp[step] = (m2 * qp0) * (L / sqrt(fvec(1.) + m2 * qp0 * qp0) / fvec(29.9792458f));
+      f4_qp[step] = (m2 * fQp0) * (L / sqrt(fvec(1.) + m2 * fQp0 * fQp0) / fvec(29.9792458f));
 
       k[step + 1][0] = f0[step];
       k[step + 1][1] = f1[step];
@@ -519,7 +521,7 @@ void
   fvec Jt[5] = {0., 0., 0., 0., 1.};  // D new { x,y,tx,ty,t } / D old t
 
   {  // update parameters
-    fvec dqp = qp_in - qp0;
+    fvec dqp = qp_in - fQp0;
     fTr.x += Jqp[0] * dqp;
     fTr.y += Jqp[1] * dqp;
     fTr.tx += Jqp[2] * dqp;
@@ -658,12 +660,12 @@ void
 void L1TrackParFit::
   ExtrapolateStepAnalytic  // extrapolates track parameters and returns jacobian for extrapolation of CovMatrix
   (fvec z_out,             // extrapolate to this z position
-   fvec qp0,               // use Q/p linearisation at this value
    const L1FieldRegion& F, const fvec& w)
 {
   //
   //  Part of the analytic extrapolation formula with error (c_light*B*dz)^4/4!
   //
+  //  use Q/p linearisation at fQp0
 
   // TODO: the time parameter is not extrapolated!
 
@@ -714,7 +716,7 @@ void L1TrackParFit::
 
   const fvec t2 = c1 + xx + yy;
   const fvec t  = sqrt(t2);
-  const fvec h  = qp0 * c_light;
+  const fvec h  = fQp0 * c_light;
   const fvec ht = h * t;
 
   // get field integrals
@@ -847,7 +849,7 @@ void L1TrackParFit::
   const fvec ctdz  = c_light * t * dz;
   const fvec ctdz2 = c_light * t * dz2;
 
-  const fvec dqp  = qp - qp0;
+  const fvec dqp  = qp - fQp0;
   const fvec t2i  = c1 / t2;
   const fvec xt2i = x * t2i;
   const fvec yt2i = y * t2i;
@@ -925,10 +927,11 @@ void L1TrackParFit::
 void L1TrackParFit::ExtrapolateLine(fvec z_out, const L1FieldRegion& F, const fvec& w)
 {
   // extrapolate the track assuming fQp0 == 0
+  // TODO: write special simplified procedure
   //
   auto qp0 = fQp0;
   fQp0     = fvec(0.);
-  Extrapolate(z_out, fQp0, F, w);
+  Extrapolate(z_out, F, w);
   fQp0 = qp0;
 }
 
diff --git a/reco/L1/L1Algo/L1TrackParFit.h b/reco/L1/L1Algo/L1TrackParFit.h
index 3a85a17f20469329d87a90de9f4e50ac88c54c6b..106a3b2ec5e7183e8a8195e5cb197adbba61549e 100644
--- a/reco/L1/L1Algo/L1TrackParFit.h
+++ b/reco/L1/L1Algo/L1TrackParFit.h
@@ -65,9 +65,10 @@ public:
   void FilterExtrapolatedXY(const fvec& x, const fvec& y, const L1XYMeasurementInfo& info, const fvec& extrX,
                             const fvec& extrY, const fvec Jx[6], const fvec Jy[6]);
 
-  void Extrapolate(fvec z_out, fvec qp0, const L1FieldRegion& F, const fvec& w);
-  void ExtrapolateStep(fvec z_out, fvec qp0, const L1FieldRegion& F, const fvec& w);
-  void ExtrapolateStepAnalytic(fvec z_out, fvec qp0, const L1FieldRegion& F, const fvec& w);
+  void Extrapolate(fvec z_out, const L1FieldRegion& F, const fvec& w);
+
+  void ExtrapolateStep(fvec z_out, const L1FieldRegion& F, const fvec& w);
+  void ExtrapolateStepAnalytic(fvec z_out, const L1FieldRegion& F, const fvec& w);
   void ExtrapolateLine(fvec z_out, const fvec& w);
   void ExtrapolateLine(fvec z_out, const L1FieldRegion& F, const fvec& w);
 
diff --git a/reco/L1/ParticleFinder/CbmL1PFFitter.cxx b/reco/L1/ParticleFinder/CbmL1PFFitter.cxx
index b5f16dc2d222d99c2d2b9c52c139407b00c180c9..3cfbf8665c5f155a8289a1f91239dafeb2e69a75 100644
--- a/reco/L1/ParticleFinder/CbmL1PFFitter.cxx
+++ b/reco/L1/ParticleFinder/CbmL1PFFitter.cxx
@@ -323,7 +323,7 @@ void CbmL1PFFitter::Fit(vector<CbmStsTrack>& Tracks, vector<int>& pidHypo)
       fvec w1           = iif(initialised, w[i], fvec::Zero());
       fvec wIn          = iif(initialised, fvec::One(), fvec::Zero());
 
-      fit.Extrapolate(z[i], fit.fQp0, fld, w1);
+      fit.Extrapolate(z[i], fld, w1);
       auto radThick = CbmL1::Instance()->fpAlgo->GetParameters()->GetMaterialThickness(i, fit.fTr.x, fit.fTr.y);
       fit.Filter(sta[i].frontInfo, u[i], du2[i], w1);
       fit.Filter(sta[i].backInfo, v[i], dv2[i], w1);
@@ -392,7 +392,7 @@ void CbmL1PFFitter::Fit(vector<CbmStsTrack>& Tracks, vector<int>& pidHypo)
       fvec w1           = iif(initialised, w[i], fvec::Zero());
       fvec wIn          = iif(initialised, fvec::One(), fvec::Zero());
 
-      fit.Extrapolate(z[i], fit.fQp0, fld, w1);
+      fit.Extrapolate(z[i], fld, w1);
       auto radThick = CbmL1::Instance()->fpAlgo->GetParameters()->GetMaterialThickness(i, fit.fTr.x, fit.fTr.y);
       fit.Filter(sta[i].frontInfo, u[i], du2[i], w1);
       fit.Filter(sta[i].backInfo, v[i], dv2[i], w1);
@@ -556,12 +556,12 @@ void CbmL1PFFitter::GetChiToVertex(vector<CbmStsTrack>& Tracks, vector<PFFieldRe
 
       fvec w = iif(T.z > (zSta[iSt] + fvec(2.5)), fvec::One(), fvec::Zero());
 
-      fit.Extrapolate(zSta[iSt], fit.fQp0, fld, w);
+      fit.Extrapolate(zSta[iSt], fld, w);
       auto radThick = CbmL1::Instance()->fpAlgo->GetParameters()->GetMaterialThickness(iSt, fit.fTr.x, fit.fTr.y);
       fit.AddMsInMaterial(radThick, fit.fQp0, w);
       fit.EnergyLossCorrection(radThick, fit.fQp0, fvec::One(), w);
     }
-    fit.Extrapolate(primVtx.GetRefZ(), fit.fQp0, fld, fvec::One());
+    fit.Extrapolate(primVtx.GetRefZ(), fld, fvec::One());
     fit.AddMsInMaterial(fit.GetTargetRadThick(), fit.fQp0, fvec::One());
     fit.EnergyLossCorrection(fit.GetTargetRadThick(), fit.fQp0, fvec::One(), fvec::One());