source: MML/trunk/mml/doc_html/mml/getoffset.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: 20.0 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 getoffset</title>
6  <meta name="keywords" content="getoffset">
7  <meta name="description" content="GETOFFSET - Returns the offset values for a family">
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; getoffset.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>getoffset
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>GETOFFSET - Returns the offset values for a family</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 Data = getoffset(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">GETOFFSET - Returns the offset values for a family
31  Offset = getoffset(Family, Field, DeviceList)
32  Offset = getoffset(Family, DeviceList)
33  Offset = getoffset(Family)
34
35  INPUTS
36  1. Family - Family Name
37              Data Structure
38              Accelerator Object
39  2. Field - Accelerator Object field name ('Monitor', 'Setpoint', etc) {Default: 'Monitor' for BPM, 'Setpoint' for magnet}
40  3. DeviceList ([Sector Device #] or [element #]) {Default: whole family}
41  4. 'Physics'  - Use physics  units (optional override of units)
42     'Hardware' - Use hardware units (optional override of units)
43  5. 'Struct'  - Return a data structure
44     'Numeric' - Return numeric outputs  {Default}
45     'Object'  - Return a accelerator object (AccObj)
46
47  OUTPUTS
48  1. Offset - Offset value for the family {Default: 0}
49 
50  NOTES
51  1. If Family is a cell array, then DeviceList can also be a cell arrays
52  2. The offset orbit must be stored in hardware units.
53
54  See also <a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>, <a href="getgolden.html" class="code" title="function Data = getgolden(varargin)">getgolden</a>, <a href="raw2real.html" class="code" title="function DataOut = raw2real(varargin)">raw2real</a>, <a href="real2raw.html" class="code" title="function DataOut = real2raw(varargin)">real2raw</a>
55
56  Written by Greg Portmann</pre></div>
57
58<!-- crossreference -->
59<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
60This function calls:
61<ul style="list-style-image:url(../matlabicon.gif)">
62<li><a href="family2datastruct.html" class="code" title="function [DataStruct, ErrorFlag] = family2datastruct(varargin)">family2datastruct</a>  FAMILY2DATASTRUCTURE - Returns a datastructure corresponding to a Family</li><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="getoffset.html" class="code" title="function Data = getoffset(varargin)">getoffset</a>       GETOFFSET - Returns the offset values for a family</li><li><a href="getphysdata.html" class="code" title="function [Data, iNotFound] = getphysdata(Family, Field, DeviceList)">getphysdata</a>  GETPHYSDATA - Gets physics data</li><li><a href="getunits.html" class="code" title="function [Units, UnitsString] = getunits(Family, Field)">getunits</a>       GETUNITS - Return the present family units and units string</li><li><a href="hw2physics.html" class="code" title="function S = hw2physics(Family, Field, value, DeviceList, Energy)">hw2physics</a>     HW2PHYSICS - Converts from 'Hardware' units to 'Physics' units</li><li><a href="inputparsingffd.html" class="code" title="function [Family, Field, DeviceList, UnitsFlag, ModelFlag] = inputparsingffd(varargin)">inputparsingffd</a>   INPUTPARSINGFFD - Parses the typical input line of Family, Field, DeviceList</li><li><a href="ismemberof.html" class="code" title="function  [IsTest, Index] = ismemberof(FamilyName, Field, MemberString)">ismemberof</a>      ISMEMBEROF - Returns turn if the membership information of a family (cell of strings)</li></ul>
63This function is called by:
64<ul style="list-style-image:url(../matlabicon.gif)">
65<li><a href="findrf1.html" class="code" title="function [DeltaRF, RFnew, frf] = findrf1(DeltaRF, BPMFamily, BPMList, FileName)">findrf1</a>     FINDRF1 - Finds the RF frequency that minimizes the horizonal dispersion</li><li><a href="getoffset.html" class="code" title="function Data = getoffset(varargin)">getoffset</a>        GETOFFSET - Returns the offset values for a family</li><li><a href="hw2physics.html" class="code" title="function S = hw2physics(Family, Field, value, DeviceList, Energy)">hw2physics</a>      HW2PHYSICS - Converts from 'Hardware' units to 'Physics' units</li><li><a href="makebump.html" class="code" title="function OCS = makebump(varargin)">makebump</a>      MAKEBUMP - Creates and orbit correction structure (OCS) usable by setorbit</li><li><a href="meascmhysteresis.html" class="code" title="function meascmhysteresis(BPMList, CMFamily, CMList, MaxChange, NSteps)">meascmhysteresis</a>    MEASCMHYSTERESIS - Measure corrector magnet hysteresis</li><li><a href="physics2hw.html" class="code" title="function S = physics2hw(Family, Field, value, DeviceList, Energy)">physics2hw</a>  PHYSICS2HW - Converts from 'Physics' units to 'Hardware' units</li><li><a href="plotoffsetorbit.html" class="code" title="function plotoffsetorbit(varargin)">plotoffsetorbit</a>       PLOTOFFSETORBIT - Plots the offset orbit</li><li><a href="plotorbit.html" class="code" title="function plotorbit(varargin)">plotorbit</a>       PLOTORBIT - Plot the present orbit w.r.t. the golden or offset orbit</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="quadcenterfit.html" class="code" title="function [XOffset, YOffset] = quadcenterfit(varargin)">quadcenterfit</a> BBASEARCH - Model search method to find a quarupole center</li><li><a href="quadplotall.html" class="code" title="function [Xnew, Ynew, BPMxFamily, QUADxFamily, BPMyFamily, QUADyFamily, DateMatX, DateMatY] = quadplotall(DirName, PlotFlag)">quadplotall</a> QUADPLOTALL - Collect the date from a quadrupole center run.</li><li><a href="raw2real.html" class="code" title="function DataOut = raw2real(varargin)">raw2real</a>    RAW2REAL - Converts raw control system data to calibrated values</li><li><a href="real2raw.html" class="code" title="function DataOut = real2raw(varargin)">real2raw</a>        REAL2RAW - Converts "real" data (calibrated values) to control system data</li><li><a href="rmoffset.html" class="code" title="function Data = rmoffset(varargin)">rmoffset</a> RMOFFSET - Remove the offset values for data set</li><li><a href="saveoffsetorbit.html" class="code" title="function saveoffsetorbit(FileName)">saveoffsetorbit</a>     SAVEOFFSETORBIT - Save offset orbit into file</li><li><a href="setorbit.html" class="code" title="function [OCS, OCS0, V, S, ErrorFlag] = setorbit(varargin)">setorbit</a>      SETORBIT - Orbit correction function</li><li><a href="setorbitbump.html" class="code" title="function [OCS, OCS0, V, S, ErrorFlag] = setorbitbump(varargin)">setorbitbump</a>   SETORBITBUMP - Local bump program (uses setorbit)</li></ul>
66<!-- crossreference -->
67
68
69<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
70<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function Data = getoffset(varargin)</a>
710002 <span class="comment">%GETOFFSET - Returns the offset values for a family</span>
720003 <span class="comment">%  Offset = getoffset(Family, Field, DeviceList)</span>
730004 <span class="comment">%  Offset = getoffset(Family, DeviceList)</span>
740005 <span class="comment">%  Offset = getoffset(Family)</span>
750006 <span class="comment">%</span>
760007 <span class="comment">%  INPUTS</span>
770008 <span class="comment">%  1. Family - Family Name</span>
780009 <span class="comment">%              Data Structure</span>
790010 <span class="comment">%              Accelerator Object</span>
800011 <span class="comment">%  2. Field - Accelerator Object field name ('Monitor', 'Setpoint', etc) {Default: 'Monitor' for BPM, 'Setpoint' for magnet}</span>
810012 <span class="comment">%  3. DeviceList ([Sector Device #] or [element #]) {Default: whole family}</span>
820013 <span class="comment">%  4. 'Physics'  - Use physics  units (optional override of units)</span>
830014 <span class="comment">%     'Hardware' - Use hardware units (optional override of units)</span>
840015 <span class="comment">%  5. 'Struct'  - Return a data structure</span>
850016 <span class="comment">%     'Numeric' - Return numeric outputs  {Default}</span>
860017 <span class="comment">%     'Object'  - Return a accelerator object (AccObj)</span>
870018 <span class="comment">%</span>
880019 <span class="comment">%  OUTPUTS</span>
890020 <span class="comment">%  1. Offset - Offset value for the family {Default: 0}</span>
900021 <span class="comment">%</span>
910022 <span class="comment">%  NOTES</span>
920023 <span class="comment">%  1. If Family is a cell array, then DeviceList can also be a cell arrays</span>
930024 <span class="comment">%  2. The offset orbit must be stored in hardware units.</span>
940025 <span class="comment">%</span>
950026 <span class="comment">%  See also getfamilydata, getgolden, raw2real, real2raw</span>
960027 <span class="comment">%</span>
970028 <span class="comment">%  Written by Greg Portmann</span>
980029
990030
1000031 <span class="comment">%%%%%%%%%%%%%%%%%</span>
1010032 <span class="comment">% Input Parsing %</span>
1020033 <span class="comment">%%%%%%%%%%%%%%%%%</span>
1030034 UnitsFlagCell = {};
1040035 StructOutputFlag = 0;
1050036 ObjectOutputFlag = 0;
1060037 <span class="keyword">for</span> i = length(varargin):-1:1
1070038     <span class="keyword">if</span> isstruct(varargin{i})
1080039         <span class="comment">% Ignor structures</span>
1090040     <span class="keyword">elseif</span> iscell(varargin{i})
1100041         <span class="comment">% Ignor cells</span>
1110042     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'struct'</span>)
1120043         StructOutputFlag = 1;
1130044         varargin(i) = [];
1140045     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'numeric'</span>)
1150046         StructOutputFlag = 0;
1160047         varargin(i) = [];
1170048     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'simulator'</span>) || strcmpi(varargin{i},<span class="string">'model'</span>) || strcmpi(varargin{i},<span class="string">'Online'</span>) || strcmpi(varargin{i},<span class="string">'Manual'</span>)
1180049         <span class="comment">% Remove and ignor</span>
1190050         varargin(i) = [];
1200051     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'physics'</span>)
1210052         UnitsFlagCell = {<span class="string">'Physics'</span>};
1220053         varargin(i) = [];
1230054     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'hardware'</span>)
1240055         UnitsFlagCell = {<span class="string">'Hardware'</span>};
1250056         varargin(i) = [];
1260057     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Object'</span>)
1270058         ObjectOutputFlag = 1;
1280059         StructOutputFlag = 1;
1290060         varargin(i) = [];
1300061     <span class="keyword">end</span>
1310062 <span class="keyword">end</span>
1320063
1330064 <span class="keyword">if</span> isempty(varargin)
1340065     error(<span class="string">'Must have at least a family name input'</span>);
1350066 <span class="keyword">end</span>
1360067
1370068
1380069 <span class="comment">%%%%%%%%%%%%%%</span>
1390070 <span class="comment">% Cell input %</span>
1400071 <span class="comment">%%%%%%%%%%%%%%</span>
1410072 <span class="keyword">if</span> iscell(varargin{1})
1420073     <span class="keyword">for</span> i = 1:length(varargin{1})
1430074         <span class="keyword">if</span> length(varargin) &lt; 2
1440075             Data{i} = <a href="getoffset.html" class="code" title="function Data = getoffset(varargin)">getoffset</a>(varargin{1}{i}, UnitsFlagCell{:});
1450076         <span class="keyword">elseif</span> length(varargin) &lt; 3
1460077             <span class="keyword">if</span> iscell(varargin{2})
1470078                 Data{i} = <a href="getoffset.html" class="code" title="function Data = getoffset(varargin)">getoffset</a>(varargin{1}{i}, varargin{2}{i}, UnitsFlagCell{:});
1480079             <span class="keyword">else</span>
1490080                 Data{i} = <a href="getoffset.html" class="code" title="function Data = getoffset(varargin)">getoffset</a>(varargin{1}{i}, varargin{2}, UnitsFlagCell{:});
1500081             <span class="keyword">end</span>
1510082         <span class="keyword">else</span>
1520083             <span class="keyword">if</span> iscell(varargin{3})
1530084                 Data{i} = <a href="getoffset.html" class="code" title="function Data = getoffset(varargin)">getoffset</a>(varargin{1}{i}, varargin{2}{i}, varargin{3}{i}, UnitsFlagCell{:});
1540085             <span class="keyword">else</span>
1550086                 Data{i} = <a href="getoffset.html" class="code" title="function Data = getoffset(varargin)">getoffset</a>(varargin{1}{i}, varargin{2}{i}, varargin{3}, UnitsFlagCell{:});
1560087             <span class="keyword">end</span>
1570088         <span class="keyword">end</span>
1580089     <span class="keyword">end</span>
1590090     <span class="keyword">return</span>
1600091 <span class="keyword">end</span>
1610092
1620093
1630094 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
1640095 <span class="comment">% Parse Family, Field, DeviceList %</span>
1650096 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
1660097 [Family, Field, DeviceList, UnitsFlag] = <a href="inputparsingffd.html" class="code" title="function [Family, Field, DeviceList, UnitsFlag, ModelFlag] = inputparsingffd(varargin)">inputparsingffd</a>(varargin{:});
1670098
1680099
1690100 <span class="comment">% Units flag</span>
1700101 <span class="keyword">if</span> isempty(UnitsFlagCell)
1710102     <span class="comment">% For structure inputs, use the units in the structure (from inputparsingffd)</span>
1720103     <span class="comment">% Else, get the default family value</span>
1730104     <span class="keyword">if</span> isempty(UnitsFlag)
1740105         UnitsFlag = <a href="getunits.html" class="code" title="function [Units, UnitsString] = getunits(Family, Field)">getunits</a>(Family);
1750106     <span class="keyword">end</span>
1760107 <span class="keyword">else</span>
1770108     <span class="comment">% Input override has priority</span>
1780109     UnitsFlag = UnitsFlagCell{1};
1790110 <span class="keyword">end</span>
1800111
1810112
1820113 <span class="comment">% Default field is Monitor for BPMs else Setpoint</span>
1830114 <span class="keyword">if</span> isempty(Field)
1840115     <span class="keyword">if</span> <a href="ismemberof.html" class="code" title="function  [IsTest, Index] = ismemberof(FamilyName, Field, MemberString)">ismemberof</a>(Family,<span class="string">'BPM'</span>)
1850116         Field = <span class="string">'Monitor'</span>;
1860117     <span class="keyword">else</span>
1870118         Field = <span class="string">'Setpoint'</span>;
1880119     <span class="keyword">end</span>
1890120 <span class="keyword">end</span>
1900121
1910122
1920123 <span class="comment">%%%%%%%%%%%%</span>
1930124 <span class="comment">% Get data %</span>
1940125 <span class="comment">%%%%%%%%%%%%</span>
1950126
1960127 <span class="comment">% 1. Try the AO and AD</span>
1970128 Data = <a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>(Family, Field, <span class="string">'Offset'</span>, DeviceList);
1980129 <span class="keyword">if</span> isempty(Data) &amp;&amp; (strcmp(Field, <span class="string">'Monitor'</span>) || strcmp(Field, <span class="string">'Setpoint'</span>))
1990130     Data = <a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>(Family, <span class="string">'Offset'</span>, DeviceList);
2000131 <span class="keyword">end</span>
2010132
2020133 <span class="comment">% 2. Then look in PhysData</span>
2030134 <span class="keyword">if</span> isempty(Data)
2040135     <span class="keyword">try</span>
2050136         Data = <a href="getphysdata.html" class="code" title="function [Data, iNotFound] = getphysdata(Family, Field, DeviceList)">getphysdata</a>(Family, Field, <span class="string">'Offset'</span>, DeviceList);
2060137     <span class="keyword">catch</span>
2070138     <span class="keyword">end</span>
2080139 <span class="keyword">end</span>
2090140 <span class="keyword">if</span> isempty(Data) &amp;&amp; (strcmp(Field, <span class="string">'Monitor'</span>) || strcmp(Field, <span class="string">'Setpoint'</span>))
2100141     <span class="keyword">try</span>
2110142         Data = <a href="getphysdata.html" class="code" title="function [Data, iNotFound] = getphysdata(Family, Field, DeviceList)">getphysdata</a>(Family, <span class="string">'Offset'</span>, DeviceList);
2120143     <span class="keyword">catch</span>
2130144     <span class="keyword">end</span>
2140145 <span class="keyword">end</span>
2150146
2160147 <span class="comment">% Default offset</span>
2170148 <span class="keyword">if</span> isempty(Data)
2180149     Data = zeros(size(DeviceList,1),1);
2190150 <span class="keyword">end</span>
2200151
2210152
2220153 <span class="keyword">if</span> isstruct(Data)
2230154     Data = Data.Data;
2240155 <span class="keyword">end</span>
2250156
2260157
2270158 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
2280159 <span class="comment">% Change to physics units if requested %</span>
2290160 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
2300161 <span class="keyword">if</span> strcmpi(UnitsFlag,<span class="string">'Physics'</span>)
2310162     <span class="comment">% Offsets in physics units are zero!</span>
2320163     Data = <a href="hw2physics.html" class="code" title="function S = hw2physics(Family, Field, value, DeviceList, Energy)">hw2physics</a>(Family, Field, Data, DeviceList);
2330164 <span class="keyword">end</span>
2340165
2350166
2360167 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
2370168 <span class="comment">% Return a data structure if requested %</span>
2380169 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
2390170 <span class="keyword">if</span> StructOutputFlag
2400171     DataNumeric = Data;
2410172     <span class="keyword">if</span> isempty(UnitsFlag)
2420173         Data = <a href="family2datastruct.html" class="code" title="function [DataStruct, ErrorFlag] = family2datastruct(varargin)">family2datastruct</a>(Family, Field, DeviceList);
2430174     <span class="keyword">else</span>
2440175         Data = <a href="family2datastruct.html" class="code" title="function [DataStruct, ErrorFlag] = family2datastruct(varargin)">family2datastruct</a>(Family, Field, DeviceList, UnitsFlag);
2450176     <span class="keyword">end</span>
2460177     Data.Data = DataNumeric;
2470178     Data.DataDescriptor = sprintf(<span class="string">'%s.%s Offset'</span>, Family, Field);
2480179     Data.CreatedBy = <span class="string">'getoffset'</span>;
2490180
2500181     <span class="comment">% Make the output an AccObj object</span>
2510182     <span class="keyword">if</span> ObjectOutputFlag
2520183         Data = AccObj(Data);
2530184     <span class="keyword">end</span>
2540185 <span class="keyword">end</span></pre></div>
255<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>
256</body>
257</html>
Note: See TracBrowser for help on using the repository browser.