diff --git a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx
index 1a1a42965184fd25ba86697e5c0389182aeaa6dd..322851f5c159b3875647aa02f70786978176e71e 100644
--- a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx
+++ b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx
@@ -99,7 +99,9 @@ void CbmStsTracksConverter::ReadVertexTracks() {
     track->Init(out_config_->GetBranchConfig(vtx_tracks_->GetId()));
 
     int pdg = GetMcPid(
-      sts_track, (CbmTrackMatchNew*) cbm_sts_match_->At(i_track), track);
+      (CbmTrackMatchNew*) cbm_sts_match_->At(i_track), track);
+    
+    bool is_good_track = IsGoodCovMatrix(sts_track);
 
     float chi2_vertex = ExtrapolateToVertex(sts_track, track, pdg);
     const FairTrackParam* trackParamFirst = sts_track->GetParamFirst();
@@ -123,12 +125,13 @@ void CbmStsTracksConverter::ReadVertexTracks() {
 
     out_indexes_map_.insert(std::make_pair(i_track, track->GetId()));
 
-    if (is_write_kfinfo_) { WriteKFInfo(track, sts_track); }
+    if (is_write_kfinfo_) { WriteKFInfo(track, sts_track, is_good_track); }
   }
 }
 
 void CbmStsTracksConverter::WriteKFInfo(AnalysisTree::Track* track,
-                                        const CbmStsTrack* sts_track) const {
+                                        const CbmStsTrack* sts_track,
+                                        bool is_good_track) const {
   assert(track && sts_track);
   const FairTrackParam* trackParamFirst = sts_track->GetParamFirst();
 
@@ -145,7 +148,7 @@ void CbmStsTracksConverter::WriteKFInfo(AnalysisTree::Track* track,
                       icov_ + iCov);
     }
   }
-  track->SetField(IsGoodCovMatrix(sts_track), ipasscuts_);
+  track->SetField(is_good_track, ipasscuts_);
 }
 
 bool CbmStsTracksConverter::IsGoodCovMatrix(
@@ -185,8 +188,7 @@ bool CbmStsTracksConverter::IsGoodCovMatrix(
   return ok;
 }
 
-int CbmStsTracksConverter::GetMcPid(const CbmStsTrack* /*sts_track*/,
-                                    const CbmTrackMatchNew* match,
+int CbmStsTracksConverter::GetMcPid(const CbmTrackMatchNew* match,
                                     AnalysisTree::Track* track) const {
 
   if (!is_write_kfinfo_) { return -2; }
@@ -319,7 +321,7 @@ void CbmStsTracksConverter::MapTracks() {
   }
   auto sim_tracks_map = it->second;
 
-  assert(!out_indexes_map_.empty() || !sim_tracks_map.empty());
+  if (out_indexes_map_.empty() || sim_tracks_map.empty()) return;
   CbmTrackMatchNew* match {nullptr};
 
   for (const auto& track_id : out_indexes_map_) {
diff --git a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.h b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.h
index 24dd66aa8f70962419cb5f43ea96fe4a6b4af6b2..857f78d88f07daaecd2b18b58a7b4a6daa77c879 100644
--- a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.h
+++ b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.h
@@ -50,10 +50,10 @@ private:
                             AnalysisTree::Track* track,
                             int pdg);
   void WriteKFInfo(AnalysisTree::Track* track,
-                   const CbmStsTrack* sts_track) const;
+                   const CbmStsTrack* sts_track,
+                   bool is_good_track) const;
   bool IsGoodCovMatrix(const CbmStsTrack* sts_track) const;
-  int GetMcPid(const CbmStsTrack* sts_track,
-               const CbmTrackMatchNew* match,
+  int GetMcPid(const CbmTrackMatchNew* match,
                AnalysisTree::Track* track) const;
 
   AnalysisTree::TrackDetector* vtx_tracks_ {
@@ -67,7 +67,7 @@ private:
   TClonesArray* cbm_sts_match_ {nullptr};   ///< non-owning pointer
 
   bool is_write_kfinfo_ {true};
-  bool is_reproduce_cbmkfpf_ {false};
+  bool is_reproduce_cbmkfpf_ {true};
 
   int ipar_ {-1};
   int imf_ {-1};