From f9fd740aff5e68774eb741afdcf3c6021ee7e4d1 Mon Sep 17 00:00:00 2001
From: "s.zharko@gsi.de" <s.zharko@gsi.de>
Date: Wed, 15 Jun 2022 20:36:01 +0200
Subject: [PATCH] reconstruction macros global updates: CbmL1 and CbmKF (as a
 FairRoot task) now need the interfaces to the tracking detectors. The
 interfaces are initialized in an additional task -
 CbmTrackingDetectorInterfaceInit, which should be added before. Please, refer
 to '$VMCWORKDIR/macro/run/run_reco.C' as an example

---
 .../KF/KFParticleFinderSignalTest/Signal/physSignal.C |  1 +
 .../KF/KFParticleFinderSignalTest/Signal/recoSignal.C |  1 +
 macro/KF/kf_kfparticle.C                              |  1 +
 macro/L1/rec.C                                        |  2 ++
 macro/L1/run_reco_L1global.C                          |  2 ++
 .../analysis_tree_converter/run_analysis_tree_maker.C |  2 +-
 macro/analysis/conversion2/run_analysis.C             |  2 ++
 macro/analysis/dielectron/run_analysis.C              |  2 +-
 macro/analysis/dielectron/run_reco.C                  |  1 +
 macro/analysis/flow/anaFlow.C                         |  2 ++
 macro/analysis/flow/eventPlane.C                      |  1 +
 macro/analysis/flow/run_reco_flow.C                   |  1 +
 macro/analysis/hyperons/rec.C                         |  1 +
 macro/analysis/jpsiana/run_analysis_jpsi.C            |  1 +
 macro/analysis/jpsiana/run_litqa_jpsi.C               |  1 +
 macro/analysis/jpsiana/run_reco_jpsi.C                |  1 +
 macro/analysis/opencharm/PairSelection.C              |  2 ++
 macro/analysis/opencharm/PairSelectionSE.C            |  1 +
 macro/analysis/opencharm/TrackSelection.C             |  1 +
 macro/analysis/opencharm/opencharm_reco.C             |  1 +
 macro/analysis/papa/run_analysis.C                    |  1 +
 macro/beamtime/mcbm2021/mcbm_event_reco.C             |  1 +
 macro/dilept/CbmDileptRecUrqmdOmegaEe.C               |  2 ++
 macro/dilept/CbmDileptonPid.C                         |  1 +
 macro/ecal/run_reco.C                                 |  1 +
 macro/hadron/produceDst.C                             |  1 +
 macro/hadron/reco.urqmd.C                             |  1 +
 macro/kronos/macro/run_phys.C                         |  1 +
 macro/kronos/macro/run_reco.C                         |  1 +
 macro/littrack/global_fit.C                           |  1 +
 macro/littrack/global_reco.C                          |  3 +++
 macro/littrack/global_reco_ideal.C                    |  1 +
 macro/littrack/global_reco_qa.C                       |  2 +-
 macro/littrack/mvd_reco.C                             |  1 +
 macro/littrack/phys.C                                 |  1 +
 macro/littrack/scripts/much/global_reco.C             |  1 +
 macro/littrack/scripts/much/global_reco_qa.C          |  1 +
 macro/littrack/scripts/much/much_ana.C                |  1 +
 macro/mcbm/mcbm_reco.C                                |  1 +
 macro/mcbm/modules/reconstruct.C                      |  1 +
 macro/much/run_ana.C                                  |  1 +
 macro/mvd/mvd_CbmUniGen_reco_cluster.C                |  1 +
 macro/obsolete/run_reco_flow.C                        |  1 +
 macro/rich/alignment/Sim_Thesis/run_reco_alignment.C  |  1 +
 macro/rich/alignment/Sim_Thesis/run_reco_backup.C     |  1 +
 macro/rich/alignment/Sim_Thesis/run_reco_backup.C.old |  1 +
 macro/rich/alignment/Sim_Thesis/run_reco_correction.C |  1 +
 macro/rich/alignment/gauss_distrib/run_reco.C         |  1 +
 macro/rich/alignment/gauss_distrib/run_reco.C.old     |  1 +
 .../rich/alignment/gauss_distrib/run_reco_alignment.C |  1 +
 .../alignment/gauss_distrib/run_reco_alignment.C.old  |  1 +
 .../alignment/gauss_distrib/run_reco_correction.C     |  1 +
 .../inner_outer_region_study/run_mirror_reco.C        |  1 +
 .../run_mirror_reco_alignment.C                       |  1 +
 .../run_mirror_reco_alignment_test.C                  |  1 +
 .../run_mirror_reco_correction.C                      |  1 +
 .../run_mirror_reco_correction_test.C                 |  1 +
 macro/rich/alignment/matching/run_reco_matching.C     |  1 +
 .../alignment/matching/run_reco_matching_alignment.C  |  1 +
 .../alignment/matching/run_reco_matching_correction.C |  1 +
 macro/rich/alignment/position/run_reco_position.C     |  1 +
 macro/rich/alignment/position/run_reco_position2.C    |  1 +
 macro/rich/alignment/position/run_reco_position3.C    |  1 +
 macro/rich/alignment/position/run_reco_position4.C    |  1 +
 macro/rich/alignment/position/run_reco_position_old.C |  1 +
 macro/rich/alignment/run_alignment_reco.C             |  1 +
 macro/rich/alignment/run_correction_reco.C            |  1 +
 macro/rich/alignment/run_mirror_reco.C                |  1 +
 macro/rich/alignment/run_mirror_reco_alignment.C      |  1 +
 macro/rich/alignment/run_mirror_reco_correction.C     |  1 +
 macro/rich/alignment/run_reco.C                       |  1 +
 macro/rich/alignment/single_tile/run_reco.C           |  1 +
 macro/rich/alignment/single_tile/run_reco_alignment.C |  1 +
 .../rich/alignment/single_tile/run_reco_correction.C  |  1 +
 .../geotest/legacy/RotPMT/Run_Reco_GeoOpt_Batch.C     |  1 +
 .../geotest/legacy/TransPMT/Run_Reco_GeoOpt_Batch.C   |  2 ++
 macro/rich/geotest/run_reco.C                         |  1 +
 macro/rich/prototype/run_reco.C                       |  1 +
 macro/rich/run/run_reco.C                             |  1 +
 macro/run/modules/reconstruct.C                       |  1 +
 macro/run/run_phys.C                                  |  2 ++
 macro/run/run_reco.C                                  |  3 +--
 macro/sts/sts_reco.C                                  |  4 +++-
 macro/sts/sts_reco_all.C                              |  1 +
 macro/sts/sts_reco_ideal.C                            |  1 +
 macro/sts/sts_reco_raw.C                              |  1 +
 macro/tof/beamtime/feb15/ana_hits.C                   |  1 +
 macro/tof/beamtime/feb15/dis_hits.C                   |  1 +
 macro/tof/beamtime/lab16/ana_hits.C                   |  1 +
 macro/tof/beamtime/lab16/ana_hits_nh.C                |  1 +
 macro/tof/beamtime/lab16/dis_digi.C                   |  1 +
 macro/tof/beamtime/lab16/dis_hits.C                   |  1 +
 macro/tof/beamtime/nov15/ana_hits.C                   |  1 +
 macro/tof/beamtime/nov15/ana_trks.C                   |  1 +
 macro/tof/beamtime/nov15/dis_digi.C                   |  1 +
 macro/tof/beamtime/nov15/dis_hits.C                   |  1 +
 macro/tof/deb/global_phys.C                           |  2 ++
 macro/tof/deb/global_reco.C                           |  1 +
 macro/tof/deb/global_reco100.C                        |  1 +
 macro/tof/deb/global_reco100box.C                     |  2 +-
 macro/tof/deb/global_reco104.C                        |  1 +
 macro/tof/deb/tof_reco100.C                           |  1 +
 macro/tof/deb/tof_reco100box.C                        |  1 +
 macro/tof/deb/tof_reco100p.C                          |  1 +
 macro/tof/deb/tof_reco104.C                           |  1 +
 macro/tof/deb/tof_reco300.C                           |  1 +
 macro/tof/run_reco100.C                               |  1 +
 macro/tof/tof_ana_Testbeam.C                          |  1 +
 macro/tof/tof_reco.C                                  |  1 +
 macro/tof/tof_reco100.C                               |  1 +
 macro/tracking/lx/run_reco.C                          |  1 +
 macro/trd/run_reco_clusterizer.C                      |  1 +
 macro/trd/run_reco_clusterizerFast.C                  |  2 ++
 macro/trd/run_reco_occupancy.C                        |  2 ++
 macro/trd/run_reco_photon.C                           |  2 ++
 macro/trd/run_reco_pi0.C                              |  3 +++
 macro/trd/run_reco_qa.C                               |  2 ++
 reco/KF/CbmKF.cxx                                     | 11 ++++++-----
 118 files changed, 142 insertions(+), 12 deletions(-)

