diff --git a/macro/geometry/check_radlen.C b/macro/geometry/check_radlen.C
new file mode 100644
index 0000000000000000000000000000000000000000..8ebabb8e4201d1d55600554fb3249b77f2818478
--- /dev/null
+++ b/macro/geometry/check_radlen.C
@@ -0,0 +1,105 @@
+/* Copyright (C) 2021 Facility for Antiproton and Ion Research in Europe, Darmstadt
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: P.-A. Loizeau [committer] */
+
+#include <cstdlib>
+#include <iostream>
+
+#include <cmath>
+
+uint32_t check_radlen(std::string fileName = "test.geo.root", double_t dTolerance = 0.1)
+{
+  /// Instantiate a FairRun to get the unit convention in ROOT Geo classes forced to ROOT one
+  /// (fix for the bug present between ROOT v6.18 and 6.25)
+  FairRunAna* fRun = new FairRunAna();
+
+  TString myName = "check_radlen";
+
+  TFile file(fileName.c_str(), "READ");
+  if (!file.IsOpen()) {
+    std::cerr << "Was a root geo file supplied?" << std::endl;
+    exit(1);
+  };
+  gROOT->cd();
+
+  file.GetObject("FAIRGeom", gGeoManager);
+  if (nullptr == gGeoManager) {
+    std::cout << "No geo manager found in file, probably this is a standalone geometry file" << std::endl;
+
+    std::string geo_tag = fileName.substr(fileName.find_last_of('/') + 1);
+    geo_tag             = geo_tag.substr(0, geo_tag.find_first_of('.'));
+    std::cout << "Trying to load volume with geo tag extracted from file name: " << geo_tag << std::endl;
+
+    TGeoVolume* pDetVol = nullptr;
+    file.GetObject(geo_tag.c_str(), pDetVol);
+    if (nullptr == pDetVol) {
+      std::cout << "Could not load the volume with a geo_tag matching the filename, file is not proper CBMROOT geometry"
+                << std::endl;
+      exit(1);
+    }
+
+    std::cerr << "Method to load the materials from a -not simulated- geometry NOT YET IMPLEMENTED" << std::endl;
+    exit(1);
+  }
+
+  gROOT->cd();
+
+  TList* plMats = gGeoManager->GetListOfMaterials();
+
+  uint32_t uNbMats = plMats->GetEntries();
+  uint32_t uNbSkip = 0;
+  uint32_t uNbFail = 0;
+  uint32_t uNbOkay = 0;
+  for (const auto&& pObj : *plMats) {
+    TGeoMaterial* material = dynamic_cast<TGeoMaterial*>(pObj);
+
+    std::string sRes = "SKIP \t";
+    double_t dA      = material->GetA();
+    double_t dZ      = material->GetZ();
+    double_t dRho    = material->GetDensity();
+    double_t dRadLen = material->GetRadLen();
+
+    double_t dExpRadLen = 0.;
+    double_t dDiff      = 0.;
+    double_t dDeviation = 0.;
+
+    if (dZ < 1) {
+      /// Special case for "vacuum" and "dummy"
+      uNbSkip++;
+    }
+    else {
+      dExpRadLen = (716.4 * dA / (dZ * (dZ + 1) * std::log(287 / std::sqrt(dZ))) / dRho);
+      dDiff      = dExpRadLen - dRadLen;
+      dDeviation = std::fabs(dDiff) / dRadLen;
+      if (dDeviation < dTolerance) {
+        sRes = "OKAY \t";
+        uNbOkay++;
+      }
+      else {
+        sRes = "FAIL \t";
+        uNbFail++;
+      }
+    }
+
+    std::cout << sRes;
+    if (material->IsMixture()) {
+      std::cout << Form("Mixture  \t%20s \tindex = %i \tAeff = %7g \tZeff = %7g \trho = %8g \tradlen = %8g \t",
+                        material->GetName(), material->GetIndex(), dA, dZ, dRho, dRadLen);
+    }
+    else {
+      std::cout << Form("Material \t%20s \tindex = %i \tA    = %7g \tZ    = %7g \trho = %8g \tradlen = %8g \t",
+                        material->GetName(), material->GetIndex(), dA, dZ, dRho, dRadLen);
+    }
+    std::cout << Form("Expected radlen = %8g \t Dev  = %8g \t Diff = %8g", dExpRadLen, dDeviation, dDiff) << std::endl;
+  }
+
+  gROOT->cd();
+  RemoveGeoManager();
+  file.Close();
+
+  std::cout << uNbFail << " failures and " << uNbSkip << " skipped in " << uNbMats << " materials" << std::endl;
+
+  std::cout << "Program Ends" << std::endl;
+
+  return uNbFail;
+}  // End of macro
diff --git a/macro/geometry/check_radlen.sh b/macro/geometry/check_radlen.sh
index 003ac609503ee3b0beffde31495c5f5ffc48f00f..5cc5d38f956032b052766edaf615a0217e7e636f 100755
--- a/macro/geometry/check_radlen.sh
+++ b/macro/geometry/check_radlen.sh
@@ -4,7 +4,7 @@
 
 echo "Scanning the geometry" $1
 
