Initial slic setup at cristallina

This commit is contained in:
2022-09-06 14:32:45 +02:00
parent c86c64e96e
commit 00fe2b6844
10 changed files with 1699 additions and 0 deletions

130
spreadsheet.py Normal file
View 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)