source: MML/trunk/mml/doc_html/mml/gettune.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: 13.2 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 gettune</title>
6  <meta name="keywords" content="gettune">
7  <meta name="description" content="GETTUNE - Returns the betatron tunes">
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="index.html">mml</a> &gt; gettune.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 mml&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
19
20<h1>gettune
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>GETTUNE - Returns the betatron tunes</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 [Tune, tout, DataTime, ErrorFlag] = gettune(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">GETTUNE - Returns the betatron tunes
31  | Higher Fractional Tune (X) |
32  |                            | = gettune(t, FreshDataFlag, TimeOutPeriod)
33  |  Lower Fractional Tune (Y) |
34
35  INPUTS
36  1. t, FreshDataFlag, TimeOutPeriod (see help getpv for details)
37  2. 'Struct'  - Output will be a response matrix structure
38     'Numeric' - Output will be a numeric matrix {default}
39  3. Optional override of the units:
40     'Physics'  - Use physics  units
41     'Hardware' - Use hardware units
42  4. Optional override of the mode:
43     'Online'    - Get data online 
44     'Simulator' - Get data on the simulated accelerator using AT
45     'Model'     - Same as 'Simulator'
46     'Manual'    - Get data manually
47
48  OUTPUTS
49  1. Fractional tune
50  2. tout     (see help getpv for details)
51  3. DataTime (see help getpv for details)
52  4. ErrorFlag =  0   -&gt; no errors
53                 else -&gt; error or warning occurred
54
55  NOTES
56  1. An easy way to measure N averaged tunes is mean(gettune(1:2:N)')' (2 seconds between measurements)
57
58 See also <a href="steptune.html" class="code" title="function [DelQuad, ActuatorFamily] = steptune(varargin)">steptune</a>, <a href="settune.html" class="code" title="function [DelQuad, ActuatorFamily] = settune(varargin)">settune</a></pre></div>
59
60<!-- crossreference -->
61<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
62This function calls:
63<ul style="list-style-image:url(../matlabicon.gif)">
64<li><a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>  GETFAMILYDATA - Gets data associated with the accelerator control</li><li><a href="getpv.html" class="code" title="function [AM, tout, DataTime, ErrorFlag] = getpv(varargin)">getpv</a>        GETPV - Returns a variable from the online system or the model</li></ul>
65This function is called by:
66<ul style="list-style-image:url(../matlabicon.gif)">
67<li><a href="measchro.html" class="code" title="function [Chromaticity, FileName] = measchro(varargin)">measchro</a>    MEASCHRO -  measures the chromaticity function emperically</li><li><a href="quadcenter.html" class="code" title="function [QMS1, QMS2] = quadcenter(QuadFamily, QuadDev, XYPlane, FigureHandle)">quadcenter</a> QUADCENTER - Measure the magnet center of a quadrupole magnet</li><li><a href="settune.html" class="code" title="function [DelQuad, ActuatorFamily] = settune(varargin)">settune</a>    SETTUNE - Set the tune</li></ul>
68<!-- crossreference -->
69
70
71<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
72<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function [Tune, tout, DataTime, ErrorFlag] = gettune(varargin)</a>
730002 <span class="comment">%GETTUNE - Returns the betatron tunes</span>
740003 <span class="comment">%  | Higher Fractional Tune (X) |</span>
750004 <span class="comment">%  |                            | = gettune(t, FreshDataFlag, TimeOutPeriod)</span>
760005 <span class="comment">%  |  Lower Fractional Tune (Y) |</span>
770006 <span class="comment">%</span>
780007 <span class="comment">%  INPUTS</span>
790008 <span class="comment">%  1. t, FreshDataFlag, TimeOutPeriod (see help getpv for details)</span>
800009 <span class="comment">%  2. 'Struct'  - Output will be a response matrix structure</span>
810010 <span class="comment">%     'Numeric' - Output will be a numeric matrix {default}</span>
820011 <span class="comment">%  3. Optional override of the units:</span>
830012 <span class="comment">%     'Physics'  - Use physics  units</span>
840013 <span class="comment">%     'Hardware' - Use hardware units</span>
850014 <span class="comment">%  4. Optional override of the mode:</span>
860015 <span class="comment">%     'Online'    - Get data online</span>
870016 <span class="comment">%     'Simulator' - Get data on the simulated accelerator using AT</span>
880017 <span class="comment">%     'Model'     - Same as 'Simulator'</span>
890018 <span class="comment">%     'Manual'    - Get data manually</span>
900019 <span class="comment">%</span>
910020 <span class="comment">%  OUTPUTS</span>
920021 <span class="comment">%  1. Fractional tune</span>
930022 <span class="comment">%  2. tout     (see help getpv for details)</span>
940023 <span class="comment">%  3. DataTime (see help getpv for details)</span>
950024 <span class="comment">%  4. ErrorFlag =  0   -&gt; no errors</span>
960025 <span class="comment">%                 else -&gt; error or warning occurred</span>
970026 <span class="comment">%</span>
980027 <span class="comment">%  NOTES</span>
990028 <span class="comment">%  1. An easy way to measure N averaged tunes is mean(gettune(1:2:N)')' (2 seconds between measurements)</span>
1000029 <span class="comment">%</span>
1010030 <span class="comment">% See also steptune, settune</span>
1020031
1030032 <span class="comment">%</span>
1040033 <span class="comment">% Written by Gregory J. Portmann</span>
1050034 <span class="comment">% Modified by Laurent S. Nadolski</span>
1060035
1070036 DisplayFlag = 0;
1080037 <span class="keyword">for</span> i = length(varargin):-1:1
1090038     <span class="keyword">if</span> isstruct(varargin{i})
1100039         <span class="comment">% Ignore structures</span>
1110040     <span class="keyword">elseif</span> iscell(varargin{i})
1120041         <span class="comment">% Ignore cells</span>
1130042     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Display'</span>)
1140043         DisplayFlag = 1;
1150044         varargin(i) = [];
1160045     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'NoDisplay'</span>)
1170046         DisplayFlag = 0;
1180047         varargin(i) = [];
1190048     <span class="keyword">end</span>
1200049 <span class="keyword">end</span>
1210050 
1220051 <span class="comment">%% get betatron tunes</span>
1230052 [Tune, tout, DataTime] = <a href="getpv.html" class="code" title="function [AM, tout, DataTime, ErrorFlag] = getpv(varargin)">getpv</a>(<span class="string">'TUNE'</span>, <span class="string">'Monitor'</span>, [1 1; 1 2], varargin{:});
1240053
1250054 <span class="comment">%% Complete structure</span>
1260055 <span class="keyword">if</span> isstruct(Tune)
1270056     TuneUnitsString = <a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>(<span class="string">'TUNE'</span>,<span class="string">'Monitor'</span>,<span class="string">'HWUnits'</span>);
1280057     <span class="keyword">if</span> isempty(TuneUnitsString)
1290058         Tune.UnitsString = <span class="string">'Fractional Tune'</span>;
1300059     <span class="keyword">else</span>
1310060         Tune.UnitsString = TuneUnitsString;
1320061     <span class="keyword">end</span>
1330062     Tune.DataDescriptor = <span class="string">'TUNE'</span>;
1340063     Tune.CreatedBy = <span class="string">'gettune'</span>;
1350064 <span class="keyword">end</span>
1360065
1370066 <span class="comment">%% Display to the screen</span>
1380067 <span class="keyword">if</span> DisplayFlag
1390068    fprintf(<span class="string">'\n  Horizontal Tune = %f\n'</span>, Tune(1));
1400069    fprintf(<span class="string">'    Vertical Tune = %f\n\n'</span>, Tune(2));
1410070 <span class="keyword">end</span>
1420071
1430072
1440073 <span class="comment">% % Get data at every point in time vector, t</span>
1450074 <span class="comment">% t_start = gettime;</span>
1460075 <span class="comment">% for i = 1:length(t)</span>
1470076 <span class="comment">%     T = t(i)-(gettime-t_start);</span>
1480077 <span class="comment">%     if T &gt; 0</span>
1490078 <span class="comment">%         pause(T);</span>
1500079 <span class="comment">%     end</span>
1510080 <span class="comment">%     tout(i) = gettime - t_start;</span>
1520081 <span class="comment">%</span>
1530082 <span class="comment">%     [Tune(:,i), ErrorFlag] = local_gettune;</span>
1540083 <span class="comment">%</span>
1550084 <span class="comment">%     if FreshDataFlag</span>
1560085 <span class="comment">%         FreshDataCounter = FreshDataFlag;</span>
1570086 <span class="comment">%         t0 = gettime;</span>
1580087 <span class="comment">%         Tune0 = Tune(:,i);</span>
1590088 <span class="comment">%         while FreshDataCounter</span>
1600089 <span class="comment">%             [Tune(:,i), ErrorFlag] = local_gettune;</span>
1610090 <span class="comment">%</span>
1620091 <span class="comment">%             if ~any((Tune(:,i)-Tune0)==0)</span>
1630092 <span class="comment">%                 FreshDataCounter = FreshDataCounter - 1;</span>
1640093 <span class="comment">%             end</span>
1650094 <span class="comment">%</span>
1660095 <span class="comment">%             if (gettime-t0)&gt; TimeOutPeriod</span>
1670096 <span class="comment">%                 error('Timed out waiting for fresh tune data.');</span>
1680097 <span class="comment">%                 %ErrorFlag = 1;</span>
1690098 <span class="comment">%                 %break</span>
1700099 <span class="comment">%             end</span>
1710100 <span class="comment">%         end</span>
1720101 <span class="comment">%     end</span>
1730102 <span class="comment">% end</span>
1740103 <span class="comment">%</span>
1750104 <span class="comment">% % if nargout == 0</span>
1760105 <span class="comment">% %     fprintf('\n   Horizontal Tune = %f\n', Tune(1,1));</span>
1770106 <span class="comment">% %     fprintf('     Vertical Tune = %f\n\n', Tune(2,1));</span>
1780107 <span class="comment">% % end</span>
1790108 <span class="comment">%</span>
1800109 <span class="comment">%</span>
1810110 <span class="comment">%</span>
1820111 <span class="comment">% function [Tune, ErrorFlag] = local_gettune</span>
1830112 <span class="comment">%</span>
1840113 <span class="comment">% ErrorFlag = 0;</span>
1850114 <span class="comment">%</span>
1860115 <span class="comment">% [FamilyIndex, ACCELERATOR_OBJECT] = isfamily('TUNE');</span>
1870116 <span class="comment">%</span>
1880117 <span class="comment">% if isfield(ACCELERATOR_OBJECT, 'Mode')</span>
1890118 <span class="comment">%     Mode = ACCELERATOR_OBJECT.Mode;</span>
1900119 <span class="comment">% else</span>
1910120 <span class="comment">%     Mode = 'Online';</span>
1920121 <span class="comment">% end</span>
1930122 <span class="comment">%</span>
1940123 <span class="comment">% if strcmp(lower(Mode),'online')</span>
1950124 <span class="comment">%</span>
1960125 <span class="comment">%     RFam = getam('TUNE');</span>
1970126 <span class="comment">%</span>
1980127 <span class="comment">% elseif strcmp(lower(Mode),'simulator')</span>
1990128 <span class="comment">%</span>
2000129 <span class="comment">%     global THERING</span>
2010130 <span class="comment">%     if isempty(THERING)</span>
2020131 <span class="comment">%         error('Simulator variable is not setup properly.');</span>
2030132 <span class="comment">%     end</span>
2040133 <span class="comment">%</span>
2050134 <span class="comment">%     [TD, Tune1] = twissring(THERING,0,1:length(THERING)+1);</span>
2060135 <span class="comment">%     Tune = Tune1' + rand(2,1)*.0001;</span>
2070136 <span class="comment">%</span>
2080137 <span class="comment">% elseif strcmp(lower(Mode),'manual')</span>
2090138 <span class="comment">%</span>
2100139 <span class="comment">%     Tune(1,1) = input('   Input the horizontal tune = ');</span>
2110140 <span class="comment">%     Tune(2,1) = input('   Input the vertical   tune = ');</span>
2120141 <span class="comment">%</span>
2130142 <span class="comment">% elseif strcmp(lower(Mode),'als')</span>
2140143 <span class="comment">%</span>
2150144 <span class="comment">%     Tune = gettune_als;</span>
2160145 <span class="comment">%</span>
2170146 <span class="comment">% else</span>
2180147 <span class="comment">%</span>
2190148 <span class="comment">%     error(sprintf('Unknown mode for family %s.', ACCELERATOR_OBJECT.FamilyName));</span>
2200149 <span class="comment">%</span>
2210150 <span class="comment">% end</span></pre></div>
222<hr><address>Generated on Mon 21-May-2007 15:29:18 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
223</body>
224</html>
Note: See TracBrowser for help on using the repository browser.