diff --git a/macro/mcbm/mcbm_hadron_analysis.C b/macro/mcbm/mcbm_hadron_analysis.C
index ad2ef67272c2781301e0b6b156e7d2e3ecfcf09a..f9642e6110859f699bc3f93ce3602a25c28a38ff 100644
--- a/macro/mcbm/mcbm_hadron_analysis.C
+++ b/macro/mcbm/mcbm_hadron_analysis.C
@@ -2,7 +2,7 @@
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Florian Uhlig [committer] */
 
-void mcbm_hadron_analysis(Int_t nEvents = 10, TString setup = "mcbm_beam_2020_03", const char* output = "data/test")
+void mcbm_hadron_analysis(Int_t nEvents = 10, TString setupName = "mcbm_beam_2020_03", const char* output = "data/test")
 {
   TString dataset(output);
   TString InputFile = dataset + ".tra.root";
@@ -10,6 +10,7 @@ void mcbm_hadron_analysis(Int_t nEvents = 10, TString setup = "mcbm_beam_2020_03
   TString RecoFile  = dataset + ".rec.root";
   TString ParFile   = dataset + ".par.root";
   TString OutFile   = dataset + ".ana.root";
+  TString srcDir    = gSystem->Getenv("VMCWORKDIR");
 
   FairLogger::GetLogger()->SetLogScreenLevel("INFO");
   FairLogger::GetLogger()->SetLogVerbosityLevel("VERYHIGH");
@@ -36,6 +37,17 @@ void mcbm_hadron_analysis(Int_t nEvents = 10, TString setup = "mcbm_beam_2020_03
   parInput1->open(ParFile.Data());
   rtdb->setFirstInput(parInput1);
 
+  // ------  Geometry setup  ------------------------------------------------
+  std::cout << '\n';
+  TString setupFile  = srcDir + "/geometry/setup/setup_" + setupName + ".C";
+  TString setupFunct = "setup_";
+  setupFunct         = setupFunct + setupName + "()";
+  std::cout << "-I- Loading macro " << setupFile << '\n';
+  gROOT->LoadMacro(setupFile);
+  gROOT->ProcessLine(setupFunct);
+  CbmSetup* setup = CbmSetup::Instance();
+  //  setup->RemoveModule(ECbmModuleId::kTrd);
+  // ------------------------------------------------------------------------
 
   /*
   CbmMCDataManager* mcManager = new CbmMCDataManager("MCDataManager", 1);
@@ -46,6 +58,10 @@ void mcbm_hadron_analysis(Int_t nEvents = 10, TString setup = "mcbm_beam_2020_03
   fRun->AddTask(match);
 */
 
+  // Kalman filter
+  fRun->AddTask(new CbmTrackingDetectorInterfaceInit());
+  fRun->AddTask(new CbmKF());
+
   CbmHadronAnalysis* HadronAna = new CbmHadronAnalysis();  // in hadron
   HadronAna->SetBeamMomentum(1.65);                        // beam momentum
   HadronAna->SetDY(0.5);                                   // flow analysis exclusion window
diff --git a/reco/KF/CbmKFTrackInterface.cxx b/reco/KF/CbmKFTrackInterface.cxx
index 81eebadd0ac13cea0c8d284c2805a8c9fa2bc26d..d4103d073d9404b67554ed744721cae195323988 100644
--- a/reco/KF/CbmKFTrackInterface.cxx
+++ b/reco/KF/CbmKFTrackInterface.cxx
@@ -41,7 +41,6 @@ Int_t& CbmKFTrackInterface::GetRefNDF() { return gTempI[0]; }
 
 Int_t CbmKFTrackInterface::Extrapolate(Double_t z_out, Double_t* QP0)
 {
-
   Bool_t err          = 0;
   CbmKF* KF           = CbmKF::Instance();
   const Double_t z_in = GetTrack()[5];
diff --git a/reco/KF/Interface/CbmStsKFTrackFitter.cxx b/reco/KF/Interface/CbmStsKFTrackFitter.cxx
index 8d545e5ce7495cea88b4b4eebcef6adab7f6bb35..354f351ad0320d20619c724a45575fdee68bd975 100644
--- a/reco/KF/Interface/CbmStsKFTrackFitter.cxx
+++ b/reco/KF/Interface/CbmStsKFTrackFitter.cxx
@@ -4,6 +4,7 @@
 
 #include "CbmStsKFTrackFitter.h"
 
+#include "CbmKF.h"
 #include "CbmKFMath.h"
 #include "CbmKFStsHit.h"
 #include "CbmKFTrack.h"
@@ -50,6 +51,12 @@ void CbmStsKFTrackFitter::Init()
          << "no MVD hits array" << endl;
     //return;
   }
+  auto* kf = CbmKF::Instance();
+  if (!kf) {
+    LOG(error) << "-E- CbmStsKFTrackFitter::Init(): CbmKF instance not found";
+    return;
+  }
+
   fIsInitialised = 1;
 };