QXRD  0.11.16
Public Member Functions | Private Attributes | List of all members
QxrdPolarIntensityFitter Class Reference

#include <qxrdpolarintensityfitter.h>

Public Member Functions

 QxrdPolarIntensityFitter (QcepDoubleImageDataPtr data, int colNum)
 
 ~QxrdPolarIntensityFitter ()
 
int fit ()
 
double fittedAverage ()
 
double fittedAmplitude ()
 

Private Attributes

QcepDoubleImageDataPtr m_Data
 
int m_ColNum
 
double m_FittedAverage
 
double m_FittedAmplitude
 

Detailed Description

Definition at line 7 of file qxrdpolarintensityfitter.h.

Constructor & Destructor Documentation

QxrdPolarIntensityFitter::QxrdPolarIntensityFitter ( QcepDoubleImageDataPtr  data,
int  colNum 
)

Definition at line 6 of file qxrdpolarintensityfitter.cpp.

QxrdPolarIntensityFitter::~QxrdPolarIntensityFitter ( )

Definition at line 14 of file qxrdpolarintensityfitter.cpp.

15 {
16 }

Member Function Documentation

int QxrdPolarIntensityFitter::fit ( )

Definition at line 28 of file qxrdpolarintensityfitter.cpp.

References m_ColNum, m_Data, m_FittedAmplitude, and m_FittedAverage.

Referenced by QxrdPolarNormalization::executeCol().

29 {
30  if (m_Data) {
31  int nRows = m_Data->get_Height();
32 
33  double vStart = m_Data->get_VStart();
34  double vStep = m_Data->get_VStep();
35 
36  double sumn = 0, sumaa = 0, sumab = 0, sumbb = 0, sumva = 0, sumvb = 0;
37 
38  for (int i=0; i<nRows; i++) {
39  double x = vStart + i*vStep;
40  double a = 1;
41  double b = cos(2.0*x*M_PI/180.0);
42  double v = m_Data->value(m_ColNum, i);
43 
44  if (v == v) {
45  sumn += 1;
46  sumaa += a*a;
47  sumab += a*b;
48  sumbb += b*b;
49 
50  sumva += v*a;
51  sumvb += v*b;
52  }
53  }
54 
55  if (sumn > 5) {
56  QMatrix4x4 m; // Initialized as unit matrix
57 
58  m(0,0) = sumaa;
59  m(1,0) = sumab;
60  m(0,1) = sumab;
61  m(1,1) = sumbb;
62 
63  bool invertible;
64 
65  QMatrix4x4 inv = m.inverted(&invertible);
66 
67  if (invertible) {
68  m_FittedAverage = inv(0,0)*sumva + inv(0,1)*sumvb;
69  m_FittedAmplitude = inv(1,0)*sumva + inv(1,1)*sumvb;
70  } else {
71  m_FittedAverage = sumva/sumaa;
73  }
74  }
75  }
76 
77  return true;
78 }
QcepDoubleImageDataPtr m_Data

Here is the caller graph for this function:

double QxrdPolarIntensityFitter::fittedAmplitude ( )

Definition at line 23 of file qxrdpolarintensityfitter.cpp.

References m_FittedAmplitude.

Referenced by QxrdPolarNormalization::executeCol().

24 {
25  return m_FittedAmplitude;
26 }

Here is the caller graph for this function:

double QxrdPolarIntensityFitter::fittedAverage ( )

Definition at line 18 of file qxrdpolarintensityfitter.cpp.

References m_FittedAverage.

Referenced by QxrdPolarNormalization::executeCol().

19 {
20  return m_FittedAverage;
21 }

Here is the caller graph for this function:

Member Data Documentation

int QxrdPolarIntensityFitter::m_ColNum
private

Definition at line 20 of file qxrdpolarintensityfitter.h.

Referenced by fit().

QcepDoubleImageDataPtr QxrdPolarIntensityFitter::m_Data
private

Definition at line 19 of file qxrdpolarintensityfitter.h.

Referenced by fit().

double QxrdPolarIntensityFitter::m_FittedAmplitude
private

Definition at line 22 of file qxrdpolarintensityfitter.h.

Referenced by fit(), and fittedAmplitude().

double QxrdPolarIntensityFitter::m_FittedAverage
private

Definition at line 21 of file qxrdpolarintensityfitter.h.

Referenced by fit(), and fittedAverage().


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