mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-05-04 20:00:04 +02:00
Merge branch 'developer' into rxrmetadata
This commit is contained in:
commit
7bb9696151
@ -6,6 +6,33 @@ open an issue in our our `github repo
|
||||
<https://github.com/slsdetectorgroup/slsDetectorPackage>`_.
|
||||
|
||||
|
||||
------------------------------------
|
||||
Setting exposure time
|
||||
------------------------------------
|
||||
|
||||
Setting and reading back exposure time can be done either using a Python datetime.timedelta
|
||||
or by setting the time in seconds.
|
||||
|
||||
::
|
||||
|
||||
# Set exposure time to 1.2 seconds
|
||||
>>> d.exptime = 1.2
|
||||
|
||||
# Setting exposure time using timedelta
|
||||
import datetime as dt
|
||||
>>> d.exptime = dt.timedelta(seconds = 1.2)
|
||||
|
||||
# With timedelta any arbitrary combination of units can be used
|
||||
>>> t = dt.timedelta(microseconds = 100, seconds = 5.3, minutes = .3)
|
||||
|
||||
# To set exposure time for individual detector one have to resort
|
||||
# to the C++ style API.
|
||||
# Sets exposure time to 1.2 seconds for module 0, 6 and 12
|
||||
>>> d.setExptime(1.2, [0, 6, 12])
|
||||
>>> d.setExptime(dt.timedelta(seconds = 1.2), [0, 6, 12])
|
||||
|
||||
|
||||
|
||||
------------------------------------
|
||||
Converting numbers to hex
|
||||
------------------------------------
|
||||
@ -17,13 +44,13 @@ using the built in hex() function.
|
||||
.. code-block :: python
|
||||
|
||||
from slsdet import Detector
|
||||
d = Detector()
|
||||
>>> d = Detector()
|
||||
>>> d.patwait0 = 0xaa
|
||||
>>> d.patwait0
|
||||
170
|
||||
|
||||
# Convert to string
|
||||
>>> (d.patwait0)
|
||||
>>> hex(d.patwait0)
|
||||
'0xaa'
|
||||
|
||||
For multiple values one can use a list comprehension to loop over the values.
|
||||
|
@ -669,17 +669,27 @@ class Detector(CppDetectorApi):
|
||||
Modified only when using an intermediate process after receiver. \n
|
||||
Must be different for every detector (and udp port). \n
|
||||
Multi command will automatically increment for individual modules, use setRxZmqPort.
|
||||
Exmaples
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
>>> d.rx_zmqport
|
||||
[30001, 30002, 30003, 300004]
|
||||
>>> d.rx_zmqport = ?????
|
||||
>>> d.rx_zmqport = 30001
|
||||
>>> d.rx_zmqport = [30001, 30005] #Set ports for the two first detectors
|
||||
|
||||
"""
|
||||
return element_if_equal(self.getRxZmqPort())
|
||||
|
||||
@rx_zmqport.setter
|
||||
def rx_zmqport(self, port):
|
||||
self.setRxZmqPort(port)
|
||||
if isinstance(port, int):
|
||||
self.setRxZmqPort(port, -1)
|
||||
elif is_iterable(port):
|
||||
for i, p in enumerate(port):
|
||||
self.setRxZmqPort(p, i)
|
||||
else:
|
||||
raise ValueError("Unknown argument type")
|
||||
|
||||
@property
|
||||
def zmqport(self):
|
||||
@ -687,7 +697,13 @@ class Detector(CppDetectorApi):
|
||||
|
||||
@zmqport.setter
|
||||
def zmqport(self, port):
|
||||
self.setClientZmqPort(port)
|
||||
if isinstance(port, int):
|
||||
self.setClientZmqPort(port, -1)
|
||||
elif is_iterable(port):
|
||||
for i, p in enumerate(port):
|
||||
self.setClientZmqPort(p, i)
|
||||
else:
|
||||
raise ValueError("Unknown argument type")
|
||||
|
||||
@property
|
||||
def rx_zmqip(self):
|
||||
@ -709,7 +725,7 @@ class Detector(CppDetectorApi):
|
||||
|
||||
@rx_zmqip.setter
|
||||
def rx_zmqip(self, ip):
|
||||
self.setRxZmqIP(ip)
|
||||
self.setRxZmqIP(IpAddr(ip))
|
||||
|
||||
@property
|
||||
def zmqip(self):
|
||||
@ -717,7 +733,7 @@ class Detector(CppDetectorApi):
|
||||
|
||||
@zmqip.setter
|
||||
def zmqip(self, ip):
|
||||
self.setClientZmqIp(ip)
|
||||
self.setClientZmqIp(IpAddr(ip))
|
||||
|
||||
@property
|
||||
def udp_dstip(self):
|
||||
@ -755,6 +771,30 @@ class Detector(CppDetectorApi):
|
||||
def udp_dstmac2(self, mac):
|
||||
self.setDestinationUDPMAC2(MacAddr(mac))
|
||||
|
||||
@property
|
||||
def udp_srcmac(self):
|
||||
return element_if_equal(self.getSourceUDPMAC())
|
||||
|
||||
@udp_srcmac.setter
|
||||
def udp_srcmac(self, mac):
|
||||
if isinstance(mac, (list, tuple)):
|
||||
for i, m in enumerate(mac):
|
||||
self.setSourceUDPMAC(MacAddr(m), [i])
|
||||
else:
|
||||
self.setSourceUDPMAC(MacAddr(mac))
|
||||
|
||||
@property
|
||||
def udp_srcmac2(self):
|
||||
return element_if_equal(self.getSourceUDPMAC2())
|
||||
|
||||
@udp_srcmac2.setter
|
||||
def udp_srcmac2(self, mac):
|
||||
if isinstance(mac, (list, tuple)):
|
||||
for i, m in enumerate(mac):
|
||||
self.setSourceUDPMAC2(MacAddr(m), [i])
|
||||
else:
|
||||
self.setSourceUDPMAC2(MacAddr(mac))
|
||||
|
||||
@property
|
||||
def udp_srcip(self):
|
||||
return element_if_equal(self.getSourceUDPIP())
|
||||
@ -769,7 +809,7 @@ class Detector(CppDetectorApi):
|
||||
|
||||
@udp_srcip2.setter
|
||||
def udp_srcip2(self, ip):
|
||||
self.setSourceUDPIP2(ip)
|
||||
self.setSourceUDPIP2(IpAddr(ip))
|
||||
|
||||
@property
|
||||
def udp_dstport(self):
|
||||
|
@ -52,6 +52,9 @@
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="keyboardTracking">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<double>-1.000000000000000</double>
|
||||
</property>
|
||||
|
@ -98,6 +98,9 @@
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="keyboardTracking">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
|
@ -463,6 +463,9 @@ Compression using Root. Available only for Gotthard in Expert Mode.
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="keyboardTracking">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string>ns</string>
|
||||
</property>
|
||||
|
@ -180,6 +180,9 @@
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>High Voltage. Range: 60 - 200V. Swich off high voltage by setting to 0.</p><p>-1 corresponds to different values from detectors.</p><p>#highvoltage#</p></body></html></string>
|
||||
</property>
|
||||
<property name="keyboardTracking">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
|
@ -2169,7 +2169,7 @@ Displays minimum, maximum and sum of values for each plot.
|
||||
<item row="0" column="2">
|
||||
<widget class="QStackedWidget" name="stackedTimeInterval">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="pageTimeGap">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_14">
|
||||
@ -2181,6 +2181,9 @@ Displays minimum, maximum and sum of values for each plot.
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="keyboardTracking">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="decimals">
|
||||
<number>3</number>
|
||||
</property>
|
||||
@ -2249,6 +2252,9 @@ Displays minimum, maximum and sum of values for each plot.
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="keyboardTracking">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
</property>
|
||||
|
@ -18,17 +18,24 @@ class qTabAdvanced : public QWidget, private Ui::TabAdvancedObject {
|
||||
void SetDetector();
|
||||
void SetControlPort(int port);
|
||||
void SetStopPort(int port);
|
||||
void SetDetectorUDPIP();
|
||||
void SetDetectorUDPMAC();
|
||||
void SetDetectorUDPIP(bool force = false);
|
||||
void ForceSetDetectorUDPIP();
|
||||
void SetDetectorUDPMAC(bool force = false);
|
||||
void ForceSetDetectorUDPMAC();
|
||||
void SetCltZMQPort(int port);
|
||||
void SetCltZMQIP();
|
||||
void SetRxrHostname();
|
||||
void SetCltZMQIP(bool force = false);
|
||||
void ForceSetCltZMQIP();
|
||||
void SetRxrHostname(bool force = false);
|
||||
void ForceSetRxrHostname();
|
||||
void SetRxrTCPPort(int port);
|
||||
void SetRxrUDPPort(int port);
|
||||
void SetRxrUDPIP();
|
||||
void SetRxrUDPMAC();
|
||||
void SetRxrUDPIP(bool force = false);
|
||||
void ForceSetRxrUDPIP();
|
||||
void SetRxrUDPMAC(bool force = false);
|
||||
void ForceSetRxrUDPMAC();
|
||||
void SetRxrZMQPort(int port);
|
||||
void SetRxrZMQIP();
|
||||
void SetRxrZMQIP(bool force = false);
|
||||
void ForceSetRxrZMQIP();
|
||||
void GetROI();
|
||||
void ClearROI();
|
||||
void SetROI();
|
||||
|
@ -13,7 +13,8 @@ class qTabDataOutput : public QWidget, private Ui::TabDataOutputObject {
|
||||
private slots:
|
||||
void GetOutputDir();
|
||||
void BrowseOutputDir();
|
||||
void SetOutputDir();
|
||||
void SetOutputDir(bool force = false);
|
||||
void ForceSetOutputDir();
|
||||
void SetFileFormat(int format);
|
||||
void SetOverwriteEnable(bool enable);
|
||||
void SetTenGigaEnable(bool enable);
|
||||
|
@ -31,7 +31,8 @@ class qTabMeasurement : public QWidget, private Ui::TabMeasurementObject {
|
||||
void SetDelay();
|
||||
void SetBurstPeriod();
|
||||
void SetFileWrite(bool val);
|
||||
void SetFileName();
|
||||
void SetFileName(bool force = false);
|
||||
void ForceSetFileName();
|
||||
void SetRunIndex(int val);
|
||||
void SetStartingFrameNumber(int val);
|
||||
void UpdateProgress();
|
||||
|
@ -24,6 +24,12 @@ class qTabPlot : public QWidget, private Ui::TabPlotObject {
|
||||
void SetBinary();
|
||||
void SetGapPixels(bool enable);
|
||||
void SetTitles();
|
||||
void isXMinModified();
|
||||
void isXMaxModified();
|
||||
void isYMinModified();
|
||||
void isYMaxModified();
|
||||
void isZMinModified();
|
||||
void isZMaxModified();
|
||||
void SetXRange();
|
||||
void SetYRange();
|
||||
void CheckAspectRatio();
|
||||
|
@ -26,7 +26,7 @@ void qDacWidget::SetupWidgetWindow(std::string name) {
|
||||
|
||||
void qDacWidget::Initialization() {
|
||||
if (isDac) {
|
||||
connect(spinDac, SIGNAL(editingFinished()), this, SLOT(SetDac()));
|
||||
connect(spinDac, SIGNAL(valueChanged(double)), this, SLOT(SetDac()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ void qDacWidget::SetDetectorIndex(int id) {
|
||||
void qDacWidget::GetDac() {
|
||||
LOG(logDEBUG) << "Getting Dac " << index;
|
||||
|
||||
disconnect(spinDac, SIGNAL(editingFinished()), this, SLOT(SetDac()));
|
||||
disconnect(spinDac, SIGNAL(valueChanged(double)), this, SLOT(SetDac()));
|
||||
try {
|
||||
// dac units
|
||||
auto retval = det->getDAC(index, 0, {detectorIndex}).squash(-1);
|
||||
@ -52,7 +52,7 @@ void qDacWidget::GetDac() {
|
||||
CATCH_DISPLAY(std::string("Could not get dac ") + std::to_string(index),
|
||||
"qDacWidget::GetDac")
|
||||
|
||||
connect(spinDac, SIGNAL(editingFinished()), this, SLOT(SetDac()));
|
||||
connect(spinDac, SIGNAL(valueChanged(double)), this, SLOT(SetDac()));
|
||||
}
|
||||
|
||||
void qDacWidget::SetDac() {
|
||||
|
@ -65,8 +65,7 @@ void qTabAdvanced::Initialization() {
|
||||
|
||||
// trimming
|
||||
if (tab_trimming->isEnabled()) {
|
||||
// editingFinished to not set trimbits for every character input
|
||||
connect(spinSetAllTrimbits, SIGNAL(editingFinished()), this,
|
||||
connect(spinSetAllTrimbits, SIGNAL(valueChanged(int)), this,
|
||||
SLOT(SetAllTrimbits()));
|
||||
}
|
||||
|
||||
@ -79,23 +78,36 @@ void qTabAdvanced::Initialization() {
|
||||
SLOT(SetStopPort(int)));
|
||||
connect(dispDetectorUDPIP, SIGNAL(editingFinished()), this,
|
||||
SLOT(SetDetectorUDPIP()));
|
||||
connect(dispDetectorUDPIP, SIGNAL(returnPressed()), this,
|
||||
SLOT(ForceSetDetectorUDPIP()));
|
||||
connect(dispDetectorUDPMAC, SIGNAL(editingFinished()), this,
|
||||
SLOT(SetDetectorUDPMAC()));
|
||||
connect(dispDetectorUDPMAC, SIGNAL(returnPressed()), this,
|
||||
SLOT(ForceSetDetectorUDPMAC()));
|
||||
connect(spinZMQPort, SIGNAL(valueChanged(int)), this,
|
||||
SLOT(SetCltZMQPort(int)));
|
||||
connect(dispZMQIP, SIGNAL(editingFinished()), this, SLOT(SetCltZMQIP()));
|
||||
connect(dispZMQIP, SIGNAL(returnPressed()), this, SLOT(ForceSetCltZMQIP()));
|
||||
connect(dispRxrHostname, SIGNAL(editingFinished()), this,
|
||||
SLOT(SetRxrHostname()));
|
||||
connect(dispRxrHostname, SIGNAL(returnPressed()), this,
|
||||
SLOT(ForceSetRxrHostname()));
|
||||
connect(spinRxrTCPPort, SIGNAL(valueChanged(int)), this,
|
||||
SLOT(SetRxrTCPPort(int)));
|
||||
connect(spinRxrUDPPort, SIGNAL(valueChanged(int)), this,
|
||||
SLOT(SetRxrUDPPort(int)));
|
||||
connect(dispRxrUDPIP, SIGNAL(editingFinished()), this, SLOT(SetRxrUDPIP()));
|
||||
connect(dispRxrUDPIP, SIGNAL(returnPressed()), this,
|
||||
SLOT(ForceSetRxrUDPIP()));
|
||||
connect(dispRxrUDPMAC, SIGNAL(editingFinished()), this,
|
||||
SLOT(SetRxrUDPMAC()));
|
||||
connect(dispRxrUDPMAC, SIGNAL(returnPressed()), this,
|
||||
SLOT(ForceSetRxrUDPMAC()));
|
||||
connect(spinRxrZMQPort, SIGNAL(valueChanged(int)), this,
|
||||
SLOT(SetRxrZMQPort(int)));
|
||||
connect(dispRxrZMQIP, SIGNAL(editingFinished()), this, SLOT(SetRxrZMQIP()));
|
||||
connect(dispRxrZMQIP, SIGNAL(returnPressed()), this,
|
||||
SLOT(ForceSetRxrZMQIP()));
|
||||
|
||||
// roi
|
||||
if (tab_roi->isEnabled()) {
|
||||
@ -421,28 +433,42 @@ void qTabAdvanced::SetStopPort(int port) {
|
||||
&qTabAdvanced::GetStopPort)
|
||||
}
|
||||
|
||||
void qTabAdvanced::SetDetectorUDPIP() {
|
||||
void qTabAdvanced::SetDetectorUDPIP(bool force) {
|
||||
// return forces modification (inconsistency from command line)
|
||||
if (dispDetectorUDPIP->isModified() || force) {
|
||||
dispDetectorUDPIP->setModified(false);
|
||||
std::string s = dispDetectorUDPIP->text().toAscii().constData();
|
||||
LOG(logINFO) << "Setting Detector UDP IP:" << s;
|
||||
try {
|
||||
det->setSourceUDPIP(sls::IpAddr{s}, {comboDetector->currentIndex()});
|
||||
det->setSourceUDPIP(sls::IpAddr{s},
|
||||
{comboDetector->currentIndex()});
|
||||
}
|
||||
CATCH_HANDLE("Could not set Detector UDP IP.",
|
||||
"qTabAdvanced::SetDetectorUDPIP", this,
|
||||
&qTabAdvanced::GetDetectorUDPIP)
|
||||
}
|
||||
}
|
||||
|
||||
void qTabAdvanced::SetDetectorUDPMAC() {
|
||||
void qTabAdvanced::ForceSetDetectorUDPIP() { SetDetectorUDPIP(true); };
|
||||
|
||||
void qTabAdvanced::SetDetectorUDPMAC(bool force) {
|
||||
// return forces modification (inconsistency from command line)
|
||||
if (dispDetectorUDPMAC->isModified() || force) {
|
||||
dispDetectorUDPMAC->setModified(false);
|
||||
std::string s = dispDetectorUDPMAC->text().toAscii().constData();
|
||||
LOG(logINFO) << "Setting Detector UDP MAC:" << s;
|
||||
try {
|
||||
det->setSourceUDPMAC(sls::MacAddr{s}, {comboDetector->currentIndex()});
|
||||
det->setSourceUDPMAC(sls::MacAddr{s},
|
||||
{comboDetector->currentIndex()});
|
||||
}
|
||||
CATCH_HANDLE("Could not set Detector UDP MAC.",
|
||||
"qTabAdvanced::SetDetectorUDPMAC", this,
|
||||
&qTabAdvanced::GetDetectorUDPMAC)
|
||||
}
|
||||
}
|
||||
|
||||
void qTabAdvanced::ForceSetDetectorUDPMAC() { SetDetectorUDPMAC(true); }
|
||||
|
||||
void qTabAdvanced::SetCltZMQPort(int port) {
|
||||
LOG(logINFO) << "Setting Client ZMQ Port:" << port;
|
||||
try {
|
||||
@ -453,29 +479,44 @@ void qTabAdvanced::SetCltZMQPort(int port) {
|
||||
&qTabAdvanced::GetCltZMQPort)
|
||||
}
|
||||
|
||||
void qTabAdvanced::SetCltZMQIP() {
|
||||
void qTabAdvanced::SetCltZMQIP(bool force) {
|
||||
// return forces modification (inconsistency from command line)
|
||||
if (dispZMQIP->isModified() || force) {
|
||||
dispZMQIP->setModified(false);
|
||||
std::string s = dispZMQIP->text().toAscii().constData();
|
||||
LOG(logINFO) << "Setting Client ZMQ IP:" << s;
|
||||
try {
|
||||
det->setClientZmqIp(sls::IpAddr{s}, {comboDetector->currentIndex()});
|
||||
det->setClientZmqIp(sls::IpAddr{s},
|
||||
{comboDetector->currentIndex()});
|
||||
}
|
||||
CATCH_HANDLE("Could not set Client ZMQ IP.",
|
||||
"qTabAdvanced::SetCltZMQIP", this,
|
||||
&qTabAdvanced::GetCltZMQIP)
|
||||
}
|
||||
CATCH_HANDLE("Could not set Client ZMQ IP.", "qTabAdvanced::SetCltZMQIP",
|
||||
this, &qTabAdvanced::GetCltZMQIP)
|
||||
}
|
||||
|
||||
void qTabAdvanced::SetRxrHostname() {
|
||||
std::string s = dispZMQIP->text().toAscii().constData();
|
||||
void qTabAdvanced::ForceSetCltZMQIP() { SetCltZMQIP(true); }
|
||||
|
||||
void qTabAdvanced::SetRxrHostname(bool force) {
|
||||
// return forces modification (inconsistency from command line)
|
||||
if (dispRxrHostname->isModified() || force) {
|
||||
dispRxrHostname->setModified(false);
|
||||
std::string s = dispRxrHostname->text().toAscii().constData();
|
||||
LOG(logINFO) << "Setting Receiver Hostname:" << s;
|
||||
try {
|
||||
det->setRxHostname(s, {comboDetector->currentIndex()});
|
||||
}
|
||||
CATCH_HANDLE("Could not set Client ZMQ IP.", "qTabAdvanced::SetRxrHostname",
|
||||
this, &qTabAdvanced::GetRxrHostname)
|
||||
CATCH_HANDLE("Could not set Client ZMQ IP.",
|
||||
"qTabAdvanced::SetRxrHostname", this,
|
||||
&qTabAdvanced::GetRxrHostname)
|
||||
|
||||
// update all network widgets (receiver mainly)
|
||||
SetDetector();
|
||||
}
|
||||
}
|
||||
|
||||
void qTabAdvanced::ForceSetRxrHostname() { SetRxrHostname(true); }
|
||||
|
||||
void qTabAdvanced::SetRxrTCPPort(int port) {
|
||||
LOG(logINFO) << "Setting Receiver TCP Port:" << port;
|
||||
try {
|
||||
@ -496,18 +537,28 @@ void qTabAdvanced::SetRxrUDPPort(int port) {
|
||||
&qTabAdvanced::GetRxrUDPPort)
|
||||
}
|
||||
|
||||
void qTabAdvanced::SetRxrUDPIP() {
|
||||
void qTabAdvanced::SetRxrUDPIP(bool force) {
|
||||
// return forces modification (inconsistency from command line)
|
||||
if (dispRxrUDPIP->isModified() || force) {
|
||||
dispRxrUDPIP->setModified(false);
|
||||
std::string s = dispRxrUDPIP->text().toAscii().constData();
|
||||
LOG(logINFO) << "Setting Receiver UDP IP:" << s;
|
||||
try {
|
||||
det->setDestinationUDPIP(sls::IpAddr{s},
|
||||
{comboDetector->currentIndex()});
|
||||
}
|
||||
CATCH_HANDLE("Could not set Receiver UDP IP.", "qTabAdvanced::SetRxrUDPIP",
|
||||
this, &qTabAdvanced::GetRxrUDPIP)
|
||||
CATCH_HANDLE("Could not set Receiver UDP IP.",
|
||||
"qTabAdvanced::SetRxrUDPIP", this,
|
||||
&qTabAdvanced::GetRxrUDPIP)
|
||||
}
|
||||
}
|
||||
|
||||
void qTabAdvanced::SetRxrUDPMAC() {
|
||||
void qTabAdvanced::ForceSetRxrUDPIP() { SetRxrUDPIP(true); }
|
||||
|
||||
void qTabAdvanced::SetRxrUDPMAC(bool force) {
|
||||
// return forces modification (inconsistency from command line)
|
||||
if (dispRxrUDPMAC->isModified() || force) {
|
||||
dispRxrUDPMAC->setModified(false);
|
||||
std::string s = dispRxrUDPMAC->text().toAscii().constData();
|
||||
LOG(logINFO) << "Setting Receiver UDP MAC:" << s;
|
||||
try {
|
||||
@ -517,8 +568,11 @@ void qTabAdvanced::SetRxrUDPMAC() {
|
||||
CATCH_HANDLE("Could not set Receiver UDP MAC.",
|
||||
"qTabAdvanced::SetRxrUDPMAC", this,
|
||||
&qTabAdvanced::GetRxrUDPMAC)
|
||||
}
|
||||
}
|
||||
|
||||
void qTabAdvanced::ForceSetRxrUDPMAC() { SetRxrUDPMAC(true); }
|
||||
|
||||
void qTabAdvanced::SetRxrZMQPort(int port) {
|
||||
LOG(logINFO) << "Setting Receiver ZMQ Port:" << port;
|
||||
try {
|
||||
@ -529,16 +583,23 @@ void qTabAdvanced::SetRxrZMQPort(int port) {
|
||||
&qTabAdvanced::GetRxrZMQPort)
|
||||
}
|
||||
|
||||
void qTabAdvanced::SetRxrZMQIP() {
|
||||
void qTabAdvanced::SetRxrZMQIP(bool force) {
|
||||
// return forces modification (inconsistency from command line)
|
||||
if (dispRxrZMQIP->isModified() || force) {
|
||||
dispRxrZMQIP->setModified(false);
|
||||
std::string s = dispRxrZMQIP->text().toAscii().constData();
|
||||
LOG(logINFO) << "Setting Receiver ZMQ IP:" << s;
|
||||
try {
|
||||
det->setRxZmqIP(sls::IpAddr{s}, {comboDetector->currentIndex()});
|
||||
}
|
||||
CATCH_HANDLE("Could not set Receiver ZMQ IP.", "qTabAdvanced::SetRxrZMQIP",
|
||||
this, &qTabAdvanced::GetRxrZMQIP)
|
||||
CATCH_HANDLE("Could not set Receiver ZMQ IP.",
|
||||
"qTabAdvanced::SetRxrZMQIP", this,
|
||||
&qTabAdvanced::GetRxrZMQIP)
|
||||
}
|
||||
}
|
||||
|
||||
void qTabAdvanced::ForceSetRxrZMQIP() { SetRxrZMQIP(true); }
|
||||
|
||||
void qTabAdvanced::GetROI() {
|
||||
LOG(logDEBUG) << "Getting ROI";
|
||||
try {
|
||||
@ -575,7 +636,7 @@ void qTabAdvanced::SetROI() {
|
||||
|
||||
void qTabAdvanced::GetAllTrimbits() {
|
||||
LOG(logDEBUG) << "Getting all trimbits value";
|
||||
disconnect(spinSetAllTrimbits, SIGNAL(editingFinished()), this,
|
||||
disconnect(spinSetAllTrimbits, SIGNAL(valueChanged(int)), this,
|
||||
SLOT(SetAllTrimbits()));
|
||||
|
||||
try {
|
||||
@ -584,7 +645,7 @@ void qTabAdvanced::GetAllTrimbits() {
|
||||
}
|
||||
CATCH_DISPLAY("Could not get all trimbits.", "qTabAdvanced::GetAllTrimbits")
|
||||
|
||||
connect(spinSetAllTrimbits, SIGNAL(editingFinished()), this,
|
||||
connect(spinSetAllTrimbits, SIGNAL(valueChanged(int)), this,
|
||||
SLOT(SetAllTrimbits()));
|
||||
}
|
||||
|
||||
|
@ -54,6 +54,8 @@ void qTabDataOutput::Initialization() {
|
||||
SLOT(GetOutputDir()));
|
||||
connect(dispOutputDir, SIGNAL(editingFinished()), this,
|
||||
SLOT(SetOutputDir()));
|
||||
connect(dispOutputDir, SIGNAL(returnPressed()), this,
|
||||
SLOT(ForceSetOutputDir()));
|
||||
connect(btnOutputBrowse, SIGNAL(clicked()), this, SLOT(BrowseOutputDir()));
|
||||
connect(comboFileFormat, SIGNAL(currentIndexChanged(int)), this,
|
||||
SLOT(SetFileFormat(int)));
|
||||
@ -69,7 +71,7 @@ void qTabDataOutput::Initialization() {
|
||||
SLOT(EnableRateCorrection()));
|
||||
connect(btnGroupRate, SIGNAL(buttonClicked(int)), this,
|
||||
SLOT(SetRateCorrection()));
|
||||
connect(spinCustomDeadTime, SIGNAL(editingFinished()), this,
|
||||
connect(spinCustomDeadTime, SIGNAL(valueChanged(int)), this,
|
||||
SLOT(SetRateCorrection()));
|
||||
}
|
||||
// flags, speed
|
||||
@ -169,7 +171,10 @@ void qTabDataOutput::BrowseOutputDir() {
|
||||
dispOutputDir->setText(directory);
|
||||
}
|
||||
|
||||
void qTabDataOutput::SetOutputDir() {
|
||||
void qTabDataOutput::SetOutputDir(bool force) {
|
||||
// return forces modification (inconsistency from command line)
|
||||
if (dispOutputDir->isModified() || force) {
|
||||
dispOutputDir->setModified(false);
|
||||
QString path = dispOutputDir->text();
|
||||
LOG(logDEBUG) << "Setting output directory to "
|
||||
<< path.toAscii().constData();
|
||||
@ -196,8 +201,11 @@ void qTabDataOutput::SetOutputDir() {
|
||||
"qTabDataOutput::SetOutputDir", this,
|
||||
&qTabDataOutput::GetOutputDir)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void qTabDataOutput::ForceSetOutputDir() { SetOutputDir(true); };
|
||||
|
||||
void qTabDataOutput::GetFileFormat() {
|
||||
LOG(logDEBUG) << "Getting File Format";
|
||||
disconnect(comboFileFormat, SIGNAL(currentIndexChanged(int)), this,
|
||||
@ -288,7 +296,7 @@ void qTabDataOutput::GetRateCorrection() {
|
||||
SLOT(EnableRateCorrection()));
|
||||
disconnect(btnGroupRate, SIGNAL(buttonClicked(int)), this,
|
||||
SLOT(SetRateCorrection()));
|
||||
disconnect(spinCustomDeadTime, SIGNAL(editingFinished()), this,
|
||||
disconnect(spinCustomDeadTime, SIGNAL(valueChanged(int)), this,
|
||||
SLOT(SetRateCorrection()));
|
||||
try {
|
||||
spinCustomDeadTime->setValue(-1);
|
||||
@ -305,7 +313,7 @@ void qTabDataOutput::GetRateCorrection() {
|
||||
connect(chkRate, SIGNAL(toggled(bool)), this, SLOT(EnableRateCorrection()));
|
||||
connect(btnGroupRate, SIGNAL(buttonClicked(int)), this,
|
||||
SLOT(SetRateCorrection()));
|
||||
connect(spinCustomDeadTime, SIGNAL(editingFinished()), this,
|
||||
connect(spinCustomDeadTime, SIGNAL(valueChanged(int)), this,
|
||||
SLOT(SetRateCorrection()));
|
||||
}
|
||||
|
||||
|
@ -290,7 +290,7 @@ void qTabDeveloper::Initialization() {
|
||||
SLOT(Refresh()));
|
||||
connect(comboHV, SIGNAL(currentIndexChanged(int)), this,
|
||||
SLOT(SetHighVoltage()));
|
||||
connect(spinHV, SIGNAL(editingFinished()), this, SLOT(SetHighVoltage()));
|
||||
connect(spinHV, SIGNAL(valueChanged(int)), this, SLOT(SetHighVoltage()));
|
||||
}
|
||||
|
||||
void qTabDeveloper::PopulateDetectors() {
|
||||
@ -312,7 +312,7 @@ void qTabDeveloper::GetHighVoltage() {
|
||||
if (!comboHV->isVisible() && !spinHV->isVisible())
|
||||
return;
|
||||
LOG(logDEBUG) << "Getting High Voltage";
|
||||
disconnect(spinHV, SIGNAL(editingFinished()), this, SLOT(SetHighVoltage()));
|
||||
disconnect(spinHV, SIGNAL(valueChanged(int)), this, SLOT(SetHighVoltage()));
|
||||
disconnect(comboHV, SIGNAL(currentIndexChanged(int)), this,
|
||||
SLOT(SetHighVoltage()));
|
||||
try {
|
||||
@ -359,7 +359,7 @@ void qTabDeveloper::GetHighVoltage() {
|
||||
}
|
||||
CATCH_DISPLAY("Could not get high voltage.",
|
||||
"qTabDeveloper::GetHighVoltage")
|
||||
connect(spinHV, SIGNAL(editingFinished()), this, SLOT(SetHighVoltage()));
|
||||
connect(spinHV, SIGNAL(valueChanged(int)), this, SLOT(SetHighVoltage()));
|
||||
connect(comboHV, SIGNAL(currentIndexChanged(int)), this,
|
||||
SLOT(SetHighVoltage()));
|
||||
}
|
||||
|
@ -129,6 +129,8 @@ void qTabMeasurement::Initialization() {
|
||||
}
|
||||
connect(chkFile, SIGNAL(toggled(bool)), this, SLOT(SetFileWrite(bool)));
|
||||
connect(dispFileName, SIGNAL(editingFinished()), this, SLOT(SetFileName()));
|
||||
connect(dispFileName, SIGNAL(returnPressed()), this,
|
||||
SLOT(ForceSetFileName()));
|
||||
connect(spinIndex, SIGNAL(valueChanged(int)), this, SLOT(SetRunIndex(int)));
|
||||
if (startingFnumImplemented) {
|
||||
connect(spinStartingFrameNumber, SIGNAL(valueChanged(int)), this,
|
||||
@ -723,8 +725,12 @@ void qTabMeasurement::GetFileName() {
|
||||
connect(dispFileName, SIGNAL(editingFinished()), this, SLOT(SetFileName()));
|
||||
}
|
||||
|
||||
void qTabMeasurement::SetFileName() {
|
||||
std::string val = std::string(dispFileName->text().toAscii().constData());
|
||||
void qTabMeasurement::SetFileName(bool force) {
|
||||
// return forces modification (inconsistency from command line)
|
||||
if (dispFileName->isModified() || force) {
|
||||
dispFileName->setModified(false);
|
||||
std::string val =
|
||||
std::string(dispFileName->text().toAscii().constData());
|
||||
LOG(logINFO) << "Setting File Name Prefix:" << val;
|
||||
try {
|
||||
det->setFileNamePrefix(val);
|
||||
@ -734,8 +740,11 @@ void qTabMeasurement::SetFileName() {
|
||||
&qTabMeasurement::GetFileName)
|
||||
|
||||
emit FileNameChangedSignal(dispFileName->text());
|
||||
}
|
||||
}
|
||||
|
||||
void qTabMeasurement::ForceSetFileName() { SetFileName(true); }
|
||||
|
||||
void qTabMeasurement::GetRunIndex() {
|
||||
LOG(logDEBUG) << "Getting Acquisition File index";
|
||||
disconnect(spinIndex, SIGNAL(valueChanged(int)), this,
|
||||
|
@ -87,9 +87,9 @@ void qTabPlot::Initialization() {
|
||||
SLOT(SetStreamingFrequency()));
|
||||
connect(comboTimeGapUnit, SIGNAL(currentIndexChanged(int)), this,
|
||||
SLOT(SetStreamingFrequency()));
|
||||
connect(spinTimeGap, SIGNAL(editingFinished()), this,
|
||||
connect(spinTimeGap, SIGNAL(valueChanged(double)), this,
|
||||
SLOT(SetStreamingFrequency()));
|
||||
connect(spinNthFrame, SIGNAL(editingFinished()), this,
|
||||
connect(spinNthFrame, SIGNAL(valueChanged(int)), this,
|
||||
SLOT(SetStreamingFrequency()));
|
||||
|
||||
// navigation buttons for options
|
||||
@ -174,17 +174,17 @@ void qTabPlot::Initialization() {
|
||||
connect(chkXMax, SIGNAL(toggled(bool)), this, SLOT(SetXRange()));
|
||||
connect(chkYMin, SIGNAL(toggled(bool)), this, SLOT(SetYRange()));
|
||||
connect(chkYMax, SIGNAL(toggled(bool)), this, SLOT(SetYRange()));
|
||||
connect(dispXMin, SIGNAL(editingFinished()), this, SLOT(SetXRange()));
|
||||
connect(dispXMax, SIGNAL(editingFinished()), this, SLOT(SetXRange()));
|
||||
connect(dispYMin, SIGNAL(editingFinished()), this, SLOT(SetYRange()));
|
||||
connect(dispYMax, SIGNAL(editingFinished()), this, SLOT(SetYRange()));
|
||||
connect(dispXMin, SIGNAL(editingFinished()), this, SLOT(isXMinModified()));
|
||||
connect(dispXMax, SIGNAL(editingFinished()), this, SLOT(isXMaxModified()));
|
||||
connect(dispYMin, SIGNAL(editingFinished()), this, SLOT(isYMinModified()));
|
||||
connect(dispYMax, SIGNAL(editingFinished()), this, SLOT(isYMaxModified()));
|
||||
connect(chkAspectRatio, SIGNAL(toggled(bool)), this,
|
||||
SLOT(CheckAspectRatio()));
|
||||
|
||||
connect(chkZMin, SIGNAL(toggled(bool)), this, SLOT(SetZRange()));
|
||||
connect(chkZMax, SIGNAL(toggled(bool)), this, SLOT(SetZRange()));
|
||||
connect(dispZMin, SIGNAL(editingFinished()), this, SLOT(SetZRange()));
|
||||
connect(dispZMax, SIGNAL(editingFinished()), this, SLOT(SetZRange()));
|
||||
connect(dispZMin, SIGNAL(editingFinished()), this, SLOT(isZMinModified()));
|
||||
connect(dispZMax, SIGNAL(editingFinished()), this, SLOT(isZMaxModified()));
|
||||
}
|
||||
|
||||
void qTabPlot::Select1DPlot(bool enable) {
|
||||
@ -389,6 +389,48 @@ void qTabPlot::SetTitles() {
|
||||
SLOT(SetTitles()));
|
||||
}
|
||||
|
||||
void qTabPlot::isXMinModified() {
|
||||
if (dispXMin->isModified()) {
|
||||
dispXMin->setModified(false);
|
||||
SetXRange();
|
||||
}
|
||||
}
|
||||
|
||||
void qTabPlot::isXMaxModified() {
|
||||
if (dispXMax->isModified()) {
|
||||
dispXMax->setModified(false);
|
||||
SetXRange();
|
||||
}
|
||||
}
|
||||
|
||||
void qTabPlot::isYMinModified() {
|
||||
if (dispYMin->isModified()) {
|
||||
dispYMin->setModified(false);
|
||||
SetYRange();
|
||||
}
|
||||
}
|
||||
|
||||
void qTabPlot::isYMaxModified() {
|
||||
if (dispYMax->isModified()) {
|
||||
dispYMax->setModified(false);
|
||||
SetYRange();
|
||||
}
|
||||
}
|
||||
|
||||
void qTabPlot::isZMinModified() {
|
||||
if (dispZMin->isModified()) {
|
||||
dispZMin->setModified(false);
|
||||
SetZRange();
|
||||
}
|
||||
}
|
||||
|
||||
void qTabPlot::isZMaxModified() {
|
||||
if (dispZMax->isModified()) {
|
||||
dispZMax->setModified(false);
|
||||
SetZRange();
|
||||
}
|
||||
}
|
||||
|
||||
void qTabPlot::SetXRange() {
|
||||
LOG(logDEBUG) << "Enable X axis range";
|
||||
|
||||
@ -452,10 +494,14 @@ void qTabPlot::MaintainAspectRatio(int dimension) {
|
||||
disconnect(chkXMax, SIGNAL(toggled(bool)), this, SLOT(SetXRange()));
|
||||
disconnect(chkYMin, SIGNAL(toggled(bool)), this, SLOT(SetYRange()));
|
||||
disconnect(chkYMax, SIGNAL(toggled(bool)), this, SLOT(SetYRange()));
|
||||
disconnect(dispXMin, SIGNAL(editingFinished()), this, SLOT(SetXRange()));
|
||||
disconnect(dispXMax, SIGNAL(editingFinished()), this, SLOT(SetXRange()));
|
||||
disconnect(dispYMin, SIGNAL(editingFinished()), this, SLOT(SetYRange()));
|
||||
disconnect(dispYMax, SIGNAL(editingFinished()), this, SLOT(SetYRange()));
|
||||
disconnect(dispXMin, SIGNAL(editingFinished()), this,
|
||||
SLOT(isXMinModified()));
|
||||
disconnect(dispXMax, SIGNAL(editingFinished()), this,
|
||||
SLOT(isXMaxModified()));
|
||||
disconnect(dispYMin, SIGNAL(editingFinished()), this,
|
||||
SLOT(isYMinModified()));
|
||||
disconnect(dispYMax, SIGNAL(editingFinished()), this,
|
||||
SLOT(isYMaxModified()));
|
||||
|
||||
// check all, fill all
|
||||
chkXMin->setChecked(true);
|
||||
@ -550,10 +596,10 @@ void qTabPlot::MaintainAspectRatio(int dimension) {
|
||||
connect(chkXMax, SIGNAL(toggled(bool)), this, SLOT(SetXRange()));
|
||||
connect(chkYMin, SIGNAL(toggled(bool)), this, SLOT(SetYRange()));
|
||||
connect(chkYMax, SIGNAL(toggled(bool)), this, SLOT(SetYRange()));
|
||||
connect(dispXMin, SIGNAL(editingFinished()), this, SLOT(SetXRange()));
|
||||
connect(dispXMax, SIGNAL(editingFinished()), this, SLOT(SetXRange()));
|
||||
connect(dispYMin, SIGNAL(editingFinished()), this, SLOT(SetYRange()));
|
||||
connect(dispYMax, SIGNAL(editingFinished()), this, SLOT(SetYRange()));
|
||||
connect(dispXMin, SIGNAL(editingFinished()), this, SLOT(isXMinModified()));
|
||||
connect(dispXMax, SIGNAL(editingFinished()), this, SLOT(isXMaxModified()));
|
||||
connect(dispYMin, SIGNAL(editingFinished()), this, SLOT(isYMinModified()));
|
||||
connect(dispYMax, SIGNAL(editingFinished()), this, SLOT(isYMaxModified()));
|
||||
|
||||
bool isRange[4]{true, true, true, true};
|
||||
plot->SetXYRangeChanged(true, ranges, isRange);
|
||||
@ -583,9 +629,9 @@ void qTabPlot::GetStreamingFrequency() {
|
||||
SLOT(SetStreamingFrequency()));
|
||||
disconnect(comboTimeGapUnit, SIGNAL(currentIndexChanged(int)), this,
|
||||
SLOT(SetStreamingFrequency()));
|
||||
disconnect(spinTimeGap, SIGNAL(editingFinished()), this,
|
||||
disconnect(spinTimeGap, SIGNAL(valueChanged(double)), this,
|
||||
SLOT(SetStreamingFrequency()));
|
||||
disconnect(spinNthFrame, SIGNAL(editingFinished()), this,
|
||||
disconnect(spinNthFrame, SIGNAL(valueChanged(int)), this,
|
||||
SLOT(SetStreamingFrequency()));
|
||||
try {
|
||||
int freq = det->getRxZmqFrequency().tsquash(
|
||||
@ -621,9 +667,9 @@ void qTabPlot::GetStreamingFrequency() {
|
||||
SLOT(SetStreamingFrequency()));
|
||||
connect(comboTimeGapUnit, SIGNAL(currentIndexChanged(int)), this,
|
||||
SLOT(SetStreamingFrequency()));
|
||||
connect(spinTimeGap, SIGNAL(editingFinished()), this,
|
||||
connect(spinTimeGap, SIGNAL(valueChanged(double)), this,
|
||||
SLOT(SetStreamingFrequency()));
|
||||
connect(spinNthFrame, SIGNAL(editingFinished()), this,
|
||||
connect(spinNthFrame, SIGNAL(valueChanged(int)), this,
|
||||
SLOT(SetStreamingFrequency()));
|
||||
}
|
||||
|
||||
|
Binary file not shown.
@ -901,12 +901,13 @@ int setPeriod(int64_t val) {
|
||||
LOG(logERROR, ("Invalid period: %lld ns\n", val));
|
||||
return FAIL;
|
||||
}
|
||||
val *= (1E-9 * systemFrequency);
|
||||
if (burstMode == BURST_OFF) {
|
||||
LOG(logINFO, ("Setting period %lld ns [Continuous mode]\n", val));
|
||||
val *= (1E-9 * systemFrequency);
|
||||
set64BitReg(val, SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG);
|
||||
} else {
|
||||
LOG(logINFO, ("Setting period %lld ns [Burst mode]\n", val));
|
||||
val *= (1E-9 * systemFrequency);
|
||||
set64BitReg(val, ASIC_INT_PERIOD_LSB_REG, ASIC_INT_PERIOD_MSB_REG);
|
||||
}
|
||||
// validate for tolerance
|
||||
|
@ -46,8 +46,8 @@
|
||||
#define DEFAULT_CURRENT_SOURCE (0)
|
||||
#define DEFAULT_TIMING_SOURCE (TIMING_INTERNAL)
|
||||
|
||||
#define DEFAULT_READOUT_C0 (8) //(108333336) // rdo_clk, 108 MHz
|
||||
#define DEFAULT_READOUT_C1 (8) //(108333336) // rdo_x2_clk, 108 MHz
|
||||
#define DEFAULT_READOUT_C0 (6) //(144444448) // rdo_clk, 144 MHz
|
||||
#define DEFAULT_READOUT_C1 (6) //(144444448) // rdo_x2_clk, 144 MHz
|
||||
#define DEFAULT_SYSTEM_C0 (5) //(144444448) // run_clk, 144 MHz
|
||||
#define DEFAULT_SYSTEM_C1 (10) //(72222224) // chip_clk, 72 MHz
|
||||
#define DEFAULT_SYSTEM_C2 (5) //(144444448) // sync_clk, 144 MHz
|
||||
|
@ -5,8 +5,8 @@
|
||||
#define APIGUI 0x200804
|
||||
#define APICTB 0x200810
|
||||
#define APIGOTTHARD 0x200810
|
||||
#define APIGOTTHARD2 0x200810
|
||||
#define APIJUNGFRAU 0x200810
|
||||
#define APIMOENCH 0x200810
|
||||
#define APIEIGER 0x200831
|
||||
#define APIMYTHEN3 0x200901
|
||||
#define APIGOTTHARD2 0x200902
|
||||
|
Loading…
x
Reference in New Issue
Block a user