BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ChiSquaredModule Class Reference

Calculation of chi2 between two data sets. More...

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

Public Member Functions

 ChiSquaredModule ()
 
 ChiSquaredModule (const ChiSquaredModule &other)
 
virtual ~ChiSquaredModule ()
 
virtual ChiSquaredModuleclone () const
 clone method More...
 
virtual const IIntensityFunctiongetIntensityFunction () const
 Returns data rescaler. More...
 
virtual double residual (double a, double b, double weight)
 
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
 

Detailed Description

Calculation of chi2 between two data sets.

Definition at line 23 of file ChiSquaredModule.h.

Constructor & Destructor Documentation

◆ ChiSquaredModule() [1/2]

ChiSquaredModule::ChiSquaredModule ( )
inline

Definition at line 25 of file ChiSquaredModule.h.

25 {}

Referenced by clone().

◆ ChiSquaredModule() [2/2]

ChiSquaredModule::ChiSquaredModule ( const ChiSquaredModule other)
inline

Definition at line 26 of file ChiSquaredModule.h.

◆ ~ChiSquaredModule()

virtual ChiSquaredModule::~ChiSquaredModule ( )
inlinevirtual

Definition at line 27 of file ChiSquaredModule.h.

27 {}

Member Function Documentation

◆ clone()

virtual ChiSquaredModule* ChiSquaredModule::clone ( ) const
inlinevirtual

clone method

Implements IChiSquaredModule.

Definition at line 29 of file ChiSquaredModule.h.

29 { return new ChiSquaredModule(*this); }

References ChiSquaredModule().

Here is the call graph for this function:

◆ getIntensityFunction()

const IIntensityFunction * IChiSquaredModule::getIntensityFunction ( ) const
virtualinherited

Returns data rescaler.

Definition at line 42 of file IChiSquaredModule.cpp.

43 {
44  return m_intensity_function.get();
45 }
std::unique_ptr< IIntensityFunction > m_intensity_function

References IChiSquaredModule::m_intensity_function.

◆ residual()

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

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 47 of file IChiSquaredModule.cpp.

48 {
49  m_intensity_function.reset(intensity_function.clone());
50 }
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 37 of file IChiSquaredModule.cpp.

38 {
39  m_variance_function.reset(variance_function.clone());
40 }
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 34 of file ICloneable.h.

◆ varianceFunction()

const IVarianceFunction * IChiSquaredModule::varianceFunction ( ) const
inherited

Returns squared function.

Definition at line 21 of file IChiSquaredModule.cpp.

22 {
23  return m_variance_function.get();
24 }

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: