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

#include <qxrddetectorthread.h>

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

Public Types

enum  DetectorType {
  NoDetector, SimulatedDetector, PerkinElmerDetector, PilatusDetector,
  EpicsAreaDetector, FileWatcherDetector
}
 
enum  DetectorSubType {
  PCI_SubType, GBIF_IP_SubType, GBIF_MAC_SubType, GBIF_Name_SubType,
  GBIF_Scan_SubType
}
 
enum  BinningModePE { Binning1x1, Binning2x2Average, Binning2x2Summed, BinningModeCount }
 

Public Member Functions

 QxrdDetectorThread (QcepSettingsSaverWPtr saver, QxrdExperimentWPtr expt, QxrdAcquisitionWPtr acq, int detType, int detNum, QcepObject *parent)
 
virtual ~QxrdDetectorThread ()
 
QxrdDetectorPtr detector () const
 
void shutdown ()
 
- Public Member Functions inherited from QxrdThread
 QxrdThread (QObject *parent=0)
 
- Public Member Functions inherited from QcepThread
 QcepThread (QObject *parent=0)
 

Static Public Member Functions

static int detectorTypeCount ()
 
static QString detectorTypeName (int detectorType)
 
static QStringList detectorTypeNames ()
 
static QString detectorSubTypeNamePE (int detectorSubType)
 
static QStringList detectorSubTypeNamesPE ()
 
static QStringList gainModeNamesPE ()
 
static QString binningModeNamePE (int binningMode)
 
static QStringList binningModeNamesPE ()
 
static void pushDefaultsToProxy (int detectorType, QxrdDetectorProxyPtr proxy)
 
- Static Public Member Functions inherited from QcepThread
static void msleep (long unsigned int)
 

Protected Member Functions

void run ()
 

Private Attributes

QcepSettingsSaverWPtr m_Saver
 
QxrdExperimentWPtr m_Experiment
 
QxrdAcquisitionWPtr m_Acquisition
 
QxrdDetectorPtr m_Detector
 
int m_DetectorType
 
int m_DetectorNumber
 
QcepObjectm_Parent
 

Additional Inherited Members

- Protected Attributes inherited from QcepThread
QMutex m_Mutex
 

Detailed Description

Definition at line 10 of file qxrddetectorthread.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

QxrdDetectorThread::QxrdDetectorThread ( QcepSettingsSaverWPtr  saver,
QxrdExperimentWPtr  expt,
QxrdAcquisitionWPtr  acq,
int  detType,
int  detNum,
QcepObject parent 
)
explicit

Definition at line 23 of file qxrddetectorthread.cpp.

References DEBUG_CONSTRUCTORS, detectorTypeName(), and qcepDebug().

27  :
28  QxrdThread(),
29  m_Saver(saver),
30  m_Experiment(expt),
31  m_Acquisition(acq),
32  m_Detector(),
33  m_DetectorType(detType),
34  m_DetectorNumber(detNum),
35  m_Parent(parent)
36 {
38  printf("QxrdDetectorThread::QxrdDetectorThread(%p)\n", this);
39  }
40 
41  setObjectName(detectorTypeName(detType));
42 }
qint64 qcepDebug(int cond)
Definition: qcepdebug.cpp:26
QcepSettingsSaverWPtr m_Saver
QxrdDetectorPtr m_Detector
QxrdExperimentWPtr m_Experiment
QxrdThread(QObject *parent=0)
Definition: qxrdthread.cpp:3
static QString detectorTypeName(int detectorType)
QxrdAcquisitionWPtr m_Acquisition

Here is the call graph for this function:

QxrdDetectorThread::~QxrdDetectorThread ( )
virtual

Definition at line 44 of file qxrddetectorthread.cpp.

References DEBUG_APP, DEBUG_CONSTRUCTORS, m_Experiment, qcepDebug(), and shutdown().

