source: MML/trunk/applications/doc_html/applications/orbit/respgui.html @ 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: 55.3 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2                "http://www.w3.org/TR/REC-html40/loose.dtd">
3<html>
4<head>
5  <title>Description of respgui</title>
6  <meta name="keywords" content="respgui">
7  <meta name="description" content="RESPGUI - Part treating of the response matrice and the correction">
8  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
9  <meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">
10  <meta name="robots" content="index, follow">
11  <link type="text/css" rel="stylesheet" href="../../m2html.css">
12</head>
13<body>
14<a name="_top"></a>
15<div><a href="../../index.html">Home</a> &gt;  <a href="#">applications</a> &gt; <a href="index.html">orbit</a> &gt; respgui.m</div>
16
17<!--<table width="100%"><tr><td align="left"><a href="../../index.html"><img alt="<" border="0" src="../../left.png">&nbsp;Master index</a></td>
18<td align="right"><a href="index.html">Index for applications/orbit&nbsp;<img alt=">" border="0" src="../../right.png"></a></td></tr></table>-->
19
20<h1>respgui
21</h1>
22
23<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
24<div class="box"><strong>RESPGUI - Part treating of the response matrice and the correction</strong></div>
25
26<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
27<div class="box"><strong>function respgui(action, varargin) </strong></div>
28
29<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
30<div class="fragment"><pre class="comment"> RESPGUI - Part treating of the response matrice and the correction
31
32 INPUT
33 1. action among
34 
35 PlotSVD_Init
36 SVDotActive
37 MoveDot
38 DotUp
39 PlotSVD
40 SolveSystem
41 BackSubSystem
42 SVDEdit
43 MoveSVDDot
44 DisplayRFFit
45 DisplayNsvd
46 UpdateFit
47 RFToggle
48 ExternalFitOff
49 FitOff
50 DispersionPanel
51 EtaXFlag
52 EtaZFlag</pre></div>
53
54<!-- crossreference -->
55<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
56This function calls:
57<ul style="list-style-image:url(../../matlabicon.gif)">
58<li><a href="bpmgui.html" class="code" title="function bpmgui(action, varargin)">bpmgui</a>     function varargout = bpmgui(action, varargin)</li><li><a href="corgui.html" class="code" title="function corgui(action, varargin)">corgui</a>   CORGUI - controls corrector manipulation and plotting for orbit program</li><li><a href="orbgui.html" class="code" title="function varargout = orbgui(action, varargin)">orbgui</a>     ORBGUI -- Contains routines to set up the main orbit control panel</li><li><a href="respgui.html" class="code" title="function respgui(action, varargin)">respgui</a>   RESPGUI - Part treating of the response matrice and the correction</li></ul>
59This function is called by:
60<ul style="list-style-image:url(../../matlabicon.gif)">
61<li><a href="bpmgui.html" class="code" title="function bpmgui(action, varargin)">bpmgui</a>     function varargout = bpmgui(action, varargin)</li><li><a href="orbgui.html" class="code" title="function varargout = orbgui(action, varargin)">orbgui</a>       ORBGUI -- Contains routines to set up the main orbit control panel</li><li><a href="respgui.html" class="code" title="function respgui(action, varargin)">respgui</a>   RESPGUI - Part treating of the response matrice and the correction</li></ul>
62<!-- crossreference -->
63
64
65<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
66<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function respgui(action, varargin)</a>
670002 <span class="comment">% RESPGUI - Part treating of the response matrice and the correction</span>
680003 <span class="comment">%</span>
690004 <span class="comment">% INPUT</span>
700005 <span class="comment">% 1. action among</span>
710006 <span class="comment">%</span>
720007 <span class="comment">% PlotSVD_Init</span>
730008 <span class="comment">% SVDotActive</span>
740009 <span class="comment">% MoveDot</span>
750010 <span class="comment">% DotUp</span>
760011 <span class="comment">% PlotSVD</span>
770012 <span class="comment">% SolveSystem</span>
780013 <span class="comment">% BackSubSystem</span>
790014 <span class="comment">% SVDEdit</span>
800015 <span class="comment">% MoveSVDDot</span>
810016 <span class="comment">% DisplayRFFit</span>
820017 <span class="comment">% DisplayNsvd</span>
830018 <span class="comment">% UpdateFit</span>
840019 <span class="comment">% RFToggle</span>
850020 <span class="comment">% ExternalFitOff</span>
860021 <span class="comment">% FitOff</span>
870022 <span class="comment">% DispersionPanel</span>
880023 <span class="comment">% EtaXFlag</span>
890024 <span class="comment">% EtaZFlag</span>
900025 <span class="comment">%</span>
910026
920027
930028 <span class="comment">%</span>
940029 <span class="comment">% Written by J. Corbett</span>
950030 <span class="comment">% Adapted by Laurent S. Nadolski</span>
960031
970032
980033 <span class="comment">% TODO etaflag and rfflag misused</span>
990034 <span class="comment">% rfflag shoudl be for RF correction</span>
1000035 <span class="comment">% etaflag should be for Amman factor substraction (to be implemented)</span>
1010036
1020037 <span class="comment">%globals</span>
1030038 <span class="keyword">global</span> BPM COR RSP SYS
1040039
1050040 orbfig = findobj(0,<span class="string">'tag'</span>,<span class="string">'orbfig'</span>);
1060041 plane  = SYS.plane;
1070042
1080043 <span class="keyword">switch</span> action
1090044
1100045     <span class="comment">%==========================================================</span>
1110046     <span class="keyword">case</span> <span class="string">'PlotSVD_Init'</span>                  <span class="comment">% *** PlotSVD_Init ***</span>
1120047         <span class="comment">%==========================================================</span>
1130048         <span class="comment">%blue, solid dynamic semilog-line for singular value plot.</span>
1140049         set(SYS.ahsvd,<span class="string">'Color'</span>,[1 1 1],<span class="string">'NextPlot'</span>,<span class="string">'add'</span>);
1150050         <span class="comment">%           'ButtonDownFcn','respgui(''SVDotActive'')');</span>
1160051
1170052         set(orbfig,<span class="string">'currentaxes'</span>,SYS.ahsvd)
1180053
1190054         SYS.svdplot = plot(ones(1,RSP(plane).nsvd),<span class="string">'LineStyle'</span>,<span class="string">'-'</span>, <span class="keyword">...</span>
1200055             <span class="string">'Color'</span>,<span class="string">'b'</span>); <span class="comment">%does this tag axes or line?</span>
1210056         grid on;
1220057         SYS.lhsvd = SYS.svdplot;
1230058
1240059         SYS.lhdot = line(<span class="string">'parent'</span>,SYS.ahsvd,<span class="keyword">...</span>
1250060             <span class="string">'XData'</span>,0,<span class="string">'YData'</span>,0,<span class="keyword">...</span>
1260061             <span class="string">'ButtonDownFcn'</span>,<span class="string">'respgui(''SVDotActive'');'</span>,<span class="keyword">...</span>
1270062             <span class="string">'Marker'</span>,<span class="string">'o'</span>,<span class="string">'MarkerSize'</span>,8,<span class="string">'MarkerFaceColor'</span>,<span class="string">'r'</span>);
1280063
1290064
1300065         <span class="comment">%=============================================================</span>
1310066     <span class="keyword">case</span> <span class="string">'SVDotActive'</span>                       <span class="comment">% *** SVDotActive ***</span>
1320067         <span class="comment">%=============================================================</span>
1330068         <span class="comment">%used if mouse clicks on SVD plot dot or anywhere in SVD window</span>
1340069         <span class="comment">%activate window-button-motion</span>
1350070         set(orbfig,<span class="string">'WindowButtonMotionFcn'</span>,<span class="string">'respgui(''MoveDot'');'</span>,<span class="keyword">...</span>
1360071             <span class="string">'WindowButtonUpFcn'</span>,<span class="string">'respgui(''DotUp'')'</span>);
1370072
1380073         <span class="comment">%==========================================================</span>
1390074     <span class="keyword">case</span> <span class="string">'MoveDot'</span>                            <span class="comment">% *** MoveDot ***</span>
1400075         <span class="comment">%==========================================================</span>
1410076         <span class="comment">%The callback of the singular value plot dot drag</span>
1420077         cpa             = get(SYS.ahsvd,<span class="string">'CurrentPoint'</span>);
1430078         RSP(plane).nsvd = round(cpa(1));
1440079
1450080         <span class="comment">%check for out-of-range drag above</span>
1460081         <span class="keyword">if</span> RSP(plane).nsvd &gt; RSP(plane).nsvdmax
1470082             RSP(plane).nsvd = RSP(plane).nsvdmax;
1480083         <span class="keyword">end</span>
1490084
1500085         <span class="comment">%check for out-of-range drag below</span>
1510086         <span class="keyword">if</span> RSP(plane).nsvd &lt;= 0
1520087             RSP(plane).nsvd = 1;           
1530088         <span class="keyword">end</span>
1540089
1550090         setappdata(0,<span class="string">'RSP'</span>,RSP);
1560091
1570092         <span class="comment">%re-draw dot</span>
1580093         <span class="comment">% vector of singular values</span>
1590094         ydat = diag(RSP(plane).S);
1600095         <span class="comment">% index of the dot</span>
1610096         indx = RSP(plane).nsvd;
1620097         
1630098         <span class="keyword">if</span> indx &lt;= 0, indx = 1; <span class="keyword">end</span>
1640099
1650100         set(SYS.lhdot,<span class="string">'Xdata'</span>,RSP(plane).nsvd,<span class="string">'YData'</span>,ydat(indx));
1660101
1670102         <span class="comment">%==========================================================</span>
1680103     <span class="keyword">case</span> <span class="string">'DotUp'</span>                            <span class="comment">% *** DotUp ***</span>
1690104         <span class="comment">%==========================================================</span>
1700105         <a href="respgui.html" class="code" title="function respgui(action, varargin)">respgui</a>(<span class="string">'MoveDot'</span>);
1710106
1720107         set(orbfig,<span class="string">'WindowButtonMotionFcn'</span>,<span class="string">''</span>,<span class="string">'WindowButtonUpFcn'</span>,<span class="string">''</span>);
1730108         <span class="comment">%update edit boxes</span>
1740109         set(SYS.svdedit,<span class="string">'String'</span>,num2str(RSP(plane).nsvd));
1750110
1760111         <a href="orbgui.html" class="code" title="function varargout = orbgui(action, varargin)">orbgui</a>(<span class="string">'RefreshOrbGUI'</span>);
1770112
1780113         <span class="comment">%==========================================================</span>
1790114     <span class="keyword">case</span> <span class="string">'PlotSVD'</span>                             <span class="comment">% ***PlotSVD ***</span>
1800115         <span class="comment">%==========================================================</span>
1810116         <span class="comment">%blue, solid dynamic line for singular value plot</span>
1820117         set(orbfig,<span class="string">'currentaxes'</span>,SYS.ahsvd);
1830118         <span class="comment">%...must have fit valid before plotting</span>
1840119         <span class="keyword">if</span> RSP(plane).nsvdmax &gt; 1 &amp;&amp; RSP(plane).fit == 1
1850120             k      = RSP(plane).nsvdmax;
1860121             ydat   = diag(RSP(plane).S);
1870122             set(SYS.lhsvd,<span class="string">'Xdata'</span>,(1:k),<span class="string">'YData'</span>,ydat(1:k));
1880123             <span class="comment">% scale y absciss using log scale</span>
1890124             axis(<span class="string">'tight'</span>);
1900125             <span class="comment">%red dot</span>
1910126             indx = RSP(plane).nsvd;
1920127             <span class="keyword">if</span> indx &lt;= 0, indx = 1; <span class="keyword">end</span>
1930128             set(SYS.lhdot,<span class="string">'Xdata'</span>,RSP(plane).nsvd,<span class="string">'YData'</span>,ydat(indx));
1940129         <span class="keyword">else</span> <span class="comment">%fit not valid</span>
1950130 <span class="comment">%             set(SYS.lhsvd,'Xdata',0:10,'YData',ones(1,11));</span>
1960131 <span class="comment">%             axis('tight');</span>
1970132             <span class="comment">%no red dot</span>
1980133             set(SYS.lhdot,<span class="string">'Xdata'</span>,[],<span class="string">'YData'</span>,[]);
1990134         <span class="keyword">end</span>
2000135
2010136         <span class="comment">%==========================================================</span>
2020137     <span class="keyword">case</span> <span class="string">'SolveSystem'</span>                    <span class="comment">% *** SolveSystem ***</span>
2030138         <span class="comment">%==========================================================</span>
2040139         <span class="comment">%solve the system with requested technique (SYS.algo)</span>
2050140         <span class="comment">% 1. check that bpms and correctors selected for fitting</span>
2060141         <span class="comment">% 2. build total response matrix (orbit dispersion)</span>
2070142         <span class="comment">% 3. build total constraint vector (orbit, dispersion)</span>
2080143         <span class="comment">% 4. check dimensions of matrix, constraints</span>
2090144         <span class="comment">% 5. perform inversion</span>
2100145         <span class="comment">% 6. backsubstitute</span>
2110146         
2120147         <span class="comment">%check for no variables or constraints</span>
2130148         <span class="keyword">if</span> isempty(BPM(plane).ifit) || isempty(COR(plane).ifit)
2140149             RSP(plane).fit = 0;
2150150             BPM(plane).fit = zeros(length(BPM(plane).act),1);
2160151             COR(plane).fit = COR(plane).act;
2170152             setappdata(0,<span class="string">'RSP'</span>,RSP);
2180153             setappdata(0,<span class="string">'BPM'</span>,BPM);
2190154             setappdata(0,<span class="string">'COR'</span>,COR);
2200155
2210156             <span class="keyword">if</span> ~RSP(plane).rfflag <span class="comment">%% RF fit only</span>
2220157                 SYS.drf = 0;
2230158                 setappdata(0,<span class="string">'SYS'</span>,SYS);
2240159                 <a href="orbgui.html" class="code" title="function varargout = orbgui(action, varargin)">orbgui</a>(<span class="string">'LBox'</span>,<span class="string">'Warning: select BPMs and CORs first'</span>);
2250160                 disp(<span class="string">'Warning: select beam position monitors and correctors first'</span>);
2260161                 <span class="keyword">return</span>
2270162             <span class="keyword">end</span>
2280163         <span class="keyword">end</span>
2290164
2300165         <span class="comment">%check for no singular values requested</span>
2310166         <span class="keyword">if</span> RSP(plane).nsvd &lt;= 0 &amp;&amp; RSP(plane).svdtol &lt;=0
2320167             disp(<span class="string">'   Warning: no singular values or tolerance requested in svdfit'</span>);
2330168             <span class="keyword">return</span>
2340169         <span class="keyword">end</span>
2350170
2360171         <span class="comment">%========================</span>
2370172         <span class="keyword">switch</span> SYS.algo
2380173             <span class="comment">%========================</span>
2390174             <span class="keyword">case</span> <span class="string">'SVD'</span>   <span class="comment">%use singular value technique to solve system</span>
2400175
2410176                 <span class="comment">% Index the response matrix</span>
2420177                 <span class="comment">%...corrector set</span>
2430178                 ActuatorDeviceList      = elem2dev(COR(plane).AOFamily,COR(plane).ifit);
2440179                 ActuatorDeviceListTotal = elem2dev(COR(plane).AOFamily);
2450180                 [corlist, iNotFound]    = findrowindex(ActuatorDeviceList, ActuatorDeviceListTotal);
2460181                 <span class="keyword">if</span> ~isempty(iNotFound)
2470182                     <span class="keyword">for</span> i = iNotFound(:)',
2480183                         fprintf(<span class="string">'   %s(%d,%d) not found\n'</span>, S.Actuator.FamilyName, <span class="keyword">...</span>
2490184                             ActuatorDeviceList(i,1), ActuatorDeviceList(i,2));
2500185                     <span class="keyword">end</span>
2510186                     error(<span class="string">'Actuator not found'</span>);
2520187                 <span class="keyword">end</span>
2530188 <span class="comment">%                 corwt   = COR(plane).wt(corlist);</span>
2540189   
2550190 <span class="comment">%                 %remove dispersion component if rfflag true</span>
2560191 <span class="comment">%                 if RSP(plane).rfflag == 1                             %...subtract rf component</span>
2570192 <span class="comment">%                     [BPM] = etaoff(plane,BPM,RSP);                    %...calc dispersion component</span>
2580193 <span class="comment">%                 else</span>
2590194                     BPM(plane).rffit = zeros(length(BPM(plane).s),1); <span class="comment">%...initialize to zero</span>
2600195 <span class="comment">%                 end</span>
2610196                 setappdata(0,<span class="string">'BPM'</span>,BPM);
2620197
2630198                 <span class="comment">%...electron BPM orbit and matrix (compressed)</span>
2640199 <span class="comment">%                 eBPMlist = BPM(plane).ifit;                                   %...electron BPM list</span>
2650200                 MonitorDeviceList      = elem2dev(BPM(plane).AOFamily,BPM(plane).ifit);
2660201                 MonitorDeviceListTotal = elem2dev(BPM(plane).AOFamily);
2670202                 [eBPMlist, iNotFound]  = findrowindex(MonitorDeviceList,  MonitorDeviceListTotal);
2680203                 <span class="keyword">if</span> ~isempty(iNotFound)
2690204                     <span class="keyword">for</span> i = iNotFound(:)'
2700205                         fprintf(<span class="string">'   %s(%d,%d) not found\n'</span>, S.Monitor.FamilyName, MonitorDeviceList(i,1), MonitorDeviceList(i,2));
2710206                     <span class="keyword">end</span>
2720207                     error(<span class="string">'Monitor not found'</span>);
2730208                 <span class="keyword">end</span>
2740209
2750210                 eBPMval = BPM(plane).act - BPM(plane).des - BPM(plane).rffit;<span class="comment">%...actual minus reference orbit</span>
2760211                 eBPMval = BPM(plane).wt.*eBPMval;                            <span class="comment">%...apply weights</span>
2770212                 BPMval  = eBPMval(eBPMlist);                                 <span class="comment">%...compress residual orbit vector</span>
2780213
2790214                 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
2800215                 <span class="comment">% Build up R-matrix</span>
2810216                 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
2820217                 
2830218                 Rmat    = RSP(plane).Data(eBPMlist,corlist);<span class="comment">%...use only selected fit indices</span>
2840219                 wt      = diag(BPM(plane).wt(eBPMlist));    <span class="comment">%...bpm weights on diagonal</span>
2850220                 Rmat    = wt*Rmat;                          <span class="comment">%...weight matrix lines w/ BPM weights before inversion</span>
2860221
2870222                 <span class="comment">%...add dispersion portion of orbit and matrix (compressed)</span>
2880223                 <span class="comment">%   NOTE - only electron BPMs selected for orbit fitting used for dispersion fitting</span>
2890224 <span class="comment">%                 if RSP(plane).etaflag                                %...check dispersion fitting flag</span>
2900225 <span class="comment">%                     etaBPMval = BPM(plane).dsp-BPM(plane).dspref;    %...actual minus reference dispersion</span>
2910226 <span class="comment">%                     etaBPMval = diag(BPM(plane).etawt)*etaBPMval(:); %...apply weights</span>
2920227 <span class="comment">%                     etaBPMval = etaBPMval(eBPMlist);                 %...compress residual dispersion vector</span>
2930228 <span class="comment">%                     BPMval    = [BPMval; etaBPMval];                 %...concatenate electron and dispersion BPM error signals</span>
2940229 <span class="comment">%</span>
2950230 <span class="comment">%                     ceta = RSP(plane).eta(eBPMlist,corlist);        %...use only selected fit indices</span>
2960231 <span class="comment">%                     wt   = diag(BPM(plane).etawt(eBPMlist));         %...bpm weights on diagonal</span>
2970232 <span class="comment">%                     ceta = wt*ceta;                                  %...weight matrix before inversion</span>
2980233 <span class="comment">%                     Rmat = [Rmat; ceta];                             %...concatenate dispersion response matrix</span>
2990234 <span class="comment">%                 end</span>
3000235
3010236                 <span class="keyword">if</span> RSP(plane).etaflag &amp;&amp; RSP(plane).rfflag          <span class="comment">%...check dispersion fitting flag</span>
3020237                     eta  = RSP(plane).eta(eBPMlist);            <span class="comment">%...use only selected fit indices</span>
3030238                     RFWeight = 10*mean(std(Rmat))/std(eta); <span class="comment">%...bpm weights on diagonal</span>
3040239                     Rmat = [Rmat RFWeight*eta];             <span class="comment">%...concatenate dispersion response matrix</span>
3050240                 <span class="keyword">end</span>
3060241
3070242                 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
3080243                 <span class="comment">%...perform SVD decomposition</span>
3090244                 <span class="comment">%...A=USV'   A-1=VU'/S</span>
3100245                 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
3110246
3120247                 [RSP(plane).U , RSP(plane).S, RSP(plane).V] = svd(Rmat,0);   
3130248                 
3140249                 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
3150250                 <span class="comment">% Determine the singular vector and error check</span>
3160251                 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
3170252                                 
3180253                 <span class="comment">%... get singular values</span>
3190254                 S    = diag(RSP(plane).S);
3200255           
3210256                 <span class="comment">%...reject zeros to get nb of nonzero singular values</span>
3220257                 RSP(plane).nsvdmax = length(S(find(S)));     
3230258                 
3240259                 <span class="comment">% Check whether singular value number larger than total number</span>
3250260                 <span class="keyword">if</span> RSP(plane).nsvd &gt; RSP(plane).nsvdmax
3260261                     RSP(plane).nsvd = RSP(plane).nsvdmax;
3270262                     fprintf(<span class="string">'Warning: %d zero singular value(s) rejected\n'</span>, <span class="keyword">...</span>
3280263                         RSP(plane).nsvd - RSP(plane).nsvdmax)
3290264                 <span class="keyword">end</span>
3300265                 
3310266                 <span class="comment">%...use tolerance method if specified</span>
3320267                 <span class="keyword">if</span> RSP(plane).svdtol == 0  <span class="comment">% user given number</span>
3330268                     Ivect = 1:RSP(plane).nsvd;
3340269                 <span class="keyword">else</span> <span class="comment">% Tolerance</span>
3350270                     Ivect = find(S &gt; RSP(plane).svdtol*S(1));
3360271                     <span class="keyword">if</span> isempty(Ivect)
3370272                         disp(<span class="string">'   Warning: no singular values requested in svdfit'</span>);
3380273                         RSP(plane).fit = 0; <span class="comment">% valid fit flag</span>
3390274                         <span class="keyword">return</span>
3400275                     <span class="keyword">end</span>
3410276                 <span class="keyword">end</span>
3420277
3430278                 <span class="comment">%...backsubstitute</span>
3440279                 <span class="comment">%Computes first Rmat2=U(1,Ivect)*S(Ivect,Ivect) = Rmat*V(1,:Ivect)</span>
3450280                 Rmat2          =  Rmat*RSP(plane).V(:,Ivect);   
3460281                 SUtBPM         = -Rmat2\BPMval;         
3470282                 Delcm =  RSP(plane).V(:,Ivect)*SUtBPM; <span class="comment">%compute actuator values</span>
3480283                 
3490284                 <span class="comment">%% Fitted values for correctors</span>
3500285                 <span class="keyword">if</span> RSP(plane).etaflag &amp;&amp; RSP(plane).rfflag <span class="comment">% if RF correction</span>
3510286                     COR(plane).fit = Delcm(1:end-1);
3520287                     SYS.drf        = RFWeight*Delcm(end);
3530288                     <span class="comment">%% update rf value and rf step for correction</span>
3540289                     set(SYS.hrf,<span class="string">'String'</span>, num2str(getrf(SYS.mode), <span class="string">'%10.7f'</span>));
3550290                     set(SYS.hdrf,<span class="string">'String'</span>,num2str(SYS.drf));
3560291                 <span class="keyword">else</span>
3570292                     COR(plane).fit = Delcm;
3580293                 <span class="keyword">end</span>
3590294
3600295                 <span class="comment">%NOTE: fraction scalar only used at time of corrector application</span>
3610296
3620297                 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
3630298                 <span class="comment">%...compute predicted results</span>
3640299                 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
3650300                 
3660301                 <span class="comment">% Note: use of RSP(plane).Data and not Rmat for orbit</span>
3670302                 <span class="comment">% predicted at all BPM required</span>
3680303                 BPM(plane).fit = RSP(plane).Data(eBPMlist,corlist)*COR(plane).fit;
3690304
3700305                 <span class="comment">%% Case of RF correction</span>
3710306                 <span class="keyword">if</span> RSP(plane).etaflag &amp;&amp; RSP(plane).rfflag
3720307                     BPM(plane).rffit = eta*SYS.drf;
3730308                 <span class="keyword">end</span>
3740309
3750310                 RSP(plane).fit = 1; <span class="comment">%...set valid fit flag</span>
3760311
3770312                 setappdata(0,<span class="string">'BPM'</span>,BPM);
3780313                 setappdata(0,<span class="string">'COR'</span>,COR);
3790314                 setappdata(0,<span class="string">'RSP'</span>,RSP);
3800315
3810316             <span class="keyword">otherwise</span>
3820317                 disp([<span class="string">'Warning: no CASE found in SolveSystem: '</span> SYS.algo]);
3830318         <span class="keyword">end</span>  <span class="comment">%end SYS.algo switchyard</span>
3840319
3850320         <span class="comment">%==========================================================</span>
3860321 <span class="comment">%     case 'BackSubSystem'                      % ***BackSubSystem ***</span>
3870322 <span class="comment">%         %==========================================================</span>
3880323 <span class="comment">%         %backsubstitute to find solution</span>
3890324 <span class="comment">%         switch SYS.algo</span>
3900325 <span class="comment">%</span>
3910326 <span class="comment">%             case 'SVD'                                % ***BackSubSystem ***</span>
3920327 <span class="comment">%                 %callback of svdedit via SVDEdit</span>
3930328 <span class="comment">%                 %etaoff has already been called</span>
3940329 <span class="comment">%</span>
3950330 <span class="comment">%                 [BPM,BL,COR]      = BackSubSystem(plane,SYS,BPM,BL,COR,RSP);  %also removes eta, bumps</span>
3960331 <span class="comment">%                 RSP(plane).nsvdes = RSP(plane).nsvd;</span>
3970332 <span class="comment">%                 RSP(plane).nsvd   = SVDMax(SYS,BPM,BL,COR,RSP);</span>
3980333 <span class="comment">%                 if RSP(plane).nsvd &lt;= RSP(plane).nsvdes</span>
3990334 <span class="comment">%                     [BPM,COR] = BackSubSystem(plane,SYS,BPM,BL,COR,RSP);  %also removes eta, bumps</span>
4000335 <span class="comment">%                 end</span>
4010336 <span class="comment">%</span>
4020337 <span class="comment">%                 setappdata(0,'BPM',BPM);</span>
4030338 <span class="comment">%                 setappdata(0,'COR',COR);</span>
4040339 <span class="comment">%                 setappdata(0,'RSP',RSP);</span>
4050340 <span class="comment">%</span>
4060341 <span class="comment">%             otherwise</span>
4070342 <span class="comment">%                 disp(['Warning: no CASE found in BackSubSystem: ' algorithm]);</span>
4080343 <span class="comment">%         end  %end backsubsystem switchyard</span>
4090344 <span class="comment">%</span>
4100345 <span class="comment">%         %==========================================================</span>
4110346     <span class="keyword">case</span> <span class="string">'SVDEdit'</span>                            <span class="comment">% *** SVDEdit ***</span>
4120347         <span class="comment">%==========================================================</span>
4130348         <span class="comment">%callback of the singular value edit box.</span>
4140349
4150350         val = str2double(get(SYS.svdedit,<span class="string">'String'</span>));
4160351
4170352         <span class="keyword">if</span> isnan(val) || ~isnumeric(val) || ~length(val) == 1
4180353             <span class="comment">% flush the bad string out of the edit; replace with current value:</span>
4190354             set(SYS.svdedit,<span class="string">'String'</span>,num2str(RSP(plane).nsvd));
4200355             <a href="orbgui.html" class="code" title="function varargout = orbgui(action, varargin)">orbgui</a>(<span class="string">'LBox'</span>,<span class="string">'Warning: Invalid entry # singular values'</span>);
4210356             disp(<span class="string">'Warning: Invalid SVD entry.'</span>);
4220357             <span class="keyword">return</span>;
4230358         <span class="keyword">else</span>
4240359
4250360             RSP(plane).nsvd = round(val);
4260361
4270362             <span class="keyword">if</span> RSP(plane).nsvd == 0        <span class="comment">%don't allow zero singular values</span>
4280363                 RSP(plane).nsvd = 1;
4290364                 set(SYS.svdedit,<span class="string">'String'</span>,num2str(RSP(plane).nsvd));
4300365             <span class="keyword">end</span>
4310366
4320367             <span class="keyword">if</span> RSP(plane).nsvd &gt; RSP(plane).nsvdmax
4330368                 <a href="orbgui.html" class="code" title="function varargout = orbgui(action, varargin)">orbgui</a>(<span class="string">'LBox'</span>,<span class="string">'Warning: # singular values exceeds maximum'</span>);
4340369                 disp([<span class="string">'Warning: number of singular values exceeds maximum: '</span>,num2str(RSP(plane).nsvdmax)])
4350370                 RSP(plane).nsvd=RSP(plane).nsvdmax;
4360371                 set(SYS.svdedit,<span class="string">'String'</span>,num2str(RSP(plane).nsvd));
4370372             <span class="keyword">end</span>
4380373
4390374             setappdata(0,<span class="string">'RSP'</span>,RSP);
4400375
4410376             <a href="respgui.html" class="code" title="function respgui(action, varargin)">respgui</a>(<span class="string">'MoveSVDDot'</span>);
4420377             <a href="orbgui.html" class="code" title="function varargout = orbgui(action, varargin)">orbgui</a>(<span class="string">'RefreshOrbGUI'</span>);
4430378
4440379         <span class="keyword">end</span>
4450380
4460381 <span class="comment">%         %============================================================</span>
4470382 <span class="comment">%     case 'SVDSlider'                            % *** SVDSlide ***</span>
4480383 <span class="comment">%         %============================================================</span>
4490384 <span class="comment">%         %The callback of the singular value slider.</span>
4500385 <span class="comment">%         %</span>
4510386 <span class="comment">%         val = (get(SYS.svdslide,'Value'));</span>
4520387 <span class="comment">%</span>
4530388 <span class="comment">%         RSP(plane).nsvd = round(val);</span>
4540389 <span class="comment">%</span>
4550390 <span class="comment">% %         if RSP(plane).nsvd == 0</span>
4560391 <span class="comment">% %             RSP(plane).nsvd = 1;</span>
4570392 <span class="comment">% %         end</span>
4580393 <span class="comment">%</span>
4590394 <span class="comment">%         if RSP(plane).nsvd &gt; RSP(plane).nsvdmax</span>
4600395 <span class="comment">%             disp(['Warning: number of singular values exceeds maximum: ',num2str(RSP(plane).nsvdmax)])</span>
4610396 <span class="comment">%             RSP(plane).nsvd = RSP(plane).nsvdmax;</span>
4620397 <span class="comment">%             set(SYS.svdslide,'Value',RSP(plane).nsvd);</span>
4630398 <span class="comment">%         end</span>
4640399 <span class="comment">%</span>
4650400 <span class="comment">%         setappdata(0,'RSP',RSP);</span>
4660401 <span class="comment">%</span>
4670402 <span class="comment">%         set(SYS.svdedit,'String', num2str(RSP(plane).nsvd));</span>
4680403 <span class="comment">%         respgui('MoveSVDDot');</span>
4690404 <span class="comment">%         orbgui('RefreshOrbGUI');</span>
4700405 <span class="comment">%</span>
4710406         <span class="comment">%==========================================================</span>
4720407     <span class="keyword">case</span> <span class="string">'MoveSVDDot'</span>                       <span class="comment">% ***MoveSVDDot ***</span>
4730408         <span class="comment">%==========================================================</span>
4740409         <span class="keyword">if</span> isempty(COR(plane).ifit) || RSP(plane).rfflag, <span class="keyword">return</span>; <span class="keyword">end</span>
4750410         
4760411         <span class="comment">% Vector of singular values</span>
4770412         yd = diag(RSP(plane).S);
4780413         
4790414         <span class="comment">% default dot is user defined</span>
4800415         indx = RSP(plane).nsvd;
4810416
4820417         <span class="keyword">if</span> indx &lt;= 0, indx = 1; <span class="keyword">end</span>
4830418         
4840419         <span class="comment">% check number of singular values</span>
4850420         <span class="comment">%nb of correctors included RF</span>
4860421         ncor = length(COR(plane).ifit) + RSP(plane).rfflag;
4870422         <span class="keyword">if</span> RSP(plane).nsvd &gt; ncor
4880423             RSP(plane).nsvd = ncor;
4890424             indx            = ncor;
4900425         <span class="keyword">end</span>
4910426
4920427         <span class="comment">% check fit</span>
4930428         <span class="keyword">if</span> RSP(plane).fit == 1
4940429             <span class="comment">%move the red dot</span>
4950430             set(SYS.lhdot,<span class="string">'Xdata'</span>,RSP(plane).nsvd,<span class="string">'YData'</span>,yd(indx));
4960431         <span class="keyword">end</span>
4970432
4980433         setappdata(0,<span class="string">'RSP'</span>,RSP);
4990434       
5000435         <span class="comment">%==========================================================</span>
5010436     <span class="keyword">case</span> <span class="string">'DisplayRFFit'</span>                         <span class="comment">% ***DisplayRFFit ***</span>
5020437         <span class="comment">%==========================================================</span>
5030438         <span class="comment">%update prediction for rf component</span>
5040439         <span class="keyword">if</span> RSP(plane).rfflag == 1     <span class="comment">%display rf component</span>
5050440             set(SYS.hdrf,<span class="string">'String'</span>, num2str(SYS.drf));
5060441         <span class="keyword">end</span>
5070442
5080443         <span class="comment">%==========================================================</span>
5090444     <span class="keyword">case</span> <span class="string">'DisplayNsvd'</span>                     <span class="comment">% ***DisplayNsvd ***</span>
5100445         <span class="comment">%==========================================================</span>
5110446         <span class="comment">%update SVD Slider</span>
5120447         <span class="comment">%                                      'Value',round(RSP(plane).nsvd));</span>
5130448         <span class="comment">%update SVD Edit Field</span>
5140449         set(SYS.svdedit,<span class="string">'String'</span>,num2str(RSP(plane).nsvd));
5150450
5160451         <span class="comment">%==========================================================</span>
5170452     <span class="keyword">case</span> <span class="string">'UpdateFit'</span>                         <span class="comment">% ***UpdateFit ***</span>
5180453         <span class="comment">%==========================================================</span>
5190454       
5200455         <a href="bpmgui.html" class="code" title="function bpmgui(action, varargin)">bpmgui</a>(<span class="string">'PlotFit'</span>);        <span class="comment">%plots orbit fit, updates limits</span>
5210456         <a href="corgui.html" class="code" title="function corgui(action, varargin)">corgui</a>(<span class="string">'PlotFit'</span>);        <span class="comment">%plots corrector fit (don't need to clear), updates ylimits</span>
5220457         <a href="respgui.html" class="code" title="function respgui(action, varargin)">respgui</a>(<span class="string">'DisplayRFFit'</span>);  <span class="comment">%display rf frequency shift</span>
5230458
5240459         <span class="keyword">if</span> strcmp(SYS.algo,<span class="string">'SVD'</span>)
5250460             <a href="respgui.html" class="code" title="function respgui(action, varargin)">respgui</a>(<span class="string">'PlotSVD'</span>);       <span class="comment">%...show singular value plot</span>
5260461             <a href="respgui.html" class="code" title="function respgui(action, varargin)">respgui</a>(<span class="string">'DisplayNsvd'</span>);   <span class="comment">%...display number of singular values</span>
5270462             <a href="respgui.html" class="code" title="function respgui(action, varargin)">respgui</a>(<span class="string">'MoveSVDDot'</span>);    <span class="comment">%...move dot to display number of singular values</span>
5280463             <span class="comment">%update eigenvector plot</span>
5290464             <span class="keyword">if</span> strcmpi(RSP(plane).eig(1:2), <span class="string">'of'</span>) || RSP(plane).nsvd==0    <span class="comment">%Eigenvector display mode</span>
5300465                 set(SYS.lheig,<span class="string">'XData'</span>,[],<span class="string">'YData'</span>,[]);
5310466             <span class="keyword">else</span>
5320467                 <a href="bpmgui.html" class="code" title="function bpmgui(action, varargin)">bpmgui</a>(<span class="string">'PlotEig'</span>);                   <span class="comment">%plot matrix column vector</span>
5330468             <span class="keyword">end</span>
5340469         <span class="keyword">end</span>
5350470
5360471         <span class="comment">%update response matrix plot</span>
5370472         <span class="keyword">if</span> strcmpi(RSP(plane).disp(1:2),<span class="string">'of'</span>)
5380473             set(SYS.lhrsp,<span class="string">'XData'</span>,[],<span class="string">'YData'</span>,[]);
5390474         <span class="keyword">else</span>
5400475             <a href="bpmgui.html" class="code" title="function bpmgui(action, varargin)">bpmgui</a>(<span class="string">'PlotResp'</span>);                   <span class="comment">%plot matrix column vector</span>
5410476         <span class="keyword">end</span>
5420477
5430478         <span class="comment">%==========================================================</span>
5440479     <span class="keyword">case</span> <span class="string">'RFToggle'</span>                            <span class="comment">% ***RFToggle***</span>
5450480         <span class="comment">%==========================================================</span>
5460481         <span class="comment">%callback of the rf component toggle radio button</span>
5470482         <span class="comment">%radio button toggles state and then executes callback</span>
5480483         <span class="comment">%hence, this routine finds the new state</span>
5490484         h1  = SYS.rftoggle;
5500485         val = get(h1,<span class="string">'Value'</span>);
5510486         <span class="keyword">if</span> val == 1                    <span class="comment">%state was just toggled 'on'</span>
5520487             RSP(plane).rfflag = 1;
5530488             <span class="comment">%add RF singular value</span>
5540489             RSP(plane).nsvdmax = RSP(plane).nsvdmax + 1;
5550490             RSP(plane).nsvd = RSP(plane).nsvd + 1;
5560491         <span class="keyword">else</span>
5570492             RSP(plane).rfflag = 0;     <span class="comment">%state was just toggled 'off'</span>
5580493             <span class="comment">%retrieve RF singular value</span>
5590494             RSP(plane).nsvdmax = RSP(plane).nsvdmax - 1;
5600495             RSP(plane).nsvd = RSP(plane).nsvd - 1;
5610496         <span class="keyword">end</span>
5620497
5630498         setappdata(0,<span class="string">'RSP'</span>,RSP);
5640499
5650500         <a href="respgui.html" class="code" title="function respgui(action, varargin)">respgui</a>(<span class="string">'SolveSystem'</span>,SYS.algo);
5660501         <a href="respgui.html" class="code" title="function respgui(action, varargin)">respgui</a>(<span class="string">'UpdateFit'</span>);
5670502
5680503         <span class="comment">%==========================================================</span>
5690504     <span class="keyword">case</span> <span class="string">'ExternalFitOff'</span>                     <span class="comment">%...ExternalFitOff</span>
5700505         <span class="comment">%==========================================================</span>
5710506         plane = str2double(varargin{1});     <span class="comment">%define requested plane</span>
5720507         RSP(plane).fit = 0;                  <span class="comment">%fit not valid</span>
5730508
5740509         <span class="keyword">switch</span> SYS.algo
5750510             <span class="keyword">case</span> <span class="string">'SVD'</span>
5760511                 RSP(plane).nsvd = 0;
5770512                 setappdata(0,<span class="string">'RSP'</span>,RSP);
5780513         <span class="keyword">end</span>
5790514
5800515
5810516         <span class="comment">%==========================================================</span>
5820517     <span class="keyword">case</span> <span class="string">'FitOff'</span>                             <span class="comment">%...FitOff</span>
5830518         <span class="comment">%==========================================================</span>
5840519         <span class="comment">%clear graphics because fit invalid</span>
5850520         plane = str2double(varargin{1});    <span class="comment">%define requested plane</span>
5860521
5870522         RSP(plane).fit = 0;                 <span class="comment">%fit not valid</span>
5880523         RSP(plane).U   = [];
5890524         RSP(plane).S   = [];
5900525         RSP(plane).V   = [];
5910526         setappdata(0,<span class="string">'RSP'</span>,RSP);
5920527
5930528         set(SYS.hdrf,<span class="string">'String'</span>, <span class="string">'0.0'</span>);
5940529         <span class="comment">%zero out fitting variables</span>
5950530         BPM(plane).fit = zeros(size(BPM(plane).name,1),1);
5960531         setappdata(0,<span class="string">'BPM'</span>,BPM);
5970532
5980533         ncor=length(COR(plane).ifit);
5990534         COR(plane).fit = zeros(ncor,1);   <span class="comment">%COR.fit is compressed</span>
6000535         COR(plane).sav = COR(plane).fit;  <span class="comment">%zero out save vector</span>
6010536         setappdata(0,<span class="string">'COR'</span>,COR);
6020537
6030538         <a href="bpmgui.html" class="code" title="function bpmgui(action, varargin)">bpmgui</a>(<span class="string">'ClearPlots'</span>);          <span class="comment">%remove all bpm fitting plots</span>
6040539         <a href="corgui.html" class="code" title="function corgui(action, varargin)">corgui</a>(<span class="string">'ClearFit'</span>);            <span class="comment">%remove all cor fitting plots</span>
6050540         <a href="corgui.html" class="code" title="function corgui(action, varargin)">corgui</a>(<span class="string">'ylimits'</span>);
6060541
6070542         <span class="keyword">switch</span> SYS.algo
6080543             <span class="keyword">case</span> <span class="string">'SVD'</span>
6090544                 <span class="comment">%RSP=getappdata(0,'RSP');</span>
6100545                 RSP(plane).nsvdmax = 1;
6110546                 RSP(plane).nsvd    = 1;      <span class="comment">%keep one singular value - all correctors off then one on</span>
6120547                 setappdata(0,<span class="string">'RSP'</span>,RSP);
6130548                 set(SYS.svdedit,<span class="string">'String'</span>,num2str(1));  <span class="comment">%SVD display box</span>
6140549                 <a href="respgui.html" class="code" title="function respgui(action, varargin)">respgui</a>(<span class="string">'PlotSVD'</span>);
6150550         <span class="keyword">end</span>
6160551
6170552         <span class="comment">%==========================================================</span>
6180553     <span class="keyword">case</span> <span class="string">'DispersionPanel'</span>                   <span class="comment">%  DispersionPanel</span>
6190554         <span class="comment">%==========================================================</span>
6200555         <span class="comment">%----------------------------------------------------------------</span>
6210556         <span class="comment">%  create figure</span>
6220557         <span class="comment">%----------------------------------------------------------------</span>
6230558         h = findobj(0,<span class="string">'tag'</span>,<span class="string">'dispersionpanel'</span>);
6240559         
6250560         <span class="keyword">if</span> ~isempty(h)
6260561             delete(h);
6270562         <span class="keyword">end</span>
6280563
6290564         [screen_wide, screen_high] = screensizecm;
6300565         fig_start = [0.4*screen_wide 0.5*screen_high];
6310566         fig_size  = [0.5*screen_wide 0.25*screen_high];
6320567         <span class="comment">%----------------------------------------------------------------</span>
6330568         figh = figure(<span class="string">'units'</span>,<span class="string">'centimeters'</span>,<span class="keyword">...</span><span class="comment">  %...Dispersion Control Figure</span>
6340569             <span class="string">'Position'</span>,[fig_start fig_size],<span class="keyword">...</span>
6350570             <span class="string">'tag'</span>,<span class="string">'dispersionpanel'</span>,<span class="keyword">...</span>
6360571             <span class="string">'NumberTitle'</span>,<span class="string">'off'</span>,<span class="keyword">...</span>
6370572             <span class="string">'Doublebuffer'</span>,<span class="string">'on'</span>,<span class="keyword">...</span>
6380573             <span class="string">'Visible'</span>,<span class="string">'On'</span>,<span class="keyword">...</span>
6390574             <span class="string">'Name'</span>,<span class="string">'Dispersion Fitting Control Panel'</span>,<span class="keyword">...</span>
6400575             <span class="string">'PaperPositionMode'</span>,<span class="string">'Auto'</span>);
6410576         set(figh,<span class="string">'MenuBar'</span>,<span class="string">'None'</span>);
6420577         <span class="comment">%------------------------------------------------------------------</span>
6430578
6440579         <span class="comment">%Radio Dispersion On/Off</span>
6450580         uicontrol(<span class="string">'Style'</span>,<span class="string">'radiobutton'</span>,<span class="keyword">...</span><span class="comment">     %Radio Horizontal Dispersion On/Off</span>
6460581             <span class="string">'units'</span>, <span class="string">'normalize'</span>, <span class="keyword">...</span>
6470582             <span class="string">'Position'</span>, [.05 .8 .3 .1], <span class="keyword">...</span>
6480583             <span class="string">'String'</span>,<span class="string">'Fit Eta-X'</span>,<span class="keyword">...</span>
6490584             <span class="string">'Tag'</span>,<span class="string">'etaxflag'</span>,<span class="keyword">...</span>
6500585             <span class="string">'Value'</span>,RSP(1).etaflag,<span class="keyword">...</span>
6510586             <span class="string">'ToolTipString'</span>,<span class="string">'Fit Horizontal Dispersion'</span>,<span class="keyword">...</span>
6520587             <span class="string">'FontSize'</span>,8,<span class="string">'FontWeight'</span>,<span class="string">'demi'</span>,<span class="keyword">...</span>
6530588             <span class="string">'Callback'</span>,<span class="string">'respgui(''EtaXFlag'')'</span>);
6540589
6550590         uicontrol(<span class="string">'Style'</span>,<span class="string">'radiobutton'</span>,<span class="keyword">...</span><span class="comment">     %Radio Vertical Dispersion On/Off</span>
6560591             <span class="string">'units'</span>, <span class="string">'normalize'</span>, <span class="keyword">...</span>
6570592             <span class="string">'Position'</span>, [.5 .8 .3 .1], <span class="keyword">...</span>
6580593             <span class="string">'String'</span>,<span class="string">'Fit Eta-Z'</span>,<span class="keyword">...</span>
6590594             <span class="string">'Tag'</span>,<span class="string">'etazflag'</span>,<span class="keyword">...</span>
6600595             <span class="string">'Value'</span>,RSP(2).etaflag,<span class="keyword">...</span>
6610596             <span class="string">'ToolTipString'</span>,<span class="string">'Fit Vertical Dispersion'</span>,<span class="keyword">...</span>
6620597             <span class="string">'FontSize'</span>,8,<span class="string">'FontWeight'</span>,<span class="string">'demi'</span>,<span class="keyword">...</span>
6630598             <span class="string">'Callback'</span>,<span class="string">'respgui(''EtaZFlag'')'</span>);
6640599
6650600         <span class="comment">%Select Horizontal Dispersion Weights</span>
6660601         cback = <span class="string">'rload(''GenFig'',BPM(1).name,BPM(1).status,BPM(1).ifit,'</span>;
6670602         cback = [cback <span class="string">'BPM(1).etawt,''Horizontal BPMs for Eta Fitting'',''etaxwt'');'</span>];
6680603         <span class="comment">%instructions are used during 'load' procedure of rload window</span>
6690604         instructions = [<span class="keyword">...</span>
6700605             <span class="string">'   global BPM;'</span>,<span class="keyword">...</span>
6710606             <span class="string">'   tlist = get(gcf,''UserData'');'</span>,<span class="keyword">...</span>
6720607             <span class="string">'   BPM(1).etawt=tlist{4};'</span>,<span class="keyword">...</span>
6730608             <span class="string">'   setappdata(0,''BPM'',BPM);'</span>,<span class="keyword">...</span>
6740609             <span class="string">'   orbgui(''RefreshOrbGUI'');'</span>];
6750610
6760611         uicontrol(<span class="string">'Style'</span>,<span class="string">'pushbutton'</span>,<span class="keyword">...</span><span class="comment">                           %Select Horizontal Dispersion Weights</span>
6770612             <span class="string">'units'</span>, <span class="string">'normalize'</span>, <span class="keyword">...</span>
6780613             <span class="string">'Position'</span>, [.05 .65 .3 .1], <span class="keyword">...</span>
6790614             <span class="string">'String'</span>,<span class="string">'Select x-BPM Weights'</span>,<span class="keyword">...</span>
6800615             <span class="string">'tag'</span>,<span class="string">'etaxwt'</span>,<span class="keyword">...</span>
6810616             <span class="string">'Callback'</span>,cback,<span class="keyword">...</span>
6820617             <span class="string">'Userdata'</span>,instructions);
6830618
6840619         <span class="comment">%Select Vertical Dispersion Weights</span>
6850620         cback=<span class="string">'rload(''GenFig'',BPM(2).name,BPM(2).status,BPM(2).ifit,'</span>;
6860621         cback=[cback <span class="string">'BPM(2).etawt,''Horizontal BPMs for Eta Fitting'',''etaywt'');'</span>];
6870622         <span class="comment">%instructions are used during 'load' procedure of rload window</span>
6880623         instructions=[<span class="keyword">...</span>
6890624             <span class="string">'   global BPM;'</span>,<span class="keyword">...</span>
6900625             <span class="string">'   tlist = get(gcf,''UserData'');'</span>,<span class="keyword">...</span>
6910626             <span class="string">'   BPM(2).etawt=tlist{4};'</span>,<span class="keyword">...</span>
6920627             <span class="string">'   setappdata(0,''BPM'',BPM);'</span>,<span class="keyword">...</span>
6930628             <span class="string">'   orbgui(''RefreshOrbGUI'');'</span>];
6940629
6950630         uicontrol(<span class="string">'Style'</span>,<span class="string">'pushbutton'</span>,<span class="keyword">...</span><span class="comment"> %Select Vertical Dispersion Weights</span>
6960631             <span class="string">'units'</span>, <span class="string">'normalize'</span>, <span class="keyword">...</span>
6970632             <span class="string">'Position'</span>, [.5 .65 .3 .1], <span class="keyword">...</span>
6980633             <span class="string">'String'</span>,<span class="string">'Select z-BPM Weights'</span>,<span class="keyword">...</span>
6990634             <span class="string">'tag'</span>,<span class="string">'etaywt'</span>,<span class="keyword">...</span>
7000635             <span class="string">'Callback'</span>,cback,<span class="keyword">...</span>
7010636             <span class="string">'Userdata'</span>,instructions);
7020637
7030638         <span class="comment">%==========================================================</span>
7040639     <span class="keyword">case</span> <span class="string">'EtaXFlag'</span>                   <span class="comment">%  EtaXFlag</span>
7050640         <span class="comment">%==========================================================</span>
7060641         RSP(1).etaflag = 0;
7070642         h = findobj(gcf,<span class="string">'tag'</span>,<span class="string">'etaxflag'</span>);
7080643         val = get(h,<span class="string">'value'</span>);
7090644         <span class="keyword">if</span> val == 1
7100645             RSP(1).etaflag = 1;
7110646             setappdata(0,<span class="string">'RSP'</span>,RSP);
7120647         <span class="keyword">end</span>
7130648
7140649         <span class="comment">%% TODO merge ETAXZflag function</span>
7150650         
7160651         <span class="comment">%==========================================================</span>
7170652     <span class="keyword">case</span> <span class="string">'EtaZFlag'</span>                   <span class="comment">%  EtaZFlag</span>
7180653         <span class="comment">%==========================================================</span>
7190654         RSP(2).etaflag = 0;
7200655         h = findobj(gcf,<span class="string">'tag'</span>,<span class="string">'etazflag'</span>);
7210656         val = get(h,<span class="string">'value'</span>);
7220657         <span class="keyword">if</span> val == 1
7230658             RSP(2).etaflag=1;
7240659             setappdata(0,<span class="string">'RSP'</span>,RSP);
7250660         <span class="keyword">end</span>
7260661
7270662
7280663         <span class="comment">%==========================================================</span>
7290664     <span class="keyword">otherwise</span>
7300665         disp([<span class="string">'Warning: no CASE found in respgui: '</span> action]);
7310666 <span class="keyword">end</span>  <span class="comment">%end switchyard</span></pre></div>
732<hr><address>Generated on Mon 21-May-2007 15:32:41 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
733</body>
734</html>
Note: See TracBrowser for help on using the repository browser.