Files
x11ma/script/beamline_alignment/18_2DFE_scan_OTF.py
T
2026-06-24 13:28:45 +02:00

140 lines
4.3 KiB
Python

#tscan(['ca://X11MA-FE-SL1:TRXW-PosAct', CADC2], points=50, interval=0.001, keep=False, save=False, name='Unknown', domain_axis='Time')
#
####################################################################################################
## Example on running simultaneous scans.
####################################################################################################
#
##Simple example running 2 simultaneous scans, not manipulating same writables.
##Each scan plots to a different context.
#def scan1():
# print "scan1"
# return lscan(ao1, ai1, 0, 40, 20, 0.1, title = "scan1", tag = "scan_1")
#
#def scan2():
# print "scan2"
# return lscan(ao2, wf1, 0, 40, 20, 0.1, title = "scan2", tag = "scan_2")
#
#parallelize(scan1, scan2)
#
#
#
##Example of simultaneous scans, running one at a time in passes, manipulating same writable.
##All scans plot to default context.
#
#REGIONS = [("R1",(1.0, 2.0, 0.1)), ("R2",(2.0, 8.0, 0.5)), ("R3",(8.0, 9.0, 0.2)), ]
#PASSES = 3
#
#scanning=False
#current_index=-1
#def scan(region):
# name, pars=REGIONS[region]
# def before_pass(pass_num, scan):
# global scanning, current_index
# while (current_index != (region-1)) or scanning:
# time.sleep(0.1)
# scanning = True
# current_index = current_index+1
# App.getInstance().mainFrame.setScanDisplays(scan, None)
# def after_pass(pass_num):
# global scanning, current_index
# if current_index>=(len(REGIONS)-1):
# current_index=-1
# scanning = False
# lscan(ao1, [ai1, ai2], pars[0], pars[1], pars[2], 0.1, tag=name, passes=PASSES,
# before_pass = before_pass, after_pass=after_pass, initial_move=False)
#
#parallelize(* [[scan,[i,]] for i in range(len(REGIONS))])
#
def FE_scan_prepare():
FE_centerX_ini = BML_FE_centerX.read()
FE_centerY_ini = BML_FE_centerY.read()
FE_speedcX_ini = BML_FE_centerX.getSpeed()
FE_speedcY_ini = BML_FE_centerY.getSpeed()
FE_sizeX_ini = BML_FE_sizeX.read()
FE_sizeY_ini = BML_FE_sizeY.read()
FE_speedsX_ini = BML_FE_sizeX.getSpeed()
FE_speedsY_ini = BML_FE_sizeY.getSpeed()
BML_FE_sizeX.setSpeed(1.0)
BML_FE_sizeY.setSpeed(1.0)
BML_FE_centerX.setSpeed(1.0)
BML_FE_centerY.setSpeed(1.0)
FE_centerX = 0.0
FE_centerY = 0.0
FE_sizeX = 0.1
FE_sizeY = 0.1
x_range = 4.0
y_range = 4.0
x_steps = 0.2
y_steps = 0.2
xmin = FE_centerX - x_range/2
xmax = FE_centerX + x_range/2
ymin = FE_centerY - y_range/2
ymax = FE_centerY + y_range/2
xsteps = x_steps
ysteps = y_steps
BML_FE_sizeX.update()
BML_FE_sizeY.update()
BML_FE_centerX.update()
BML_FE_centerY.update()
# started = time.strftime("%H:%M:%S", time.localtime())
BML_FE_sizeX.move(FE_sizeX)
BML_FE_sizeY.move(FE_sizeY)
BML_FE_centerX.move(xmin)
BML_FE_centerY.move(ymin)
def FE_scan_move():
BML_FE_sizeX.update()
BML_FE_sizeY.update()
BML_FE_centerX.update()
BML_FE_centerY.update()
BML_FE_centerY.setSpeed(0.05)
BML_FE_centerY.moveAsync(2.0)
for i in range(0,10):
BML_FE_sizeX.update()
BML_FE_sizeY.update()
BML_FE_centerX.update()
BML_FE_centerY.update()
BML_FE_centerX.move(2.0)
BML_FE_sizeX.update()
BML_FE_sizeY.update()
BML_FE_centerX.update()
BML_FE_centerY.update()
BML_FE_centerX.move(-2.0)
print(i)
# BML_FE_centerY.move(ymin)
# stopped = time.strftime("%H:%M:%S", time.localtime())
# print("started: " + started)
# print("stopped: " + stopped)
def time_scan_2DFE():
sensors = [CADC2, 'ca://X11MA-FE-SL1:TRXR-VelAct', 'ca://X11MA-FE-SL1:TRXW-VelAct', 'ca://X11MA-FE-SL1:TRXR-PosAct', 'ca://X11MA-FE-SL1:TRXW-PosAct', 'ca://X11MA-FE-SL1:TRYB-VelAct', 'ca://X11MA-FE-SL1:TRYT-VelAct', 'ca://X11MA-FE-SL1:TRYB-PosAct', 'ca://X11MA-FE-SL1:TRYT-PosAct']
# tscan(sensors, points=850, interval=0.1, keep=False, save=False, name='Unknown', domain_axis='Time')
tscan(sensors, 850, 0.1, domain_axis='Time')
json_path = get_exec_pars().path
bml_save_scan_settings_json(json_path)
def run_parallel_scan():
FE_scan_prepare()
parallelize(FE_scan_move, time_scan_2DFE)