mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-06 18:10:40 +02:00
added the other gain modes
This commit is contained in:
parent
e20022f139
commit
0666afc642
@ -2201,8 +2201,8 @@ class Detector(CppDetectorApi):
|
|||||||
[Jungfrau] Detector gain mode. Enum: gainMode
|
[Jungfrau] Detector gain mode. Enum: gainMode
|
||||||
Note
|
Note
|
||||||
-----
|
-----
|
||||||
|
[Jungfrau] NORMAL_GAIN_MODE, FORCE_SWITCH_G1, FORCE_SWITCH_G2, FIX_G1, FIX_G2, FIX_G0, FIX_HG0 \n
|
||||||
[Jungfrau] NORMAL_GAIN_MODE, FORCE_SWITCH_G1, FORCE_SWITCH_G2
|
CAUTION: Do not use FIX_G0 and FIX_HG0 blindly, you can damage the detector!!!
|
||||||
"""
|
"""
|
||||||
return element_if_equal(self.getGainMode())
|
return element_if_equal(self.getGainMode())
|
||||||
|
|
||||||
|
@ -1075,15 +1075,27 @@ enum detectorSettings setSettings(enum detectorSettings sett) {
|
|||||||
configureChip();
|
configureChip();
|
||||||
}
|
}
|
||||||
|
|
||||||
return thisSettings;
|
return getSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
enum detectorSettings getSettings() { return thisSettings; }
|
enum detectorSettings getSettings() {
|
||||||
|
if (bus_r(DAQ_REG) & DAQ_HIGH_GAIN_MSK)
|
||||||
|
return DYNAMICHG0;
|
||||||
|
return DYNAMICGAIN;
|
||||||
|
}
|
||||||
|
|
||||||
enum gainMode getGainMode() {
|
enum gainMode getGainMode() {
|
||||||
uint32_t retval = bus_r(DAQ_REG) & DAQ_FRCE_SWTCH_GAIN_MSK;
|
uint32_t regval = bus_r(DAQ_REG);
|
||||||
|
uint32_t retval_force = regval & DAQ_FRCE_SWTCH_GAIN_MSK;
|
||||||
|
uint32_t retval_fix = regval & DAQ_FIX_GAIN_MSK;
|
||||||
|
uint32_t retval_cmp_rst = regval & DAQ_CMP_RST_MSK;
|
||||||
|
|
||||||
switch (retval) {
|
// only one set should be valid
|
||||||
|
if ((retval_force && retval_fix) || (retval_fix && retval_cmp_rst) ||
|
||||||
|
(retval_force && retval_cmp_rst)) {
|
||||||
|
LOG(logERROR, ("undefined gain mode. DAQ reg: 0x%x\n", regval));
|
||||||
|
}
|
||||||
|
switch (retval_force) {
|
||||||
case DAQ_FRCE_GAIN_STG_0_VAL:
|
case DAQ_FRCE_GAIN_STG_0_VAL:
|
||||||
return NORMAL_GAIN_MODE;
|
return NORMAL_GAIN_MODE;
|
||||||
case DAQ_FRCE_GAIN_STG_1_VAL:
|
case DAQ_FRCE_GAIN_STG_1_VAL:
|
||||||
@ -1091,10 +1103,25 @@ enum gainMode getGainMode() {
|
|||||||
case DAQ_FRCE_GAIN_STG_2_VAL:
|
case DAQ_FRCE_GAIN_STG_2_VAL:
|
||||||
return FORCE_SWITCH_G2;
|
return FORCE_SWITCH_G2;
|
||||||
default:
|
default:
|
||||||
LOG(logERROR, ("This gain mode %d is not defined [DAQ reg: %d]\n",
|
break;
|
||||||
(retval << DAQ_FRCE_SWTCH_GAIN_OFST), retval));
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
switch (retval_fix) {
|
||||||
|
case DAQ_FIX_GAIN_STG_1_VAL:
|
||||||
|
return FIX_G1;
|
||||||
|
case DAQ_FIX_GAIN_STG_2_VAL:
|
||||||
|
return FIX_G2;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (retval_cmp_rst) {
|
||||||
|
if (getSettings() == DYNAMICGAIN) {
|
||||||
|
return FIX_G0;
|
||||||
|
}
|
||||||
|
return FIX_HG0;
|
||||||
|
}
|
||||||
|
LOG(logERROR, ("This gain mode is undefined [DAQ reg: %d]\n", regval));
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setGainMode(enum gainMode mode) {
|
void setGainMode(enum gainMode mode) {
|
||||||
|
@ -1179,7 +1179,9 @@ class Detector {
|
|||||||
/** [Jungfrau]*/
|
/** [Jungfrau]*/
|
||||||
Result<defs::gainMode> getGainMode(Positions pos = {}) const;
|
Result<defs::gainMode> getGainMode(Positions pos = {}) const;
|
||||||
|
|
||||||
/** [Jungfrau] Options: NORMAL_GAIN_MODE, FORCE_SWITCH_G1, FORCE_SWITCH_G2\n
|
/** [Jungfrau] Options: NORMAL_GAIN_MODE, FORCE_SWITCH_G1, FORCE_SWITCH_G2,
|
||||||
|
* FIX_G1, FIX_G2, FIX_G0, FIX_HG0 \n\CAUTION: Do not use FIX_G0 and FIX_HG0
|
||||||
|
* blindly, you can damage the detector!!!\n
|
||||||
*/
|
*/
|
||||||
void setGainMode(const defs::gainMode mode, Positions pos = {});
|
void setGainMode(const defs::gainMode mode, Positions pos = {});
|
||||||
|
|
||||||
|
@ -1877,7 +1877,9 @@ class CmdProxy {
|
|||||||
INTEGER_COMMAND_VEC_ID(
|
INTEGER_COMMAND_VEC_ID(
|
||||||
gainmode, getGainMode, setGainMode,
|
gainmode, getGainMode, setGainMode,
|
||||||
sls::StringTo<slsDetectorDefs::gainMode>,
|
sls::StringTo<slsDetectorDefs::gainMode>,
|
||||||
"[forceswitchg1, forceswitchg2]\n\t[Jungfrau] Gain mode.");
|
"[forceswitchg1|forceswitchg2|fixgain1|fixgain2|fixgain0|"
|
||||||
|
"fixhighgain0]\n\t[Jungfrau] Gain mode.\n\tCAUTION: Do not use "
|
||||||
|
"fixgain0 and fixhighgain0 blindly, you can damage the detector!!!");
|
||||||
|
|
||||||
/* Gotthard Specific */
|
/* Gotthard Specific */
|
||||||
TIME_GET_COMMAND(exptimel, getExptimeLeft,
|
TIME_GET_COMMAND(exptimel, getExptimeLeft,
|
||||||
|
@ -414,7 +414,15 @@ typedef struct {
|
|||||||
|
|
||||||
enum vetoAlgorithm { DEFAULT_ALGORITHM };
|
enum vetoAlgorithm { DEFAULT_ALGORITHM };
|
||||||
|
|
||||||
enum gainMode { NORMAL_GAIN_MODE, FORCE_SWITCH_G1, FORCE_SWITCH_G2 };
|
enum gainMode {
|
||||||
|
NORMAL_GAIN_MODE,
|
||||||
|
FORCE_SWITCH_G1,
|
||||||
|
FORCE_SWITCH_G2,
|
||||||
|
FIX_G1,
|
||||||
|
FIX_G2,
|
||||||
|
FIX_G0,
|
||||||
|
FIX_HG0
|
||||||
|
};
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
||||||
|
@ -587,6 +587,14 @@ std::string ToString(const defs::gainMode s) {
|
|||||||
return std::string("forceswitchg1");
|
return std::string("forceswitchg1");
|
||||||
case defs::FORCE_SWITCH_G2:
|
case defs::FORCE_SWITCH_G2:
|
||||||
return std::string("forceswitchg2");
|
return std::string("forceswitchg2");
|
||||||
|
case defs::FIX_G1:
|
||||||
|
return std::string("fixg1");
|
||||||
|
case defs::FIX_G2:
|
||||||
|
return std::string("fixg2");
|
||||||
|
case defs::FIX_G0:
|
||||||
|
return std::string("fixg0");
|
||||||
|
case defs::FIX_HG0:
|
||||||
|
return std::string("fixhg0");
|
||||||
default:
|
default:
|
||||||
return std::string("Unknown");
|
return std::string("Unknown");
|
||||||
}
|
}
|
||||||
@ -982,6 +990,14 @@ template <> defs::gainMode StringTo(const std::string &s) {
|
|||||||
return defs::FORCE_SWITCH_G1;
|
return defs::FORCE_SWITCH_G1;
|
||||||
if (s == "forceswitchg2")
|
if (s == "forceswitchg2")
|
||||||
return defs::FORCE_SWITCH_G2;
|
return defs::FORCE_SWITCH_G2;
|
||||||
|
if (s == "fixg1")
|
||||||
|
return defs::FIX_G1;
|
||||||
|
if (s == "fixg2")
|
||||||
|
return defs::FIX_G2;
|
||||||
|
if (s == "fixg0")
|
||||||
|
return defs::FIX_G0;
|
||||||
|
if (s == "fixhg0")
|
||||||
|
return defs::FIX_HG0;
|
||||||
throw sls::RuntimeError("Unknown gain mode " + s);
|
throw sls::RuntimeError("Unknown gain mode " + s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user