-root -l -b -q '$VMCWORKDIR/macro/geometry/scan_geometry.C("'$1'")' 1>tmp
+root -l -b -q '$VMCWORKDIR/macro/geometry/scan_geometry.C("'$1'")' &>tmp
 ROOT_EXIT=$?;
 
 if [ 0 -ne $ROOT_EXIT ]; then
@@ -33,16 +33,16 @@ variables=`echo "$line" | sed -e 's/eff//g' | sed -e 's/index/jndex/g' | sed -e
     $variables \
     'BEGIN{\
         if(Z<1){
-        printf "SKIP"; \
+        printf "SKIP \t "; \
         exit 3;
         };
         cal_rad_len=(716.4*A/(Z*(Z+1)*log(287/sqrt(Z)))/rho);\
         #print cal_rad_len;
         diff=(cal_rad_len - radlen);\
         if(diff*diff <= TOL*TOL*radlen*radlen ){\
-        printf "OKAY"; exit 1;
+        printf "OKAY \t " cal_rad_len; exit 1;
         }else{\
-        printf "FAIL"; exit 2;
+        printf "FAIL \t " cal_rad_len; exit 2;
         }}'
 
     STATUS=$?;
diff --git a/macro/geometry/scan_geometry.C b/macro/geometry/scan_geometry.C
index d6a23b63f9b92f0894507515aa6322cad897d45b..6dbb83d4f302eee6b709f67cfdab0eef2b42c719 100644
--- a/macro/geometry/scan_geometry.C
+++ b/macro/geometry/scan_geometry.C
@@ -34,15 +34,17 @@ void scan_geometry(std::string fileName = "test.geo.root", uint32_t uMaxNodeDept
   file.GetListOfKeys()->Print();
   file.GetSize();
 
-  std::string geo_tag = fileName.substr(fileName.find_last_of('/') + 1);
-  geo_tag             = geo_tag.substr(0, geo_tag.find_first_of('.'));
-  std::cout << "geo tag extracted from file name is: " << geo_tag << std::endl;
   file.GetObject("FAIRGeom", gGeoManager);
 
   if (gGeoManager != nullptr) { top = gGeoManager->GetTopVolume(); };
   gROOT->cd();
 
-  if (top == nullptr) file.GetObject(geo_tag.c_str(), top);
+  if (top == nullptr) {
+    std::string geo_tag = fileName.substr(fileName.find_last_of('/') + 1);
+    geo_tag             = geo_tag.substr(0, geo_tag.find_first_of('.'));
+    std::cout << "geo tag extracted from file name is: " << geo_tag << std::endl;
+    file.GetObject(geo_tag.c_str(), top);
+  }
   if (top == nullptr) file.GetObject("FAIRGeom", top);
   if (top == nullptr) file.GetObject("top", top);
   if (top == nullptr) file.GetObject("TOP", top);
diff --git a/macro/mcbm/CMakeLists.txt b/macro/mcbm/CMakeLists.txt
index 313fbf7a8db63be136ce2b9a8ae2a0826a04100a..f7c40d1192f6d89e3ffad89339e03c1de0bf4cd6 100644
--- a/macro/mcbm/CMakeLists.txt
+++ b/macro/mcbm/CMakeLists.txt
@@ -10,9 +10,7 @@ GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/mcbm/mcbm_qa.C)
 
 Set(MACRO_DIR ${CMAKE_CURRENT_BINARY_DIR})
 GENERATE_CBM_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/geometry/check_media.C ${MACRO_DIR})
-
-GENERATE_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/geometry/check_radlen.sh ${MACRO_DIR})
-
+GENERATE_CBM_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/geometry/check_radlen.C ${MACRO_DIR})
 # ============================================================================
 
 # disable dev tests - GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/mcbm/mcbm_mc_dev.C)
@@ -147,7 +145,7 @@ ForEach(setup IN LISTS cbm_setup)
 
   # --- Test check_radlen.sh
   set(testname mcbm_radlen_${setup})
-  add_test(${testname} ${MACRO_DIR}/check_radlen.sh data/${setup}_test.geo.root )
+  add_test(${testname} ${MACRO_DIR}/check_radlen.sh \"data/${setup}_test.geo.root\" )
   Set(fixture_mcbm_radlen fixture_radlen_${setup})
   set_tests_properties(${testname} PROPERTIES
         TIMEOUT 100
diff --git a/macro/run/CMakeLists.txt b/macro/run/CMakeLists.txt
index fb485d1f53ff793dc1a28aceb2fd0c2b5ce05f60..58f360fe14b5fc068b98d12c44de904f741f3890 100644
--- a/macro/run/CMakeLists.txt
+++ b/macro/run/CMakeLists.txt
@@ -8,7 +8,7 @@ GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/run/run_reco.C)
 GENERATE_ROOT_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/run/run_qa.C)
 
 Set(MACRO_DIR ${CMAKE_CURRENT_BINARY_DIR})
-GENERATE_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/geometry/check_radlen.sh ${MACRO_DIR})
+GENERATE_CBM_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/geometry/check_radlen.C ${MACRO_DIR})
 # ============================================================================
 
 
@@ -82,9 +82,8 @@ foreach(setup IN LISTS cbm_setup)
 
   # --- Test run_transport_json_config
   # --- Transport run using run_transport_json_config.C
-  set(json_config_file ${CBMROOT_SOURCE_DIR}/macro/run/config_ci.json)
   set(testname run_transport_json_config)
-  add_test(${testname} ${MACRO_DIR}/run_transport_json_config.sh \"${json_config_file}\" 2 ${randomSeed})
+  add_test(${testname} ${MACRO_DIR}/run_transport_json_config.sh \"\" 2 ${randomSeed})
   set_tests_properties(${testname} PROPERTIES
   	TIMEOUT ${timeOutTime}
   	PASS_REGULAR_EXPRESSION "Macro finished successfully"
@@ -96,7 +95,7 @@ foreach(setup IN LISTS cbm_setup)
   # --- Test run_digi_json_config
   # --- Digitization run with using run_digi_json_config.C
   set(testname run_digi_json_config)
-  add_test(${testname} ${MACRO_DIR}/run_digi_json_config.sh \"${json_config_file}\")
+  add_test(${testname} ${MACRO_DIR}/run_digi_json_config.sh)
   set_tests_properties(${testname} PROPERTIES
   	TIMEOUT ${timeOutTime}
   	PASS_REGULAR_EXPRESSION "Macro finished successfully"
@@ -110,11 +109,11 @@ 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}\" kGeant3 ${randomSeed})
   set_tests_properties(${testname} PROPERTIES
   	TIMEOUT ${timeOutTime}
   	PASS_REGULAR_EXPRESSION "Macro finished successfully"
-  	FIXTURES_REQUIRED run_cleanup
+  	FIXTURES_REQUIRED cleanup
   	FIXTURES_SETUP fixt_tra_coll_${setup}
   	RESOURCE_LOCK collParDb_${setup}
   )
@@ -124,7 +123,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}\" kGeant3 ${randomSeed})
   set_tests_properties(${testname} PROPERTIES
   	TIMEOUT ${timeOutTime}
   	PASS_REGULAR_EXPRESSION "Macro finished successfully"
@@ -137,7 +136,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}\" kGeant3 ${randomSeed})
   set_tests_properties(${testname} PROPERTIES
   	TIMEOUT ${timeOutTime}
   	PASS_REGULAR_EXPRESSION "Macro finished successfully"
@@ -179,8 +178,7 @@ foreach(setup IN LISTS cbm_setup)
   # --- Test check_radlen.sh
   # --- Transport run with collision events, using run_tra_file.C
   set(testname check_${sname}_radlen)
-  add_test(${testname} ${MACRO_DIR}/check_radlen.sh
-        data/${sname}_coll.geo.root )
+  add_test(${testname} ${MACRO_DIR}/check_radlen.sh \"data/${sname}_coll.geo.root\" )
   set_tests_properties(${testname} PROPERTIES
         TIMEOUT ${timeOutTime}
         FIXTURES_REQUIRED "fixt_digi_ev_${setup};fixt_digi_ts_${setup}"
@@ -252,8 +250,8 @@ foreach(setup IN LISTS cbm_setup)
   # --- Real raw event builder
   set(testname run_${sname}_qa)
   add_test(${testname} ${MACRODIR}/run_qa.sh
-  	\"data/${sname}_coll\" \"data/${sname}_ts\"  \"data/${sname}_ts_eb_real\"
-	\"data/${sname}_coll\" \"data/${sname}_qa\" \"${setup}\" -1
+  	\"data/${sname}_coll\" \"data/${sname}_ts\"  \"data/${sname}_ts_eb_real\" 
+	\"data/${sname}_coll\" \"data/${sname}_qa\" \"${setup}\" -1 
 	\"data/${sname}_sign\" \"data/${sname}_beam\" )
   set_tests_properties(${testname} PROPERTIES
   	TIMEOUT ${timeOutTime}
@@ -277,6 +275,29 @@ foreach(setup IN LISTS cbm_setup)
  	RESOURCE_LOCK collParDb_${setup}
   )
 
+  # --- Test run_transport_json_config
+  # --- Transport run using run_transport_json_config.C
+  set(testname run_transport_json_config)
+  add_test(${testname} ${MACRO_DIR}/run_transport_json_config.sh \"\" 2 ${randomSeed})
+  set_tests_properties(${testname} PROPERTIES
+  	TIMEOUT ${timeOutTime}
+  	PASS_REGULAR_EXPRESSION "Macro finished successfully"
+  	FIXTURES_REQUIRED cleanup
+  	FIXTURES_SETUP fixt_tra_json_config
+  	RESOURCE_LOCK json_config_ParDb
+  )
+
+  # --- Test run_digi_json_config
+  # --- Digitization run with using run_digi_json_config.C
+  set(testname run_digi_json_config)
+  add_test(${testname} ${MACRO_DIR}/run_digi_json_config.sh)
+  set_tests_properties(${testname} PROPERTIES
+  	TIMEOUT ${timeOutTime}
+  	PASS_REGULAR_EXPRESSION "Macro finished successfully"
+  	FIXTURES_REQUIRED fixt_tra_json_config
+  	FIXTURES_SETUP fixt_digi_json_config
+  	RESOURCE_LOCK json_config_ParDb
+  )
 
 
 endforeach(setup IN LISTS cbm_setup)