1 | %function tune(istart) |
---|
2 | |
---|
3 | % reglage delta tune à 110 MeV |
---|
4 | |
---|
5 | dtune_inj = [-0.00 -0.1]; % dnu H et dnu V |
---|
6 | dtune_ext = [+0.00 -0.0]; % dnu H et dnu V |
---|
7 | |
---|
8 | m1 =[ 0.88 0.125 ; 0.2 0.716 ] ; |
---|
9 | m2 =inv([ 1 1 ; 110/2750 1 ]) ; |
---|
10 | k_inj = m1*dtune_inj' ; % DI QPF et QPD en A |
---|
11 | k_ext = m1*dtune_ext' *2750/110 ; % DI QPF et QPD en A |
---|
12 | kqp_qf = m2*[k_ext(1) ; k_inj(1)] % DI offset et cur QPF |
---|
13 | kqp_qd = m2*[k_ext(2) ; k_inj(2)] % DI offset et cur QPD |
---|
14 | sprintf(' Delta courant qf : offset %g A et current: %g A', kqp_qf(2) , kqp_qf(1)) |
---|
15 | sprintf('Delta courant qd : offset %g A et current: %g A ', kqp_qd(2) , kqp_qd(2)) |
---|
16 | |
---|
17 | return |
---|
18 | |
---|
19 | temp=tango_read_attribute2('BOO/AE/QD', 'current'); |
---|
20 | qpd_ext = temp.value(2) + kqp_qd(1); |
---|
21 | tango_write_attribute('BOO/AE/QD', 'current', qpd_ext); |
---|
22 | if (tango_error == -1) |
---|
23 | %- handle error |
---|
24 | tango_print_error_stack; |
---|
25 | return |
---|
26 | end |
---|
27 | temp=tango_read_attribute2('BOO/AE/QD', 'waveformOffset'); |
---|
28 | qpd_inj = temp.value(2) + kqp_qd(2); |
---|
29 | if (tango_error == -1) |
---|
30 | %- handle error |
---|
31 | tango_print_error_stack; |
---|
32 | return |
---|
33 | end |
---|
34 | |
---|
35 | |
---|
36 | |
---|
37 | temp=tango_read_attribute2('BOO/AE/QF', 'current'); |
---|
38 | qpf_ext = temp.value(2) + kqp_qf(1); |
---|
39 | tango_write_attribute('BOO/AE/QF', 'current', qpf_ext); |
---|
40 | if (tango_error == -1) |
---|
41 | %- handle error |
---|
42 | tango_print_error_stack; |
---|
43 | return |
---|
44 | end |
---|
45 | |
---|
46 | temp = tango_read_attribute2('BOO/AE/QF', 'waveformOffset'); |
---|
47 | qpf_inj = temp.value(2) + kqp_qf(2); |
---|
48 | tango_write_attribute('BOO/AE/QF', 'waveformOffset', qpf_inj); |
---|
49 | if (tango_error == -1) |
---|
50 | %- handle error |
---|
51 | tango_print_error_stack; |
---|
52 | return |
---|
53 | end |
---|
54 | |
---|
55 | % stepsp('QF', kqp(1)); |
---|
56 | % stepsp('QD', kqp(2)); |
---|
57 | |
---|
58 | % istart=100000; |
---|
59 | % iend=istart+1*512+1; |
---|
60 | % clear a xt zt |
---|
61 | % a=getbpmrawdata( [1 2] ,'nodisplay','struct'); |
---|
62 | % |
---|
63 | % xt=a.Data.X(1,istart:iend); % +10*cos(2*3.14156*0.35*i); |
---|
64 | % zt=a.Data.Z(2,istart:iend) ; |
---|
65 | % |
---|
66 | % nf=iend-istart+1; |
---|
67 | % fx=fft(xt); px=fx.*conj(fx)/nf; xf=(1:nf)/nf; |
---|
68 | % fz=fft(zt); pz=fz.*conj(fz)/nf; zf=(1:nf)/nf; |
---|
69 | % % fx=fft(xt,nf); px=fx.*conj(fx)/nf; xf=(1:nf/2)/nf; |
---|
70 | % % fz=fft(zt,nf); pz=fz.*conj(fz)/nf; zf=(1:nf/2)/nf; |
---|
71 | % clear max |
---|
72 | % tunex=find(px==max(px))/nf |
---|
73 | % clear max |
---|
74 | % tunez=find(pz==max(pz))/nf |
---|
75 | % |
---|
76 | % figure(1001) |
---|
77 | % subplot(1,2,1) |
---|
78 | % plot(xf(2:nf/2),px(2:nf/2)); ylim([0 1]); |
---|
79 | % grid on |
---|
80 | % subplot(1,2,2) |
---|
81 | % plot(zf(2:nf/2),pz(2:nf/2)) |
---|
82 | % suptitle(['TuneX= ' num2str(tunex) ' TuneZ= ' num2str(tunez)]); |
---|
83 | % grid on |
---|
84 | |
---|