125 lines
4.1 KiB
Python
125 lines
4.1 KiB
Python
#import ch.psi.pshell.epics.ChannelDouble as ChannelDouble
|
|
import ch.psi.pshell.bs.Scalar as Scalar
|
|
import ch.psi.pshell.epics.DiscretePositioner as DiscretePositioner
|
|
import ch.psi.pshell.epics.ChannelDouble as ChannelDouble
|
|
|
|
|
|
#Arguments
|
|
SAMPLES = 100
|
|
ICTS = ["SINEG01-DICT215", "S10DI01-DICT025", "SARMA01-DICT090", "SARBD01-DICT030"]
|
|
ICTV = ["SINEG01-DICT009:AL1-ICT-VOLTAGE", "S10DI01-DICT113:AL0-ICT-VOLTAGE", "SARMA01-DICT482:AL0-ICT-VOLTAGE","SARBD01-DICT599:AL0-ICT-VOLTAGE"]
|
|
BPMS = ["SINEG01-DBPM340:Q1", "S10DI01-DBPM110:Q1", "SARMA01-DBPM100:Q1", "SARBD01-DBPM040:Q1", "SARUN20-DBPM070:Q1"]
|
|
#ROT = ["SLGJG-LMRM-M031:MOT.VAL"] # Polarizer
|
|
ROT = ["SLGTV-LAPP:SIZE-SET"] # IRIS
|
|
#RANGE = [50.0, 15.0]
|
|
#STEP_SIZE = 5.0
|
|
RANGE = [4.4, 2.0] # IRIS range
|
|
STEP_SIZE = 0.1 # IRIS Step size
|
|
SETTLING_TIME = 3
|
|
SIMULATION = False
|
|
do_elog = True
|
|
|
|
|
|
rot_positioners = []
|
|
for i in range(len(ROT)):
|
|
rot_positioners.append( DummyPositioner("rot " + str(i+1)) if SIMULATION else Channel(ROT[i], alias = "rot" + str(i+1)))
|
|
|
|
#Stream creation
|
|
sensors = []
|
|
line_plots = []
|
|
st = Stream("pulse_id", dispatcher)
|
|
st.setFilter("SIN-CVME-TIFGUN-EVR0:BEAMOK == 1")
|
|
for i in range(len(ICTS)):
|
|
ict = Scalar("ict" + str(i+1), st, ICTS[i] + ":B1_CHARGE", 1, 0)
|
|
av = create_averager(ict, SAMPLES, interval = -1)
|
|
av.setMonitored(i>0)
|
|
sensors.append(av)
|
|
sensors.append(av.stdev)
|
|
sensors.append(av.samples)
|
|
line_plots.append(av.samples)
|
|
|
|
for i in range(len(BPMS)):
|
|
bpm = Scalar("bpm" + str(i+1), st, BPMS[i], 1, 0)
|
|
av1 = create_averager(bpm, SAMPLES, interval = -1)
|
|
av1.setMonitored((i>0) or (len(ICTS)>0))
|
|
sensors.append(av1)
|
|
sensors.append(av1.stdev)
|
|
sensors.append(av1.samples)
|
|
line_plots.append(av1.samples)
|
|
|
|
for i in range(len(ICTV)):
|
|
"""
|
|
ictv = Scalar("ictv" + str(i+1), st, ICTV[i], 1, 0)
|
|
av2 = create_averager(ictv, SAMPLES, interval = -1)
|
|
av2.setMonitored((i>0) or (len(ICTS)>0))
|
|
sensors.append(av2)
|
|
sensors.append(av2.stdev)
|
|
sensors.append(av2.samples)
|
|
"""
|
|
ictv = ChannelDouble("ictv" + str(i+1), ICTV[i])
|
|
add_device(ictv, True)
|
|
ictv.monitored = True
|
|
ictv.initialize()
|
|
av2 = create_averager(ictv, SAMPLES/2 , interval = -1)
|
|
av2.setMonitored(True)
|
|
sensors.append(av2)
|
|
add_device(av2, True)
|
|
#sensors.append(ictv)
|
|
|
|
#Scalar("beam_ok" , st, "SIN-CVME-TIFGUN-EVR0:BEAMOK" , 1, 0)
|
|
st.initialize()
|
|
st.start()
|
|
st.waitCacheChange(5000) #Wait stream be running before starting scan
|
|
|
|
|
|
"""
|
|
#Averaging
|
|
aict1 = create_averager(ict1, SAMPLES, interval = -1)
|
|
aict2 = create_averager(ict2, SAMPLES, interval = -1)
|
|
aict3 = create_averager(ict3, SAMPLES, interval = -1)
|
|
aict2.setMonitored(True)
|
|
aict3.setMonitored(True)
|
|
"""
|
|
|
|
#Plot setup
|
|
setup_plotting( line_plots = line_plots)
|
|
|
|
|
|
#Metadata
|
|
set_attribute("/", "Samples" , SAMPLES)
|
|
set_attribute("/", "StepSize" , STEP_SIZE)
|
|
set_attribute("/", "SamplingTime" , SETTLING_TIME)
|
|
set_attribute("/", "Range" , RANGE)
|
|
set_attribute("/", "ICTS" , ICTS)
|
|
set_attribute("/", "ICTV" , ICTV)
|
|
set_attribute("/", "Rot" , ROT)
|
|
set_attribute("/", "BPM" , BPMS)
|
|
|
|
try:
|
|
r=lscan(rot_positioners, sensors, [RANGE[0],] * len(rot_positioners), [RANGE[1],] * len(rot_positioners), [STEP_SIZE,] * len(rot_positioners), latency = SETTLING_TIME)
|
|
#r=bscan(st, 10)
|
|
finally:
|
|
st.close()
|
|
|
|
|
|
# save the entry in the logbook
|
|
if do_elog:
|
|
if get_option("Generated data file:\n" + get_exec_pars().path + "\n\n" + "Save to ELOG?", "YesNo") == "Yes":
|
|
gsa_log_msg = "Data file: " + get_exec_pars().path
|
|
gsa_log_msg = gsa_log_msg + "\nSamples = " + str(SAMPLES)
|
|
gsa_log_msg = gsa_log_msg + "\nStepSize = " + str(STEP_SIZE)
|
|
gsa_log_msg = gsa_log_msg + "\nSamplingTime = " + str(SETTLING_TIME)
|
|
gsa_log_msg = gsa_log_msg + "\nRange = " + str(RANGE)
|
|
gsa_log_msg = gsa_log_msg + "\nICTS = " + str(ICTS)
|
|
gsa_log_msg = gsa_log_msg + "\nBPM = " + str(BPMS)
|
|
|
|
plots = get_plot_snapshots()
|
|
save=[]
|
|
for i in range(len(ICTS)):
|
|
save.append(plots[3*i])
|
|
for i in range(len(BPMS)):
|
|
save.append(plots[3*i])
|
|
elog("Charge scan", gsa_log_msg, save)
|
|
|
|
|