diff --git a/algo/ca/qa/CaQa.cxx b/algo/ca/qa/CaQa.cxx
index 8d081862c78d399aca6ec01d0dda38e432517185..b921d16813e9bae3f93e871810e3ea04c4272400 100644
--- a/algo/ca/qa/CaQa.cxx
+++ b/algo/ca/qa/CaQa.cxx
@@ -216,6 +216,11 @@ void Qa::Init()
       auto sTitl      = "First vs. last station index;ID^{last}_{station};ID^{first}_{station}";
       fphTrkFstLstSta = MakeObj<H2D>(sName, sTitl, nBins, xMin, xMax, nBins, xMin, xMax);
     }
+    {
+      auto sName     = format("{}_track_origin", GetTaskName());
+      auto sTitl     = "Track origin;x [cm];y [cm]";
+      fphTrkOriginXY = MakeObj<H2D>(sName, sTitl, kOriginB, kOriginL, kOriginU, kOriginB, kOriginL, kOriginU);
+    }
     fphTrkNofHits = MakeObj<H1D>("n_hits", "Number of hits;N_{hit}", nBins, xMin, xMax);
   }
 
@@ -231,7 +236,7 @@ void Qa::Init()
           auto titl = format("{} hit occupancy in different stations in XY plane", setNm);
           auto canv = CanvasConfig(name, titl);
           for (int iSt = 0; iSt < nSt; ++iSt) {
-            auto pad = PadConfig();
+            auto pad = PadConfig(false, false, false, false, true);
             pad.RegisterHistogram(fvphHitOccupXY[iSt][hitSet], "colz");
             canv.AddPadConfig(pad);
           }
@@ -294,6 +299,11 @@ void Qa::Init()
         pad.RegisterHistogram(fphTrkFstLstSta, "colz");
         canv.AddPadConfig(pad);
       }
+      {
+        auto pad = PadConfig(true, true, false, false, false);
+        pad.RegisterHistogram(fphTrkOriginXY, "colz");
+        canv.AddPadConfig(pad);
+      }
       AddCanvasConfig(canv);
     }
   }
@@ -371,6 +381,7 @@ void Qa::Exec()
       // Other distributions
       fphTrkFstLstSta->Fill(fpInputData->GetHit(iLstHit).Station(), fpInputData->GetHit(iFstHit).Station());
       fphTrkNofHits->Fill(nHits);
+      fphTrkOriginXY->Fill(track.fParPV.X(), track.fParPV.Y());
       trkFirstHit += nHits;
     }
   }
diff --git a/algo/ca/qa/CaQa.h b/algo/ca/qa/CaQa.h
index 1c42b60562f19c5adf5274c045971fe9bda330bf..ae3658a64971a9d98609d61b5ae28e3d61ab185d 100644
--- a/algo/ca/qa/CaQa.h
+++ b/algo/ca/qa/CaQa.h
@@ -117,6 +117,9 @@ namespace cbm::algo::ca
     static constexpr int knTrkParPoints = 2;      ///< Number of track points to build par distributions
     static constexpr int knStaMax       = 16;     ///< Max number of stations (histogram binning)
     static constexpr bool kDebug        = false;  ///< Additional histograms
+    static constexpr int kOriginB       = 100;    ///< Track X(Y) at origin: n bins
+    static constexpr double kOriginL    = -10.;   ///< Track X(Y) at origin: lower bound [cm]
+    static constexpr double kOriginU    = +10.;   ///< Track X(Y) at origin: upper bound [cm]
 
     double fMinHitTime = std::numeric_limits<double>::max();
     double fMaxHitTime = std::numeric_limits<double>::lowest();
@@ -145,6 +148,7 @@ namespace cbm::algo::ca
     std::array<qa::H1D*, knTrkParPoints> fvphTrkChi2Ndf  = {{0}};  ///< hist: chi2/NDF at first/last hit
     std::array<qa::H2D*, knTrkParPoints> fvphTrkPhiTheta = {{0}};  ///< hist: theta vs. phi at first/last hit
 
+    qa::H2D* fphTrkOriginXY  = nullptr;  ///< hist: origin of tracks in x-y plane [cm]
     qa::H2D* fphTrkFstLstSta = nullptr;  ///< hist: fst vs lst station index
     qa::H1D* fphTrkNofHits   = nullptr;  ///< hist: number of hits in track
   };
