def get_sase_pos():

    x1 = dcs.get_device_val('TTF2.FEL/GMDPOSMON/TUNNEL/IX.POS')
    y1 = dcs.get_device_val('TTF2.FEL/GMDPOSMON/TUNNEL/IY.POS')

    x2 = dcs.get_device_val('TTF2.FEL/GMDPOSMON/BDA/IX.POS')
    y2 = dcs.get_device_val('TTF2.FEL/GMDPOSMON/BDA/IY.POS')
    
    return [ (x1,y1), (x2,y2) ] 
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 get_alarms(blm_names):
    print 'n alarms', len(blm_names)
    alarm_vals = np.zeros(len(blm_names))
    for i in xrange(len(blm_names)):

	#blm_channel = 'TTF2.DIAG/BLM/'+blm_names[i]+'/CH00.TD' 
	#blm_channel = 'FLASH.DIAG/BLM/'+blm_names[i]+'/SIGNAL.TD' 
	#print 'reading blm channel', blm_channel
	#blm_channel = blms[i].id + '/CH00.TD'
	#h = np.array(dcs.get_device_td(blm_channel))
	#print 'max:', np.max( np.abs(h) )

	if blm_names[i].find('FL2') > 0:
		alarm_val = 2000
		blm_channel = 'FLASH.DIAG/BLM/'+blm_names[i]+'/SIGNAL.TD' 
	else:
		blm_channel = 'TTF2.DIAG/BLM/'+blm_names[i]+'/CH00.TD'
		blm_alarm_ch  = ('TTF2.DIAG/BLM/'+blm_names[i]).replace('BLM', 'BLM.ALARM') + '/THRFHI'
		blm_alarm_ch  = ('FLASH.DIAG/BLM/'+blm_names[i]).replace('BLM', 'BLM.ALARM') + '/THRFHI'
		print 'reading alarm channel', blm_alarm_ch
		alarm_val = dcs.get_device_val(blm_alarm_ch) * 1.25e-3 # alarm thr. in Volts
        print 'alarm:', alarm_val

	h = np.array(dcs.get_device_td(blm_channel))

        alarm_vals[i] = np.max( np.abs(h) ) / alarm_val 

    #print alarm_vals
    return alarm_vals 
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 init_gap_vals(unds):
   vals = [0.0]*len(unds)
   for i in range(len(unds)):
      #gap_ch_rbv = 'TTF2.EXP/SFLASH.UND.MOTOR/'+unds[i]+'/GAP.SET' #'FLASH.UTIL/FL2.UND.MOTOR/'+unds[i]+'/GAP.SET'
      gap_ch_rbv = 'FLASH.UTIL/FL2.UND.MOTOR/'+unds[i]+'/GAP'
      vals[i] = dcs.get_device_val(gap_ch_rbv)

   return vals
def init_ps_vals(unds):
   vals = [0.0]*len(unds)
   for i in range(len(unds)):
      #ps_ch_rbv = 'TTF2.MAGNETS/DIPOLE/'+unds[i]+'/PS' # 'TTF2.MAGNETS/STEERER/P3'+unds[i]+'/PS.RBV' 
      ps_ch_rbv = 'TTF2.MAGNETS/STEERER/P3'+unds[i]+'/PS.RBV' 
      vals[i] = dcs.get_device_val(ps_ch_rbv)

   return vals
Пример #7
0
def get_sase():
    #gmd_channel = 'TTF2.DAQ/PHFLUX/OUT33/VAL' 
    gmd_channel = 'TTF2.FEL/BKR.FLASH.STATE/BKR.FLASH.STATE/SLOW.INTENSITY' 
    
    n_avg = 1000
    val = 0.0
    for i in xrange(n_avg):
	    val += dcs.get_device_val(gmd_channel) / n_avg
    return val
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 get_sase_old():
    #gmd_channel = 'TTF2.DAQ/PHFLUX/OUT33/VAL' 
    gmd_channel = 'TTF2.FEL/BKR.FLASH.STATE/BKR.FLASH.STATE/SLOW.INTENSITY' 

    n_avg = 100
    val = 0.0
    for i in xrange(n_avg):
	    val += dcs.get_device_val(gmd_channel) / n_avg


    if val <= 5.0: return val*0.00

    return val
