This commit is contained in:
gobbo_a
2025-01-14 16:18:27 +01:00
parent 8beeb7dbc7
commit 7a0da7c48c
80 changed files with 1698 additions and 590 deletions

View File

@@ -0,0 +1,139 @@
import re
import json
#Discover camera server forwarding
cs = CameraClient("http://sf-daqsync-01:8888")
cameras = cs.getCameras()
camserver_cameras = []
for c in cameras:
try:
cfg=cs.getConfig(c)
if cfg.get("forwarder_port"):
if cfg["forwarder_port"]>0:
if cfg["source_type"] == "bsread":
camserver_cameras.append(c)
except:
pass
#Discover store pipelines
pc = ProxyClient("http://sf-daqsync-01:8889")
permanent_pipelines = pc.getPemanentInstances()
pc = PipelineClient("http://sf-daqsync-01:8889")
for p in permanent_pipelines.keys():
if not p.startswith("#"):
try:
cfg = pc.getConfig(permanent_pipelines[p])
if cfg.get("pipeline_type") == "store":
camserver_cameras.append(cfg["camera_name"])
except:
pass
#Resolve URLs
camserver_sources = {}
for c in camserver_cameras:
url=caget(c+":BSREADCONFIG")
url = url.lower().replace(".psi.ch", "")
camserver_sources[url] = c
print c, url
camserver_cfg_urls = [str(x) for x in camserver_sources.keys()]
#Enter direct URLS from ImageBuffer ConfigL file images.source
def remove_comments(input_string):
pattern = r'/\*.*?\*/'
result = re.sub(pattern, '', input_string, flags=re.DOTALL)
return result
file_name = os.path.abspath(expand_path("{script}/test/image.sources"))
file_name = "/afs/psi.ch/user/g/gobbo_a/dev/config/sf_imagebuffer/sources/image.sources"
try:
f=open(file_name,"r")
text =f.read()
finally:
f.close()
text = remove_comments(text)
image_buffer_urls_file = json.loads(text)
image_buffer_urls = [str(x["stream"].lower().replace(".psi.ch", "")) for x in image_buffer_urls_file["sources"]]
for url in image_buffer_urls:
print url
direct_urls = []
cam_server_urls = []
for x in image_buffer_urls:
if "daqsync" in x:
cam_server_urls.append(str(x))
else:
direct_urls.append(str(x))
conflicts = False
#Verify conficts
for url in direct_urls:
if url in cam_server_urls:
print "Conflict: ", url, (camserver_sources[url] if camserver_sources.get(url) else "?")
conflicts=True
elif url in camserver_cfg_urls:
print "Potential conflict: ", url, camserver_cfg_urls[url]
conflicts=True
if not conflicts:
print "No conflicts"
#Utility: get camera_name from direft URLs
#url = direct_urls[0]
#url="tcp://daqsf-sioc-cs-74:9130"
def get_direct_camera_names():
camera_names = {}
for url in direct_urls:
add_device(Stream("st1",url.replace("tcp://daqsf", "tcp://sf"), SocketType.PULL), True)
try:
st1.start()
st1.waitCacheChange(1000)
try:
camera=st1.take().getKeys()[0].replace(":FPICTURE", "")
except:
camera=None
finally:
st1.close()
camera_names[url]=camera
print url, camera
return camera_names
def get_streaming_cameras():
camera_names = {}
for url in image_buffer_urls:
add_device(Stream("st1",url.replace("tcp://daqsf", "tcp://sf"), SocketType.PULL), True)
try:
st1.start()
st1.waitCacheChange(1000)
try:
v=st1.take()
camera=v.getKeys()[0].replace(":FPICTURE", "")
shape = v.getShape(0)
camera_names[url]=camera
print url, camera, shape
except:
pass
finally:
st1.close()
return camera_names
def get_camera_urls():
cs = CameraClient("http://sf-daqsync-01:8888")
cameras = cs.getCameras()
for camera in cameras:
try:
url = caget(camera+":BSREADCONFIG")
except:
url = None
print camera, url

View File

@@ -16,8 +16,7 @@ snapshotFile = None
#cam_server.start(camera_name + "_sp", camera_name + "_sp1")
cam_server.start(camera_name + "_sp1", True)
cam_server.start(camera_name + "_sp", True)
cam_server.waitNext(10000)
stream_value = cam_server.stream.take()

View File