45 {
46  if (qcepDebug(DEBUG_APP)) {
48 
49  if (expt) {
50  expt->printMessage("QxrdDetectorThread::~QxrdDetectorThread");
51  }
52  }
53 
54  shutdown();
55 
57  printf("QxrdDetectorThread::~QxrdDetectorThread(%p)\n", this);
58  }
59 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
qint64 qcepDebug(int cond)
Definition: qcepdebug.cpp:26
QxrdExperimentWPtr m_Experiment

Here is the call graph for this function:

Member Function Documentation

QString QxrdDetectorThread::binningModeNamePE ( int  binningMode)
static

Definition at line 168 of file qxrddetectorthread.cpp.

References Binning1x1, Binning2x2Average, and Binning2x2Summed.

Referenced by binningModeNamesPE().

169 {
170  QString res = "Unkown Binning";
171 
172  switch (binningMode) {
173  case Binning1x1:
174  res = "No Binning";
175  break;
176 
177  case Binning2x2Average:
178  res = "2x2 Averaged Binning";
179  break;
180 
181  case Binning2x2Summed:
182  res = "2x2 Summed Binning";
183  break;
184  }
185 
186  return res;
187 }

Here is the caller graph for this function:

QStringList QxrdDetectorThread::binningModeNamesPE ( )
static

Definition at line 189 of file qxrddetectorthread.cpp.

References BinningModeCount, and binningModeNamePE().

Referenced by QxrdDetectorConfigurationDialog::appendProperty().

190 {
191  QStringList res;
192 
193  for (int i=0; i<BinningModeCount; i++) {
194  res.append(binningModeNamePE(i));
195  }
196 
197  return res;
198 }
static QString binningModeNamePE(int binningMode)

Here is the call graph for this function:

Here is the caller graph for this function:

QxrdDetectorPtr QxrdDetectorThread::detector ( ) const

Definition at line 299 of file qxrddetectorthread.cpp.

References m_Detector, and QcepThread::m_Mutex.

300 {
301  while (isRunning()) {
302  {
303  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
304 
305  if (m_Detector) return m_Detector;
306  }
307 
308  QThread::msleep(50);
309  }
310 
311  return QxrdDetectorPtr();
312 }
QxrdDetectorPtr m_Detector
QMutex m_Mutex
Definition: qcepthread.h:17
QSharedPointer< QxrdDetector > QxrdDetectorPtr
QString QxrdDetectorThread::detectorSubTypeNamePE ( int  detectorSubType)
static

Definition at line 112 of file qxrddetectorthread.cpp.

References GBIF_IP_SubType, GBIF_MAC_SubType, GBIF_Name_SubType, GBIF_Scan_SubType, and PCI_SubType.

Referenced by detectorSubTypeNamesPE().

113 {
114  QString res = "unknown";
115 
116  switch (detectorSubType) {
117  case PCI_SubType:
118  res = "PCI/PCIe Interface";
119  break;
120 
121  case GBIF_IP_SubType:
122  res = "Gigabit Ethernet by IP Address";
123  break;
124 
125  case GBIF_MAC_SubType:
126  res = "Gigabit Ethernet by MAC Address";
127  break;
128 
129  case GBIF_Name_SubType:
130  res = "Gigabit Ethernet by device name";
131  break;
132 
133  case GBIF_Scan_SubType:
134  res = "Gigabit Ethernet by Auto Scan";
135  break;
136  }
137 
138  return res;
139 }

Here is the caller graph for this function:

QStringList QxrdDetectorThread::detectorSubTypeNamesPE ( )
static
int QxrdDetectorThread::detectorTypeCount ( )
static

Definition at line 61 of file qxrddetectorthread.cpp.

Referenced by QxrdExperimentPreferencesDialog::addDetector().

62 {
63  return 6;
64 }

Here is the caller graph for this function:

QString QxrdDetectorThread::detectorTypeName ( int  detectorType)
static

Definition at line 66 of file qxrddetectorthread.cpp.

