source: MML/trunk/machine/SOLEIL/LT2/emittance/ellipse_v15.m @ 4

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

Initial import--MML version from SOLEIL@2013

File size: 13.1 KB
Line 
1function varargout = ellipse_v15(varargin)  % EN COURS !!!!!!
2% ellipse_v15 M-file for ellipse_v15.fig
3%      ellipse_v15, by itself, creates a new ellipse_v15 or raises the existing
4%      singleton*.
5%
6%      H = ellipse_v15 returns the handle to a new ellipse_v15 or the handle to
7%      the existing singleton*.
8%
9%      ellipse_v15('CALLBACK',hObject,eventData,handles,...) calls the local
10%      function named CALLBACK in ellipse_v15.M with the given input arguments.
11%
12%      ellipse_v15('Property','Value',...) creates a new ellipse_v15 or raises the
13%      existing singleton*.  Starting from the left, property value pairs are
14%      applied to the GUI before ellipse_v15_OpeningFunction gets called.  An
15%      unrecognized property name or invalid value makes property application
16%      stop.  All inputs are passed to ellipse_v15_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 ellipse_v15
24
25% Last Modified by GUIDE v2.5 26-Aug-2004 16:51:56
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', @ellipse_v15_OpeningFcn, ...
32                   'gui_OutputFcn',  @ellipse_v15_OutputFcn, ...
33                   'gui_LayoutFcn',  [] , ...
34                   'gui_Callback',   []);
35if nargin & isstr(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 ellipse_v15 is made visible.
48function ellipse_v15_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 ellipse_v15 (see VARARGIN)
54
55% Choose default command line output for ellipse_v15
56
57% Choose default command line output for test_1
58handles.output = hObject;
59
60if iscell(varargin) && ~isempty(varargin)
61   
62    % store handle from caller
63    handles.caller3 = varargin{1}.figure1;
64   
65    % Get values from Application-Defined data
66    handles.energie_edit38=findobj(allchild(handles.caller3),'Tag','energie_edit38');
67   %ù IQ = getam('QP');
68   
69    twissx = getappdata(handles.caller3,'Twissx');
70    twissy = getappdata(handles.caller3,'Twissy');
71    epsx = sqrt(twissx(1)*twissx(2)-twissx(3)*twissx(3));
72    epsy = sqrt(twissy(1)*twissy(2)-twissy(3)*twissy(3));
73   
74    % calcul de l'ellipse en amont du quad 4 :
75    alphax = -twissx(3)/epsx;
76    betax = twissx(1)/epsx;
77    gammax = twissx(2)/epsx;
78    % xint = sqrt(epsx *epsx  / twissx(2));
79    % ymax = max(max(y1),max(y2));
80    % EPSX = xint * ymax
81    % disp('c''est incroyable')
82   
83    alphay = -twissy(3)/epsy;
84    betay = twissy(1)/epsy;
85    gammay = twissy(2)/epsy;
86   
87   
88   
89   
90    % calcul de l'ellipse en amont de LT1 (point d'entrï¿œe de la ligne de "optics_LT1") : 
91    global THERING
92    index = atindex(THERING);
93   
94    energie = str2double(get(handles.energie_edit38,'String'))
95    setenergymodel(energie/1000);
96    ao = getao;
97    valQ = getam('QP');
98    % ï¿œ introduire quand OK
99    setsp('QP',valQ,'model');
100   
101    % en attente de dï¿œbogage k2amp
102    %%valD = getam('BEND');
103    %%energie = bend2GeV('BEND',valD);
104    %
105   
106   
107   
108    %%setsp('BEND',valD,'model');
109    indQ = ao.QP.AT.ATIndex;
110    lastind = indQ(4,1);
111    res = inverseline(THERING , lastind ,  betax , betay ,- alphax ,- alphay );
112    betax0 = res(1,1);
113    betay0 = res(1,2);
114    alphax0 = res(2,1);
115    alphay0 = res(2,2);
116    gammax0 = (1 + alphax0*alphax0) / betax0 ;
117    gammay0 = (1 + alphay0*alphay0) / betay0 ;
118
119    % ï¿œcrire resultats en entrï¿œe de ligne thï¿œorique
120    Namebeta = strcat('beta_edit',num2str((5-1)*3 + 1));
121    Namegamma = strcat('gamma_edit',num2str((5-1)*3 + 2));
122    Namealpha = strcat('alpha_edit',num2str((5-1)*3 + 3));
123    set(handles.(Namebeta),'String',sprintf('%3.2f',betax0));
124    set(handles.(Namegamma),'String',sprintf('%3.2f',gammax0));
125    set(handles.(Namealpha),'String',sprintf('%3.2f',-alphax0));
126   
127    Namebeta = strcat('beta_edit',num2str((6-1)*3 + 1));
128    Namegamma = strcat('gamma_edit',num2str((6-1)*3 + 2));
129    Namealpha = strcat('alpha_edit',num2str((6-1)*3 + 3));
130    set(handles.(Namebeta),'String',sprintf('%3.2f',betay0));
131    set(handles.(Namegamma),'String',sprintf('%3.2f',gammay0));
132    set(handles.(Namealpha),'String',sprintf('%3.2f',-alphay0));
133   
134    %%% parameters at the entrance of the line
135    twissdatain.ElemIndex=1;
136    twissdatain.SPos=0;
137    twissdatain.ClosedOrbit=[1e-3 0 2e-3 0]'*0;
138    twissdatain.M44=eye(4);
139    twissdatain.beta= [betax0 betay0];
140    twissdatain.alpha= -[alphax0 alphay0];
141    twissdatain.mu= [0 0];
142    twissdatain.Dispersion= [0 0 0 0]';
143
144    index = atindex(THERING);
145   
146    ECR0 = index.BPM(1);
147    ECR1 = index.BPM(2);
148    FAE = index.COLL ;
149   
150    %%% get twiss paramaters at typical points
151    TD = twissline(THERING,0.0,twissdatain,1:length(THERING),'chroma');
152   
153    betaxECR0 = TD(ECR0).beta(1);
154    alphaxECR0 = TD(ECR0).alpha(1);
155    gammaxECR0  = (1 + alphaxECR0*alphaxECR0) / betaxECR0;
156    betayECR0 = TD(ECR0).beta(2);
157    alphayECR0 = TD(ECR0).alpha(2);
158    gammayECR0  = (1 + alphayECR0*alphayECR0) / betayECR0;
159   
160    betaxECR1 = TD(ECR1).beta(1);
161    alphaxECR1 = TD(ECR1).alpha(1);
162    gammaxECR1  = (1 + alphaxECR1*alphaxECR1) / betaxECR1;
163    betayECR1 = TD(ECR1).beta(2);
164    alphayECR1 = TD(ECR1).alpha(2);
165    gammayECR1  = (1 + alphayECR1*alphayECR1) / betayECR1;
166   
167   
168    graphe(1,epsx,betaxECR0,alphaxECR0,gammaxECR0,handles);
169    graphe(3,epsy,betayECR0,alphayECR0,gammayECR0,handles);
170    graphe(2,epsx,betaxECR1,alphaxECR1,gammaxECR1,handles);
171    graphe(4,epsy,betayECR1,alphayECR1,gammayECR1,handles);
172   
173    % ici erreur : on prend la date de construction de l'ellipse et non pas
174    % le moment de la prise des données... bon..
175    set(handles.date_edit32,'String',datestr(clock,29));
176    set(handles.energie_edit33,'String',Str2num(get(handles.energie_edit38,'String')));
177    set(handles.emitH_edit34,'String',num2str(epsx*1e6));
178    set(handles.emitV_edit35,'String',num2str(epsy*1e6));
179   
180    % Update handles structure
181    guidata(hObject, handles);
182
183else
184   
185end
186
187% Update handles structure
188guidata(hObject, handles);
189
190% UIWAIT makes ellipse_v15 wait for user response (see UIRESUME)
191% uiwait(handles.main);
192
193
194%
195% --- Outputs from this function are returned to the command line.
196function varargout = ellipse_v15_OutputFcn(hObject, eventdata, handles)
197% varargout  cell array for returning output args (see VARARGOUT);
198% hObject    handle to figure
199% eventdata  reserved - to be defined in a future version of MATLAB
200% handles    structure with handles and user data (see GUIDATA)
201
202% Get default command line output from handles structure
203varargout{1} = handles.output;  % ???
204
205
206
207% % --- Executes on button press in pushbutton1.
208% function recommencer_pushbutton1_Callback(hObject, eventdata, handles)
209% % hObject    handle to pushbutton1 (see GCBO)
210% % eventdata  reserved - to be defined in a future version of MATLAB
211% % handles    structure with handles and user data (see GUIDATA)
212%
213
214% --------------------------------------------------------------------
215function FileMenu_Callback(hObject, eventdata, handles)
216% hObject    handle to FileMenu (see GCBO)
217% eventdata  reserved - to be defined in a future version of MATLAB
218% handles    structure with handles and user data (see GUIDATA)
219
220
221% --------------------------------------------------------------------
222function OpenMenuItem_Callback(hObject, eventdata, handles)
223% hObject    handle to OpenMenuItem (see GCBO)
224% eventdata  reserved - to be defined in a future version of MATLAB
225% handles    structure with handles and user data (see GUIDATA)
226file = uigetfile('*.fig');
227if ~isequal(file, 0)
228    open(file);
229end
230
231% --------------------------------------------------------------------
232function PrintMenuItem_Callback(hObject, eventdata, handles)
233% hObject    handle to PrintMenuItem (see GCBO)
234% eventdata  reserved - to be defined in a future version of MATLAB
235% handles    structure with handles and user data (see GUIDATA)
236printdlg(handles.figure1)
237
238% --------------------------------------------------------------------
239function CloseMenuItem_Callback(hObject, eventdata, handles)
240% hObject    handle to CloseMenuItem (see GCBO)
241% eventdata  reserved - to be defined in a future version of MATLAB
242% handles    structure with handles and user data (see GUIDATA)
243selection = questdlg(['Close ' get(handles.figure1,'Name') '?'],...
244                     ['Close ' get(handles.figure1,'Name') '...'],...
245                     'Yes','No','Yes');
246if strcmp(selection,'No')
247    return;
248end
249
250delete(handles.figure1)
251
252
253function beta_edit1_Callback(hObject, eventdata, handles)
254% NE FAIT RIEN
255function beta_edit4_Callback(hObject, eventdata, handles)
256% NE FAIT RIEN
257function beta_edit7_Callback(hObject, eventdata, handles)
258% NE FAIT RIEN
259function beta_edit10_Callback(hObject, eventdata, handles)
260% NE FAIT RIEN
261function beta_edit13_Callback(hObject, eventdata, handles)
262% NE FAIT RIEN
263function beta_edit16_Callback(hObject, eventdata, handles)
264% NE FAIT RIEN
265function gamma_edit2_Callback(hObject, eventdata, handles)
266% NE FAIT RIEN
267function gamma_edit5_Callback(hObject, eventdata, handles)
268% NE FAIT RIEN
269function gamma_edit8_Callback(hObject, eventdata, handles)
270% NE FAIT RIEN
271function gamma_edit11_Callback(hObject, eventdata, handles)
272% NE FAIT RIEN
273function gamma_edit14_Callback(hObject, eventdata, handles)
274% NE FAIT RIEN
275function gamma_edit17_Callback(hObject, eventdata, handles)
276% NE FAIT RIEN
277function alpha_edit3_Callback(hObject, eventdata, handles)
278% NE FAIT RIEN
279function alpha_edit6_Callback(hObject, eventdata, handles)
280% NE FAIT RIEN
281function alpha_edit9_Callback(hObject, eventdata, handles)
282% NE FAIT RIEN
283function alpha_edit12_Callback(hObject, eventdata, handles)
284% NE FAIT RIEN
285function alpha_edit15_Callback(hObject, eventdata, handles)
286% NE FAIT RIEN
287function alpha_edit18_Callback(hObject, eventdata, handles)
288% NE FAIT RIEN
289
290function beta_edit1_CreateFcn(hObject, eventdata, handles)
291% NE FAIT RIEN
292function beta_edit4_CreateFcn(hObject, eventdata, handles)
293% NE FAIT RIEN
294function beta_edit7_CreateFcn(hObject, eventdata, handles)
295% NE FAIT RIEN
296function beta_edit10_CreateFcn(hObject, eventdata, handles)
297% NE FAIT RIEN
298function beta_edit13_CreateFcn(hObject, eventdata, handles)
299% NE FAIT RIEN
300function beta_edit16_CreateFcn(hObject, eventdata, handles)
301% NE FAIT RIEN
302function gamma_edit2_CreateFcn(hObject, eventdata, handles)
303% NE FAIT RIEN
304function gamma_edit5_CreateFcn(hObject, eventdata, handles)
305% NE FAIT RIEN
306function gamma_edit8_CreateFcn(hObject, eventdata, handles)
307% NE FAIT RIEN
308function gamma_edit11_CreateFcn(hObject, eventdata, handles)
309% NE FAIT RIEN
310function gamma_edit14_CreateFcn(hObject, eventdata, handles)
311% NE FAIT RIEN
312function gamma_edit17_CreateFcn(hObject, eventdata, handles)
313% NE FAIT RIEN
314function alpha_edit3_CreateFcn(hObject, eventdata, handles)
315% NE FAIT RIEN
316function alpha_edit6_CreateFcn(hObject, eventdata, handles)
317% NE FAIT RIEN
318function alpha_edit9_CreateFcn(hObject, eventdata, handles)
319% NE FAIT RIEN
320function alpha_edit12_CreateFcn(hObject, eventdata, handles)
321% NE FAIT RIEN
322function alpha_edit15_CreateFcn(hObject, eventdata, handles)
323% NE FAIT RIEN
324function alpha_edit18_CreateFcn(hObject, eventdata, handles)
325% NE FAIT RIEN
326
327
328
329
330
331
332function twissdebut = inverseline(THERING,lastind,betax0,betay0,alphax0,alphay0)
333% inversion de la partie droite de LT1
334
335global INVSTRAIGHTLINE;
336INVSTRAIGHTLINE = { };
337for i=1:lastind-1
338    INVSTRAIGHTLINE{i} = THERING{lastind-i};
339end
340twissdatain.ElemIndex=1;
341twissdatain.SPos=0;
342twissdatain.ClosedOrbit=[1e-3 0 2e-3 0]'*0;
343twissdatain.M44=eye(4);
344twissdatain.beta= [betax0 betay0];
345twissdatain.alpha= [alphax0 alphay0];
346
347% tests
348%twissdatain.beta= [23.247 7.9566];
349%twissdatain.alpha= [10.946 -5.2186];
350%wissdatain.beta= [9.4707   18.0971];
351%twissdatain.alpha= [-6.9443    7.9509];
352
353twissdatain.mu= [0 0];
354twissdatain.Dispersion= [0 0 0 0]';
355
356%%% get twiss paramaters
357TD = twissline(INVSTRAIGHTLINE,0.0,twissdatain,1:length(INVSTRAIGHTLINE),'chroma');
358twissdebut(1,:) = TD(end).beta;
359twissdebut(2,:) = TD(end).alpha;
360
361
362function graphe(naxe,epsilon,beta,alpha,gamma,handles)
363
364name=['axes' num2str(naxe)];
365axes(handles.(name)); %axis image ;
366
367xx = -sqrt(epsilon * beta):sqrt(epsilon * beta)/50:sqrt(epsilon * beta);
368zx1 = - alpha * xx / beta + sqrt(epsilon * beta - xx.*xx) / beta;
369zx2 = - alpha * xx / beta - sqrt(epsilon * beta - xx.*xx) / beta;
370
371plot(xx*1000,real(zx1*1000),'r',xx*1000,real(zx2*1000),'r')
372xlim([-5 5]);
373%ylim([-5 5]);
374
375Namebeta = strcat('beta_edit',num2str((naxe-1)*3 + 1));
376Namegamma = strcat('gamma_edit',num2str((naxe-1)*3 + 2));
377Namealpha = strcat('alpha_edit',num2str((naxe-1)*3 + 3));
378set(handles.(Namebeta),'String',sprintf('%3.2f',beta));
379set(handles.(Namegamma),'String',sprintf('%3.2f',gamma));
380set(handles.(Namealpha),'String',sprintf('%3.2f',alpha));
Note: See TracBrowser for help on using the repository browser.