diff --git a/macro/KF/KFParticleFinderSignalTest/Signal/physSignal.C b/macro/KF/KFParticleFinderSignalTest/Signal/physSignal.C
index 9b2b7320a6d48dd3755e684d94aacfd7ba42ef29..fcb76e211796323974722898c412874d47b89fb4 100644
--- a/macro/KF/KFParticleFinderSignalTest/Signal/physSignal.C
+++ b/macro/KF/KFParticleFinderSignalTest/Signal/physSignal.C
@@ -90,6 +90,7 @@ void physSignal(Int_t nEvents = 1000, const char* setupName = "sis100_electron")
 
   // ------------------------------------------------------------------------
   //          Adjust this part according to your requirements
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* KF = new CbmKF();
   run->AddTask(KF);
   CbmL1* l1 = new CbmL1("CbmL1", 1, 3);
diff --git a/macro/KF/KFParticleFinderSignalTest/Signal/recoSignal.C b/macro/KF/KFParticleFinderSignalTest/Signal/recoSignal.C
index 8a8ab02057c8da061678320384230ad7c23aa854..ae60341bb33b797b32488b76094f1bfa0706b55c 100644
--- a/macro/KF/KFParticleFinderSignalTest/Signal/recoSignal.C
+++ b/macro/KF/KFParticleFinderSignalTest/Signal/recoSignal.C
@@ -179,6 +179,7 @@ void recoSignal(Int_t nEvents = 1000, const char* setupName = "sis100_electron")
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1      = new CbmL1("CbmL1", 1, 3);
diff --git a/macro/KF/kf_kfparticle.C b/macro/KF/kf_kfparticle.C
index e6fb43fee0eaa3cd28bbdbc4ccf1fce46af1ae15..2544918c2247bee4d45d1e3279c5c8943aabf4fa 100644
--- a/macro/KF/kf_kfparticle.C
+++ b/macro/KF/kf_kfparticle.C
@@ -127,6 +127,7 @@ void kf_kfparticle(Int_t nEvents = 2, const TString setupName = "sis100_electron
   // ------------------------------------------------------------------------
 
   // ----- KF and L1 are needed for field and material   --------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* KF = new CbmKF();
   run->AddTask(KF);
   CbmL1* l1 = new CbmL1("CbmL1", 1, 3);
diff --git a/macro/L1/rec.C b/macro/L1/rec.C
index fa5dd97332e26205b86ae57b2637da25107f8530..5db0398442c0882429e1ac66d50e5ba05ad72861 100644
--- a/macro/L1/rec.C
+++ b/macro/L1/rec.C
@@ -68,6 +68,8 @@ void rec()
 
   // Kalman Filter
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
+
   CbmKF* KF = new CbmKF();
   fRun->AddTask(KF);
 
diff --git a/macro/L1/run_reco_L1global.C b/macro/L1/run_reco_L1global.C
index 7346ec510d0cf5c81786936cce8edfa8806ec788..90c4b250175baa84e58ab9ade89d4a49593e51c3 100644
--- a/macro/L1/run_reco_L1global.C
+++ b/macro/L1/run_reco_L1global.C
@@ -39,6 +39,7 @@
 #include "CbmTofSimpClusterizer.h"
 #include "CbmTrdClusterFinder.h"
 #include "CbmTrdHitProducer.h"
+#include "CbmTrackingDetectorInterfaceInit.h"
 
 #include <FairFileSource.h>
 #include <FairMonitor.h>
@@ -349,6 +350,7 @@ void run_reco_L1global(TString input = "", Int_t nTimeSlices = -1, Int_t firstTi
 
   // -----   Track finding in STS (+ MVD)    --------------------------------
   if (useMvd || useSts) {
+    run->AddTask(new CbmTrackingDetectorInterfaceInit());
     CbmKF* kalman = new CbmKF();
     run->AddTask(kalman);
     CbmL1* l1 = 0;
diff --git a/macro/analysis/common/analysis_tree_converter/run_analysis_tree_maker.C b/macro/analysis/common/analysis_tree_converter/run_analysis_tree_maker.C
index da8e8b1b8c9e06c3ed5489715239b32627377643..8c61c205db8750d233467178b09ffcb4b82a7ad0 100644
--- a/macro/analysis/common/analysis_tree_converter/run_analysis_tree_maker.C
+++ b/macro/analysis/common/analysis_tree_converter/run_analysis_tree_maker.C
@@ -78,7 +78,7 @@ void run_analysis_tree_maker(TString dataSet = "../../../run/test", TString setu
   auto* matchTask = new CbmMatchRecoToMC();
   run->AddTask(matchTask);
   // ------------------------------------------------------------------------
-
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   auto* KF = new CbmKF();
   run->AddTask(KF);
   // needed for tracks extrapolation
diff --git a/macro/analysis/conversion2/run_analysis.C b/macro/analysis/conversion2/run_analysis.C
index 57feb8ac383d5f52e4b409426ae5ac2de7c331cf..eab8068897959d6cb04e50ea05645f0e9817421a 100644
--- a/macro/analysis/conversion2/run_analysis.C
+++ b/macro/analysis/conversion2/run_analysis.C
@@ -115,6 +115,8 @@ void run_analysis(Int_t nEvents = 2, TString setupName = "sis100_electron", cons
   CbmFindPrimaryVertex* findVertex = new CbmFindPrimaryVertex(pvFinder);
   run->AddTask(findVertex);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
+
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
 
diff --git a/macro/analysis/dielectron/run_analysis.C b/macro/analysis/dielectron/run_analysis.C
index 45a055edc98f47194d43e47519cfd07e41520a3a..eb93a3d9a0ddf4e874d2cac5002772267365dfec 100644
--- a/macro/analysis/dielectron/run_analysis.C
+++ b/macro/analysis/dielectron/run_analysis.C
@@ -36,7 +36,7 @@ void run_analysis(const std::string& traFile, const std::string& parFile, const
   CbmMCDataManager* mcManager = new CbmMCDataManager("MCManager", 1);
   mcManager->AddFile(traFile.c_str());
   run->AddTask(mcManager);
-
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/analysis/dielectron/run_reco.C b/macro/analysis/dielectron/run_reco.C
index 77d44b5cdcb7ca36e73350293ab3abc64beca76e..a51ba8c3dd85ce04ba66d3e19445c7dc9f046a59 100644
--- a/macro/analysis/dielectron/run_reco.C
+++ b/macro/analysis/dielectron/run_reco.C
@@ -127,6 +127,7 @@ void run_reco(const string& traFile, const string& parFile, const string& digiFi
 
 
   if (useMvd || useSts) {
+    run->AddTask(new CbmTrackingDetectorInterfaceInit());
     CbmKF* kalman = new CbmKF();
     run->AddTask(kalman);
     CbmL1* l1 = 0;
diff --git a/macro/analysis/flow/anaFlow.C b/macro/analysis/flow/anaFlow.C
index 746833fb6338cc0cc9769a886ae296d75a6b5816..e5052dfec45345a5ff771e6ab72fd9814c3bae9d 100644
--- a/macro/analysis/flow/anaFlow.C
+++ b/macro/analysis/flow/anaFlow.C
@@ -129,6 +129,7 @@ void anaFlow(Int_t mode = 7, Double_t En = 10., Int_t nEvents = 200, Int_t fileN
     anaFlow->setFileName_gen(infilename_gen);
 
     //=== important for reco info -> STS mult
+    run->AddTask(new CbmTrackingDetectorInterfaceInit());
     CbmKF* KF = new CbmKF();
     fRun->AddTask(KF);
 
@@ -168,6 +169,7 @@ void anaFlow(Int_t mode = 7, Double_t En = 10., Int_t nEvents = 200, Int_t fileN
     fRun->SetOutputFile(outfilename);
 
     //=== important for extrapolation to PV -> B-field
+    run->AddTask(new CbmTrackingDetectorInterfaceInit());
     CbmKF* KF = new CbmKF();
     fRun->AddTask(KF);
 
diff --git a/macro/analysis/flow/eventPlane.C b/macro/analysis/flow/eventPlane.C
index 6ddbe1f0131d84e31060b8336bfa8a3d82ec1391..cd3ce0e7c5e2bc7efffa4a102af009974899d5b5 100644
--- a/macro/analysis/flow/eventPlane.C
+++ b/macro/analysis/flow/eventPlane.C
@@ -89,6 +89,7 @@ void eventPlane(Double_t En = 10, Int_t nEvents = 2, Int_t fQcorr = 0, Int_t fBa
   fRun->SetOutputFile(outfilename);
 
   //=== important for extrapolation to PV in B-field
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* KF = new CbmKF();
   fRun->AddTask(KF);
 
diff --git a/macro/analysis/flow/run_reco_flow.C b/macro/analysis/flow/run_reco_flow.C
index 4449add95fc81ae95505464dc88c4f7a855f3c52..70ca4ea752ab7744cac669fbadf38c09ee92b884 100644
--- a/macro/analysis/flow/run_reco_flow.C
+++ b/macro/analysis/flow/run_reco_flow.C
@@ -201,6 +201,7 @@ void run_reco_flow(Double_t En = 10, Int_t nEvents = 2, Int_t fileNum = 5)
 
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
 
diff --git a/macro/analysis/hyperons/rec.C b/macro/analysis/hyperons/rec.C
index 8937f235077ee0e8a0d9274f6860b8a2c0ce2912..5077f1d914c603fbbcfe12a071d802b61eac95b7 100644
--- a/macro/analysis/hyperons/rec.C
+++ b/macro/analysis/hyperons/rec.C
@@ -57,6 +57,7 @@ void rec(Int_t file_nr = 0, Int_t nEvents = 1, Int_t s = 0)
 
 
   // -----   STS track finding   --------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   FairTask* kalman = new CbmKF();
   run->AddTask(kalman);
   FairTask* l1 = new CbmL1();
diff --git a/macro/analysis/jpsiana/run_analysis_jpsi.C b/macro/analysis/jpsiana/run_analysis_jpsi.C
index 4d3af13f61057c8bd0448496790df83cb554d08e..ea9946591477c1ce827db1650038b83dd1b8403e 100644
--- a/macro/analysis/jpsiana/run_analysis_jpsi.C
+++ b/macro/analysis/jpsiana/run_analysis_jpsi.C
@@ -71,6 +71,7 @@ void run_analysis_jpsi(Int_t nEvents = 1000)
   if (recoFile != "") run->SetOutputFile(anaFile);
 
   //CbmKF is needed for Extrapolation
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kf = new CbmKF();
   run->AddTask(kf);
 
diff --git a/macro/analysis/jpsiana/run_litqa_jpsi.C b/macro/analysis/jpsiana/run_litqa_jpsi.C
index 33a31dca8e2403a5d0403d0e2ee64b999ab0b5d6..7e90b6020130115398687f06ab2b30f1e9017f2c 100644
--- a/macro/analysis/jpsiana/run_litqa_jpsi.C
+++ b/macro/analysis/jpsiana/run_litqa_jpsi.C
@@ -70,6 +70,7 @@ void run_litqa_jpsi(Int_t nEvents = 1000)
   if (recoFile != "") run->AddFriend(recoFile);
   if (qaFile != "") run->SetOutputFile(qaFile);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/analysis/jpsiana/run_reco_jpsi.C b/macro/analysis/jpsiana/run_reco_jpsi.C
index 264bac29d5b6416c85b9b408199b8717315aa23c..f1e6b75857fb8b80ea1c568bdd352d2ffa3bc717 100644
--- a/macro/analysis/jpsiana/run_reco_jpsi.C
+++ b/macro/analysis/jpsiana/run_reco_jpsi.C
@@ -90,6 +90,7 @@ void run_reco_jpsi(Int_t nEvents = 50)
   FairTask* stsHit = new CbmStsFindHits();
   run->AddTask(stsHit);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/analysis/opencharm/PairSelection.C b/macro/analysis/opencharm/PairSelection.C
index 6b61bcb3f5f82f9d8af0a228948d96f04514496f..19a423fc7ac3d3aecad7e6942533157dac01f193 100644
--- a/macro/analysis/opencharm/PairSelection.C
+++ b/macro/analysis/opencharm/PairSelection.C
@@ -155,6 +155,8 @@ void PairSelection(Int_t nEvents = 10, Int_t ProcID = 1, bool PileUp = false, In
   fRun->SetOutputFile(outFile);
   // -------------------------------------------------------------------------
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
+  
   CbmKF* KF = new CbmKF();
   fRun->AddTask(KF);
 
diff --git a/macro/analysis/opencharm/PairSelectionSE.C b/macro/analysis/opencharm/PairSelectionSE.C
index 9d860959eb949a2baa036e29898d6e3b4ac9f8f6..d84503c7e88b35317be898942348fc1cf221a2ec 100644
--- a/macro/analysis/opencharm/PairSelectionSE.C
+++ b/macro/analysis/opencharm/PairSelectionSE.C
@@ -153,6 +153,7 @@ void PairSelectionSE(Int_t nEvents = 10, Int_t ProcID = 1, bool PileUp = false,
   fRun->SetOutputFile(outFile);
   // -------------------------------------------------------------------------
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* KF = new CbmKF();
   fRun->AddTask(KF);
 
diff --git a/macro/analysis/opencharm/TrackSelection.C b/macro/analysis/opencharm/TrackSelection.C
index 6fa252f1344b31f56f26bb6ca7a4e049548b1048..45b8b877c194f07764663f10f007c79213ba8c21 100644
--- a/macro/analysis/opencharm/TrackSelection.C
+++ b/macro/analysis/opencharm/TrackSelection.C
@@ -121,6 +121,7 @@ void TrackSelection(Int_t nEvents = 10, Int_t ProcID = 1, bool PileUp = false, I
   fRun->AddFriend(rcFile);
   fRun->SetOutputFile(outFile);
   // ========================================================================
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
 
   CbmKF* KF = new CbmKF();
   fRun->AddTask(KF);
diff --git a/macro/analysis/opencharm/opencharm_reco.C b/macro/analysis/opencharm/opencharm_reco.C
index 1d40b8264c02e56c4ca80b5075558b069b13792e..e39ebeb4cc3b89311c5650a36e5984985c66a3e5 100644
--- a/macro/analysis/opencharm/opencharm_reco.C
+++ b/macro/analysis/opencharm/opencharm_reco.C
@@ -212,6 +212,7 @@ void opencharm_reco(Int_t nEvents = 10, Int_t ProcID = 1, bool PileUp = false)
   // -------------------------------------------------------------------------
 
   // -----   STS track finding   --------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1                    = new CbmL1();
diff --git a/macro/analysis/papa/run_analysis.C b/macro/analysis/papa/run_analysis.C
index 84cf0b5f2ae9b49c58212cce4623eefe6da3117c..988069d0e81e1d3f970fe88b0a5c9cb36df136a2 100644
--- a/macro/analysis/papa/run_analysis.C
+++ b/macro/analysis/papa/run_analysis.C
@@ -100,6 +100,7 @@ void run_analysis(Int_t nEvents = 0)
   std::cout << std::endl;
   std::cout << "-I- " << myName << ": Loading tasks " << std::endl;
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   //CbmKF is needed for Extrapolation
   CbmKF* kf = new CbmKF();
   run->AddTask(kf);
diff --git a/macro/beamtime/mcbm2021/mcbm_event_reco.C b/macro/beamtime/mcbm2021/mcbm_event_reco.C
index d44e297085f148208d6f38204663fedecb6f7580..469b49544af48335d8a348d9d03b0637c25574cf 100644
--- a/macro/beamtime/mcbm2021/mcbm_event_reco.C
+++ b/macro/beamtime/mcbm2021/mcbm_event_reco.C
@@ -804,6 +804,7 @@ Bool_t mcbm_event_reco(UInt_t uRunId                   = 1588,
   // ===                             L1                                    ===
   // =========================================================================
 
+  //   run->AddTask(new CbmTrackingDetectorInterfaceInit());
   //   CbmKF* kalman = new CbmKF();
   //   run->AddTask(kalman);
   //   CbmL1* l1 = new CbmL1();
diff --git a/macro/dilept/CbmDileptRecUrqmdOmegaEe.C b/macro/dilept/CbmDileptRecUrqmdOmegaEe.C
index 3257996cb32a3083e073352604df5c7301e38f08..5c6ef108a501ab81075cba4b5addc3f81fab676f 100644
--- a/macro/dilept/CbmDileptRecUrqmdOmegaEe.C
+++ b/macro/dilept/CbmDileptRecUrqmdOmegaEe.C
@@ -85,6 +85,7 @@
   // ------------------------------------------------------------------------
 
   // ---  Now choose concrete engines for the different tasks   -------------
+  auto*  trackingDet                = new CbmTrackingDetectorInterfaceInit();
   CbmKF* kalman                     = new CbmKF();
   CbmL1* l1                         = new CbmL1();
   CbmStsTrackFinder* stsTrackFinder = new CbmL1StsTrackFinder();
@@ -141,6 +142,7 @@
 
   // -----   STS track finding   --------------------------------------------
   CbmStsFindTracks* stsFindTracks = new CbmStsFindTracks("Track Finder", "FairTask", stsTrackFinder);
+  fRun->AddTask(trackingDet);
   fRun->AddTask(kalman);
   fRun->AddTask(l1);
   fRun->AddTask(stsFindTracks);
diff --git a/macro/dilept/CbmDileptonPid.C b/macro/dilept/CbmDileptonPid.C
index 729aca5508b3976f09ef1875c4bcc80ff7ae7c22..808694f5be0233862127e5d72bb10094743ec31e 100644
--- a/macro/dilept/CbmDileptonPid.C
+++ b/macro/dilept/CbmDileptonPid.C
@@ -67,6 +67,7 @@ void CbmDileptonPid(const char* inputFileNameMC, const char* inputFileNameRec, c
   // Create and add users tasks
 
   // CbmKF is needed for Extrapolation
+  fRun->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kf = new CbmKF();
   fRun->AddTask(kf);
 
diff --git a/macro/ecal/run_reco.C b/macro/ecal/run_reco.C
index 8266a0556bb101cf19b893b44bce8369e78f80a5..eab794f65a6beb05f082db2ee453bc49a4c01151 100644
--- a/macro/ecal/run_reco.C
+++ b/macro/ecal/run_reco.C
@@ -199,6 +199,7 @@ void run_reco(Int_t nEvents = 1)
 
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/hadron/produceDst.C b/macro/hadron/produceDst.C
index a53bca1fdcb9e3257162d89d935a899e26c16e2c..b84680c8f6747f0bd3277bb1651d722be4052a2a 100644
--- a/macro/hadron/produceDst.C
+++ b/macro/hadron/produceDst.C
@@ -79,6 +79,7 @@ centr/urqmd.auau.%1.0fgev.centr.%4d.reco.root",
 
   // -----  Produce DST  ----------------------------------------------------
   CbmKF* kalman = new CbmKF();
+  fRun->AddTask(new CbmTrackingDetectorInterfaceInit());
   fRun->AddTask(kalman);
 
   CbmGlobalTrackFitterKF* globalTrackFitter = new CbmGlobalTrackFitterKF();
diff --git a/macro/hadron/reco.urqmd.C b/macro/hadron/reco.urqmd.C
index eee4917b3f9364073ff402e210a6bb6a3f650c73..592fa83c5681f8b9966c0c293e50fb8c2fe6eb3d 100644
--- a/macro/hadron/reco.urqmd.C
+++ b/macro/hadron/reco.urqmd.C
@@ -136,6 +136,7 @@ void reco_urqmd(Int_t index)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/kronos/macro/run_phys.C b/macro/kronos/macro/run_phys.C
index 17784848a1c9f1ecf14d788356098b1c6f116fe8..2cfc76c3646f57e7d9ba04e9220976f211386298 100644
--- a/macro/kronos/macro/run_phys.C
+++ b/macro/kronos/macro/run_phys.C
@@ -51,6 +51,7 @@ void run_phys(TString setupName, Int_t nEvents = 10, TString inputDir = "")
   run->AddTask(mcManager);
 
   //          Adjust this part according to your requirements
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* KF = new CbmKF();
   run->AddTask(KF);
 
diff --git a/macro/kronos/macro/run_reco.C b/macro/kronos/macro/run_reco.C
index bfe84e2dc2b1b686c563236772f7d8a4317176c6..480152fbdf706858b2f5bf60c92e2f49aac41059 100644
--- a/macro/kronos/macro/run_reco.C
+++ b/macro/kronos/macro/run_reco.C
@@ -162,6 +162,7 @@ void run_reco(TString setupName, Int_t nEvents = 10)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1      = new CbmL1("CbmL1", 1, 3);
diff --git a/macro/littrack/global_fit.C b/macro/littrack/global_fit.C
index 2000cd0a61961e03831197f7621f172120b54155..1e8246f58163ca1d984b9405a87290497f80503e 100644
--- a/macro/littrack/global_fit.C
+++ b/macro/littrack/global_fit.C
@@ -66,6 +66,7 @@ void global_fit(Int_t nEvents = 100)
   run->AddFriend(globalRecoFile);
   run->SetOutputFile(globalFitFile);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   FairTask* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/littrack/global_reco.C b/macro/littrack/global_reco.C
index 457d02e63b9b0322eb3e7cc40180b7a9aa3487e3..be287887edfdcbf3039a50e3c3541539afe7c536 100644
--- a/macro/littrack/global_reco.C
+++ b/macro/littrack/global_reco.C
@@ -177,6 +177,7 @@ void global_reco(Int_t nEvents = 10,  // number of events
       // -------------------------------------------------------------------------
     }
 
+    run->AddTask(new CbmTrackingDetectorInterfaceInit());
     FairTask* kalman = new CbmKF();
     run->AddTask(kalman);
     CbmL1* l1 = new CbmL1();
@@ -291,6 +292,7 @@ void global_reco(Int_t nEvents = 10,  // number of events
   if (opt == "all" || opt == "tracking") {
     if (IsRich(parFile)) {
       if (opt == "tracking") {
+        run->AddTask(new CbmTrackingDetectorInterfaceInit());
         FairTask* kalman = new CbmKF();
         run->AddTask(kalman);
         FairTask* l1 = new CbmL1();
@@ -313,6 +315,7 @@ void global_reco(Int_t nEvents = 10,  // number of events
 
   if (opt == "all" || opt == "tracking") {
     if (opt == "tracking") {
+      run->AddTask(new CbmTrackingDetectorInterfaceInit());
       FairTask* kalman = new CbmKF();
       run->AddTask(kalman);
       FairTask* l1 = new CbmL1();
diff --git a/macro/littrack/global_reco_ideal.C b/macro/littrack/global_reco_ideal.C
index b368af49d50eb6a82ee02500f490b0d1c4c6161b..7891a01311a19c480a7994755abaa939e78fa642 100644
--- a/macro/littrack/global_reco_ideal.C
+++ b/macro/littrack/global_reco_ideal.C
@@ -85,6 +85,7 @@ void global_reco_ideal(Int_t nEvents = 5000)
   FairTask* stsMatchHits = new CbmStsIdealMatchHits("STSMatchHits", iVerbose);
   run->AddTask(stsMatchHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   FairTask* kalman = new CbmKF();
   run->AddTask(kalman);
   FairTask* l1 = new CbmL1();
diff --git a/macro/littrack/global_reco_qa.C b/macro/littrack/global_reco_qa.C
index 7ea224b826bcd5339c5182945728750e28d177aa..a4d1950d780244589edec573ea5992032cdeb290 100644
--- a/macro/littrack/global_reco_qa.C
+++ b/macro/littrack/global_reco_qa.C
@@ -104,7 +104,7 @@ void global_reco_qa(Int_t nEvents = 10, TString opt = "reco")
   }
   run->SetOutputFile(qaFile);
   // ------------------------------------------------------------------------
-
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/littrack/mvd_reco.C b/macro/littrack/mvd_reco.C
index 2442d5d8c363129cb0c0ef2912f0840b99cb70e2..98a45035c2afee547cbc9241ed3c198fdf2b3ccb 100644
--- a/macro/littrack/mvd_reco.C
+++ b/macro/littrack/mvd_reco.C
@@ -107,6 +107,7 @@ void mvd_reco(Int_t nEvents = 10)
   run->AddTask(stsFindHits);
   }
   
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   FairTask* kalman = new CbmKF();
   run->AddTask(kalman);
   FairTask* l1 = new CbmL1();
diff --git a/macro/littrack/phys.C b/macro/littrack/phys.C
index 900026eb54cfa1a81d8765cdb44fdd0ecbdf54b2..7d0fa2dad1d584b40513db4440093387a6f443ed 100644
--- a/macro/littrack/phys.C
+++ b/macro/littrack/phys.C
@@ -40,6 +40,7 @@ void phys(Int_t nEvents = 100)
   run->SetOutputFile(analysisFile);
   // ------------------------------------------------------------------------
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* KF = new CbmKF();
   run->AddTask(KF);
 
diff --git a/macro/littrack/scripts/much/global_reco.C b/macro/littrack/scripts/much/global_reco.C
index e34c766b57d72ca66aa09e2f2e42182f5d872b9b..c48af66cb7f6975936a34c5e47c58bc29838d836 100644
--- a/macro/littrack/scripts/much/global_reco.C
+++ b/macro/littrack/scripts/much/global_reco.C
@@ -99,6 +99,7 @@ void global_reco(Int_t nEvents = 100, Int_t seed = 555)
   FairTask* stsMatchHits = new CbmStsMatchHits("STS Hit Matcher", iVerbose);
   run->AddTask(stsMatchHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   FairTask* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/littrack/scripts/much/global_reco_qa.C b/macro/littrack/scripts/much/global_reco_qa.C
index fcb959243f996d00b69b76bfc93567a8bf841568..cae1f96c6dc7fd7dc4421a4354eb356538e6d205 100644
--- a/macro/littrack/scripts/much/global_reco_qa.C
+++ b/macro/littrack/scripts/much/global_reco_qa.C
@@ -86,6 +86,7 @@ void global_reco_qa(Int_t nEvents = 10000)
   run->SetOutputFile(qaFile);
   // ------------------------------------------------------------------------
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/littrack/scripts/much/much_ana.C b/macro/littrack/scripts/much/much_ana.C
index cd5ffc0e6022350df44ba9476ffaa6e6903a220b..6167702e0abe6c05588daea8163c78ee212da0ea 100644
--- a/macro/littrack/scripts/much/much_ana.C
+++ b/macro/littrack/scripts/much/much_ana.C
@@ -50,6 +50,7 @@ void much_ana(Int_t nEvents = 1000)
   ana->SetStsPointsAccQuota(4);
   ana->SetStsTrueHitQuota(0.7);
 
+  fRun->AddTask(new CbmTrackingDetectorInterfaceInit());
   fRun->AddTask(kf);
   fRun->AddTask(ana);
   fRun->Init();
diff --git a/macro/mcbm/mcbm_reco.C b/macro/mcbm/mcbm_reco.C
index 65643aa5b6f70149f667aa87ba8c844411c2af96..3f32f1a41dc02cab479151595b63c1a5e6824416 100644
--- a/macro/mcbm/mcbm_reco.C
+++ b/macro/mcbm/mcbm_reco.C
@@ -422,6 +422,7 @@ void mcbm_reco(Int_t nEvents = 10, TString dataset = "data/test", TString sEvBui
 
   if (strcmp(setupName, "mcbm_beam_2020_03") == 0) {
 
+    run->AddTask(new CbmTrackingDetectorInterfaceInit());
     CbmKF* kalman = new CbmKF();
     run->AddTask(kalman);
     CbmL1* l1 = new CbmL1();
diff --git a/macro/mcbm/modules/reconstruct.C b/macro/mcbm/modules/reconstruct.C
index 715dc3aa42c4e63e7d9b399e84070cd1afea959a..000f7126bab7faae82bf0498fa50cacb124d94fe 100644
--- a/macro/mcbm/modules/reconstruct.C
+++ b/macro/mcbm/modules/reconstruct.C
@@ -124,6 +124,7 @@ Bool_t reconstruct()
 
   /*
   // -----   Track finding in (MVD+) STS    -----------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/much/run_ana.C b/macro/much/run_ana.C
index e478cba99ff056867b83c5dea7f13dc9fe302c51..acf23e8193e9bc19f5fc76e83a81c0d3223bbae2 100644
--- a/macro/much/run_ana.C
+++ b/macro/much/run_ana.C
@@ -49,6 +49,7 @@ void run_ana(Int_t nEvents = 1000, TString dataSet = "muons", TString setup = "s
 
 
   // ------------------------------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kf = new CbmKF();
   run->AddTask(kf);
 
diff --git a/macro/mvd/mvd_CbmUniGen_reco_cluster.C b/macro/mvd/mvd_CbmUniGen_reco_cluster.C
index dcdf57193ef62a45649544d32eea4754b2d017f0..d4c77a2f8bfb79164c09fe36b0fbfee722f52568 100644
--- a/macro/mvd/mvd_CbmUniGen_reco_cluster.C
+++ b/macro/mvd/mvd_CbmUniGen_reco_cluster.C
@@ -204,6 +204,7 @@ void mvd_CbmUniGen_reco_cluster(TString input = "auau.25gev", TString system = "
   run->AddTask(stsFindHits);
   // -------------------------------------------------------------------------
   // -----   STS track finding   --------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1                    = new CbmL1();
diff --git a/macro/obsolete/run_reco_flow.C b/macro/obsolete/run_reco_flow.C
index 3b647b9b5c23cb866b7bf308bc5451e7f9107967..42c63fe11cb1ce0610c2cf7086f3d35ed3875c8a 100644
--- a/macro/obsolete/run_reco_flow.C
+++ b/macro/obsolete/run_reco_flow.C
@@ -140,6 +140,7 @@ void run_reco_flow(Int_t nEvents = 2, Int_t En = 10, const char* setup = "sis300
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
 
diff --git a/macro/rich/alignment/Sim_Thesis/run_reco_alignment.C b/macro/rich/alignment/Sim_Thesis/run_reco_alignment.C
index 9d9fe08bf020b077115312ded0e941fdd8375761..9c7ef11483a9a4d66eef674d7dac31ecd5b36fdb 100644
--- a/macro/rich/alignment/Sim_Thesis/run_reco_alignment.C
+++ b/macro/rich/alignment/Sim_Thesis/run_reco_alignment.C
@@ -203,6 +203,7 @@ void run_reco_alignment(Int_t nEvents = 90000)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1                    = new CbmL1();
diff --git a/macro/rich/alignment/Sim_Thesis/run_reco_backup.C b/macro/rich/alignment/Sim_Thesis/run_reco_backup.C
index 2c271a1799bf4aab4a429e1a85579098eaec859f..cc639b0cf326340c49490600dcbdbeb81a7fbe86 100644
--- a/macro/rich/alignment/Sim_Thesis/run_reco_backup.C
+++ b/macro/rich/alignment/Sim_Thesis/run_reco_backup.C
@@ -222,6 +222,7 @@ void run_reco(Int_t nEvents = 50, Int_t studyName = 3, Int_t corrFlag = 3)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/Sim_Thesis/run_reco_backup.C.old b/macro/rich/alignment/Sim_Thesis/run_reco_backup.C.old
index 115be6b885b48407a1c170e0aba3e2b58e4e4977..bc989c77db3f87cec3e2d117888434bf76fa2e57 100644
--- a/macro/rich/alignment/Sim_Thesis/run_reco_backup.C.old
+++ b/macro/rich/alignment/Sim_Thesis/run_reco_backup.C.old
@@ -95,6 +95,7 @@ void run_reco(Int_t nEvents = 100)
 	FairTask* stsFindHits = new CbmStsFindHits();
 	run->AddTask(stsFindHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
 	CbmKF* kalman = new CbmKF();
 	run->AddTask(kalman);
 	CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/Sim_Thesis/run_reco_correction.C b/macro/rich/alignment/Sim_Thesis/run_reco_correction.C
index 387ab6c0847e4822ddcbc7e895013dd77626a22b..0ac67d517f15a6f82503285908c48a7d23c4e5a7 100644
--- a/macro/rich/alignment/Sim_Thesis/run_reco_correction.C
+++ b/macro/rich/alignment/Sim_Thesis/run_reco_correction.C
@@ -192,6 +192,7 @@ void run_reco_correction(Int_t nEvents = 3000)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1                    = new CbmL1();
diff --git a/macro/rich/alignment/gauss_distrib/run_reco.C b/macro/rich/alignment/gauss_distrib/run_reco.C
index 76dfd49db16fdedbc121acc3c50a6ca8af370ef5..a0128ce93085f9b465c55b10ba37e20d6dfa8028 100644
--- a/macro/rich/alignment/gauss_distrib/run_reco.C
+++ b/macro/rich/alignment/gauss_distrib/run_reco.C
@@ -217,6 +217,7 @@ void run_reco(Int_t nEvents = 50000, Int_t studyName = 0, Int_t corrFlag = 0)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/gauss_distrib/run_reco.C.old b/macro/rich/alignment/gauss_distrib/run_reco.C.old
index f4c0be526d995d58637dfed6e9fa708071d0ec77..98b61d485df1b5ee3f210ff23052bb902236cfd3 100644
--- a/macro/rich/alignment/gauss_distrib/run_reco.C.old
+++ b/macro/rich/alignment/gauss_distrib/run_reco.C.old
@@ -171,6 +171,7 @@ void run_reco(Int_t nEvents = 10)
     // -------------------------------------------------------------------------
 
     // ---  STS track finding   ------------------------------------------------
+    run->AddTask(new CbmTrackingDetectorInterfaceInit());
     CbmKF* kalman = new CbmKF();
     run->AddTask(kalman);
     CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/gauss_distrib/run_reco_alignment.C b/macro/rich/alignment/gauss_distrib/run_reco_alignment.C
index 9d9fe08bf020b077115312ded0e941fdd8375761..9c7ef11483a9a4d66eef674d7dac31ecd5b36fdb 100644
--- a/macro/rich/alignment/gauss_distrib/run_reco_alignment.C
+++ b/macro/rich/alignment/gauss_distrib/run_reco_alignment.C
@@ -203,6 +203,7 @@ void run_reco_alignment(Int_t nEvents = 90000)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1                    = new CbmL1();
diff --git a/macro/rich/alignment/gauss_distrib/run_reco_alignment.C.old b/macro/rich/alignment/gauss_distrib/run_reco_alignment.C.old
index b67719709c4a693c01ec0700f6f3d45d74cf86ef..1eb9cb35ca4790a7f6d535f0eadc604fdc90d5b3 100644
--- a/macro/rich/alignment/gauss_distrib/run_reco_alignment.C.old
+++ b/macro/rich/alignment/gauss_distrib/run_reco_alignment.C.old
@@ -172,6 +172,7 @@ void run_reco_alignment(Int_t nEvents = 200000)
     // -------------------------------------------------------------------------
 
     // ---  STS track finding   ------------------------------------------------
+    run->AddTask(new CbmTrackingDetectorInterfaceInit());
     CbmKF* kalman = new CbmKF();
     run->AddTask(kalman);
     CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/gauss_distrib/run_reco_correction.C b/macro/rich/alignment/gauss_distrib/run_reco_correction.C
index 387ab6c0847e4822ddcbc7e895013dd77626a22b..0ac67d517f15a6f82503285908c48a7d23c4e5a7 100644
--- a/macro/rich/alignment/gauss_distrib/run_reco_correction.C
+++ b/macro/rich/alignment/gauss_distrib/run_reco_correction.C
@@ -192,6 +192,7 @@ void run_reco_correction(Int_t nEvents = 3000)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1                    = new CbmL1();
diff --git a/macro/rich/alignment/inner_outer_region_study/run_mirror_reco.C b/macro/rich/alignment/inner_outer_region_study/run_mirror_reco.C
index 454bb884744188c5d0fb5ba275ee532bac87b7f1..43133f1daff9f80a327a53011ff8ece857054167 100644
--- a/macro/rich/alignment/inner_outer_region_study/run_mirror_reco.C
+++ b/macro/rich/alignment/inner_outer_region_study/run_mirror_reco.C
@@ -121,6 +121,7 @@ void run_mirror_reco(Int_t nEvents = 50)
   FairTask* stsFindHits = new CbmStsFindHits();
   run->AddTask(stsFindHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_alignment.C b/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_alignment.C
index cd82ec84f1484072004db2d3d07380fd1580c969..74013d8455f8f60733d17434f3be015b3a41db4e 100644
--- a/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_alignment.C
+++ b/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_alignment.C
@@ -121,6 +121,7 @@ void run_mirror_reco_alignment(Int_t nEvents = 2000)
   FairTask* stsFindHits = new CbmStsFindHits();
   run->AddTask(stsFindHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_alignment_test.C b/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_alignment_test.C
index f098cd3d3d762fd7a856596ab743e6c6e3f19829..bd52464a45a6182b36f7705dacd1c8fa42ede7f7 100644
--- a/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_alignment_test.C
+++ b/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_alignment_test.C
@@ -131,6 +131,7 @@ void run_mirror_reco_alignment_test(Int_t nEvents = 5000, TString tile = "", TSt
   FairTask* stsFindHits = new CbmStsFindHits();
   run->AddTask(stsFindHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_correction.C b/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_correction.C
index b0dfbb6aa1238945f46ce1739cd24026aa6a1fe6..5bb948de8eea7b8c014f631099c805d19f0b945c 100644
--- a/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_correction.C
+++ b/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_correction.C
@@ -121,6 +121,7 @@ void run_mirror_reco_correction(Int_t nEvents = 2000)
   FairTask* stsFindHits = new CbmStsFindHits();
   run->AddTask(stsFindHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_correction_test.C b/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_correction_test.C
index 1690e6381be48f5ec5aaeb65f1f2179528619ad4..1a5f3e747d06261c2662d62f0442c2bd384c24e8 100644
--- a/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_correction_test.C
+++ b/macro/rich/alignment/inner_outer_region_study/run_mirror_reco_correction_test.C
@@ -131,6 +131,7 @@ void run_mirror_reco_correction_test(Int_t nEvents = 5000, TString tile = "", TS
   FairTask* stsFindHits = new CbmStsFindHits();
   run->AddTask(stsFindHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/matching/run_reco_matching.C b/macro/rich/alignment/matching/run_reco_matching.C
index 1a5e6ed134bbe2d9914a818560e889686213c2bf..3173feeb0ab5ad054cfec00927a1908ba1020b24 100644
--- a/macro/rich/alignment/matching/run_reco_matching.C
+++ b/macro/rich/alignment/matching/run_reco_matching.C
@@ -175,6 +175,7 @@ void run_reco_matching(Int_t nEvents = 100)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1                    = new CbmL1();
diff --git a/macro/rich/alignment/matching/run_reco_matching_alignment.C b/macro/rich/alignment/matching/run_reco_matching_alignment.C
index d3682857ecf384f8f8d1a6dc69a202edf6a545c7..50810c3d6a8cb707da0e255c0656073649a55c77 100644
--- a/macro/rich/alignment/matching/run_reco_matching_alignment.C
+++ b/macro/rich/alignment/matching/run_reco_matching_alignment.C
@@ -175,6 +175,7 @@ void run_reco_matching_alignment(Int_t nEvents = 100)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1                    = new CbmL1();
diff --git a/macro/rich/alignment/matching/run_reco_matching_correction.C b/macro/rich/alignment/matching/run_reco_matching_correction.C
index 5c8e89915a190a8851c7ab726b79fb4195a8d180..ba71550bf46d606cb204b6d4935619787662b275 100644
--- a/macro/rich/alignment/matching/run_reco_matching_correction.C
+++ b/macro/rich/alignment/matching/run_reco_matching_correction.C
@@ -174,6 +174,7 @@ void run_reco_matching_correction(Int_t nEvents = 100)
     // -------------------------------------------------------------------------
 
     // ---  STS track finding   ------------------------------------------------
+    run->AddTask(new CbmTrackingDetectorInterfaceInit());
     CbmKF* kalman = new CbmKF();
     run->AddTask(kalman);
     CbmL1* l1                    = new CbmL1();
diff --git a/macro/rich/alignment/position/run_reco_position.C b/macro/rich/alignment/position/run_reco_position.C
index c8af71e547613ff2172ac348995be0b9b30f3aec..bc9aa8be983b7dd572bf2e6fca85ba0f29379848 100644
--- a/macro/rich/alignment/position/run_reco_position.C
+++ b/macro/rich/alignment/position/run_reco_position.C
@@ -132,6 +132,7 @@ void run_reco_position(Int_t nEvents = 500000, Int_t Flag = 0)
   FairTask* stsFindHits = new CbmStsFindHits();
   run->AddTask(stsFindHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/position/run_reco_position2.C b/macro/rich/alignment/position/run_reco_position2.C
index fb3f349756a264d687d18cf3c4d3f66b18caa7d2..f1223f0c4a358a70d4afab2454a237ead7187460 100644
--- a/macro/rich/alignment/position/run_reco_position2.C
+++ b/macro/rich/alignment/position/run_reco_position2.C
@@ -209,6 +209,7 @@ void run_reco_position2(Int_t nEvents = 100, Int_t Flag = 0)
   // -------------------------------------------------------------------------
 
   /*    // ---  STS track finding   ------------------------------------------------
+    run->AddTask(new CbmTrackingDetectorInterfaceInit());
     CbmKF* kalman = new CbmKF();
     run->AddTask(kalman);
     CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/position/run_reco_position3.C b/macro/rich/alignment/position/run_reco_position3.C
index 9b9765d32d45e0ba23a7807a21ea5fc9802c8d95..fd0d702a0707abe6aaadb897a9da0e86873b1c98 100644
--- a/macro/rich/alignment/position/run_reco_position3.C
+++ b/macro/rich/alignment/position/run_reco_position3.C
@@ -173,6 +173,7 @@ void run_reco_position3(Int_t nEvents = 100, Int_t Flag = 0)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1                    = new CbmL1();
diff --git a/macro/rich/alignment/position/run_reco_position4.C b/macro/rich/alignment/position/run_reco_position4.C
index d7680b10b1569b578e0368c5fab7a3ea10ffb899..be82d74ec29bd560797100f4d87a7bb5cf9f6efe 100644
--- a/macro/rich/alignment/position/run_reco_position4.C
+++ b/macro/rich/alignment/position/run_reco_position4.C
@@ -177,6 +177,7 @@ void run_reco_position4(Int_t nEvents = 100)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1                    = new CbmL1();
diff --git a/macro/rich/alignment/position/run_reco_position_old.C b/macro/rich/alignment/position/run_reco_position_old.C
index c719e51f37c48059eae09419837d8fac4f20ac12..9784e8b4ba89ad1d62f3cfdfc65f544421b2dd43 100644
--- a/macro/rich/alignment/position/run_reco_position_old.C
+++ b/macro/rich/alignment/position/run_reco_position_old.C
@@ -137,6 +137,7 @@ void run_reco_position(Int_t nEvents = 500000, TString numb = "00001", Int_t Fla
   FairTask* stsFindHits = new CbmStsFindHits();
   run->AddTask(stsFindHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/run_alignment_reco.C b/macro/rich/alignment/run_alignment_reco.C
index eb2988bf7c7f956c0b9816a09c228105e646e726..8ef3530604fa96f26d5c428279fb1a640157ec83 100644
--- a/macro/rich/alignment/run_alignment_reco.C
+++ b/macro/rich/alignment/run_alignment_reco.C
@@ -132,6 +132,7 @@ void run_alignment_reco(Int_t nEvents = 5000, TString Rot = "5")
   FairTask* stsFindHits = new CbmStsFindHits();
   run->AddTask(stsFindHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/run_correction_reco.C b/macro/rich/alignment/run_correction_reco.C
index 76444225302882dff1774d8a3d076065c25ad501..8602f4705dbac2aa0658a8ae742189bd4874a80b 100644
--- a/macro/rich/alignment/run_correction_reco.C
+++ b/macro/rich/alignment/run_correction_reco.C
@@ -132,6 +132,7 @@ void run_correction_reco(Int_t nEvents = 5000, TString Rot = "5")
   FairTask* stsFindHits = new CbmStsFindHits();
   run->AddTask(stsFindHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/run_mirror_reco.C b/macro/rich/alignment/run_mirror_reco.C
index 454bb884744188c5d0fb5ba275ee532bac87b7f1..43133f1daff9f80a327a53011ff8ece857054167 100644
--- a/macro/rich/alignment/run_mirror_reco.C
+++ b/macro/rich/alignment/run_mirror_reco.C
@@ -121,6 +121,7 @@ void run_mirror_reco(Int_t nEvents = 50)
   FairTask* stsFindHits = new CbmStsFindHits();
   run->AddTask(stsFindHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/run_mirror_reco_alignment.C b/macro/rich/alignment/run_mirror_reco_alignment.C
index cd82ec84f1484072004db2d3d07380fd1580c969..74013d8455f8f60733d17434f3be015b3a41db4e 100644
--- a/macro/rich/alignment/run_mirror_reco_alignment.C
+++ b/macro/rich/alignment/run_mirror_reco_alignment.C
@@ -121,6 +121,7 @@ void run_mirror_reco_alignment(Int_t nEvents = 2000)
   FairTask* stsFindHits = new CbmStsFindHits();
   run->AddTask(stsFindHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/run_mirror_reco_correction.C b/macro/rich/alignment/run_mirror_reco_correction.C
index e71844f6a9531409bb6a89c7d15f26314d8dbc73..e5230ed62827bf266d6fa3cb34f996b13465ec63 100644
--- a/macro/rich/alignment/run_mirror_reco_correction.C
+++ b/macro/rich/alignment/run_mirror_reco_correction.C
@@ -123,6 +123,7 @@ void run_mirror_reco_correction(Int_t nEvents = 2000)
   FairTask* stsFindHits = new CbmStsFindHits();
   run->AddTask(stsFindHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/run_reco.C b/macro/rich/alignment/run_reco.C
index 360cf8afdb7df29052fbcc1a634c0c0f0ae7e97c..0042250f9e83709af8c4457ebef1d01b989bb99e 100644
--- a/macro/rich/alignment/run_reco.C
+++ b/macro/rich/alignment/run_reco.C
@@ -128,6 +128,7 @@ void run_reco(Int_t nEvents = 5000)
   FairTask* stsFindHits = new CbmStsFindHits();
   run->AddTask(stsFindHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/rich/alignment/single_tile/run_reco.C b/macro/rich/alignment/single_tile/run_reco.C
index ebd3d2489e1ab47325a4a7151c217a2ae9830713..dcd4e555af0d89ec2c632c98242c6891a9589cb3 100644
--- a/macro/rich/alignment/single_tile/run_reco.C
+++ b/macro/rich/alignment/single_tile/run_reco.C
@@ -201,6 +201,7 @@ void run_reco(Int_t nEvents = 100000)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1                    = new CbmL1();
diff --git a/macro/rich/alignment/single_tile/run_reco_alignment.C b/macro/rich/alignment/single_tile/run_reco_alignment.C
index 243f0b660c45520e72c458ba4c06ee4651ce30d7..892d3edca6383b09ac03e53d9b6a856032890f0b 100644
--- a/macro/rich/alignment/single_tile/run_reco_alignment.C
+++ b/macro/rich/alignment/single_tile/run_reco_alignment.C
@@ -192,6 +192,7 @@ void run_reco_alignment(Int_t nEvents = 100000)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1                    = new CbmL1();
diff --git a/macro/rich/alignment/single_tile/run_reco_correction.C b/macro/rich/alignment/single_tile/run_reco_correction.C
index 387ab6c0847e4822ddcbc7e895013dd77626a22b..0ac67d517f15a6f82503285908c48a7d23c4e5a7 100644
--- a/macro/rich/alignment/single_tile/run_reco_correction.C
+++ b/macro/rich/alignment/single_tile/run_reco_correction.C
@@ -192,6 +192,7 @@ void run_reco_correction(Int_t nEvents = 3000)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1                    = new CbmL1();
diff --git a/macro/rich/geotest/legacy/RotPMT/Run_Reco_GeoOpt_Batch.C b/macro/rich/geotest/legacy/RotPMT/Run_Reco_GeoOpt_Batch.C
index 273ebafbb0e2761721bbdbaf3dedbe58c3245cd3..b891dceef3106fe885719ae528d860cb9baa7d25 100644
--- a/macro/rich/geotest/legacy/RotPMT/Run_Reco_GeoOpt_Batch.C
+++ b/macro/rich/geotest/legacy/RotPMT/Run_Reco_GeoOpt_Batch.C
@@ -115,6 +115,7 @@ void Run_Reco_GeoOpt_Batch(Int_t nEvents = 1)
   run->SetInputFile(SimFile);
   run->SetOutputFile(RecFile);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
 
diff --git a/macro/rich/geotest/legacy/TransPMT/Run_Reco_GeoOpt_Batch.C b/macro/rich/geotest/legacy/TransPMT/Run_Reco_GeoOpt_Batch.C
index c1273e9f1b46f50a0eab35d2a9971d2299fc13ba..bbec38f59b9d788b7699084b6a4a3b7bd322cfcb 100644
--- a/macro/rich/geotest/legacy/TransPMT/Run_Reco_GeoOpt_Batch.C
+++ b/macro/rich/geotest/legacy/TransPMT/Run_Reco_GeoOpt_Batch.C
@@ -70,6 +70,8 @@ void Run_Reco_GeoOpt_Batch(Int_t nEvents = 10, int PMTtransY = 0, int PMTtransZ
   run->SetInputFile(SimFile);
   run->SetOutputFile(RecFile);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
+  
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
 
diff --git a/macro/rich/geotest/run_reco.C b/macro/rich/geotest/run_reco.C
index 8d31f7f32dadf9e7c22efc625cd5b855eca9566b..42eedb8125776e1168e2315e09e0658fc9eff0db 100644
--- a/macro/rich/geotest/run_reco.C
+++ b/macro/rich/geotest/run_reco.C
@@ -44,6 +44,7 @@ void run_reco(const string& testType,  // "geoTest" or "urqmdTest"
     CbmRecoSts* stsReco = new CbmRecoSts(kCbmRecoTimeslice);
     run->AddTask(stsReco);
 
+    run->AddTask(new CbmTrackingDetectorInterfaceInit());
     CbmKF* kalman = new CbmKF();
     run->AddTask(kalman);
     CbmL1* l1 = new CbmL1("L1", 0);
diff --git a/macro/rich/prototype/run_reco.C b/macro/rich/prototype/run_reco.C
index c01c06b3f739edc5e38cf912805656e0a7a3f94e..f4f56eb55ef69b97345facf2457b2b52bc879c10 100644
--- a/macro/rich/prototype/run_reco.C
+++ b/macro/rich/prototype/run_reco.C
@@ -48,6 +48,7 @@ void run_reco(Int_t nEvents = 100000)
   run->SetInputFile(inFile);
   run->SetOutputFile(outFile);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
 
diff --git a/macro/rich/run/run_reco.C b/macro/rich/run/run_reco.C
index 30b3c89020b97b8f138834c5bc730be854e1c3e0..fc895706c60dab9770af9298f55c92fed71b415c 100644
--- a/macro/rich/run/run_reco.C
+++ b/macro/rich/run/run_reco.C
@@ -200,6 +200,7 @@ void run_reco(const string& traFile  = "/Users/slebedev/Development/cbm/data/sim
 
 
   if (useMvd || useSts) {
+    run->AddTask(new CbmTrackingDetectorInterfaceInit());
     CbmKF* kalman = new CbmKF();
     run->AddTask(kalman);
     CbmL1* l1 = 0;
diff --git a/macro/run/modules/reconstruct.C b/macro/run/modules/reconstruct.C
index 5dc01e6fa4798f59b79f3e7d01e902e38c039959..4335153b3a50e71ab351d677d8cdf0f8aed64a47 100644
--- a/macro/run/modules/reconstruct.C
+++ b/macro/run/modules/reconstruct.C
@@ -169,6 +169,7 @@ Bool_t reconstruct(Bool_t useMC = kFALSE, Bool_t searchPV = kTRUE)
 
 
   // -----   Track finding in (MVD+) STS    ----------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = nullptr;
diff --git a/macro/run/run_phys.C b/macro/run/run_phys.C
index 810687242ce48abd81af7ccad5f8dee693025d8b..3650df1e84427f9552a2c6fef97c8a26a21b8a05 100644
--- a/macro/run/run_phys.C
+++ b/macro/run/run_phys.C
@@ -60,6 +60,8 @@ void run_phys(Int_t nEvents = 2, TString dataset = "test", TString setupName = "
   mcManager->AddFile(inFile);
   run->AddTask(mcManager);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
+
   //          Adjust this part according to your requirements
   CbmKF* KF = new CbmKF();
   run->AddTask(KF);
diff --git a/macro/run/run_reco.C b/macro/run/run_reco.C
index 5f7af4a3adce98c7e2bdbefb98bc479c58142f6b..0959142ead4d1932285c7ade73f310ce52badfd0 100644
--- a/macro/run/run_reco.C
+++ b/macro/run/run_reco.C
@@ -369,8 +369,7 @@ void run_reco(TString input = "", Int_t nTimeSlices = -1, Int_t firstTimeSlice =
 
   // -----   Track finding in STS (+ MVD)    --------------------------------
   if (useMvd || useSts) {
-    // Geometry interface initializer for tracker
-    run->AddTask(new CbmTrackingDetectorInterfaceInit());
+    run->AddTask(new CbmTrackingDetectorInterfaceInit()); // Geometry interface initializer for tracker
 
     // Kalman filter
     auto kalman = new CbmKF();
diff --git a/macro/sts/sts_reco.C b/macro/sts/sts_reco.C
index d95c1d250ee9cb8304de18eb99aa94bb61830538..ec98998db19ea84b8ceef253b3769e7292ad9e45 100644
--- a/macro/sts/sts_reco.C
+++ b/macro/sts/sts_reco.C
@@ -107,7 +107,9 @@ void sts_reco(Int_t nEvents = 1)
   run->AddTask(findHits);
 
   // -----   STS track finding   --------------------------------------------
-  /*FairTask* kalman= new CbmKF();
+  /*
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
+  FairTask* kalman= new CbmKF();
   run->AddTask(kalman);
   FairTask* l1 = new CbmL1();
   run->AddTask(l1);
diff --git a/macro/sts/sts_reco_all.C b/macro/sts/sts_reco_all.C
index df18e7dde206e9193847c8ac1e7a3a2217be5245..7589772695bf321f2e32eaf2d15ac1e0247b28c8 100644
--- a/macro/sts/sts_reco_all.C
+++ b/macro/sts/sts_reco_all.C
@@ -171,6 +171,7 @@ void sts_reco_all(Int_t nEvents, Float_t energy, Int_t index)
 
 
   // -----   STS track finding   --------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1("L1", 1, 3, 0);
diff --git a/macro/sts/sts_reco_ideal.C b/macro/sts/sts_reco_ideal.C
index 74ae9b654bff65f59816ef6100285533d14c61d6..0b6a2e52db5d48abe233443f8951c769c41d82ab 100644
--- a/macro/sts/sts_reco_ideal.C
+++ b/macro/sts/sts_reco_ideal.C
@@ -118,6 +118,7 @@ void sts_reco_ideal(Int_t nEvents = 1)
 
 
   // -----   STS track finding   --------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   FairTask* kalman = new CbmKF();
   run->AddTask(kalman);
   FairTask* l1 = new CbmL1();
diff --git a/macro/sts/sts_reco_raw.C b/macro/sts/sts_reco_raw.C
index b6fddc76b47fb2ea58b6024f0fc6280dccb120fe..9127c8dfea2bd332328120185c71ee9e6061cdb4 100644
--- a/macro/sts/sts_reco_raw.C
+++ b/macro/sts/sts_reco_raw.C
@@ -82,6 +82,7 @@
 
 
   // -----   STS track finding   --------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   FairTask* kalman = new CbmKF();
   run->AddTask(kalman);
   FairTask* l1 = new CbmL1();
diff --git a/macro/tof/beamtime/feb15/ana_hits.C b/macro/tof/beamtime/feb15/ana_hits.C
index 81d22e8eeaded357d7fc668b750c49d779d56810..e0e3be16a580d105b23f5224c7d0d8e9659dc27f 100644
--- a/macro/tof/beamtime/feb15/ana_hits.C
+++ b/macro/tof/beamtime/feb15/ana_hits.C
@@ -88,6 +88,7 @@ void ana_hits(Int_t nEvents = 10, Int_t iSel = 1, Int_t iGenCor = 1, char* cFile
   // ===                       Tracking                                    ===
   // =========================================================================
   CbmStsDigitize* stsDigitize = new CbmStsDigitize();  //necessary for kalman !!
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman               = new CbmKF();
 
   CbmTofTrackFinder* tofTrackFinder = new CbmTofTrackFinderNN();
diff --git a/macro/tof/beamtime/feb15/dis_hits.C b/macro/tof/beamtime/feb15/dis_hits.C
index 3b5c306da17d9b2b048938e42f8545c2dfb07e60..007f0169a30645f0fcad42ebd420636dd84f2a34 100644
--- a/macro/tof/beamtime/feb15/dis_hits.C
+++ b/macro/tof/beamtime/feb15/dis_hits.C
@@ -85,6 +85,7 @@ void dis_hits(Int_t nEvents = 10, Int_t iSel = 1, Int_t iGenCor = 1, char* cFile
   // ===                       Tracking                                    ===
   // =========================================================================
   CbmStsDigitize* stsDigitize = new CbmStsDigitize();  //necessary for kalman !!
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman               = new CbmKF();
 
   CbmTofTrackFinder* tofTrackFinder = new CbmTofTrackFinderNN();
diff --git a/macro/tof/beamtime/lab16/ana_hits.C b/macro/tof/beamtime/lab16/ana_hits.C
index 9d68ac02ab2a475561117a7d02530fb24174ba74..025d9899fa6a20b1cb03e640e992d40c80df34ac 100644
--- a/macro/tof/beamtime/lab16/ana_hits.C
+++ b/macro/tof/beamtime/lab16/ana_hits.C
@@ -101,6 +101,7 @@ void ana_hits(Int_t nEvents = 10000000, Int_t iSel = 1, Int_t iGenCor = 1, char*
   // =========================================================================
   /*
    CbmStsDigitize* stsDigitize = new CbmStsDigitize();//necessary for kalman !!
+   run->AddTask(new CbmTrackingDetectorInterfaceInit());
    CbmKF* kalman = new CbmKF();
 
    CbmTofTrackFinder* tofTrackFinder= new CbmTofTrackFinderNN();
diff --git a/macro/tof/beamtime/lab16/ana_hits_nh.C b/macro/tof/beamtime/lab16/ana_hits_nh.C
index 4e9ef51ec7ddc57469bb51778f5f874d2b524197..6b7b895be030ab88b9bbe3c047324b8c4e52e1c2 100644
--- a/macro/tof/beamtime/lab16/ana_hits_nh.C
+++ b/macro/tof/beamtime/lab16/ana_hits_nh.C
@@ -98,6 +98,7 @@ void ana_hits(Int_t nEvents = 10, Int_t iSel = 1, Int_t iGenCor = 1, char* cFile
   // =========================================================================
   /*
    CbmStsDigitize* stsDigitize = new CbmStsDigitize(); //necessary for kalman !!
+   run->AddTask(new CbmTrackingDetectorInterfaceInit());
    CbmKF* kalman = new CbmKF();
 
    CbmTofTrackFinder* tofTrackFinder= new CbmTofTrackFinderNN();
diff --git a/macro/tof/beamtime/lab16/dis_digi.C b/macro/tof/beamtime/lab16/dis_digi.C
index 911fa3649878920181ec770930085f83c3fcc532..509ccfc40d150f62f33680cdabe5be895aaae6b3 100644
--- a/macro/tof/beamtime/lab16/dis_digi.C
+++ b/macro/tof/beamtime/lab16/dis_digi.C
@@ -230,6 +230,7 @@ void dis_digi(Int_t nEvents = 100000, Int_t calMode = 0, Int_t calSel = -1, Int_
   // ===                       Tracking                                    ===
   // =========================================================================
   CbmStsDigitize* stsDigitize = new CbmStsDigitize();  //necessary for kalman !!
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman               = new CbmKF();
 
   CbmTofTrackFinder* tofTrackFinder = new CbmTofTrackFinderNN();
diff --git a/macro/tof/beamtime/lab16/dis_hits.C b/macro/tof/beamtime/lab16/dis_hits.C
index 3faccbb0d559e2bc22e6f04992091ec81138f9f7..b8851ca2114fff24ecae662bfb42526076bf78e4 100644
--- a/macro/tof/beamtime/lab16/dis_hits.C
+++ b/macro/tof/beamtime/lab16/dis_hits.C
@@ -84,6 +84,7 @@ void dis_hits(Int_t nEvents = 10, Int_t iSel = 1, Int_t iGenCor = 1, char* cFile
   // ===                       Tracking                                    ===
   // =========================================================================
   CbmStsDigitize* stsDigitize = new CbmStsDigitize();  //necessary for kalman !!
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman               = new CbmKF();
 
   CbmTofTrackFinder* tofTrackFinder = new CbmTofTrackFinderNN();
diff --git a/macro/tof/beamtime/nov15/ana_hits.C b/macro/tof/beamtime/nov15/ana_hits.C
index d9e0cdd1778241663cc93ec6c9ba484daac55656..2eda248438cb405f69e8adba5d35dc47fd2c0985 100644
--- a/macro/tof/beamtime/nov15/ana_hits.C
+++ b/macro/tof/beamtime/nov15/ana_hits.C
@@ -92,6 +92,7 @@ void ana_hits(Int_t nEvents = 10, Int_t iSel = 1, Int_t iGenCor = 1, TString cFi
   // =========================================================================
   /*
    CbmStsDigitize* stsDigitize = new CbmStsDigitize(); //necessary for kalman !!
+   run->AddTask(new CbmTrackingDetectorInterfaceInit());
    CbmKF* kalman = new CbmKF();
 
    CbmTofTrackFinder* tofTrackFinder= new CbmTofTrackFinderNN();
diff --git a/macro/tof/beamtime/nov15/ana_trks.C b/macro/tof/beamtime/nov15/ana_trks.C
index fecef6fa338f07505b65f43390284be4bda77c6f..a35ded74d9ea390962d440091265f5df57c38e9c 100644
--- a/macro/tof/beamtime/nov15/ana_trks.C
+++ b/macro/tof/beamtime/nov15/ana_trks.C
@@ -91,6 +91,7 @@ void ana_trks(Int_t nEvents = 10, Int_t iSel = 1, Int_t iGenCor = 1, char* cFile
   // ===                       Tracking                                    ===
   // =========================================================================
   CbmStsDigitize* stsDigitize = new CbmStsDigitize();  //necessary for kalman !!
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman               = new CbmKF();
 
   CbmTofTrackFinder* tofTrackFinder = new CbmTofTrackFinderNN();
diff --git a/macro/tof/beamtime/nov15/dis_digi.C b/macro/tof/beamtime/nov15/dis_digi.C
index 6e1926302beff752f988dde9b639c836b5913c07..c94687847d552a9458f86307e5ca138d1ee22caa 100644
--- a/macro/tof/beamtime/nov15/dis_digi.C
+++ b/macro/tof/beamtime/nov15/dis_digi.C
@@ -230,6 +230,7 @@ void dis_digi(Int_t nEvents = 100000, Int_t calMode = 0, Int_t calSel = -1, Int_
   // ===                       Tracking                                    ===
   // =========================================================================
   CbmStsDigitize* stsDigitize = new CbmStsDigitize();  //necessary for kalman !!
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman               = new CbmKF();
 
   CbmTofTrackFinder* tofTrackFinder = new CbmTofTrackFinderNN();
diff --git a/macro/tof/beamtime/nov15/dis_hits.C b/macro/tof/beamtime/nov15/dis_hits.C
index b8e548f95e72ddea02076654be27efd27ccf40e8..00dffdfd8057d54707b3d58c3cbd214defe1c7c3 100644
--- a/macro/tof/beamtime/nov15/dis_hits.C
+++ b/macro/tof/beamtime/nov15/dis_hits.C
@@ -84,6 +84,7 @@ void dis_hits(Int_t nEvents = 10, Int_t iSel = 1, Int_t iGenCor = 1, char* cFile
   // ===                       Tracking                                    ===
   // =========================================================================
   CbmStsDigitize* stsDigitize = new CbmStsDigitize();  //necessary for kalman !!
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman               = new CbmKF();
 
   CbmTofTrackFinder* tofTrackFinder = new CbmTofTrackFinderNN();
diff --git a/macro/tof/deb/global_phys.C b/macro/tof/deb/global_phys.C
index 9569eef7c4893c4e1c81595edba64cafe3eff585..8843304d69e87b6f4227bfd100c8c3951ded024a 100644
--- a/macro/tof/deb/global_phys.C
+++ b/macro/tof/deb/global_phys.C
@@ -43,6 +43,8 @@ void global_phys(Int_t nEvents = 10, Int_t seed = 555)
   run->SetOutputFile(analysisFile);
   // ------------------------------------------------------------------------
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
+
   CbmKF* KF = new CbmKF();
   run->AddTask(KF);
 
diff --git a/macro/tof/deb/global_reco.C b/macro/tof/deb/global_reco.C
index 565dc19ae98d40265a10862cfe2469c19bd3deb3..d831cecab9bac8453287c6a8bcd1c2d8acd2c010 100644
--- a/macro/tof/deb/global_reco.C
+++ b/macro/tof/deb/global_reco.C
@@ -105,6 +105,7 @@ void global_reco(Int_t nEvents = 100,  // number of events
   FairTask* stsMatchHits = new CbmStsMatchHits("STS Hit Matcher", iVerbose);
   run->AddTask(stsMatchHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
 
   FairTask* kalman = new CbmKF();
   run->AddTask(kalman);
diff --git a/macro/tof/deb/global_reco100.C b/macro/tof/deb/global_reco100.C
index a7c35f4bc33f87ae1186b3864dbb3d8cc8cc0ae9..975e1da1ae4d0091519c1df3348a1acef6d82feb 100644
--- a/macro/tof/deb/global_reco100.C
+++ b/macro/tof/deb/global_reco100.C
@@ -105,6 +105,7 @@ void global_reco100(Int_t nEvents = 100,  // number of events
   FairTask* stsMatchHits = new CbmStsMatchHits("STS Hit Matcher", iVerbose);
   run->AddTask(stsMatchHits);
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
 
   FairTask* kalman = new CbmKF();
   run->AddTask(kalman);
diff --git a/macro/tof/deb/global_reco100box.C b/macro/tof/deb/global_reco100box.C
index 8e1e9a67e29a07d5f340ed7a1aaf5a770a05e07f..aa523cc708657ce0979ea97e92ec2e4ccd363eef 100644
--- a/macro/tof/deb/global_reco100box.C
+++ b/macro/tof/deb/global_reco100box.C
@@ -105,7 +105,7 @@ void global_reco100box(Int_t nEvents = 100,  // number of events
   FairTask* stsMatchHits = new CbmStsMatchHits("STS Hit Matcher", iVerbose);
   run->AddTask(stsMatchHits);
 
-
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   FairTask* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/tof/deb/global_reco104.C b/macro/tof/deb/global_reco104.C
index 3a6c1af89c39f8a8c9abb513824fbf7827d9340a..c06ecc298ab6ef18ca2669823b0eeeec764b7ea8 100644
--- a/macro/tof/deb/global_reco104.C
+++ b/macro/tof/deb/global_reco104.C
@@ -106,6 +106,7 @@ void global_reco104(Int_t nEvents = 100,  // number of events
   run->AddTask(stsMatchHits);
 
 
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   FairTask* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/tof/deb/tof_reco100.C b/macro/tof/deb/tof_reco100.C
index 522fbedd8ccfe512aff9498c69d606daef36c8da..4c87784bfc5ce23403eb1387d1aae690e306f776 100644
--- a/macro/tof/deb/tof_reco100.C
+++ b/macro/tof/deb/tof_reco100.C
@@ -153,6 +153,7 @@ void tof_reco100(Int_t nEvents = 1000)
 
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/tof/deb/tof_reco100box.C b/macro/tof/deb/tof_reco100box.C
index e0d64a3fb1147562a99d7e85552fd5263704d7ed..95971d2d0d66df826727ee198401ca4331056317 100644
--- a/macro/tof/deb/tof_reco100box.C
+++ b/macro/tof/deb/tof_reco100box.C
@@ -153,6 +153,7 @@ void tof_reco100box(Int_t nEvents = 1000)
 
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/tof/deb/tof_reco100p.C b/macro/tof/deb/tof_reco100p.C
index 9cba78873c6e75c14a23402cfd3185acf6bf0be6..4826078545e5715dfc531674a444c987877762c9 100644
--- a/macro/tof/deb/tof_reco100p.C
+++ b/macro/tof/deb/tof_reco100p.C
@@ -153,6 +153,7 @@ void tof_reco100p(Int_t nEvents = 1000)
 
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/tof/deb/tof_reco104.C b/macro/tof/deb/tof_reco104.C
index f09c8c60a51a440ea53a8a52202b2f5e1fb40c41..1595cd18494fb399b019937bc0085d1be63a2f85 100644
--- a/macro/tof/deb/tof_reco104.C
+++ b/macro/tof/deb/tof_reco104.C
@@ -153,6 +153,7 @@ void tof_reco104(Int_t nEvents = 1000)
 
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/tof/deb/tof_reco300.C b/macro/tof/deb/tof_reco300.C
index 60e4bb3ebe2959716b7ebabd754289d648c4b9c7..1969e006d5ffbf8998ca0264a29044fbc52dbdbb 100644
--- a/macro/tof/deb/tof_reco300.C
+++ b/macro/tof/deb/tof_reco300.C
@@ -151,6 +151,7 @@ void tof_reco300(Int_t nEvents = 1000)
 
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/tof/run_reco100.C b/macro/tof/run_reco100.C
index adc14017f23b73bac286d940d84ad98e5e565dcc..30bf11dbc8095358086288326bfc1bbe01211ba4 100644
--- a/macro/tof/run_reco100.C
+++ b/macro/tof/run_reco100.C
@@ -171,6 +171,7 @@ void run_reco100(Int_t nEvents = 2)
   // -------------------------------------------------------------------------
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/tof/tof_ana_Testbeam.C b/macro/tof/tof_ana_Testbeam.C
index c4e0af64147f213a0fa5c7ae72b5e039490bfd21..d0725250567c86e195236f38819794a6913c2456 100644
--- a/macro/tof/tof_ana_Testbeam.C
+++ b/macro/tof/tof_ana_Testbeam.C
@@ -51,6 +51,7 @@ void tof_ana_Testbeam(Int_t nEvents = 1000, Int_t iSel = 1, Int_t iGenCor = 1, I
   // ===                       Tracking                                    ===
   // =========================================================================
   CbmStsDigitize* stsDigitize = new CbmStsDigitize();  //necessary for kalman !!
+  fRun->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman               = new CbmKF();
 
   CbmTofTrackFinder* tofTrackFinder = new CbmTofTrackFinderNN();
diff --git a/macro/tof/tof_reco.C b/macro/tof/tof_reco.C
index 5091f24f8efba93fe7402179664ff275c686ce78..43c1bcfee88400a9f5e26c8a0c2fa61159fd4ad3 100644
--- a/macro/tof/tof_reco.C
+++ b/macro/tof/tof_reco.C
@@ -148,6 +148,7 @@ void tof_reco(Int_t nEvents = 2)
 
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/tof/tof_reco100.C b/macro/tof/tof_reco100.C
index 5653b1308b29acf012f4824b56dad9f2ec6d20cc..706b3df5ad7a250798ef5f017712eca6c09165f1 100644
--- a/macro/tof/tof_reco100.C
+++ b/macro/tof/tof_reco100.C
@@ -153,6 +153,7 @@ void tof_reco100(Int_t nEvents = 1000)
 
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/tracking/lx/run_reco.C b/macro/tracking/lx/run_reco.C
index d6b633b39f80e59554d4a15b297c7cae920606f8..b9f4df570821fcdc0742ff8e0434f7a736b5f530 100644
--- a/macro/tracking/lx/run_reco.C
+++ b/macro/tracking/lx/run_reco.C
@@ -290,6 +290,7 @@ void run_reco(int index = -1)
   }
 
   // -----   Track finding in (MVD+) STS    -----------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/trd/run_reco_clusterizer.C b/macro/trd/run_reco_clusterizer.C
index 58bde46b300eb8a53547956fe6499dabba640fac..fd3e35871e6726ecf914533c1f5044b3051518d7 100644
--- a/macro/trd/run_reco_clusterizer.C
+++ b/macro/trd/run_reco_clusterizer.C
@@ -185,6 +185,7 @@ void run_reco_clusterizer(Int_t nEvents = 1)
 
 
   // ---  STS track finding   ------------------------------------------------
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/trd/run_reco_clusterizerFast.C b/macro/trd/run_reco_clusterizerFast.C
index 567bf4b6d4123720f25ac812bf7350310e5bf3c5..44b456d5c84804d4cba1294a378b42b00c65d07e 100644
--- a/macro/trd/run_reco_clusterizerFast.C
+++ b/macro/trd/run_reco_clusterizerFast.C
@@ -186,6 +186,8 @@ void run_reco_clusterizerFast(Int_t nEvents = 1)
 
 
   // ---  STS track finding   ------------------------------------------------
+  // Geometry interface initializer for tracking
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/trd/run_reco_occupancy.C b/macro/trd/run_reco_occupancy.C
index fb7a5b20aba00d252dfe966de7bbf0cafaeb5c36..fa02c1a1fb24e023d84584bd2f38180b861fb278 100644
--- a/macro/trd/run_reco_occupancy.C
+++ b/macro/trd/run_reco_occupancy.C
@@ -270,6 +270,8 @@ void run_reco_occupancy(Int_t nEvents = 1000, const char* setup = "sis100_electr
 
 
   // ---  STS track finding   ------------------------------------------------
+  // Geometry interface initializer for tracking
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/trd/run_reco_photon.C b/macro/trd/run_reco_photon.C
index 6b5633c8c2ae9e3e315cd00b636e3c0f23cd77f6..00ccf3d4daefac3ddb48f35260cd53d600c9373e 100644
--- a/macro/trd/run_reco_photon.C
+++ b/macro/trd/run_reco_photon.C
@@ -183,6 +183,8 @@ void run_reco_photon(Int_t nEvents = 1, Int_t urqmd = 0)
 
 
   // ---  STS track finding   ------------------------------------------------
+  // Geometry interface initializer for tracking
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/macro/trd/run_reco_pi0.C b/macro/trd/run_reco_pi0.C
index b58e6a36401804f2e091483eedf8bd2d8f63be2a..21d41eac4b4f9a8950d6a653590b7564cf542981 100644
--- a/macro/trd/run_reco_pi0.C
+++ b/macro/trd/run_reco_pi0.C
@@ -230,6 +230,8 @@ void run_reco_pi0(Int_t nEvents = 1, Int_t urqmd = 0)
 
 
   // ---  STS track finding   ------------------------------------------------
+  // Geometry interface initializer for tracking
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
@@ -577,6 +579,7 @@ void run_reco_pi0(Int_t nEvents = 1, Int_t urqmd = 0)
   // Create and add users tasks
 
   // CbmKF is needed for Extrapolation
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kf = new CbmKF();
   run->AddTask(kf);
            
diff --git a/macro/trd/run_reco_qa.C b/macro/trd/run_reco_qa.C
index ebc55017661fcbca89b2494ab9181efa67ecceab..566356649d118a53ddc4ade6c089f8cddee5912c 100644
--- a/macro/trd/run_reco_qa.C
+++ b/macro/trd/run_reco_qa.C
@@ -225,6 +225,8 @@ void run_reco_qa(Int_t nEvents = 100, const char* setup = "sis100_electron")
 
 
   // ---  STS track finding   ------------------------------------------------
+  // Geometry interface initializer for tracking
+  run->AddTask(new CbmTrackingDetectorInterfaceInit());
   CbmKF* kalman = new CbmKF();
   run->AddTask(kalman);
   CbmL1* l1 = new CbmL1();
diff --git a/reco/KF/CbmKF.cxx b/reco/KF/CbmKF.cxx
index d6f8c2fc57689375336e90fdef5b0c6ea77fa31a..03db33dff134f7bd7c3f72136b9db42988968e9f 100644
--- a/reco/KF/CbmKF.cxx
+++ b/reco/KF/CbmKF.cxx
@@ -81,11 +81,6 @@ CbmKF::CbmKF(const char* name, Int_t iVerbose)
 {
   if (!fInstance) fInstance = this;
 
-  if (!CbmTrackingDetectorInterfaceInit::Instance()) {
-    LOG(fatal) << "CbmL1: CbmTrackingDetectorInterfaceInit instance was not found. Please, add it as a task to your "
-                  "reco macro before the KF and L1 tasks:\n"
-               << "\033[1;30mrun->AddTask(new CbmTrackingDetectorInterfaceInit());\033[0m";
-  }
 }
 
 CbmKF::~CbmKF() { fInstance = 0; }
@@ -102,6 +97,12 @@ InitStatus CbmKF::ReInit() { return Init(); }
 
 InitStatus CbmKF::Init()
 {
+  if (!CbmTrackingDetectorInterfaceInit::Instance()) {
+    LOG(fatal) << "CbmKF::Init(): CbmTrackingDetectorInterfaceInit instance was not found. Please, add it as a task to your "
+                  "reco macro before the KF and L1 tasks:\n"
+               << "\033[1;30mrun->AddTask(new CbmTrackingDetectorInterfaceInit());\033[0m";
+  }
+
   fMagneticField = 0;
 
   vMvdMaterial.clear();