diff --git a/algo/kfp/KfpV0Finder.cxx b/algo/kfp/KfpV0Finder.cxx
index c95965bc847347caccc52b1bcf23a0eaeda8fd92..820078945d3ffd25eb18256e3077899c35d47432 100644
--- a/algo/kfp/KfpV0Finder.cxx
+++ b/algo/kfp/KfpV0Finder.cxx
@@ -80,7 +80,7 @@ void V0Finder::AssignPid(ParticleInfo& particleInfo)
     // primary
     //particleInfo.fPdg = fPrimaryAssignedPdg;
     particleInfo.fPdg = kUndefPdg;
-    fEventMonitor.IncrementCounter(ECounter::TracksWoPid);
+    fEventMonitor.IncrementCounter(ECounter::PrimaryDca);
   }
 }
 
diff --git a/algo/kfp/KfpV0FinderMonitor.h b/algo/kfp/KfpV0FinderMonitor.h
index d60d5b135478e2e6d379a26b69e8755d9b2bd96b..3f3b68ef6af1b548eb85cbb8c771caac3a93f51e 100644
--- a/algo/kfp/KfpV0FinderMonitor.h
+++ b/algo/kfp/KfpV0FinderMonitor.h
@@ -28,6 +28,7 @@ namespace cbm::algo::kfp
     TracksWUnphysicalBeta,      ///< Tracks with beta > 1
     PionsDca,                   ///< Number of raw pion-candidates
     ProtonsDca,                 ///< Number of raw proton-candidates
+    PrimaryDca,                 ///< Number of raw proton-candidates
     Pions,                      ///< Number of pion-candidates
     Protons,                    ///< Number of proton-candidates
     EventsTotal,                ///< Total number of events
@@ -76,6 +77,7 @@ namespace cbm::algo::kfp
       SetCounterName(ECounter::TracksWUnphysicalBeta, "tracks w/ beta > 1");
       SetCounterName(ECounter::PionsDca, "raw pion candidates");
       SetCounterName(ECounter::ProtonsDca, "raw proton candidates");
+      SetCounterName(ECounter::PrimaryDca, "number of primary particles");
       SetCounterName(ECounter::Pions, "pion candidates");
       SetCounterName(ECounter::Protons, "proton candidates");
       SetCounterName(ECounter::EventsTotal, "all events");
diff --git a/algo/kfp/KfpV0FinderQa.cxx b/algo/kfp/KfpV0FinderQa.cxx
index ffc903e2a2dcc2c12efa06b4bda11db6db29ffb9..703f067f93cf0b2a81c440817a55d9feac6fe7ea 100644
--- a/algo/kfp/KfpV0FinderQa.cxx
+++ b/algo/kfp/KfpV0FinderQa.cxx
@@ -57,7 +57,8 @@ void V0FinderQa::Exec(const RecoResults& recoEvent, const V0Finder& v0Finder)
       const auto& particleInfo{v0Finder.GetParticleInfo()[iTrk]};
       const auto& trkParFst{(v0Finder.GetTrackAssignedParams()[iTrk]).first};
       bool bPdgDefined = (particleInfo.fPdg != V0Finder::kUndefPdg);
