mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 03:10:02 +02:00
mythen3 gui
This commit is contained in:
parent
c4e7086d99
commit
dfc886a65b
@ -42,7 +42,7 @@ private:
|
|||||||
HV_180,
|
HV_180,
|
||||||
HV_200
|
HV_200
|
||||||
};
|
};
|
||||||
|
int hvmin;
|
||||||
static const int HV_MIN = 60;
|
static const int HV_MIN = 60;
|
||||||
static const int HV_MAX = 200;
|
static const int HV_MAX = 200;
|
||||||
};
|
};
|
||||||
|
@ -228,6 +228,7 @@ void qDetectorMain::SetUpDetector(const std::string fName, int multiID) {
|
|||||||
case slsDetectorDefs::GOTTHARD:
|
case slsDetectorDefs::GOTTHARD:
|
||||||
case slsDetectorDefs::JUNGFRAU:
|
case slsDetectorDefs::JUNGFRAU:
|
||||||
case slsDetectorDefs::MOENCH:
|
case slsDetectorDefs::MOENCH:
|
||||||
|
case slsDetectorDefs::MYTHEN3:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
std::ostringstream os;
|
std::ostringstream os;
|
||||||
|
@ -19,6 +19,7 @@ void qTabDeveloper::SetupWidgetWindow() {
|
|||||||
lblComboHV->hide();
|
lblComboHV->hide();
|
||||||
lblSpinHV->hide();
|
lblSpinHV->hide();
|
||||||
spinHV->hide();
|
spinHV->hide();
|
||||||
|
hvmin = HV_MIN;
|
||||||
|
|
||||||
try{
|
try{
|
||||||
slsDetectorDefs::detectorType detType = det->getDetectorType().squash();
|
slsDetectorDefs::detectorType detType = det->getDetectorType().squash();
|
||||||
@ -91,6 +92,27 @@ void qTabDeveloper::SetupWidgetWindow() {
|
|||||||
dacWidgets.push_back(new qDacWidget(this, det, true, "i Dac 7: ", getSLSIndex(detType, tempid++)));
|
dacWidgets.push_back(new qDacWidget(this, det, true, "i Dac 7: ", getSLSIndex(detType, tempid++)));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case slsDetectorDefs::MYTHEN3:
|
||||||
|
lblSpinHV->show();
|
||||||
|
spinHV->show();
|
||||||
|
hvmin = 0;
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vcassh: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vth2: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vshaper: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vshaperneg: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vipre_out: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vth3: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vth1: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vicin: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vcas: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vpreamp: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vph: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vipre: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "viinsh: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vpl: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vtrim: ", getSLSIndex(detType, tempid++)));
|
||||||
|
dacWidgets.push_back(new qDacWidget(this, det, true, "vdcsh: ", getSLSIndex(detType, tempid++)));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -145,7 +167,7 @@ void qTabDeveloper::GetHighVoltage() {
|
|||||||
auto retval = det->getHighVoltage({comboDetector->currentIndex() - 1}).tsquash("Inconsistent values for high voltage.");
|
auto retval = det->getHighVoltage({comboDetector->currentIndex() - 1}).tsquash("Inconsistent values for high voltage.");
|
||||||
//spinHV
|
//spinHV
|
||||||
if (spinHV->isVisible()) {
|
if (spinHV->isVisible()) {
|
||||||
if (retval != 0 && retval < HV_MIN && retval > HV_MAX) {
|
if (retval != 0 && retval < hvmin && retval > HV_MAX) {
|
||||||
throw sls::RuntimeError(std::string("Unknown High Voltage: ") + std::to_string(retval));
|
throw sls::RuntimeError(std::string("Unknown High Voltage: ") + std::to_string(retval));
|
||||||
}
|
}
|
||||||
spinHV->setValue(retval);
|
spinHV->setValue(retval);
|
||||||
@ -306,6 +328,45 @@ slsDetectorDefs::dacIndex qTabDeveloper::getSLSIndex(slsDetectorDefs::detectorTy
|
|||||||
}
|
}
|
||||||
throw sls::RuntimeError(std::string("Unknown dac/adc index") + std::to_string(index));
|
throw sls::RuntimeError(std::string("Unknown dac/adc index") + std::to_string(index));
|
||||||
|
|
||||||
|
case slsDetectorDefs::MYTHEN3:
|
||||||
|
switch (index) {
|
||||||
|
case 0:
|
||||||
|
return slsDetectorDefs::CASSH;
|
||||||
|
case 1:
|
||||||
|
return slsDetectorDefs::VTH2;
|
||||||
|
case 2:
|
||||||
|
return slsDetectorDefs::SHAPER1;
|
||||||
|
case 3:
|
||||||
|
return slsDetectorDefs::SHAPER2;
|
||||||
|
case 4:
|
||||||
|
return slsDetectorDefs::VIPRE_OUT;
|
||||||
|
case 5:
|
||||||
|
return slsDetectorDefs::VTH3;
|
||||||
|
case 6:
|
||||||
|
return slsDetectorDefs::THRESHOLD;
|
||||||
|
case 7:
|
||||||
|
return slsDetectorDefs::VICIN;
|
||||||
|
case 8:
|
||||||
|
return slsDetectorDefs::CAS;
|
||||||
|
case 9:
|
||||||
|
return slsDetectorDefs::PREAMP;
|
||||||
|
case 10:
|
||||||
|
return slsDetectorDefs::CALIBRATION_PULSE;
|
||||||
|
case 11:
|
||||||
|
return slsDetectorDefs::VIPRE;
|
||||||
|
case 12:
|
||||||
|
return slsDetectorDefs::VIINSH;
|
||||||
|
case 13:
|
||||||
|
return slsDetectorDefs::VPL;
|
||||||
|
case 14:
|
||||||
|
return slsDetectorDefs::TRIMBIT_SIZE;
|
||||||
|
case 15:
|
||||||
|
return slsDetectorDefs::VDCSH;
|
||||||
|
default:
|
||||||
|
throw sls::RuntimeError(std::string("Unknown dac/adc index") + std::to_string(index));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw sls::RuntimeError(std::string("Unknown detector type"));
|
throw sls::RuntimeError(std::string("Unknown detector type"));
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,7 @@ void qTabPlot::SetupWidgetWindow() {
|
|||||||
is1d = false;
|
is1d = false;
|
||||||
switch(det->getDetectorType().squash()) {
|
switch(det->getDetectorType().squash()) {
|
||||||
case slsDetectorDefs::GOTTHARD:
|
case slsDetectorDefs::GOTTHARD:
|
||||||
|
case slsDetectorDefs::MYTHEN3:
|
||||||
is1d = true;
|
is1d = true;
|
||||||
break;
|
break;
|
||||||
case slsDetectorDefs::EIGER:
|
case slsDetectorDefs::EIGER:
|
||||||
|
@ -21,6 +21,7 @@ void qTabSettings::SetupWidgetWindow() {
|
|||||||
// enabling according to det type
|
// enabling according to det type
|
||||||
switch(det->getDetectorType().squash()) {
|
switch(det->getDetectorType().squash()) {
|
||||||
case slsDetectorDefs::MOENCH:
|
case slsDetectorDefs::MOENCH:
|
||||||
|
case slsDetectorDefs::MYTHEN3:
|
||||||
lblSettings->setEnabled(false);
|
lblSettings->setEnabled(false);
|
||||||
comboSettings->setEnabled(false);
|
comboSettings->setEnabled(false);
|
||||||
break;
|
break;
|
||||||
|
Binary file not shown.
@ -375,6 +375,7 @@ void setupDetector() {
|
|||||||
setExpTime(DEFAULT_EXPTIME);
|
setExpTime(DEFAULT_EXPTIME);
|
||||||
setPeriod(DEFAULT_PERIOD);
|
setPeriod(DEFAULT_PERIOD);
|
||||||
setDelayAfterTrigger(DEFAULT_DELAY_AFTER_TRIGGER);
|
setDelayAfterTrigger(DEFAULT_DELAY_AFTER_TRIGGER);
|
||||||
|
setTiming(DEFAULT_TIMING_MODE);
|
||||||
}
|
}
|
||||||
|
|
||||||
int setDefaultDacs() {
|
int setDefaultDacs() {
|
||||||
@ -644,6 +645,16 @@ int setHighVoltage(int val){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* parameters - timing */
|
||||||
|
void setTiming( enum timingMode arg){
|
||||||
|
// to be implemented
|
||||||
|
}
|
||||||
|
|
||||||
|
enum timingMode getTiming() {
|
||||||
|
return AUTO_TIMING;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int configureMAC() {
|
int configureMAC() {
|
||||||
|
|
||||||
uint32_t srcip = udpDetails.srcip;
|
uint32_t srcip = udpDetails.srcip;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#define CTRL_SRVR_INIT_TIME_US (300 * 1000)
|
#define CTRL_SRVR_INIT_TIME_US (300 * 1000)
|
||||||
|
|
||||||
/* Hardware Definitions */
|
/* Hardware Definitions */
|
||||||
#define NCHAN (128)
|
#define NCHAN (128 * 3)
|
||||||
#define NCHIP (10)
|
#define NCHIP (10)
|
||||||
#define NDAC (16)
|
#define NDAC (16)
|
||||||
#define HV_SOFT_MAX_VOLTAGE (200)
|
#define HV_SOFT_MAX_VOLTAGE (200)
|
||||||
@ -24,6 +24,7 @@
|
|||||||
#define DEFAULT_PERIOD (2*1000*1000) //ns
|
#define DEFAULT_PERIOD (2*1000*1000) //ns
|
||||||
#define DEFAULT_DELAY_AFTER_TRIGGER (0)
|
#define DEFAULT_DELAY_AFTER_TRIGGER (0)
|
||||||
#define DEFAULT_HIGH_VOLTAGE (0)
|
#define DEFAULT_HIGH_VOLTAGE (0)
|
||||||
|
#define DEFAULT_TIMING_MODE (AUTO_TIMING)
|
||||||
#define DEFAULT_READOUT_C0 (125000000) // rdo_clk, 125 MHz
|
#define DEFAULT_READOUT_C0 (125000000) // rdo_clk, 125 MHz
|
||||||
#define DEFAULT_READOUT_C1 (250000000) // rdo_x2_clk, 250 MHz
|
#define DEFAULT_READOUT_C1 (250000000) // rdo_x2_clk, 250 MHz
|
||||||
#define DEFAULT_SYSTEM_C0 (250000000) // run_clk, 250 MHz
|
#define DEFAULT_SYSTEM_C0 (250000000) // run_clk, 250 MHz
|
||||||
|
@ -286,7 +286,7 @@ int setHighVoltage(int val);
|
|||||||
|
|
||||||
|
|
||||||
// parameters - timing, extsig
|
// parameters - timing, extsig
|
||||||
#if !defined(MYTHEN3D) && !defined(GOTTHARD2D)
|
#if !defined(GOTTHARD2D)
|
||||||
void setTiming( enum timingMode arg);
|
void setTiming( enum timingMode arg);
|
||||||
enum timingMode getTiming();
|
enum timingMode getTiming();
|
||||||
#endif
|
#endif
|
||||||
|
@ -677,7 +677,7 @@ int set_timing_mode(int file_des) {
|
|||||||
return printSocketReadError();
|
return printSocketReadError();
|
||||||
FILE_LOG(logDEBUG1, ("Setting external communication mode to %d\n", arg));
|
FILE_LOG(logDEBUG1, ("Setting external communication mode to %d\n", arg));
|
||||||
|
|
||||||
#if defined(MYTHEN3D) || defined(GOTTHARD2D)
|
#ifdef GOTTHARD2D
|
||||||
functionNotImplemented();
|
functionNotImplemented();
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
@ -700,7 +700,7 @@ void multiSlsDetector::readFrameFromReceiver() {
|
|||||||
currentFileIndex);
|
currentFileIndex);
|
||||||
}
|
}
|
||||||
dataReady(thisData, currentFrameIndex,
|
dataReady(thisData, currentFrameIndex,
|
||||||
((dynamicRange == 32) ? currentSubFrameIndex : -1),
|
((dynamicRange == 32 && eiger) ? currentSubFrameIndex : -1),
|
||||||
pCallbackArg);
|
pCallbackArg);
|
||||||
delete thisData;
|
delete thisData;
|
||||||
}
|
}
|
||||||
|
@ -992,16 +992,19 @@ int Implementation::setNumberofDigitalSamples(const uint32_t i) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int Implementation::setDynamicRange(const uint32_t i) {
|
int Implementation::setDynamicRange(const uint32_t i) {
|
||||||
// only eiger
|
|
||||||
if (dynamicRange != i) {
|
if (dynamicRange != i) {
|
||||||
dynamicRange = i;
|
dynamicRange = i;
|
||||||
generalData->SetDynamicRange(i, tengigaEnable);
|
|
||||||
generalData->SetGapPixelsEnable(gapPixelsEnable, dynamicRange, quadEnable);
|
if (myDetectorType == EIGER) {
|
||||||
// to update npixelsx, npixelsy in file writer
|
generalData->SetDynamicRange(i, tengigaEnable);
|
||||||
for (const auto &it : dataProcessor)
|
generalData->SetGapPixelsEnable(gapPixelsEnable, dynamicRange, quadEnable);
|
||||||
it->SetPixelDimension();
|
// to update npixelsx, npixelsy in file writer
|
||||||
if (SetupFifoStructure() == FAIL)
|
for (const auto &it : dataProcessor)
|
||||||
return FAIL;
|
it->SetPixelDimension();
|
||||||
|
if (SetupFifoStructure() == FAIL)
|
||||||
|
return FAIL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
FILE_LOG(logINFO) << "Dynamic Range: " << dynamicRange;
|
FILE_LOG(logINFO) << "Dynamic Range: " << dynamicRange;
|
||||||
return OK;
|
return OK;
|
||||||
|
@ -520,7 +520,7 @@ struct detParameters {
|
|||||||
nGappixelsY = 1;
|
nGappixelsY = 1;
|
||||||
break;
|
break;
|
||||||
case slsDetectorDefs::detectorType::MYTHEN3:
|
case slsDetectorDefs::detectorType::MYTHEN3:
|
||||||
nChanX = 128;
|
nChanX = 128 * 3;
|
||||||
nChanY = 1;
|
nChanY = 1;
|
||||||
nChipX = 10;
|
nChipX = 10;
|
||||||
nChipY = 1;
|
nChipY = 1;
|
||||||
|
@ -8,5 +8,5 @@
|
|||||||
#define APIGOTTHARD 0x191111
|
#define APIGOTTHARD 0x191111
|
||||||
#define APIJUNGFRAU 0x191111
|
#define APIJUNGFRAU 0x191111
|
||||||
#define APIEIGER 0x191111
|
#define APIEIGER 0x191111
|
||||||
#define APIMYTHEN3 0x191111
|
|
||||||
#define APIGOTTHARD2 0x191115
|
#define APIGOTTHARD2 0x191115
|
||||||
|
#define APIMYTHEN3 0x191118
|
||||||
|
Loading…
x
Reference in New Issue
Block a user