diff --git a/macro/dimuon/CMakeLists.txt b/macro/dimuon/CMakeLists.txt
index 1fbb183910a35e29772455e3bafce1e93686b658..71bcdd2d030dbcbf8959b9d9d396ccc955d567b6 100644
--- a/macro/dimuon/CMakeLists.txt
+++ b/macro/dimuon/CMakeLists.txt
@@ -26,6 +26,12 @@ set_tests_properties(dimuon_cleanup PROPERTIES
         FIXTURES_SETUP dimuon_cleanup
 )
 
+if(APPLE)
+  set(simulationEngine kGeant4)
+else()
+  set(simulationEngine kGeant3)
+endif()
+
 
 ForEach(setup IN LISTS cbm_setup)
 
@@ -37,7 +43,7 @@ ForEach(setup IN LISTS cbm_setup)
     # --- Transport run, using run_transport.C
     Set(testname dimuon_transport_${setup})
     Set(fixture_dimuon_digi fixture_dimuon_digi_${testname})
-    Add_Test(${testname} ${MACRO_DIR}/dimuon_transport.sh ${NumEvents} \"${setup}\" \"data/${setup}_test\" \"\" kTRUE ${randomSeed})
+    Add_Test(${testname} ${MACRO_DIR}/dimuon_transport.sh ${NumEvents} \"${setup}\" \"data/${setup}_test\" \"\" kTRUE ${randomSeed} ${simulationEngine})
     Set_Tests_Properties(${testname} PROPERTIES 
             TIMEOUT "600"
             PASS_REGULAR_EXPRESSION "Test Passed;All ok"
diff --git a/macro/dimuon/dimuon_transport.C b/macro/dimuon/dimuon_transport.C
index a78a7e5cc79ce9feff7c97f480b3c0d078ca9885..13787530a56322e999743c9ca65fcc7034551708 100644
--- a/macro/dimuon/dimuon_transport.C
+++ b/macro/dimuon/dimuon_transport.C
@@ -40,7 +40,7 @@
 //---------------------------------------------------
 
 void dimuon_transport(Int_t nEvents = 1000, const char* setupName = "sis100_muon_lmvm", const char* output = "test",
-                      const char* inputFile = "", Bool_t overwrite = kFALSE, int randomSeed = 0)
+                      const char* inputFile = "", Bool_t overwrite = kFALSE, int randomSeed = 0, ECbmEngine engine = kGeant3)
 {
 
   // --- Logger settings ----------------------------------------------------
@@ -103,7 +103,7 @@ void dimuon_transport(Int_t nEvents = 1000, const char* setupName = "sis100_muon
   };
 
   run.SetBeamPosition(0., 0., 0.1, 0.1);
-  run.SetEngine(kGeant3);
+  run.SetEngine(engine);
   run.SetRandomSeed(randomSeed);
   // ------------------------------------------------------------------------
 
diff --git a/macro/mcbm/CMakeLists.txt b/macro/mcbm/CMakeLists.txt
index 73136349882c0ec8e550b926a54fd9a4de4e5e19..a569078abd1594700c6e0cee33131aed0f9afadd 100644
--- a/macro/mcbm/CMakeLists.txt
+++ b/macro/mcbm/CMakeLists.txt
@@ -19,6 +19,16 @@ Set(NumEvents 10)
 Set(BeamAngle 25)
 Set(randomSeed 1)
 
+if(APPLE)
+  set(simulationEngine kGeant4)
+  set(sim_timeout 1800)
+  set(reco_timeout 500)
+else()
+  set(simulationEngine kGeant3)
+  set(sim_timeout 600)
+  set(reco_timeout 300)
+endif()
+
 # Define the different setups to be tested
 # Default should always be tested in all case
 # additional ones for current/future setups should also be added to the CI tests
@@ -49,9 +59,9 @@ ForEach(setup IN LISTS cbm_setup)
 
   Set(testname mcbm_transport_${setup})
   Set(fixture_mcbm_transport fixture_${testname})
-  Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/mcbm/mcbm_transport.sh ${NumEvents} \"${setup}\" \"data/${setup}_test\" \"\" kTRUE ${randomSeed})
+  Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/mcbm/mcbm_transport.sh ${NumEvents} \"${setup}\" \"data/${setup}_test\" \"\" kTRUE ${randomSeed} ${simulationEngine})
   Set_Tests_Properties(${testname} PROPERTIES
-          TIMEOUT "600"
+          TIMEOUT "${sim_timeout}"
           PASS_REGULAR_EXPRESSION "Test Passed;All ok"
           FIXTURES_REQUIRED mcbm_cleanup
           FIXTURES_SETUP ${fixture_mcbm_transport}
diff --git a/macro/mcbm/mcbm_transport.C b/macro/mcbm/mcbm_transport.C
index 063ade51e25a705610ea5423d00273c4f5ce12f2..598122bc5332ae3ad638a97be200c064b59028f6 100644
--- a/macro/mcbm/mcbm_transport.C
+++ b/macro/mcbm/mcbm_transport.C
@@ -48,7 +48,8 @@ void mcbm_transport(Int_t nEvents = 10,
                     //                  const char* setupName = "mcbm_beam_2019_03",
                     //                  const char* setupName = "sis18_mcbm_25deg_long",
                     const char* output = "data/test", const char* inputFile = "", 
-                    Bool_t overwrite = kTRUE, int randomSeed = 0)
+                    Bool_t overwrite = kTRUE, int randomSeed = 0,
+                    ECbmEngine engine = kGeant3, Bool_t generateGeoTracks = kFALSE)
 {
   // --- Define the beam angle ----------------------------------------------
   Double_t beamRotY = 25.;
@@ -200,6 +201,7 @@ void mcbm_transport(Int_t nEvents = 10,
 
   // clang-format on
 
+  run.SetEngine(engine);
   // comment the following line to remove target interaction
   run.AddInput(inFile);
   run.SetOutFileName(outFile, overwrite);
@@ -211,8 +213,9 @@ void mcbm_transport(Int_t nEvents = 10,
                 targetRotY * TMath::DegToRad());
   run.SetBeamPosition(0., 0., 0.1, 0.1);  // Beam width 1 mm is assumed
   run.SetBeamAngle(beamRotY * TMath::DegToRad(), 0.);
-  if (nEvents <= 10)  // store only for small number of events
+  if (generateGeoTracks) {
     run.StoreTrajectories();
+  }
   run.SetRandomSeed(randomSeed);
   run.Run(nEvents);
   // ------------------------------------------------------------------------
diff --git a/macro/much/CMakeLists.txt b/macro/much/CMakeLists.txt
index d24589908dac662654a4d980e9d25929f3c7a8b8..9d7221e6e4fcfeb09c781a2e63cfd8e9e41c076b 100644
--- a/macro/much/CMakeLists.txt
+++ b/macro/much/CMakeLists.txt
@@ -20,9 +20,15 @@ set_tests_properties(much_cleanup PROPERTIES
         FIXTURES_SETUP much_cleanup
 )
 
+if(APPLE)
+  set(simulationEngine kGeant4)
+else()
+  set(simulationEngine kGeant3)
+endif()
+
 # --- Transport of UrQMD events
 Set(testname much_transport)
-add_test(${testname} ${MACRO_DIR}/run_transport.sh ${NumEvents} \"sis100_muon_lmvm\" \"data/muons\" \"\" \"\" kFALSE ${randomSeed})
+add_test(${testname} ${MACRO_DIR}/run_transport.sh ${NumEvents} \"sis100_muon_lmvm\" \"data/muons\" \"\" \"\" kFALSE ${randomSeed} ${simulationEngine})
 SET_TESTS_PROPERTIES(${testname} PROPERTIES
           TIMEOUT "1200"
           PASS_REGULAR_EXPRESSION "TestPassed;All ok"
diff --git a/macro/much/run_transport.C b/macro/much/run_transport.C
index a2f510a4ecd4fb6e58ca8680f220ef5a8f239cc2..7ae179c4e39e52dcd6c76c9c9fe902c376373ac7 100644
--- a/macro/much/run_transport.C
+++ b/macro/much/run_transport.C
@@ -41,7 +41,7 @@
 
 void run_transport(Int_t nEvents = 3, const char* setupName = "sis100_muon_lmvm", const char* output = "muons",
                    const char* inputFile = "", const char* plutoFile = "", Bool_t overwrite = kFALSE,
-                   int randomSeed = 0)
+                   int randomSeed = 0, ECbmEngine engine = kGeant3)
 {
 
   // --- Logger settings ----------------------------------------------------
@@ -139,7 +139,7 @@ void run_transport(Int_t nEvents = 3, const char* setupName = "sis100_muon_lmvm"
   }
 
   run.SetBeamPosition(0., 0., 0.1, 0.1);
-  run.SetEngine(kGeant3);
+  run.SetEngine(engine);
   run.SetRandomSeed(randomSeed);
   //  run.GetStackFilter()->SetMinNofPoints(kSts,0);
   //  run.GetStackFilter()->SetMinNofPoints(kMuch,0);
diff --git a/macro/mvd/qa/CMakeLists.txt b/macro/mvd/qa/CMakeLists.txt
index 96f0d9dc5f50cc87fe53f92fa4fbe2f6e993fea1..b826e2e6e675e5cbd38e93f47bdba0508a35a63f 100644
--- a/macro/mvd/qa/CMakeLists.txt
+++ b/macro/mvd/qa/CMakeLists.txt
@@ -10,9 +10,14 @@ set_tests_properties(mvd_cleanup PROPERTIES
         FIXTURES_SETUP mvd_cleanup
 )
 
+if(APPLE)
+  set(simulationEngine "TGeant4")
+else()
+  set(simulationEngine "TGeant3")
+endif()
 
 GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/mvd/qa/mvd_qa1_transUrqmd.C)
-add_test(mvd_qa1_transUrqmd ${CBMROOT_BINARY_DIR}/macro/mvd/qa/mvd_qa1_transUrqmd.sh)
+add_test(mvd_qa1_transUrqmd ${CBMROOT_BINARY_DIR}/macro/mvd/qa/mvd_qa1_transUrqmd.sh \"sis100_electron\" \"${simulationEngine}\")
 SET_TESTS_PROPERTIES(mvd_qa1_transUrqmd PROPERTIES
         TIMEOUT "300"
         PASS_REGULAR_EXPRESSION "Test Passed;All ok"
@@ -21,7 +26,7 @@ SET_TESTS_PROPERTIES(mvd_qa1_transUrqmd PROPERTIES
 )
 
 GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/mvd/qa/mvd_qa2_transDelta.C)
-add_test(mvd_qa2_transDelta ${CBMROOT_BINARY_DIR}/macro/mvd/qa/mvd_qa2_transDelta.sh)
+add_test(mvd_qa2_transDelta ${CBMROOT_BINARY_DIR}/macro/mvd/qa/mvd_qa2_transDelta.sh \"sis100_electron\" \"${simulationEngine}\")
 SET_TESTS_PROPERTIES(mvd_qa2_transDelta PROPERTIES
         TIMEOUT "500"
         PASS_REGULAR_EXPRESSION "Test Passed;All ok"
diff --git a/macro/mvd/qa/mvd_qa1_transUrqmd.C b/macro/mvd/qa/mvd_qa1_transUrqmd.C
index 6ad2d6d3931963f9afc19fc40ccf74eccc305d0a..47f60602e1aacea6d6df12d1a386f0f7d4ed02f2 100644
--- a/macro/mvd/qa/mvd_qa1_transUrqmd.C
+++ b/macro/mvd/qa/mvd_qa1_transUrqmd.C
@@ -10,7 +10,7 @@
 // V. Friese   06/02/2007
 //
 // --------------------------------------------------------------------------
-void mvd_qa1_transUrqmd(const char* setup = "sis100_electron")
+void mvd_qa1_transUrqmd(const char* setup = "sis100_electron", const char* simulationEngine = "TGeant3")
 {
   // ========================================================================
   //          Adjust this part according to your requirements
@@ -105,7 +105,7 @@ void mvd_qa1_transUrqmd(const char* setup = "sis100_electron")
 
   // -----   Create simulation run   ----------------------------------------
   FairRunSim* fRun = new FairRunSim();
-  fRun->SetName("TGeant3");         // Transport engine
+  fRun->SetName(simulationEngine);         // Transport engine
   fRun->SetOutputFile(outFile);     // Output file
   fRun->SetGenerateRunInfo(kTRUE);  // Create FairRunInfo file
   FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
diff --git a/macro/mvd/qa/mvd_qa2_transDelta.C b/macro/mvd/qa/mvd_qa2_transDelta.C
index e6adbd5d0e134e1e251ff9a325f8c8ee1209fd3f..e636b47c46da2352d7c1e214161c7cdc92a87734 100644
--- a/macro/mvd/qa/mvd_qa2_transDelta.C
+++ b/macro/mvd/qa/mvd_qa2_transDelta.C
@@ -11,7 +11,7 @@
 //
 // --------------------------------------------------------------------------
 
-void mvd_qa2_transDelta(const char* setup = "sis100_electron")
+void mvd_qa2_transDelta(const char* setup = "sis100_electron", const char* simulationEngine = "TGeant3")
 {
   // ========================================================================
   //          Adjust this part according to your requirements
@@ -105,7 +105,7 @@ void mvd_qa2_transDelta(const char* setup = "sis100_electron")
 
   // -----   Create simulation run   ----------------------------------------
   FairRunSim* fRun = new FairRunSim();
-  fRun->SetName("TGeant3");         // Transport engine
+  fRun->SetName(simulationEngine);         // Transport engine
   fRun->SetOutputFile(outFile);     // Output file
   fRun->SetGenerateRunInfo(kTRUE);  // Create FairRunInfo file
   FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
diff --git a/macro/reco/CMakeLists.txt b/macro/reco/CMakeLists.txt
index 9287c0ccdd081abe8b4a1afc49adf2b4296d5015..85ce87e89ceeada48b9721212f87507a98e5ad41 100644
--- a/macro/reco/CMakeLists.txt
+++ b/macro/reco/CMakeLists.txt
@@ -25,6 +25,12 @@ else()
   Set(nEvents 3)
 endIf()
 
+if(APPLE)
+  set(simulationEngine kGeant4)
+else()
+  set(simulationEngine kGeant3)
+endif()
+
 math(EXPR timeOutTime "${nEvents} * 200")
 math(EXPR nBeam "${nEvents} * 3")
 
@@ -82,7 +88,7 @@ foreach(setup IN LISTS cbm_setup)
   set(input ${CBMROOT_SOURCE_DIR}/input/urqmd.auau.10gev.centr.root)
   set(output ${datadir}/${sname}_coll)
   add_test(${testname} ${CBMROOT_BINARY_DIR}/macro/run/run_tra_file.sh
-  	\"${input}\" ${nEvents} \"${output}\" \"${setup}\" kGeant3 ${randomSeed} kTRUE)
+       \"${input}\" ${nEvents} \"${output}\" \"${setup}\" ${simulationEngine} ${randomSeed} kTRUE)
   set_tests_properties(${testname} PROPERTIES
   	TIMEOUT ${timeOutTime}
 	FAIL_REGULAR_EXPRESSION	"segmentation violation"
@@ -98,7 +104,7 @@ foreach(setup IN LISTS cbm_setup)
   set(input ${CBMROOT_SOURCE_DIR}/input/pluto.auau.8gev.omega.mpmm.0001.root)
   set(output ${datadir}/${sname}_sign)
    add_test(${testname} ${CBMROOT_BINARY_DIR}/macro/run/run_tra_file.sh
-  	\"${input}\" ${nEvents} \"${output}\" \"${setup}\" kGeant3 ${randomSeed} kTRUE)
+        \"${input}\" ${nEvents} \"${output}\" \"${setup}\" ${simulationEngine} ${randomSeed} kTRUE)
   set_tests_properties(${testname} PROPERTIES
   	TIMEOUT ${timeOutTime}
 	FAIL_REGULAR_EXPRESSION	"segmentation violation"
@@ -113,7 +119,7 @@ foreach(setup IN LISTS cbm_setup)
   set(testname reco_tra_beam_${sname})
   set(output ${datadir}/${sname}_beam)
    add_test(${testname} ${CBMROOT_BINARY_DIR}/macro/run/run_tra_beam.sh
-  	${nBeam} \"Au\" 10 -1 \"${output}\" \"${setup}\" kGeant3 ${randomSeed} kTRUE)
+        ${nBeam} \"Au\" 10 -1 \"${output}\" \"${setup}\" ${simulationEngine} ${randomSeed} kTRUE)
   set_tests_properties(${testname} PROPERTIES
   	TIMEOUT ${timeOutTime}
 	FAIL_REGULAR_EXPRESSION	"segmentation violation"
diff --git a/macro/run/CMakeLists.txt b/macro/run/CMakeLists.txt
index 7bbcbeccc9565d0598395081812e855594535c93..a52e295b5df445a9f482e1e04406801bb693c881 100644
--- a/macro/run/CMakeLists.txt
+++ b/macro/run/CMakeLists.txt
@@ -37,6 +37,12 @@ else()
   Set(randomSeed 1)
 endIf()
 
+if(APPLE)
+  set(simulationEngine kGeant4)
+else()
+  set(simulationEngine kGeant3)
+endif()
+
 math(EXPR timeOutTime "${nEvents} * 200")
 math(EXPR nBeam "${nEvents} * 3")
 
@@ -98,7 +104,7 @@ foreach(setup IN LISTS cbm_setup)
   set(testname run_${sname}_tra_coll)
   set(input ${CBMROOT_SOURCE_DIR}/input/urqmd.auau.10gev.centr.root)
   add_test(${testname} ${MACRO_DIR}/run_tra_file.sh
-  	\"${input}\" ${nEvents} \"data/${sname}_coll\" \"${setup}\" kGeant3 ${randomSeed} kTRUE)
+       \"${input}\" ${nEvents} \"data/${sname}_coll\" \"${setup}\" ${simulationEngine} ${randomSeed} kTRUE)
   set_tests_properties(${testname} PROPERTIES
     TIMEOUT ${timeOutTime}
     FAIL_REGULAR_EXPRESSION "segmentation violation"
@@ -113,7 +119,7 @@ foreach(setup IN LISTS cbm_setup)
   set(testname run_${sname}_tra_sign)
   set(input ${CBMROOT_SOURCE_DIR}/input/pluto.auau.8gev.omega.mpmm.0001.root)
   add_test(${testname} ${MACRO_DIR}/run_tra_file.sh
-  	\"${input}\" ${nEvents} \"data/${sname}_sign\" \"${setup}\" kGeant3 ${randomSeed} kTRUE)
+       \"${input}\" ${nEvents} \"data/${sname}_sign\" \"${setup}\" ${simulationEngine} ${randomSeed} kTRUE)
   set_tests_properties(${testname} PROPERTIES
     TIMEOUT ${timeOutTime}
     FAIL_REGULAR_EXPRESSION "segmentation violation"
@@ -127,7 +133,7 @@ foreach(setup IN LISTS cbm_setup)
   # --- Transport run with beam events, using run_tra_beam.C
   set(testname run_${sname}_tra_beam)
   add_test(${testname} ${MACRO_DIR}/run_tra_beam.sh
-  	${nBeam} \"Au\" 10 -1 \"data/${sname}_beam\" \"${setup}\" kGeant3 ${randomSeed} kTRUE)
+       ${nBeam} \"Au\" 10 -1 \"data/${sname}_beam\" \"${setup}\" ${simulationEngine} ${randomSeed} kTRUE)
   set_tests_properties(${testname} PROPERTIES
     TIMEOUT ${timeOutTime}
     FAIL_REGULAR_EXPRESSION "segmentation violation"