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();