194 lines
4.7 KiB
Python
194 lines
4.7 KiB
Python
def scan_2D_FE_slits():
|
|
|
|
# sensors = [Keithley_2_raw, CADC2, BML_FMU_YAW]
|
|
# r1 = lscan(BML_FMU_ROTY, sensors, -0.06, 0.00, 30, 0.5)
|
|
|
|
# sensors = [Keithley_2_raw, CADC2, BML_FMU_X, BML_FMU_YAW]
|
|
# r1 = lscan(BML_FMU_TRX, sensors, -3.8, 3.8, 20, 0.5)
|
|
|
|
# 1 Determine initial state
|
|
#
|
|
# Keithley:
|
|
#
|
|
Keithley_11_range_string ='X11MA-KEI11:RANGE'
|
|
detector_range_ini = caget('X11MA-KEI11:RANGE')
|
|
range_number_ini = range_to_number(detector_range_ini)
|
|
# print(range_number_ini)
|
|
#
|
|
# FMU:
|
|
#
|
|
# TRX_speed_ini = BML_FMU_TRX.getSpeed()
|
|
# ROTY_speed_ini = BML_FMU_ROTY.getSpeed()
|
|
FE_centerX_ini = BML_FE_centerX.read()
|
|
FE_centerY_ini = BML_FE_centerY.read()
|
|
FE_sizeX_ini = BML_FE_sizeX.read()
|
|
FE_sizeY_ini = BML_FE_sizeY.read()
|
|
FE_speedX_ini = BML_FE_sizeX.getSpeed()
|
|
FE_speedY_ini = BML_FE_sizeY.getSpeed()
|
|
|
|
# 2 Set Keithley range for scan
|
|
#
|
|
detector_range = select_Keithley_11_range()
|
|
# print(detector_range)
|
|
range_number = range_to_number(detector_range)
|
|
# print(range_number)
|
|
caput(Keithley_11_range_string, range_number) # 6 --> 200 nA
|
|
|
|
# 3 Set motor speed for scan
|
|
#
|
|
# BML_FE_sizeX.setSpeed(2.0)
|
|
# BML_FE_sizeY.setSpeed(2.0)
|
|
# BML_FE_centerX.setSpeed(2.0)
|
|
# BML_FE_centerY.setSpeed(2.0)
|
|
|
|
BML_FE_sizeX.update()
|
|
BML_FE_sizeY.update()
|
|
BML_FE_centerX.update()
|
|
BML_FE_centerY.update()
|
|
|
|
|
|
BML_FE_sizeX.setSpeed(0.1)
|
|
BML_FE_sizeY.setSpeed(0.1)
|
|
BML_FE_centerX.setSpeed(0.1)
|
|
BML_FE_centerY.setSpeed(0.1)
|
|
|
|
# 4 Set scan parameters
|
|
|
|
sensors = [Keithley_2_raw, CADC2, CADC2, CADC2]
|
|
|
|
# FE_centerX = -1.15
|
|
# FE_centerY = 1.45
|
|
|
|
FE_centerX = -1.25
|
|
FE_centerY = 1.0
|
|
|
|
FE_sizeX = 0.1
|
|
FE_sizeY = 0.1
|
|
|
|
x_range = 1.0
|
|
y_range = 1.0
|
|
|
|
x_steps = 0.05
|
|
y_steps = 0.05
|
|
|
|
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
|
|
|
|
# 5 Perform scan
|
|
|
|
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)
|
|
|
|
sleep(1.0)
|
|
|
|
ascan([BML_FE_centerX, BML_FE_centerY], sensors, [xmin, ymin], [xmax, ymax], [xsteps, ysteps], latency=0.1, zigzag=True)
|
|
|
|
# 5 Put back to initial settings
|
|
|
|
caput(Keithley_11_range_string, range_number_ini)
|
|
# BML_FMU_TRX.setSpeed(0.1)
|
|
# BML_FMU_ROTY.setSpeed(0.1)
|
|
|
|
json_path = get_exec_pars().path
|
|
bml_save_scan_settings_json(json_path)
|
|
|
|
stopped = time.strftime("%H:%M:%S", time.localtime())
|
|
print("started: " + started)
|
|
print("stopped: " + stopped)
|
|
|
|
BML_FE_sizeX.update()
|
|
BML_FE_sizeY.update()
|
|
BML_FE_centerX.update()
|
|
BML_FE_centerY.update()
|
|
|
|
BML_FE_sizeX.move(FE_sizeX_ini)
|
|
BML_FE_sizeY.move(FE_sizeY_ini)
|
|
BML_FE_centerX.move(FE_centerX_ini)
|
|
BML_FE_centerY.move(FE_centerY_ini)
|
|
|
|
BML_FE_sizeX.setSpeed(2.0)
|
|
BML_FE_sizeY.setSpeed(2.0)
|
|
BML_FE_centerX.setSpeed(2.0)
|
|
BML_FE_centerY.setSpeed(2.0)
|
|
|
|
def scan_3D_FE_slits(Scan_params, Sensors):
|
|
print(Scan_params)
|
|
print(Sensors)
|
|
#def scan_2D_FE_slits():
|
|
|
|
# 1 Set scan parameters
|
|
|
|
emin = Scan_params[0]
|
|
emax = Scan_params[1]
|
|
esteps = Scan_params[2]
|
|
|
|
FE_centerX = Scan_params[3]
|
|
FE_centerY = Scan_params[4]
|
|
|
|
FE_size_x = Scan_params[5]
|
|
FE_size_y = Scan_params[6]
|
|
|
|
x_range_full = Scan_params[7]
|
|
y_range_full = Scan_params[8]
|
|
|
|
x_steps = Scan_params[9]
|
|
y_steps = Scan_params[10]
|
|
|
|
x_range = x_range_full - FE_size_x
|
|
y_range = y_range_full - FE_size_y
|
|
|
|
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()
|
|
|
|
# 3 Perform scan
|
|
|
|
started = time.strftime("%H:%M:%S", time.localtime())
|
|
|
|
ascan([BML_energy, BML_FE_centerX, BML_FE_centerY], sensors, [emin, xmin, ymin,], [emax, xmax, ymax], [esteps, xsteps, ysteps], latency=0.1, zigzag=False)
|
|
|
|
# 5 Put back to initial settings
|
|
|
|
json_path = get_exec_pars().path
|
|
bml_save_scan_settings_json(json_path)
|
|
|
|
stopped = time.strftime("%H:%M:%S", time.localtime())
|
|
print("started: " + started)
|
|
print("stopped: " + stopped)
|
|
|
|
|
|
|
|
# # script_path = os.path.abspath(__file__)
|
|
#
|
|
# if filename is None:
|
|
# filename = os.path.basename(script_path)
|
|
#
|
|
# dest = os.path.join(output_dir, filename)
|
|
#
|
|
# # Ordner erzeugen, falls nicht existiert
|
|
# if not os.path.exists(output_dir):
|
|
# os.makedirs(output_dir)
|
|
#
|
|
# shutil.copy(script_path, dest)
|