BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ChiSquaredModule Class Reference
Inheritance diagram for ChiSquaredModule:
Collaboration diagram for ChiSquaredModule:

Public Member Functions

 ChiSquaredModule ()
 
 ChiSquaredModule (const ChiSquaredModule &other)
 
virtual ~ChiSquaredModule ()
 
virtual ChiSquaredModuleclone () const
 
virtual double residual (double a, double b, double weight)
 
const IVarianceFunctionvarianceFunction () const
 
void setVarianceFunction (const IVarianceFunction &variance_function)
 
virtual const IIntensityFunctiongetIntensityFunction () const
 
virtual void setIntensityFunction (const IIntensityFunction &intensity_function)
 
virtual void transferToCPP ()
 

Protected Attributes

std::unique_ptr< IVarianceFunctionm_variance_function
 
std::unique_ptr< IIntensityFunctionmp_intensity_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 26 of file ChiSquaredModule.h.

26 {}

Referenced by clone().

◆ ChiSquaredModule() [2/2]

ChiSquaredModule::ChiSquaredModule ( const ChiSquaredModule other)
inline

Definition at line 27 of file ChiSquaredModule.h.

◆ ~ChiSquaredModule()

virtual ChiSquaredModule::~ChiSquaredModule ( )
inlinevirtual

Definition at line 28 of file ChiSquaredModule.h.

28 {}

Member Function Documentation

◆ clone()

virtual ChiSquaredModule* ChiSquaredModule::clone ( ) const
inlinevirtual

clone method

Implements IChiSquaredModule.

Definition at line 30 of file ChiSquaredModule.h.

30 { return new ChiSquaredModule(*this); }

References ChiSquaredModule().

Here is the call graph for this 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 = mp_intensity_function->evaluate(value_simu);
29  value_real = mp_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< IIntensityFunction > mp_intensity_function
std::unique_ptr< IVarianceFunction > m_variance_function

References IChiSquaredModule::m_variance_function, and IChiSquaredModule::mp_intensity_function.

◆ 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.

◆ 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:

◆ getIntensityFunction()

const IIntensityFunction * IChiSquaredModule::getIntensityFunction ( ) const
virtualinherited

Returns data rescaler.

Definition at line 42 of file IChiSquaredModule.cpp.

43 {
44  return mp_intensity_function.get();
45 }

References IChiSquaredModule::mp_intensity_function.

◆ setIntensityFunction()

void IChiSquaredModule::setIntensityFunction ( const IIntensityFunction intensity_function)
virtualinherited

Sets data rescaler.

Definition at line 47 of file IChiSquaredModule.cpp.

48 {
49  mp_intensity_function.reset(intensity_function.clone());
50 }
virtual IIntensityFunction * clone() const =0

References IIntensityFunction::clone(), and IChiSquaredModule::mp_intensity_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.

Member Data Documentation

◆ m_variance_function

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

◆ mp_intensity_function

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

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