Files
sf-op/script/Undulators/und_scan_global.py
2025-12-15 16:53:16 +01:00

41 lines
1.8 KiB
Python

und_table = ["SARUN03", "SARUN04", "SARUN05", "SARUN06", "SARUN07",
"SARUN08", "SARUN09", "SARUN10", "SARUN11", "SARUN12",
"SARUN13", "SARUN14", "SARUN15", "STEST01", "SATUN06",
"SATUN07", "SATUN08", "SATUN09", "SATUN10", "SATUN11",
"SATUN12", "SATUN13", "SATUN15", "SATUN16", "SATUN17",
"SATUN18", "SATUN19", "SATUN20", "SATUN21", "SATUN22"]
psh_table = ["SARUN03", "SARUN04", "SARUN05", "SARUN06", "SARUN07",
"SARUN08", "SARUN09", "SARUN10", "SARUN11", "SARUN12",
"SARUN13", "SARUN14", "STEST01", "SATUN06",
"SATUN07", "SATUN08", "SATUN09", "SATUN10", "SATUN11",
"SATUN12", "SATUN13", "SATUN15", "SATUN16", "SATUN17",
"SATUN18", "SATUN19", "SATUN20", "SATUN21"]
snr_threshold = caget("SF-SCAN-GLOBAL:SNR-THR")
und_scan_global_state.assertReady()
und_scan_global_state = State.Busy
und_scan_global_result = None
try:
for und in und_table:
req = caget(und + ":K-SCAN-REQUIRED")
if req == "True":
scan = "AT_K" if und.startswith("SAT") else "AR_K"
[max_val, snr] = run("Undulators/und_scan.py")
if snr > snr_threshold:
run("Undulators/und_scan_set.py")
caput(und + ":K-SCAN-REQUIRED", 0)
for und in psh_table:
req = caget(und + ":PHI-SCAN-REQUIRED")
if req == "True":
scan = "AT_PHI" if und.startswith("SAT") else "AR_PHI"
[max_val, snr] = run("Undulators/und_scan.py")
if snr > snr_threshold:
run("Undulators/und_scan_set.py")
caput(und + ":PHI-SCAN-REQUIRED", 0)
set_return('Success')
und_scan_global_result = "Ok"
except:
und_scan_global_result = str(sys.exc_info()[1])
finally:
und_scan_global_state = State.Ready