This commit is contained in:
gac-x11ma
2026-06-24 13:28:45 +02:00
parent b658ce0a15
commit 97ecbd2af2
113 changed files with 5193 additions and 456368 deletions
@@ -41,6 +41,4 @@ def select_Keithley_11_range():
Keithley_11_range = get_string(msg, default = "AUTO", alternatives = ["AUTO", "20 mA", "2 mA", "200 uA", "20 uA","2 uA", "200 nA", "20 nA", "2 nA", "200 pA", "20 pA"], password = False)
# print(Keithley_11_range)
return Keithley_11_range
c(5.0)
@@ -25,7 +25,9 @@ from javax.swing import JFrame, JFileChooser
from javax.swing.filechooser import FileNameExtensionFilter
from java.io import File
BEAMLINE_PARAMETERS_FILE = "/home/gac-x11ma/pshell/home/script/beamline_alignment/bml_align_params.json"
BEAMLINE_PARAMETERS_FILE = "/sls/x11ma/config/pshell/home/script/beamline_alignment/bml_align_params.json"
#BEAMLINE_PARAMETERS_FILE = "/home/gac-x11ma/pshell/home/script/beamline_alignment/bml_align_params.json"
DATA_FILE = "/home/gac-x11ma/pshell/home/data/2025_11/20251113/Monocam_AU_131.json"
DATA_DIR = "/home/gac-x11ma/network_drives/home/Data/2025_11/"
@@ -374,6 +376,7 @@ def bml_restore_saved_settings(selected_components=None):
try:
with open(restore_file, "r") as f:
saved_data = json.load(f, object_pairs_hook=OrderedDict)
print("Restore:", restore_file)
except:
print("Error loading restore file:", restore_file)
return
@@ -475,6 +478,7 @@ def bml_display_saved_settings(selected_components=None):
try:
with open(restore_file, "r") as f:
saved_data = json.load(f, object_pairs_hook=OrderedDict)
print("Display:", restore_file)
except:
print("Error loading restore file:", restore_file)
return
@@ -545,6 +549,7 @@ def bml_show_difference_to_saved_settings(selected_components=None):
try:
with open(restore_file, "r") as f:
saved_data = json.load(f, object_pairs_hook=OrderedDict)
print("Compare to:", restore_file)
except:
print("Error loading restore file:", restore_file)
return
@@ -615,7 +620,7 @@ def bml_show_difference_to_saved_settings(selected_components=None):
difference = "NaN"
# print(read_cmd + " = " + str(display_value) + ", diff = " + str(round(difference, 5)) + ", tolerance = " + str(round(tolerance, 5)))
if float(difference) > float(tolerance):
print(key + " - Differs from saved value: " + str(round(saved_value, 5)))
print(key + " Current value: " + str(round(display_value, 5)) + " - Differs from saved value: " + str(round(saved_value, 5)))
# write_cmd_new = "\"" + write_cmd + "\""
# print(write_cmd_new)
# caput(write_cmd, float(saved_value))a
-1
View File
@@ -62,7 +62,6 @@ def scan_2dfe_center():
BML_FE_centerX.move(xmin)
BML_FE_centerY.move(ymin)
sensors = [BML_FE_CX_RBV, BML_FE_CY_RBV, BML_FE_CX_RBV, BML_FE_CX_RBV, BML_FE_CX_RBV, CADC2]
#sensors = [BML_FE_CX_RBV, BML_FE_CY_RBV, BML_XBPM_B_SUM, BML_XBPM_B_POS_X, BML_XBPM_B_POS_Y, CADC2]
#detector = Keithley_2_raw
@@ -59,17 +59,17 @@ def scan_2D_FE_slits():
# FE_centerX = -1.15
# FE_centerY = 1.45
FE_centerX = -1.25
FE_centerY = 1.0
FE_centerX = -0.3
FE_centerY = 0.3
FE_sizeX = 0.1
FE_sizeY = 0.1
FE_sizeX = 0.15
FE_sizeY = 0.15
x_range = 1.0
x_range = 1.5
y_range = 1.0
x_steps = 0.05
y_steps = 0.05
x_steps = 0.1
y_steps = 0.1
xmin = FE_centerX - x_range/2
xmax = FE_centerX + x_range/2
@@ -92,7 +92,7 @@ def scan_2D_FE_slits():
sleep(1.0)
ascan([BML_FE_centerX, BML_FE_centerY], sensors, [xmin, ymin], [xmax, ymax], [xsteps, ysteps], latency=0.1, zigzag=True)
ascan([BML_FE_centerX, BML_FE_centerY], sensors, [xmin, ymin], [xmax, ymax], [xsteps, ysteps], latency=0.1, zigzag=False)
# 5 Put back to initial settings
@@ -166,7 +166,7 @@ def scan_3D_FE_slits(Scan_params, Sensors):
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)
ascan([BML_energy_set, 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
+3 -3
View File
@@ -38,10 +38,10 @@ def scan_CMU_zRy():
sensors = [Keithley_2_raw, CADC2, BML_CMU_z_RBV, BML_CMU_Ry_RBV]
centerTRZ = 1.0
centerROY = -0.14
centerTRZ = 1.23
centerROY = 0.2
TRZ_range = 3.0
TRZ_range = 2.0
ROY_range = 0.2
TRZ_steps = 0.2
+5 -5
View File
@@ -58,13 +58,13 @@ def scan_FMU_TRX_ROTY():
sensors = [Keithley_2_raw, CADC2, BML_FMU_X, BML_FMU_YAW]
centerTRX = 1.0
centerROTY = -0.10
centerTRX = 0.3
centerROTY = -0.38
TRX_range = 6.0
ROTY_range = 0.2 # 0.1 mm corresponds to 0.25 mrad!
ROTY_range = 0.4 # 0.1 mm corresponds to 0.25 mrad!
TRX_steps = 0.3
ROTY_steps = 0.01
TRX_steps = 0.6
ROTY_steps = 0.02
xmin = centerTRX - TRX_range/2
xmax = centerTRX + TRX_range/2
+3 -1
View File
@@ -23,8 +23,10 @@ def scan_energy(scan_energy_values, sensors):
print(sen)
started = time.strftime("%H:%M:%S", time.localtime())
lscan(BML_energy_set, sensors, emin, emax, esteps, latency)
BML_energy.update()
lscan(BML_energy, sensors, emin, emax, esteps, latency)
#This is working: lscan (BML_energy, SR_current, 780.0, 800.0, 1.0)
#lscan(BML_energy, sensors, 680.0, 720.0, 2.0, 0.1)
json_path = get_exec_pars().path
bml_save_scan_settings_json(json_path)
@@ -0,0 +1,36 @@
#class PseudoPositioner(Writable):
# def write(self,pos):
# sleep(3.0)
# print "Step = " + str(pos)
# caput
#
#positioner=PseudoPositioner()
#
def scan_energy(scan_energy_values, sensors):
# 1 Set scan parameters
emin = scan_energy_values[0]
emax = scan_energy_values[1]
esteps = scan_energy_values[2]
latency = scan_energy_values[3]
for s in scan_energy_values:
print(s)
for sen in sensors:
print(sen)
started = time.strftime("%H:%M:%S", time.localtime())
BML_energy.update()
lscan(BML_energy, sensors, emin, emax, esteps, latency)
#This is working: lscan (BML_energy, SR_current, 780.0, 800.0, 1.0)
#lscan(BML_energy, sensors, 680.0, 720.0, 2.0, 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)
@@ -0,0 +1,10 @@
# From Alexandre Gobbo, see MS Teams
# After you run it the first time you must configure the device, and the initialize it:
class EnergyPGM(Positioner):
def doWrite(self, val):
energy_pgm.getSetpoint().write(val)
caput ("X11MA-PGM:setE.PROC", 1)
add_device(EnergyPGM("energy_pgm", "X11MA-PGM:energy", "X11MA-PGM:rbkenergy"), True)
energy_pgm.monitored=True
@@ -0,0 +1 @@
lscan(energy_pgm, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
+87 -27
View File
@@ -5,14 +5,15 @@
def scan_2DFE_energy():
# 1 Define detector and scan parameters
sensors = [Keithley_2_raw.getAlias(), CADC2.getAlias(), SR_current.getAlias(), BML_energy_RBV.getAlias()]
#sensors = [Keithley_2_raw.getAlias(), CADC2.getAlias(), SR_current.getAlias(), BML_energy_RBV.getAlias()]
sensors = [Keithley_2_raw, CADC2, SR_current, BML_energy]
Keithley_channel = Keithley_2_raw.getChannelName()
Keithley_range = "2 uA"
#Keithley range: "AUTO", "20 mA", "2 mA", "200 uA", "20 uA", "2 uA", "200 nA", "20 nA", "2 nA", "200 pA", "20 pA"
emin = 450.0
emax = 470.0
esteps = 5.0
emin = 400
emax = 415
esteps = 20
#FE_centerX = -0.75
#FE_centerY = 1.25
@@ -22,11 +23,20 @@ def scan_2DFE_energy():
FE_size_x = 0.1
FE_size_y = 0.1
x_range = 4.0
y_range = 4.0
x_range = 3.0
y_range = 3.0
x_steps = 0.1
y_steps = 0.1
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
# Set detector and slit parameters for scan>
@@ -42,11 +52,22 @@ def scan_2DFE_energy():
BML_FE_sizeX.write(FE_size_x)
BML_FE_sizeY.write(FE_size_y)
Scan_params = [emin, emax, esteps, FE_centerX, FE_centerY, FE_size_x, FE_size_y, x_range, y_range, x_steps, y_steps]
#Scan_params = [emin, emax, esteps, FE_centerX, FE_centerY, FE_size_x, FE_size_y, x_range, y_range, x_steps, y_steps]
# 3 Perform scans
scan_3D_FE_slits(Scan_params, sensors)
for energy in range(emin, emax, esteps):
print(energy)
BML_energy.update()
BML_energy.move(float(energy))
print(BML_energy.read())
ascan([BML_FE_centerX, BML_FE_centerY], sensors, [xmin, ymin], [xmax, ymax], [xsteps, ysteps], latency=0.1, zigzag=False)
json_path = get_exec_pars().path
bml_save_scan_settings_json(json_path)
BML_energy.update()
# scan_3D_FE_slits(Scan_params, sensors)
# 4 Restore FE motor speed
@@ -118,48 +139,87 @@ def scan_harmonic_energy_pol():
# 6 +45 deg
# 7 -45 deg
sensors = [Keithley_1_raw.getAlias(), CADC1.getAlias(), SR_current.getAlias(), BML_energy_RBV.getAlias()]
polarizations = [1,2,3,4,5,6]
sensors = [Keithley_2_raw.getAlias(), CADC2.getAlias(), SR_current.getAlias(), BML_energy.getAlias()]
polarizations = [1]
# polarizations = ["Linear H", "Linear V+", "Linear V-","Circular+", "Circular-", "+45 deg", "-45 deg"]
Keithley_channel = Keithley_2_raw.getChannelName()
Keithley_range = "AUTO"
#Keithley range: "AUTO", "20 mA", "2 mA", "200 uA", "20 uA", "2 uA", "200 nA", "20 nA", "2 nA", "200 pA", "20 pA"
emin = 500.0
emax = 900.0
esteps = 0.1
latency = 1.0
emax = 800.0
esteps = 5.0
latency = 0.1
FE_centerX = 0.0
FE_centerY = 0.0
FE_size_x = 4.0
FE_size_y = 4.0
energy_slit = 200.0
energy_slit = 20.0
# # Set detector and slit parameters for scan>
# range_number = range_to_number(Keithley_range)
# Keithley_range_cmd = Keithley_channel.replace('READOUT', 'RANGE')
# caput(Keithley_range_cmd, range_number) # 6 --> 200 nA
#
# Set detector and slit parameters for scan>
range_number = range_to_number(Keithley_range)
Keithley_range_cmd = Keithley_channel.replace('READOUT', 'RANGE')
caput(Keithley_range_cmd, range_number) # 6 --> 200 nA
BML_FE_sizeX.update()
BML_FE_sizeY.update()
BML_FE_centerX.update()
BML_FE_centerY.update()
# BML_FE_centerX.write(FE_centerX)
# BML_FE_centerY.write(FE_centerY)
# BML_FE_sizeX.write(FE_size_x)
# BML_FE_sizeY.write(FE_size_y)
#
# exit_slit.move(energy_slit)
exit_slit.move(energy_slit)
scan_energy_values = [emin, emax, esteps,latency]
for p in polarizations:
print(p)
caput("X11MA-UIND2:MODE", p)
BML_energy_set.write(emin)
# caput("X11MA-UIND2:MODE", p)
BML_energy.write(emin)
# ID2_mode.move("Linear H")
sleep(300)
sleep(1)
ID_state = caget("X11MA-UIND2:MODE")
print(ID_state)
ID_energy = caget("X11MA-UIND2:ENERGY-RBV")
print(ID_energy)
scan_energy(scan_energy_values, sensors)
BML_FE_sizeX.write(0.0)
BML_FE_sizeY.write(0.0)
# BML_FE_sizeX.write(0.0)
# BML_FE_sizeY.write(0.0)
#
def scan_2DFE_energy_OTF():
for energy in range(380, 420, 5):
print(energy)
BML_energy.update()
BML_energy.move(float(energy))
BML_energy.update()
run_parallel_scan()
def scan_2DFE_energy_OTF_pol():
# polarizations = [7,6,5,4,3,2,1]
polarizations = [2,7,1]
# polarizations = ["Linear H", "Linear V+", "Linear V-","Circular+", "Circular-", "+45 deg", "-45 deg"]
for p in polarizations:
print(p)
caput("X11MA-PGM:energy", 1650.0)
caput("X11MA-PGM:setE.PROC", 1)
# caput("X11MA-UIND2:ENERGY-SP", 1650.0)
# sleep(10)
caput("X11MA-UIND2:MODE", p)
sleep(300)
for i in range(16500, 17500, 50): # 0.2 → Faktor 10
energy = i / 10.0
print(energy)
caput("X11MA-PGM:energy", energy)
caput("X11MA-PGM:setE.PROC", 1)
# caput("X11MA-UIND2:ENERGY-SP", energy)
sleep(10)
run_parallel_scan()
@@ -0,0 +1,140 @@
#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)
@@ -0,0 +1,89 @@
# Added this as "Parameters" in device definitions
#X11MA-UIND1-MOVER:X-SP X11MA-UIND1-MOVER:X-RBV
#X11MA-UIND1-MOVER:Y-SP X11MA-UIND1-MOVER:Y-RBV
#X11MA-UIND1-MOVER:YAW-SP X11MA-UIND1-MOVER:YAW-RBV
#X11MA-UIND1-MOVER:PITCH-SP X11MA-UIND1-MOVER:PITCH-RBV
#X11MA-UIND2-MOVER:X-SP X11MA-UIND2-MOVER:X-RBV
#X11MA-UIND2-MOVER:Y-SP X11MA-UIND2-MOVER:Y-RBV
#X11MA-UIND2-MOVER:YAW-SP X11MA-UIND2-MOVER:YAW-RBV
#X11MA-UIND2-MOVER:PITCH-SP X11MA-UIND2-MOVER:PITCH-RBV
#lscan(BML_energy, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
Pos_X_ini = -0.0408
Pos_Y_ini = -0.090
YAW_ini = -0.0999
PITCH_ini = -0.1250
ID1_X_POS.write(Pos_X_ini)
ID1_Y_POS.write(Pos_Y_ini)
ID1_YAW.write(YAW_ini)
ID1_PITCH.write(PITCH_ini)
polarizations = [1,2,4,5,6,7,3]
for p in polarizations:
print(p)
caput("X11MA-UIND1:MODE", p)
sleep(60)
ID_state = caget("X11MA-UIND1:MODE")
print(ID_state)
ID_energy = caget("X11MA-UIND1:ENERGY-RBV")
print(ID_energy)
print("Scan X_POS")
for i in range(-30, 31, 5):
x = i / 100.0
print(x)
ID1_X_POS.write(x)
sleep(3.0)
lscan(energy_pgm, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
#lscan(BML_energy, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
#json_path = get_exec_pars().path
#json_enum = get_exec_pars().index
#bml_save_scan_settings_json(json_path)
ID1_X_POS.write(Pos_X_ini)
sleep(3.0)
print("Scan Y_POS")
for i in range(-30, 31, 5):
x = i / 100.0
print(x)
ID1_Y_POS.write(x)
sleep(3.0)
lscan(energy_pgm, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
ID1_Y_POS.write(Pos_Y_ini)
sleep(3.0)
print("Scan YAW")
for i in range(-150, 151, 25):
x = i / 1000.0
print(x)
ID1_YAW.write(x)
sleep(3.0)
lscan(energy_pgm, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
ID1_YAW.write(YAW_ini)
sleep(3.0)
print("Scan PITCH")
for i in range(-150, 151, 25):
x = i / 1000.0
print(x)
ID1_PITCH.write(x)
sleep(3.0)
lscan(energy_pgm, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
ID1_PITCH.write(PITCH_ini)
sleep(3.0)
@@ -0,0 +1,62 @@
# Added this as "Parameters" in device definitions
#X11MA-UIND1-MOVER:X-SP X11MA-UIND1-MOVER:X-RBV
#X11MA-UIND1-MOVER:Y-SP X11MA-UIND1-MOVER:Y-RBV
#X11MA-UIND1-MOVER:YAW-SP X11MA-UIND1-MOVER:YAW-RBV
#X11MA-UIND1-MOVER:PITCH-SP X11MA-UIND1-MOVER:PITCH-RBV
#X11MA-UIND2-MOVER:X-SP X11MA-UIND2-MOVER:X-RBV
#X11MA-UIND2-MOVER:Y-SP X11MA-UIND2-MOVER:Y-RBV
#X11MA-UIND2-MOVER:YAW-SP X11MA-UIND2-MOVER:YAW-RBV
#X11MA-UIND2-MOVER:PITCH-SP X11MA-UIND2-MOVER:PITCH-RBV
#lscan(BML_energy, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
Pos_X_ini = -0.0408
Pos_Y_ini = -0.090
YAW_ini = -0.0999
PITCH_ini = -0.1250
ID1_X_POS.write(Pos_X_ini)
ID1_Y_POS.write(Pos_Y_ini)
ID1_YAW.write(YAW_ini)
ID1_PITCH.write(PITCH_ini)
polarizations = [2,3,6,7]
for p in polarizations:
print(p)
caput("X11MA-UIND1:MODE", p)
sleep(60)
ID_state = caget("X11MA-UIND1:MODE")
print(ID_state)
ID_energy = caget("X11MA-UIND1:ENERGY-RBV")
print(ID_energy)
p
print("Scan YAW")
for i in range(-300, 301, 50):
x = i / 1000.0
print(x)
ID1_YAW.write(x)
sleep(3.0)
lscan(energy_pgm, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
ID1_YAW.write(YAW_ini)
sleep(3.0)
print("Scan PITCH")
for i in range(-300, 301, 50):
x = i / 1000.0
print(x)
ID1_PITCH.write(x)
sleep(3.0)
lscan(energy_pgm, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
ID1_PITCH.write(PITCH_ini)
sleep(3.0)
@@ -0,0 +1,89 @@
# Added this as "Parameters" in device definitions
#X11MA-UIND1-MOVER:X-SP X11MA-UIND1-MOVER:X-RBV
#X11MA-UIND1-MOVER:Y-SP X11MA-UIND1-MOVER:Y-RBV
#X11MA-UIND1-MOVER:YAW-SP X11MA-UIND1-MOVER:YAW-RBV
#X11MA-UIND1-MOVER:PITCH-SP X11MA-UIND1-MOVER:PITCH-RBV
#X11MA-UIND2-MOVER:X-SP X11MA-UIND2-MOVER:X-RBV
#X11MA-UIND2-MOVER:Y-SP X11MA-UIND2-MOVER:Y-RBV
#X11MA-UIND2-MOVER:YAW-SP X11MA-UIND2-MOVER:YAW-RBV
#X11MA-UIND2-MOVER:PITCH-SP X11MA-UIND2-MOVER:PITCH-RBV
#lscan(BML_energy, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
Pos_X_ini = -0.0393
Pos_Y_ini = -0.0702
YAW_ini = 0.0499
PITCH_ini = -0.0099
ID2_X_POS.write(Pos_X_ini)
ID2_Y_POS.write(Pos_Y_ini)
ID2_YAW.write(YAW_ini)
ID2_PITCH.write(PITCH_ini)
polarizations = [1,6,7,3]
for p in polarizations:
print(p)
caput("X11MA-UIND2:MODE", p)
sleep(60)
ID_state = caget("X11MA-UIND2:MODE")
print(ID_state)
ID_energy = caget("X11MA-UIND2:ENERGY-RBV")
print(ID_energy)
print("Scan X_POS")
for i in range(-30, 31, 5):
x = i / 100.0
print(x)
ID2_X_POS.write(x)
sleep(3.0)
lscan(energy_pgm, [Keithley_2_raw, ID2_X_POS, ID2_Y_POS, ID2_YAW, ID2_PITCH], 380.0, 420.0, 0.5, 0.2)
#lscan(BML_energy, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
#json_path = get_exec_pars().path
#json_enum = get_exec_pars().index
#bml_save_scan_settings_json(json_path)
ID2_X_POS.write(Pos_X_ini)
sleep(3.0)
print("Scan Y_POS")
for i in range(-30, 31, 5):
x = i / 100.0
print(x)
ID2_Y_POS.write(x)
sleep(3.0)
lscan(energy_pgm, [Keithley_2_raw, ID2_X_POS, ID2_Y_POS, ID2_YAW, ID2_PITCH], 380.0, 420.0, 0.5, 0.2)
ID2_Y_POS.write(Pos_Y_ini)
sleep(3.0)
print("Scan YAW")
for i in range(-300, 301, 50):
x = i / 1000.0
print(x)
ID2_YAW.write(x)
sleep(3.0)
lscan(energy_pgm, [Keithley_2_raw, ID2_X_POS, ID2_Y_POS, ID2_YAW, ID2_PITCH], 380.0, 420.0, 0.5, 0.2)
ID2_YAW.write(YAW_ini)
sleep(3.0)
print("Scan PITCH")
for i in range(-300, 301, 50):
x = i / 1000.0
print(x)
ID2_PITCH.write(x)
sleep(3.0)
lscan(energy_pgm, [Keithley_2_raw, ID2_X_POS, ID2_Y_POS, ID2_YAW, ID2_PITCH], 380.0, 420.0, 0.5, 0.2)
ID2_PITCH.write(PITCH_ini)
sleep(3.0)
@@ -0,0 +1,45 @@
#import numpy as np
#n_steps = 256
#theta_deg = np.linspace(0, 360, n_steps, endpoint=True)
#theta_rad = np.deg2rad(theta_deg)
#
#
#
#
#
#
#vector = [ [1,1] , [1,2] , [1,3] , [1,4] ,
# [1.5,2.5] ,
# [2,1] , [2,2] , [2,3] , [2,4] ,
# [2.5,2.5] ,
# [3,1] , [3,2] , [3,3] , [3,4] ]
#
#r3 = vscan((m1,m2),(ai1,ai2),vector,False, 0.1, title = "2D Vector")
Pos_X_ini = -0.0408
Pos_Y_ini = -0.090
YAW_ini = -0.0999
PITCH_ini = -0.1250
ID1_X_POS.write(Pos_X_ini)
ID1_Y_POS.write(Pos_Y_ini)
ID1_YAW.write(YAW_ini)
ID1_PITCH.write(PITCH_ini)
ID1_Y_POS.write(0.3)
from org.apache.commons.math3.util import FastMath
vector = [
[
0.3 * FastMath.sin(2.0 * FastMath.PI * i / 256.0),
0.3 * FastMath.cos(2.0 * FastMath.PI * i / 256.0)
]
for i in range(256)
]
r3 = vscan((ID1_X_POS,ID1_Y_POS),[Keithley_2_raw, ID1_X_POS, ID1_Y_POS, ID1_YAW, ID1_PITCH, energy_pgm],vector,False, 1.0, title = "ID 1 Circumfence Scan")
@@ -0,0 +1,17 @@
#lscan(exit_slit, CADC2, 30.0, -20.0, 1.0, 0.1)
#print("YAW")
#print("YAW")
dsg
# ID1
Pos_X_ini = -0.0408
Pos_Y_ini = -0.090
YAW_ini = -0.0999
PITCH_ini = -0.1250
ID1_X_POS.write(Pos_X_ini)
ID1_Y_POS.write(Pos_Y_ini)
ID1_YAW.write(YAW_ini)
ID1_PITCH.write(PITCH_ini)
@@ -0,0 +1,63 @@
# Added this as "Parameters" in device definitions
#X11MA-UIND1-MOVER:X-SP X11MA-UIND1-MOVER:X-RBV
#X11MA-UIND1-MOVER:Y-SP X11MA-UIND1-MOVER:Y-RBV
#X11MA-UIND1-MOVER:YAW-SP X11MA-UIND1-MOVER:YAW-RBV
#X11MA-UIND1-MOVER:PITCH-SP X11MA-UIND1-MOVER:PITCH-RBV
#X11MA-UIND2-MOVER:X-SP X11MA-UIND2-MOVER:X-RBV
#X11MA-UIND2-MOVER:Y-SP X11MA-UIND2-MOVER:Y-RBV
#X11MA-UIND2-MOVER:YAW-SP X11MA-UIND2-MOVER:YAW-RBV
#X11MA-UIND2-MOVER:PITCH-SP X11MA-UIND2-MOVER:PITCH-RBV
#lscan(BML_energy, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
# ID1
Pos_X_ini = -0.0408
Pos_Y_ini = -0.090
YAW_ini = -0.0999
PITCH_ini = -0.1250
ID1_X_POS.write(Pos_X_ini)
ID1_Y_POS.write(Pos_Y_ini)
ID1_YAW.write(YAW_ini)
ID1_PITCH.write(PITCH_ini)
polarizations = [1,2,3,6,7]
for p in polarizations:
print(p)
caput("X11MA-UIND1:MODE", p)
sleep(60)
ID_state = caget("X11MA-UIND1:MODE")
print(ID_state)
ID_energy = caget("X11MA-UIND1:ENERGY-RBV")
print(ID_energy)
p
print("Scan YAW")
for i in range(-300, 301, 50):
x = i / 1000.0
print(x)
ID1_YAW.write(x)
sleep(3.0)
lscan(energy_pgm, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
ID1_YAW.write(YAW_ini)
sleep(3.0)
print("Scan PITCH")
for i in range(-300, 301, 50):
x = i / 1000.0
print(x)
ID1_PITCH.write(x)
sleep(3.0)
lscan(energy_pgm, Keithley_2_raw, 375.0, 415.0, 0.5, 0.2)
ID1_PITCH.write(PITCH_ini)
sleep(3.0)
@@ -0,0 +1,10 @@
# From Alexandre Gobbo, see MS Teams
# After you run it the first time you must configure the device, and the initialize it:
class EnergyPGM(Positioner):
def doWrite(self, val):
energy_pgm.getSetpoint().write(val)
caput ("X11MA-PGM:setE.PROC", 1)
add_device(EnergyPGM("energy_pgm", "X11MA-PGM:energy", "X11MA-PGM:rbkenergy"), True)
energy_pgm.monitored=True
View File
View File
View File
View File
View File
View File
@@ -0,0 +1,9 @@
index=0
def after_read(rec):
if rec[ai2] < 0:
time.sleep(1.0)
rec.invalidate()
a= lscan((m1), (ai1,ai2), (0,), (0.4,), 20, 0.1, after_read=after_read)
@@ -0,0 +1,12 @@
testing = get_exec_pars().getSource()==CommandSource.ui
if testing:
START=780.0
END= 800.0
STEP_SIZE=1.0
lscan (BML_energy, CADC2, START, END, STEP_SIZE)
View File
View File
View File
+32 -12
View File
@@ -19,6 +19,24 @@
"TOT_bump_Y": {"read_cmd": "AGEBD-ORBITBUMP:X11MA-OFFSET-Y-TOTAL", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"TOT_bump_YP": {"read_cmd": "AGEBD-ORBITBUMP:X11MA-OFFSET-YP-TOTAL", "write_cmd": "None", "tolerance": 0.0001, "restorable": false}
},
"ID1": {
"ID1_energy": {"read_cmd": "X11MA-UIND1:ENERGY-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_mode": {"read_cmd": "X11MA-UIND1:MODE", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_gap": {"read_cmd": "X11MA-UIND1:GAP-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_offset": {"read_cmd": "X11MA-UIND1:ENERGY-OFFS", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_TO_RAD": {"read_cmd": "X11MA-UIND1:TO-RAD-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_BO_RAD": {"read_cmd": "X11MA-UIND1:BO-RAD-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_TI_RAD": {"read_cmd": "X11MA-UIND1:TI-RAD-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_BI_RAD": {"read_cmd": "X11MA-UIND1:BI-RAD-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_TO_SHIFT": {"read_cmd": "X11MA-UIND1:TO-SHIFT-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_BO_SHIFT": {"read_cmd": "X11MA-UIND1:BO-SHIFT-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_TI_SHIFT": {"read_cmd": "X11MA-UIND1:TI-SHIFT-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_BI_SHIFT": {"read_cmd": "X11MA-UIND1:BI-SHIFT-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_X_POS": {"read_cmd": "X11MA-UIND1-MOVER:X-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_Y_POS": {"read_cmd": "X11MA-UIND1-MOVER:Y-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_YAW": {"read_cmd": "X11MA-UIND1-MOVER:YAW-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID1_PITCH": {"read_cmd": "X11MA-UIND1-MOVER:PITCH-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false}
},
"ID2": {
"ID2_energy": {"read_cmd": "X11MA-UIND2:ENERGY-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID2_mode": {"read_cmd": "X11MA-UIND2:MODE", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
@@ -28,10 +46,14 @@
"ID2_BO_RAD": {"read_cmd": "X11MA-UIND2:BO-RAD-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID2_TI_RAD": {"read_cmd": "X11MA-UIND2:TI-RAD-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID2_BI_RAD": {"read_cmd": "X11MA-UIND2:BI-RAD-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID2_TO_SHIFT": {"read_cmd": "X11MA-UIND2:TO-SHIFT-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID2_TO_SHIFT": {"read_cmd": "X11MA-UIND2:TO-SHIFT-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID2_BO_SHIFT": {"read_cmd": "X11MA-UIND2:BO-SHIFT-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID2_TI_SHIFT": {"read_cmd": "X11MA-UIND2:TI-SHIFT-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID2_BI_SHIFT": {"read_cmd": "X11MA-UIND2:BI-SHIFT-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false}
"ID2_BI_SHIFT": {"read_cmd": "X11MA-UIND2:BI-SHIFT-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID2_X_POS": {"read_cmd": "X11MA-UIND2-MOVER:X-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID2_Y_POS": {"read_cmd": "X11MA-UIND2-MOVER:Y-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID2_YAW": {"read_cmd": "X11MA-UIND2-MOVER:YAW-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
"ID2_PITCH": {"read_cmd": "X11MA-UIND2-MOVER:PITCH-RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false}
},
"XBPM1": {
"XBPM1_X_motor": {"read_cmd": "X11MA-FE-XBPM1:TRX.RBV", "write_cmd": "None", "tolerance": 0.0001, "restorable": false},
@@ -105,13 +127,12 @@
"FMU": {
"FMU_X": {"read_cmd": "X11MA-OP-FM:X.RBV", "write_cmd": "X11MA-OP-FM:X", "tolerance": 0.001, "restorable": false},
"FMU_Y": {"read_cmd": "X11MA-OP-FM:Y.RBV", "write_cmd": "X11MA-OP-FM:Y", "tolerance": 0.001, "restorable": false},
"FMU_PITCH": {"read_cmd": "X11MA-OP-FM:PITCH.RBV", "write_cmd": "X11MA-OP-FM:PITCH", "tolerance": 0.001, "restorable": false},
"FMU_ROLL": {"read_cmd": "X11MA-OP-FM:ROLL.RBV", "write_cmd": "X11MA-OP-FM:ROLL", "tolerance": 0.001, "restorable": false},
"FMU_YAW": {"read_cmd": "X11MA-OP-FM:YAW.RBV", "write_cmd": "X11MA-OP-FM:YAW", "tolerance": 0.001, "restorable": false},
"FMU_ROTX": {"read_cmd": "X11MA-OP-FM:ROTX.RBV", "write_cmd": "X11MA-OP-FM:ROTX", "tolerance": 0.001, "restorable": false},
"FMU_ROTZ": {"read_cmd": "X11MA-OP-FM:ROTZ.RBV", "write_cmd": "X11MA-OP-FM:ROTZ", "tolerance": 0.001, "restorable": false},
"FMU_TRYD": {"read_cmd": "X11MA-OP-FM:TRYD.RBV", "write_cmd": "X11MA-OP-FM:TRYD", "tolerance": 0.001, "restorable": true},
"FMU_TRYUR": {"read_cmd": "X11MA-OP-FM:TRYUR.RBV", "write_cmd": "X11MA-OP-FM:TRYUR", "tolerance": 0.001, "restorable": true},
"FMU_TRYUR": {"read_cmd": "X11MA-OP-FM:TRYUR.RBV", "write_cmd": "X11MA-OP-FM:TRYUR", "tolerance": 0.001, "restorable": true},
"FMU_TRYUW": {"read_cmd": "X11MA-OP-FM:TRYUW.RBV", "write_cmd": "X11MA-OP-FM:TRYUW", "tolerance": 0.001, "restorable": true},
"FMU_TRX": {"read_cmd": "X11MA-OP-FM:TRX.RBV", "write_cmd": "X11MA-OP-FM:TRX", "tolerance": 0.001, "restorable": true},
"FMU_TRX": {"read_cmd": "X11MA-OP-FM:TRX.RBV", "write_cmd": "X11MA-OP-FM:TRX", "tolerance": 0.001, "restorable": true},
"FMU_ROTY": {"read_cmd": "X11MA-OP-FM:ROTY.RBV", "write_cmd": "X11MA-OP-FM:ROTY", "tolerance": 0.001, "restorable": true}
},
"ESLIT": {
@@ -125,13 +146,12 @@
"RMU1": {
"RMU1_X": {"read_cmd": "X11MA-OP-RM1:X.RBV", "write_cmd": "X11MA-OP-RM1:X", "tolerance": 0.001, "restorable": false},
"RMU1_Y": {"read_cmd": "X11MA-OP-RM1:Y.RBV", "write_cmd": "X11MA-OP-RM1:Y", "tolerance": 0.001, "restorable": false},
"RMU1_PITCH": {"read_cmd": "X11MA-OP-RM1:PITCH.RBV", "write_cmd": "X11MA-OP-RM1:PITCH", "tolerance": 0.001, "restorable": false},
"RMU1_ROLL": {"read_cmd": "X11MA-OP-RM1:ROLL.RBV", "write_cmd": "X11MA-OP-RM1:ROLL", "tolerance": 0.001, "restorable": false},
"RMU1_YAW": {"read_cmd": "X11MA-OP-RM1:YAW.RBV", "write_cmd": "X11MA-OP-RM1:YAW", "tolerance": 0.001, "restorable": false},
"RMU1_ROTX": {"read_cmd": "X11MA-OP-RM1:ROTX.RBV", "write_cmd": "X11MA-OP-RM1:ROTX", "tolerance": 0.001, "restorable": false},
"RMU1_ROTZ": {"read_cmd": "X11MA-OP-RM1:ROTZ.RBV", "write_cmd": "X11MA-OP-RM1:ROTZ", "tolerance": 0.001, "restorable": false},
"RMU1_TRYU": {"read_cmd": "X11MA-OP-RM1:TRYU.RBV", "write_cmd": "X11MA-OP-RM1:TRYU", "tolerance": 0.001, "restorable": true},
"RMU1_TRYDW": {"read_cmd": "X11MA-OP-RM1:TRYDW.RBV", "write_cmd": "X11MA-OP-RM1:TRYDW", "tolerance": 0.001, "restorable": true},
"RMU1_TRYDW": {"read_cmd": "X11MA-OP-RM1:TRYDW.RBV", "write_cmd": "X11MA-OP-RM1:TRYDW", "tolerance": 0.001, "restorable": true},
"RMU1_TRYDR": {"read_cmd": "X11MA-OP-RM1:TRYDR.RBV", "write_cmd": "X11MA-OP-RM1:TRYDR", "tolerance": 0.001, "restorable": true},
"RMU1_TRX": {"read_cmd": "X11MA-OP-RM1:TRX.RBV", "write_cmd": "X11MA-OP-RM1:TRX", "tolerance": 0.001, "restorable": true},
"RMU1_TRX": {"read_cmd": "X11MA-OP-RM1:TRX.RBV", "write_cmd": "X11MA-OP-RM1:TRX", "tolerance": 0.001, "restorable": true},
"RMU1_ROTY": {"read_cmd": "X11MA-OP-RM1:ROTY.RBV", "write_cmd": "X11MA-OP-RM1:ROTY", "tolerance": 0.001, "restorable": true}
},
"PEEM_Girder": {