QXRD  0.11.16
qxrddetectorprocessor.h
Go to the documentation of this file.
1 #ifndef QXRDDETECTORPROCESSOR_H
2 #define QXRDDETECTORPROCESSOR_H
3 
4 #include "qcepmacros.h"
5 #include "qcepproperty.h"
6 #include "qcepobject.h"
7 
9 #include "qxrdacquisition-ptr.h"
10 #include "qxrddetector-ptr.h"
11 #include "qxrdexperiment-ptr.h"
12 #include "qcepallocator-ptr.h"
14 #include "qxrdcenterfinder-ptr.h"
15 #include "qxrdintegrator-ptr.h"
16 #include "qxrdroicalculator-ptr.h"
17 #include "qcepimagedata-ptr.h"
18 #include "qcepmaskdata-ptr.h"
19 #include <QScriptEngine>
22 #include "qxrdfilesaver-ptr.h"
23 
24 class QxrdDetectorProcessor : public QcepObject, public QEnableSharedFromThis<QxrdDetectorProcessor>
25 {
26  Q_OBJECT
27 
28 public:
31  QxrdFileSaverWPtr fsav,
32  QxrdDetectorWPtr det);
33  virtual ~QxrdDetectorProcessor();
34 
36 
37 signals:
38 
39 public slots:
43 
46  int fileIndex,
47  int phase,
48  int nPhases,
49  bool trig);
50 
52  QcepMaskDataPtr overflow,
53  int fileIndex);
54 
56 
63 
64 public:
65  void readSettings(QSettings *settings, QString section);
66  void writeSettings(QSettings *settings, QString section);
67 
68  static QScriptValue toScriptValue(QScriptEngine *engine, const QxrdDetectorProcessorPtr &proc);
69  static void fromScriptValue(const QScriptValue &obj, QxrdDetectorProcessorPtr &proc);
70 
72 
73  enum {
77  };
78 
79  QString filePathInDarkOutputDirectory(QString fileName) const;
80  QString filePathInRawOutputDirectory(QString fileName) const;
81  QString filePathInSubtractedOutputDirectory(QString fileName) const;
82  QString filePathInIntegratedOutputDirectory(QString fileName) const;
83 
84 private slots:
85  void onMaskPathChanged(QString newPath);
86  void onDarkImagePathChanged(QString newPath);
87  void onBadPixelsPathChanged(QString newPath);
88  void onGainMapPathChanged(QString newPath);
89 
90 private:
92  int fileIndex,
93  int phase,
94  int nPhases,
95  bool trig);
96 
104 
105  QString dataDirectory() const;
106  QString darkOutputDirectory() const;
107  QString rawOutputDirectory() const;
108  QString subtractedOutputDirectory() const;
109  QString integratedOutputDirectory() const;
110  QString existingOutputDirectory(QString dir, QString subdir) const;
111 
112 private:
114 
115 public:
116  // Properties...
117 
118  Q_PROPERTY(int detectorDisplayMode READ get_DetectorDisplayMode WRITE set_DetectorDisplayMode)
119  QCEP_INTEGER_PROPERTY(DetectorDisplayMode)
120 
121  Q_PROPERTY(bool performDarkSubtraction READ get_PerformDarkSubtraction WRITE set_PerformDarkSubtraction)
122  QCEP_BOOLEAN_PROPERTY(PerformDarkSubtraction)
123 
124  Q_PROPERTY(bool saveRawImages READ get_SaveRawImages WRITE set_SaveRawImages)
125  QCEP_BOOLEAN_PROPERTY(SaveRawImages)
126 
127  Q_PROPERTY(bool saveDarkImages READ get_SaveDarkImages WRITE set_SaveDarkImages)
128  QCEP_BOOLEAN_PROPERTY(SaveDarkImages)
129 
130  Q_PROPERTY(bool performBadPixels READ get_PerformBadPixels WRITE set_PerformBadPixels)
131  QCEP_BOOLEAN_PROPERTY(PerformBadPixels)
132 
133  Q_PROPERTY(bool performGainCorrection READ get_PerformGainCorrection WRITE set_PerformGainCorrection)
134  QCEP_BOOLEAN_PROPERTY(PerformGainCorrection)
135 
136  Q_PROPERTY(bool saveSubtracted READ get_SaveSubtracted WRITE set_SaveSubtracted)
137  QCEP_BOOLEAN_PROPERTY(SaveSubtracted)
138 
139  Q_PROPERTY(QString darkImagePath READ get_DarkImagePath WRITE set_DarkImagePath)
140  QCEP_STRING_PROPERTY(DarkImagePath)
141 
142  Q_PROPERTY(QString rawDataSubdir READ get_RawDataSubdir WRITE set_RawDataSubdir)
143  QCEP_STRING_PROPERTY(RawDataSubdir)
144 
145  Q_PROPERTY(QString darkDataSubdir READ get_DarkDataSubdir WRITE set_DarkDataSubdir)
146  QCEP_STRING_PROPERTY(DarkDataSubdir)
147 
148  Q_PROPERTY(QString badPixelsPath READ get_BadPixelsPath WRITE set_BadPixelsPath)
149  QCEP_STRING_PROPERTY(BadPixelsPath)
150 
151  Q_PROPERTY(QString gainMapPath READ get_GainMapPath WRITE set_GainMapPath)
152  QCEP_STRING_PROPERTY(GainMapPath)
153 
154  Q_PROPERTY(QString subtractedSubdir READ get_SubtractedSubdir WRITE set_SubtractedSubdir)
155  QCEP_STRING_PROPERTY(SubtractedSubdir)
156 
157  Q_PROPERTY(QString maskPath READ get_MaskPath WRITE set_MaskPath)
158  QCEP_STRING_PROPERTY(MaskPath)
159 
160 
161  Q_PROPERTY(bool performIntegration READ get_PerformIntegration WRITE set_PerformIntegration)
162  QCEP_BOOLEAN_PROPERTY(PerformIntegration)
163 
164  Q_PROPERTY(bool displayIntegratedData READ get_DisplayIntegratedData WRITE set_DisplayIntegratedData)
165  QCEP_BOOLEAN_PROPERTY(DisplayIntegratedData)
166 
167  Q_PROPERTY(bool saveIntegratedData READ get_SaveIntegratedData WRITE set_SaveIntegratedData)
168  QCEP_BOOLEAN_PROPERTY(SaveIntegratedData)
169 
170  Q_PROPERTY(QString integratedDataFile READ get_IntegratedDataFile WRITE set_IntegratedDataFile)
171  QCEP_STRING_PROPERTY(IntegratedDataFile)
172 
173  Q_PROPERTY(bool saveIntegratedDataSeparate READ get_SaveIntegratedDataSeparate WRITE set_SaveIntegratedDataSeparate)
174  QCEP_BOOLEAN_PROPERTY(SaveIntegratedDataSeparate)
175 
176  Q_PROPERTY(QString integratedDataSubdir READ get_IntegratedDataSubdir WRITE set_IntegratedDataSubdir)
177  QCEP_STRING_PROPERTY(IntegratedDataSubdir)
178 
179  Q_PROPERTY(bool accumulateIntegrated2D READ get_AccumulateIntegrated2D WRITE set_AccumulateIntegrated2D)
180  QCEP_BOOLEAN_PROPERTY(AccumulateIntegrated2D)
181 
182  Q_PROPERTY(QString accumulateIntegratedName READ get_AccumulateIntegratedName WRITE set_AccumulateIntegratedName)
183  QCEP_STRING_PROPERTY(AccumulateIntegratedName)
184 
185  Q_PROPERTY(bool calculateROICounts READ get_CalculateROICounts WRITE set_CalculateROICounts)
186  QCEP_BOOLEAN_PROPERTY(CalculateROICounts)
187 
188  Q_PROPERTY(bool displayROIBorders READ get_DisplayROIBorders WRITE set_DisplayROIBorders)
189  QCEP_BOOLEAN_PROPERTY(DisplayROIBorders)
190 
191  Q_PROPERTY(QcepDoubleVector roiCounts READ get_RoiCounts WRITE set_RoiCounts STORED false)
192  QCEP_DOUBLE_VECTOR_PROPERTY(RoiCounts)
193 
194 private:
195  QMutex m_Mutex;
196 
200 
204 
206 
208 
216 };
217 
218 #endif // QXRDACQUISITIONPROCESSOR_H
void processAcquiredImage(QcepInt32ImageDataPtr image, QcepMaskDataPtr overflow, int fileIndex, int phase, int nPhases, bool trig)
QSharedPointer< QxrdCenterFinder > QxrdCenterFinderPtr
QString darkOutputDirectory() const
void onBadPixelsPathChanged(QString newPath)
QxrdDetectorProcessor(QcepSettingsSaverWPtr saver, QxrdExperimentWPtr doc, QxrdFileSaverWPtr fsav, QxrdDetectorWPtr det)
QcepDoubleImageDataPtr badPixels()
static void fromScriptValue(const QScriptValue &obj, QxrdDetectorProcessorPtr &proc)
QxrdDetectorControlWindowWPtr m_ControlWindow
QcepImageDataBasePtr doGainCorrection(QcepImageDataBasePtr img)
QcepDoubleImageDataPtr m_BadPixels
QWeakPointer< QxrdDetectorControlWindow > QxrdDetectorControlWindowWPtr
void onDarkImagePathChanged(QString newPath)
void processIdleImage(QcepImageDataBasePtr image)
QString integratedOutputDirectory() const
static QScriptValue toScriptValue(QScriptEngine *engine, const QxrdDetectorProcessorPtr &proc)
QString filePathInDarkOutputDirectory(QString fileName) const
QSharedPointer< QxrdROICalculator > QxrdROICalculatorPtr
QcepDoubleImageDataPtr gainCorrection()
#define QCEP_DOUBLE_VECTOR_PROPERTY(propname)
Definition: qcepproperty.h:839
void doSaveSubtractedImage(QcepImageDataBasePtr img, QcepMaskDataPtr ovf)
QxrdROICalculatorPtr roiCalculator()
QWeakPointer< QxrdExperiment > QxrdExperimentWPtr
QxrdIntegratorPtr m_Integrator
QxrdIntegratorPtr integrator()
QWeakPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsWPtr
QVector< double > QcepDoubleVector
Definition: qcepmacros.h:19
QxrdExperimentWPtr m_Experiment
QxrdImagePlotSettingsPtr m_ImagePlotSettings
void onMaskPathChanged(QString newPath)
QString subtractedOutputDirectory() const
#define QCEP_INTEGER_PROPERTY(propname)
Definition: qcepproperty.h:698
QxrdImagePlotSettingsWPtr imagePlotSettings()
QString filePathInRawOutputDirectory(QString fileName) const
void setControlWindow(QxrdDetectorControlWindowWPtr ctrl)
QcepImageDataBasePtr doBadPixels(QcepImageDataBasePtr img)
QString existingOutputDirectory(QString dir, QString subdir) const
void doSaveDarkImage(QcepImageDataBasePtr img, QcepMaskDataPtr ovf)
QcepSettingsSaverWPtr m_Saver
QWeakPointer< QxrdFileSaver > QxrdFileSaverWPtr
void readSettings(QSettings *settings, QString section)
QSharedPointer< QxrdDetectorProcessor > QxrdDetectorProcessorPtr
#define QCEP_STRING_PROPERTY(propname)
Definition: qcepproperty.h:664
QWeakPointer< QxrdDetector > QxrdDetectorWPtr
QSharedPointer< QxrdIntegrator > QxrdIntegratorPtr
void writeSettings(QSettings *settings, QString section)
QxrdROICalculatorPtr m_ROICalculator
QcepImageDataBasePtr m_Data
QSharedPointer< QxrdImagePlotSettings > QxrdImagePlotSettingsPtr
QcepDoubleImageDataPtr m_GainMap
void doSaveRawImage(QcepImageDataBasePtr img, QcepMaskDataPtr ovf)
#define QCEP_BOOLEAN_PROPERTY(propname)
Definition: qcepproperty.h:732
void setAcquiredImageProperties(QcepImageDataBasePtr image, int fileIndex, int phase, int nPhases, bool trig)
QcepImageDataBasePtr doDarkSubtraction(QcepImageDataBasePtr img)
QcepInt32ImageDataPtr dark()
QSharedPointer< QcepInt32ImageData > QcepInt32ImageDataPtr
void processDarkImage(QcepInt32ImageDataPtr image, QcepMaskDataPtr overflow, int fileIndex)
QcepDoubleVector doCalculateROICounts(QcepImageDataBasePtr img)
QcepDoubleImageDataPtr m_LiveData
QxrdCenterFinderPtr m_CenterFinder
QString filePathInSubtractedOutputDirectory(QString fileName) const
QxrdFileSaverWPtr m_FileSaver
void onGainMapPathChanged(QString newPath)
QSharedPointer< QcepImageDataBase > QcepImageDataBasePtr
QSharedPointer< QcepMaskData > QcepMaskDataPtr
QString filePathInIntegratedOutputDirectory(QString fileName) const
QcepImageDataBasePtr data()
QcepInt32ImageDataPtr m_DarkImage
QWeakPointer< QcepSettingsSaver > QcepSettingsSaverWPtr
QxrdCenterFinderPtr centerFinder()
QString rawOutputDirectory() const
QSharedPointer< QcepDoubleImageData > QcepDoubleImageDataPtr