QXRD  0.11.16
Public Member Functions | Protected Attributes | Private Member Functions | Static Private Member Functions | List of all members
QxrdFitterRingCircle Class Reference

#include <qxrdfitterringcircle.h>

Inheritance diagram for QxrdFitterRingCircle:
Inheritance graph
[legend]
Collaboration diagram for QxrdFitterRingCircle:
Collaboration graph
[legend]

Public Member Functions

 QxrdFitterRingCircle (QxrdCenterFinder *cf, int ringIndex, double x0, double y0)
 
 QxrdFitterRingCircle ()
 
int fit ()
 
int ringIndex () const
 
double x0 () const
 
double y0 () const
 
double fittedX () const
 
double fittedY () const
 
double fittedR () const
 
- Public Member Functions inherited from QxrdFitter
 QxrdFitter (QxrdCenterFinder *cf)
 
 QxrdFitter ()
 
QxrdCenterFindercf () const
 
FitResult reason () const
 
QString reasonString () const
 

Protected Attributes

int m_RingIndex
 
double m_X0
 
double m_Y0
 
double m_FittedX
 
double m_FittedY
 
double m_FittedR
 
- Protected Attributes inherited from QxrdFitter
QxrdCenterFinderm_CenterFinder
 
FitResult m_Reason
 

Private Member Functions

void evaluate (double *parm, double *xv, int np, int nx)
 

Static Private Member Functions

static void staticEvaluate (double *parm, double *xv, int np, int nx, void *adata)
 

Additional Inherited Members

- Public Types inherited from QxrdFitter
enum  FitResult {
  Successful, NoResult, OutsideData, BadWidth,
  BadPosition, BadHeight, LastReason
}
 
- Static Public Member Functions inherited from QxrdFitter
static QString reasonString (FitResult i)
 

Detailed Description

Definition at line 6 of file qxrdfitterringcircle.h.

Constructor & Destructor Documentation

QxrdFitterRingCircle::QxrdFitterRingCircle ( QxrdCenterFinder cf,
int  ringIndex,
double  x0,
double  y0 
)
QxrdFitterRingCircle::QxrdFitterRingCircle ( )

Definition at line 25 of file qxrdfitterringcircle.cpp.

Member Function Documentation

void QxrdFitterRingCircle::evaluate ( double *  parm,
double *  xv,
int  np,
int  nx 
)
private

Definition at line 45 of file qxrdfitterringcircle.cpp.

References QxrdPowderPoint::isValid(), QxrdFitter::m_CenterFinder, m_RingIndex, QxrdCenterFinder::powderRingPoint(), QxrdPowderPoint::x(), and QxrdPowderPoint::y().

Referenced by staticEvaluate().

46 {
47  if (m_CenterFinder) {
48  double cx = parm[0];
49  double cy = parm[1];
50  double r = parm[2];
51 
52  for (int i=0; i<nx; i++) {
54 
55  if (pt.isValid()) {
56  double dx = pt.x() - cx;
57  double dy = pt.y() - cy;
58  double rcalc = sqrt(dx*dx + dy*dy);
59 
60  xv[i] = rcalc - r;
61  }
62  }
63  }
64 }
double y() const
QxrdCenterFinder * m_CenterFinder
Definition: qxrdfitter.h:31
QxrdPowderPoint powderRingPoint(int i) const
bool isValid() const
double x() const

Here is the call graph for this function:

Here is the caller graph for this function:

int QxrdFitterRingCircle::fit ( )
virtual

Implements QxrdFitter.

Definition at line 66 of file qxrdfitterringcircle.cpp.

References QxrdCenterFinder::countPowderRingPoints(), QxrdFitter::m_CenterFinder, m_FittedR, m_FittedX, m_FittedY, QxrdFitter::m_Reason, m_RingIndex, m_X0, m_Y0, QxrdFitter::NoResult, QxrdCenterFinder::powderRingPoint(), staticEvaluate(), QxrdFitter::Successful, QxrdPowderPoint::x(), and QxrdPowderPoint::y().

Referenced by QxrdCenterFinder::fitPowderCircle().