@@ -1,21 +1,23 @@
CAMERA = "SARES20-CAMS142-M3"
CAMERA = "SARFE10-PSSS059"
CAMERA = "SATBD02-DSCR050"
CAMERA = "SATES31-CAMS187-RIXS1"
CAMERA = "SAROP21-PPRM138"
CAMERA = "SARES20-CAMS142-C2"
#CAMERA = "SATES31-CAMS187-RIXS1"
#CAMERA = "SAROP21-PPRM138"
#CAMERA = "SARES20-CAMS142-C2"
#CAMERA = "SATBD02-DSCR050"
#CAMERA = "SARCL01-DSCR170"
CAMERA_URL = caget(CAMERA + ":BSREADCONFIG").replace("tcp://daq", "tcp://")
#CAMERA_URL= "tcp://sf-sioc-cs-83:9020"
#CAMERA_URL= "tcp://sf-sioc-cs-64:9000"
#sCAMERA_URL= "tcp://sf-daqsync-17:9002"
print CAMERA_URL
st1 = Stream("st1", CAMERA_URL, SocketType.PULL)
st1.initialize()
add_device(Stream("st1", CAMERA_URL, SocketType.PULL), True)
st1.start()
st1.waitCacheChange(3000)
try:
r=bscan (st1, records=5, timeout=10.0, save=False, enabled_plots=[st1,])
v= st1.getValues()
#r=bscan (st1, records=5, timeout=10.0, save=False, enabled_plots=[st1,])
#v= st1.getValues()
show_panel(st1)
finally:
st1.close()
pass
#st1.close()

View File

@@ -1,4 +1,4 @@
xxx = create_device("cs://sf-daqsync-01:8889/SLG-LCAM-C041_sp1?channel=intensity&samples=-10&interval=-1")
xxx = create_device("cs://sf-daqsync-01:8889/SLG-LCAM-C041_sp?channel=intensity&samples=-10&interval=-1")
add_device(xxx, True)
show_panel(xxx)

View File

@@ -26,7 +26,7 @@ if get_exec_pars().source == CommandSource.ui:
#dy = "SINDI01-RLLE-STA:SLAVE1-DLTIMER"
#dy = "SLG-LCAM-C042 y_rms"
#dytype = TYPE_CHANNEL
dy = "SATES31-CAMS187-RIXS1_sp1 intensity"
dy = "SATES31-CAMS187-RIXS1_sp intensity"
dytype = TYPE_CAMERA
#dy=get_beam_ok_channel(2)
#dytype = TYPE_STREAM
@@ -128,7 +128,7 @@ try:
_stream.initialize()
_stream.start(True)
if _camname != None:
shared = _camname.endswith("_sp1")
shared = _camname.endswith("_sp")
print "Camera: " , _camname, " shared: ", shared
cam_server.start(_camname, shared )

View File

@@ -4,7 +4,7 @@ from ch.psi.pshell.bs import StreamMerger as StreamMerger
set_exec_pars(save=False)
add_device (Stream("st1", cam_server.getStream("test_furka"), SocketType.SUB), True)
add_device (Stream("st2", cam_server.getStream("simulation_sp1"), SocketType.SUB), True)
add_device (Stream("st2", cam_server.getStream("simulation_sp"), SocketType.SUB), True)
add_device(Stream("st3", dispatcher), force = True)
st3.addScalar(get_beam_ok_channel(1))
st3.addScalar(get_beam_ok_channel(2))

View File

@@ -40,10 +40,8 @@ phase.initialize()
phase0 = phase.read() % 360
#Camera setup
if USE_SCREEN_PANEL:
cam_server.start(camera_name+"_sp1", True) # shared pipeline
else:
cam_server.start(camera_name) # generic pipeline
cam_server.start(camera_name+"_sp", USE_SCREEN_PANEL)
wait_cam_server_message()
x = cam_server.stream.getChild("x_center_of_mass")
dx = cam_server.stream.getChild("x_rms")

161
script/test/TestWireScan.py Normal file
View File

