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