Channel list cleanup and split to bs_channels and pv_channels
This commit is contained in:
35
PMS.py
Normal file
35
PMS.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
from slic.utils.hastyepics import get_pv as PV
|
||||||
|
from slic.core.device.basedevice import BaseDevice
|
||||||
|
from slic.core.adjustable import PVAdjustable
|
||||||
|
from slic.utils import typename
|
||||||
|
|
||||||
|
CTA_sequence_start_PID = PV("SAR-CCTA-ESC:seq0Ctrl-StartedAt-O")
|
||||||
|
|
||||||
|
class PP_Shutter:
|
||||||
|
"""Pulsed magnet instrument classs"""
|
||||||
|
def __init__(self, ID,name="Pulsed Magnet Instrument"):
|
||||||
|
self.ID = ID
|
||||||
|
self.name = name or ID
|
||||||
|
pvname_setvalue = ID
|
||||||
|
pvname_readback = ID
|
||||||
|
self._adj = PVAdjustable(pvname_setvalue, pvname_readback, accuracy=0, internal=True)
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
self._adj.set_target_value(0).wait()
|
||||||
|
|
||||||
|
def open(self):
|
||||||
|
self._adj.set_target_value(1).wait()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def status(self):
|
||||||
|
state = self._adj.get_current_value()
|
||||||
|
if state is None:
|
||||||
|
return "not connected"
|
||||||
|
return "open" if state else "closed"
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
tn = typename(self)
|
||||||
|
return f"{tn} \"{self.name}\" is {self.status}"
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
__pycache__/alignment_laser.cpython-39.pyc
Normal file
BIN
__pycache__/alignment_laser.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
__pycache__/bs_channels.cpython-39.pyc
Normal file
BIN
__pycache__/bs_channels.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
__pycache__/cristallina.cpython-39.pyc
Normal file
BIN
__pycache__/cristallina.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
__pycache__/pv_channels.cpython-39.pyc
Normal file
BIN
__pycache__/pv_channels.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,6 +1,42 @@
|
|||||||
from attocube import AttocubeStage
|
from attocube import AttocubeStage
|
||||||
|
|
||||||
attocube = AttocubeStage("SARES30-ATTOCUBE",
|
attocube = AttocubeStage("SARES30-ATTOCUBE",
|
||||||
Z='SARES30-ATTOCUBE:A0',
|
Y='SARES30-ATTOCUBE:A2',
|
||||||
X='SARES30-ATTOCUBE:A1',
|
X='SARES30-ATTOCUBE:A1',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# def make_AttocubeStage(name):
|
||||||
|
# return AttocubeStage(name,
|
||||||
|
# Z=name+':A0',
|
||||||
|
# X=name+':A1',
|
||||||
|
# )
|
||||||
|
|
||||||
|
# class NamedAttocubeStage(AttocubeStage):
|
||||||
|
# def __init__(self, name):
|
||||||
|
# super().__init__(name,
|
||||||
|
# Z=name+':A0',
|
||||||
|
# X=name+':A1',
|
||||||
|
# )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# def set_target_value(self, value):
|
||||||
|
# t1 = self.stage1.set_target_value(value)
|
||||||
|
# t2 = self.stage2.set_target_value(-value)
|
||||||
|
# t1.wait()
|
||||||
|
# t2.wait()
|
||||||
|
|
||||||
|
# def is_moving(self):
|
||||||
|
# return any(self.stage1.is_moving(), self.stage2.is_moving())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# t = daq.aquire(...)
|
||||||
|
# for pos in []:
|
||||||
|
# mot.set_target_value(pos).wait()
|
||||||
|
# sleep()
|
||||||
|
# t.stop()
|
170
bs_channels.py
Normal file
170
bs_channels.py
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
# Channels to save at Cristallina endstation
|
||||||
|
|
||||||
|
##########################################################################################################
|
||||||
|
##########################################################################################################
|
||||||
|
##########################################################################################################
|
||||||
|
# BS channels
|
||||||
|
|
||||||
|
# TODO: JF settings regarding raw conversion, compression, etc.
|
||||||
|
detectors = [
|
||||||
|
"JF16T03V01",
|
||||||
|
]
|
||||||
|
|
||||||
|
camera_channels = [
|
||||||
|
# "SARES30-CAMS156-PCO1:FPICTURE", # PCO edge camera for the wavefront analysis (from Alvra)
|
||||||
|
# "SARES30-CAMS156-SMX-OAV:FPICTURE", # SwissMX OAV camera picture
|
||||||
|
# "SARES30-CAMS156-XE:FPICTURE", # X-ray eye
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Machine gas intensity monitor
|
||||||
|
channels_gas_monitor = [
|
||||||
|
"SARFE10-PBPG050:PHOTON-ENERGY-PER-PULSE-AVG",
|
||||||
|
# "SARFE10-PBPG050:SLOW-X",
|
||||||
|
# "SARFE10-PBPG050:SLOW-Y",
|
||||||
|
"SARFE10-PBIG050-EVR0:CALCI", # good for correlations with total beam intensity
|
||||||
|
"SARFE10-PBPG050:HAMP-INTENSITY-CAL",
|
||||||
|
]
|
||||||
|
|
||||||
|
######################
|
||||||
|
# PBPS053
|
||||||
|
channels_PBPS053 = [
|
||||||
|
"SARFE10-PBPS053:INTENSITY",
|
||||||
|
"SARFE10-PBPS053:XPOS",
|
||||||
|
"SARFE10-PBPS053:YPOS",
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
# PSSS059
|
||||||
|
channels_PSSS059=[
|
||||||
|
"SARFE10-PSSS059:FIT-COM",
|
||||||
|
"SARFE10-PSSS059:FIT-FWHM",
|
||||||
|
"SARFE10-PSSS059:FIT-RES",
|
||||||
|
"SARFE10-PSSS059:FIT-RMS",
|
||||||
|
"SARFE10-PSSS059:SPECT-COM",
|
||||||
|
"SARFE10-PSSS059:SPECT-RES",
|
||||||
|
"SARFE10-PSSS059:SPECT-RMS",
|
||||||
|
"SARFE10-PSSS059:SPECTRUM_Y_SUM"
|
||||||
|
"SARFE10-PSSS059:SPECTRUM_X",
|
||||||
|
"SARFE10-PSSS059:SPECTRUM_Y",
|
||||||
|
# "SARFE10-PSSS059:FPICTURE",
|
||||||
|
# "SARFE10-PSSS059:FIT_ERR",
|
||||||
|
"SARFE10-PSSS059:processing_parameters",
|
||||||
|
# "SARFE10-PSSS059:SPECTRUM_AVG_CENTER",
|
||||||
|
# "SARFE10-PSSS059:SPECTRUM_AVG_FWHM",
|
||||||
|
# "SARFE10-PSSS059:SPECTRUM_AVG_Y",
|
||||||
|
]
|
||||||
|
|
||||||
|
###################################
|
||||||
|
# Beam position monitor PBPS113
|
||||||
|
channels_PBPS113 = [
|
||||||
|
"SAROP31-PBPS113:INTENSITY",
|
||||||
|
"SAROP31-PBPS113:INTENSITY_UJ",
|
||||||
|
"SAROP31-PBPS113:Lnk9Ch0-PP_VAL_PD0",
|
||||||
|
"SAROP31-PBPS113:Lnk9Ch0-PP_VAL_PD1",
|
||||||
|
"SAROP31-PBPS113:Lnk9Ch0-PP_VAL_PD2",
|
||||||
|
"SAROP31-PBPS113:Lnk9Ch0-PP_VAL_PD3",
|
||||||
|
# "SAROP31-PBPS113:Lnk9Ch0-PP_VAL_PD4",
|
||||||
|
"SAROP31-PBPS113:XPOS",
|
||||||
|
"SAROP31-PBPS113:YPOS",
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Profile monitor PPRM113 (from _proc process)
|
||||||
|
channels_PPRM113 = [
|
||||||
|
"SAROP31-PPRM113:intensity",
|
||||||
|
"SAROP31-PPRM113:x_center_of_mass",
|
||||||
|
"SAROP31-PPRM113:x_fit_amplitude",
|
||||||
|
"SAROP31-PPRM113:x_fit_mean",
|
||||||
|
"SAROP31-PPRM113:x_fit_offset",
|
||||||
|
"SAROP31-PPRM113:x_fit_standard_deviation",
|
||||||
|
"SAROP31-PPRM113:x_fwhm",
|
||||||
|
"SAROP31-PPRM113:x_profile",
|
||||||
|
"SAROP31-PPRM113:x_rms",
|
||||||
|
"SAROP31-PPRM113:y_center_of_mass",
|
||||||
|
"SAROP31-PPRM113:y_fit_amplitude",
|
||||||
|
"SAROP31-PPRM113:y_fit_mean",
|
||||||
|
"SAROP31-PPRM113:y_fit_offset",
|
||||||
|
"SAROP31-PPRM113:y_fit_standard_deviation",
|
||||||
|
"SAROP31-PPRM113:y_fwhm",
|
||||||
|
"SAROP31-PPRM113:y_profile",
|
||||||
|
"SAROP31-PPRM113:y_rms",
|
||||||
|
# "SAROP31-PPRM113:FPICTURE", # full pictures for debugging purposes at the moment, from _ib process
|
||||||
|
]
|
||||||
|
|
||||||
|
###########################
|
||||||
|
# Beam position monitor PBPS149
|
||||||
|
channel_PBPS149 = [
|
||||||
|
"SAROP31-PBPS149:INTENSITY",
|
||||||
|
"SAROP31-PBPS149:INTENSITY_UJ",
|
||||||
|
"SAROP31-PBPS149:Lnk9Ch0-PP_VAL_PD0",
|
||||||
|
"SAROP31-PBPS149:Lnk9Ch0-PP_VAL_PD1",
|
||||||
|
"SAROP31-PBPS149:Lnk9Ch0-PP_VAL_PD2",
|
||||||
|
"SAROP31-PBPS149:Lnk9Ch0-PP_VAL_PD3",
|
||||||
|
# "SAROP31-PBPS149:Lnk9Ch0-PP_VAL_PD4",
|
||||||
|
"SAROP31-PBPS149:XPOS",
|
||||||
|
"SAROP31-PBPS149:YPOS",
|
||||||
|
]
|
||||||
|
|
||||||
|
#######################
|
||||||
|
# Profile monitor PPRM150 (from _proc process)
|
||||||
|
channels_PPRM150 = [
|
||||||
|
"SAROP31-PPRM150:intensity",
|
||||||
|
"SAROP31-PPRM150:x_center_of_mass",
|
||||||
|
"SAROP31-PPRM150:x_fit_amplitude",
|
||||||
|
"SAROP31-PPRM150:x_fit_mean",
|
||||||
|
"SAROP31-PPRM150:x_fit_offset",
|
||||||
|
"SAROP31-PPRM150:x_fit_standard_deviation",
|
||||||
|
"SAROP31-PPRM150:x_fwhm",
|
||||||
|
"SAROP31-PPRM150:x_profile",
|
||||||
|
"SAROP31-PPRM150:x_rms",
|
||||||
|
"SAROP31-PPRM150:y_center_of_mass",
|
||||||
|
"SAROP31-PPRM150:y_fit_amplitude",
|
||||||
|
"SAROP31-PPRM150:y_fit_mean",
|
||||||
|
"SAROP31-PPRM150:y_fit_offset",
|
||||||
|
"SAROP31-PPRM150:y_fit_standard_deviation",
|
||||||
|
"SAROP31-PPRM150:y_fwhm",
|
||||||
|
"SAROP31-PPRM150:y_profile",
|
||||||
|
"SAROP31-PPRM150:y_rms",
|
||||||
|
# "SAROP31-PPRM150:FPICTURE", # full pictures for debugging purposes at the moment, from _ib process
|
||||||
|
]
|
||||||
|
|
||||||
|
#######################
|
||||||
|
# Cristallina event reciever
|
||||||
|
channels_EVR = [
|
||||||
|
'SAR-CVME-TIFALL6:EvtSet',
|
||||||
|
]
|
||||||
|
|
||||||
|
#######################
|
||||||
|
# Digitizer
|
||||||
|
channels_digitizer =[
|
||||||
|
"SARES30-LTIM01-EVR0:DUMMY_PV1_NBS",
|
||||||
|
"SARES30-LTIM01-EVR0:DUMMY_PV2_NBS",
|
||||||
|
"SARES30-LTIM01-EVR0:DUMMY_PV3_NBS",
|
||||||
|
"SARES30-LTIM01-EVR0:DUMMY_PV4_NBS",
|
||||||
|
"SARES30-LSCP1-FNS:CH0:VAL_GET", # Signal-Background
|
||||||
|
"SARES30-LSCP1-CRISTA1:CH0:1", # Waveform signal
|
||||||
|
"SARES30-LSCP1-CRISTA1:CH2:1", # Waveform trigger
|
||||||
|
"SARES30-LTIM01-EVR0:CALCI", # Calculated intensity
|
||||||
|
]
|
||||||
|
|
||||||
|
#######################
|
||||||
|
# Other BS channels that we sometimes use
|
||||||
|
channels_other = [
|
||||||
|
]
|
||||||
|
|
||||||
|
bs_channels = (
|
||||||
|
camera_channels
|
||||||
|
+ channels_gas_monitor
|
||||||
|
+ channels_PBPS053
|
||||||
|
+ channels_PBPS053
|
||||||
|
+ channels_PSSS059
|
||||||
|
+ channels_PBPS113
|
||||||
|
+ channels_PPRM113
|
||||||
|
+ channel_PBPS149
|
||||||
|
+ channels_PPRM150
|
||||||
|
+ channels_EVR
|
||||||
|
# + channels_digitizer
|
||||||
|
# + channels_other
|
||||||
|
)
|
||||||
|
|
@ -33,7 +33,8 @@ from slic.utils import Channels, Config, Elog, Screenshot, PV
|
|||||||
from slic.core.acquisition.fakeacquisition import FakeAcquisition
|
from slic.core.acquisition.fakeacquisition import FakeAcquisition
|
||||||
from slic.devices.timing.events import CTASequencer
|
from slic.devices.timing.events import CTASequencer
|
||||||
|
|
||||||
from channels import detectors, bs_channels, pvs
|
from bs_channels import detectors, bs_channels
|
||||||
|
from pv_channels import pvs
|
||||||
from spreadsheet import overview
|
from spreadsheet import overview
|
||||||
from channels_minimal import detectors_min, channels_min, pvs_min
|
from channels_minimal import detectors_min, channels_min, pvs_min
|
||||||
from pp_shutter import PP_Shutter
|
from pp_shutter import PP_Shutter
|
||||||
@ -157,7 +158,7 @@ import daq_client as sf_daq_client
|
|||||||
CTA_sequence_start_PID = PV("SAR-CCTA-ESC:seq0Ctrl-StartedAt-O")
|
CTA_sequence_start_PID = PV("SAR-CCTA-ESC:seq0Ctrl-StartedAt-O")
|
||||||
|
|
||||||
# Number of pulses to ask from the SFDAQ. This will depend on the CTA sequence.
|
# Number of pulses to ask from the SFDAQ. This will depend on the CTA sequence.
|
||||||
npulses = 22
|
# npulses = 100
|
||||||
|
|
||||||
def pulse(run_comment=None):
|
def pulse(run_comment=None):
|
||||||
# Start the CTA sequence
|
# Start the CTA sequence
|
||||||
@ -176,11 +177,12 @@ def pulse(run_comment=None):
|
|||||||
used_detectors = detectors
|
used_detectors = detectors
|
||||||
used_detectors = {"JF16T03V01":{}}
|
used_detectors = {"JF16T03V01":{}}
|
||||||
|
|
||||||
|
# TODO: change to SFAcquisition.retrieve(...) from slic
|
||||||
# Ask the DAQ client to download the data
|
# Ask the DAQ client to download the data
|
||||||
run_number = sf_daq_client.retrieve_data_from_buffer(pgroup=pgroup, user_tag=run_comment,
|
run_number = sf_daq_client.retrieve_data_from_buffer(pgroup=pgroup, user_tag=run_comment,
|
||||||
camera_channels=[], bsread_channels=channels, epics_channels=pvs,
|
camera_channels=[], bsread_channels=bs_channels, epics_channels=pvs,
|
||||||
detectors=used_detectors,
|
detectors=used_detectors,
|
||||||
start_pulseid=start_PID, stop_pulseid=start_PID+npulses,
|
start_pulseid=start_PID-90, stop_pulseid=start_PID+20,
|
||||||
rate_multiplicator=1,
|
rate_multiplicator=1,
|
||||||
)
|
)
|
||||||
print('\n')
|
print('\n')
|
||||||
|
10
measurement_scripts/DilSc_commisioning_pulses.py
Normal file
10
measurement_scripts/DilSc_commisioning_pulses.py
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
from time import sleep, time
|
||||||
|
from cristallina import cta, daq
|
||||||
|
|
||||||
|
def make_pulse_train():
|
||||||
|
recording = daq.acquire('pulsing_sequence',n_pulses=100*101,wait=False)
|
||||||
|
cta.start()
|
||||||
|
recording.wait()
|
||||||
|
print('done')
|
||||||
|
|
||||||
|
#daq.acquire(filename, data_base_dir=None, detectors=None, channels=None, pvs=None, scan_info=None, n_pulses=100, continuous=False, is_scan_step=False, wait=True):
|
Binary file not shown.
BIN
measurement_scripts/__pycache__/inprints.cpython-39.pyc
Normal file
BIN
measurement_scripts/__pycache__/inprints.cpython-39.pyc
Normal file
Binary file not shown.
@ -6,6 +6,7 @@ import numpy as np
|
|||||||
#from slic.devices.general.motor import Motor
|
#from slic.devices.general.motor import Motor
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
import epics
|
import epics
|
||||||
|
from cristallina import attocube, attenuator
|
||||||
|
|
||||||
from slic.devices.xoptics.aramis_attenuator import Attenuator
|
from slic.devices.xoptics.aramis_attenuator import Attenuator
|
||||||
attenuator = Attenuator("SAROP31-OATA150", description="Cristallina attenuator OATA150")
|
attenuator = Attenuator("SAROP31-OATA150", description="Cristallina attenuator OATA150")
|
||||||
@ -38,7 +39,7 @@ between_KB_settings = 500
|
|||||||
KBvs = [[1,2],[1,3],[1,2],[1,3],[1,2]]
|
KBvs = [[1,2],[1,3],[1,2],[1,3],[1,2]]
|
||||||
KBhs = [[1,2],[1,2],[1,2],[1,3],[1,2]]
|
KBhs = [[1,2],[1,2],[1,2],[1,3],[1,2]]
|
||||||
|
|
||||||
# Time estimates for total time calculation
|
# Time estimates for total time calculation (time in seconds)
|
||||||
t_kb_change = 30
|
t_kb_change = 30
|
||||||
t_shot = 5
|
t_shot = 5
|
||||||
t_atten_change = 20
|
t_atten_change = 20
|
||||||
@ -48,8 +49,9 @@ def shoot(pos=pos,testing=testing_flag):
|
|||||||
print(f'Shot at: {pos}')
|
print(f'Shot at: {pos}')
|
||||||
return pos
|
return pos
|
||||||
else:
|
else:
|
||||||
epics.caput("SAR-CCTA-ESC:seq0Ctrl-Start-I",1)
|
print(f'Shot at: {pos}')
|
||||||
|
#epics.caput("SAR-CCTA-ESC:seq0Ctrl-Start-I",1)
|
||||||
|
pass
|
||||||
|
|
||||||
def change_benders(bender_1,bender_2,KB = None,do_not_move_benders = do_not_move_benders):
|
def change_benders(bender_1,bender_2,KB = None,do_not_move_benders = do_not_move_benders):
|
||||||
check_KB_value(KB)
|
check_KB_value(KB)
|
||||||
@ -104,6 +106,8 @@ def move_x_rel(distance,testing=testing_flag,pos=pos):
|
|||||||
return pos
|
return pos
|
||||||
else:
|
else:
|
||||||
attocube.X.set_target_value(distance, relative=True).wait()
|
attocube.X.set_target_value(distance, relative=True).wait()
|
||||||
|
pos = pos + np.array([distance,0])
|
||||||
|
return pos
|
||||||
|
|
||||||
def move_y_rel(distance,testing=testing_flag,pos=pos):
|
def move_y_rel(distance,testing=testing_flag,pos=pos):
|
||||||
if testing == True:
|
if testing == True:
|
||||||
@ -111,6 +115,8 @@ def move_y_rel(distance,testing=testing_flag,pos=pos):
|
|||||||
return pos
|
return pos
|
||||||
else:
|
else:
|
||||||
attocube.Y.set_target_value(distance, relative=True).wait()
|
attocube.Y.set_target_value(distance, relative=True).wait()
|
||||||
|
pos = pos + np.array([0,distance])
|
||||||
|
return pos
|
||||||
|
|
||||||
def move_x(value,testing=testing_flag,pos=pos):
|
def move_x(value,testing=testing_flag,pos=pos):
|
||||||
if testing == True:
|
if testing == True:
|
||||||
@ -149,7 +155,7 @@ def make_attenuations(attenuations,testing=testing_flag,pos=pos):
|
|||||||
attenuator.trans1st(attenuation).wait()
|
attenuator.trans1st(attenuation).wait()
|
||||||
print('Making same shots')
|
print('Making same shots')
|
||||||
make_same_shots(n_same_holes,pos=pos)
|
make_same_shots(n_same_holes,pos=pos)
|
||||||
pos = move_y_rel(between_attenuations,pos=pos)
|
pos = move_y_rel(between_attenuations,pos=pos,testing=testing)
|
||||||
|
|
||||||
# Return back to where you started
|
# Return back to where you started
|
||||||
if testing == True:
|
if testing == True:
|
||||||
@ -166,15 +172,18 @@ def make_same_shots(n_same_holes,testing=testing_flag,pos=pos):
|
|||||||
|
|
||||||
# Make holes
|
# Make holes
|
||||||
for shot in range(n_same_holes):
|
for shot in range(n_same_holes):
|
||||||
|
sleep(1)
|
||||||
shoot(pos=pos)
|
shoot(pos=pos)
|
||||||
pos = move_x_rel(between_same_shots,pos=pos)
|
pos = move_x_rel(between_same_shots,pos=pos,testing=testing)
|
||||||
|
|
||||||
# Return back to where you started
|
# Return back to where you started
|
||||||
move(original_position)
|
move(original_position)
|
||||||
|
|
||||||
|
|
||||||
# Estimate total time
|
def estimate_total_time(KBhs=KBhs,KBvs=KBvs,attenuations=attenuations,n_same_holes=n_same_holes,t_kb_change=t_kb_change,t_atten_change=t_atten_change,t_shot=t_shot):
|
||||||
total_time = len(KBhs)*len(KBvs)*(t_kb_change+len(attenuations)*(t_atten_change+n_same_holes*t_shot) )
|
total_time = len(KBhs)*len(KBvs)*(t_kb_change+len(attenuations)*(t_atten_change+n_same_holes*t_shot) )
|
||||||
|
print(f'Total time estimate: {(total_time/60):.1f} minutes or {(total_time/60/60):.1f} hours')
|
||||||
|
return total_time
|
||||||
|
|
||||||
# Get the starting x-position
|
# Get the starting x-position
|
||||||
if testing_flag == True:
|
if testing_flag == True:
|
||||||
@ -182,8 +191,11 @@ if testing_flag == True:
|
|||||||
else:
|
else:
|
||||||
starting_x_pos = attocube.X.get_current_value()
|
starting_x_pos = attocube.X.get_current_value()
|
||||||
|
|
||||||
# The actual loop to make inprints
|
|
||||||
for i,KBv in enumerate(KBvs):
|
|
||||||
|
def make_everything(KBvs,KBhs,attenuations,n_same_holes,testing=testing_flag,pos=pos):
|
||||||
|
# The actual loop to make inprints
|
||||||
|
for i,KBv in enumerate(KBvs):
|
||||||
change_benders(KBv[0],KBv[1],KB = 'v')
|
change_benders(KBv[0],KBv[1],KB = 'v')
|
||||||
|
|
||||||
for ind,KBh in enumerate(KBhs):
|
for ind,KBh in enumerate(KBhs):
|
||||||
@ -208,8 +220,8 @@ for i,KBv in enumerate(KBvs):
|
|||||||
pos = move_y_rel(between_KB_settings+between_attenuations*(len(attenuations)-1),pos=pos)
|
pos = move_y_rel(between_KB_settings+between_attenuations*(len(attenuations)-1),pos=pos)
|
||||||
|
|
||||||
|
|
||||||
print('Inprints are done')
|
print('Inprints are done')
|
||||||
print(f'Total time estimate: {(total_time/60):.1f} minutes or {(total_time/60/60):.1f} hours')
|
print(f'Total time estimate: {(total_time/60):.1f} minutes or {(total_time/60/60):.1f} hours')
|
||||||
|
|
||||||
# To do:
|
# To do:
|
||||||
# Fix movement of the attocubes in real time
|
# Fix movement of the attocubes in real time
|
||||||
|
355
pv_channels.py
Normal file
355
pv_channels.py
Normal file
@ -0,0 +1,355 @@
|
|||||||
|
##########################################################################################################
|
||||||
|
##########################################################################################################
|
||||||
|
##########################################################################################################
|
||||||
|
# Epics PVS
|
||||||
|
|
||||||
|
# Compression, charge settings
|
||||||
|
#######################
|
||||||
|
# Machine
|
||||||
|
pvs_machine = [
|
||||||
|
"SARCL02-MBND100:P-READ", # Predicted bunch energy
|
||||||
|
"SARUN:FELPHOTENE.VAL", # Predicted photon energy from machine settings
|
||||||
|
"SARFE10-PBPG050:PHOTON-ENERGY-PER-PULSE-AVG.VAL" # Average pulse energy from the gas detector
|
||||||
|
]
|
||||||
|
|
||||||
|
#######################
|
||||||
|
# Undulator gap
|
||||||
|
pvs_undulator =[
|
||||||
|
"SARUN03-UIND030:K_SET.VAL",
|
||||||
|
"SARUN04-UIND030:K_SET.VAL",
|
||||||
|
"SARUN05-UIND030:K_SET.VAL",
|
||||||
|
"SARUN06-UIND030:K_SET.VAL",
|
||||||
|
"SARUN07-UIND030:K_SET.VAL",
|
||||||
|
"SARUN08-UIND030:K_SET.VAL",
|
||||||
|
"SARUN09-UIND030:K_SET.VAL",
|
||||||
|
"SARUN10-UIND030:K_SET.VAL",
|
||||||
|
"SARUN11-UIND030:K_SET.VAL",
|
||||||
|
"SARUN12-UIND030:K_SET.VAL",
|
||||||
|
"SARUN13-UIND030:K_SET.VAL",
|
||||||
|
"SARUN14-UIND030:K_SET.VAL",
|
||||||
|
"SARUN15-UIND030:K_SET.VAL",
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Machine gas intensity monitor
|
||||||
|
pvs_gas_monitor = [
|
||||||
|
"SARFE10-PBPG050:PHOTON-ENERGY-PER-PULSE-US",
|
||||||
|
"SARFE10-PBPG050:PHOTON-ENERGY-PER-PULSE-DS",
|
||||||
|
]
|
||||||
|
|
||||||
|
#####################
|
||||||
|
# Slits OAPU044
|
||||||
|
pvs_OAPU044=[
|
||||||
|
"SARFE10-OAPU044:MOTOR_X",
|
||||||
|
"SARFE10-OAPU044:MOTOR_Y",
|
||||||
|
"SARFE10-OAPU044:MOTOR_W",
|
||||||
|
"SARFE10-OAPU044:MOTOR_H",
|
||||||
|
]
|
||||||
|
|
||||||
|
###################
|
||||||
|
# Beam position monitor PBPS053
|
||||||
|
pvs_PBPS053 = [
|
||||||
|
"SARFE10-PBPS053:MOTOR_X1",
|
||||||
|
"SARFE10-PBPS053:MOTOR_X2",
|
||||||
|
"SARFE10-PBPS053:MOTOR_PROBE",
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Upstream attenuator OATT053
|
||||||
|
pvs_OATT053=[
|
||||||
|
"SARFE10-OATT053:MOTOR_1",
|
||||||
|
"SARFE10-OATT053:MOTOR_1.RBV",
|
||||||
|
"SARFE10-OATT053:MOTOR_2",
|
||||||
|
"SARFE10-OATT053:MOTOR_2.RBV",
|
||||||
|
"SARFE10-OATT053:MOTOR_3",
|
||||||
|
"SARFE10-OATT053:MOTOR_3.RBV",
|
||||||
|
"SARFE10-OATT053:MOTOR_4",
|
||||||
|
"SARFE10-OATT053:MOTOR_4.RBV",
|
||||||
|
"SARFE10-OATT053:MOTOR_5",
|
||||||
|
"SARFE10-OATT053:MOTOR_5.RBV",
|
||||||
|
"SARFE10-OATT053:MOTOR_6",
|
||||||
|
"SARFE10-OATT053:MOTOR_6.RBV",
|
||||||
|
"SARFE10-OATT053:ENERGY",
|
||||||
|
"SARFE10-OATT053:TRANS_SP",
|
||||||
|
"SARFE10-OATT053:TRANS_RB",
|
||||||
|
]
|
||||||
|
|
||||||
|
###################
|
||||||
|
# Beam profile monitor PPRM053
|
||||||
|
pvs_PPRM053 = [
|
||||||
|
"SARFE10-PPRM053:MOTOR_PROBE.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Single shot spectrometer PSS059
|
||||||
|
pvs_PSSS059 = [
|
||||||
|
# "SARFE10-PSSS059:FPICTURE", # full pictures only when really needed
|
||||||
|
"SARFE10-PSSS059:SPECTRUM_X",
|
||||||
|
"SARFE10-PSSS059:SPECTRUM_Y",
|
||||||
|
"SARFE10-PSSS059:SPECTRUM_CENTER",
|
||||||
|
"SARFE10-PSSS059:SPECTRUM_COM",
|
||||||
|
"SARFE10-PSSS059:SPECTRUM_FWHM",
|
||||||
|
"SARFE10-PSSS059:SPECTRUM_STD",
|
||||||
|
"SARFE10-PSSS059:FIT_ERR",
|
||||||
|
"SARFE10-PSSS059:processing_parameters",
|
||||||
|
"SARFE10-PSSS059:SPECTRUM_AVG_CENTER,"
|
||||||
|
"SARFE10-PSSS059:SPECTRUM_AVG_FWHM",
|
||||||
|
"SARFE10-PSSS059:SPECTRUM_AVG_Y",
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
# First Cristallina horizontal offset mirror OOMH067
|
||||||
|
pvs_OOMH067 = [
|
||||||
|
"SAROP31-OOMH067:W_X.RBV",
|
||||||
|
"SAROP31-OOMH067:W_Y.RBV",
|
||||||
|
"SAROP31-OOMH067:W_RX.RBV",
|
||||||
|
"SAROP31-OOMH067:W_RY.RBV",
|
||||||
|
"SAROP31-OOMH067:W_RZ.RBV",
|
||||||
|
"SAROP31-OOMH067:BU.RBV",
|
||||||
|
"SAROP31-OOMH067:BD.RBV",
|
||||||
|
"SAROP31-OOMH067:VS1.RBV",
|
||||||
|
"SAROP31-OOMH067:VS2.RBV",
|
||||||
|
"SAROP31-OOMH067:VS3.RBV",
|
||||||
|
"SAROP31-OOMH067:TX.RBV",
|
||||||
|
"SAROP31-OOMH067:RY.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Beam screen between the first two horizontal mirrors PSCR068
|
||||||
|
pvs_PSCR068 = [
|
||||||
|
"SAROP31-PSCR068:MOTOR_PROBE.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Second Cristallina horizontal offset mirror OOMH084
|
||||||
|
pvs_OOMH084 = [
|
||||||
|
"SAROP31-OOMH084:W_X.RBV",
|
||||||
|
"SAROP31-OOMH084:W_Y.RBV",
|
||||||
|
"SAROP31-OOMH084:W_RX.RBV",
|
||||||
|
"SAROP31-OOMH084:W_RY.RBV",
|
||||||
|
"SAROP31-OOMH084:W_RZ.RBV",
|
||||||
|
"SAROP31-OOMH084:BU.RBV",
|
||||||
|
"SAROP31-OOMH084:BD.RBV",
|
||||||
|
"SAROP31-OOMH084:VS1.RBV",
|
||||||
|
"SAROP31-OOMH084:VS2.RBV",
|
||||||
|
"SAROP31-OOMH084:VS3.RBV",
|
||||||
|
"SAROP31-OOMH084:TX.RBV",
|
||||||
|
"SAROP31-OOMH084:RY.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
###################
|
||||||
|
# Beam profile monitor PPRM085
|
||||||
|
pvs_PPRM085 = [
|
||||||
|
"SAROP31-PPRM085:MOTOR_PROBE.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
###################
|
||||||
|
# Slits OAPU107
|
||||||
|
pvs_OAPU107 = [
|
||||||
|
"SAROP31-OAPU107:MOTOR_X.VAL",
|
||||||
|
"SAROP31-OAPU107:MOTOR_X.RBV",
|
||||||
|
"SAROP31-OAPU107:MOTOR_Y.VAL",
|
||||||
|
"SAROP31-OAPU107:MOTOR_Y.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
###################
|
||||||
|
## Beam position and intensity monitor PBPS113
|
||||||
|
pvs_PBPS113 = [
|
||||||
|
"SAROP31-PBPS113:MOTOR_X1.RBV",
|
||||||
|
"SAROP31-PBPS113:MOTOR_Y1.RBV",
|
||||||
|
"SAROP31-PBPS113:MOTOR_PROBE.RBV",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
|
||||||
|
###################
|
||||||
|
# Beam profile monitor PPRM113
|
||||||
|
pvs_PPRM113 = [
|
||||||
|
"SAROP31-PPRM113:MOTOR_PROBE.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Alignment laser mirror OLAS147
|
||||||
|
pvs_OLAS147 = [
|
||||||
|
"SAROP31-OLAS147:MOTOR_1.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
###################
|
||||||
|
# Slits OAPU149
|
||||||
|
pvs_OAPU149 = [
|
||||||
|
"SAROP31-OAPU149:MOTOR_X.VAL",
|
||||||
|
"SAROP31-OAPU149:MOTOR_X.RBV",
|
||||||
|
"SAROP31-OAPU149:MOTOR_Y.VAL",
|
||||||
|
"SAROP31-OAPU149:MOTOR_Y.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
###################
|
||||||
|
# Beam position and intensity monitor PBPS149
|
||||||
|
pvs_PBPS149 = [
|
||||||
|
"SAROP31-PBPS149:MOTOR_X1.RBV",
|
||||||
|
"SAROP31-PBPS149:MOTOR_Y1.RBV",
|
||||||
|
"SAROP31-PBPS149:MOTOR_PROBE.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
###################
|
||||||
|
# Beam profile monitor PPRM150
|
||||||
|
pvs_PPRM150 = [
|
||||||
|
"SAROP31-PPRM150:MOTOR_PROBE.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Attenuators OATA150
|
||||||
|
pvs_OATA150 = [
|
||||||
|
"SAROP31-OATA150:MOTOR_1.RBV",
|
||||||
|
"SAROP31-OATA150:MOTOR_2.RBV",
|
||||||
|
"SAROP31-OATA150:MOTOR_3.RBV",
|
||||||
|
"SAROP31-OATA150:MOTOR_4.RBV",
|
||||||
|
"SAROP31-OATA150:MOTOR_5.RBV",
|
||||||
|
"SAROP31-OATA150:MOTOR_6.RBV",
|
||||||
|
"SAROP31-OATA150:TRANS_SP",
|
||||||
|
"SAROP31-OATA150:TRANS_RB",
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Pulse picker OPPI151
|
||||||
|
pvs_OPPI151 = [
|
||||||
|
"SAROP31-OPPI151:MOTOR_X.RBV",
|
||||||
|
"SAROP31-OPPI151:MOTOR_Y.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
## Horizontal offset mirror ODMV152
|
||||||
|
pvs_ODMV152 = [
|
||||||
|
"SAROP31-ODMV152:W_X.RBV",
|
||||||
|
"SAROP31-ODMV152:W_Y.RBV",
|
||||||
|
"SAROP31-ODMV152:W_RX.RBV",
|
||||||
|
"SAROP31-ODMV152:W_RZ.RBV",
|
||||||
|
"SAROP31-ODMV152:BU.RBV",
|
||||||
|
"SAROP31-ODMV152:BD.RBV",
|
||||||
|
"SAROP31-ODMV152:VS1.RBV",
|
||||||
|
"SAROP31-ODMV152:VS2.RBV",
|
||||||
|
"SAROP31-ODMV152:VS3.RBV",
|
||||||
|
"SAROP31-ODMV152:TX.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
#######################
|
||||||
|
# from _proc process
|
||||||
|
pvs_PPRM150 = [
|
||||||
|
"SAROP31-PPRM150:intensity",
|
||||||
|
"SAROP31-PPRM150:x_center_of_mass",
|
||||||
|
"SAROP31-PPRM150:x_fit_amplitude",
|
||||||
|
"SAROP31-PPRM150:x_fit_mean",
|
||||||
|
"SAROP31-PPRM150:x_fit_offset",
|
||||||
|
"SAROP31-PPRM150:x_fit_standard_deviation",
|
||||||
|
"SAROP31-PPRM150:x_fwhm",
|
||||||
|
"SAROP31-PPRM150:x_profile",
|
||||||
|
"SAROP31-PPRM150:x_rms",
|
||||||
|
"SAROP31-PPRM150:y_center_of_mass",
|
||||||
|
"SAROP31-PPRM150:y_fit_amplitude",
|
||||||
|
"SAROP31-PPRM150:y_fit_mean",
|
||||||
|
"SAROP31-PPRM150:y_fit_offset",
|
||||||
|
"SAROP31-PPRM150:y_fit_standard_deviation",
|
||||||
|
"SAROP31-PPRM150:y_fwhm",
|
||||||
|
"SAROP31-PPRM150:y_profile",
|
||||||
|
"SAROP31-PPRM150:y_rms",
|
||||||
|
# "SAROP31-PPRM150:FPICTURE", # full pictures for debugging purposes at the moment, from _ib process
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
###########################
|
||||||
|
# Vertical KB mirror OKBV153
|
||||||
|
pvs_OKBV153 = [
|
||||||
|
"SAROP31-OKBV153:W_X.RBV",
|
||||||
|
"SAROP31-OKBV153:W_Y.RBV",
|
||||||
|
"SAROP31-OKBV153:W_RX.RBV",
|
||||||
|
"SAROP31-OKBV153:W_RY.RBV",
|
||||||
|
"SAROP31-OKBV153:W_RZ.RBV",
|
||||||
|
"SAROP31-OKBV153:BU.RBV",
|
||||||
|
"SAROP31-OKBV153:BD.RBV",
|
||||||
|
"SAROP31-OKBV153:TY1.RBV",
|
||||||
|
"SAROP31-OKBV153:TY2.RBV",
|
||||||
|
"SAROP31-OKBV153:TY3.RBV",
|
||||||
|
"SAROP31-OKBV153:TX1.RBV",
|
||||||
|
"SAROP31-OKBV153:TX2.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Screen between the KB's PSCD153
|
||||||
|
# Not implemented yet
|
||||||
|
pvs_PSCD153 = [
|
||||||
|
# "SAROP31-PSCD153"
|
||||||
|
]
|
||||||
|
|
||||||
|
###########################
|
||||||
|
# Horizontal KB mirror OKBH154
|
||||||
|
pvs_OKBH154 = [
|
||||||
|
"SAROP31-OKBH154:W_X.RBV",
|
||||||
|
"SAROP31-OKBH154:W_Y.RBV",
|
||||||
|
"SAROP31-OKBH154:W_RX.RBV",
|
||||||
|
"SAROP31-OKBH154:W_RY.RBV",
|
||||||
|
"SAROP31-OKBH154:W_RZ.RBV",
|
||||||
|
"SAROP31-OKBH154:BU.RBV",
|
||||||
|
"SAROP31-OKBH154:BD.RBV",
|
||||||
|
"SAROP31-OKBH154:TY1.RBV",
|
||||||
|
"SAROP31-OKBH154:TY2.RBV",
|
||||||
|
"SAROP31-OKBH154:TY3.RBV",
|
||||||
|
"SAROP31-OKBH154:TX2.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Standa motors (mainly used with the X-ray eye)
|
||||||
|
pvs_standa = [
|
||||||
|
"SARES30MOBI1:MOT_1",
|
||||||
|
"SARES30MOBI1:MOT_2",
|
||||||
|
"SARES30MOBI1:MOT_3",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Attocube motors
|
||||||
|
pvs_attocube=[
|
||||||
|
"SARES30-ATTOCUBE:A0-POS",
|
||||||
|
"SARES30-ATTOCUBE:A1-POS",
|
||||||
|
]
|
||||||
|
|
||||||
|
###############################
|
||||||
|
# Smaract stages from Juraj
|
||||||
|
pvs_smaract = [
|
||||||
|
"SARES30-XSMA156:X:MOTRBV",
|
||||||
|
"SARES30-XSMA156:Y:MOTRBV",
|
||||||
|
"SARES30-XSMA156:Z:MOTRBV",
|
||||||
|
"SARES30-XSMA156:Ry:MOTRBV",
|
||||||
|
"SARES30-XSMA156:Rx:MOTRBV",
|
||||||
|
"SARES30-XSMA156:Rz:MOTRBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
pvs = (
|
||||||
|
pvs_machine
|
||||||
|
+ pvs_undulator
|
||||||
|
+ pvs_gas_monitor
|
||||||
|
+ pvs_OAPU044
|
||||||
|
+ pvs_PBPS053
|
||||||
|
+ pvs_OATT053
|
||||||
|
+ pvs_PPRM053
|
||||||
|
+ pvs_PSSS059
|
||||||
|
+ pvs_OOMH067
|
||||||
|
+ pvs_PSCR068
|
||||||
|
+ pvs_OOMH084
|
||||||
|
+ pvs_PPRM085
|
||||||
|
+ pvs_OAPU107
|
||||||
|
+ pvs_PBPS113
|
||||||
|
+ pvs_PPRM113
|
||||||
|
+ pvs_OLAS147
|
||||||
|
+ pvs_OAPU149
|
||||||
|
+ pvs_PBPS149
|
||||||
|
+ pvs_PPRM150
|
||||||
|
+ pvs_OATA150
|
||||||
|
+ pvs_OPPI151
|
||||||
|
+ pvs_ODMV152
|
||||||
|
+ pvs_PPRM150
|
||||||
|
+ pvs_OKBV153
|
||||||
|
+ pvs_PSCD153
|
||||||
|
+ pvs_OKBH154
|
||||||
|
+ pvs_standa
|
||||||
|
# + pvs_attocube
|
||||||
|
# + pvs_smaract
|
||||||
|
)
|
19
smaract.py
19
smaract.py
@ -52,13 +52,17 @@ class SmarActStage(BaseDevice):
|
|||||||
|
|
||||||
class SmarActAxis(Adjustable):
|
class SmarActAxis(Adjustable):
|
||||||
|
|
||||||
def __init__(self, ID, name=None, units=None, internal=False):
|
def __init__(self, ID, name=None, units=None, internal=False,tolerance=0.5):
|
||||||
super().__init__(ID, name=name, units=units, internal=internal)
|
super().__init__(ID, name=name, units=units, internal=internal)
|
||||||
|
|
||||||
self.wait_time = 0.1
|
self.wait_time = 0.1
|
||||||
self.timeout = 60
|
self.timeout = 60
|
||||||
self._move_requested = False
|
self._move_requested = False
|
||||||
|
|
||||||
|
self.config = SimpleNamespace(
|
||||||
|
tolerance = tolerance,
|
||||||
|
)
|
||||||
|
|
||||||
self.pvs = SimpleNamespace(
|
self.pvs = SimpleNamespace(
|
||||||
drive = PV(ID + ":DRIVE"),
|
drive = PV(ID + ":DRIVE"),
|
||||||
readback = PV(ID + ":MOTRBV"),
|
readback = PV(ID + ":MOTRBV"),
|
||||||
@ -119,6 +123,16 @@ class SmarActAxis(Adjustable):
|
|||||||
self._move_requested = False
|
self._move_requested = False
|
||||||
print("move done")
|
print("move done")
|
||||||
|
|
||||||
|
def is_at_target(self,from_pv=False, tolerance = None):
|
||||||
|
"""Check whether target was reached.
|
||||||
|
If from_pv is True TARGET_REACHED_RB is used, else it's calculated as diffrence between the readback and set value within tolerance.
|
||||||
|
Default is False, because otherwise tolerance can only be set and read out as an integer."""
|
||||||
|
if tolerance == None:
|
||||||
|
tolerance = self.config.tolerance
|
||||||
|
if from_pv == True:
|
||||||
|
return self.pvs.target_reached.value == 1
|
||||||
|
else:
|
||||||
|
return abs( self.pvs.readback.get() - self.pvs.drive.get() ) < tolerance
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self._move_requested = False
|
self._move_requested = False
|
||||||
@ -261,6 +275,7 @@ class SmarActAxis(Adjustable):
|
|||||||
twv = self.pvs.twv.get()
|
twv = self.pvs.twv.get()
|
||||||
twv = abs(twv)
|
twv = abs(twv)
|
||||||
|
|
||||||
|
ca.poll(evt=1.0e-1)
|
||||||
while stat == Status.HOLDING and time.time() <= tout:
|
while stat == Status.HOLDING and time.time() <= tout:
|
||||||
ca.poll(evt=1.0e-2)
|
ca.poll(evt=1.0e-2)
|
||||||
stat = self.status
|
stat = self.status
|
||||||
@ -275,7 +290,7 @@ class SmarActAxis(Adjustable):
|
|||||||
|
|
||||||
def gui(self):
|
def gui(self):
|
||||||
device, motor = self.ID.split(":")
|
device, motor = self.ID.split(":")
|
||||||
cmd = f'caqtdm -macro "P={device}:,M={motor}" ESB_MX_SMARACT_mot_exp.ui'
|
cmd = f'caqtdm -macro "P={device}:,M={motor}" SARES30-CPCL-SMARACTX1_6axis_old.ui'
|
||||||
return subprocess.Popen(cmd, shell=True)
|
return subprocess.Popen(cmd, shell=True)
|
||||||
|
|
||||||
|
|
||||||
|
139
spreadsheet.py
139
spreadsheet.py
@ -8,109 +8,80 @@ class PVStringAdjustable(PVAdjustable):
|
|||||||
return self.pvs.readback.get(as_string=True).strip()
|
return self.pvs.readback.get(as_string=True).strip()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
n_unds = [
|
n_unds = [
|
||||||
6, 7, 8, 9, 10, 11, 12, 13, # 14 is the CHIC
|
6, 7, 8, 9, 10, 11, 12, 13, # 14 is the CHIC
|
||||||
15, 16, 17, 18, 19, 20, 21, 22
|
15, 16, 17, 18, 19, 20, 21, 22
|
||||||
]
|
]
|
||||||
|
|
||||||
undulator_info = {}
|
#UND_NAME_FMT = "SARUN{:02}-UIND030"
|
||||||
for i in n_unds:
|
#N_UND_CHIC = None
|
||||||
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)
|
#N_UNDS = list(range(3, 15+1))
|
||||||
|
|
||||||
|
|
||||||
|
#undulator_info = {}
|
||||||
|
#for i in n_unds:
|
||||||
|
# undulator_info[f"energy{i}"] = PVAdjustable(f"SARUN{i:02}-UIND030:FELPHOTENE", internal=True)
|
||||||
|
# undulator_info[f"polarisation{i}"] = PVEnumAdjustable(f"SARUN{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),
|
overview = SimpleDevice("Cristallina Overview",
|
||||||
PaddleChamber1x = PVAdjustable("SATES21-XSMA166:MOT1:MOTRBV", internal=True),
|
OKHB154_X_trans = PVAdjustable("SAROP31-OKBH154:W_X.RBV", internal=True),
|
||||||
PaddleChamber1y = PVAdjustable("SATES21-XSMA166:MOT2:MOTRBV", internal=True),
|
OKHB154_Y_trans = PVAdjustable("SAROP31-OKBH154:W_Y.RBV", internal=True),
|
||||||
PaddleChamber1z = PVAdjustable("SATES21-XSMA166:MOT3:MOTRBV", internal=True),
|
OKHB154_X_rot = PVAdjustable("SAROP31-OKBH154:W_RX.RBV", internal=True),
|
||||||
SmartActTTx = PVAdjustable("SATES22-XSMA168:MOT10:MOTRBV", internal=True),
|
OKHB154_Y_rot = PVAdjustable("SAROP31-OKBH154:W_RY.RBV", internal=True),
|
||||||
SmartActTTy = PVAdjustable("SATES22-XSMA168:MOT11:MOTRBV", internal=True),
|
OKHB154_Z_rot = PVAdjustable("SAROP31-OKBH154:W_RZ.RBV", 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),
|
OKBV153_X_trans = PVAdjustable("SAROP31-OKBV153:W_X.RBV", internal=True),
|
||||||
chicane_current_sv = PVAdjustable("SATUN14-MBND100:I-SET", internal=True),
|
OKBV153_Y_trans = PVAdjustable("SAROP31-OKBV153:W_Y.RBV", internal=True),
|
||||||
|
OKBV153_X_rot = PVAdjustable("SAROP31-OKBV153:W_RX.RBV", internal=True),
|
||||||
|
OKBV153_Y_rot = PVAdjustable("SAROP31-OKBV153:W_RY.RBV", internal=True),
|
||||||
|
OKBV153_Z_rot = PVAdjustable("SAROP31-OKBV153:W_RZ.RBV", internal=True),
|
||||||
|
|
||||||
att64 = PVStringAdjustable("SATFE10-OATT064:MOT2TRANS.VALD", internal=True),
|
ODMV152_X_trans = PVAdjustable("SAROP31-OKBV153:W_X.RBV", internal=True),
|
||||||
att65 = PVStringAdjustable("SATFE10-OATT065:MOT2TRANS.VALD", internal=True),
|
ODMV152_Y_trans = PVAdjustable("SAROP31-OKBV153:W_Y.RBV", internal=True),
|
||||||
|
ODMV152_X_rot = PVAdjustable("SAROP31-OKBV153:W_RX.RBV", internal=True),
|
||||||
|
ODMV152_Y_rot = PVAdjustable("SAROP31-OKBV153:W_RY.RBV", internal=True),
|
||||||
|
ODMV152_COATING = PVAdjustable("SAROP31-ODMV152:COATING_SP", internal=True),
|
||||||
|
|
||||||
|
OATA150_transmission = PVAdjustable("SAROP31-OATA150:TRANS_SP", internal=True),
|
||||||
|
|
||||||
|
PBPS149_motor_probe = PVAdjustable("SAROP31-PBPS149:MOTOR_PROBE.RBV", internal=True),
|
||||||
|
PBPS149_motor_X1 = PVAdjustable("SAROP31-PBPS149:MOTOR_X1.RBV", internal=True),
|
||||||
|
PBPS149_motor_Y1 = PVAdjustable("SAROP31-PBPS149:MOTOR_Y1.RBV", internal=True),
|
||||||
|
PBPS149_wafer = PVAdjustable("SAROP31-PBPS149:PROBE_SP", internal=True),
|
||||||
|
|
||||||
|
OAPU149_hor_pos = PVAdjustable("SAROP31-OAPU149:MOTOR_X.VAL", internal=True),
|
||||||
|
OAPU149_hor_width = PVAdjustable("SAROP31-OAPU149:MOTOR_W.VAL", internal=True),
|
||||||
|
OAPU149_vert_pos = PVAdjustable("SAROP31-OAPU149:MOTOR_Y.VAL", internal=True),
|
||||||
|
OAPU149_vert_width = PVAdjustable("SAROP31-OAPU149:MOTOR_H.VAL", internal=True),
|
||||||
|
|
||||||
|
OAPU107_hor_pos = PVAdjustable("SAROP31-OAPU107:MOTOR_X.VAL", internal=True),
|
||||||
|
OAPU107_hor_width = PVAdjustable("SAROP31-OAPU107:MOTOR_W.VAL", internal=True),
|
||||||
|
OAPU107_vert_pos = PVAdjustable("SAROP31-OAPU107:MOTOR_Y.VAL", internal=True),
|
||||||
|
OAPU107_vert_width = PVAdjustable("SAROP31-OAPU107:MOTOR_H.VAL", internal=True),
|
||||||
|
|
||||||
|
OOMH084_X_trans = PVAdjustable("SAROP31-OOMH084:W_X.RBV", internal=True),
|
||||||
|
OOMH084_Y_trans = PVAdjustable("SAROP31-OOMH084:W_Y.RBV", internal=True),
|
||||||
|
OOMH084_X_rot = PVAdjustable("SAROP31-OOMH084:W_RX.RBV", internal=True),
|
||||||
|
OOMH084_Y_rot = PVAdjustable("SAROP31-OOMH084:W_RY.RBV", internal=True),
|
||||||
|
OOMH084_Z_rot = PVAdjustable("SAROP31-OOMH084:W_RZ.RBV", internal=True),
|
||||||
|
OOMH084_COATING = PVAdjustable("SAROP31-OOMH084:COATING_SP", internal=True),
|
||||||
|
|
||||||
|
OOMH067_X_trans = PVAdjustable("SAROP31-OOMH067:W_X.RBV", internal=True),
|
||||||
|
OOMH067_Y_trans = PVAdjustable("SAROP31-OOMH067:W_Y.RBV", internal=True),
|
||||||
|
OOMH067_X_rot = PVAdjustable("SAROP31-OOMH067:W_RX.RBV", internal=True),
|
||||||
|
OOMH067_Y_rot = PVAdjustable("SAROP31-OOMH067:W_RY.RBV", internal=True),
|
||||||
|
OOMH067_Z_rot = PVAdjustable("SAROP31-OOMH067:W_RZ.RBV", internal=True),
|
||||||
|
OOMH067_COATING = PVAdjustable("SAROP31-OOMH067:COATING_SP", internal=True),
|
||||||
|
|
||||||
**undulator_info
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
spreadsheet_line = [
|
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 print_overview():
|
||||||
print(overview)
|
print(overview)
|
||||||
|
Reference in New Issue
Block a user