def get_sase(detector='gmd_default'):

    if detector == 'mcp':
	    # incorrect
	    return dcs.get_device_val('TTF2.DIAG/MCP.HV/MCP.HV1/HV_CURRENT')
	    #return np.abs( np.mean(h) )

    if detector == 'flash2.mcp':
	    v = 0.0
	    n_av = 100
	    for i in range(0,n_av):
		    v += np.max( np.abs(dcs.get_device_td('FLASH.DIAG/MCP.ADC/FL2MCP/MCP1.TD')))
	    return v / n_av
	    #return np.abs( np.mean(h) )


    if detector == 'sflash.mcp':
	    val = 0.0
	    #h = dcs.get_device_td('TTF2.EXP/DIAGMCP.ADC/SFLASH2.0/CH02.TD')
	    #return np.max(h)
	    
	    for i in range(0,1000):
		    h = dcs.get_device_td('TTF2.EXP/DIAGMCP.ADC/SFLASH2.0/CH02.TD')
		    if val < np.max(h): val = np.max(h)
		    sleep(0.001)
		    #val += h[700] / 100.0
	    #return h[7000]
	    return val

    if detector == 'gmd_fl1_slow':
	     return dcs.get_device_val('TTF2.FEL/BKR.FLASH.STATE/BKR.FLASH.STATE/SLOW.INTENSITY' ) 
	    

    # default 'BKR' gmd
    h = np.array(dcs.get_device_td('TTF2.FEL/BKR.FLASH.STATE/BKR.FLASH.STATE/ENERGY.CLIP.SPECT'))
    val = np.mean(h)
    return val

    '''
def get_alarms():
    #print 'n alarms', len(blm_names)
    alarm_vals = np.zeros(len(blm_names))
    for i in xrange(len(blm_names)):
        blm_channel = blms[i].id + '/CH00.TD'
        h = np.array(dcs.get_device_td(blm_channel))
        #print 'max:', np.max( np.abs(h) )
        blm_alarm_ch = blms[i].id.replace('BLM', 'BLM.ALARM') + '/THRFHI'
        alarm_val = dcs.get_device_val(
            blm_alarm_ch) * 1.25e-3  # alarm thr. in Volts
        #print 'alarm:', alarm_val
        alarm_vals[i] = np.max(np.abs(h)) / alarm_val

    return alarm_vals
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 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) 
def max_spec(rf_params, correctors):
    '''
    optimization of the spectrum (width/density???) with rf parameters
    use correctors to restore orbit after each rf step???
    '''
    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)
    

    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
    
        
    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

    x = [c2]

    res  = opt.fmin(error_func,x,xtol=1e-3, maxiter=100, maxfun=100)
Пример #15
0
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 
def init_corrector_vals(correctors):
   vals = [0.0]*len(correctors)#np.zeros(len(correctors))
   for i in range(len(correctors)):
      mag_channel = 'TTF2.MAGNETS/STEERER/' + correctors[i] + '/PS'
      vals[i] = dcs.get_device_val(mag_channel)
   return vals
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 get_pyro():
    pyro_1_ch = 'TTF2.FEEDBACK/LONGITUDINAL/MONITOR5/MEAN_AVG'
    p1 = dcs.get_device_val(pyro_1_ch)
    #pyro_2_ch = 'TTF2.FEEDBACK/LONGITUDINAL/MONITOR8/MEAN_AVG'
    #p2 = dcs.get_device_val(pyro_2_ch)
    return p1
from pylab import *

import ocelot.mint.swig.dcs as dcs

print 'rf test...'

rf_channel = 'FLASH.RF/LLRF.DAQ/VS.ACC23/AMPL.TD'
rf_channel_ampl = 'FLASH.RF/LLRF.CONTROLLER/CTRL.ACC23/SP.AMPL'
rf_channel_ph = 'FLASH.RF/LLRF.CONTROLLER/CTRL.ACC23/SP.PHASE'
rf_ampl = dcs.get_device_val(rf_channel_ampl)
rf_ph = dcs.get_device_val(rf_channel_ph)
print 'rf:', rf_ampl, rf_ph


h = np.array(dcs.get_device_td(rf_channel))
print np.max( np.abs(h) ), len(h)

pyro_1_ch = 'TTF2.FEEDBACK/LONGITUDINAL/MONITOR5/MEAN_AVG'
print 'pyro1:', dcs.get_device_val(pyro_1_ch)
pyro_2_ch = 'TTF2.FEEDBACK/LONGITUDINAL/MONITOR8/MEAN_AVG'
print 'pyro2:', dcs.get_device_val(pyro_2_ch)


plt.plot(h)
plt.show()
Пример #20
0
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 
Пример #21
0
for bpm_name in bpm_names:
	bpm = dcs.BPM("TTF2.DIAG/BPM/" + bpm_name)
	dcs.get_bpm_val(bpm)
	print 'bpm read:', bpm.id, bpm.x, bpm.y, bpm.z_pos
	
for blm_name in blm_names:
	blm = dcs.Device("TTF2.DIAG/BLM/" + blm_name)
	dcs.get_device_info(blm)
	blm_channel = blm.id + '/CH00.TD'
	print 'blm info:', blm.id, bpm.z_pos
	h = np.array(dcs.get_device_td(blm_channel))
	print 'max:', np.max(h)
	
	blm_alarm_ch = "TTF2.DIAG/BLM.ALARM/" + blm_name + '/THRFHI'
	val = dcs.get_device_val(blm_alarm_ch)
	print 'alarm:', val * 1.25e-3
	


gmd_channel = 'TTF2.DAQ/PHFLUX/OUT33/VAL'
mag_channel = 'TTF2.MAGNETS/STEERER/H3UND1/PS.RBV'
#blm_channel = 'TTF2.DIAG/BLM/1R.UND1/CH00.TD'
blm_channel = 'FLASH.DIAG/BLM/3.2FL2SASE3/SIGNAL.TD'
h = np.array(dcs.get_device_td(blm_channel))
print 'sum:', np.sum(h)
#plt.plot(h)
#plt.show()

val = dcs.get_device_val(gmd_channel)
print 'gmd:', val
Пример #22
0
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 
for bpm_name in bpm_names:
    bpm = dcs.BPM("TTF2.DIAG/BPM/" + bpm_name)
    dcs.get_bpm_val(bpm)
    print 'bpm read:', bpm.id, bpm.x, bpm.y, bpm.z_pos

for blm_name in blm_names:
    blm = dcs.Device("TTF2.DIAG/BLM/" + blm_name)
    dcs.get_device_info(blm)
    blm_channel = blm.id + '/CH00.TD'
    print 'blm info:', blm.id, bpm.z_pos
    h = np.array(dcs.get_device_td(blm_channel))
    print 'max:', np.max(h)

    blm_alarm_ch = "TTF2.DIAG/BLM.ALARM/" + blm_name + '/THRFHI'
    val = dcs.get_device_val(blm_alarm_ch)
    print 'alarm:', val * 1.25e-3

gmd_channel = 'TTF2.DAQ/PHFLUX/OUT33/VAL'
mag_channel = 'TTF2.MAGNETS/STEERER/H3UND1/PS.RBV'
#blm_channel = 'TTF2.DIAG/BLM/1R.UND1/CH00.TD'
blm_channel = 'FLASH.DIAG/BLM/3.2FL2SASE3/SIGNAL.TD'
h = np.array(dcs.get_device_td(blm_channel))
print 'sum:', np.sum(h)
#plt.plot(h)
#plt.show()

val = dcs.get_device_val(gmd_channel)
print 'gmd:', val

gmd_bpm_x_channel = 'TTF2.FEL/GMDPOSMON/TUNNEL/IX.POS'
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)
Пример #25
0
g[0] = -1.1

print 'sum', f.sum()
print 'addition', f + g


h = dcs.test_func_1d_2(300)
plt.plot(h)

print "parameter getter test..."
p = dcs.get_parameters();
print p.energy

print 'device getter test:'

print dcs.get_device_val("bbb")


print 'device setter test:'

print 'bpm test ...'
bpm = dcs.BPM("bpm_id")

print bpm.id, bpm.x, bpm.y

dcs.get_bpm_val(bpm)

print bpm.id, bpm.x, bpm.y


print 'orbit test ...'