References EpicsAreaDetector, FileWatcherDetector, NoDetector, PerkinElmerDetector, PilatusDetector, and SimulatedDetector.

Referenced by QxrdExperimentPreferencesDialog::addDetector(), QxrdDetectorConfigurationDialog::appendProperty(), QxrdDetectorProxy::detectorTypeName(), detectorTypeNames(), QxrdDetector::pushDefaultsToProxy(), and QxrdDetectorThread().

67 {
68  QString res = "unknown";
69  switch (detectorType) {
70  case NoDetector:
71  res = "No Detector";
72  break;
73 
74  case SimulatedDetector:
75  res = "Simulated Detector";
76  break;
77 
79  res = "Perkin Elmer Detector";
80  break;
81 
82  case PilatusDetector:
83  res = "Pilatus Detector";
84  break;
85 
86  case EpicsAreaDetector:
87  res = "Epics Area Detector";
88  break;
89 
91  res = "File Watcher";
92  break;
93  }
94 
95  return res;
96 }

Here is the caller graph for this function:

QStringList QxrdDetectorThread::detectorTypeNames ( )
static
QStringList QxrdDetectorThread::gainModeNamesPE ( )
static

Definition at line 154 of file qxrddetectorthread.cpp.

Referenced by QxrdDetectorConfigurationDialog::appendProperty().

155 {
156  QStringList res;
157 
158  res.append("0.25 pF (High)");
159  res.append("0.5 pF");
160  res.append("1 pF");
161  res.append("2 pF");
162  res.append("4 pF");
163  res.append("8 pF (Low)");
164 
165  return res;
166 }

Here is the caller graph for this function:

void QxrdDetectorThread::pushDefaultsToProxy ( int  detectorType,
QxrdDetectorProxyPtr  proxy 
)
static

Definition at line 321 of file qxrddetectorthread.cpp.

References EpicsAreaDetector, FileWatcherDetector, NoDetector, PerkinElmerDetector, PilatusDetector, QxrdDetectorFileWatcher::pushDefaultsToProxy(), QxrdDetectorSimulated::pushDefaultsToProxy(), QxrdDetectorPilatus::pushDefaultsToProxy(), QxrdDetectorPerkinElmer::pushDefaultsToProxy(), QxrdDetector::pushDefaultsToProxy(), and SimulatedDetector.

Referenced by QxrdDetectorProxy::configureDetector(), and QxrdDetectorProxy::initialize().

323 {
324  switch (detectorType) {
325  case NoDetector:
326  default:
328  break;
329 
330  case SimulatedDetector:
332  break;
333 
334 #ifdef HAVE_PERKIN_ELMER
335  case PerkinElmerDetector:
337  break;
338 #endif
339 
340  case PilatusDetector:
342  break;
343 
344 #ifdef HAVE_AREADETECTOR
345  case EpicsAreaDetector:
346  QxrdDetectorEpicsArea::pushDefaultsToProxy(proxy);
347  break;
348 #endif
349 
350  case FileWatcherDetector:
352  break;
353  }
354 }
static void pushDefaultsToProxy(QxrdDetectorProxyPtr proxy)
static void pushDefaultsToProxy(QxrdDetectorProxyPtr proxy)
static void pushDefaultsToProxy(QxrdDetectorProxyPtr proxy, int detType)
static void pushDefaultsToProxy(QxrdDetectorProxyPtr proxy)
static void pushDefaultsToProxy(QxrdDetectorProxyPtr proxy)

Here is the call graph for this function:

Here is the caller graph for this function:

void QxrdDetectorThread::run ( )
protected

Definition at line 200 of file qxrddetectorthread.cpp.

References DEBUG_THREADS, EpicsAreaDetector, FileWatcherDetector, m_Acquisition, m_Detector, m_DetectorNumber, m_DetectorType, m_Experiment, QcepThread::m_Mutex, m_Parent, m_Saver, PerkinElmerDetector, PilatusDetector, qcepDebug(), and SimulatedDetector.

