diff --git a/slsDetectorGui/forms/form_tab_advanced.ui b/slsDetectorGui/forms/form_tab_advanced.ui index ed32f0c17..df356bf81 100755 --- a/slsDetectorGui/forms/form_tab_advanced.ui +++ b/slsDetectorGui/forms/form_tab_advanced.ui @@ -54,7 +54,7 @@ QTabWidget::North - 2 + 3 Qt::ElideLeft @@ -1066,6 +1066,22 @@ Acquisition + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + @@ -1095,7 +1111,7 @@ - + Qt::Vertical @@ -1409,21 +1425,70 @@ Exposure Time of a sub frame. Only for Eiger in 32 bit mode - - - - Qt::Horizontal + + + + false - - QSizePolicy::Expanding + + <nobr> +Dead time between sub frames. Only for Eiger in 32 bit mode. +</nobr><br><nobr> +Default value is 0. A value less than the required minimum is ignored. +</nobr><br><nobr> + #subdeadtime# +</nobr> - + + Number of bits to discard: + + + + + + + false + + + + 0 + 0 + + + - 20 - 20 + 0 + 25 - + + <html><head/><body><p>Number of additional storage cells. For Jungfrau only. </p><p>Default: 0. </p><p>Number of Images received: #frames * #triggers * (#storagecells+1) </p><p> #storagecells#</p><p><br/></p></body></html> + + + + + + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + false + + + + + + 0 + + + 31 + + + 0 + + diff --git a/slsDetectorGui/include/qDrawPlot.h b/slsDetectorGui/include/qDrawPlot.h index 053a8c86a..c9b95bcc9 100755 --- a/slsDetectorGui/include/qDrawPlot.h +++ b/slsDetectorGui/include/qDrawPlot.h @@ -54,6 +54,7 @@ class qDrawPlot : public QWidget, private Ui::PlotObject { void SetAccumulate(bool enable); void ResetAccumulate(); void DisplayStatistics(bool enable); + void SetNumDiscardBits(int value); void EnableGainPlot(bool enable); void ClonePlot(); void SavePlot(); @@ -148,6 +149,7 @@ class qDrawPlot : public QWidget, private Ui::PlotObject { bool hasGainData{false}; bool isGainDataExtracted{false}; bool disableZoom{false}; + int numDiscardBits{0}; int progress{0}; int64_t currentFrame{0}; diff --git a/slsDetectorGui/include/qTabAdvanced.h b/slsDetectorGui/include/qTabAdvanced.h index 8e83f9a11..772404318 100755 --- a/slsDetectorGui/include/qTabAdvanced.h +++ b/slsDetectorGui/include/qTabAdvanced.h @@ -2,13 +2,15 @@ #include "ui_form_tab_advanced.h" +class qDrawPlot; + #include "Detector.h" class qTabAdvanced:public QWidget, private Ui::TabAdvancedObject{ Q_OBJECT public: - qTabAdvanced(QWidget *parent, sls::Detector* detector); + qTabAdvanced(QWidget *parent, sls::Detector* detector, qDrawPlot* p); ~qTabAdvanced(); public slots: @@ -61,6 +63,7 @@ private: void GetSubDeadTime(); sls::Detector *det; + qDrawPlot *plot; }; diff --git a/slsDetectorGui/src/qDetectorMain.cpp b/slsDetectorGui/src/qDetectorMain.cpp index bd1ccd7f2..01621fca9 100755 --- a/slsDetectorGui/src/qDetectorMain.cpp +++ b/slsDetectorGui/src/qDetectorMain.cpp @@ -135,7 +135,7 @@ void qDetectorMain::SetUpWidgetWindow() { tabDataOutput = sls::make_unique(this, det.get()); tabPlot = sls::make_unique(this, det.get(), plot.get()); tabSettings = sls::make_unique(this, det.get()); - tabAdvanced = sls::make_unique(this, det.get()); + tabAdvanced = sls::make_unique(this, det.get(), plot.get()); tabDebugging = sls::make_unique(this, det.get()); tabDeveloper = sls::make_unique(this, det.get()); diff --git a/slsDetectorGui/src/qDrawPlot.cpp b/slsDetectorGui/src/qDrawPlot.cpp index 943d91f2a..f9b9b0bdd 100755 --- a/slsDetectorGui/src/qDrawPlot.cpp +++ b/slsDetectorGui/src/qDrawPlot.cpp @@ -412,6 +412,11 @@ void qDrawPlot::DisplayStatistics(bool enable) { displayStatistics = enable; } +void qDrawPlot::SetNumDiscardBits(int value) { + FILE_LOG(logINFO) << "Setting number of bits to discard: " << value; + numDiscardBits = value; +} + void qDrawPlot::EnableGainPlot(bool enable) { FILE_LOG(logINFO) << (enable ? "Enabling" : "Disabling") << " Gain Plot"; hasGainData = enable; @@ -874,6 +879,9 @@ void qDrawPlot::toDoublePixelData(double *dest, char *source, int size, int data int halfbyte = 0; char cbyte = '\0'; + // mythen 3 debugging + int discardBits = numDiscardBits; + switch (dr) { case 4: @@ -926,7 +934,7 @@ void qDrawPlot::toDoublePixelData(double *dest, char *source, int size, int data default: for (ichan = 0; ichan < size; ++ichan) { - dest[ichan] = *((u_int32_t *)source); + dest[ichan] = ((*((u_int32_t *)source)) >> discardBits); source += 4; } break; diff --git a/slsDetectorGui/src/qTabAdvanced.cpp b/slsDetectorGui/src/qTabAdvanced.cpp index 6a4a40211..61991fe45 100755 --- a/slsDetectorGui/src/qTabAdvanced.cpp +++ b/slsDetectorGui/src/qTabAdvanced.cpp @@ -1,11 +1,12 @@ #include "qTabAdvanced.h" #include "qDefs.h" +#include "qDrawPlot.h" #include "network_utils.h" #include -qTabAdvanced::qTabAdvanced(QWidget *parent, sls::Detector *detector) - : QWidget(parent), det(detector) { +qTabAdvanced::qTabAdvanced(QWidget *parent, sls::Detector *detector, qDrawPlot *p) + : QWidget(parent), det(detector), plot(p) { setupUi(this); SetupWidgetWindow(); FILE_LOG(logDEBUG) << "Advanced ready"; @@ -28,6 +29,9 @@ void qTabAdvanced::SetupWidgetWindow() { case slsDetectorDefs::GOTTHARD: tab_roi->setEnabled(true); break; + case slsDetectorDefs::MYTHEN3: + lblDiscardBits->setEnabled(true); + spinDiscardBits->setEnabled(true); default: break; } @@ -105,6 +109,12 @@ void qTabAdvanced::Initialization() { connect(comboSubDeadTimeUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(SetSubDeadTime())); } + + // throw bits + if (lblDiscardBits->isEnabled()) { + connect(spinDiscardBits, SIGNAL(valueChanged(int)), plot, + SLOT(SetNumDiscardBits(int))); + } } void qTabAdvanced::PopulateDetectors() {