-      fvphDcaAll->Fill(bPdgDefined ? particleInfo.fDca : -999);
+      // All particles with defined DCA (primaries + secondary pions and protons)
+      fvphDcaAll->Fill(std::isnan(particleInfo.fDca) ? -999 : particleInfo.fDca);
       fvphBetaAll->Fill(particleInfo.fBeta);
       if (bPdgDefined) {
         if (particleInfo.fPdg == -211) {
@@ -75,15 +76,15 @@ void V0FinderQa::Exec(const RecoResults& recoEvent, const V0Finder& v0Finder)
     for (uint32_t iTrk = 0; iTrk < tracks.size(); ++iTrk) {
       const auto& particleInfo{v0Finder.GetParticleInfo()[iTrk]};
       bool bPdgDefined = (particleInfo.fPdg != V0Finder::kUndefPdg);
-      fvphDcaAll->Fill(bPdgDefined ? particleInfo.fDca : -999);
-      fvphBetaAll->Fill(-999);
+      fvphDcaAll->Fill(std::isnan(particleInfo.fDca) ? -999 : particleInfo.fDca);
+      fvphBetaAll->Fill(-9999);
       if (bPdgDefined) {
         if (particleInfo.fPdg == -211) {
-          fvphBetaPion->Fill(-999);
-          fvphMomPion->Fill(-999);
+          fvphBetaPion->Fill(-9999);
+          fvphMomPion->Fill(-9999);
         }
         else if (particleInfo.fPdg == 2212) {
-          fvphBetaProton->Fill(-999);
+          fvphBetaProton->Fill(-9999);
         }
       }
     }
diff --git a/algo/qa/hitfind/TofHitfindQaParameters.cxx b/algo/qa/hitfind/TofHitfindQaParameters.cxx
index 95251731a1d02cc2295b220acbc797d872c847fe..3cb2f35b8cef672094e082cf4de445612f65f44b 100644
--- a/algo/qa/hitfind/TofHitfindQaParameters.cxx
+++ b/algo/qa/hitfind/TofHitfindQaParameters.cxx
@@ -29,10 +29,10 @@ HitfindQaParameters::HitfindQaParameters(const HitfindSetup& hitSetup)
       auto& rpcPar       = rpcs.emplace_back();
       rpcPar.address     = address;
       rpcPar.chAddresses.resize(rpc.chanPar.size());
-      L_(info) << "RPC: " << CbmTofAddress::ToString(address);
+      L_(debug) << "RPC: " << CbmTofAddress::ToString(address);
       for (int iCh = 0; iCh < rpcPar.chAddresses.size(); ++iCh) {
         rpcPar.chAddresses[iCh] = rpc.chanPar[iCh].address;
-        L_(info) << "----> ch: " << CbmTofAddress::ToString(rpcPar.chAddresses[iCh]);
+        L_(debug) << "----> ch: " << CbmTofAddress::ToString(rpcPar.chAddresses[iCh]);
       }
       iUniqueRpcId++;
     }
diff --git a/algo/qa/trigger/V0TriggerQa.h b/algo/qa/trigger/V0TriggerQa.h
index 6f1aa13dc6e4ee8b27a483954ae87c5f602bf7ed..fff885f86fea36430e70ac8a51446c3577833035 100644
--- a/algo/qa/trigger/V0TriggerQa.h
+++ b/algo/qa/trigger/V0TriggerQa.h
@@ -56,9 +56,9 @@ namespace cbm::algo::evbuild
     static constexpr int kPairZVertexB{120};      ///< Track pair z vertex: n bins
     static constexpr double kPairZVertexL{-60.};  ///< Track pair z vertex: lower bound [cm]
     static constexpr double kPairZVertexU{+60.};  ///< Track pair z vertex: upper bound [cm]
-    static constexpr int kPairDcaB{100};          ///< Track pair DCA: n bins
-    static constexpr double kPairDcaL{-2.};       ///< Track pair DCA: lower bound [cm]
-    static constexpr double kPairDcaU{+2.};       ///< Track pair DCA: upper bound [cm]
+    static constexpr int kPairDcaB{300};          ///< Track pair DCA: n bins
+    static constexpr double kPairDcaL{-0.5};      ///< Track pair DCA: lower bound [cm]
+    static constexpr double kPairDcaU{+5.5};      ///< Track pair DCA: upper bound [cm]
 
     //* Histograms
     qa::H1D* fphPairDeltaT{nullptr};   ///< Track pair delta T
diff --git a/algo/trigger/V0Trigger.cxx b/algo/trigger/V0Trigger.cxx
index 49cd41825828f4f85903837007c6381ad834212b..e3ff8ef9f50a58fda75b569cc974952e0bc61001 100644
--- a/algo/trigger/V0Trigger.cxx
+++ b/algo/trigger/V0Trigger.cxx
@@ -34,7 +34,7 @@ namespace cbm::algo::evbuild
         float time2 = trackIter2->fParPV.GetTime();
 
         if (fpQa->IsActive()) {
-          fpQa->fphPairDeltaT->Fill(time1 - time2);
+          fpQa->fphPairDeltaT->Fill(time2 - time1);
         }
 
         if (time2 < time1) {
diff --git a/external/InstallParameter.cmake b/external/InstallParameter.cmake
index 342e3354127cff382ff76c2f03eed4f74f0297a9..67356a801e1a6bc37ddc8b5da7a3b9a7c0f54501 100644
--- a/external/InstallParameter.cmake
+++ b/external/InstallParameter.cmake
@@ -1,5 +1,5 @@
-set(PARAMETER_VERSION 125dc2b53e6123739a19deabd9465e4fe568a5dc) # 2025/02/24
-set(PARAMETER_SRC_URL "https://git.cbm.gsi.de/CbmSoft/cbmroot_parameter.git")
+set(PARAMETER_VERSION 4d23b9bfddd5e61fd347ba2090fc215ea72b5f32) # 2025/02/24
+set(PARAMETER_SRC_URL "https://git.cbm.gsi.de/s.zharko/cbmroot_parameter.git")
 
 download_project_if_needed(PROJECT         Parameter_source
                            GIT_REPOSITORY  ${PARAMETER_SRC_URL}