Script execution
This commit is contained in:
+120
-34
@@ -16,6 +16,9 @@ Preconditions - RF station is running
|
||||
#################################################################
|
||||
# Parameter SECTION, change it to your RF station before run
|
||||
SECTION = "SINSB02"
|
||||
|
||||
# for 100 Hz and P2P-count = 100 this can be at least 1.1 seconds
|
||||
latency = 0.3
|
||||
#################################################################
|
||||
|
||||
|
||||
@@ -23,22 +26,16 @@ SECTION = "SINSB02"
|
||||
|
||||
|
||||
# some other parameters
|
||||
# for 100 Hz and P2P-count = 100 this can be 1.1 seconds
|
||||
latency = 1.3
|
||||
start = -170.0
|
||||
stop = 180.0
|
||||
step = 10.0
|
||||
|
||||
print "SECTION = ", SECTION
|
||||
print "Start = ", start
|
||||
print "Stop = ", stop
|
||||
print "Step = ", step
|
||||
|
||||
|
||||
|
||||
|
||||
# re-define filename, such that the SECTION is also in the filename
|
||||
set_context(path = "{data}/{year}_{month}/{date}/{date}_{time}_" + str(SECTION) + "_{name}")
|
||||
|
||||
|
||||
#################################################################################
|
||||
# define all PVs
|
||||
import ch.psi.pshell.epics.ProcessVariable as PV
|
||||
|
||||
@@ -59,6 +56,9 @@ mv_pre_jit_phase = PV("PRE_phase_jit" ,SECTION + "-RPRE-DCP10:FOR-PHASE-JIT-P2P"
|
||||
mv_kly_jit_amplt = PV("KLY_amplt_jit" ,SECTION + "-RKLY-DCP10:FOR-AMPLT-JIT-P2P-REL")
|
||||
mv_kly_jit_phase = PV("KLY_phase_jit" ,SECTION + "-RKLY-DCP10:FOR-PHASE-JIT-P2P")
|
||||
|
||||
# auxiliary measured variables, but not scanned
|
||||
#mva_hvps = PV("HVPS" ,SECTION + "-RMOD:V-SET")
|
||||
mva_hvps = PV("HVPS" ,"SINEG01-RMOD:V-SET")
|
||||
|
||||
# initialize all PVs
|
||||
cv_rf_phase.initialize()
|
||||
@@ -72,6 +72,15 @@ mv_pre_jit_phase.initialize()
|
||||
mv_kly_jit_amplt.initialize()
|
||||
mv_kly_jit_phase.initialize()
|
||||
|
||||
mva_hvps.initialize()
|
||||
|
||||
|
||||
|
||||
#################################################################################
|
||||
# scan
|
||||
|
||||
hvps = mva.hvps.read()
|
||||
|
||||
# define current amplitude as saturation amplitude, then define three scans
|
||||
amplt_sat = cv_rf_amplt.read()
|
||||
amplt_m5 = 0.95 * amplt_stop
|
||||
@@ -93,7 +102,7 @@ scan_result = ascan((cv_rf_amplt, cv_rf_phase), (mv_ref_jit_amplt,mv_ref_jit_pha
|
||||
|
||||
|
||||
|
||||
|
||||
#################################################################################
|
||||
# close all PVs
|
||||
cv_rf_phase.close()
|
||||
cv_rf_amplt.close()
|
||||
@@ -106,52 +115,129 @@ mv_pre_jit_phase.close()
|
||||
mv_kly_jit_amplt.close()
|
||||
mv_kly_jit_phase.close()
|
||||
|
||||
mva_hvps.close()
|
||||
|
||||
|
||||
|
||||
#################################################################################
|
||||
# analyze
|
||||
ref_jit_amplt_mean = mean(scan_result.getReadable(0))
|
||||
ref_jit_phase_mean = mean(scan_result.getReadable(1))
|
||||
|
||||
iqm_jit_amplt_mean = mean(scan_result.getReadable(2))
|
||||
iqm_jit_phase_mean = mean(scan_result.getReadable(3))
|
||||
# struct definition to hold all relevant statistics data
|
||||
class statistics_data (object):
|
||||
min = 0.0
|
||||
mean = 0.0
|
||||
max = 0.0
|
||||
sigma = 0.0
|
||||
|
||||
# struct definition for statistics dat aof all three amplitude levels
|
||||
class all_statistics_data (object):
|
||||
sat = statistics_data()
|
||||
m5 = statistics_data()
|
||||
m10 = statistics_data()
|
||||
|
||||
def return_string(self):
|
||||
# give results back as formatted string
|
||||
ret_str = "Statistics:\tmin\tmean\tmax\tstdev"
|
||||
ret_str = ret_str + "\nSaturation :\t" + str(self.sat.min)[:7] + "\t" + str(self.sat.mean)[:7] + "\t" + str(self.sat.max)[:7] + "\t" + str(self.sat.stdev)[:7]
|
||||
ret_str = ret_str + "\n5% out of sat :\t" + str(self.m5.min)[:7] + "\t" + str(self.m5.mean)[:7] + "\t" + str(self.m5.max)[:7] + "\t" + str(self.m5.stdev)[:7]
|
||||
ret_str = ret_str + "\n10% out of sat:\t" + str(self.m10.min)[:7] + "\t" + str(self.m10.mean)[:7] + "\t" + str(self.m10.max)[:7] + "\t" + str(self.m10.stdev)[:7]
|
||||
return ret_str
|
||||
|
||||
|
||||
|
||||
def statistics_calc(data_in):
|
||||
"function calculates the min/max/mean/stdev of an array"
|
||||
temp = statistics_data();
|
||||
temp.mean = mean (data_in)
|
||||
temp.min = min (data_in)
|
||||
temp.max = max (data_in)
|
||||
temp.stdev = stdev(data_in)
|
||||
return temp
|
||||
|
||||
|
||||
def all_statistics_calc(data_in):
|
||||
"function calculates for all three amplitudes the statistics data."
|
||||
temp = all_statistics_data();
|
||||
temp.m10 = statistics_calc (data_in[0:35])
|
||||
temp.m5 = statistics_calc (data_in[36:71])
|
||||
temp.sat = statistics_calc (data_in[72:107])
|
||||
return temp
|
||||
|
||||
|
||||
|
||||
# create emtpy structs
|
||||
ref_jit_amplt = all_statistics_data()
|
||||
ref_jit_phase = all_statistics_data()
|
||||
|
||||
iqm_jit_amplt = all_statistics_data()
|
||||
iqm_jit_phase = all_statistics_data()
|
||||
|
||||
pre_jit_amplt = all_statistics_data()
|
||||
pre_jit_phase = all_statistics_data()
|
||||
|
||||
kly_jit_amplt = all_statistics_data()
|
||||
kly_jit_phase = all_statistics_data()
|
||||
|
||||
|
||||
# calculate statistics
|
||||
ref_jit_amplt = all_statistics_calc(scan_result.getReadable(0))
|
||||
ref_jit_phase = all_statistics_calc(scan_result.getReadable(1))
|
||||
|
||||
iqm_jit_amplt = all_statistics_calc(scan_result.getReadable(2))
|
||||
iqm_jit_phase = all_statistics_calc(scan_result.getReadable(3))
|
||||
|
||||
pre_jit_amplt = all_statistics_calc(scan_result.getReadable(4))
|
||||
pre_jit_phase = all_statistics_calc(scan_result.getReadable(5))
|
||||
|
||||
kly_jit_amplt = all_statistics_calc(scan_result.getReadable(6))
|
||||
kly_jit_phase = all_statistics_calc(scan_result.getReadable(7))
|
||||
|
||||
|
||||
pre_jit_amplt_mean = mean(scan_result.getReadable(4))
|
||||
pre_jit_phase_mean = mean(scan_result.getReadable(5))
|
||||
|
||||
kly_jit_amplt_mean = mean(scan_result.getReadable(6))
|
||||
kly_jit_phase_mean = mean(scan_result.getReadable(7))
|
||||
|
||||
|
||||
#Setting attributes to the scan group
|
||||
path = get_context().group
|
||||
set_attribute(path, "SECTION", SECTION)
|
||||
set_attribute(path, "ref_jit_amplt_mean", ref_jit_amplt_mean)
|
||||
set_attribute(path, "ref_jit_phase_mean", ref_jit_phase_mean)
|
||||
set_attribute(path, "ref_jit_amplt", ref_jit_amplt)
|
||||
set_attribute(path, "ref_jit_phase", ref_jit_phase)
|
||||
|
||||
set_attribute(path, "iqm_jit_amplt_mean", iqm_jit_amplt_mean)
|
||||
set_attribute(path, "iqm_jit_phase_mean", iqm_jit_phase_mean)
|
||||
set_attribute(path, "iqm_jit_amplt", iqm_jit_amplt)
|
||||
set_attribute(path, "iqm_jit_phase", iqm_jit_phase)
|
||||
|
||||
set_attribute(path, "pre_jit_amplt_mean", pre_jit_amplt_mean)
|
||||
set_attribute(path, "pre_jit_phase_mean", pre_jit_phase_mean)
|
||||
set_attribute(path, "pre_jit_amplt", pre_jit_amplt)
|
||||
set_attribute(path, "pre_jit_phase", pre_jit_phase)
|
||||
|
||||
set_attribute(path, "kly_jit_amplt_mean", kly_jit_amplt_mean)
|
||||
set_attribute(path, "kly_jit_phase_mean", kly_jit_phase_mean)
|
||||
set_attribute(path, "kly_jit_amplt", kly_jit_amplt)
|
||||
set_attribute(path, "kly_jit_phase", kly_jit_phase)
|
||||
|
||||
set_attribute(path, "HVPS", hvps)
|
||||
|
||||
|
||||
|
||||
#################################################################################
|
||||
# ELOG
|
||||
#msg = scan_result.print("\t")
|
||||
msg = ""
|
||||
msg = msg + "\nMean:\nREF amplt\t" + str(ref_jit_amplt_mean)[:5] + "\nREF phase\t" + str(ref_jit_phase_mean)[:5] + "\n\nIQM amplt\t" + str(iqm_jit_amplt_mean)[:5] + "\nIQM phase\t" + str(iqm_jit_phase_mean)[:5] + "\n\nPRE amplt\t" + str(pre_jit_amplt_mean)[:5] + "\npre phase\t" + str(pre_jit_phase_mean)[:5] + "\n\nKLY amplt\t" + str(kly_jit_amplt_mean)[:5] + "\nkly phase\t" + str(kly_jit_phase_mean)[:5]
|
||||
msg = msg + "\n\nFile: " + get_context().path
|
||||
|
||||
msg = "HVPS command = " + str(hvps)[:2]"
|
||||
msg = msg + "\n---------------------------------------------------------"
|
||||
msg = msg + "\nREF amplt\t" + ref_jit_amplt.return_string()"
|
||||
msg = msg + "\n\nREF phase\t" + ref_jit_phase.return_string()"
|
||||
msg = msg + "\n---------------------------------------------------------"
|
||||
msg = msg + "\nIQM amplt\t" + iqm_jit_amplt.return_string()"
|
||||
msg = msg + "\n\nIQM phase\t" + iqm_jit_phase.return_string()"
|
||||
msg = msg + "\n---------------------------------------------------------"
|
||||
msg = msg + "\nPRE amplt\t" + pre_jit_amplt.return_string()"
|
||||
msg = msg + "\n\nPRE phase\t" + pre_jit_phase.return_string()"
|
||||
msg = msg + "\n---------------------------------------------------------"
|
||||
msg = msg + "\nKLY amplt\t" + kly_jit_amplt.return_string()"
|
||||
msg = msg + "\n\nKLY phase\t" + kly_jit_phase.return_string()"
|
||||
msg = msg + "\n---------------------------------------------------------"
|
||||
|
||||
print msg
|
||||
|
||||
# save the entry in the logbook
|
||||
#plot_files = get_plot_snapshots("Jitter Scan")
|
||||
#time.sleep(1.0)
|
||||
#elogllrf("Jitter Scan", msg,"Measurement", "RF Stability", SECTION, plot_files)
|
||||
plot_files = get_plot_snapshots("Jitter Scan")
|
||||
time.sleep(1.0)
|
||||
elogllrf("Jitter Scan (HVPS="+str(hvps)[:2]+"V", msg,"Measurement", "RF Stability", SECTION, plot_files)
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user