mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-20 02:40:03 +02:00
mythen3 gui
This commit is contained in:
parent
c4e7086d99
commit
dfc886a65b
@ -42,7 +42,7 @@ private:
|
||||
HV_180,
|
||||
HV_200
|
||||
};
|
||||
|
||||
int hvmin;
|
||||
static const int HV_MIN = 60;
|
||||
static const int HV_MAX = 200;
|
||||
};
|
||||
|
@ -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;
|
||||
|
@ -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"));
|
||||
}
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
|
Binary file not shown.
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -700,7 +700,7 @@ void multiSlsDetector::readFrameFromReceiver() {
|
||||
currentFileIndex);
|
||||
}
|
||||
dataReady(thisData, currentFrameIndex,
|
||||
((dynamicRange == 32) ? currentSubFrameIndex : -1),
|
||||
((dynamicRange == 32 && eiger) ? currentSubFrameIndex : -1),
|
||||
pCallbackArg);
|
||||
delete thisData;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -520,7 +520,7 @@ struct detParameters {
|
||||
nGappixelsY = 1;
|
||||
break;
|
||||
case slsDetectorDefs::detectorType::MYTHEN3:
|
||||
nChanX = 128;
|
||||
nChanX = 128 * 3;
|
||||
nChanY = 1;
|
||||
nChipX = 10;
|
||||
nChipY = 1;
|
||||
|
@ -8,5 +8,5 @@
|
||||
#define APIGOTTHARD 0x191111
|
||||
#define APIJUNGFRAU 0x191111
|
||||
#define APIEIGER 0x191111
|
||||
#define APIMYTHEN3 0x191111
|
||||
#define APIGOTTHARD2 0x191115
|
||||
#define APIMYTHEN3 0x191118
|
||||
|
Loading…
x
Reference in New Issue
Block a user