source: MML/trunk/machine/SOLEIL/StorageRing/steerette/mycallback_steerette_orbites.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: 3.6 KB
Line 
1function mycallback_steerette_orbites(arg1,arg2,hObject, eventdata, handles)
2
3
4handles.mode = getappdata(handles.figure1,'Mode');
5
6BPMx = getappdata(handles.figure1,'BPMx');
7BPMz = getappdata(handles.figure1,'BPMz');
8
9% replot des orbites
10h3     = get(handles.axes3,'Children');
11hline2 = findobj(h3,'-regexp','Tag','line[1,2,3]');
12h8     = get(handles.axes8,'Children');
13hline8 = findobj(h8,'-regexp','Tag','line[8]');
14
15if strcmp(handles.mode,'Model')
16
17    % calcul nouvelles orbites
18    X0 = getappdata(handles.figure1,'orbite_entry');
19    nP = size(X0,2);
20    BPMindex = family2atindex('BPMx');
21    global THERING
22    nbtour = 1;
23    X01 = zeros(nbtour, 6, nP*length(BPMindex));
24
25    for k=1:nbtour,
26        X01(k,:,:) = linepass(THERING, X0, BPMindex);
27        %X0 = X01(k,:,end)';
28    end
29    Xa = squeeze(X01(1,1,:));
30    Za = squeeze(X01(1,3,:));
31    if nP>1
32        X = [];
33        Z = [];
34        for nBPM = 1:length(BPMindex)
35            X = [X mean(Xa((nP*(nBPM-1)+1):nP*nBPM))];
36            Z = [Z mean(Za((nP*(nBPM-1)+1):nP*nBPM))];
37        end
38        orbite_x = X'*1000;
39        orbite_z = Z'*1000;
40        orbite_sum = 1e6*(0.75 + 0.5*rand(length(BPMindex),1))';
41    else
42        orbite_x = Xa*1000;
43        orbite_z = Za*1000;
44        orbite_sum = 1e6*(0.75 + 0.5*rand(length(BPMindex),1))';
45    end
46   
47    xdata = BPMx.Position;
48    ydata = BPMz.Position;
49    sdata = BPMx.Position;
50   
51else
52        % test anneau
53        %BPMx.DeviceList = [1     2;1     3;1     4;1     5;1     6]
54       
55        sleep(2); % test : attente de 2 seconde pour que les alims
56        % se mettent à leur valeurs et les BPM rafraichissent
57        %[X Z Sum] = anabpmfirstturn( BPMx.DeviceList,'MaxSum','NoDisplay'); % ancienne version
58        %
59
60        if strcmp(handles.orbite,'transport - max Sum') % orbite à corriger type transport
61            %[X] = anabpmfirstturn( BPMx.DeviceList );
62            %[X] = anabpmfirstturn( liste_dev_BPM,'NoDisplay' ); % X en mm premier tour ANCIENNE VERSION
63            nbturns = 1;
64            [X Z Sum idx] = anabpmnfirstturns( BPMx.DeviceList,nbturns,'NoDisplay2'); % X en mm premier tour
65            idx
66           
67        elseif strcmp(handles.orbite,'transport - tour fixe') % orbite à corriger type transport
68            ifirstturn = str2num(get(handles.tour_fixe_T_edit,'String')); % numero du premier tour
69            nbturns = 1;
70            [X Z Sum] = anabpmnfirstturns( BPMx.DeviceList,nbturns,ifirstturn,'NoDisplay2','NoMaxSum'); % X en mm premier tour
71           
72        else
73            % moyenne de l'orbite à corriger sur n tours
74            ifirstturn = str2num(get(handles.tour_fixe_OF_edit,'String')); % numero du premier tour
75            nturns = str2num(get(handles.Ntours_edit,'String'));
76            [X Z Sum] = anabpmnfirstturns(BPMx.DeviceList,nturns,ifirstturn,'NoDisplay2','NoMaxSum');
77            X = mean(X) ;% moyenne par BPM
78            Z = mean(Z);
79            Sum = mean(Sum);
80           
81        end
82
83        orbite_x = X';
84        orbite_z = Z';
85        orbite_sum = Sum';
86
87        xdata  = getspos('BPMx',BPMx.DeviceList);
88        ydata  = getspos('BPMz',BPMz.DeviceList);
89        sdata  = getspos('BPMx',BPMx.DeviceList);
90
91end
92
93setappdata(handles.figure1,'orbite_x',orbite_x);
94setappdata(handles.figure1,'orbite_z',orbite_z);
95
96% xdata = BPMx.Position;
97% ydata = BPMz.Position;
98% sdata = BPMx.Position;
99% %xdata = 1:length(orbite_x);
100% %ydata = 1:length(orbite_z);
101% %sdata = 1:length(orbite_sum);
102
103
104% linegraphes
105set(hline2(3),'XData',xdata,'YData',orbite_x,'Visible','On');
106set(hline2(2),'XData',ydata,'YData',orbite_z,'Visible','On');
107set(hline8(1),'XData',sdata,'YData',orbite_sum,'Visible','On');
Note: See TracBrowser for help on using the repository browser.