QXRD  0.11.16
qxrdacquisition.h
Go to the documentation of this file.
1 #ifndef QXRDACQUISITION_H
2 #define QXRDACQUISITION_H
3 
4 #include "qcepmacros.h"
6 
7 #include <QObject>
8 #include <QMutex>
9 #include <QThread>
10 #include <QAtomicInt>
11 #include <QTimer>
12 
13 #if QT_VERSION >= 0x040700
14 #include <QElapsedTimer>
15 #endif
16 
17 #include "qxrdrasterdata.h"
21 #include "qxrdexperiment-ptr.h"
22 #include "qxrdwindow-ptr.h"
23 #include "qxrddetector-ptr.h"
24 #include "qxrddetectorthread-ptr.h"
25 #include "qxrddetectorproxy-ptr.h"
26 #include "qxrddataprocessor-ptr.h"
30 #include "qcepallocator-ptr.h"
31 #include "qcepsettingssaver-ptr.h"
32 #include "qxrdprocessargs-ptr.h"
34 
36 {
37  Q_OBJECT
38 
39 public:
45  void initialize();
46 
47  void setWindow(QxrdWindowWPtr win);
48 
49 public slots:
50  void propertyList();
51  void Message(QString cmd);
52 
53  void dynamicProperties();
54  void updateSaveTimes();
55 
56  void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const;
57  void criticalMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const;
58  void statusMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const;
59 
60  void clearDropped();
61 
62  void shutdown();
63 
64  void onBufferSizeChanged(int newMB);
65 
66  void doAcquire ();
67  void doAcquireDark();
68 
69  bool sanityCheckCommon();
70  bool sanityCheckAcquire();
72 
73  virtual void onExposureTimeChanged();
74 
75  void appendDetector(int detType);
77  void clearDetectors();
78 
79  void configureDetector(int i);
80  void openDetectorControlWindow(int i);
81 
84 
85  QString currentFileBase(int detNum, QString extension="");
86 
87  double scalerValue(int i);
88 
89 public:
90  virtual void setupExposureMenu(QDoubleSpinBox *cb);
91 
92  void readSettings(QSettings *settings, QString section);
93  void writeSettings(QSettings *settings, QString section);
94 
95  void copyDynamicProperties(QObject *dest);
96 
97  int currentPhase(int frameNumber);
98 
99  void indicateDroppedFrame(int n);
102 
105 
108 
110 
111 protected:
112  void acquisition(int isDark);
113  void copyParameters(int isDark);
114 
115  void getFileBaseAndName(QString filePattern, QString extent, int detNum, int fileIndex, int phase, int nphases, QString &fileBase, QString &fileName);
116 
119 
121 
122 protected slots:
123  void onIdleTimeout();
124 
125 signals:
126  void detectorStateChanged();
127  void extraInputsChanged();
128 
129 private:
130  virtual void stopIdling();
131  virtual void startIdling();
132 
136 
137  void processImage(const QxrdProcessArgs &args);
138  void processImage (QString filePattern, QString extent, int fileIndex, int phase, int nPhases, bool trig, QcepInt32ImageDataPtr image, QcepMaskDataPtr overflow);
139  void processAcquiredImage(QString filePattern, QString extent, int fileIndex, int phase, int nPhases, bool trig, QcepInt32ImageDataPtr image, QcepMaskDataPtr overflow);
140  void processDarkImage (QString filePattern, QString extent, int fileIndex, QcepInt32ImageDataPtr image, QcepMaskDataPtr overflow);
141 
142  int cancelling();
143 
144 public:
145  Q_PROPERTY(QString qxrdVersion READ get_QxrdVersion STORED false)
146  QCEP_STRING_PROPERTY(QxrdVersion)
147 
148  Q_PROPERTY(QString qtVersion READ get_QtVersion STORED false)
149  QCEP_STRING_PROPERTY(QtVersion)
150 
151  Q_PROPERTY(int detectorCount READ get_DetectorCount WRITE set_DetectorCount)
152  QCEP_INTEGER_PROPERTY(DetectorCount)
153 
154  Q_PROPERTY(int lastAcquired READ get_LastAcquired WRITE set_LastAcquired STORED false)
155  QCEP_INTEGER_PROPERTY(LastAcquired)
156 
157  Q_PROPERTY(int fileIndex READ get_FileIndex WRITE set_FileIndex)
158  QCEP_INTEGER_PROPERTY(FileIndex)
159 
160  Q_PROPERTY(int fileIndexWidth READ get_FileIndexWidth WRITE set_FileIndexWidth)
161  QCEP_INTEGER_PROPERTY(FileIndexWidth)
162 
163  Q_PROPERTY(int filePhaseWidth READ get_FilePhaseWidth WRITE set_FilePhaseWidth)
164  QCEP_INTEGER_PROPERTY(FilePhaseWidth)
165 
166  Q_PROPERTY(int fileOverflowWidth READ get_FileOverflowWidth WRITE set_FileOverflowWidth)
167  QCEP_INTEGER_PROPERTY(FileOverflowWidth)
168 
169  Q_PROPERTY(int detectorNumberWidth READ get_DetectorNumberWidth WRITE set_DetectorNumberWidth)
170  QCEP_INTEGER_PROPERTY(DetectorNumberWidth)
171 
172  Q_PROPERTY(QString fileBase READ get_FileBase WRITE set_FileBase)
173  QCEP_STRING_PROPERTY(FileBase)
174 
175  Q_PROPERTY(int overflowLevel READ get_OverflowLevel WRITE set_OverflowLevel)
176  QCEP_INTEGER_PROPERTY(OverflowLevel)
177 
178  Q_PROPERTY(double raw16SaveTime READ get_Raw16SaveTime WRITE set_Raw16SaveTime)
179  QCEP_DOUBLE_PROPERTY(Raw16SaveTime)
180 
181  Q_PROPERTY(double raw32SaveTime READ get_Raw32SaveTime WRITE set_Raw32SaveTime)
182  QCEP_DOUBLE_PROPERTY(Raw32SaveTime)
183 
184  Q_PROPERTY(double rawSaveTime READ get_RawSaveTime WRITE set_RawSaveTime)
185  QCEP_DOUBLE_PROPERTY(RawSaveTime)
186 
187  Q_PROPERTY(double darkSaveTime READ get_DarkSaveTime WRITE set_DarkSaveTime)
188  QCEP_DOUBLE_PROPERTY(DarkSaveTime)
189 
190  Q_PROPERTY(QString userComment1 READ get_UserComment1 WRITE set_UserComment1)
191  QCEP_STRING_PROPERTY(UserComment1)
192 
193  Q_PROPERTY(QString userComment2 READ get_UserComment2 WRITE set_UserComment2)
194  QCEP_STRING_PROPERTY(UserComment2)
195 
196  Q_PROPERTY(QString userComment3 READ get_UserComment3 WRITE set_UserComment3)
197  QCEP_STRING_PROPERTY(UserComment3)
198 
199  Q_PROPERTY(QString userComment4 READ get_UserComment4 WRITE set_UserComment4)
200  QCEP_STRING_PROPERTY(UserComment4)
201 
202  Q_PROPERTY(QcepDoubleList normalization READ get_Normalization WRITE set_Normalization)
203  QCEP_DOUBLE_LIST_PROPERTY(Normalization)
204 
205  Q_PROPERTY(int droppedFrames READ get_DroppedFrames WRITE set_DroppedFrames STORED false)
206  QCEP_INTEGER_PROPERTY(DroppedFrames)
207 
208  Q_PROPERTY(bool liveViewAtIdle READ get_LiveViewAtIdle WRITE set_LiveViewAtIdle)
209  QCEP_BOOLEAN_PROPERTY(LiveViewAtIdle)
210 
211  Q_PROPERTY(bool acquisitionCancelsLiveView READ get_AcquisitionCancelsLiveView WRITE set_AcquisitionCancelsLiveView)
212  QCEP_BOOLEAN_PROPERTY(AcquisitionCancelsLiveView)
213 
214  Q_PROPERTY(bool retryDropped READ get_RetryDropped WRITE set_RetryDropped)
215  QCEP_BOOLEAN_PROPERTY(RetryDropped)
216 
217  Q_PROPERTY(QcepDoubleVector scalerValues READ get_ScalerValues WRITE set_ScalerValues STORED false)
218  QCEP_DOUBLE_VECTOR_PROPERTY(ScalerValues)
219 
220 private:
221  mutable QMutex m_Mutex;
222 
225 
230 
232 
233  QTimer m_IdleTimer;
234  QAtomicInt m_Idling;
235 
238 
240 };
241 
242 #endif
QxrdWindowWPtr m_Window
QSharedPointer< QxrdDetectorProxy > QxrdDetectorProxyPtr
void indicateDroppedFrame(int n)
QWeakPointer< QxrdDataProcessor > QxrdDataProcessorWPtr
QVector< QxrdDetectorPtr > m_Detectors
QxrdSynchronizedAcquisitionPtr m_SynchronizedAcquisition
QxrdDataProcessorWPtr m_DataProcessor
QxrdExperimentWPtr experiment()
QSharedPointer< QxrdAcquisition > QxrdAcquisitionPtr
#define QCEP_DOUBLE_PROPERTY(propname)
Definition: qcepproperty.h:629
void getFileBaseAndName(QString filePattern, QString extent, int detNum, int fileIndex, int phase, int nphases, QString &fileBase, QString &fileName)
QString currentFileBase(int detNum, QString extension="")
void detectorStateChanged()
void statusMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const
void copyParameters(int isDark)
QxrdAcquisitionScalerModelPtr m_ScalerModel
void configureDetector(int i)
bool acquisitionCancelsLiveView
int currentPhase(int frameNumber)
virtual void stopIdling()
#define QCEP_DOUBLE_VECTOR_PROPERTY(propname)
Definition: qcepproperty.h:839
void appendDetectorProxy(QxrdDetectorProxyPtr proxy)
QWeakPointer< QxrdExperiment > QxrdExperimentWPtr
void processImage(const QxrdProcessArgs &args)
QxrdDetectorPtr detector(int n)
QSharedPointer< QxrdAcquisitionScalerModel > QxrdAcquisitionScalerModelPtr
QVector< double > QcepDoubleVector
Definition: qcepmacros.h:19
QxrdDataProcessorWPtr dataProcessor()
void appendDetector(int detType)
virtual void startIdling()
QSharedPointer< QxrdSynchronizedAcquisition > QxrdSynchronizedAcquisitionPtr
void setWindow(QxrdWindowWPtr win)
void openDetectorControlWindow(int i)
QcepDoubleVector scalerValues
double scalerValue(int i)
QSharedPointer< QxrdAcquisitionExtraInputs > QxrdAcquisitionExtraInputsPtr
QxrdSynchronizedAcquisitionPtr synchronizedAcquisition() const
#define QCEP_INTEGER_PROPERTY(propname)
Definition: qcepproperty.h:698
QcepDoubleList normalization
void copyDynamicProperties(QObject *dest)
QWeakPointer< QxrdWindow > QxrdWindowWPtr
Definition: qxrdwindow-ptr.h:9
virtual void setupExposureMenu(QDoubleSpinBox *cb)
QxrdDetectorThreadPtr detectorThread(int n)
void setNIDAQPlugin(QxrdNIDAQPluginInterfacePtr nidaqPlugin)
void extraInputsChanged()
QxrdAcquisitionPtr myself()
QList< double > QcepDoubleList
Definition: qcepmacros.h:28
void accumulateAcquiredImage(QcepInt16ImageDataPtr image, QcepInt32ImageDataPtr accum, QcepMaskDataPtr overflow)
#define QCEP_STRING_PROPERTY(propname)
Definition: qcepproperty.h:664
QxrdExperimentWPtr m_Experiment
virtual void onExposureTimeChanged()
QWeakPointer< QcepAllocator > QcepAllocatorWPtr
void onBufferSizeChanged(int newMB)
QSharedPointer< QxrdNIDAQPluginInterface > QxrdNIDAQPluginInterfacePtr
virtual QxrdAcquisitionDialogPtr controlPanel(QxrdWindowWPtr win)
#define QCEP_BOOLEAN_PROPERTY(propname)
Definition: qcepproperty.h:732
QVector< QxrdDetectorThreadPtr > m_DetectorThreads
void processAcquiredImage(QString filePattern, QString extent, int fileIndex, int phase, int nPhases, bool trig, QcepInt32ImageDataPtr image, QcepMaskDataPtr overflow)
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const
void readSettings(QSettings *settings, QString section)
QxrdAcquisitionExtraInputsPtr acquisitionExtraInputs() const
void writeSettings(QSettings *settings, QString section)
QSharedPointer< QcepInt32ImageData > QcepInt32ImageDataPtr
void processDarkImage(QString filePattern, QString extent, int fileIndex, QcepInt32ImageDataPtr image, QcepMaskDataPtr overflow)
QxrdAcquisition(QcepSettingsSaverWPtr saver, QxrdExperimentWPtr doc, QxrdDataProcessorWPtr proc, QcepAllocatorWPtr allocator)
QcepAllocatorWPtr allocator() const
void criticalMessage(QString msg, QDateTime ts=QDateTime::currentDateTime()) const
QAtomicInt m_Idling
QSharedPointer< QxrdDetectorThread > QxrdDetectorThreadPtr
QSharedPointer< QxrdDetector > QxrdDetectorPtr
QcepAllocatorWPtr m_Allocator
void acquisition(int isDark)
QSharedPointer< QcepImageDataBase > QcepImageDataBasePtr
QSharedPointer< QcepInt16ImageData > QcepInt16ImageDataPtr
QSharedPointer< QcepMaskData > QcepMaskDataPtr
#define QCEP_DOUBLE_LIST_PROPERTY(propname)
Definition: qcepproperty.h:805
QxrdAcquisitionDialogPtr m_ControlPanel
QxrdAcquisitionExtraInputsPtr m_AcquisitionExtraInputs
QWeakPointer< QcepSettingsSaver > QcepSettingsSaverWPtr
void Message(QString cmd)
QxrdNIDAQPluginInterfacePtr nidaqPlugin() const
QxrdAcquisitionScalerModelPtr acquisitionScalerModel() const