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

Functions

template<class T >
T * copyMetric (const T &metric)
 
void checkIntegrity (const std::vector< double > &sim_data, const std::vector< double > &exp_data, const std::vector< double > &weight_factors)
 
void checkIntegrity (const std::vector< double > &sim_data, const std::vector< double > &exp_data, const std::vector< double > &uncertainties, const std::vector< double > &weight_factors)
 

Variables

const double double_max = std::numeric_limits<double>::max()
 
const double double_min = std::numeric_limits<double>::min()
 
const double ln10 = std::log(10.0)
 

Function Documentation

◆ copyMetric()

template<class T >
T* anonymous_namespace{ObjectiveMetric.cpp}::copyMetric ( const T &  metric)

Definition at line 28 of file ObjectiveMetric.cpp.

29 {
30  auto* result = new T;
31  result->setNorm(metric.norm());
32  return result;
33 }

Referenced by Chi2Metric::clone(), PoissonLikeMetric::clone(), LogMetric::clone(), RelativeDifferenceMetric::clone(), and RQ4Metric::clone().

◆ checkIntegrity() [1/2]

void anonymous_namespace{ObjectiveMetric.cpp}::checkIntegrity ( const std::vector< double > &  sim_data,
const std::vector< double > &  exp_data,
const std::vector< double > &  weight_factors 
)

Definition at line 35 of file ObjectiveMetric.cpp.

37 {
38  const size_t sim_size = sim_data.size();
39  if (sim_size != exp_data.size() || sim_size != weight_factors.size())
40  throw std::runtime_error("Error in ObjectiveMetric: input arrays have different sizes");
41 
42  for (size_t i = 0; i < sim_size; ++i)
43  if (sim_data[i] < 0.0)
44  throw std::runtime_error(
45  "Error in ObjectiveMetric: simulation data array contains negative values");
46 }

◆ checkIntegrity() [2/2]

void anonymous_namespace{ObjectiveMetric.cpp}::checkIntegrity ( const std::vector< double > &  sim_data,
const std::vector< double > &  exp_data,
const std::vector< double > &  uncertainties,
const std::vector< double > &  weight_factors 
)

Definition at line 48 of file ObjectiveMetric.cpp.

51 {
52  if (sim_data.size() != uncertainties.size())
53  throw std::runtime_error("Error in ObjectiveMetric: input arrays have different sizes");
54 
55  checkIntegrity(sim_data, exp_data, weight_factors);
56 }
void checkIntegrity(const std::vector< double > &sim_data, const std::vector< double > &exp_data, const std::vector< double > &uncertainties, const std::vector< double > &weight_factors)

Referenced by Chi2Metric::computeFromArrays(), LogMetric::computeFromArrays(), PoissonLikeMetric::computeFromArrays(), and RelativeDifferenceMetric::computeFromArrays().

Variable Documentation

◆ double_max

const double anonymous_namespace{ObjectiveMetric.cpp}::double_max = std::numeric_limits<double>::max()

◆ double_min

const double anonymous_namespace{ObjectiveMetric.cpp}::double_min = std::numeric_limits<double>::min()

◆ ln10

const double anonymous_namespace{ObjectiveMetric.cpp}::ln10 = std::log(10.0)

Definition at line 26 of file ObjectiveMetric.cpp.

Referenced by LogMetric::computeFromArrays().