diff --git a/macro/KF/KFParticleFinderSignalTest/Signal/physSignal.C b/macro/KF/KFParticleFinderSignalTest/Signal/physSignal.C
index 9b2b7320a6..fcb76e2117 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 8a8ab02057..ae60341bb3 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 e6fb43fee0..2544918c22 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 fa5dd97332..5db0398442 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 7346ec510d..90c4b25017 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 da8e8b1b8c..8c61c205db 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 57feb8ac38..eab8068897 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 45a055edc9..eb93a3d9a0 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 77d44b5cdc..a51ba8c3dd 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 746833fb63..e5052dfec4 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 6ddbe1f013..cd3ce0e7c5 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 4449add95f..70ca4ea752 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 8937f23507..5077f1d914 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 4d3af13f61..ea99465914 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 33a31dca8e..7e90b60201 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 264bac29d5..f1e6b75857 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 6b61bcb3f5..19a423fc7a 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 9d860959eb..d84503c7e8 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 6fa252f134..45b8b877c1 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 1d40b8264c..e39ebeb4cc 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 84cf0b5f2a..988069d0e8 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 d44e297085..469b49544a 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 3257996cb3..5c6ef108a5 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 729aca5508..808694f5be 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 8266a0556b..eab794f65a 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 a53bca1fdc..b84680c8f6 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 eee4917b3f..592fa83c56 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 17784848a1..2cfc76c364 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 bfe84e2dc2..480152fbdf 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 2000cd0a61..1e8246f581 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 457d02e63b..be287887ed 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 b368af49d5..7891a01311 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 7ea224b826..a4d1950d78 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 2442d5d8c3..98a45035c2 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 900026eb54..7d0fa2dad1 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 e34c766b57..c48af66cb7 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 fcb959243f..cae1f96c6d 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 cd5ffc0e60..6167702e0a 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 65643aa5b6..3f32f1a41d 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 715dc3aa42..000f7126ba 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 e478cba99f..acf23e8193 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 dcdf57193e..d4c77a2f8b 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 3b647b9b5c..42c63fe11c 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 9d9fe08bf0..9c7ef11483 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 2c271a1799..cc639b0cf3 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 115be6b885..bc989c77db 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 387ab6c084..0ac67d517f 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 76dfd49db1..a0128ce930 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 f4c0be526d..98b61d485d 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 9d9fe08bf0..9c7ef11483 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 b67719709c..1eb9cb35ca 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 387ab6c084..0ac67d517f 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 454bb88474..43133f1daf 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 cd82ec84f1..74013d8455 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 f098cd3d3d..bd52464a45 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 b0dfbb6aa1..5bb948de8e 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 1690e6381b..1a5f3e747d 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 1a5e6ed134..3173feeb0a 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 d3682857ec..50810c3d6a 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 5c8e89915a..ba71550bf4 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 c8af71e547..bc9aa8be98 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 fb3f349756..f1223f0c4a 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 9b9765d32d..fd0d702a07 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 d7680b10b1..be82d74ec2 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 c719e51f37..9784e8b4ba 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 eb2988bf7c..8ef3530604 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 7644422530..8602f4705d 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 454bb88474..43133f1daf 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 cd82ec84f1..74013d8455 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 e71844f6a9..e5230ed628 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 360cf8afdb..0042250f9e 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 ebd3d2489e..dcd4e555af 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 243f0b660c..892d3edca6 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 387ab6c084..0ac67d517f 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 273ebafbb0..b891dceef3 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 c1273e9f1b..bbec38f59b 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 8d31f7f32d..42eedb8125 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 c01c06b3f7..f4f56eb55e 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 30b3c89020..fc895706c6 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 5dc01e6fa4..4335153b3a 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 810687242c..3650df1e84 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 5f7af4a3ad..0959142ead 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 d95c1d250e..ec98998db1 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 df18e7dde2..7589772695 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 74ae9b654b..0b6a2e52db 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 b6fddc76b4..9127c8dfea 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 81d22e8eea..e0e3be16a5 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 3b5c306da1..007f0169a3 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 9d68ac02ab..025d9899fa 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 4e9ef51ec7..6b7b895be0 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 911fa36498..509ccfc40d 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 3faccbb0d5..b8851ca211 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 d9e0cdd177..2eda248438 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 fecef6fa33..a35ded74d9 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 6e1926302b..c94687847d 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 b8e548f95e..00dffdfd80 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 9569eef7c4..8843304d69 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 565dc19ae9..d831cecab9 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 a7c35f4bc3..975e1da1ae 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 8e1e9a67e2..aa523cc708 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 3a6c1af89c..c06ecc298a 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 522fbedd8c..4c87784bfc 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 e0d64a3fb1..95971d2d0d 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 9cba78873c..4826078545 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 f09c8c60a5..1595cd1849 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 60e4bb3ebe..1969e006d5 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 adc14017f2..30bf11dbc8 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 c4e0af6414..d072525056 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 5091f24f8e..43c1bcfee8 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 5653b1308b..706b3df5ad 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 d6b633b39f..b9f4df5708 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 58bde46b30..fd3e35871e 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 567bf4b6d4..44b456d5c8 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 fb7a5b20ab..fa02c1a1fb 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 6b5633c8c2..00ccf3d4da 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 b58e6a3640..21d41eac4b 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 ebc5501766..566356649d 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 d6f8c2fc57..03db33dff1 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();
-- 
GitLab