mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-20 00:37:12 +02:00
changed speed to readoutspeed, added g2 speeds (108, 144)
This commit is contained in:
@ -605,32 +605,33 @@ std::string CmdProxy::Exptime(int action) {
|
||||
return os.str();
|
||||
}
|
||||
|
||||
std::string CmdProxy::Speed(int action) {
|
||||
std::string CmdProxy::ReadoutSpeed(int action) {
|
||||
std::ostringstream os;
|
||||
os << cmd << ' ';
|
||||
if (action == defs::HELP_ACTION) {
|
||||
os << "[0 or full_speed|1 or half_speed|2 or "
|
||||
"quarter_speed]\n\t[Eiger][Jungfrau] Readout speed of "
|
||||
"chip.\n\t[Jungfrau] FULL_SPEED option only available from v2.0 "
|
||||
"boards and with setting number of interfaces to 2. Also "
|
||||
"overwrites adcphase to recommended default. "
|
||||
os << "\n\t[0 or full_speed|1 or half_speed|2 or "
|
||||
"quarter_speed]\n\t\t[Eiger][Jungfrau] Readout "
|
||||
"speed of chip.\n\t\t[Eiger] Default speed is full_speed."
|
||||
"\n\t\t[Jungfrau] Default speed is half_speed. full_speed "
|
||||
"option only available from v2.0 boards. Also overwrites "
|
||||
"adcphase to recommended default.\n\t [144|108]\n\t\t[Gotthard2] "
|
||||
"Readout speed of chip in MHz. Default is 108."
|
||||
<< '\n';
|
||||
} else {
|
||||
defs::detectorType type = det->getDetectorType().squash();
|
||||
if (type == defs::CHIPTESTBOARD || type == defs::MOENCH) {
|
||||
throw sls::RuntimeError(
|
||||
"Speed not implemented. Did you mean runclk?");
|
||||
"ReadoutSpeed not implemented. Did you mean runclk?");
|
||||
}
|
||||
if (type != defs::EIGER && type != defs::JUNGFRAU) {
|
||||
if (type != defs::EIGER && type != defs::JUNGFRAU && type != defs::GOTTHARD2) {
|
||||
throw sls::RuntimeError(
|
||||
"Speed not implemented."); // setspped one function problem. tbr
|
||||
// after change
|
||||
"ReadoutSpeed not implemented.");
|
||||
}
|
||||
if (action == defs::GET_ACTION) {
|
||||
if (!args.empty()) {
|
||||
WrongNumberOfParameters(0);
|
||||
}
|
||||
auto t = det->getSpeed(std::vector<int>{det_id});
|
||||
auto t = det->getReadoutSpeed(std::vector<int>{det_id});
|
||||
os << OutString(t) << '\n';
|
||||
} else if (action == defs::PUT_ACTION) {
|
||||
if (args.size() != 1) {
|
||||
@ -655,7 +656,7 @@ std::string CmdProxy::Speed(int action) {
|
||||
} catch (...) {
|
||||
t = sls::StringTo<defs::speedLevel>(args[0]);
|
||||
}
|
||||
det->setSpeed(t, std::vector<int>{det_id});
|
||||
det->setReadoutSpeed(t, std::vector<int>{det_id});
|
||||
os << sls::ToString(t) << '\n'; // no args to convert 0,1,2 as well
|
||||
} else {
|
||||
throw sls::RuntimeError("Unknown action");
|
||||
|
@ -591,7 +591,8 @@ class CmdProxy {
|
||||
/* acquisition parameters */
|
||||
{"cycles", "triggers"},
|
||||
{"cyclesl", "triggersl"},
|
||||
{"clkdivider", "speed"},
|
||||
{"clkdivider", "readoutspeed"},
|
||||
{"speed", "readoutspeed"},
|
||||
{"vhighvoltage", "highvoltage"},
|
||||
{"digitest", "imagetest"},
|
||||
{"filter", "filterresistor"},
|
||||
@ -792,7 +793,7 @@ class CmdProxy {
|
||||
{"drlist", &CmdProxy::drlist},
|
||||
{"timing", &CmdProxy::timing},
|
||||
{"timinglist", &CmdProxy::timinglist},
|
||||
{"speed", &CmdProxy::Speed},
|
||||
{"speed", &CmdProxy::ReadoutSpeed},
|
||||
{"adcphase", &CmdProxy::Adcphase},
|
||||
{"maxadcphaseshift", &CmdProxy::maxadcphaseshift},
|
||||
{"dbitphase", &CmdProxy::Dbitphase},
|
||||
@ -1097,7 +1098,7 @@ class CmdProxy {
|
||||
std::string Acquire(int action);
|
||||
std::string Exptime(int action);
|
||||
std::string DynamicRange(int action);
|
||||
std::string Speed(int action);
|
||||
std::string ReadoutSpeed(int action);
|
||||
std::string Adcphase(int action);
|
||||
std::string Dbitphase(int action);
|
||||
std::string ClockFrequency(int action);
|
||||
|
@ -412,20 +412,31 @@ std::vector<defs::timingMode> Detector::getTimingModeList() const {
|
||||
}
|
||||
}
|
||||
|
||||
Result<defs::speedLevel> Detector::getSpeed(Positions pos) const {
|
||||
auto res = pimpl->Parallel(&Module::getClockDivider, pos, defs::RUN_CLOCK);
|
||||
Result<defs::speedLevel> speedResult(res.size());
|
||||
for (unsigned int i = 0; i < res.size(); ++i) {
|
||||
speedResult[i] = static_cast<defs::speedLevel>(res[i]);
|
||||
}
|
||||
return speedResult;
|
||||
Result<defs::speedLevel> Detector::getReadoutSpeed(Positions pos) const {
|
||||
return pimpl->Parallel(&Module::getReadoutSpeed, pos);
|
||||
}
|
||||
|
||||
void Detector::setSpeed(defs::speedLevel value, Positions pos) {
|
||||
pimpl->Parallel(&Module::setClockDivider, pos, defs::RUN_CLOCK,
|
||||
static_cast<int>(value));
|
||||
void Detector::setReadoutSpeed(defs::speedLevel value, Positions pos) {
|
||||
pimpl->Parallel(&Module::getReadoutSpeed, pos, value);
|
||||
}
|
||||
|
||||
|
||||
std::vector<defs::speedLevel> Detector::getReadoutSpeedList() const {
|
||||
switch (getDetectorType().squash()) {
|
||||
case defs::EIGER:
|
||||
case defs::JUNGFRAU:
|
||||
return std::vector<defs::speedLevel>{defs::FULL_SPEED,
|
||||
defs::HALF_SPEED,
|
||||
defs::QUARTER_SPEED};
|
||||
case defs::GOTTHARD2:
|
||||
return std::vector<defs::speedLevel>{defs::G_108MHZ,
|
||||
defs::G_144MHZ};
|
||||
default:
|
||||
throw RuntimeError("Readout speed not implemented for this detector");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Result<int> Detector::getADCPhase(Positions pos) const {
|
||||
return pimpl->Parallel(&Module::getClockPhase, pos, defs::ADC_CLOCK, false);
|
||||
}
|
||||
|
@ -600,6 +600,14 @@ void Module::setTimingMode(timingMode value) {
|
||||
}
|
||||
}
|
||||
|
||||
slsDetectorDefs::speedLevel Module::getReadoutSpeed() const {
|
||||
return sendToDetector<speedLevel>(F_GET_READOUT_SPEED);
|
||||
}
|
||||
|
||||
void Module::setReadoutSpeed(speedLevel value) {
|
||||
sendToDetector<int>(F_SET_READOUT_SPEED, value);
|
||||
}
|
||||
|
||||
int Module::getClockDivider(int clkIndex) const {
|
||||
return sendToDetector<int>(F_GET_CLOCK_DIVIDER, clkIndex);
|
||||
}
|
||||
|
@ -144,6 +144,8 @@ class Module : public virtual slsDetectorDefs {
|
||||
void setDynamicRange(int dr);
|
||||
timingMode getTimingMode() const;
|
||||
void setTimingMode(timingMode value);
|
||||
speedLevel getReadoutSpeed() const;
|
||||
void setReadoutSpeed(speedLevel value);
|
||||
int getClockDivider(int clkIndex) const;
|
||||
void setClockDivider(int clkIndex, int value);
|
||||
int getClockPhase(int clkIndex, bool inDegrees) const;
|
||||
|
Reference in New Issue
Block a user