@@ -0,0 +1,161 @@
CALCULATE = True
class CalculateBLM(Readable):
def __init__(self, index):
self.index = index
def getName(self):
return "blm" + str(self.index + 1)
def read(self):
raw = st.take()[blms[self.index] + ":LOSS_SIGNAL_RAW"]
#min_wf=np.min(BLM_NAME:LOSS_SIGNAL_RAW[:1500])
#summa=sum(raw[(min_wf-20):(min_wf+20)])
#min_wf=min(raw[:1500])
min_wf=raw.index(min(raw[:1500]))
summa=sum(raw[(min_wf-20):(min_wf+20)])
print self.index , (min_wf-20) , (min_wf+20)
return summa
import traceback
is_embedded = (get_exec_pars().getCommand(False).parent != None)
has_args = is_embedded or (get_exec_pars().source != CommandSource.ui)
STREAM_CREATION_RETRIES = 3
MAX_RANGE_STEP = 3
run("Devices/Elements")
run("Devices/WireScanner")
run("Diagnostics/sig_process_wrapper")
#set_exec_pars(layout="default")
#Paramter parsing
prefix = args[0] if has_args else "SARCL01-DWSC160" # "SINDI01-DWSC090" # "S10DI01-DWSC010" #"S10CB07-DWSC440" #"SINDI01-DWSC090"
scan_type = args[1] if has_args else WireScanner.WireX1
scan_range = args[2] if has_args else []
cycles = args[3] if has_args else 2
#velocity = args[4] if has_args else 200
n_shot = args[4] if has_args else 200
bpms = args[5] if has_args else [] #get_wire_scanners_bpms(prefix)
blms = args[6] if has_args else get_wire_scanners_blms(prefix)
bkgrd = args[7] if has_args else 10
plt = args[8] if has_args else plot(None, title = "Wire Scan")[0]
save_raw = args[9] if has_args else False
bunch = args[10] if has_args else 1
adaptive = args[11] if has_args else 1 #0=Off, 1=Gain, 2=Gain+range
filter_beam_ok = (args[12] if (has_args and len(args)>12) else True)
do_elog = True if (has_args and (not is_embedded) and (plt is not None)) else False
print has_args, is_embedded, do_elog
print "WireScan parameters: ", prefix, scan_type, scan_range, cycles, n_shot, bpms, blms, bkgrd, bunch, adaptive
#Adaptive mode parameters
MIN_GAIN, MAX_GAIN = 0.5, 1.1
INCREMENT_FACTOR = 0.5
SCAN_RANGE_FACTOR = 6
MAX_RANGE_STEP = 300
SET_BLM_WS_MODE = True
SET_BLM_WS_SETTLING_TIME = 2.0
SET_BLM_WS_BS_READBACK_TIMEOUT = 10000 #ms
#TODO: configure biggerCAJ buffer size and set back to 10000
SAMPLE_CHANNEL_SIZE = 2049 #10000
SAMPLE_CHANNEL_EMPTY_VALUE = 0.0
BPM_SENSORS = [("x","X"+str(bunch)), ("y","Y"+str(bunch)), ("q","Q"+str(bunch))] #(logic name suffix, channel suffix)
#Plot setup
if plt is not None:
plt.clear()
plt.removeMarker(None)
plt.getAxis(plt.AxisId.X).setLabel("Position");
plt.getAxis(plt.AxisId.Y).setLabel("");
plt.getAxis(plt.AxisId.Y2).setLabel("");
plt.setLegendVisible(True);
snapshots = []
rr = get_repetition_rate(bunch)
channels=[]
for i in range (len(blms)):
index_blm = len(channels)
#channels.append (("blm" + str(i+1), blms[i] + ":B" + str(bunch) + "_LOSS_RAW"))
channels.append ((("blm_loss" + str(i+1)) if CALCULATE else ("blm" + str(i+1)) , blms[i] + ":B" + str(bunch) + "_LOSS"))
if plt is not None:
series = LinePlotSeries(blms[i], None, min(i+1, 2))
plt.addSeries(series)
series.setLinesVisible(False)
series.setPointSize(2)
if save_raw or CALCULATE:
channels.append (("blm" + str(i+1) + "_raw" , blms[i] + ":LOSS_SIGNAL_RAW"))
for i in range (len(bpms)):
for sensor in BPM_SENSORS:
channels.append (("bpm" + str(i+1) + "_" + sensor[0], bpms[i] + ":" + sensor[1]))
if SET_BLM_WS_MODE and (len(blms)>0):
channels.append(("blm1_ws_mode", blms[0] + ":WS_RUNNING"))
channels.append(("beam_ok", get_beam_ok_channel(bunch)))
filename = get_exec_pars().path
#Stream creation
for retry in range(STREAM_CREATION_RETRIES):
try:
print "Starting stream..."
st = Stream("pulse_id", dispatcher)
for c in channels:
if c[1].endswith("LOSS_SIGNAL_RAW"):
st.addWaveform(c[0], c[1], int(100.0 / rr), 0)
else:
st.addScalar(c[0], c[1], int(100.0 / rr), 0)
st.initialize()
st.start()
add_device(st, True)
st.waitCacheChange(10000) #Wait stream be running before starting scan
break
except:
print "Error starting stream"
print sys.exc_info()[1]
if retry >= (STREAM_CREATION_RETRIES-1):
raise
else:
print "Retrying"
class Timestamp(Readable):
def read(self):
return st.getTimestamp()
start_time=time.time()
#Pseudo-device returning the wire position
class w_pos(Readable):
def read(self):
return time.time() - start_time
rec =None
scan_complete=False
cur_cycle = 1.0
if plt is not None:
for s in plt.getAllSeries():
s.clear()
plt.removeMarker(None)
l=[w_pos()] ; l.extend(st.getReadables()); l.append(Timestamp());
if CALCULATE:
for i in range (len(blms)):
l.append (CalculateBLM(i))
print "Start scan"
mscan (st, l, 10)
print "End scan"

View File

@@ -0,0 +1,23 @@
channels = [{"offset":0,"name":"S20SY02-DBPM080:Q1","modulo":10},
{"offset":0,"name":"S20SY02-DBLM075:WS_RUNNING","modulo":10},
{"offset":0,"name":"S20SY01-DWSC070:SCANNING","modulo":10},
{"offset":0,"name":"S20SY02-DBLM075:B1_LOSS_RAW","modulo":10},
{"offset":0,"name":"SIN-CVME-TIFGUN-EVR0:BUNCH-1-OK","modulo":10},
{"offset":0,"name":"S20SY01-DBPM060:X1","modulo":10},
{"offset":0,"name":"S20SY01-DBPM060:Y1","modulo":10},
{"offset":0,"name":"S20SY01-DBPM060:Q1","modulo":10},
{"offset":0,"name":"S20SY01-DWSC070:CURR_CYCL","modulo":10},
{"offset":0,"name":"S20SY02-DBPM080:Y1","modulo":10},
{"offset":0,"name":"S20SY03-DBLM025:B1_LOSS_RAW","modulo":10},
{"offset":0,"name":"S20SY02-DBPM080:X1","modulo":10},
{"offset":0,"name":"S20SY01-DWSC070:ENC_1_BS","modulo":10}]
names = [c["name"] for c in channels]
for ch in names:
print ch,
try:
val=bsget(ch)
print str(val)
except:
print sys.exc_info()[1]

