moved spreadsheet code to separate file; cleaned up undulator construction
This commit is contained in:
172
maloja.py
172
maloja.py
@ -7,7 +7,7 @@ from tqdm import trange
|
|||||||
from epics import PV
|
from epics import PV
|
||||||
|
|
||||||
from slic.gui import GUI
|
from slic.gui import GUI
|
||||||
from slic.core.adjustable import Adjustable, PVAdjustable, PVEnumAdjustable, DummyAdjustable
|
from slic.core.adjustable import Adjustable, PVAdjustable, DummyAdjustable
|
||||||
from slic.core.acquisition import SFAcquisition#, PVAcquisition
|
from slic.core.acquisition import SFAcquisition#, PVAcquisition
|
||||||
from slic.core.condition import PVCondition
|
from slic.core.condition import PVCondition
|
||||||
from slic.core.scanner import Scanner
|
from slic.core.scanner import Scanner
|
||||||
@ -24,6 +24,7 @@ from devices.undulator import Undulators, TwoColorChicane, Phases
|
|||||||
from devices.magnet import Magnet
|
from devices.magnet import Magnet
|
||||||
|
|
||||||
from channels import channels, pvs, detectors
|
from channels import channels, pvs, detectors
|
||||||
|
from spreadsheet import overview
|
||||||
import colors
|
import colors
|
||||||
|
|
||||||
|
|
||||||
@ -41,43 +42,18 @@ source_y = Motor("SATES20-MANIP1:MOTOR_1", name="Source manipulator y")
|
|||||||
source_x = Motor("SATES20-MANIP1:MOTOR_2", name="Source manipulator x")
|
source_x = Motor("SATES20-MANIP1:MOTOR_2", name="Source manipulator x")
|
||||||
|
|
||||||
att = Attenuator("SATFE10-OATT064")
|
att = Attenuator("SATFE10-OATT064")
|
||||||
|
chic_delay = TwoColorChicane("zz Two Color Chicane")
|
||||||
|
|
||||||
#n_und_ref = 6
|
|
||||||
n_und_ref = None
|
|
||||||
n_unds = [
|
|
||||||
6, 7, 8, 9, 10, 11, 12, 13, # 14 is the CHIC
|
|
||||||
15, 16, 17, 18, 19, 20, 21, 22
|
|
||||||
]
|
|
||||||
chic_fudge_offset = 0
|
|
||||||
und = Undulators(n_unds, n_und_ref, chic_fudge_offset, adjust_chic=False, name="z Athos Undulators")
|
|
||||||
|
|
||||||
und1 = Undulators([6, 7, 8, 9, 10, 11, 12, 13], n_und_ref=10, adjust_chic=False, name="z Athos Undulators 6-13")
|
und = Undulators(name="z Athos Undulators (both colors)")
|
||||||
und2 = Undulators([15, 16, 17, 18, 19, 20, 21, 22], n_und_ref=19, adjust_chic=False, name="z Athos Undulators 15-22")
|
und1 = Undulators([6, 7, 8, 9, 10, 11, 12, 13], n_und_ref=10, name="z Athos Undulators 6-13 (first color)")
|
||||||
|
und2 = Undulators([15, 16, 17, 18, 19, 20, 21, 22], n_und_ref=19, name="z Athos Undulators 15-22 (second color)")
|
||||||
|
|
||||||
und.set_limits(390, 1000)
|
und.set_limits(390, 1000)
|
||||||
und1.set_limits(390, 1000)
|
und1.set_limits(390, 1000)
|
||||||
und2.set_limits(390, 1000)
|
und2.set_limits(390, 1000)
|
||||||
|
|
||||||
|
|
||||||
chic_delay = TwoColorChicane("zz Two Color Chicane")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
magn = PV("SATUN14-MBND100:CYCLE")
|
|
||||||
|
|
||||||
@as_shortcut
|
|
||||||
def cycle_magnet():
|
|
||||||
magn.put(1, wait=True)
|
|
||||||
for _ in trange(250):
|
|
||||||
sleep(1)
|
|
||||||
chic_delay.set(1).wait()
|
|
||||||
sleep(1)
|
|
||||||
chic_delay.set(5).wait()
|
|
||||||
sleep(1)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
xota_z_trans = Motor("SATES21-XOTA166:W_Z", name="Table 1: Z coordinated")
|
xota_z_trans = Motor("SATES21-XOTA166:W_Z", name="Table 1: Z coordinated")
|
||||||
#xota_hori_z = Motor("SATES21-XOTA166:MOTOR_Z", name="Table 1: Z raw")
|
#xota_hori_z = Motor("SATES21-XOTA166:MOTOR_Z", name="Table 1: Z raw")
|
||||||
|
|
||||||
@ -88,7 +64,6 @@ mot1_z = SmarActAxis("SATES21-XSMA166:MOT6", name="Table 1: sma Z")
|
|||||||
mot3_z = SmarActAxis("SATES23-XSMA169:MOT3", name="Table 3: sma Z")
|
mot3_z = SmarActAxis("SATES23-XSMA169:MOT3", name="Table 3: sma Z")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
standa = Motor("SLAAT21-LMOT-M707:MOT", name="Standa Motor")
|
standa = Motor("SLAAT21-LMOT-M707:MOT", name="Standa Motor")
|
||||||
|
|
||||||
mark_microscope = Marker(standa, 141.344, "Microscope")
|
mark_microscope = Marker(standa, 141.344, "Microscope")
|
||||||
@ -96,124 +71,26 @@ mark_gascell = Marker(standa, 88.334, "Gas Cell")
|
|||||||
mark_tof = Marker(standa, 28.330, "TOF")
|
mark_tof = Marker(standa, 28.330, "TOF")
|
||||||
|
|
||||||
|
|
||||||
|
magn = PV("SATUN14-MBND100:CYCLE")
|
||||||
|
|
||||||
|
|
||||||
class PVStringAdjustable(PVAdjustable):
|
|
||||||
def get_current_value(self):
|
|
||||||
return self.pvs.readback.get(as_string=True).strip()
|
|
||||||
|
|
||||||
|
|
||||||
undulator_info = {}
|
|
||||||
for i in n_unds:
|
|
||||||
undulator_info[f"energy{i}"] = PVAdjustable(f"SATUN{i:02}-UIND030:FELPHOTENE", internal=True)
|
|
||||||
undulator_info[f"polarisation{i}"] = PVEnumAdjustable(f"SATUN{i:02}-UIND030:POL-SET", internal=True)
|
|
||||||
|
|
||||||
|
|
||||||
overview = SimpleDevice("Maloja Overview",
|
|
||||||
standa = standa,
|
|
||||||
exp_delay = exp_delay,
|
|
||||||
laser_delay = laser_delay,
|
|
||||||
LXT = lxt,
|
|
||||||
|
|
||||||
FELrepRate = PVAdjustable("SWISSFEL-STATUS:Bunch-2-Appl-Freq-RB", internal=True),
|
|
||||||
PaddleChamber1x = PVAdjustable("SATES21-XSMA166:MOT1:MOTRBV", internal=True),
|
|
||||||
PaddleChamber1y = PVAdjustable("SATES21-XSMA166:MOT2:MOTRBV", internal=True),
|
|
||||||
PaddleChamber1z = PVAdjustable("SATES21-XSMA166:MOT3:MOTRBV", internal=True),
|
|
||||||
SmartActTTx = PVAdjustable("SATES22-XSMA168:MOT10:MOTRBV", internal=True),
|
|
||||||
SmartActTTy = PVAdjustable("SATES22-XSMA168:MOT11:MOTRBV", internal=True),
|
|
||||||
SmartActTTz = PVAdjustable("SATES22-XSMA168:MOT12:MOTRBV", internal=True),
|
|
||||||
ToFV1m = PVAdjustable("SATES21-XSHV166:V-1-S-CH0", internal=True),
|
|
||||||
ToFV1p = PVAdjustable("SATES21-XSHV166:V-0-S-CH0", internal=True),
|
|
||||||
ToFV2m = PVAdjustable("SATES21-XSHV166:V-1-S-CH1", internal=True),
|
|
||||||
ToFV2p = PVAdjustable("SATES21-XSHV166:V-0-S-CH1", internal=True),
|
|
||||||
ToFV3m = PVAdjustable("SATES21-XSHV166:V-1-S-CH2", internal=True),
|
|
||||||
ToFV3p = PVAdjustable("SATES21-XSHV166:V-0-S-CH2", internal=True),
|
|
||||||
# energy1 = PVAdjustable("SATUN06-UIND030:FELPHOTENE", internal=True),
|
|
||||||
# energy2 = PVAdjustable("SATUN15-UIND030:FELPHOTENE", internal=True),
|
|
||||||
manip2needleESx = PVAdjustable("SATES20-MANIP2:MOTOR_1.VAL", internal=True),
|
|
||||||
manip2needleESy = PVAdjustable("SATES20-MANIP2:MOTOR_2.VAL", internal=True),
|
|
||||||
manip2needleESz = PVAdjustable("SATES20-MANIP2:MOTOR_3.VAL", internal=True),
|
|
||||||
# pol1 = PVEnumAdjustable("SATUN06-UIND030:POL-SET", internal=True),
|
|
||||||
# pol2 = PVEnumAdjustable("SATUN15-UIND030:POL-SET", internal=True),
|
|
||||||
pressChamb2 = PVAdjustable("SATES21-VM-VT2020:PRESSURE", internal=True),
|
|
||||||
pressChamb3 = PVAdjustable("SATES21-VM-VT3010:PRESSURE", internal=True),
|
|
||||||
pressChamb3GasCell = PVAdjustable("SATES21-VM-VT3030:PRESSURE", internal=True),
|
|
||||||
pulse_energy = PVAdjustable("SATFE10-PEPG046:PHOTON-ENERGY-PER-PULSE-AVG", internal=True),
|
|
||||||
timeStamp = PVAdjustable("SF-CPCL-TIM:TIME", internal=True),
|
|
||||||
|
|
||||||
chicane_current_rb = PVAdjustable("SATUN14-MBND100:I-READ", internal=True),
|
|
||||||
chicane_current_sv = PVAdjustable("SATUN14-MBND100:I-SET", internal=True),
|
|
||||||
|
|
||||||
att64 = PVStringAdjustable("SATFE10-OATT064:MOT2TRANS.VALD", internal=True),
|
|
||||||
att65 = PVStringAdjustable("SATFE10-OATT065:MOT2TRANS.VALD", internal=True),
|
|
||||||
|
|
||||||
**undulator_info
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
spreadsheet_line = [
|
|
||||||
"timeStamp", "File name",
|
|
||||||
"Gas cell / TOF",
|
|
||||||
"standa","Sample",
|
|
||||||
"pressChamb3",
|
|
||||||
"pressChamb3GasCell", "Static/scan", "Scan parameter", "ScanStep", "shots", "Comments", "Two colors (Y/N)", "energy1",
|
|
||||||
"polarisation10", "energy2",
|
|
||||||
"polarisation19",
|
|
||||||
"pulse_energy",
|
|
||||||
"chicane_current_rb",
|
|
||||||
"FELrepRate",
|
|
||||||
"att64",
|
|
||||||
"att65", "Grating", "order", "Slit", "Detector position X", "Detector position Y", "Detector position (angle)","Ek", "Ep", "Slit", "Mode",
|
|
||||||
"pressChamb2", "Gas",
|
|
||||||
"manip2needleESx",
|
|
||||||
"manip2needleESy",
|
|
||||||
"manip2needleESz",
|
|
||||||
"ToFV1p",
|
|
||||||
"ToFV2p",
|
|
||||||
"ToFV3p",
|
|
||||||
"ToFV1m",
|
|
||||||
"ToFV2m",
|
|
||||||
"ToFV3m",
|
|
||||||
"PaddleChamber1x",
|
|
||||||
"PaddleChamber1y",
|
|
||||||
"PaddleChamber1z",
|
|
||||||
"energy6",
|
|
||||||
"energy7",
|
|
||||||
"energy8",
|
|
||||||
"energy9",
|
|
||||||
"energy10",
|
|
||||||
"energy11",
|
|
||||||
"energy12",
|
|
||||||
"energy13",
|
|
||||||
"energy14",
|
|
||||||
"energy15",
|
|
||||||
"energy16",
|
|
||||||
"energy17",
|
|
||||||
"energy18",
|
|
||||||
"energy19",
|
|
||||||
"energy20",
|
|
||||||
"energy21",
|
|
||||||
"energy22",
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@as_shortcut
|
@as_shortcut
|
||||||
def print_overview():
|
def cycle_magnet():
|
||||||
print(overview)
|
magn.put(1, wait=True)
|
||||||
|
for _ in trange(250):
|
||||||
|
sleep(1)
|
||||||
|
# set the current to 1 and 5 consecutively,
|
||||||
|
# since the results after the first step always looks strange
|
||||||
|
chic_delay.set(1).wait()
|
||||||
|
sleep(1)
|
||||||
|
chic_delay.set(5).wait()
|
||||||
|
sleep(1)
|
||||||
|
|
||||||
@as_shortcut
|
|
||||||
def print_line_for_spreadsheet():
|
# add some more devices to the overview
|
||||||
ov = overview.__dict__
|
overview.standa = standa
|
||||||
def get(i):
|
overview.exp_delay = exp_delay
|
||||||
if i in ov:
|
overview.laser_delay = laser_delay
|
||||||
return str(ov[i].get())
|
overview.LXT = lxt
|
||||||
return ""
|
|
||||||
res = [get(i) for i in spreadsheet_line]
|
|
||||||
res = ",".join(res)
|
|
||||||
print(res)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -246,6 +123,3 @@ gui = GUI(scan, show_goto=True, show_spec=True)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
130
spreadsheet.py
Normal file
130
spreadsheet.py
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
from slic.core.adjustable import PVAdjustable, PVEnumAdjustable
|
||||||
|
from slic.devices.simpledevice import SimpleDevice
|
||||||
|
from slic.utils import as_shortcut
|
||||||
|
|
||||||
|
|
||||||
|
class PVStringAdjustable(PVAdjustable):
|
||||||
|
def get_current_value(self):
|
||||||
|
return self.pvs.readback.get(as_string=True).strip()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
n_unds = [
|
||||||
|
6, 7, 8, 9, 10, 11, 12, 13, # 14 is the CHIC
|
||||||
|
15, 16, 17, 18, 19, 20, 21, 22
|
||||||
|
]
|
||||||
|
|
||||||
|
undulator_info = {}
|
||||||
|
for i in n_unds:
|
||||||
|
undulator_info[f"energy{i}"] = PVAdjustable(f"SATUN{i:02}-UIND030:FELPHOTENE", internal=True)
|
||||||
|
undulator_info[f"polarisation{i}"] = PVEnumAdjustable(f"SATUN{i:02}-UIND030:POL-SET", internal=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
overview = SimpleDevice("Maloja Overview",
|
||||||
|
# standa = standa,
|
||||||
|
# exp_delay = exp_delay,
|
||||||
|
# laser_delay = laser_delay,
|
||||||
|
# LXT = lxt,
|
||||||
|
|
||||||
|
FELrepRate = PVAdjustable("SWISSFEL-STATUS:Bunch-2-Appl-Freq-RB", internal=True),
|
||||||
|
PaddleChamber1x = PVAdjustable("SATES21-XSMA166:MOT1:MOTRBV", internal=True),
|
||||||
|
PaddleChamber1y = PVAdjustable("SATES21-XSMA166:MOT2:MOTRBV", internal=True),
|
||||||
|
PaddleChamber1z = PVAdjustable("SATES21-XSMA166:MOT3:MOTRBV", internal=True),
|
||||||
|
SmartActTTx = PVAdjustable("SATES22-XSMA168:MOT10:MOTRBV", internal=True),
|
||||||
|
SmartActTTy = PVAdjustable("SATES22-XSMA168:MOT11:MOTRBV", internal=True),
|
||||||
|
SmartActTTz = PVAdjustable("SATES22-XSMA168:MOT12:MOTRBV", internal=True),
|
||||||
|
ToFV1m = PVAdjustable("SATES21-XSHV166:V-1-S-CH0", internal=True),
|
||||||
|
ToFV1p = PVAdjustable("SATES21-XSHV166:V-0-S-CH0", internal=True),
|
||||||
|
ToFV2m = PVAdjustable("SATES21-XSHV166:V-1-S-CH1", internal=True),
|
||||||
|
ToFV2p = PVAdjustable("SATES21-XSHV166:V-0-S-CH1", internal=True),
|
||||||
|
ToFV3m = PVAdjustable("SATES21-XSHV166:V-1-S-CH2", internal=True),
|
||||||
|
ToFV3p = PVAdjustable("SATES21-XSHV166:V-0-S-CH2", internal=True),
|
||||||
|
# energy1 = PVAdjustable("SATUN06-UIND030:FELPHOTENE", internal=True),
|
||||||
|
# energy2 = PVAdjustable("SATUN15-UIND030:FELPHOTENE", internal=True),
|
||||||
|
manip2needleESx = PVAdjustable("SATES20-MANIP2:MOTOR_1.VAL", internal=True),
|
||||||
|
manip2needleESy = PVAdjustable("SATES20-MANIP2:MOTOR_2.VAL", internal=True),
|
||||||
|
manip2needleESz = PVAdjustable("SATES20-MANIP2:MOTOR_3.VAL", internal=True),
|
||||||
|
# pol1 = PVEnumAdjustable("SATUN06-UIND030:POL-SET", internal=True),
|
||||||
|
# pol2 = PVEnumAdjustable("SATUN15-UIND030:POL-SET", internal=True),
|
||||||
|
pressChamb2 = PVAdjustable("SATES21-VM-VT2020:PRESSURE", internal=True),
|
||||||
|
pressChamb3 = PVAdjustable("SATES21-VM-VT3010:PRESSURE", internal=True),
|
||||||
|
pressChamb3GasCell = PVAdjustable("SATES21-VM-VT3030:PRESSURE", internal=True),
|
||||||
|
pulse_energy = PVAdjustable("SATFE10-PEPG046:PHOTON-ENERGY-PER-PULSE-AVG", internal=True),
|
||||||
|
timeStamp = PVAdjustable("SF-CPCL-TIM:TIME", internal=True),
|
||||||
|
|
||||||
|
chicane_current_rb = PVAdjustable("SATUN14-MBND100:I-READ", internal=True),
|
||||||
|
chicane_current_sv = PVAdjustable("SATUN14-MBND100:I-SET", internal=True),
|
||||||
|
|
||||||
|
att64 = PVStringAdjustable("SATFE10-OATT064:MOT2TRANS.VALD", internal=True),
|
||||||
|
att65 = PVStringAdjustable("SATFE10-OATT065:MOT2TRANS.VALD", internal=True),
|
||||||
|
|
||||||
|
**undulator_info
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
spreadsheet_line = [
|
||||||
|
"timeStamp", "File name",
|
||||||
|
"Gas cell / TOF",
|
||||||
|
"standa","Sample",
|
||||||
|
"pressChamb3",
|
||||||
|
"pressChamb3GasCell", "Static/scan", "Scan parameter", "ScanStep", "shots", "Comments", "Two colors (Y/N)", "energy1",
|
||||||
|
"polarisation10", "energy2",
|
||||||
|
"polarisation19",
|
||||||
|
"pulse_energy",
|
||||||
|
"chicane_current_rb",
|
||||||
|
"FELrepRate",
|
||||||
|
"att64",
|
||||||
|
"att65", "Grating", "order", "Slit", "Detector position X", "Detector position Y", "Detector position (angle)","Ek", "Ep", "Slit", "Mode",
|
||||||
|
"pressChamb2", "Gas",
|
||||||
|
"manip2needleESx",
|
||||||
|
"manip2needleESy",
|
||||||
|
"manip2needleESz",
|
||||||
|
"ToFV1p",
|
||||||
|
"ToFV2p",
|
||||||
|
"ToFV3p",
|
||||||
|
"ToFV1m",
|
||||||
|
"ToFV2m",
|
||||||
|
"ToFV3m",
|
||||||
|
"PaddleChamber1x",
|
||||||
|
"PaddleChamber1y",
|
||||||
|
"PaddleChamber1z",
|
||||||
|
"energy6",
|
||||||
|
"energy7",
|
||||||
|
"energy8",
|
||||||
|
"energy9",
|
||||||
|
"energy10",
|
||||||
|
"energy11",
|
||||||
|
"energy12",
|
||||||
|
"energy13",
|
||||||
|
"energy14",
|
||||||
|
"energy15",
|
||||||
|
"energy16",
|
||||||
|
"energy17",
|
||||||
|
"energy18",
|
||||||
|
"energy19",
|
||||||
|
"energy20",
|
||||||
|
"energy21",
|
||||||
|
"energy22",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@as_shortcut
|
||||||
|
def print_overview():
|
||||||
|
print(overview)
|
||||||
|
|
||||||
|
@as_shortcut
|
||||||
|
def print_line_for_spreadsheet():
|
||||||
|
ov = overview.__dict__
|
||||||
|
def get(i):
|
||||||
|
if i in ov:
|
||||||
|
return str(ov[i].get())
|
||||||
|
return ""
|
||||||
|
res = [get(i) for i in spreadsheet_line]
|
||||||
|
res = ",".join(res)
|
||||||
|
print(res)
|
||||||
|
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user