BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
ChiSquaredModule Class Reference

Description

Calculation of chi2 between two data sets.

Definition at line 23 of file ChiSquaredModule.h.

Inheritance diagram for ChiSquaredModule:
[legend]
Collaboration diagram for ChiSquaredModule:
[legend]

Public Member Functions

 ChiSquaredModule ()=default
 
 ChiSquaredModule (const ChiSquaredModule &other)=default
 
 ~ChiSquaredModule () override=default
 
ChiSquaredModuleclone () const override
 clone method More...
 
virtual const IIntensityFunctiongetIntensityFunction () const
 Returns data rescaler. More...
 
double residual (double a, double b, double weight) override
 
virtual void setIntensityFunction (const IIntensityFunction &intensity_function)
 Sets data rescaler. More...
 
void setVarianceFunction (const IVarianceFunction &variance_function)
 Sets squared function. More...
 
virtual void transferToCPP ()
 Used for Python overriding of clone (see swig/tweaks.py) More...
 
const IVarianceFunctionvarianceFunction () const
 Returns squared function. More...
 

Protected Attributes

std::unique_ptr< IIntensityFunctionm_intensity_function
 
std::unique_ptr< IVarianceFunctionm_variance_function
 

Constructor & Destructor Documentation

◆ ChiSquaredModule() [1/2]

ChiSquaredModule::ChiSquaredModule ( )
default

Referenced by clone().

◆ ChiSquaredModule() [2/2]

ChiSquaredModule::ChiSquaredModule ( const ChiSquaredModule other)
default

◆ ~ChiSquaredModule()

ChiSquaredModule::~ChiSquaredModule ( )
overridedefault

Member Function Documentation

◆ clone()

ChiSquaredModule* ChiSquaredModule::clone ( ) const
inlineoverridevirtual

clone method

Implements IChiSquaredModule.

Definition at line 29 of file ChiSquaredModule.h.

29 { return new ChiSquaredModule(*this); }
ChiSquaredModule()=default

References ChiSquaredModule().

Here is the call graph for this function:

◆ getIntensityFunction()

const IIntensityFunction * IChiSquaredModule::getIntensityFunction ( ) const
virtualinherited

Returns data rescaler.

Definition at line 45 of file IChiSquaredModule.cpp.

46 {
47  return m_intensity_function.get();
48 }
std::unique_ptr< IIntensityFunction > m_intensity_function

References IChiSquaredModule::m_intensity_function.

◆ residual()

double ChiSquaredModule::residual ( double  a,
double  b,
double  weight 
)
overridevirtual

Implements IChiSquaredModule.

Definition at line 22 of file ChiSquaredModule.cpp.

23 {
24  double value_simu = a;
25  double value_real = b;
26 
28  value_simu = m_intensity_function->evaluate(value_simu);
29  value_real = m_intensity_function->evaluate(value_real);
30  }
31 
32  double variance = m_variance_function->variance(value_real, value_simu);
33  double normalize = variance <= 0 ? std::numeric_limits<double>::min() : std::sqrt(variance);
34 
35  return std::sqrt(weight) * (value_simu - value_real) / normalize;
36 }
std::unique_ptr< IVarianceFunction > m_variance_function

References IChiSquaredModule::m_intensity_function, and IChiSquaredModule::m_variance_function.

◆ setIntensityFunction()

void IChiSquaredModule::setIntensityFunction ( const IIntensityFunction intensity_function)
virtualinherited

Sets data rescaler.

Definition at line 50 of file IChiSquaredModule.cpp.

51 {
52  m_intensity_function.reset(intensity_function.clone());
53 }
virtual IIntensityFunction * clone() const =0

References IIntensityFunction::clone(), and IChiSquaredModule::m_intensity_function.

Here is the call graph for this function:

◆ setVarianceFunction()

void IChiSquaredModule::setVarianceFunction ( const IVarianceFunction variance_function)
inherited

Sets squared function.

Definition at line 40 of file IChiSquaredModule.cpp.

41 {
42  m_variance_function.reset(variance_function.clone());
43 }
virtual IVarianceFunction * clone() const =0

References IVarianceFunction::clone(), and IChiSquaredModule::m_variance_function.

Here is the call graph for this function:

◆ transferToCPP()

virtual void ICloneable::transferToCPP ( )
inlinevirtualinherited

Used for Python overriding of clone (see swig/tweaks.py)

Definition at line 32 of file ICloneable.h.

◆ varianceFunction()

const IVarianceFunction * IChiSquaredModule::varianceFunction ( ) const
inherited

Returns squared function.

Definition at line 24 of file IChiSquaredModule.cpp.

25 {
26  return m_variance_function.get();
27 }

References IChiSquaredModule::m_variance_function.

Member Data Documentation

◆ m_intensity_function

std::unique_ptr<IIntensityFunction> IChiSquaredModule::m_intensity_function
protectedinherited

◆ m_variance_function

std::unique_ptr<IVarianceFunction> IChiSquaredModule::m_variance_function
protectedinherited

The documentation for this class was generated from the following files: