def scan_gap(und, minv, maxv, n, t_scan = 1): ''' gap scan -- going up and down one time ''' gmd = np.zeros(n) gap_val = np.zeros(n) #sleep(7.0) for i in range(len(gmd)): if i < n: gap_val[i] = minv + (maxv - minv) * i / float(n) else: gap_val[i] = maxv - (maxv - minv)*(i - n) / float(n) gap_ch = 'TTF2.EXP/SFLASH.UND.MOTOR/'+und+'/GAP.SET' gap_ch_rbv = 'TTF2.EXP/SFLASH.UND.MOTOR/'+und+'/GAP' gap_speed_ch = 'TTF2.EXP/SFLASH.UND.MOTOR/'+und+'/GAP.SPEED' gap_start_ch = 'TTF2.EXP/SFLASH.UND.MOTOR/'+und+'/CMD' res = dcs.set_device_val(gap_ch, gap_val[i]) dcs.set_device_val(gap_start_ch, 1) print 'setting...', gap_val[i] if i==0: sleep(10.0) sleep(2.0) gmd[i] = get_sase(detector = 'sflash.mcp') return gap_val, gmd
def seq_4(): #scan sflash phase shifters ps = 'P1SFUND3' ps_m_ch = 'TTF2.MAGNETS/DIPOLE/'+ps+'M/PS' # main coil ps_m_ch_rbv = 'TTF2.MAGNETS/DIPOLE/'+ps+'M/PS.RBV' # maiin coil ps_c_ch = 'TTF2.MAGNETS/DIPOLE/'+ps+'C/PS' # correction coil ps_c_ch_rbv = 'TTF2.MAGNETS/DIPOLE/'+ps+'C/PS.RBV' # correction coil print 'ps main start ', dcs.get_device_val(ps_m_ch), '/', dcs.get_device_val(ps_m_ch_rbv) print 'ps cor start ', dcs.get_device_val(ps_c_ch), '/', dcs.get_device_val(ps_c_ch_rbv) res = dcs.set_device_val(ps_m_ch, 0.0) res = dcs.set_device_val(ps_c_ch, 0.0)
def scan_ps(dev, minv, maxv, n, t_scan = 1): ''' phase shifter scan -- going up and down one time ''' mcp = np.zeros(n) cor_val = np.zeros(n) #sleep(7.0) for i in range(len(mcp)): if i < n: cor_val[i] = minv + (maxv - minv) * i / float(n) else: cor_val[i] = maxv - (maxv - minv)*(i - n) / float(n) #ps_ch = 'TTF2.MAGNETS/STEERER/P3'+dev+'/PS' ps_ch = 'TTF2.FEEDBACK/FL2.WAVELENGTHCONTROL/P' + dev + '/DELTA_PHI' res = dcs.set_device_val(ps_ch, cor_val[i]) print 'setting...', cor_val[i] if i==0: sleep(20.0) sleep(2.0) mcp[i] = get_sase(detector = 'flash2.mcp') return cor_val, mcp
def scan_rf_knob1(dev, minv, maxv, n, t_scan = 1): ''' scan rf knob using acc1 and acc39 (chirp, 2nd and 3rd order chirp) ''' gmd = np.zeros(n) cor_val = np.zeros(n) #sleep(7.0) for i in range(len(gmd)): if i < n: cor_val[i] = minv + (maxv - minv) * i / float(n) else: cor_val[i] = maxv - (maxv - minv)*(i - n) / float(n) #gmd[i] = get_sase(cor_val[i], dt=t_scan) rf_channel_ampl = 'FLASH.RF/LLRF.CONTROLLER/CTRL.'+dev+'/SP.AMPL' rf_channel_ph = 'FLASH.RF/LLRF.CONTROLLER/CTRL.'+dev+'/SP.PHASE' res = dcs.set_device_val(rf_channel_ph, cor_val[i]) print 'setting...', cor_val[i] if i==0: sleep(10.0) sleep(2.0) gmd[i] = get_sase() return cor_val, gmd
def scan_rf(dev, minv, maxv, n, t_scan = 1): ''' rf device (single phase/amplitude) scan -- going up and down one time ''' gmd = np.zeros(n) cor_val = np.zeros(n) #sleep(7.0) for i in range(len(gmd)): if i < n: cor_val[i] = minv + (maxv - minv) * i / float(n) else: cor_val[i] = maxv - (maxv - minv)*(i - n) / float(n) #gmd[i] = get_sase(cor_val[i], dt=t_scan) rf_channel_ampl = 'FLASH.RF/LLRF.CONTROLLER/CTRL.'+dev+'/SP.AMPL' rf_channel_ph = 'FLASH.RF/LLRF.CONTROLLER/CTRL.'+dev+'/SP.PHASE' res = dcs.set_device_val(rf_channel_ph, cor_val[i]) print 'setting...', cor_val[i] if i==0: sleep(10.0) sleep(2.0) gmd[i] = get_sase() return cor_val, gmd
def scan_cor(device_name, minv, maxv, n, t_scan = 1): ''' device scan (magnets) -- going up and down one time ''' gmd = np.zeros(n) cor_val = np.zeros(n) #sleep(7.0) for i in range(len(gmd)): if i < n: cor_val[i] = minv + (maxv - minv) * i / float(n) else: cor_val[i] = maxv - (maxv - minv)*(i - n) / float(n) #gmd[i] = get_sase(cor_val[i], dt=t_scan) mag_channel = 'TTF2.MAGNETS/STEERER/' + device_name + '/PS' res = dcs.set_device_val(mag_channel, cor_val[i]) print 'setting...', cor_val[i] if i==0: sleep(10.0) sleep(0.5) gmd[i] = get_sase() return cor_val, gmd
def error_func_ps(x): pen_max = 100.0 #print 'error_func: ', bpm_names, '->', planes for i in xrange(len(unds)): #mag_channel = 'TTF2.MAGNETS/DIPOLE/'+unds[i]+'/PS' mag_channel = 'TTF2.MAGNETS/STEERER/P3'+unds[i]+'/PS' print 'setting', mag_channel, '->',x[i] res = dcs.set_device_val(mag_channel, x[i]) sleep(1.0) sase = get_sase(detector = 'flash2.mcp') alarm = np.max(get_alarms()) print 'alarm:', alarm print 'sase:', sase pen = 0.0 if alarm > 1.0: return pen_max if alarm > 0.7: return alarm * 50.0 pen += alarm pen -= sase print 'penalty:', pen return pen
def seq_5(): #scan sflash undulator gaps und = '1SFUND2' gap_ch = 'TTF2.EXP/SFLASH.UND.MOTOR/'+und+'/GAP.SET' gap_ch_rbv = 'TTF2.EXP/SFLASH.UND.MOTOR/'+und+'/GAP' gap_speed_ch = 'TTF2.EXP/SFLASH.UND.MOTOR/'+und+'/GAP.SPEED' gap_start_ch = 'TTF2.EXP/SFLASH.UND.MOTOR/'+und+'/CMD' val = dcs.get_device_val(gap_ch_rbv) print 'gap start ', val print 'gap speed ', dcs.get_device_val(gap_speed_ch), 'mm/s' res = dcs.set_device_val(gap_ch, 210.0) val = dcs.get_device_val(gap_ch_rbv) print 'gap start ', val dcs.set_device_val(gap_start_ch, 1)
def error_func(x): pen_max = 100.0 #print 'error_func: ', bpm_names, '->', planes for i in xrange(len(x)): print 'setting ->',x[i] v1, phi1, v39, phi39=find_parameters_RF1(c0,c1,x[0],c3) v2, phi2 = find_parameters_RF2(c4,c5) dcs.set_device_val(rf_ch_amp_1, v1) dcs.set_device_val(rf_ch_ph_1, phi1) dcs.set_device_val(rf_ch_amp_39, v39) dcs.set_device_val(rf_ch_ph_39, phi39) #dcs.set_device_val(rf_ch_amp_2, v2) #dcs.set_device_val(rf_ch_ph_2, phi2) print 'c:', c0, c1, c2, c3, c4, c5 sleep(1.0) sase = get_sase() alarm = np.max(get_alarms()) f, spec = get_spectrum() print 'alarm:', alarm print 'sase:', sase print 'max spec:', np.max(spec) pen = 0.0 if alarm > 1.0: return pen_max if alarm > 0.7: return alarm * 50.0 pen += alarm sase_weight = 1.0 spec_weight = 1.0 pen -= sase * sase_weight #pen -= np.max(spec) * spec_weight return pen
def scan_one_qmover(device_name, step = 0.004, stop_alarm_level = 0.6): ''' go up then down and then up again. Change direction when stop_alarm_level of alarm level reached. ''' mover_ch = 'TTF2.MAGNETS/QUAD.MOVER/' + device_name + '/FODOMETER.REFERENCE' mover_ch_rbv = 'TTF2.MAGNETS/QAUD.MOVER/' + device_name + '/FODOMETER' start_ch = 'TTF2.MAGNETS/QUAD.MOVER/' + device_name + '/CMD' val = dcs.get_device_val(mover_ch) vals = [] rbvs = [] n_max = 500 i_set = 0 while True: i_set += 1 val += step # set device res = dcs.set_device_val(mover_ch, val) dcs.set_device_val(start_ch, 7) sleep(1.0) #rbvs.append(rbv) vals.append(val) alarm = np.max(get_alarms()) #print "\n\n rbv = {2} nval={0} alarm={1}\n\n".format(val, alarm, rbv) if alarm >= stop_alarm_level or val > 0.9 or val < -0.9: step = - step if i_set > n_max: break return vals
def error_func(x): pen_max = 100.0 #print 'error_func: ', bpm_names, '->', planes for i in xrange(len(x)): print 'x[{0}]={1}'.format(i, x[i]) if abs(x[i]) > 50.5: return pen_max for i in xrange(len(correctors)): mag_channel = 'TTF2.MAGNETS/STEERER/' + correctors[i] + '/PS' print 'setting', mag_channel, '->',x[i] res = dcs.set_device_val(mag_channel, x[i]) sleep(1.6) sase = get_sase(detector='gmd_fl1_slow') alarm = np.max(get_alarms()) z1, z2 = get_sase_pos() print 'alarm:', alarm print 'sase:', sase print 'pointing', z1, z2, 'weights', weight_gmd_bpm_1, weight_gmd_bpm_2 pen = 0.0 if alarm > 1.0: return pen_max if alarm > 0.7: return alarm * 50.0 pen += alarm pen -= sase #pen += weight_gmd_bpm_1* 0*(z1[1]**2 + 0*z1[0]**2) + weight_gmd_bpm_2 * (z2[0]**2 + 0*z2[1]**2) #if sase < 0.9 * sase_ref: pen += 1000.0 #pen += np.abs(z1[1]) print 'penalty:', pen return pen
def seq_6(): #flash2 phase shifters und = 'FL2SASE13' gap_ch = 'FLASH.UTIL/FL2.UND.MOTOR/'+und+'/GAP.SET' gap_ch_rbv = 'FLASH.UTIL/FL2.UND.MOTOR/'+und+'/GAP' gap_speed_ch = 'FLASH.UTIL/FL2.UND.MOTOR/'+und+'/GAP.SPEED' gap_start_ch = 'FLASH.UTIL/FL2.UND.MOTOR/'+und+'/CMD' print 'gap start ', dcs.get_device_val(gap_ch_rbv) print 'gap speed ', dcs.get_device_val(gap_speed_ch), 'mm/s' ps_ch = 'TTF2.MAGNETS/STEERER/P3'+und+'/PS' ps_ch_rbv = 'TTF2.MAGNETS/STEERER/P3'+und+'/PS.RBV' print 'ps start ', dcs.get_device_val(ps_ch), '/', dcs.get_device_val(ps_ch_rbv) res = dcs.set_device_val(ps_ch, 2.0)
def error_func_gap(x): pen_max = 100.0 for i in xrange(len(x)): print 'x[{0}]={1}'.format(i, x[i]) if x[i] < 10.0 or x[i] > 220.0: return pen_max #print 'error_func: ', bpm_names, '->', planes for i in xrange(len(unds)): gap_ch = 'TTF2.EXP/SFLASH.UND.MOTOR/'+unds[i]+'/GAP.SET' gap_ch_rbv = 'TTF2.EXP/SFLASH.UND.MOTOR/'+unds[i]+'/GAP' gap_speed_ch = 'TTF2.EXP/SFLASH.UND.MOTOR/'+unds[i]+'/GAP.SPEED' gap_start_ch = 'TTF2.EXP/SFLASH.UND.MOTOR/'+unds[i]+'/CMD' print 'setting', gap_ch, '->',x[i] res = dcs.set_device_val(gap_ch, x[i]) #dcs.set_device_val(gap_start_ch, 1) sleep(1.0) sase = get_sase(detector = 'flash2.mcp') alarm = np.max(get_alarms()) print 'alarm:', alarm print 'sase:', sase pen = 0.0 if alarm > 1.0: return pen_max if alarm > 0.7: return alarm * 50.0 pen += alarm pen -= sase print 'penalty:', pen return pen
def scan_one_cor(device_name, start_val = 0.0, step = 0.01, stop_alarm_level = 0.6): ''' go up then down and then up again. Change direction when stop_alarm_level of alarm level reached. ''' mag_channel = 'TTF2.MAGNETS/STEERER/' + device_name + '/PS' mag_channel_rbv = 'TTF2.MAGNETS/STEERER/' + device_name + '/PS.RBV' val = start_val vals = [] rbvs = [] n_max = 5000 i_set = 0 while True: i_set += 1 val += step # set device res = dcs.set_device_val(mag_channel, val) sleep(2.0) rbv = dcs.get_device_val(mag_channel_rbv) rbvs.append(rbv) vals.append(val) alarm = np.max(get_alarms()) print "\n\n rbv = {2} nval={0} alarm={1}\n\n".format(val, alarm, rbv) if alarm >= stop_alarm_level: step = - step if i_set > n_max: break return (vals, rbvs)
from pylab import * import ocelot.mint.swig.dcs as dcs print 'corrector setting test...' #mag_name = 'H3UND2' mag_name = 'V14SMATCH' mag_channel_rbv = 'TTF2.MAGNETS/STEERER/' + mag_name + '/PS.RBV' mag_channel = 'TTF2.MAGNETS/STEERER/' + mag_name + '/PS' val = dcs.get_device_val(mag_channel_rbv) print 'before rbv:', val res = dcs.set_device_val(mag_channel, 1.255) print 'setting result returned ', res val = dcs.get_device_val(mag_channel_rbv) print 'after. rbv:', val
def measure_response_2(steerer1, steerer2, step1, step2, n_steps = 3): ''' response for blms, bpms, sase, ''' bpm_names = ['4UND3', '5UND3'] bpm_names = ['1TCOL', '6TCOL', '8TCOL', '3ECOL', '5ECOL', '2ORS', '7ORS', '9ORS', '12ORS', '1SFUND2', '1SFUND3', '1SFUND4', '1SFELC', '1SMATCH', '6SMATCH', '13SMATCH', '14SMATCH', '2UND1', '4UND1', '5UND1', '2UND2', '4UND2', '5UND2', '2UND3', '4UND3', '5UND3', '2UND4', '4UND4', '5UND4', '2UND5', '4UND5', '5UND5', '2UND6', '4UND6', '5UND6'] bpms = [] for bpm_name in bpm_names: bpm = dcs.BPM("TTF2.DIAG/BPM/" + bpm_name) bpms.append(bpm) blms = [] resp_funcs = [] rf = ResponseFunction() rf.device = steerer1 + ':' + steerer2 rf.set_vals = [] rf.rb_vals = [] rf.bpm_vals = {} for bpm in bpm_names: rf.bpm_vals[bpm] = [] rf.blm_vals = {} rf.sase_vals = [] mag_channel_1 = 'TTF2.MAGNETS/STEERER/' + steerer1 + '/PS' mag_channel_rbv_1 = 'TTF2.MAGNETS/STEERER/' + steerer1 + '/PS.RBV' mag_channel_2 = 'TTF2.MAGNETS/STEERER/' + steerer2 + '/PS' mag_channel_rbv_2 = 'TTF2.MAGNETS/STEERER/' + steerer2 + '/PS.RBV' rbv_1 = dcs.get_device_val(mag_channel_rbv_1) init_v_1 = dcs.get_device_val(mag_channel_1) print 'reading ', mag_channel_1, init_v_1, rbv_1 rbv_2 = dcs.get_device_val(mag_channel_rbv_2) init_v_2 = dcs.get_device_val(mag_channel_2) print 'reading ', mag_channel_2, init_v_2, rbv_2 set_val_1 = init_v_1 set_val_2 = init_v_2 t_out = 10.0 for i in range(n_steps): print '...', set_val_1, set_val_2, '...' set_val_1 += step1 set_val_2 += step2 dcs.set_device_val(mag_channel_1, set_val_1) dcs.set_device_val(mag_channel_2, set_val_2) sleep(t_out) rbv_1 = dcs.get_device_val(mag_channel_rbv_1) rbv_2 = dcs.get_device_val(mag_channel_rbv_2) rf.set_vals.append(set_val_1) rf.rb_vals.append(rbv_1) for i_bpm in range(len(bpms)): dcs.get_bpm_val(bpms[i_bpm]) rf.bpm_vals[bpm_names[i_bpm]].append((bpms[i_bpm].x,bpms[i_bpm].y)) rf.sase_vals.append( get_sase() ) for i in range(2*n_steps): print '...', set_val_1, set_val_2, '...' set_val_1 -= step1 set_val_2 -= step2 dcs.set_device_val(mag_channel_1, set_val_1) dcs.set_device_val(mag_channel_2, set_val_2) sleep(t_out) rbv_1 = dcs.get_device_val(mag_channel_rbv_1) rbv_2 = dcs.get_device_val(mag_channel_rbv_2) rf.set_vals.append(set_val_1) rf.rb_vals.append(rbv_1) for i_bpm in range(len(bpms)): dcs.get_bpm_val(bpms[i_bpm]) rf.bpm_vals[bpm_names[i_bpm]].append((bpms[i_bpm].x,bpms[i_bpm].y)) rf.sase_vals.append( get_sase() ) for i in range(n_steps): print '...', set_val_1, set_val_2, '...' set_val_1 += step1 set_val_2 += step2 dcs.set_device_val(mag_channel_1, set_val_1) dcs.set_device_val(mag_channel_2, set_val_2) sleep(t_out) rbv_1 = dcs.get_device_val(mag_channel_rbv_1) rbv_2 = dcs.get_device_val(mag_channel_rbv_2) rf.set_vals.append(set_val_1) rf.rb_vals.append(rbv_1) for i_bpm in range(len(bpms)): dcs.get_bpm_val(bpms[i_bpm]) rf.bpm_vals[bpm_names[i_bpm]].append((bpms[i_bpm].x,bpms[i_bpm].y)) rf.sase_vals.append( get_sase() ) #dcs.set_device_val(mag_channel, init_v) resp_funcs.append(rf) return resp_funcs
def measure_response(steerers, step = 0.01, n_steps = 3): ''' response for blms, bpms, sase, ''' bpm_names = ['4UND3', '5UND3'] bpm_names = ['1TCOL', '6TCOL', '8TCOL', '3ECOL', '5ECOL', '2ORS', '7ORS', '9ORS', '12ORS', '1SFUND2', '1SFUND3', '1SFUND4', '1SFELC', '1SMATCH', '6SMATCH', '13SMATCH', '14SMATCH', '2UND1', '4UND1', '5UND1', '2UND2', '4UND2', '5UND2', '2UND3', '4UND3', '5UND3', '2UND4', '4UND4', '5UND4', '2UND5', '4UND5', '5UND5', '2UND6', '4UND6', '5UND6'] bpms = [] for bpm_name in bpm_names: bpm = dcs.BPM("TTF2.DIAG/BPM/" + bpm_name) bpms.append(bpm) blms = [] resp_funcs = [] for s in steerers: rf = ResponseFunction() rf.device = s rf.set_vals = [] rf.rb_vals = [] rf.bpm_vals = {} for bpm in bpm_names: rf.bpm_vals[bpm] = [] rf.blm_vals = {} rf.sase_vals = [] mag_channel = 'TTF2.MAGNETS/STEERER/' + s + '/PS' mag_channel_rbv = 'TTF2.MAGNETS/STEERER/' + s + '/PS.RBV' rf_channel_ampl = 'FLASH.RF/LLRF.CONTROLLER/CTRL.ACC23/SP.AMPL' rf_channel_ph = 'FLASH.RF/LLRF.CONTROLLER/CTRL.ACC23/SP.PHASE' # TODO: rename mag_channel dev_channel #mag_channel = mag_channel_rbv = rf_channel_ph rbv = dcs.get_device_val(mag_channel_rbv) init_v = dcs.get_device_val(mag_channel) print 'reading ', mag_channel, init_v, rbv set_val = init_v for i in range(n_steps): set_val += step # set value dcs.set_device_val(mag_channel, set_val) sleep(1.0) rbv = dcs.get_device_val(mag_channel_rbv) rf.set_vals.append(set_val) rf.rb_vals.append(rbv) for i_bpm in range(len(bpms)): #x, y = set_val**2, set_val**3 dcs.get_bpm_val(bpms[i_bpm]) rf.bpm_vals[bpm_names[i_bpm]].append((bpms[i_bpm].x,bpms[i_bpm].y)) rf.sase_vals.append( get_sase() ) for i in range(2*n_steps): set_val -= step # set value dcs.set_device_val(mag_channel, set_val) sleep(1.0) rbv = dcs.get_device_val(mag_channel_rbv) rf.set_vals.append(set_val) rf.rb_vals.append(rbv) for i_bpm in range(len(bpms)): #x, y = set_val**2, set_val**3 dcs.get_bpm_val(bpms[i_bpm]) rf.bpm_vals[bpm_names[i_bpm]].append((bpms[i_bpm].x,bpms[i_bpm].y)) rf.sase_vals.append( get_sase() ) for i in range(n_steps): set_val += step # set value dcs.set_device_val(mag_channel, set_val) rbv = dcs.get_device_val(mag_channel_rbv) sleep(1.0) rf.set_vals.append(set_val) rf.rb_vals.append(rbv) for i_bpm in range(len(bpms)): #x, y = set_val**2, set_val**3 dcs.get_bpm_val(bpms[i_bpm]) rf.bpm_vals[bpm_names[i_bpm]].append((bpms[i_bpm].x,bpms[i_bpm].y)) rf.sase_vals.append( get_sase() ) #dcs.set_device_val(mag_channel, init_v) resp_funcs.append(rf) return resp_funcs
def seq_7(): #chicane print 'chicane setting ', dcs.get_device_val('TTF2.FEEDBACK/CHICANECTRL/V2-6SFELC/ALPHA'), 'mrad' dcs.set_device_val('TTF2.FEEDBACK/CHICANECTRL/V2-6SFELC/ALPHA', 0.0) dcs.set_device_val('TTF2.FEEDBACK/CHICANECTRL/V2-6SFELC/WRITE', 1)
def measure_response(rf_params, init_v = None, step = 10.0, n_steps = 3, delay=0.5): ''' response of sase, orbit, spectrum vs. rf knobs, ''' bpm_names = ['1TCOL', '6TCOL', '8TCOL', '3ECOL', '5ECOL', '2ORS', '7ORS', '9ORS', '12ORS', '1SFUND2', '1SFUND3', '1SFUND4', '1SFELC', '1SMATCH', '6SMATCH', '13SMATCH', '14SMATCH', '2UND1', '4UND1', '5UND1', '2UND2', '4UND2', '5UND2', '2UND3', '4UND3', '5UND3', '2UND4', '4UND4', '5UND4', '2UND5', '4UND5', '5UND5', '2UND6', '4UND6', '5UND6'] bpms = [] for bpm_name in bpm_names: bpm = dcs.BPM("TTF2.DIAG/BPM/" + bpm_name) bpms.append(bpm) blms = [] resp_funcs = [] for s in rf_params: rf = ResponseFunction() rf.device = s rf.set_vals = [] rf.rb_vals = [] rf.bpm_vals = {} for bpm in bpm_names: rf.bpm_vals[bpm] = [] rf.blm_vals = {} rf.sase_vals = [] rf.spec_vals = [] rf_ch_amp_1 = 'FLASH.RF/LLRF.CONTROLLER/CTRL.ACC1/SP.AMPL' rf_ch_ph_1 = 'FLASH.RF/LLRF.CONTROLLER/CTRL.ACC1/SP.PHASE' rf_ch_amp_39 = 'FLASH.RF/LLRF.CONTROLLER/CTRL.ACC39/SP.AMPL' rf_ch_ph_39 = 'FLASH.RF/LLRF.CONTROLLER/CTRL.ACC39/SP.PHASE' rf_ch_amp_2 = 'FLASH.RF/LLRF.CONTROLLER/CTRL.ACC23/SP.AMPL' rf_ch_ph_2 = 'FLASH.RF/LLRF.CONTROLLER/CTRL.ACC23/SP.PHASE' init_amp_1 = dcs.get_device_val(rf_ch_amp_1) init_ph_1 = dcs.get_device_val(rf_ch_ph_1) init_amp_39 = dcs.get_device_val(rf_ch_amp_39) init_ph_39 = dcs.get_device_val(rf_ch_ph_39) init_amp_2 = dcs.get_device_val(rf_ch_amp_2) init_ph_2 = dcs.get_device_val(rf_ch_ph_2) print 'reading rf params', init_amp_1, init_ph_1, init_amp_39, init_ph_39, init_amp_2, init_ph_2 c0,c1,c2,c3 = find_knob_val_RF1(init_amp_1, init_ph_1, init_amp_39, init_ph_39) c4, c5 = find_knob_val_RF2(init_amp_2, init_ph_2) print 'init knobs:', c0,c1,c2,c3, c4, c5 cur_step = step ''' v1, phi1, v39, phi39=find_parameters_RF1(c0,-692.8,c2,c3) dcs.set_device_val(rf_ch_amp_1, v1) dcs.set_device_val(rf_ch_ph_1, phi1) dcs.set_device_val(rf_ch_amp_39, v39) dcs.set_device_val(rf_ch_ph_39, phi39) return None ''' ''' v2, phi2 = find_parameters_RF2(c4,-1588.0) dcs.set_device_val(rf_ch_amp_2, v2) dcs.set_device_val(rf_ch_ph_2, phi2) return None ''' for i in range(n_steps*4): if i == n_steps: cur_step = - step if i == n_steps*3: cur_step = step if s == 'c0': c0 += cur_step if s == 'c1': c1 += cur_step if s == 'c2': c2 += cur_step if s == 'c3': c3 += cur_step if s == 'c4': c4 += cur_step if s == 'c5': c5 += cur_step v1, phi1, v39, phi39=find_parameters_RF1(c0,c1,c2,c3) v2, phi2 = find_parameters_RF2(c4,c5) if s in ['c0','c1','c2','c3']: dcs.set_device_val(rf_ch_amp_1, v1) dcs.set_device_val(rf_ch_ph_1, phi1) dcs.set_device_val(rf_ch_amp_39, v39) dcs.set_device_val(rf_ch_ph_39, phi39) print 'BC1' else: dcs.set_device_val(rf_ch_amp_2, v2) dcs.set_device_val(rf_ch_ph_2, phi2) print 'BC2' print 'knobs:', c0,c1,c2,c3, c4, c5 print 'rf:', v1, phi1, v39, phi39, v2, phi2 sleep(delay) rf.set_vals.append(locals()[s]) for i_bpm in range(len(bpms)): dcs.get_bpm_val(bpms[i_bpm]) rf.bpm_vals[bpm_names[i_bpm]].append((bpms[i_bpm].x,bpms[i_bpm].y)) rf.sase_vals.append( get_sase() ) f, spec = get_spectrum() rf.f = f rf.spec_vals.append(spec) resp_funcs.append(rf) return resp_funcs