QXRD  0.11.16
qxrdintegratorcache.h
Go to the documentation of this file.
1 #ifndef QXRDINTEGRATORCACHE_H
2 #define QXRDINTEGRATORCACHE_H
3 
4 #include "qcepmacros.h"
5 
6 #include <QObject>
7 #include "qcepproperty.h"
8 
9 #include "qcepimagedata-ptr.h"
10 #include "qcepmaskdata-ptr.h"
11 #include "qcepdataobject-ptr.h"
12 #include "qcepintegrateddata-ptr.h"
13 #include "qcepallocator-ptr.h"
14 #include "qxrdexperiment-ptr.h"
15 #include "qxrdintegrator-ptr.h"
16 #include "qxrdpolartransform-ptr.h"
17 #include "qxrdcenterfinder-ptr.h"
18 #include "qxrdscriptengine-ptr.h"
19 #include <QScriptValue>
20 
21 class QxrdIntegratorCache : public QObject
22 {
23  Q_OBJECT
24 public:
26  QxrdIntegratorWPtr integ,
29  virtual ~QxrdIntegratorCache();
30 
31  int get_NRows() const;
32  int get_NCols() const;
33 
34  void grabScriptEngine();
35  void releaseScriptEngine();
36 
40 
41 private:
42  QMutex m_Mutex;
45  double m_RadialStep;
47  double m_RadialStart;
48  double m_RadialEnd;
50  double m_PolarStep;
51  double m_PolarNSteps;
52  double m_PolarStart;
53  double m_PolarEnd;
55  double m_CenterX;
56  double m_CenterY;
60  double m_Energy;
69  int m_NRows;
70  int m_NCols;
71  int m_NPix;
72  double m_RStep;
73  bool m_RFirst;
74  double m_RMin;
75  double m_RMax;
76  double m_CStep;
77  bool m_CFirst;
78  double m_CMin;
79  double m_CMax;
80 
82  int m_NRSteps;
83  int m_NCSteps;
84 
85  double m_Beta;
86  double m_CosBeta;
87  double m_SinBeta;
88  double m_Rot;
89  double m_CosRot;
90  double m_SinRot;
101 
102 public:
105  QcepMaskDataPtr mask,
106  int normalize);
107 
108 private:
109  double getTTH(double x, double y);
110  double getDistance(double x, double y);
111  double getChi(double x, double y);
112  double getQ(double x, double y);
113  double getR(double x, double y);
114  double XValue(double x, double y);
115  double YValue(double x, double y);
116  double NormValue(double x, double y);
117  QString XLabel() const;
118  QString XUnits() const;
119  QString YLabel() const;
120  QString YUnits() const;
121 
122  void partialIntegrationStep1(int i, int n);
123  void partialIntegrationStep2(int i, int n);
124  void partialIntegrationStep3(int i, int n, QcepDoubleImageDataPtr dimg, QcepMaskDataPtr mask, int normalize);
125 
126 private:
127  QAtomicInt m_CacheFillLevel;
128  QAtomicInt m_CacheFullLevel;
129  bool m_HasChi;
135  QVector<double> m_Integral;
136  QVector<double> m_SumValue;
143 };
144 
145 #endif // QXRDINTEGRATORCACHE_H
QcepDoubleImageDataPtr m_CachedRadialValues
QxrdIntegratorCache(QxrdExperimentWPtr exp, QxrdIntegratorWPtr integ, QxrdPolarTransformWPtr xform, QxrdCenterFinderWPtr cf)
QWeakPointer< QxrdCenterFinder > QxrdCenterFinderWPtr
QcepInt32ImageDataPtr m_CachedPolarBinNumbers
void performIntegration(QcepDataObjectPtr res, QcepDoubleImageDataPtr dimg, QcepMaskDataPtr mask, int normalize)
QScriptValue m_UserGeometryFunctionValue
QcepDoubleImageDataPtr m_CachedPolarValues
void partialIntegrationStep3(int i, int n, QcepDoubleImageDataPtr dimg, QcepMaskDataPtr mask, int normalize)
QWeakPointer< QxrdExperiment > QxrdExperimentWPtr
double getR(double x, double y)
double getChi(double x, double y)
double XValue(double x, double y)
void partialIntegrationStep1(int i, int n)
QVector< double > m_Integral
QcepDoubleImageDataPtr m_CachedNormalization
double NormValue(double x, double y)
QcepInt32ImageDataPtr m_CachedRadialBinNumbers
QcepInt32ImageDataPtr cachedGeometry()
QVector< double > m_SumValue
double YValue(double x, double y)
QcepInt32ImageDataPtr cachedPolarGeometry()
QxrdIntegratorWPtr m_Integrator
QScriptValue m_UserAbsorptionFunctionValue
QWeakPointer< QxrdPolarTransform > QxrdPolarTransformWPtr
QcepDoubleImageDataPtr cachedIntensity()
QWeakPointer< QxrdIntegrator > QxrdIntegratorWPtr
QSharedPointer< QcepDataObject > QcepDataObjectPtr
QSharedPointer< QcepInt32ImageData > QcepInt32ImageDataPtr
QxrdCenterFinderWPtr m_CenterFinder
double getTTH(double x, double y)
QSharedPointer< QcepMaskData > QcepMaskDataPtr
QxrdPolarTransformWPtr m_PolarTransform
double getQ(double x, double y)
QxrdExperimentWPtr m_Experiment
double getDistance(double x, double y)
void partialIntegrationStep2(int i, int n)
QSharedPointer< QcepDoubleImageData > QcepDoubleImageDataPtr