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 = 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), 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), 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), 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), photonEnergy = PVAdjustable("SATUN:FELPHOTENE", 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), **undulator_info ) spreadsheet_line = [ "timeStamp", "File name", "run name", "comments", "static/scan", "start", "stop", "step size", "shots", "Temperature", "Transmission", "Attenuation", "Sample","backing pressure", "pressChamb1", "pressJF", "pressattn40", # "SourceTemp", # "skimmerRuppUpstream", # "skimmerRuppDownstream", # "Manip1_x", # "Manip1_y", # "Manip1_z", # "Manip4_x", # "Manip4_y", "type", "mobility density", "particle size", "flow rate", "n2", "co2", "voltage", "current", "upper skim","gap up", "lower skim", "gap low", # "trigger14Delay", # "ToFMCPRupp", # "ToFrepelerRupp", # "pressSkimmer", # "Gas cell / TOF", # "standa","Sample", # "pressChamb3", # "pressChamb3GasCell", "Static/scan", "Scan parameter", "ScanStep", "shots", "Comments", "Two colors (Y/N)", "energy1", # "polarisation10", "energy2", # "polarisation19", "photonEnergy", "pulse_energy", "FELrepRate", "att64", "att65", # "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)