diff --git a/reco/L1/L1Algo/L1CATrackFinder.cxx b/reco/L1/L1Algo/L1CATrackFinder.cxx
index 72a466526a48315681cca3fb800f42a4d064e5a4..5706968165f255f4708bda888d7fb05734a0b721 100644
--- a/reco/L1/L1Algo/L1CATrackFinder.cxx
+++ b/reco/L1/L1Algo/L1CATrackFinder.cxx
@@ -2655,39 +2655,36 @@ inline void L1Algo::CAFindTrack(int ista, L1Branch& best_tr, unsigned char& best
       if ((new_trip.GetMHit() != curr_trip->GetRHit())) continue;
       if ((new_trip.GetLHit() != curr_trip->GetMHit())) continue;
 
-      const fscal qp1 = curr_trip->GetQp();
-      const fscal qp2 = new_trip.GetQp();
-      fscal dqp       = fabs(qp1 - qp2);
-      fscal Cqp       = curr_trip->GetCqp() + new_trip.GetCqp();
+      fscal dqp = fabs(curr_trip->GetQp() - new_trip.GetQp());
+      fscal Cqp = curr_trip->GetCqp() + new_trip.GetCqp();
+
+      fscal dtx = fabs(curr_trip->GetTx() - new_trip.GetTx());
+      fscal Ctx = curr_trip->GetCtx() + new_trip.GetCtx();
+
+      fscal dty = fabs(curr_trip->GetTy() - new_trip.GetTy());
+      fscal Cty = curr_trip->GetCty() + new_trip.GetCty();
+
       if (kGlobal != fTrackingMode && kMcbm != fTrackingMode) {
+        if (!std::isfinite(dqp)) continue;
+        if (!std::isfinite(Cqp)) continue;
         if (dqp > fPickNeighbour * sqrt(Cqp)) {
           continue;  // bad neighbour // CHECKME why do we need recheck it?? (it really change result)
         }
       }
+      else {
 
-      fscal tx1 = curr_trip->GetTx();
-      fscal tx2 = new_trip.GetTx();
-      fscal dtx = fabs(tx1 - tx2);
-      fscal Ctx = curr_trip->GetCtx() + new_trip.GetCtx();
-
-      fscal ty1 = curr_trip->GetTy();
-      fscal ty2 = new_trip.GetTy();
-      fscal dty = fabs(ty1 - ty2);
-      fscal Cty = curr_trip->GetCty() + new_trip.GetCty();
-
-      // it shouldn't happen, but happens sometimes
+        // it shouldn't happen, but happens sometimes
 
-      if (!std::isfinite(dtx)) continue;
-      if (!std::isfinite(dty)) continue;
-      if (!std::isfinite(Ctx)) continue;
-      if (!std::isfinite(Cty)) continue;
+        if (!std::isfinite(dtx)) continue;
+        if (!std::isfinite(dty)) continue;
+        if (!std::isfinite(Ctx)) continue;
+        if (!std::isfinite(Cty)) continue;
 
-      assert(std::isfinite(dtx));
-      assert(std::isfinite(dty));
-      assert(std::isfinite(Ctx));
-      assert(std::isfinite(Cty));
+        assert(std::isfinite(dtx));
+        assert(std::isfinite(dty));
+        assert(std::isfinite(Ctx));
+        assert(std::isfinite(Cty));
 
-      if (kMcbm == fTrackingMode || kGlobal == fTrackingMode) {
         if (dty > fPickNeighbour * sqrt(Cty)) continue;
         if (dtx > fPickNeighbour * sqrt(Ctx)) continue;
       }
@@ -2707,18 +2704,17 @@ inline void L1Algo::CAFindTrack(int ista, L1Branch& best_tr, unsigned char& best
         unsigned char new_L = curr_L + 1;
         fscal new_chi2      = curr_chi2;
 
-        dqp = dqp / sqrt(Cqp);
-        dtx = dtx / sqrt(Ctx);
-        dty = dty / sqrt(Cty);
-
-        assert(std::isfinite(dtx));
-        assert(std::isfinite(dty));
-
         if (kGlobal == fTrackingMode || kMcbm == fTrackingMode) {
+          dtx = dtx / sqrt(Ctx);
+          dty = dty / sqrt(Cty);
+
+          assert(std::isfinite(dtx));
+          assert(std::isfinite(dty));
           new_chi2 += dtx * dtx;
           new_chi2 += dty * dty;
         }
         else {
+          dqp = dqp / sqrt(Cqp);
           new_chi2 += dqp * dqp;
         }