201 {
202  if (qcepDebug(DEBUG_THREADS)) {
203  printf("Detector Thread Started\n");
204  }
205 
206  QxrdDetectorPtr p;
207 
208  {
210 
211  if (expt) {
212  switch(m_DetectorType) {
213  case SimulatedDetector:
214  setObjectName("simulatedDetector");
216  m_Experiment,
219  m_Parent));
220  break;
221 
222 #ifdef HAVE_PERKIN_ELMER
223  case PerkinElmerDetector:
224  setObjectName("perkinElmerDetector");
226  m_Experiment,
229  m_Parent));
230  break;
231 #endif
232 
233 //#ifdef HAVE_PILATUS
234  case PilatusDetector:
235  setObjectName("pilatusDetector");
237  m_Experiment,
240  m_Parent));
241  break;
242 //#endif
243 
244 #ifdef HAVE_AREADETECTOR
245  case EpicsAreaDetector:
246  setObjectName("epicsAreaDetector");
247  p = QxrdDetectorPtr(new QxrdDetectorEpicsArea(m_Saver,
248  m_Experiment,
251  m_Parent));
252  break;
253 #endif
254 
255  case FileWatcherDetector:
256  setObjectName("fileWatcherDetector");
258  m_Experiment,
261  m_Parent));
262  break;
263  }
264  }
265  }
266 
267  if (p == NULL) {
268  setObjectName("simulatedDetector");
270  m_Experiment,
273  m_Parent));
274  }
275 
276  int rc = -1;
277 
278  if (p) {
279  p -> initialize();
280 
281  m_Mutex.lock();
282  m_Detector = p;
283  m_Mutex.unlock();
284 
285  rc = exec();
286  }
287 
288  {
289  QcepMutexLocker lock(__FILE__, __LINE__, &m_Mutex);
290 
292  }
293 
294  if (qcepDebug(DEBUG_THREADS)) {
295  printf("Detector Thread Terminated with rc %d\n", rc);
296  }
297 }
QSharedPointer< QxrdExperiment > QxrdExperimentPtr
qint64 qcepDebug(int cond)
Definition: qcepdebug.cpp:26
QcepSettingsSaverWPtr m_Saver
QxrdDetectorPtr m_Detector
QxrdExperimentWPtr m_Experiment
QMutex m_Mutex
Definition: qcepthread.h:17
QSharedPointer< QxrdDetector > QxrdDetectorPtr
QxrdAcquisitionWPtr m_Acquisition

Here is the call graph for this function:

void QxrdDetectorThread::shutdown ( )
virtual

Implements QxrdThread.

Definition at line 314 of file qxrddetectorthread.cpp.

Referenced by ~QxrdDetectorThread().

315 {
316  exit();
317 
318  wait();
319 }

Here is the caller graph for this function:

Member Data Documentation

QxrdAcquisitionWPtr QxrdDetectorThread::m_Acquisition
private

Definition at line 73 of file qxrddetectorthread.h.

Referenced by run().

QxrdDetectorPtr QxrdDetectorThread::m_Detector
private

Definition at line 74 of file qxrddetectorthread.h.

Referenced by detector(), and run().

int QxrdDetectorThread::m_DetectorNumber
private

Definition at line 76 of file qxrddetectorthread.h.

Referenced by run().

int QxrdDetectorThread::m_DetectorType
private

Definition at line 75 of file qxrddetectorthread.h.

Referenced by run().

QxrdExperimentWPtr QxrdDetectorThread::m_Experiment
private

Definition at line 72 of file qxrddetectorthread.h.

Referenced by run(), and ~QxrdDetectorThread().

QcepObject* QxrdDetectorThread::m_Parent
private

Definition at line 77 of file qxrddetectorthread.h.

Referenced by run().

QcepSettingsSaverWPtr QxrdDetectorThread::m_Saver
private

Definition at line 71 of file qxrddetectorthread.h.

Referenced by run().


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