source: MML/trunk/mml/doc_html/mml/family2datastruct.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: 17.9 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 family2datastruct</title>
6  <meta name="keywords" content="family2datastruct">
7  <meta name="description" content="FAMILY2DATASTRUCTURE - Returns a datastructure corresponding to 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; family2datastruct.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>family2datastruct
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>FAMILY2DATASTRUCTURE - Returns a datastructure corresponding to 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 [DataStruct, ErrorFlag] = family2datastruct(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">FAMILY2DATASTRUCTURE - Returns a datastructure corresponding to a Family
31  [DataStruct, ErrorFlag] = family2datastruct(Family, Field, DeviceList)
32  [DataStruct, ErrorFlag] = family2datastruct(Family, DeviceList)      (Field will default to 'Monitor')
33
34  INPUTS
35  1. Family - Family Name
36              Data Structure
37              Accelerator Object
38  2. Field - Accelerator Object field name ('Monitor', 'Setpoint', etc) {'Monitor'}
39  3. DeviceList ([Sector Device #] or [element #]) {Default: whole family}
40  4. 'Physics'  - Use physics  units (optional override of units)
41     'Hardware' - Use hardware units (optional override of units)
42
43  OUTPUTS
44  1. DataStruct = Date structure corresponding to the Family, Field, and DeviceList
45 
46  NOTES
47  1. If Family is a cell array, then DeviceList and Field can also be a cell arrays
48
49 See Also builddatastruct</pre></div>
50
51<!-- crossreference -->
52<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
53This function calls:
54<ul style="list-style-image:url(../matlabicon.gif)">
55<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="family2dev.html" class="code" title="function DeviceList = family2dev(Family, varargin);">family2dev</a>      FAMILY2DEV - Return the device list for a family</li><li><a href="family2status.html" class="code" title="function [S, IndexList] = family2status(Family, DeviceList)">family2status</a>        FAMILY2STATUS - Returns the device status</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="getmode.html" class="code" title="function Mode = getmode(Family, Field)">getmode</a>        GETMODE - Returns the present family mode ('Online', 'Simulator', 'Manual', 'Special', etc)</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="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></ul>
56This function is called by:
57<ul style="list-style-image:url(../matlabicon.gif)">
58<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="family2tol.html" class="code" title="function [Data, ErrorFlag] = family2tol(varargin)">family2tol</a>        FAMILY2TOL - Return the (SP-AM) tolerance for a family</li><li><a href="getcrunch.html" class="code" title="function Data = getcrunch(varargin)">getcrunch</a>  GETCRUNCH- Returns the crunch values for a family (radians)</li><li><a href="getgain.html" class="code" title="function Data = getgain(varargin)">getgain</a>   GETGAIN - Returns the gain for a family</li><li><a href="getgolden.html" class="code" title="function Data = getgolden(varargin)">getgolden</a> GETGOLDEN - Returns the golden values for a family</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="getroll.html" class="code" title="function Data = getroll(varargin)">getroll</a>    GETROLL - Returns the roll values for a family (radians)</li><li><a href="getsigma.html" class="code" title="function [Data, FileName] = getsigma(varargin)">getsigma</a>       GETSIGMA - Return the standard deviation in the monitor for a family</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="maxpv.html" class="code" title="function [Data, ErrorFlag] = maxpv(varargin)">maxpv</a>     MAXPV - Maximum value of a process variable</li><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="minpv.html" class="code" title="function [Data, ErrorFlag] = minpv(varargin)">minpv</a>     MinPV - Maximum value of a process variable</li><li><a href="rmgolden.html" class="code" title="function Data = rmgolden(varargin)">rmgolden</a>        RMGOLDEN - Remove the golden values for data set</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="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><li><a href="setorbitsetup.html" class="code" title="function [BPM, CM, Flags, EVectors] = setorbitsetup(varargin)">setorbitsetup</a>     SETORBITSETUP - BPM & CM setup function for setorbitgui</li></ul>
59<!-- crossreference -->
60
61
62<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
63<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function [DataStruct, ErrorFlag] = family2datastruct(varargin)</a>
640002 <span class="comment">%FAMILY2DATASTRUCTURE - Returns a datastructure corresponding to a Family</span>
650003 <span class="comment">%  [DataStruct, ErrorFlag] = family2datastruct(Family, Field, DeviceList)</span>
660004 <span class="comment">%  [DataStruct, ErrorFlag] = family2datastruct(Family, DeviceList)      (Field will default to 'Monitor')</span>
670005 <span class="comment">%</span>
680006 <span class="comment">%  INPUTS</span>
690007 <span class="comment">%  1. Family - Family Name</span>
700008 <span class="comment">%              Data Structure</span>
710009 <span class="comment">%              Accelerator Object</span>
720010 <span class="comment">%  2. Field - Accelerator Object field name ('Monitor', 'Setpoint', etc) {'Monitor'}</span>
730011 <span class="comment">%  3. DeviceList ([Sector Device #] or [element #]) {Default: whole family}</span>
740012 <span class="comment">%  4. 'Physics'  - Use physics  units (optional override of units)</span>
750013 <span class="comment">%     'Hardware' - Use hardware units (optional override of units)</span>
760014 <span class="comment">%</span>
770015 <span class="comment">%  OUTPUTS</span>
780016 <span class="comment">%  1. DataStruct = Date structure corresponding to the Family, Field, and DeviceList</span>
790017 <span class="comment">%</span>
800018 <span class="comment">%  NOTES</span>
810019 <span class="comment">%  1. If Family is a cell array, then DeviceList and Field can also be a cell arrays</span>
820020 <span class="comment">%</span>
830021 <span class="comment">% See Also builddatastruct</span>
840022
850023 <span class="comment">%  Written by Gregory J. Portmann</span>
860024
870025
880026 <span class="comment">%%%%%%%%%%%%%%%%%</span>
890027 <span class="comment">% Input Parsing %</span>
900028 <span class="comment">%%%%%%%%%%%%%%%%%</span>
910029 UnitsFlagCell = {};
920030 <span class="keyword">for</span> i = length(varargin):-1:1
930031     <span class="keyword">if</span> isstruct(varargin{i})
940032         <span class="comment">% ignore structures</span>
950033     <span class="keyword">elseif</span> iscell(varargin{i})
960034         <span class="comment">% ignore cells</span>
970035     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'struct'</span>)
980036         <span class="comment">% Remove and ignore</span>
990037         varargin(i) = [];
1000038     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'numeric'</span>)
1010039         <span class="comment">% Remove and ignore</span>
1020040         varargin(i) = [];
1030041     <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>)
1040042         <span class="comment">% Remove and ignore</span>
1050043         varargin(i) = [];
1060044     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'physics'</span>)
1070045         UnitsFlagCell = {<span class="string">'Physics'</span>};
1080046         varargin(i) = [];
1090047     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'hardware'</span>)
1100048         UnitsFlagCell = {<span class="string">'Hardware'</span>};
1110049         varargin(i) = [];
1120050     <span class="keyword">end</span>
1130051 <span class="keyword">end</span>
1140052
1150053 <span class="keyword">if</span> isempty(varargin)
1160054     error(<span class="string">'Must have at least a family name input'</span>);
1170055 <span class="keyword">end</span>
1180056
1190057
1200058 <span class="comment">%%%%%%%%%%%%%%%%%%%%%</span>
1210059 <span class="comment">% Cell Array Inputs %</span>
1220060 <span class="comment">%%%%%%%%%%%%%%%%%%%%%</span>
1230061 <span class="keyword">if</span> iscell(varargin{1})
1240062     <span class="keyword">for</span> i = 1:length(varargin{1})
1250063         <span class="keyword">if</span> length(varargin) &lt; 2
1260064             [DataStruct{i}, ErrorFlag{i}]  = <a href="family2datastruct.html" class="code" title="function [DataStruct, ErrorFlag] = family2datastruct(varargin)">family2datastruct</a>(varargin{1}{i}, UnitsFlagCell{:});
1270065         <span class="keyword">elseif</span> length(varargin) &lt; 3
1280066             <span class="keyword">if</span> iscell(varargin{2})
1290067                 [DataStruct{i}, ErrorFlag{i}]  = <a href="family2datastruct.html" class="code" title="function [DataStruct, ErrorFlag] = family2datastruct(varargin)">family2datastruct</a>(varargin{1}{i}, varargin{2}{i}, UnitsFlagCell{:});
1300068             <span class="keyword">else</span>
1310069                 [DataStruct{i}, ErrorFlag{i}]  = <a href="family2datastruct.html" class="code" title="function [DataStruct, ErrorFlag] = family2datastruct(varargin)">family2datastruct</a>(varargin{1}{i}, varargin{2}, UnitsFlagCell{:});
1320070             <span class="keyword">end</span>
1330071         <span class="keyword">else</span>
1340072             <span class="keyword">if</span> iscell(varargin{2})
1350073                 <span class="keyword">if</span> iscell(varargin{3})
1360074                     [DataStruct{i}, ErrorFlag{i}]  = <a href="family2datastruct.html" class="code" title="function [DataStruct, ErrorFlag] = family2datastruct(varargin)">family2datastruct</a>(varargin{1}{i}, varargin{2}{i}, varargin{3}{i}, UnitsFlagCell{:});
1370075                 <span class="keyword">else</span>
1380076                     [DataStruct{i}, ErrorFlag{i}]  = <a href="family2datastruct.html" class="code" title="function [DataStruct, ErrorFlag] = family2datastruct(varargin)">family2datastruct</a>(varargin{1}{i}, varargin{2}{i}, varargin{3}, UnitsFlagCell{:});
1390077                 <span class="keyword">end</span>
1400078             <span class="keyword">else</span>
1410079                 <span class="keyword">if</span> iscell(varargin{3})
1420080                     [DataStruct{i}, ErrorFlag{i}]  = <a href="family2datastruct.html" class="code" title="function [DataStruct, ErrorFlag] = family2datastruct(varargin)">family2datastruct</a>(varargin{1}{i}, varargin{2}, varargin{3}{i}, UnitsFlagCell{:});
1430081                 <span class="keyword">else</span>
1440082                     [DataStruct{i}, ErrorFlag{i}]  = <a href="family2datastruct.html" class="code" title="function [DataStruct, ErrorFlag] = family2datastruct(varargin)">family2datastruct</a>(varargin{1}{i}, varargin{2}, varargin{3}, UnitsFlagCell{:});
1450083                 <span class="keyword">end</span>
1460084             <span class="keyword">end</span>
1470085         <span class="keyword">end</span>
1480086     <span class="keyword">end</span>
1490087     <span class="keyword">return</span>
1500088 <span class="keyword">end</span>
1510089
1520090
1530091 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
1540092 <span class="comment">% Parse Family, Field, DeviceList %</span>
1550093 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
1560094 [Family, Field, DeviceList, UnitsFlag] = <a href="inputparsingffd.html" class="code" title="function [Family, Field, DeviceList, UnitsFlag, ModelFlag] = inputparsingffd(varargin)">inputparsingffd</a>(varargin{:});
1570095
1580096 <span class="comment">% Units flag</span>
1590097 <span class="keyword">if</span> isempty(UnitsFlagCell)
1600098     <span class="comment">% For structure inputs, use the units in the structure (from inputparsingffd)</span>
1610099     <span class="comment">% Else, get the default family value</span>
1620100     <span class="keyword">if</span> isempty(UnitsFlag)
1630101         UnitsFlag = <a href="getunits.html" class="code" title="function [Units, UnitsString] = getunits(Family, Field)">getunits</a>(Family);
1640102     <span class="keyword">end</span>
1650103 <span class="keyword">else</span>
1660104     <span class="comment">% Input override has priority</span>
1670105     UnitsFlag = UnitsFlagCell{1};
1680106 <span class="keyword">end</span>
1690107
1700108
1710109 <span class="comment">% Default field is Setpoint</span>
1720110 <span class="keyword">if</span> isempty(Field)
1730111     Field = <span class="string">'Monitor'</span>;
1740112 <span class="keyword">end</span>
1750113
1760114
1770115
1780116 <span class="keyword">if</span> isempty(UnitsFlag)
1790117     UnitsFlag = <a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>(Family, Field, <span class="string">'Units'</span>);
1800118 <span class="keyword">end</span>
1810119 <span class="keyword">if</span> isempty(UnitsFlag)
1820120     error(<span class="string">'Cannot find the units type'</span>);
1830121 <span class="keyword">end</span>
1840122
1850123
1860124
1870125 <span class="comment">%%%%%%%%%%%%</span>
1880126 <span class="comment">% Get data %</span>
1890127 <span class="comment">%%%%%%%%%%%%</span>
1900128 ErrorFlag = 0;
1910129 DataStruct.Data = [];  <span class="comment">% Gets filed with NaN later</span>
1920130 DataStruct.FamilyName = Family;
1930131 DataStruct.Field = Field;
1940132 <span class="keyword">if</span> isempty(DeviceList)
1950133     DataStruct.DeviceList = <a href="family2dev.html" class="code" title="function DeviceList = family2dev(Family, varargin);">family2dev</a>(Family);
1960134 <span class="keyword">else</span>
1970135     DataStruct.DeviceList = DeviceList;
1980136 <span class="keyword">end</span>
1990137 DataStruct.Data = ones(size( DataStruct.DeviceList,1),1) * NaN;
2000138 DataStruct.Status = <a href="family2status.html" class="code" title="function [S, IndexList] = family2status(Family, DeviceList)">family2status</a>(Family, DataStruct.DeviceList);
2010139 DataStruct.Mode = <a href="getmode.html" class="code" title="function Mode = getmode(Family, Field)">getmode</a>(Family, Field);
2020140 DataStruct.t = [];
2030141 DataStruct.tout = [];
2040142 DataStruct.DataTime = [];
2050143 DataStruct.TimeStamp = [];
2060144
2070145 DataStruct.Units = UnitsFlag;
2080146 <span class="keyword">if</span> strcmpi(UnitsFlag,<span class="string">'Hardware'</span>)
2090147     DataStruct.UnitsString = <a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>(Family, Field, <span class="string">'HWUnits'</span>);   
2100148 <span class="keyword">elseif</span> strcmpi(UnitsFlag,<span class="string">'Physics'</span>)
2110149     DataStruct.UnitsString = <a href="getfamilydata.html" class="code" title="function [Data, ErrorFlag] = getfamilydata(Family, Field1, Field2, DeviceList)">getfamilydata</a>(Family, Field, <span class="string">'PhysicsUnits'</span>);   
2120150 <span class="keyword">else</span>
2130151     error(<span class="string">'Units unknown'</span>);
2140152 <span class="keyword">end</span>
2150153 DataStruct.DataDescriptor = <span class="string">''</span>;
2160154 DataStruct.CreatedBy = <span class="string">'family2datastruct'</span>;
2170155</pre></div>
218<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>
219</body>
220</html>
Note: See TracBrowser for help on using the repository browser.