from slic.core.adjustable import PVAdjustable, PVEnumAdjustable from slic.core.device 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_info = dict( # standa = standa, # exp_delay = exp_delay, # laser_delay = laser_delay, # LXT = lxt, FELrepRate = PVAdjustable("SWISSFEL-STATUS:Bunch-2-Appl-Freq-RB", internal=True), # PaddleChamber1MaskX = PVAdjustable("SATES21-XSMA166:MOT7:MOTRBV", internal=True), # PaddleChamber1MaskY = PVAdjustable("SATES21-XSMA166:MOT8:MOTRBV", internal=True), # PaddleChamber1FrameX = PVAdjustable("SATES21-XSMA166:MOT4:MOTRBV", internal=True), # PaddleChamber1YagY = PVAdjustable("SATES21-XSMA166:MOT6:MOTRBV", internal=True), # PaddleChamber1z = PVAdjustable("SATES21-XSMA166:MOT3:MOTRBV", internal=True), # PaddleChamber1YagX = PVAdjustable("SLAAT21-LMOT-M711:MOT.RBV", internal=True), # AttenuationLaser = PVAdjustable("SLAAT21-LMOT-M702:MOT.RBV", internal=True), # Timedelay = PVAdjustable("SLAAT01-LTIM-PDLY:DELAY", 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), # manip2needleESy = PVAdjustable("SATES20-MANIP2:MOTOR_2.VAL", internal=True), # manip3ESy = PVAdjustable("SATES20-MANIP3:MOTOR_2.VAL", internal=True), # manip7ESy = PVAdjustable("SATES20-MANIP7: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), # Manip1_x = PVAdjustable("SATES20-MANIP1:MOTOR_1.RBV", internal = True), # Manip1_y = PVAdjustable("SATES20-MANIP1:MOTOR_2.RBV", internal = True), # Manip1_z = PVAdjustable("SATES20-MANIP1:MOTOR_3.RBV", internal = True), # Manip4_x = PVAdjustable("SATES20-MANIP4:MOTOR_1.RBV", internal = True), # Manip4_y = PVAdjustable("SATES20-MANIP4:MOTOR_3.RBV", internal = True), # pressChamb1 = PVAdjustable("SATES21-VM-VT1010:PRESSURE", internal=True), # pressJF = PVAdjustable("SATES21-VM-VT1020:PRESSURE", internal=True), # pressChamb2 = PVAdjustable("SATES21-VM-VT2020:PRESSURE", internal=True), # pressChamb3 = PVAdjustable("SATES21-VM-VT3010:PRESSURE", internal=True), # pressSmallChamber = PVAdjustable("SATES21-VM-VT3030:PRESSURE", internal=True), # pressChamb3GasCell = PVAdjustable("SATES21-VM-VT3040:PRESSURE", internal=True), # standaChamber3 = PVAdjustable("SLAAT21-LMOT-M707:MOT.RBV", internal=True), # LshapeRakX = PVAdjustable("SATES24-XSMA171:MOT4:MOTRBV", internal=True), # LshapeRakY = PVAdjustable("SATES24-XSMA171:MOT5:MOTRBV", internal=True), # LshapeRakZ = PVAdjustable("SATES24-XSMA171:MOT6:MOTRBV", internal=True), # LshapeDoorX = PVAdjustable("SATES24-XSMA171:MOT7:MOTRBV", internal=True), # LshapeDoorY = PVAdjustable("SATES24-XSMA171:MOT8:MOTRBV", internal=True), # YagX = PVAdjustable("SATES24-XSMA171:MOT9:MOTRBV", internal=True), # YagY = PVAdjustable("SATES24-XSMA171:MOT10:MOTRBV", internal=True), timeStamp = PVAdjustable("SF-CPCL-TIM:TIME", internal=True), photonEnergy = PVAdjustable("SATUN:FELPHOTENE", internal=True), pulse_energy = PVAdjustable("SATFE10-PEPG046:PHOTON-ENERGY-PER-PULSE-AVG", internal=True), # pressure_sample = PVAdjustable("SATES21-VM-VT2020:PRESSURE", internal=True), # pressure_hemi = PVAdjustable("SATES21-VM-VT2010:PRESSURE", internal=True), # Manip2_y = PVAdjustable("SATES20-MANIP2:MOTOR_2.RBV", internal=True), # PressureGasAtt= PVAdjustable("ATFE10-VMCP054-A050:PRESSURE", internal=True), # VoltsSetGasAtt= PVAdjustable("SATFE10-VVRE054-A010:SET_VAL-UI", internal=True), # chicane_current_rb = PVAdjustable("SATUN14-MBND100:I-READ", internal=True), # chicane_current_sv = PVAdjustable("SATUN14-MBND100:I-SET", internal=True), pulse_energy_attgas = PVStringAdjustable("SATFE10-OGAT053:pulseenergy", internal=True), transmission_attgas = PVStringAdjustable("SATFE10-OGAT053:transmission", internal=True), att64 = PVStringAdjustable("SATFE10-OATT064:MOT2TRANS.VALD", internal=True), att65 = PVStringAdjustable("SATFE10-OATT065:MOT2TRANS.VALD", internal=True), # TOF_ext_neg = PVAdjustable("SATES21-XSHV166:V-0-S-CH13", internal=True), # TOF_Behlke_lessneg = PVAdjustable("SATES21-XSHV166:V-0-S-CH14", internal=True), # TOF_MCP_front = PVAdjustable("SATES21-XSHV166:V-0-S-CH15", internal=True), # TOF_ext_pos = PVAdjustable("SATES21-XSHV166:V-1-S-CH13", internal=True), # TOF_rep_pos = PVAdjustable("SATES21-XSHV166:V-1-S-CH14", internal=True), # TOF_unused = PVAdjustable("SATES21-XSHV166:V-1-S-CH15", internal=True), # ToFMCPRupp = PVAdjustable("SATES21-XSHV166:V-2-S-CH3", internal=True), # ToFrepelerRupp = PVAdjustable("SATES21-XSHV166:V-3-S-CH3", internal=True), # trigger14Delay = PVAdjustable("SATES20-CVME-EVR0:Pul14-Delay-RB", internal=True), # pressSkimmer = PVAdjustable("SATES21-VM-VT1030:PRESSURE", internal=True), # SourceTemp = PVAdjustable("SLAAT21-LENG-LAKE1:GET_TEMP", internal=True), # skimmerRuppUpstream = PVAdjustable("SATES22-XSMA168:MOT1:MOTRBV", internal=True), # skimmerRuppDownstream = PVAdjustable("SATES22-XSMA168:MOT2:MOTRBV", internal=True), # pressattn40 = PVAdjustable("SATFE10-VMFR054-A050:PRESSURE", internal=True), # inc_mirror_tip = PVAdjustable("SATES20-XSMA165:MOT16:MOTRBV", internal=True),### # # inc_mirror_tip = PVAdjustable("SATES20-XSMA165:MOT16:MOTRBV", internal=True), # inc_mirror_tilt = PVAdjustable("SATES20-XSMA165:MOT17:MOTRBV", internal=True), # mic_linear = PVAdjustable("SATES21-XSMA166:MOT2:MOTRBV", internal=True), # mic_paddle_y = PVAdjustable("SATES21-XSMA166:MOT4:MOTRBV", internal=True), # mic_paddle_x = PVAdjustable("SATES21-XSMA166:MOT5:MOTRBV", internal=True), # mic_paddle_z = PVAdjustable("SATES21-XSMA166:MOT6:MOTRBV", internal=True), # zigzag_y = PVAdjustable("SATES21-XSMA166:MOT7:MOTRBV", internal=True), # zigzag_x = PVAdjustable("SATES21-XSMA166:MOT8:MOTRBV", internal=True), # zigzag_z = PVAdjustable("SATES21-XSMA166:MOT9:MOTRBV", internal=True), # slit_downstream_top = PVAdjustable("SATES21-XSMA166:MOT10:MOTRBV", internal=True), # slit_downstream_x = PVAdjustable("SATES21-XSMA166:MOT11:MOTRBV", internal=True), # slit_downstream_bottom = PVAdjustable("SATES21-XSMA166:MOT12:MOTRBV", internal=True), # slit_front_xneg = PVAdjustable("SATES21-XSMA166:MOT13:MOTRBV", internal=True), # slit_front_xpos = PVAdjustable("SATES21-XSMA166:MOT14:MOTRBV", internal=True), # Holography beamtime sample_stage_x = PVAdjustable("SATES23-XSMA169:MOT7:MOTRBV", internal=True), sample_stage_y = PVAdjustable("SATES23-XSMA169:MOT8:MOTRBV", internal=True), sample_stage_z = PVAdjustable("SATES23-XSMA169:MOT9:MOTRBV", internal=True), diode_x = PVAdjustable("SATES23-XSMA169:MOT10:MOTRBV", internal=True), diode_y = PVAdjustable("SATES23-XSMA169:MOT11:MOTRBV", internal=True), diode_z = PVAdjustable("SATES23-XSMA169:MOT12:MOTRBV", internal=True), beam_block = PVAdjustable("SATES23-XSMA169:MOT6:MOTRBV", internal=True), pressChamb3 = PVAdjustable("SATES21-VM-VT3010:PRESSURE", internal=True), pressChamb3bis = PVAdjustable("SATES21-VM-VT3012:PRESSURE", internal=True), **undulator_info ) overview = SimpleDevice("Maloja Overview", **overview_info) spreadsheet_line = [ "FEL", "UV", "timeStamp", "fileName", "Comments", # "timeStamp", "name", "Comments", # "pressJF", # "pressattn40", # "SourceTemp", # "skimmerRuppUpstream", # "skimmerRuppDownstream", "Manip1_x", "Manip1_y", "Manip1_z", "Manip4_x", "Manip4_y", "type", "core size AAC", "core size measured", "core size estimated", "coating thickness AAC", "coating thickness expected", "uppernozzleskimmer", "lowernozzleskimmer", "entrancepressure", # "trigger14Delay", # "Gas cell / TOF","Sample","shots", "Two colors (Y/N)", "energy1", # "polarisation10", "energy2", # "polarisation19", "photonEnergy", "pulse_energy", "pulse_energy_attgas", "transmission_attgas", "FELrepRate", "AttenuationLaser", "Timedelay", # "VoltsSetGasAtt", # "PressureGasAtt", "pressChamb1", "pressJF", "anotherpressure", "andanotherpressure","anotherpressure2", "andanotherpressure2", # "PaddleChamber1MaskX", # "PaddleChamber1MaskY", # "PaddleChamber1FrameX", # "PaddleChamber1YagX", # "PaddleChamber1YagY", # "pressChamb2", "Gas", "Slit", "Ek", "Ep", "mode", # "manip2needleESy", # "manip7ESy", # "pressChamb3", # "pressChamb3GasCell", # "ToFV1p", # "ToFV2p", # "ToFV3p", # "ToFV1m", # "ToFV2m", # "ToFV3m", # "pressSmallChamber", # "LshapeRakX", # "LshapeRakY", # "LshapeRakZ", # "LshapeDoorX", # "LshapeDoorY", # "YagX", # "YagY", "PhotonSpec Det", "PhotonSpec X", "PhotonSpec Y", "PhotonSpec order", "PhotonSpec slit", # "manip3ESy", # "chicane_current_rb", # "chicane_current_sv", "TOF_ext_neg", "TOF_Behlke_lessneg", "TOF_MCP_front", "TOF_ext_pos", "TOF_rep_pos", "TOF_unused", "att64", "att65", "inc_mirror_tip", "inc_mirror_tilt", "standaChamber3", "mic_linear", "mic_paddle_y", "mic_paddle_x", "mic_paddle_z", "zigzag_y", "zigzag_x", "zigzag_z", "slit_downstream_top", "slit_downstream_x", "slit_downstream_bottom", "slit_front_xneg", "slit_front_xpos", "energy6", "energy7", "energy8", "energy9", "energy10", "energy11", "energy12", "energy13", "energy14", "energy15", "energy16", "energy17", "energy18", "energy19", "energy20", "energy21", "energy22", ] spreadsheet_info = {n: v for n, v in overview_info.items() if n in spreadsheet_line} @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)