View File

@@ -0,0 +1,4 @@
add_device(Stream("st1", "tcp://sf-daqsync-03.psi.ch:9003", SocketType.PULL), True)
st1.setAnalizeHeader(True)
st1.start()
show_panel(st1)

View File

@@ -1,19 +1,16 @@
st1 = Stream("st1", dispatcher)
add_device(st1, force = True)
ch1="SINEG01-DICT210:GUN_CHARGE"
ch1="SATMA02-RLLE-DSP:PHASE-VS"
wv1="SARES11-SPEC125-M1.roi_signal_x_profile"
s1=st1.addScalar(ch1,ch1, 1, 0)
#ch1="SARES11-SPEC125-M2.processing_parameters"
#wv1="SAR-CVME-TIFALL4:EvtSet"
wv2="SAR-CVME-TIFALL6:EvtSet"
#s1=st1.addScalar(ch1,ch1, 1, 0)
#w1=st1.addWaveform(wv1,wv1, 1, 0)
w2=st1.addWaveform(wv2,wv2, 1, 0)
#st1.addWaveform("phase", "SINXB01-RWVG100-DCP10:FOR-PHASE", 10, 0, 2048)
#st1.addWaveform("amplt", "SINXB01-RWVG100-DCP10:FOR-AMPLT", 10, 0, 2048)
st1.initialize()
add_device(st1, force = True)
st1.start(True)
print st1.waitCacheChange(5000)
try:
bscan (st1, 10, title="bscan")
#tscan (st1.getReadables(), 10, 1, title="tscan")
x = st1.take()
finally:
st1.close()
show_panel(st1)

View File

@@ -1,9 +1,8 @@
st1 = Stream("st1", dispatcher)
add_device(st1, force = True)
st1.addScalar("SLAAR21-LCAM-C561:intensity")
st1.addScalar("SLAAR21-LCAM-C561:x_fit_mean")
st1.addScalar("SLAAR21-LCAM-C561:y_fit_mean")
st1.initialize()
add_device(st1, force = True)
st1.start(True)
try:
bscan (st1, 10, save=False)

View File

@@ -0,0 +1,8 @@
run("RFscan/phase_scan_data.py")
for station in station_list:
req = caget(station + "-RSYS:PHASE-SCAN-REQUIRED")
if req == "True":
bpm_ch = station_list[station]["bpm_ch"]
bpm_field = bpm_list[bpm_ch]["bpm_field"]
print(station + "-RSYS:PHASE-SCAN-REQUIRED", 0)

2
script/test/dummy.py Normal file
View File

@@ -0,0 +1,2 @@
time.sleep(10.0)
set_return("Success")

268
script/test/image.sources Normal file
View File

