BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
anonymous_namespace{ObjectiveMetricUtils.cpp} Namespace Reference

Functions

template<class U >
std::vector< std::string > keys (const std::map< std::string, U > &map)
 

Variables

const std::function< double(double)> l1_norm = [](double term) { return std::abs(term); }
 
const std::function< double(double)> l2_norm = [](double term) { return term * term; }
 
const std::map< std::string, std::function< std::unique_ptr< ObjectiveMetric >)> > metric_factory
 
const std::string default_metric_name = "poisson-like"
 
const std::map< std::string, std::function< double(double)> > norm_factory
 
const std::string default_norm_name = "l2"
 

Function Documentation

◆ keys()

template<class U >
std::vector<std::string> anonymous_namespace{ObjectiveMetricUtils.cpp}::keys ( const std::map< std::string, U > &  map)

Definition at line 39 of file ObjectiveMetricUtils.cpp.

40 {
41  std::vector<std::string> result;
42  result.reserve(map.size());
43  for (auto& item : map)
44  result.push_back(item.first);
45  return result;
46 }

Referenced by ObjectiveMetricUtils::metricNames(), and ObjectiveMetricUtils::normNames().

Variable Documentation

◆ l1_norm

const std::function<double(double)> anonymous_namespace{ObjectiveMetricUtils.cpp}::l1_norm = [](double term) { return std::abs(term); }

Definition at line 24 of file ObjectiveMetricUtils.cpp.

Referenced by ObjectiveMetricUtils::l1Norm().

◆ l2_norm

const std::function<double(double)> anonymous_namespace{ObjectiveMetricUtils.cpp}::l2_norm = [](double term) { return term * term; }

Definition at line 25 of file ObjectiveMetricUtils.cpp.

Referenced by ObjectiveMetricUtils::l2Norm().

◆ metric_factory

const std::map<std::string, std::function<std::unique_ptr<ObjectiveMetric>)> > anonymous_namespace{ObjectiveMetricUtils.cpp}::metric_factory
Initial value:
= {
{"chi2", []() { return std::make_unique<Chi2Metric>(); }},
{"poisson-like", []() { return std::make_unique<PoissonLikeMetric>(); }},
{"log", []() { return std::make_unique<LogMetric>(); }},
{"reldiff", []() { return std::make_unique<RelativeDifferenceMetric>(); }},
{"rq4", []() { return std::make_unique<RQ4Metric>(); }}}

Definition at line 27 of file ObjectiveMetricUtils.cpp.

Referenced by ObjectiveMetricUtils::createMetric(), and ObjectiveMetricUtils::metricNames().

◆ default_metric_name

const std::string anonymous_namespace{ObjectiveMetricUtils.cpp}::default_metric_name = "poisson-like"

Definition at line 33 of file ObjectiveMetricUtils.cpp.

Referenced by ObjectiveMetricUtils::defaultMetricName().

◆ norm_factory

const std::map<std::string, std::function<double(double)> > anonymous_namespace{ObjectiveMetricUtils.cpp}::norm_factory
Initial value:
= {{"l1", l1_norm},
{"l2", l2_norm}}
const std::function< double(double)> l1_norm
const std::function< double(double)> l2_norm

Definition at line 35 of file ObjectiveMetricUtils.cpp.

Referenced by ObjectiveMetricUtils::createMetric(), and ObjectiveMetricUtils::normNames().

◆ default_norm_name

const std::string anonymous_namespace{ObjectiveMetricUtils.cpp}::default_norm_name = "l2"

Definition at line 37 of file ObjectiveMetricUtils.cpp.

Referenced by ObjectiveMetricUtils::defaultNormName().