67 {
68  int niter = -1;
69 
70  if (m_CenterFinder) {
71 
73  double rsum = 0;
74 
75  for (int i=0; i<npts; i++) {
77 
78  double dx = pt.x() - m_X0;
79  double dy = pt.y() - m_Y0;
80 
81  rsum += sqrt(dx*dx + dy*dy);
82  }
83 
84  double parms[3];
85  double info[LM_INFO_SZ];
86 
87  parms[0] = m_X0;
88  parms[1] = m_Y0;
89  parms[2] = rsum/npts;
90 
91  niter = dlevmar_dif(QxrdFitterRingCircle::staticEvaluate,
92  parms, NULL, 3, npts,
93  m_CenterFinder->get_PeakFitIterations(),
94  NULL, info, NULL, NULL, this);
95 
96  if (niter > 0) {
98 
99  m_FittedX = parms[0];
100  m_FittedY = parms[1];
101  m_FittedR = parms[2];
102  } else {
103  m_Reason = NoResult;
104  }
105  }
106 
107  return niter;
108 }
double y() const
FitResult m_Reason
Definition: qxrdfitter.h:32
int countPowderRingPoints() const
QxrdCenterFinder * m_CenterFinder
Definition: qxrdfitter.h:31
QxrdPowderPoint powderRingPoint(int i) const
double x() const
static void staticEvaluate(double *parm, double *xv, int np, int nx, void *adata)

Here is the call graph for this function:

Here is the caller graph for this function:

double QxrdFitterRingCircle::fittedR ( ) const
inline

Definition at line 19 of file qxrdfitterringcircle.h.

References m_FittedR.

Referenced by QxrdCenterFinder::fitPowderCircle().

19 { return m_FittedR; }

Here is the caller graph for this function:

double QxrdFitterRingCircle::fittedX ( ) const
inline

Definition at line 17 of file qxrdfitterringcircle.h.

References m_FittedX.

Referenced by QxrdCenterFinder::fitPowderCircle().

17 { return m_FittedX; }

Here is the caller graph for this function:

double QxrdFitterRingCircle::fittedY ( ) const
inline

Definition at line 18 of file qxrdfitterringcircle.h.

References m_FittedY.

Referenced by QxrdCenterFinder::fitPowderCircle().

18 { return m_FittedY; }

Here is the caller graph for this function:

int QxrdFitterRingCircle::ringIndex ( ) const
inline

Definition at line 14 of file qxrdfitterringcircle.h.

References m_RingIndex.

14 { return m_RingIndex; }
void QxrdFitterRingCircle::staticEvaluate ( double *  parm,
double *  xv,
int  np,
int  nx,
void *  adata 
)
staticprivate

Definition at line 36 of file qxrdfitterringcircle.cpp.

References evaluate().

Referenced by fit().

37 {
39 
40  if (rf) {
41  rf->evaluate(p,hx,m,n);
42  }
43 }
void evaluate(double *parm, double *xv, int np, int nx)

Here is the call graph for this function:

Here is the caller graph for this function:

double QxrdFitterRingCircle::x0 ( ) const
inline

Definition at line 15 of file qxrdfitterringcircle.h.

References m_X0.

15 { return m_X0; }
double QxrdFitterRingCircle::y0 ( ) const
inline

Definition at line 16 of file qxrdfitterringcircle.h.

References m_Y0.

16 { return m_Y0; }

Member Data Documentation

double QxrdFitterRingCircle::m_FittedR
protected

Definition at line 31 of file qxrdfitterringcircle.h.

Referenced by fit(), and fittedR().

double QxrdFitterRingCircle::m_FittedX
protected

Definition at line 29 of file qxrdfitterringcircle.h.

Referenced by fit(), and fittedX().

double QxrdFitterRingCircle::m_FittedY
protected

Definition at line 30 of file qxrdfitterringcircle.h.

Referenced by fit(), and fittedY().

int QxrdFitterRingCircle::m_RingIndex
protected

Definition at line 26 of file qxrdfitterringcircle.h.

Referenced by evaluate(), fit(), and ringIndex().

double QxrdFitterRingCircle::m_X0
protected

Definition at line 27 of file qxrdfitterringcircle.h.

Referenced by fit(), and x0().

double QxrdFitterRingCircle::m_Y0
protected

Definition at line 28 of file qxrdfitterringcircle.h.

Referenced by fit(), and y0().


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