@@ -0,0 +1,268 @@
/*
Get the bsread stream address from an image name (e.g. for SARES20-PROF142-M3:FPICTURE)
caget SARES20-PROF142-M3:BSREADCONFIG
the current camserver/pipline configuration can be found here: https://git.psi.ch/controls_highlevel_applications/cam_server_configuration/blob/master/configuration/pipeline_config/servers.json
*/
{
"sources": [
/* Gun Laser */
{"stream":"tcp://daqsf-sioc-cs-01.psi.ch:8160","split":4,"backend":"sf-imagebuffer"}
/* Machine */
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:8020","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:8030","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:8040","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9000","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9010","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9020","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9030","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9040","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9050","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9060","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9070","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9080","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9100","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9110","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9120","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9130","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9140","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9150","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9160","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9170","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9180","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-11.psi.ch:9190","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-12.psi.ch:9000","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-12.psi.ch:9010","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-13.psi.ch:9000","split":4,"backend":"sf-imagebuffer"}
/* ,{"stream":"tcp://daqsf-sioc-cs-13.psi.ch:9010","split":4,"backend":"sf-imagebuffer"} */
,{"stream":"tcp://daqsf-sioc-cs-14.psi.ch:9000","split":4,"backend":"sf-imagebuffer"}
/* ,{"stream":"tcp://daqsf-sioc-cs-14.psi.ch:9010","split":4,"backend":"sf-imagebuffer"} */
,{"stream":"tcp://daqsf-sioc-cs-14.psi.ch:9020","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-21.psi.ch:9000","split":4,"backend":"sf-imagebuffer"}
/* ,{"stream":"tcp://daqsf-sioc-cs-21.psi.ch:9010","split":4,"backend":"sf-imagebuffer"} */
,{"stream":"tcp://daqsf-sioc-cs-31.psi.ch:9000","split":4,"backend":"sf-imagebuffer"}
/* ,{"stream":"tcp://daqsf-sioc-cs-31.psi.ch:9020","split":4,"backend":"sf-imagebuffer"} */
,{"stream":"tcp://daqsf-sioc-cs-31.psi.ch:9010","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-41.psi.ch:9000","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-41.psi.ch:9010","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-42.psi.ch:9010","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-42.psi.ch:9020","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-42.psi.ch:9030","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-42.psi.ch:9040","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-42.psi.ch:9050","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-51.psi.ch:9000","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-61.psi.ch:9000","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-61.psi.ch:9010","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-62.psi.ch:9000","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-62.psi.ch:9010","split":4,"backend":"sf-imagebuffer"}
/* ,{"stream":"tcp://daqsf-sioc-cs-63.psi.ch:9000","split":4,"backend":"sf-imagebuffer"} */
,{"stream":"tcp://daqsf-sioc-cs-63.psi.ch:9010","split":4,"backend":"sf-imagebuffer"}
/* ,{"stream":"tcp://daqsf-sioc-cs-64.psi.ch:9000","split":4,"backend":"sf-imagebuffer"} SATBD02-DSCR050*/
,{"stream":"tcp://daqsf-sioc-cs-64.psi.ch:9010","split":4,"backend":"sf-imagebuffer"}
/* Aramis Pump Laser */
,{"stream":"tcp://daqsf-sioc-cs-71.psi.ch:8090","split":4,"backend":"sf-imagebuffer"}
/* Athos Machine + Photonics */
,{"stream":"tcp://daqsf-sioc-cs-65.psi.ch:9000","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-65.psi.ch:9010","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-65.psi.ch:9020","split":4,"backend":"sf-imagebuffer"}
/* Aramis Photonics */
/* ,{"stream":"tcp://daqsf-sioc-cs-72.psi.ch:9000","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-72.psi.ch:9010","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-72.psi.ch:9020","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-73.psi.ch:9000","split":4,"backend":"sf-imagebuffer"} */
,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9000","split":4,"backend":"sf-imagebuffer"}
/* ,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9010","split":4,"backend":"sf-imagebuffer"} */
,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9020","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9030","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9040","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9050","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9060","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9070","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9090","split":4,"backend":"sf-imagebuffer"}
/* ,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9100","split":4,"backend":"sf-imagebuffer"} */
,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9120","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9130","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9140","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9150","split":4,"backend":"sf-imagebuffer"}
/* ,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9160","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-74.psi.ch:9170","split":4,"backend":"sf-imagebuffer"} */
/* Aramis ESA-Alvra */
/* ,{"stream":"tcp://daqsf-sioc-cs-81.psi.ch:9000","split":4,"backend":"sf-imagebuffer"} */
,{"stream":"tcp://daqsf-sioc-cs-81.psi.ch:9010","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-81.psi.ch:9030","split":4,"backend":"sf-imagebuffer"}
/* Aramis ESB-Bernina */
,{"stream":"tcp://daqsf-sioc-cs-83.psi.ch:8060","split":4,"backend":"sf-imagebuffer"}
/* ,{"stream":"tcp://daqsf-sioc-cs-83.psi.ch:9000","split":4,"backend":"sf-imagebuffer"} */
,{"stream":"tcp://daqsf-sioc-cs-83.psi.ch:9010","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-83.psi.ch:9020","split":4,"backend":"sf-imagebuffer"}
/* ,{"stream":"tcp://daqsf-sioc-cs-83.psi.ch:9030","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-83.psi.ch:9040","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-83.psi.ch:9050","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-83.psi.ch:9060","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-83.psi.ch:9070","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-83.psi.ch:9080","split":4,"backend":"sf-imagebuffer"} */
,{"stream":"tcp://daqsf-sioc-cs-84.psi.ch:9000","split":4,"backend":"sf-imagebuffer"}
/* ,{"stream":"tcp://daqsf-sioc-cs-85.psi.ch:9000","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-85.psi.ch:9010","split":4,"backend":"sf-imagebuffer"} */
/* Aramis ESC-Cristallina */
,{"stream": "tcp://daqsf-sioc-cs-92.psi.ch:9000","split":4,"backend":"sf-imagebuffer", "labels": ["SARES30-CAMS156-PCO1"]}
/* ,{"stream": "tcp://daqsf-sioc-cs-91.psi.ch:9000","split":4,"backend":"sf-imagebuffer", "labels": ["SARES30-CAMS156-XE"]} */
,{"stream": "tcp://daqsf-sioc-cs-91.psi.ch:9020","split":4,"backend":"sf-imagebuffer", "labels": ["SARES30-CAMS156-SMX-OAV"]}
,{"stream": "tcp://daqsf-sioc-cs-91.psi.ch:9030","split":4,"backend":"sf-imagebuffer", "labels": ["SARES30-CAMS156-SMX-XEYE"]}
,{"stream": "tcp://daqsf-sioc-cs-91.psi.ch:9040","split":4,"backend":"sf-imagebuffer", "labels": ["SARES30-CAMS156-X8M"]}
/* Athos Photonics */
/* ,{"stream":"tcp://daqsf-sioc-cs-a1.psi.ch:9000","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-a1.psi.ch:9010","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-a1.psi.ch:9020","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-a1.psi.ch:9030","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-a1.psi.ch:9040","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-b1.psi.ch:9000","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-b1.psi.ch:9010","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-b1.psi.ch:9020","split":4,"backend":"sf-imagebuffer"} */
/* Athos Laser */
,{"stream":"tcp://daqsf-sioc-cs-b2.psi.ch:8020","split":4,"backend":"sf-imagebuffer", "labels": ["SLAAT01-LCAM-C602"]}
,{"stream":"tcp://daqsf-sioc-cs-b2.psi.ch:8110","split":4,"backend":"sf-imagebuffer", "labels": ["SLAAT01-LCAM-C603"]}
,{"stream":"tcp://daqsf-sioc-cs-b2.psi.ch:8120","split":4,"backend":"sf-imagebuffer"}
/* Athos ESE-Maloja */
/* ,{"stream":"tcp://daqsf-sioc-cs-c2.psi.ch:9000","split":4,"backend":"sf-imagebuffer", "labels": ["SATES21-CAMS154-GIGE1"]} */
/* ,{"stream":"tcp://daqsf-sioc-cs-c2.psi.ch:9010","split":4,"backend":"sf-imagebuffer", "labels": ["SATES21-CAMS154-GIGE2"]} */
/* ,{"stream":"tcp://daqsf-sioc-cs-c2.psi.ch:9020","split":4,"backend":"sf-imagebuffer", "labels": ["SATES21-CAMS154-GIGE3"]} */
/* ,{"stream":"tcp://daqsf-sioc-cs-c2.psi.ch:9030","split":4,"backend":"sf-imagebuffer", "labels": ["SATES21-CAMS154-GIGE4"]} */
/* ,{"stream":"tcp://daqsf-sioc-cs-c2.psi.ch:9040","split":4,"backend":"sf-imagebuffer", "labels": ["SATES21-CAMS154-GIGE5"]} */
/* ,{"stream":"tcp://daqsf-sioc-cs-c2.psi.ch:9050","split":4,"backend":"sf-imagebuffer", "labels": ["SATES21-CAMS154-GIGE6"]} */
/* ,{"stream":"tcp://daqsf-sioc-cs-c2.psi.ch:9060","split":4,"backend":"sf-imagebuffer", "labels": ["SATES21-CAMS154-GIGE7"]} */
/* ,{"stream":"tcp://daqsf-sioc-cs-c2.psi.ch:9070","split":4,"backend":"sf-imagebuffer", "labels": ["SATES21-CAMS154-GIGE8"]} */
/* Athos ESF-Furka */
/* ,{"stream":"tcp://daqsf-sioc-cs-c6.psi.ch:9000","split":4,"backend":"sf-imagebuffer"} */
/* ,{"stream":"tcp://daqsf-sioc-cs-c6.psi.ch:9010","split":4,"backend":"sf-imagebuffer"} */
,{"stream":"tcp://daqsf-sioc-cs-c6.psi.ch:9020","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-c6.psi.ch:9030","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-c6.psi.ch:9040","split":4,"backend":"sf-imagebuffer"}
,{"stream":"tcp://daqsf-sioc-cs-c6.psi.ch:9050","split":4,"backend":"sf-imagebuffer"}
/* PSSS SARFE10-PSSS059 */
,{"stream":"tcp://daqsf-daqsync-11.psi.ch:8890","split":4,"backend":"sf-imagebuffer", "labels": ["SARFE10-PSSS059"]}
,{"stream":"tcp://daqsf-daqsync-11.psi.ch:8891","split":4,"backend":"sf-imagebuffer", "labels": ["SARFE10-PSSS059-LB"]}
/* PMOS SATOP31-PMOS132-2D */
,{"stream":"tcp://daqsf-daqsync-03.psi.ch:9002","split":4,"backend":"sf-imagebuffer", "labels": ["SATOP31-PMOS132-2D"]}
/* SARFE10-PPRM064 */
,{"stream":"tcp://daqsf-daqsync-03.psi.ch:9015","split":4,"backend":"sf-imagebuffer", "labels": ["SARFE10-PPRM064"]}
/* SATES21-CAMS154-M1 */
,{"stream":"tcp://daqsf-daqsync-12.psi.ch:9000","split":4,"backend":"sf-imagebuffer", "labels": ["SATES21-CAMS154-M1"]}
/* SATES24-CAMS161-M1 */
,{"stream":"tcp://daqsf-daqsync-12.psi.ch:9010","split":4,"backend":"sf-imagebuffer", "labels": ["SATES24-CAMS161-M1"]}
/* SATES21-CAMS-PATT1 */
,{"stream":"tcp://daqsf-daqsync-12.psi.ch:9002","split":4,"backend":"sf-imagebuffer", "labels": ["SATES21-CAMS-PATT1"]}
,{"stream":"tcp://daqsf-daqsync-12.psi.ch:9040","split":4,"backend":"sf-imagebuffer", "labels": ["SATES21-CAMS154-GIGE8"]}
,{"stream":"tcp://daqsf-daqsync-12.psi.ch:9041","split":4,"backend":"sf-imagebuffer", "labels": ["SATES21-CAMS154-GIGE6"]}
,{"stream":"tcp://daqsf-daqsync-12.psi.ch:9042","split":4,"backend":"sf-imagebuffer", "labels": ["SATES21-CAMS154-GIGE7"]}
/* PSEN SARES11-SPEC125-M1 */
,{"stream":"tcp://daqsf-daqsync-13.psi.ch:9000","split":4,"backend":"sf-imagebuffer", "labels": ["SARES11-SPEC125-M1"]}
/* SARES11-SPEC125-M2 */
,{"stream":"tcp://daqsf-daqsync-13.psi.ch:9010","split":4,"backend":"sf-imagebuffer", "labels": ["SARES11-SPEC125-M2"]}
/* FLEX SARES12-CAMS128-M1 */
,{"stream":"tcp://daqsf-daqsync-13.psi.ch:9002","split":4,"backend":"sf-imagebuffer", "labels": ["SARES12-CAMS128-M1"]}
/* SARES12-XPR128-C4F1 */
,{"stream":"tcp://daqsf-daqsync-13.psi.ch:9004","split":4,"backend":"sf-imagebuffer", "labels": ["SARES12-XPR128-C4F1"]}
/* SARES11-XMI125-C4P1 */
,{"stream":"tcp://daqsf-daqsync-13.psi.ch:9005","split":4,"backend":"sf-imagebuffer", "labels": ["SARES11-XMI125-C4P1"]}
/* PSEN SARES20-CAMS142-M1 */
,{"stream":"tcp://daqsf-daqsync-14.psi.ch:9002","split":4,"backend":"sf-imagebuffer", "labels": ["SARES20-CAMS142-M1"]}
/* PSEN SARES20-CAMS142-M4 */
,{"stream":"tcp://daqsf-daqsync-14.psi.ch:9000","split":4,"backend":"sf-imagebuffer", "labels": ["SARES20-CAMS142-M4"]}
/* PSEN SARES20-CAMS142-M5 */
,{"stream":"tcp://daqsf-daqsync-14.psi.ch:9010","split":4,"backend":"sf-imagebuffer", "labels": ["SARES20-CAMS142-M5"]}
/* SARES20-PROF142-M1 */
/* ,{"stream": "tcp://daqsf-daqsync-14.psi.ch:9005","split":4,"backend":"sf-imagebuffer", "labels": ["SARES20-PROF142-M1"]} */
/* SPEC SARES20-PROF142-M1 */
,{"stream": "tcp://daqsf-daqsync-11.psi.ch:9003","split":4,"backend":"sf-imagebuffer", "labels": ["SARES20-PROF142-M1"]}
/* SARES20-PROF141-M1 pipeline */
,{"stream": "tcp://daqsf-daqsync-14.psi.ch:9013","split":4,"backend":"sf-imagebuffer", "labels": ["SARES20-PROF141-M1"]}
,{"stream": "tcp://daqsf-daqsync-14.psi.ch:9030","split":4,"backend":"sf-imagebuffer", "labels": ["SLAAR02-LPMO01-C321"]}
,{"stream": "tcp://daqsf-daqsync-14.psi.ch:9031","split":4,"backend":"sf-imagebuffer", "labels": ["SLAAR02-LPMO02-C322"]}
,{"stream": "tcp://daqsf-daqsync-14.psi.ch:9040","split":4,"backend":"sf-imagebuffer", "labels": ["SAROP21-PPRM113"]}
/* SAROP21_PPRM102 pipeline */
,{"stream": "tcp://daqsf-daqsync-14.psi.ch:9006","split":4,"backend":"sf-imagebuffer", "labels": ["SAROP21-PPRM102"]}
/* SAROP21_PPRM138 pipeline */
,{"stream": "tcp://daqsf-daqsync-14.psi.ch:9004","split":4,"backend":"sf-imagebuffer", "labels": ["SAROP21-PPRM138"]}
/*SARES20-DSDPPRM pipeline */
,{"stream": "tcp://daqsf-daqsync-14.psi.ch:9020","split":4,"backend":"sf-imagebuffer", "labels": ["SARES20-DSDPPRM"]}
/* SATES30-CAMS182-GIGE1 */
,{"stream": "tcp://daqsf-daqsync-15.psi.ch:9003","split":4,"backend":"sf-imagebuffer", "labels": ["SATES30-CAMS182-GIGE1"]}
/* SATES30-CAMS182-GIGE2 */
,{"stream": "tcp://daqsf-daqsync-15.psi.ch:9005","split":4,"backend":"sf-imagebuffer", "labels": ["SATES30-CAMS182-GIGE2"]}
/* SATES31-CAMS187-RIXS1 */
,{"stream": "tcp://daqsf-daqsync-15.psi.ch:9001","split":4,"backend":"sf-imagebuffer", "labels": ["SATES31-CAMS187-RIXS1"]}
,{"stream": "tcp://daqsf-daqsync-15.psi.ch:9007","split":4,"backend":"sf-imagebuffer", "labels": ["SATES30-RIXS-CAM01"]}
/* SAROP31-PPRM150 */
,{"stream": "tcp://daqsf-daqsync-16.psi.ch:9002","split":4,"backend":"sf-imagebuffer", "labels": ["SAROP31-PPRM150"]}
/* SAROP31-PPRM113 */
,{"stream": "tcp://daqsf-daqsync-16.psi.ch:9000","split":4,"backend":"sf-imagebuffer", "labels": ["SAROP31-PPRM113"]}
/* SARES30-CAMS156-XE */
,{"stream": "tcp://daqsf-daqsync-16.psi.ch:9006","split":4,"backend":"sf-imagebuffer", "labels": ["SARES30-CAMS156-XE"]}
/* SINBC02-DSRM310 */
,{"stream": "tcp://daqsf-daqsync-10.psi.ch:9011","split":4,"backend":"sf-imagebuffer", "labels": ["SINBC02-DSRM310"]}
/* SINDI02-DSCR075 */
,{"stream": "tcp://daqsf-daqsync-10.psi.ch:9010","split":4,"backend":"sf-imagebuffer", "labels": ["SINDI02-DSCR075"]}
/* S10BD01-DSCR030 */
,{"stream": "tcp://daqsf-daqsync-10.psi.ch:9012","split":4,"backend":"sf-imagebuffer", "labels": ["S10BD01-DSCR030"]}
/* SATBD02-DSCR050 */
,{"stream": "tcp://daqsf-daqsync-10.psi.ch:9013","split":4,"backend":"sf-imagebuffer", "labels": ["SATBD02-DSCR050"]}
/* SARCL01-DSCR170 */
,{"stream": "tcp://daqsf-daqsync-10.psi.ch:9014","split":4,"backend":"sf-imagebuffer", "labels": ["SARCL01-DSCR170"]}
/* S10BC02-DSRM310 */
,{"stream": "tcp://daqsf-daqsync-10.psi.ch:9015","split":4,"backend":"sf-imagebuffer", "labels": ["S10BC02-DSRM310"]}
]
}

