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