source: MML/trunk/machine/SOLEIL/StorageRing/diagnostics/Noise_source_GUI.m @ 4

Last change on this file since 4 was 4, checked in by zhangj, 10 years ago

Initial import--MML version from SOLEIL@2013

File size: 28.1 KB
Line 
1function varargout = Noise_source_GUI(varargin)
2% NOISE_SOURCE_GUI M-file for Noise_source_GUI.fig
3%      NOISE_SOURCE_GUI, by itself, creates a new NOISE_SOURCE_GUI or raises the existing
4%      singleton*.
5%
6%      H = NOISE_SOURCE_GUI returns the handle to a new NOISE_SOURCE_GUI or the handle to
7%      the existing singleton*.
8%
9%      NOISE_SOURCE_GUI('CALLBACK',hObject,eventData,handles,...) calls the local
10%      function named CALLBACK in NOISE_SOURCE_GUI.M with the given input arguments.
11%
12%      NOISE_SOURCE_GUI('Property','Value',...) creates a new NOISE_SOURCE_GUI or raises the
13%      existing singleton*.  Starting from the left, property value pairs are
14%      applied to the GUI before Noise_source_GUI_OpeningFunction gets called.  An
15%      unrecognized property name or invalid value makes property application
16%      stop.  All inputs are passed to Noise_source_GUI_OpeningFcn via varargin.
17%
18%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
19%      instance to run (singleton)".
20%
21% See also: GUIDE, GUIDATA, GUIHANDLES
22
23% Edit the above text to modify the response to help Noise_source_GUI
24
25% Last Modified by GUIDE v2.5 20-Feb-2012 11:05:38
26
27% Begin initialization code - DO NOT EDIT
28gui_Singleton = 1;
29gui_State = struct('gui_Name',       mfilename, ...
30                   'gui_Singleton',  gui_Singleton, ...
31                   'gui_OpeningFcn', @Noise_source_GUI_OpeningFcn, ...
32                   'gui_OutputFcn',  @Noise_source_GUI_OutputFcn, ...
33                   'gui_LayoutFcn',  [] , ...
34                   'gui_Callback',   []);
35if nargin && ischar(varargin{1})
36    gui_State.gui_Callback = str2func(varargin{1});
37end
38
39if nargout
40    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
41else
42    gui_mainfcn(gui_State, varargin{:});
43end
44% End initialization code - DO NOT EDIT
45
46
47% --- Executes just before Noise_source_GUI is made visible.
48function Noise_source_GUI_OpeningFcn(hObject, eventdata, handles, varargin)
49% This function has no output args, see OutputFcn.
50% hObject    handle to figure
51% eventdata  reserved - to be defined in a future version of MATLAB
52% handles    structure with handles and user data (see GUIDATA)
53% varargin   command line arguments to Noise_source_GUI (see VARARGIN)
54
55% Choose default command line output for Noise_source_GUI
56handles.output = hObject;
57
58% Update handles structure
59guidata(hObject, handles);
60
61
62% UIWAIT makes Noise_source_GUI wait for user response (see UIRESUME)
63% uiwait(handles.figure1);
64
65
66% --- Outputs from this function are returned to the command line.
67function varargout = Noise_source_GUI_OutputFcn(hObject, eventdata, handles)
68% varargout  cell array for returning output args (see VARARGOUT);
69% hObject    handle to figure
70% eventdata  reserved - to be defined in a future version of MATLAB
71% handles    structure with handles and user data (see GUIDATA)
72
73% Get default command line output from handles structure
74varargout{1} = handles.output;
75
76
77% --- Executes on selection change in frequency_list.
78function frequency_list_Callback(hObject, eventdata, handles)
79% hObject    handle to frequency_list (see GCBO)
80% eventdata  reserved - to be defined in a future version of MATLAB
81% handles    structure with handles and user data (see GUIDATA)
82
83% Hints: contents = get(hObject,'String') returns frequency_list contents as cell array
84%        contents{get(hObject,'Value')} returns selected item from frequency_list
85
86h2=waitbar(0,'please wait...');
87
88FHCORspos = getspos('FHCOR',family2dev('FHCOR'));
89FVCORspos = getspos('FVCOR',family2dev('FVCOR'));
90HCORspos = getspos('HCOR',family2dev('HCOR'));
91VCORspos = getspos('VCOR',family2dev('VCOR'));
92BPMspos = getspos('BPMx',family2dev('BPMx'));
93BPM_list=dev2tangodev('BPMx',family2dev('BPMx'));
94Nbpm=size(BPM_list,1);
95RF=1;
96
97selection=get(handles.frequency_list,'value')
98
99is_frequency_domain=get(handles.frequency_domain,'value');
100
101if is_frequency_domain
102   
103    xfftamp=getappdata(handles.figure1,'xfftamp');
104    xfftphase=getappdata(handles.figure1,'xfftphase');
105    zfftamp=getappdata(handles.figure1,'zfftamp');
106    zfftphase=getappdata(handles.figure1,'zfftphase');
107    f_bpm=getappdata(handles.figure1,'f_bpm');
108    mean_xfftamp=getappdata(handles.figure1,'mean_xfftamp');
109    mean_zfftamp=getappdata(handles.figure1,'mean_zfftamp');
110    orbitX=xfftamp(:,selection).*sign(xfftphase(:,selection));
111    orbitZ=zfftamp(:,selection).*sign(zfftphase(:,selection));
112else
113    bufferX=getappdata(handles.figure1,'bufferX');
114    bufferZ=getappdata(handles.figure1,'bufferZ');
115    orbitX=bufferX(:,selection);
116    orbitZ=bufferZ(:,selection);
117   
118end
119
120waitbar(1/5,h2);
121[strengthX_slow,slow_corr_orbit_x,idx_sx,efficiency_sx]=mosteffectivecorrector2(orbitX,'HCOR',RF);
122waitbar(2/5,h2);
123[strengthZ_slow,slow_corr_orbit_z,idx_sz,efficiency_sz]=mosteffectivecorrector2(orbitZ,'VCOR',RF);
124waitbar(3/5,h2);
125[strengthX_fast,fast_corr_orbit_x,idx_fx,efficiency_fx]=mosteffectivecorrector2(orbitX,'FHCOR',RF);
126waitbar(4/5,h2);
127[strengthZ_fast,fast_corr_orbit_z,idx_fz,efficiency_fz]=mosteffectivecorrector2(orbitZ,'FVCOR',RF);
128waitbar(5/5,h2);
129
130max_fast_X=max(abs(strengthX_fast));
131max_fast_Z=max(abs(strengthZ_fast));
132%max_fast=max(max_fast_X,max_fast_Z);
133max_slow_X=max(abs(strengthX_slow));
134max_slow_Z=max(abs(strengthZ_slow));
135%max_slow=max(max_slow_X,max_slow_Z);
136
137
138strengthX_slow=strengthX_slow./max_slow_X;
139strengthZ_slow=strengthZ_slow./max_slow_Z;
140strengthX_fast=strengthX_fast./max_fast_X;
141strengthZ_fast=strengthZ_fast./max_fast_Z;
142
143
144plot(handles.Xorbit,BPMspos,orbitX,'k','Linewidth',2)
145set(handles.Xorbit,'XGrid','on','YGrid','on');
146hold(handles.Xorbit,'on')
147plot(handles.Xorbit,BPMspos,slow_corr_orbit_x,'b')
148plot(handles.Xorbit,BPMspos,fast_corr_orbit_x,'r')
149hold(handles.Xorbit,'off')
150xlabel(handles.Xorbit,'position (meters)','fontsize',8,'fontangle','italic')
151title(handles.Xorbit,'Horizontal orbit at selected frequency','FontWeight','Bold');
152legend2=['HCOR [',num2str(idx_sx),']'];
153legend3=['FHCOR [',num2str(idx_fx),']'];
154legend(handles.Xorbit,'Xorbit',legend2,legend3);
155
156disp_corr_strength=get(handles.strength,'value');
157disp_orbit_reduction=get(handles.orbit_reduction,'value');
158
159if disp_orbit_reduction
160        bar(handles.HCOR,HCORspos,efficiency_sx(1:size(efficiency_sx,2)-1),1,'b')
161        hold(handles.HCOR,'on')
162        bar(handles.HCOR,FHCORspos,efficiency_fx(1:size(efficiency_fx,2)-1),0.6,'r')
163        hold(handles.HCOR,'off')
164        ylim(handles.HCOR,[0 100]);
165        title(handles.HCOR,'Horizontal correctors response to correct selected frequency','FontWeight','Bold');
166        set(handles.HCOR,'XGrid','on','YGrid','on');
167        xlabel(handles.HCOR,'position (meters)','fontsize',8,'fontangle','italic')
168        text2=['FHCOR [',num2str(idx_fx),']'];
169        text1=['HCOR [',num2str(idx_sx),']'];
170        legend(handles.HCOR,text1,text2);
171
172        bar(handles.RFCOR,1,efficiency_sx(size(efficiency_sx,2)),'g')
173        ylim(handles.RFCOR,[0 100]);
174         xlim(handles.RFCOR,[0 2]);
175         set(handles.RFCOR,'XGrid','on','YGrid','on');
176        legend(handles.RFCOR,'RF');
177       
178        bar(handles.VCOR,VCORspos,efficiency_sz,1,'b')
179        set(handles.VCOR,'XGrid','on','YGrid','on');
180        hold(handles.VCOR,'on')
181        bar(handles.VCOR,FVCORspos,efficiency_fz,0.6,'r')
182        hold(handles.VCOR,'off')
183        ylim(handles.VCOR,[0 100]);
184        xlabel(handles.VCOR,'position (meters)','fontsize',8,'fontangle','italic')
185        title(handles.VCOR,'Vertical correctors response to correct selected frequency','FontWeight','Bold');
186        legend2=['FVCOR [',num2str(idx_fz),']'];
187        legend1=['VCOR [',num2str(idx_sz),']'];
188        legend(handles.VCOR,legend1,legend2);
189
190else if disp_corr_strength
191        bar(handles.HCOR,HCORspos,strengthX_slow(1:size(strengthX_slow,1)-1),1,'b')
192        hold(handles.HCOR,'on')
193        bar(handles.HCOR,FHCORspos,strengthX_fast(1:size(strengthX_fast,1)-1),0.6,'r')
194        hold(handles.HCOR,'off')
195        ylim(handles.HCOR,[-1 1]);
196        title(handles.HCOR,'Horizontal correctors response to correct selected frequency','FontWeight','Bold');
197        set(handles.HCOR,'XGrid','on','YGrid','on');
198        xlabel(handles.HCOR,'position (meters)','fontsize',8,'fontangle','italic')
199        text2=['FHCOR [',num2str(idx_fx),']'];
200        text1=['HCOR [',num2str(idx_sx),']'];
201        legend(handles.HCOR,text1,text2);
202
203        bar(handles.RFCOR,1,strengthX_slow(size(strengthX_slow,2)),'g')
204        ylim(handles.RFCOR,[-1 1]);
205        xlim(handles.RFCOR,[0 2]);
206        set(handles.RFCOR,'XGrid','on','YGrid','on');
207        legend(handles.RFCOR,'RF');
208       
209        bar(handles.VCOR,VCORspos,strengthZ_slow,1,'b')
210        set(handles.VCOR,'XGrid','on','YGrid','on');
211        hold(handles.VCOR,'on')
212        bar(handles.VCOR,FVCORspos,strengthZ_fast,0.6,'r')
213        hold(handles.VCOR,'off')
214        ylim(handles.VCOR,[-1 1]);
215        xlabel(handles.VCOR,'position (meters)','fontsize',8,'fontangle','italic')
216        title(handles.VCOR,'Vertical correctors response to correct selected frequency','FontWeight','Bold');
217        legend2=['FVCOR [',num2str(idx_fz),']'];
218        legend1=['VCOR [',num2str(idx_sz),']'];
219        legend(handles.VCOR,legend1,legend2);
220
221end
222
223end
224
225
226plot(handles.Zorbit,BPMspos,orbitZ,'k','Linewidth',2)
227set(handles.Zorbit,'XGrid','on','YGrid','on');
228hold(handles.Zorbit,'on')
229plot(handles.Zorbit,BPMspos,slow_corr_orbit_z,'b')
230plot(handles.Zorbit,BPMspos,fast_corr_orbit_z,'r')
231hold(handles.Zorbit,'off')
232xlabel(handles.Zorbit,'position (meters)','fontsize',8,'fontangle','italic')
233title(handles.Zorbit,'Vertical orbit at selected frequency','FontWeight','Bold');
234legend2=['VCOR [',num2str(idx_sz),']'];
235legend3=['FVCOR [',num2str(idx_fz),']'];
236legend(handles.Zorbit,'Zorbit',legend2,legend3);
237
238
239
240x_scale=get(handles.spectrum,'xlim');
241
242if is_frequency_domain
243    semilogy(handles.spectrum,f_bpm,mean(xfftamp(:,:)),'r');
244    hold(handles.spectrum,'on');
245    semilogy(handles.spectrum,f_bpm,mean(zfftamp(:,:)));
246    xlim(handles.spectrum,x_scale);
247    %ylim(handles.spectrum,[10^-3 10^1]);
248    xlabel(handles.spectrum,'frequency (Hz)','fontsize',8,'fontangle','italic')
249    %ylabel(handles.spectrum,'µm/sqrt(Hz)')
250    title(handles.spectrum,'Averaged fft amplitude','FontWeight','Bold');
251    legend(handles.spectrum,'plan H','plan V');
252    set(handles.spectrum,'XGrid','on','YGrid','on');
253    plot(handles.spectrum,f_bpm(selection),mean_xfftamp(selection),'ro','LineWidth',3,'MarkerSize',10)
254    plot(handles.spectrum,f_bpm(selection),mean_zfftamp(selection),'bo','LineWidth',3,'MarkerSize',10)
255    hold(handles.spectrum,'off');
256
257end   
258
259setappdata(handles.figure1,'strengthX_slow',strengthX_slow)
260setappdata(handles.figure1,'strengthZ_slow',strengthZ_slow)
261setappdata(handles.figure1,'strengthX_fast',strengthX_fast)
262setappdata(handles.figure1,'strengthZ_fast',strengthZ_fast)
263setappdata(handles.figure1,'efficiency_sx',efficiency_sx)
264setappdata(handles.figure1,'efficiency_fx',efficiency_fx)
265setappdata(handles.figure1,'efficiency_sz',efficiency_sz)
266setappdata(handles.figure1,'efficiency_fz',efficiency_fz)
267setappdata(handles.figure1,'idx_sx',idx_sx)
268setappdata(handles.figure1,'idx_fx',idx_fx)
269setappdata(handles.figure1,'idx_sz',idx_sz)
270setappdata(handles.figure1,'idx_fz',idx_fz)
271setappdata(handles.figure1,'orbitX',orbitX)
272setappdata(handles.figure1,'orbitZ',orbitZ)
273setappdata(handles.figure1,'BPM_list',BPM_list)
274
275set(handles.save_orbit,'Enable','on');
276
277close(h2)
278
279
280
281
282
283% --- Executes during object creation, after setting all properties.
284function frequency_list_CreateFcn(hObject, eventdata, handles)
285% hObject    handle to frequency_list (see GCBO)
286% eventdata  reserved - to be defined in a future version of MATLAB
287% handles    empty - handles not created until after all CreateFcns called
288
289% Hint: listbox controls usually have a white background on Windows.
290%       See ISPC and COMPUTER.
291if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
292    set(hObject,'BackgroundColor','white');
293end
294
295
296% --- Executes on button press in aquisition.
297function aquisition_Callback(hObject, eventdata, handles)
298% hObject    handle to aquisition (see GCBO)
299% eventdata  reserved - to be defined in a future version of MATLAB
300% handles    structure with handles and user data (see GUIDATA)
301dev='ANS/DG/fofb-sniffer.2';
302fech=10079;
303fmin_display=0;
304fmax_display=2100;
305fmax_memory=2000;
306
307BPM_list=dev2tangodev('BPMx',family2dev('BPMx'));
308Nbpm=size(BPM_list,1);
309
310buff_length=(get(handles.record_length,'String'));
311buffer_length=str2num(buff_length);
312
313tic
314h1=waitbar(0,'please wait...');
315tango_write_attribute2(dev,'recordLengthInSecs',buffer_length)
316pause(1)
317record_length=tango_read_attribute2(dev,'recordLengthInSecs');
318for i=1:buffer_length+2
319    pause(1)
320    waitbar(i/buffer_length,h1);
321end
322data_record_time=toc;
323fprintf('data record time = %f seconds\n',toc)
324
325tic
326for j=1:1:Nbpm
327    bufferX(j,:)=tango_command_inout2(dev,'GetXPosData',uint16((j)));
328    bufferZ(j,:)=tango_command_inout2(dev,'GetZPosData',uint16((j)));
329    Nsamples=size(bufferX(j,:),2);
330end
331data_reading_time=toc;
332fprintf('data download time = %f seconds\n',toc)
333 
334tic
335[xfftamp,zfftamp,xfftphase,zfftphase,f_bpm]=fft_amp_phase_calcul(bufferX,bufferZ,fech);
336fft_computation_time=toc;
337fprintf('fft computation time = %f seconds\n',toc)
338       
339       
340
341
342semilogy(handles.spectrum,f_bpm,mean(xfftamp(:,:)),'r');
343hold(handles.spectrum,'on');
344semilogy(handles.spectrum,f_bpm,mean(zfftamp(:,:)));
345xlim(handles.spectrum,[fmin_display fmax_display]);
346%ylim(handles.spectrum,[10^-3 10^1]);
347xlabel(handles.spectrum,'frequency (Hz)','fontsize',8,'fontangle','italic')
348%ylabel(handles.spectrum,'µm/sqrt(Hz)')
349title(handles.spectrum,'Averaged fft amplitude','FontWeight','Bold');
350legend(handles.spectrum,'plan H','plan V');
351set(handles.spectrum,'XGrid','on','YGrid','on');
352hold(handles.spectrum,'off');
353
354setappdata(handles.figure1,'bufferX', bufferX);
355setappdata(handles.figure1,'bufferZ', bufferZ);
356setappdata(handles.figure1,'xfftamp',xfftamp);
357setappdata(handles.figure1,'xfftphase',xfftphase);
358setappdata(handles.figure1,'zfftamp',zfftamp);
359setappdata(handles.figure1,'zfftphase',zfftphase);
360setappdata(handles.figure1,'f_bpm',f_bpm);
361setappdata(handles.figure1,'mean_xfftamp',mean(xfftamp(:,:)));
362setappdata(handles.figure1,'mean_zfftamp',mean(zfftamp(:,:)));
363
364mean_xfftamp=getappdata(handles.figure1,'mean_xfftamp');
365mean_zfftamp=getappdata(handles.figure1,'mean_zfftamp');
366
367for i=1:size(f_bpm,2)/2
368    list{i}=[num2str(f_bpm(i),'%10.2f'),' Hz    X=',num2str(mean_xfftamp(i),'%10.1f'),'    Z=',num2str(mean_zfftamp(i),'%10.1f')];
369end
370
371set(handles.frequency_list,'string',list)
372
373cla(handles.HCOR)
374cla(handles.VCOR)
375cla(handles.Xorbit)
376cla(handles.Zorbit)
377
378set(handles.strength,'Enable','on');
379set(handles.orbit_reduction,'Enable','on');
380set(handles.save,'Enable','on');
381
382close(h1)
383
384function record_length_Callback(hObject, eventdata, handles)
385% hObject    handle to record_length (see GCBO)
386% eventdata  reserved - to be defined in a future version of MATLAB
387% handles    structure with handles and user data (see GUIDATA)
388
389% Hints: get(hObject,'String') returns contents of record_length as text
390%        str2double(get(hObject,'String')) returns contents of record_length as a double
391
392
393% --- Executes during object creation, after setting all properties.
394function record_length_CreateFcn(hObject, eventdata, handles)
395% hObject    handle to record_length (see GCBO)
396% eventdata  reserved - to be defined in a future version of MATLAB
397% handles    empty - handles not created until after all CreateFcns called
398
399% Hint: edit controls usually have a white background on Windows.
400%       See ISPC and COMPUTER.
401if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
402    set(hObject,'BackgroundColor','white');
403end
404
405
406% --- Executes on button press in load.
407function load_Callback(hObject, eventdata, handles)
408% hObject    handle to load (see GCBO)
409% eventdata  reserved - to be defined in a future version of MATLAB
410% handles    structure with handles and user data (see GUIDATA)
411
412
413fmin_display=0;
414fmax_display=2100;
415fech=10079;
416pathname='/home/operateur/GrpDiagnostics/matlab/data';
417[filename, pathname, filterindex] = uigetfile('*.mat', 'Pick an MAT-file',pathname);
418if isequal(filename,0) || isequal(pathname,0)
419       disp('Loading cancelled by user')
420else
421load([pathname filename],'bufferX','bufferZ','BPM_list');
422end
423
424is_frequency_domain=get(handles.frequency_domain,'value');
425
426if is_frequency_domain
427    [xfftamp,zfftamp,xfftphase,zfftphase,f_bpm]=fft_amp_phase_calcul(bufferX,bufferZ,fech);
428
429    semilogy(handles.spectrum,f_bpm,mean(xfftamp(:,:)),'r');
430    hold(handles.spectrum,'on');
431    semilogy(handles.spectrum,f_bpm,mean(zfftamp(:,:)));
432    xlim(handles.spectrum,[fmin_display fmax_display]);
433    %ylim(handles.spectrum,[10^-3 10^1]);
434    xlabel(handles.spectrum,'frequency (Hz)','fontsize',8,'fontangle','italic')
435    %ylabel(handles.spectrum,'µm/sqrt(Hz)')
436    title(handles.spectrum,'Averaged fft amplitude','FontWeight','Bold');
437    legend(handles.spectrum,'plan H','plan V');
438    set(handles.spectrum,'XGrid','on','YGrid','on');
439    hold(handles.spectrum,'off');
440
441    setappdata(handles.figure1,'xfftamp',xfftamp);
442    setappdata(handles.figure1,'xfftphase',xfftphase);
443    setappdata(handles.figure1,'zfftamp',zfftamp);
444    setappdata(handles.figure1,'zfftphase',zfftphase);
445    setappdata(handles.figure1,'f_bpm',f_bpm);
446    setappdata(handles.figure1,'mean_xfftamp',mean(xfftamp(:,:)));
447    setappdata(handles.figure1,'mean_zfftamp',mean(zfftamp(:,:)));
448    setappdata(handles.figure1,'BPM_list',BPM_list)
449
450    mean_xfftamp=getappdata(handles.figure1,'mean_xfftamp');
451    mean_zfftamp=getappdata(handles.figure1,'mean_zfftamp');
452    for i=1:size(f_bpm,2)/2
453        list{i}=[num2str(f_bpm(i),'%10.2f'),' Hz    X=',num2str(mean_xfftamp(i),'%10.1f'),'    Z=',num2str(mean_zfftamp(i),'%10.1f')];
454    end
455else
456    plot(handles.spectrum,bufferX');
457    hold(handles.spectrum,'on');
458    plot(handles.spectrum,bufferZ');
459    xlabel(handles.spectrum,'position (meters)','fontsize',8,'fontangle','italic')
460    ylabel(handles.spectrum,'BPM(nm)')
461    title(handles.spectrum,'Position','FontWeight','Bold');
462    set(handles.spectrum,'XGrid','on','YGrid','on');
463    hold(handles.spectrum,'off');
464
465    setappdata(handles.figure1,'bufferX',bufferX);
466    setappdata(handles.figure1,'bufferZ',bufferZ);
467
468    for i=1:size(bufferX,2)
469       list{i}=[num2str((i),'%10.2f'),'   X=',num2str(std(bufferX(:,i)),'%10.1f'),'    Z=',num2str(std(bufferZ(:,i)),'%10.1f')];
470    end
471end
472set(handles.frequency_list,'string',list)
473
474cla(handles.HCOR)
475cla(handles.VCOR)
476cla(handles.Xorbit)
477cla(handles.Zorbit)
478
479set(handles.strength,'Enable','on');
480set(handles.orbit_reduction,'Enable','on');
481set(handles.save_orbit,'Enable','off');
482
483
484
485
486
487% --- Executes on button press in save.
488function save_Callback(hObject, eventdata, handles)
489% hObject    handle to save (see GCBO)
490% eventdata  reserved - to be defined in a future version of MATLAB
491% handles    structure with handles and user data (see GUIDATA)
492BPM_list=dev2tangodev('BPMx',family2dev('BPMx'));
493bufferX=getappdata(handles.figure1,'bufferX');
494bufferZ=getappdata(handles.figure1,'bufferZ');
495
496clk=clock;
497year=num2str(clk(1));
498month=num2str(clk(2),'%.2d');
499day=num2str(clk(3),'%.2d');
500hour=[num2str(clk(4),'%.2d'),'h'];
501min=[num2str(clk(5),'%.2d'),'mn'];
502date=['_',year,'_',month,'_',day,'_',hour,'_',min];
503filename=['/home/operateur/GrpDiagnostics/matlab/data/Enregistrement',date,'.mat'];
504
505uisave({'BPM_list','bufferX','bufferZ'},filename)
506       
507
508
509% --- Executes on button press in orbit_reduction.
510function orbit_reduction_Callback(hObject, eventdata, handles)
511% hObject    handle to orbit_reduction (see GCBO)
512% eventdata  reserved - to be defined in a future version of MATLAB
513% handles    structure with handles and user data (see GUIDATA)
514
515% Hint: get(hObject,'Value') returns toggle state of orbit_reduction
516
517value=get(handles.strength,'value');
518if value
519    set(handles.strength,'value',0);
520else
521    set(handles.strength,'value',1);
522end
523disp_corr(hObject, eventdata, handles)
524%frequency_list_Callback(hObject, eventdata, handles)
525
526% --- Executes on button press in strength.
527function strength_Callback(hObject, eventdata, handles)
528% hObject    handle to strength (see GCBO)
529% eventdata  reserved - to be defined in a future version of MATLAB
530% handles    structure with handles and user data (see GUIDATA)
531
532% Hint: get(hObject,'Value') returns toggle state of strength
533value=get(handles.orbit_reduction,'value');
534if value
535    set(handles.orbit_reduction,'value',0);
536else
537    set(handles.orbit_reduction,'value',1);
538end
539disp_corr(hObject, eventdata, handles)
540%frequency_list_Callback(hObject, eventdata, handles)
541
542
543
544function disp_corr(hObject, eventdata, handles)
545
546FHCORspos = getspos('FHCOR',family2dev('FHCOR'));
547FVCORspos = getspos('FVCOR',family2dev('FVCOR'));
548HCORspos = getspos('HCOR',family2dev('HCOR'));
549VCORspos = getspos('VCOR',family2dev('VCOR'));
550
551strengthX_slow=getappdata(handles.figure1,'strengthX_slow');
552strengthZ_slow=getappdata(handles.figure1,'strengthZ_slow');
553strengthX_fast=getappdata(handles.figure1,'strengthX_fast');
554strengthZ_fast=getappdata(handles.figure1,'strengthZ_fast');
555efficiency_sx=getappdata(handles.figure1,'efficiency_sx');
556efficiency_fx=getappdata(handles.figure1,'efficiency_fx');
557efficiency_sz=getappdata(handles.figure1,'efficiency_sz');
558efficiency_fz=getappdata(handles.figure1,'efficiency_fz');
559idx_sx=getappdata(handles.figure1,'idx_sx');
560idx_fx=getappdata(handles.figure1,'idx_fx');
561idx_sz=getappdata(handles.figure1,'idx_sz');
562idx_fz=getappdata(handles.figure1,'idx_fz');
563
564disp_corr_strength=get(handles.strength,'value')
565disp_orbit_reduction=get(handles.orbit_reduction,'value')
566
567if disp_orbit_reduction
568        bar(handles.HCOR,HCORspos,efficiency_sx(1:size(efficiency_sx,2)-1),1,'b')
569        hold(handles.HCOR,'on')
570        bar(handles.HCOR,FHCORspos,efficiency_fx(1:size(efficiency_fx,2)-1),0.6,'r')
571        hold(handles.HCOR,'off')
572        ylim(handles.HCOR,[0 100]);
573        title(handles.HCOR,'Horizontal correctors response to correct selected frequency','FontWeight','Bold');
574        set(handles.HCOR,'XGrid','on','YGrid','on');
575        xlabel(handles.HCOR,'position (meters)','fontsize',8,'fontangle','italic')
576        text2=['FHCOR [',num2str(idx_fx),']'];
577        text1=['HCOR [',num2str(idx_sx),']'];
578        legend(handles.HCOR,text1,text2);
579
580        bar(handles.RFCOR,1,efficiency_sx(size(efficiency_sx,2)),'g')
581        ylim(handles.RFCOR,[0 100]);
582         xlim(handles.RFCOR,[0 2]);
583         set(handles.RFCOR,'XGrid','on','YGrid','on');
584        legend(handles.RFCOR,'RF');
585       
586        bar(handles.VCOR,VCORspos,efficiency_sz,1,'b')
587        set(handles.VCOR,'XGrid','on','YGrid','on');
588        hold(handles.VCOR,'on')
589        bar(handles.VCOR,FVCORspos,efficiency_fz,0.6,'r')
590        hold(handles.VCOR,'off')
591        ylim(handles.VCOR,[0 100]);
592        xlabel(handles.VCOR,'position (meters)','fontsize',8,'fontangle','italic')
593        title(handles.VCOR,'Vertical correctors response to correct selected frequency','FontWeight','Bold');
594        legend2=['FVCOR [',num2str(idx_fz),']'];
595        legend1=['VCOR [',num2str(idx_sz),']'];
596        legend(handles.VCOR,legend1,legend2);
597
598else if disp_corr_strength
599        bar(handles.HCOR,HCORspos,strengthX_slow(1:size(strengthX_slow,1)-1),1,'b')
600        hold(handles.HCOR,'on')
601        bar(handles.HCOR,FHCORspos,strengthX_fast(1:size(strengthX_fast,1)-1),0.6,'r')
602        hold(handles.HCOR,'off')
603        ylim(handles.HCOR,[-1 1]);
604        title(handles.HCOR,'Horizontal correctors response to correct selected frequency','FontWeight','Bold');
605        set(handles.HCOR,'XGrid','on','YGrid','on');
606        xlabel(handles.HCOR,'position (meters)','fontsize',8,'fontangle','italic')
607        text2=['FHCOR [',num2str(idx_fx),']'];
608        text1=['HCOR [',num2str(idx_sx),']'];
609        legend(handles.HCOR,text1,text2);
610
611        bar(handles.RFCOR,1,strengthX_slow(size(strengthX_slow,2)),'g')
612        ylim(handles.RFCOR,[-1 1]);
613        xlim(handles.RFCOR,[0 2]);
614        set(handles.RFCOR,'XGrid','on','YGrid','on');
615        legend(handles.RFCOR,'RF');
616       
617        bar(handles.VCOR,VCORspos,strengthZ_slow,1,'b')
618        set(handles.VCOR,'XGrid','on','YGrid','on');
619        hold(handles.VCOR,'on')
620        bar(handles.VCOR,FVCORspos,strengthZ_fast,0.6,'r')
621        hold(handles.VCOR,'off')
622        ylim(handles.VCOR,[-1 1]);
623        xlabel(handles.VCOR,'position (meters)','fontsize',8,'fontangle','italic')
624        title(handles.VCOR,'Vertical correctors response to correct selected frequency','FontWeight','Bold');
625        legend2=['FVCOR [',num2str(idx_fz),']'];
626        legend1=['VCOR [',num2str(idx_sz),']'];
627        legend(handles.VCOR,legend1,legend2);
628
629end
630
631end
632
633
634plot(handles.Zorbit,BPMspos,orbitZ,'k','Linewidth',2)
635set(handles.Zorbit,'XGrid','on','YGrid','on');
636hold(handles.Zorbit,'on')
637plot(handles.Zorbit,BPMspos,slow_corr_orbit_z,'b')
638plot(handles.Zorbit,BPMspos,fast_corr_orbit_z,'r')
639hold(handles.Zorbit,'off')
640xlabel(handles.Zorbit,'position (meters)','fontsize',8,'fontangle','italic')
641title(handles.Zorbit,'Vertical orbit at selected frequency','FontWeight','Bold');
642legend2=['MESC'];
643legend3=['MEFC'];
644legend(handles.Zorbit,'Zorbit',legend2,legend3);
645
646
647
648x_scale=get(handles.spectrum,'xlim');
649
650
651semilogy(handles.spectrum,f_bpm,mean(xfftamp(:,:)),'r');
652hold(handles.spectrum,'on');
653semilogy(handles.spectrum,f_bpm,mean(zfftamp(:,:)));
654xlim(handles.spectrum,x_scale);
655%ylim(handles.spectrum,[10^-3 10^1]);
656xlabel(handles.spectrum,'frequency (Hz)','fontsize',8,'fontangle','italic')
657%ylabel(handles.spectrum,'µm/sqrt(Hz)')
658title(handles.spectrum,'Averaged fft amplitude','FontWeight','Bold');
659legend(handles.spectrum,'plan H','plan V');
660set(handles.spectrum,'XGrid','on','YGrid','on');
661plot(handles.spectrum,f_bpm(selection),mean_xfftamp(selection),'ro','LineWidth',3,'MarkerSize',10)
662plot(handles.spectrum,f_bpm(selection),mean_zfftamp(selection),'bo','LineWidth',3,'MarkerSize',10)
663hold(handles.spectrum,'off');
664
665setappdata(handles.figure1,'strengthX_slow',strengthX_slow)
666setappdata(handles.figure1,'strengthZ_slow',strengthZ_slow)
667setappdata(handles.figure1,'strengthX_fast',strengthX_fast)
668setappdata(handles.figure1,'strengthZ_fast',strengthZ_fast)
669setappdata(handles.figure1,'efficiency_sx',efficiency_sx)
670setappdata(handles.figure1,'efficiency_fx',efficiency_fx)
671setappdata(handles.figure1,'efficiency_sz',efficiency_sz)
672setappdata(handles.figure1,'efficiency_fz',efficiency_fz)
673setappdata(handles.figure1,'idx_sx',idx_sx)
674setappdata(handles.figure1,'idx_fx',idx_fx)
675setappdata(handles.figure1,'idx_sz',idx_sz)
676setappdata(handles.figure1,'idx_fz',idx_fz)
677setappdata(handles.figure1,'orbitX',orbitX)
678setappdata(handles.figure1,'orbitZ',orbitZ)
679setappdata(handles.figure1,'BPM_list',BPM_list)
680
681set(handles.save_orbit,'Enable','on');
682
683close(h2)
684
685
686% --- Executes on button press in save_orbit.
687function save_orbit_Callback(hObject, eventdata, handles)
688% hObject    handle to save_orbit (see GCBO)
689% eventdata  reserved - to be defined in a future version of MATLAB
690% handles    structure with handles and user data (see GUIDATA)
691orbitX=getappdata(handles.figure1,'orbitX')
692orbitZ=getappdata(handles.figure1,'orbitZ')
693BPM_list=dev2tangodev('BPMx',family2dev('BPMx'));
694
695clk=clock;
696year=num2str(clk(1));
697month=num2str(clk(2),'%.2d');
698day=num2str(clk(3),'%.2d');
699hour=[num2str(clk(4),'%.2d'),'h'];
700min=[num2str(clk(5),'%.2d'),'mn'];
701date=['_',year,'_',month,'_',day,'_',hour,'_',min];
702filename=['/home/operateur/GrpDiagnostics/matlab/data/Enregistrement',date,'.mat'];
703
704uisave({'BPM_list','orbitX','orbitZ'},filename)
705       
706
707
708% --- Executes on button press in frequency_domain.
709function frequency_domain_Callback(hObject, eventdata, handles)
710% hObject    handle to frequency_domain (see GCBO)
711% eventdata  reserved - to be defined in a future version of MATLAB
712% handles    structure with handles and user data (see GUIDATA)
713
714% Hint: get(hObject,'Value') returns toggle state of frequency_domain
715value=get(handles.time_domain,'value');
716if value
717    set(handles.time_domain,'value',0);
718else
719    set(handles.time_domain,'value',1);
720end
721
722
723% --- Executes on button press in time_domain.
724function time_domain_Callback(hObject, eventdata, handles)
725% hObject    handle to time_domain (see GCBO)
726% eventdata  reserved - to be defined in a future version of MATLAB
727% handles    structure with handles and user data (see GUIDATA)
728
729% Hint: get(hObject,'Value') returns toggle state of time_domain
730value=get(handles.frequency_domain,'value');
731if value
732    set(handles.frequency_domain,'value',0);
733else
734    set(handles.frequency_domain,'value',1);
735end
Note: See TracBrowser for help on using the repository browser.