View File

@@ -19,11 +19,7 @@ set_exec_pars(name="camera_snapshot")
path = "/image"
snapshotFile = None
if shared:
cam_server.start(camera_name + "_sp1", shared)
else:
cam_server.start(camera_name)
cam_server.start(camera_name + "_sp", shared)
cam_server.waitNext(10000)
stream_value = cam_server.stream.take()

10
script/test/test_bsf.py Normal file
View File

@@ -0,0 +1,10 @@
st1 = Stream("st1", dispatcher)
st1.addScalar("B1","SIN-CVME-TIFGUN-EVR0:BUNCH-1-OK", 1, 0)
st1.addScalar("B2","SIN-CVME-TIFGUN-EVR0:BUNCH-2-OK", 1, 0)
add_device(st1, force = True)
st1.start(True)
try:
bscan (st1, 10, save=False)
finally:
st1.close()

View File

@@ -0,0 +1,33 @@
import ch.psi.pshell.epics.Positioner as Positioner
import ch.psi.pshell.epics.ChannelDouble as ChannelDouble
station = "STEST01" # define param locally
bpm_ch = "SARCL02-DBPM110"
bpm_field = "X1"
run("RFscan/phase_scan_data.py")
x_bpm = ChannelDouble("BPM-X averager", bpm_ch + ":" + bpm_field)
start = caget(station + "-RSYS:SET-SCAN-START")
end = caget(station + "-RSYS:SET-SCAN-STOP")
step = caget(station + "-RSYS:SET-SCAN-STEP")
lat = caget(station + "-RSYS:SET-SCAN-WAIT-TIME")
nb = caget(station + "-RSYS:SET-NUM-AVERAGE")
disp = caget(bpm_ch + ":DISPERSION-OP")
p0 = caget(bpm_list[bpm_ch]["mbnd"] + ":P-READ")
energy0 = p0 - 0.511
A, B = energy0 / (disp * 1000), energy0
phase = Positioner("Phase", station + "-RSYS:SET-VSUM-PHASE", station + "-RSYS:GET-VSUM-PHASE")
phase.config.minValue = -90.0
phase.config.maxValue = 360.0
phase.config.precision = 4
phase.config.resolution = 0.3
phase.config.rotation = True
phase.initialize()
show_panel(phase)
V = ChannelDouble(station + " Amplitude", station + "-RSYS:GET-VSUM-AMPLT")
P = ChannelDouble(station + " Klystron Power", station + "-RSYS:GET-KLY-POWER-GATED")
V.initialize()
P.initialize()
x_bpm.initialize()
phase0 = phase.read()
print(phase0)