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() {