mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-04-29 08:02:23 +02:00
5ec5d46c48
Build and Deploy on local RHEL9 / build (push) Successful in 2m12s
Build on RHEL9 docker image / build (push) Successful in 3m33s
Build on RHEL8 docker image / build (push) Successful in 4m54s
Build and Deploy on local RHEL8 / build (push) Successful in 4m54s
Run Simulator Tests on local RHEL9 / build (push) Successful in 14m41s
Run Simulator Tests on local RHEL8 / build (push) Successful in 17m10s
* not allowing power names for dac names to prevent duplicate names * wip * v_abcd commands should be removed to prevent unintentional usage and throw with a suggestion command for dac and power * binary in * dacs with power dac names should work and do not take in dac units to avoid ambiguity, test with 0 value for power dacs should fail, to do: implement power commands * wip: power in client, tests, and fixed server interfaces and ctb implementation, not tested * wip. client and xilinx todo * wip: ctb power works, tests left * fixed some tests * added vchip check * python cmds still left. wip * fixed xilinx. python left * wip * wip. xilinx * fixed powerchip for ctb * power all returns all * configtransceiver is removed * wip python * wip * wip * wip * wip * wip * wip * wip xilinx * wip * wip * wip * pybindings * fix getdacindex and getdacname for normal detectors to throw if random index that doesnt fit to the detector * wip * fixed tests * fixes for python api * wip * python: moved powerlist to Ctb * fixed tests to work for powelist in Ctb * moved signallist, adclist, slowadc, slowadclist to Ctb * throw approperiate error when no modules added for powers * added dac test * fix dac default names and test for dacs * ctb dacs, yet to do othe rdacs * dacs should work now even in tests * run all tests * DetectorPowers->NamedPowers in ctb * comments * removed unnecessary test code * removed hard coded dac names in python NamedDacs and NamedPowers * minor * minor * fixed error messages * changed power to be able to set DAC directly, using enable and disable methods with enabled to get
290 lines
11 KiB
C++
290 lines
11 KiB
C++
// SPDX-License-Identifier: LGPL-3.0-or-other
|
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
|
#include "sls/sls_detector_defs.h"
|
|
#include "sls/string_utils.h"
|
|
#include <sstream>
|
|
|
|
namespace sls {
|
|
|
|
std::string GetHelpDac(std::string dac) {
|
|
if (dac.empty() || sls::is_int(dac)) {
|
|
return std::string("[dac name] [dac or mV value] [(optional unit) mV] "
|
|
"\n\t[Ctb] Use dac index for dac name.");
|
|
}
|
|
if (dac == "vthreshold") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger][Mythen3] "
|
|
"Detector threshold voltage for single photon counters.\n\t[Eiger] "
|
|
"Sets vcmp_ll, vcmp_lr, vcmp_rl, vcmp_rr and vcp to the same "
|
|
"value. \n\t[Mythen3] Sets vth1, vth2 and vth3 to the same value "
|
|
"for enabled counters.");
|
|
}
|
|
if (dac == "vsvp") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger] Dac for ?? ");
|
|
}
|
|
if (dac == "vsvn") {
|
|
return std::string("[dac or mV value][(optional unit) mV] \n\t[Eiger] "
|
|
"Dac for ?? \n\t[Mythen3] voltage to define "
|
|
"feedback resistance of the first shaper");
|
|
}
|
|
if (dac == "vtrim") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger] Dac for ?? "
|
|
"\n\t[Mythen3] Dac for the voltage defining the trim bit size.");
|
|
}
|
|
if (dac == "vrpreamp") {
|
|
return std::string("[dac or mV value][(optional unit) mV] \n\t[Eiger] "
|
|
"Dac for ?? \n\t[Mythen3] voltage to define the "
|
|
"preamplifier feedback resistance.");
|
|
}
|
|
if (dac == "vrshaper") {
|
|
return std::string("[dac or mV value][(optional unit) mV] \n\t[Eiger] "
|
|
"Dac for ?? \n\t[Mythen3] voltage to define "
|
|
"feedback resistance of the first shaper");
|
|
}
|
|
if (dac == "vtgstv") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger] Dac for ??");
|
|
}
|
|
if (dac == "vcmp_ll") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger] Dac for ??");
|
|
}
|
|
if (dac == "vcmp_lr") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger] Dac for ??");
|
|
}
|
|
if (dac == "vcal") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger] Dac for ??");
|
|
}
|
|
if (dac == "vcmp_rl") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger] Dac for ??");
|
|
}
|
|
if (dac == "vcmp_rr") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger] Dac for ??");
|
|
}
|
|
if (dac == "rxb_rb") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger] Dac for ??");
|
|
}
|
|
if (dac == "rxb_lb") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger] Dac for ??");
|
|
}
|
|
if (dac == "vcp") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger] Dac for ??");
|
|
}
|
|
if (dac == "vcn") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger] Dac for ??");
|
|
}
|
|
if (dac == "vishaper") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger] Dac for ??");
|
|
}
|
|
if (dac == "iodelay") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Eiger] Dac for ??");
|
|
}
|
|
if (dac == "vref_ds") {
|
|
return std::string("[dac or mV value][(optional unit) mV] "
|
|
"\n\t[Jungfrau] Dac for ??");
|
|
}
|
|
if (dac == "vout_cm") {
|
|
return std::string("[dac or mV value][(optional unit) mV] "
|
|
"\n\t[Moench] Dac for 5");
|
|
}
|
|
if (dac == "vin_cm") {
|
|
return std::string("[dac or mV value][(optional unit) mV] "
|
|
"\n\t[Moench] Dac for 2");
|
|
}
|
|
if (dac == "vref_comp") {
|
|
return std::string("[dac or mV value][(optional unit) mV] "
|
|
"\n\t[Jungfrau] Dac for ??");
|
|
}
|
|
if (dac == "vrshaper_n") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] voltage to "
|
|
"define feedback resistance of the second shaper.");
|
|
}
|
|
if (dac == "vipre") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for the "
|
|
"preamplifier's input transistor current.\n\t[Moench] Dac for 1");
|
|
}
|
|
if (dac == "vdcsh") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for the "
|
|
"reference (DC) voltage for the shaper.");
|
|
}
|
|
if (dac == "vth1") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for first "
|
|
"detector threshold voltage. Overwrites even if counter disabled.");
|
|
}
|
|
if (dac == "vth2") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for "
|
|
"second detector threshold voltage. Overwrites even if counter "
|
|
"disabled.");
|
|
}
|
|
if (dac == "vth3") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for third "
|
|
"detector threshold voltage. Overwrites even if counter disabled.");
|
|
}
|
|
if (dac == "vcal_n") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for the "
|
|
"low voltage for analog pulsing.");
|
|
}
|
|
if (dac == "vcal_p") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for the "
|
|
"high voltage for analog pulsing.");
|
|
}
|
|
if (dac == "vcassh") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for the "
|
|
"shaper's cascode voltage.");
|
|
}
|
|
if (dac == "vcas") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for the "
|
|
"preamplifier's cascode voltage.");
|
|
}
|
|
if (dac == "vicin") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for the "
|
|
"bias current for the comparator.");
|
|
}
|
|
if (dac == "vipre_out") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Mythen3] Dac for "
|
|
"preamplifier's output transistor current.");
|
|
}
|
|
if (dac == "vref_h_adc") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Gotthard2] Dac for "
|
|
"reference voltage high of ADC.");
|
|
}
|
|
if (dac == "vb_comp_fe") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Gotthard2] Dac for "
|
|
"comparator current of analogue front end.");
|
|
}
|
|
if (dac == "vb_comp_adc") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Gotthard2] Dac for "
|
|
"comparator current of ADC.");
|
|
}
|
|
if (dac == "vcom_cds") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Gotthard2] Dac for "
|
|
"common mode voltage of CDS stage.");
|
|
}
|
|
if (dac == "vref_rstore") {
|
|
return std::string("[dac or mV value][(optional unit) mV] "
|
|
"\n\t[Gotthard2] Dac for reference charging voltage "
|
|
"of temparory storage cell in high gain.");
|
|
}
|
|
if (dac == "vb_opa_1st") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Gotthard2] dac dac for "
|
|
"opa current for driving the other DACs in chip.");
|
|
}
|
|
if (dac == "vref_comp_fe") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Gotthard2] Dac for "
|
|
"reference voltage of the comparator of analogue front end.");
|
|
}
|
|
if (dac == "vcom_adc1") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Gotthard2] Dac for "
|
|
"common mode voltage of ADC DAC bank 1.");
|
|
}
|
|
if (dac == "vref_prech") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] "
|
|
"\n\t[Gotthard2][Jungfrau] "
|
|
"Dac for reference votlage for precharing the preamplifier.");
|
|
}
|
|
if (dac == "vref_l_adc") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Gotthard2] Dac for "
|
|
"reference voltage low for ADC.");
|
|
}
|
|
if (dac == "vref_cds") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Gotthard2] Dac for "
|
|
"reference voltage of CDS applied to the temporary storage cell in "
|
|
"medium and low gain.");
|
|
}
|
|
if (dac == "vb_cs") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Gotthard2] Dac for "
|
|
"current injection into preamplifier.");
|
|
}
|
|
if (dac == "vb_opa_fd") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Gotthard2] Dac for "
|
|
"current for CDS opa stage.");
|
|
}
|
|
if (dac == "vcom_adc2") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Gotthard2] Dac for "
|
|
"common mode voltage of ADC DAC bank 2.");
|
|
}
|
|
if (dac == "vb_ds") {
|
|
return std::string("[dac or mV value][(optional unit) mV] "
|
|
"\n\t[Jungfrau] Dac for ??");
|
|
}
|
|
if (dac == "vb_comp") {
|
|
return std::string("[dac or mV value][(optional unit) mV] "
|
|
"\n\t[Jungfrau] Dac for ??");
|
|
}
|
|
if (dac == "vb_pixbuf") {
|
|
return std::string("[dac or mV value][(optional unit) mV] "
|
|
"\n\t[Jungfrau] Dac for ??");
|
|
}
|
|
if (dac == "vin_com") {
|
|
return std::string("[dac or mV value][(optional unit) mV] "
|
|
"\n\t[Jungfrau] Dac for ??");
|
|
}
|
|
if (dac == "vdd_prot") {
|
|
return std::string("[dac or mV value][(optional unit) mV] "
|
|
"\n\t[Jungfrau] Dac for ??");
|
|
}
|
|
if (dac == "vbp_colbuf") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Moench] Dac for 0");
|
|
}
|
|
if (dac == "vb_sda") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Moench] Dac for 3");
|
|
}
|
|
if (dac == "vcasc_sfp") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Moench] Dac for 4");
|
|
}
|
|
if (dac == "vipre_cds") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Moench] Dac for 6");
|
|
}
|
|
if (dac == "ibias_sfp") {
|
|
return std::string(
|
|
"[dac or mV value][(optional unit) mV] \n\t[Moench] Dac for 7");
|
|
}
|
|
if (dac == "vtgstv") {
|
|
return std::string("");
|
|
}
|
|
throw sls::RuntimeError("Unknown dac command");
|
|
}
|
|
|
|
} // namespace sls
|