24auto filenames_split(std::string_view namelist, std::string_view delimeter =
";") -> std::vector<std::string>
26 auto filenames = std::vector<std::string>{};
27 auto filename_begin = std::string::size_type{ 0 };
28 for (
auto filename_end = std::string::size_type{ 0 }; filename_end != std::string::npos;
29 filename_begin = filename_end + 1)
31 filename_end = namelist.find(delimeter, filename_begin);
32 auto filename = namelist.substr(filename_begin, filename_end - filename_begin);
33 filenames.emplace_back(filename);
91 auto pars = std::vector<FairParSet*>{};
96 if (output_par_run ==
nullptr)
101 for (
auto* par : pars)
103 R3BLOG(info, fmt::format(R
"(parameter "{}" is written to {}.)", par->GetName(), output->GetName()));
104 output->WriteObject<FairParSet>(par, par->GetName(), "overwrite");
108 output->WriteObject<FairRtdbRun>(output_par_run, output_par_run->GetName(),
"overwrite");
131auto main(
int argc,
char** argv) ->
int
134 using namespace std::string_literals;
138 auto help = programOptions.create_option<
bool>(
"help,h",
"help message",
false);
139 auto logLevel = programOptions.create_option<std::string>(
"logLevel,v",
"set log level of fairlog",
"info");
140 auto parameter_out = programOptions.create_option<std::string>(
141 "par-out",
"set the path of the parameter file to merge into (only one allowed)");
142 auto parameter_in = programOptions.create_option<std::string>(
143 "par-in",
"set the path of the parameter files to merge from (semicolon seperated)");
144 if (!programOptions.verify(argc, argv))
149 FairLogger::GetLogger()->SetLogScreenLevel(logLevel().c_str());
152 const auto output_file = parameter_out();
154 if (input_files.empty())
156 R3BLOG(error,
"empty input parameter file!");
159 auto output_rootfile = std::make_unique<TFile>(output_file.c_str(),
"RECREATE");
166 catch (
const std::exception& ex)
168 fmt::print(
"An exception has occurred: {}\n", ex.what());
172 fmt::print(
"An unrecgonised exception has occurred!\n");