Files
sf-op/script/RFscan/GunScan.py
2017-01-30 17:27:56 +01:00

50 lines
1.4 KiB
Python

import ch.psi.pshell.epics.ControlledVariable as ControlledVariable
import ch.psi.pshell.epics.Camtool as Camtool
if get_exec_pars().source == CommandSource.ui:
start = 0.0
stop = 360.0
step = 5.0
nb = 1
lat = 0.100
else:
start = args[0]
stop = args[1]
step = args[2]
nb = int(args[3])
lat = args[4]
disp = 0.32
energy0 = 6.5
phase = ControlledVariable("Phase", "SINEG01-RSYS:SET-VSUM-PHASE-SIM", "SINEG01-RSYS:GET-VSUM-PHASE-SIM")
phase.config.minValue =-45.0
phase.config.maxValue = 360.0
phase.config.resolution = 0.5
phase.initialize()
camtool = Camtool(sflca, 10000)
camtool.startPipeline("simulated")
camtool.startReceiver()
x = camtool.getValue("x_fit_mean")
#x = Channel("SINEG01-RSYS:GET-VSUM-AMPLT-SIM", type = 'd', alias='Amplitude Readback')
#dx = Channel("SINEG01-RSYS:GET-KLY-POWER-SIM", type = 'd', alias='Power Readback')
try:
xb = create_averager(x, nb, 0.100)
dxb = create_averager(dx, nb, 0.100)
r = lscan(phase, [xb, dxb], start, stop, step , latency=lat, after_read = after)
rf_phase = r.getPositions(0)
E = [val.mean/1000.0/disp*energy0 for val in r.getReadable(0)]
dE = [val.mean/1000.0/disp*energy0 for val in r.getReadable(1)]
finally:
phase.close()
V.close()
P.close()
st.close()
p = plot([E, dE],"data", rf_phase, title="Phase scan")[0]
p.addSeries(LinePlotSeries("fit"))
p.getSeries(1).setData(fit_x, fit_y)