mythen3 gui

This commit is contained in:
maliakal_d 2019-11-18 17:57:19 +01:00
parent c4e7086d99
commit dfc886a65b
14 changed files with 95 additions and 16 deletions

View File

@ -42,7 +42,7 @@ private:
HV_180,
HV_200
};
int hvmin;
static const int HV_MIN = 60;
static const int HV_MAX = 200;
};

View File

@ -228,6 +228,7 @@ void qDetectorMain::SetUpDetector(const std::string fName, int multiID) {
case slsDetectorDefs::GOTTHARD:
case slsDetectorDefs::JUNGFRAU:
case slsDetectorDefs::MOENCH:
case slsDetectorDefs::MYTHEN3:
break;
default:
std::ostringstream os;

View File

@ -19,6 +19,7 @@ void qTabDeveloper::SetupWidgetWindow() {
lblComboHV->hide();
lblSpinHV->hide();
spinHV->hide();
hvmin = HV_MIN;
try{
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++)));
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:
break;
}
@ -145,7 +167,7 @@ void qTabDeveloper::GetHighVoltage() {
auto retval = det->getHighVoltage({comboDetector->currentIndex() - 1}).tsquash("Inconsistent values for high voltage.");
//spinHV
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));
}
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));
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:
throw sls::RuntimeError(std::string("Unknown detector type"));
}

View File

@ -59,6 +59,7 @@ void qTabPlot::SetupWidgetWindow() {
is1d = false;
switch(det->getDetectorType().squash()) {
case slsDetectorDefs::GOTTHARD:
case slsDetectorDefs::MYTHEN3:
is1d = true;
break;
case slsDetectorDefs::EIGER:

View File

@ -21,6 +21,7 @@ void qTabSettings::SetupWidgetWindow() {
// enabling according to det type
switch(det->getDetectorType().squash()) {
case slsDetectorDefs::MOENCH:
case slsDetectorDefs::MYTHEN3:
lblSettings->setEnabled(false);
comboSettings->setEnabled(false);
break;

View File

@ -375,6 +375,7 @@ void setupDetector() {
setExpTime(DEFAULT_EXPTIME);
setPeriod(DEFAULT_PERIOD);
setDelayAfterTrigger(DEFAULT_DELAY_AFTER_TRIGGER);
setTiming(DEFAULT_TIMING_MODE);
}
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() {
uint32_t srcip = udpDetails.srcip;

View File

@ -7,7 +7,7 @@
#define CTRL_SRVR_INIT_TIME_US (300 * 1000)
/* Hardware Definitions */
#define NCHAN (128)
#define NCHAN (128 * 3)
#define NCHIP (10)
#define NDAC (16)
#define HV_SOFT_MAX_VOLTAGE (200)
@ -24,6 +24,7 @@
#define DEFAULT_PERIOD (2*1000*1000) //ns
#define DEFAULT_DELAY_AFTER_TRIGGER (0)
#define DEFAULT_HIGH_VOLTAGE (0)
#define DEFAULT_TIMING_MODE (AUTO_TIMING)
#define DEFAULT_READOUT_C0 (125000000) // rdo_clk, 125 MHz
#define DEFAULT_READOUT_C1 (250000000) // rdo_x2_clk, 250 MHz
#define DEFAULT_SYSTEM_C0 (250000000) // run_clk, 250 MHz

View File

@ -286,7 +286,7 @@ int setHighVoltage(int val);
// parameters - timing, extsig
#if !defined(MYTHEN3D) && !defined(GOTTHARD2D)
#if !defined(GOTTHARD2D)
void setTiming( enum timingMode arg);
enum timingMode getTiming();
#endif

View File

@ -677,7 +677,7 @@ int set_timing_mode(int file_des) {
return printSocketReadError();
FILE_LOG(logDEBUG1, ("Setting external communication mode to %d\n", arg));
#if defined(MYTHEN3D) || defined(GOTTHARD2D)
#ifdef GOTTHARD2D
functionNotImplemented();
#else

View File

@ -700,7 +700,7 @@ void multiSlsDetector::readFrameFromReceiver() {
currentFileIndex);
}
dataReady(thisData, currentFrameIndex,
((dynamicRange == 32) ? currentSubFrameIndex : -1),
((dynamicRange == 32 && eiger) ? currentSubFrameIndex : -1),
pCallbackArg);
delete thisData;
}

View File

@ -992,9 +992,11 @@ int Implementation::setNumberofDigitalSamples(const uint32_t i) {
}
int Implementation::setDynamicRange(const uint32_t i) {
// only eiger
if (dynamicRange != i) {
dynamicRange = i;
if (myDetectorType == EIGER) {
generalData->SetDynamicRange(i, tengigaEnable);
generalData->SetGapPixelsEnable(gapPixelsEnable, dynamicRange, quadEnable);
// to update npixelsx, npixelsy in file writer
@ -1003,6 +1005,7 @@ int Implementation::setDynamicRange(const uint32_t i) {
if (SetupFifoStructure() == FAIL)
return FAIL;
}
}
FILE_LOG(logINFO) << "Dynamic Range: " << dynamicRange;
return OK;
}

View File

@ -520,7 +520,7 @@ struct detParameters {
nGappixelsY = 1;
break;
case slsDetectorDefs::detectorType::MYTHEN3:
nChanX = 128;
nChanX = 128 * 3;
nChanY = 1;
nChipX = 10;
nChipY = 1;

View File

@ -8,5 +8,5 @@
#define APIGOTTHARD 0x191111
#define APIJUNGFRAU 0x191111
#define APIEIGER 0x191111
#define APIMYTHEN3 0x191111
#define APIGOTTHARD2 0x191115
#define APIMYTHEN3 0x191118