28 for (
const auto& par : params) {
29 if (par.name().size() > result)
30 result = par.name().size();
37 FitPrintService::FitPrintService() =
default;
39 void FitPrintService::print(
const FitObjective& objective)
41 std::ostringstream ostr;
43 if (objective.isFirstIteration()) {
45 m_last_call_time.start();
48 ostr << iterationHeaderString(objective);
49 ostr << wallTimeString();
50 ostr << parameterString(objective);
52 if (objective.isCompleted())
53 ostr << fitResultString(objective);
55 std::cout << ostr.str() <<
"\n";
58 std::string FitPrintService::iterationHeaderString(
const FitObjective& objective)
60 std::ostringstream result;
62 result <<
"FitPrintService::update() -> Info."
64 << std::setprecision(8) << objective.iterationInfo().chi2() <<
"\n";
69 std::string FitPrintService::wallTimeString()
71 std::ostringstream result;
73 m_last_call_time.stop();
74 result <<
"Wall time since last call:" << std::fixed << std::setprecision(2)
75 << m_last_call_time.
runTime() <<
"\n";
76 m_last_call_time.start();
81 std::string FitPrintService::parameterString(
const FitObjective& objective)
83 std::ostringstream result;
85 const auto params = objective.iterationInfo().parameters();
86 const auto length = length_of_longest_name(params);
88 for (
const auto& par : params) {
90 << std::setprecision(6) <<
" " << par.startValue() <<
" " << par.limits().toString()
91 <<
" " << par.value() <<
"\n";
97 std::string FitPrintService::fitResultString(
const FitObjective& objective)
99 std::ostringstream result;
103 result <<
"This was the last iteration." << std::endl;
104 result <<
"Total time spend: " << std::fixed << std::setprecision(2) << m_run_time.
runTime()
108 result << objective.minimizerResult().
toString();
Defines class FitObjective.
Defines class FitPrintService.
Defines a few helper functions.
Holds vector of SimDataPairs (experimental data and simulation results) for use in fitting.
std::string toString() const
Returns multi-line string representing minimization results.
A collection of fit parameters.
unsigned iterationCount() const
Returns current number of minimizer iterations.
double runTime() const
returns run time in sec.
std::string scientific(const T value, int n=10)
Returns scientific string representing given value of any numeric type.
std::string padRight(const std::string &name, size_t length)
Returns string right-padded with blanks.