diff --git a/algo/ca/core/pars/CaInitManager.cxx b/algo/ca/core/pars/CaInitManager.cxx
index 0a56fdc9caa866db86489fd4f43e931ff606e805..b2318db2004309f6b3638cb3d1e01f76fde332c2 100644
--- a/algo/ca/core/pars/CaInitManager.cxx
+++ b/algo/ca/core/pars/CaInitManager.cxx
@@ -115,13 +115,8 @@ void InitManager::ClearCAIterations()
 bool InitManager::FormParametersContainer()
 {
   // Read configuration files
-  LOG(info) << "ca::InitManager: reading parameter configuration ...";
-  try {
-    this->ReadInputConfigs();
-    LOG(info) << "ca::InitManager: reading parameter configuration ... \033[1;32mdone\033[0m";
-  }
-  catch (const std::runtime_error& err) {
-    LOG(error) << "ca::InitManager: reading parameter configuration ... \033[1;31mfail\033[0m. Reason: " << err.what();
+  this->ReadInputConfigs();
+  if (!fbConfigIsRead) {  // Check config reading status
     return false;
   }
 
@@ -332,10 +327,21 @@ void InitManager::PushBackCAIteration(const Iteration& iteration)
 //
 void InitManager::ReadInputConfigs()
 {
-  auto configReader = ConfigReader(this, 4);
-  configReader.SetMainConfigPath(fsConfigInputMain);
-  configReader.SetUserConfigPath(fsConfigInputUser);
-  configReader.Read();
+  if (!fbConfigIsRead) {
+    LOG(info) << "ca::InitManager: reading parameter configuration ...";
+    try {
+      auto configReader = ConfigReader(this, 4);
+      configReader.SetMainConfigPath(fsConfigInputMain);
+      configReader.SetUserConfigPath(fsConfigInputUser);
+      configReader.Read();
+      fbConfigIsRead = true;
+      LOG(info) << "ca::InitManager: reading parameter configuration ... \033[1;32mdone\033[0m";
+    }
+    catch (const std::runtime_error& err) {
+      LOG(error) << "ca::InitManager: reading parameter configuration ... \033[1;31mfail\033[0m. Reason: "
+                 << err.what();
+    }
+  }
 }
 
 // ---------------------------------------------------------------------------------------------------------------------
diff --git a/algo/ca/core/pars/CaInitManager.h b/algo/ca/core/pars/CaInitManager.h
index f71c85475436cdfb1a89382eef199813bc3542cf..1667d07b61278a503f51199744525b52ce2c7b4f 100644
--- a/algo/ca/core/pars/CaInitManager.h
+++ b/algo/ca/core/pars/CaInitManager.h
@@ -314,5 +314,7 @@ namespace cbm::algo::ca
     std::string fsConfigInputMain = "";  ///< name for the input configuration file
     std::string fsConfigInputUser = "";  ///< name for the input configuration file
     std::string fConfigOutputName = "";  ///< name for the output configuration file
+
+    bool fbConfigIsRead = false;  ///< Flag, if configuration file was read
   };
 }  // namespace cbm::algo::ca
diff --git a/reco/L1/CbmL1.cxx b/reco/L1/CbmL1.cxx
index a469919fc3667a34cbdce5dc3c1208279a579d0f..0e38eeb9569237fc189faed1319deff1469919ac 100644
--- a/reco/L1/CbmL1.cxx
+++ b/reco/L1/CbmL1.cxx
@@ -489,6 +489,7 @@ try {
 
     // Init station layout: sort stations in z-position and init maps of station local, geo and active indices
     fInitManager.InitStationLayout();
+    fInitManager.ReadInputConfigs();
 
     // ****************************************
     // ** Material maps initialization       **
@@ -803,12 +804,17 @@ void CbmL1::GenerateMaterialMaps()
 
   std::vector<ca::StationInitializer*> vpActiveStations;
   vpActiveStations.reserve(fInitManager.GetNstationsActive());
-  for (auto& station : fInitManager.GetStationInfo()) {  // loop over active + inactive stations
+  for (auto& station : fInitManager.GetStationInfo()) {  // loop over active + inactive station
     if (station.GetTrackingStatus()) {
       vpActiveStations.push_back(&station);
     }
   }
 
+  LOG(info) << "Generating material maps for stations: ";
+  for (const auto* pSta : vpActiveStations) {
+    LOG(info) << "\t- z = " << pSta->GetZref() << " cm";
+  }
+
   for (unsigned int ist = 0; ist < vpActiveStations.size(); ++ist) {
     auto* pStation = vpActiveStations[ist];
     double z1      = pStation->GetZmax();