source: MML/trunk/machine/SOLEIL/doc_html/machine/Soleil/Booster/boosterinit.html @ 4

Last change on this file since 4 was 4, checked in by zhangj, 11 years ago

Initial import--MML version from SOLEIL@2013

File size: 62.4 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 boosterinit</title>
6  <meta name="keywords" content="boosterinit">
7  <meta name="description" content="BOOSTERINIT - Initializes parameters for SOLEIL Booster control in MATLAB">
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="#">machine</a> &gt; <a href="#">Soleil</a> &gt; <a href="index.html">Booster</a> &gt; boosterinit.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 machine/Soleil/Booster&nbsp;<img alt=">" border="0" src="../../../right.png"></a></td></tr></table>-->
19
20<h1>boosterinit
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>BOOSTERINIT - Initializes parameters for SOLEIL Booster control in MATLAB</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 boosterinit(OperationalMode) </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">BOOSTERINIT - Initializes parameters for SOLEIL Booster control in MATLAB
31
32 Written by Laurent S. Nadolski, Synchrotron SOLEIL
33 
34==========================
35 Accelerator Family Fields
36==========================
37 FamilyName            BPMx, HCOR, etc
38 CommonNames           Shortcut name for each element
39 DeviceList            [Sector, Number]
40 ElementList           number in list
41 Position              m, if thick, it is not the magnet center
42
43 MONITOR FIELD
44 Mode                  online/manual/special/simulator
45 TangoNames            Device Tango Names
46 Units                 Physics or HW
47 HW2PhysicsFcn         function handle used to convert from hardware to physics units ==&gt; inline will not compile, see below
48 HW2PhysicsParams      parameters used for conversion function
49 Physics2HWFcn         function handle used to convert from physics to hardware units
50 Physics2HWParams      parameters used for conversion function
51 HWUnits               units for Hardware 'A';
52 PhysicsUnits          units for physics 'Rad';
53 Handles               monitor handle
54
55 SETPOINT FIELDS
56 Mode                  online/manual/special/simulator
57 TangoNames            Devices tango names
58 Units                 hardware or physics
59 HW2PhysicsFcn         function handle used to convert from hardware to physics units
60 HW2PhysicsParams      parameters used for conversion function
61 Physics2HWFcn         function handle used to convert from physics to hardware units
62 Physics2HWParams      parameters used for conversion function
63 HWUnits               units for Hardware 'A';
64 PhysicsUnits          units for physics 'Rad';
65 Range                 minsetpoint, maxsetpoint;
66 Tolerance             setpoint-monitor
67 Handles               setpoint handle
68
69=============================================
70 Accelerator Toolbox Simulation Fields
71=============================================
72 ATType                Quad, Sext, etc
73 ATIndex               index in THERING
74 ATParameterGroup      parameter group
75
76============
77 Family List
78============
79    BPMx
80    BPMz
81    HCOR
82    VCOR
83    BEND
84    QF and QD
85    SF and SD
86    RF
87    TUNE
88    DCCT
89    Machine Parameters</pre></div>
90
91<!-- crossreference -->
92<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../../../up.png"></a></h2>
93This function calls:
94<ul style="list-style-image:url(../../../matlabicon.gif)">
95<li><a href="setoperationalmode.html" class="code" title="function setoperationalmode(ModeNumber)">setoperationalmode</a>       SETOPERATIONALMODE - Switches between the various operational modes</li></ul>
96This function is called by:
97<ul style="list-style-image:url(../../../matlabicon.gif)">
98<li><a href="aoinit.html" class="code" title="function aoinit(SubMachineName)">aoinit</a>       AOINIT - Initialization function for the Matlab Middle Layer (MML)</li><li><a href="boostersetup.html" class="code" title="function Boostersetup">boostersetup</a>      BoosterSETUP - GUI for doing Booster setup</li></ul>
99<!-- crossreference -->
100
101
102<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../../../up.png"></a></h2>
103<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function boosterinit(OperationalMode)</a>
1040002 <span class="comment">%BOOSTERINIT - Initializes parameters for SOLEIL Booster control in MATLAB</span>
1050003 <span class="comment">%</span>
1060004 <span class="comment">% Written by Laurent S. Nadolski, Synchrotron SOLEIL</span>
1070005 <span class="comment">%</span>
1080006 <span class="comment">%==========================</span>
1090007 <span class="comment">% Accelerator Family Fields</span>
1100008 <span class="comment">%==========================</span>
1110009 <span class="comment">% FamilyName            BPMx, HCOR, etc</span>
1120010 <span class="comment">% CommonNames           Shortcut name for each element</span>
1130011 <span class="comment">% DeviceList            [Sector, Number]</span>
1140012 <span class="comment">% ElementList           number in list</span>
1150013 <span class="comment">% Position              m, if thick, it is not the magnet center</span>
1160014 <span class="comment">%</span>
1170015 <span class="comment">% MONITOR FIELD</span>
1180016 <span class="comment">% Mode                  online/manual/special/simulator</span>
1190017 <span class="comment">% TangoNames            Device Tango Names</span>
1200018 <span class="comment">% Units                 Physics or HW</span>
1210019 <span class="comment">% HW2PhysicsFcn         function handle used to convert from hardware to physics units ==&gt; inline will not compile, see below</span>
1220020 <span class="comment">% HW2PhysicsParams      parameters used for conversion function</span>
1230021 <span class="comment">% Physics2HWFcn         function handle used to convert from physics to hardware units</span>
1240022 <span class="comment">% Physics2HWParams      parameters used for conversion function</span>
1250023 <span class="comment">% HWUnits               units for Hardware 'A';</span>
1260024 <span class="comment">% PhysicsUnits          units for physics 'Rad';</span>
1270025 <span class="comment">% Handles               monitor handle</span>
1280026 <span class="comment">%</span>
1290027 <span class="comment">% SETPOINT FIELDS</span>
1300028 <span class="comment">% Mode                  online/manual/special/simulator</span>
1310029 <span class="comment">% TangoNames            Devices tango names</span>
1320030 <span class="comment">% Units                 hardware or physics</span>
1330031 <span class="comment">% HW2PhysicsFcn         function handle used to convert from hardware to physics units</span>
1340032 <span class="comment">% HW2PhysicsParams      parameters used for conversion function</span>
1350033 <span class="comment">% Physics2HWFcn         function handle used to convert from physics to hardware units</span>
1360034 <span class="comment">% Physics2HWParams      parameters used for conversion function</span>
1370035 <span class="comment">% HWUnits               units for Hardware 'A';</span>
1380036 <span class="comment">% PhysicsUnits          units for physics 'Rad';</span>
1390037 <span class="comment">% Range                 minsetpoint, maxsetpoint;</span>
1400038 <span class="comment">% Tolerance             setpoint-monitor</span>
1410039 <span class="comment">% Handles               setpoint handle</span>
1420040 <span class="comment">%</span>
1430041 <span class="comment">%=============================================</span>
1440042 <span class="comment">% Accelerator Toolbox Simulation Fields</span>
1450043 <span class="comment">%=============================================</span>
1460044 <span class="comment">% ATType                Quad, Sext, etc</span>
1470045 <span class="comment">% ATIndex               index in THERING</span>
1480046 <span class="comment">% ATParameterGroup      parameter group</span>
1490047 <span class="comment">%</span>
1500048 <span class="comment">%============</span>
1510049 <span class="comment">% Family List</span>
1520050 <span class="comment">%============</span>
1530051 <span class="comment">%    BPMx</span>
1540052 <span class="comment">%    BPMz</span>
1550053 <span class="comment">%    HCOR</span>
1560054 <span class="comment">%    VCOR</span>
1570055 <span class="comment">%    BEND</span>
1580056 <span class="comment">%    QF and QD</span>
1590057 <span class="comment">%    SF and SD</span>
1600058 <span class="comment">%    RF</span>
1610059 <span class="comment">%    TUNE</span>
1620060 <span class="comment">%    DCCT</span>
1630061 <span class="comment">%    Machine Parameters</span>
1640062
1650063 <span class="comment">%==============================</span>
1660064 <span class="comment">%load AcceleratorData structure</span>
1670065 <span class="comment">%==============================</span>
1680066
1690067 <span class="keyword">if</span> nargin &lt; 1
1700068     OperationalMode = 1;
1710069 <span class="keyword">end</span>
1720070
1730071 <span class="keyword">global</span> GLOBVAL THERING
1740072
1750073
1760074 Mode             = <span class="string">'Online'</span>;
1770075 setad([]);       <span class="comment">%clear AcceleratorData memory</span>
1780076 AD.SubMachine       = <span class="string">'Booster'</span>; <span class="comment">% Machine Name</span>
1790077 AD.Energy        = 2.75; <span class="comment">% Energy in GeV</span>
1800078
1810079
1820080 setad(AD);   <span class="comment">%load AcceleratorData</span>
1830081
1840082 <span class="comment">%%%%%%%%%%%%%%%%%%%%</span>
1850083 <span class="comment">% ACCELERATOR OBJECT</span>
1860084 <span class="comment">%%%%%%%%%%%%%%%%%%%%</span>
1870085
1880086 setao([]);   <span class="comment">%clear previous AcceleratorObjects</span>
1890087
1900088 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
1910089 <span class="comment">%% BPM data: status field designates if BPM in use</span>
1920090 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
1930091 AO{1}.FamilyName               = <span class="string">'BPMx'</span>;
1940092 AO{1}.FamilyType               = <span class="string">'BPM'</span>;
1950093 AO{1}.MemberOf                 = {<span class="string">'BPM'</span>; <span class="string">'HBPM'</span>; <span class="string">'Diagnostics'</span>};
1960094 AO{1}.Monitor.Mode             = Mode;
1970095 AO{1}.Monitor.Units            = <span class="string">'Hardware'</span>;
1980096 AO{1}.Monitor.HWUnits          = <span class="string">'mm'</span>;
1990097 AO{1}.Monitor.PhysicsUnits     = <span class="string">'m'</span>;
2000098
2010099 <span class="comment">% Get mapping from TANGO static database</span>
2020100 map = tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'tracy_bpm_mapping'</span>);
2030101
2040102 cellindex = cell2mat(regexpi(map,<span class="string">'C[0-9]'</span>,<span class="string">'once'</span>))+1;
2050103 numindex  = cell2mat(regexpi(map,<span class="string">'\.[0-9]'</span>,<span class="string">'once'</span>))+1;
2060104 elemindex = cell2mat(regexpi(map,<span class="string">'BPM[0-9]'</span>,<span class="string">'once'</span>))+3;
2070105 sep       = cell2mat(regexpi(map,<span class="string">'::'</span>,<span class="string">'once'</span>))-1;
2080106 <span class="comment">% dev       = deblank(regexprep(char(map),'^BPM\d*::',''));</span>
2090107 dev       = regexprep(map,<span class="string">'^BPM\d*::'</span>,<span class="string">''</span>)';
2100108
2110109 nb = size(map,2);
2120110 ik = 1;
2130111 prev0 = 0;
2140112 <span class="keyword">for</span> k = 1:nb
2150113     prev = str2num(map{k}(cellindex(k):cellindex(k)+1));
2160114     <span class="keyword">if</span> prev == prev0
2170115         ik = ik + 1;
2180116     <span class="keyword">else</span>
2190117         ik = 1;
2200118     <span class="keyword">end</span>
2210119     AO{1}.DeviceList(k,:) = [prev ik];
2220120     AO{1}.ElementList(k,:)= str2num(map{k}(elemindex(k):sep(k)));
2230121     prev0 = prev;
2240122 <span class="keyword">end</span>
2250123
2260124 AO{1}.DeviceName(:,:)               = dev;
2270125 AO{1}.Monitor.TangoNames(:,:)       = strcat(dev, <span class="string">'/XPosVector'</span>);
2280126 AO{1}.CommonNames(:,:)              = [repmat(<span class="string">'BPMx'</span>,nb,1) num2str((1:nb)',<span class="string">'%02d'</span>)];
2290127
2300128 AO{1}.Status                        = ones(nb,1);
2310129 <span class="comment">% AO{1}.Status([5:22]) = 0;</span>
2320130 AO{1}.Monitor.HW2PhysicsParams(:,:) = 1e-3*ones(nb,1);
2330131 AO{1}.Monitor.Physics2HWParams(:,:) = 1e3*ones(nb,1);
2340132
2350133 <span class="comment">% 2 lignes ajoutes pour test debug bpm versus le reste du monde</span>
2360134 AO{1}.Monitor.Handles(:,1)       = NaN*ones(nb,1);
2370135 AO{1}.Monitor.DataType         = <span class="string">'Vector'</span>;
2380136
2390137
2400138 <span class="comment">% Vertical plane</span>
2410139 AO{2} = AO{1};
2420140 AO{2}.FamilyName              = <span class="string">'BPMz'</span>;
2430141 AO{1}.MemberOf                 = {<span class="string">'BPM'</span>; <span class="string">'VBPM'</span>; <span class="string">'Diagnostics'</span>};
2440142 AO{2}.Monitor.TangoNames(:,:) = strcat(dev,<span class="string">'/ZPosVector'</span>);
2450143 AO{2}.CommonNames(:,:) = [repmat(<span class="string">'BPMz'</span>,nb,1) num2str((1:nb)',<span class="string">'%02d'</span>)];
2460144
2470145 <span class="comment">% 2 lignes ajoutes pour test debug bpm versus le reste du monde</span>
2480146 AO{2}.Monitor.DataType         = <span class="string">'Vector'</span>;
2490147 AO{2}.Monitor.Handles(:,1)       = NaN*ones(nb,1);
2500148
2510149 AO{1}.Status = AO{1}.Status(:);
2520150 AO{2}.Status = AO{2}.Status(:);
2530151
2540152 AO{1}.Monitor.Mode            = Mode; <span class="comment">%'Special';</span>
2550153 AO{1}.Monitor.SpecialFunction = <span class="string">'getxsoleil'</span>;
2560154
2570155 <span class="comment">%TODO</span>
2580156 AO{1}.Sum.Monitor = AO{1}.Monitor;
2590157 AO{1}.Sum.SpecialFunction = <span class="string">'getbpmsumspear'</span>;
2600158 AO{1}.Sum.HWUnits          = <span class="string">'ADC Counts'</span>;
2610159 AO{1}.Sum.PhysicsUnits     = <span class="string">'ADC Counts'</span>;
2620160 AO{1}.Sum.HW2PhysicsParams = 1;
2630161 AO{1}.Sum.Physics2HWParams = 1;
2640162
2650163 AO{1}.Q = AO{1}.Monitor;
2660164 AO{1}.Q.SpecialFunction = <span class="string">'getbpmqspear'</span>;
2670165 AO{1}.Q.HWUnits          = <span class="string">'mm'</span>;
2680166 AO{1}.Q.PhysicsUnits     = <span class="string">'m'</span>;
2690167 AO{1}.Q.HW2PhysicsParams = 1e-3;
2700168 AO{1}.Q.Physics2HWParams = 1000;
2710169
2720170 AO{2}.Monitor.Mode            = Mode; <span class="comment">%'Special';</span>
2730171 AO{2}.Monitor.SpecialFunction = <span class="string">'getzsoleil'</span>;
2740172
2750173 AO{2}.Sum = AO{1}.Sum;
2760174 AO{2}.Q   = AO{1}.Q;
2770175
2780176 <span class="comment">% %===========================================================</span>
2790177 <span class="comment">% %Corrector data: status field designates if corrector in use</span>
2800178 <span class="comment">% %===========================================================</span>
2810179 <span class="comment">%</span>
2820180 setao(cell2field(AO));
2830181
2840182 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
2850183 <span class="comment">%% SLOW HORIZONTAL CORRECTORS</span>
2860184 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
2870185 ifam = 3;
2880186 AO{ifam}.FamilyName               = <span class="string">'HCOR'</span>;
2890187 AO{ifam}.FamilyType               = <span class="string">'COR'</span>;
2900188 AO{ifam}.MemberOf                 = {<span class="string">'MachineConfig'</span>; <span class="string">'COR'</span>; <span class="string">'MCOR'</span>; <span class="string">'HCOR'</span>; <span class="string">'Magnet'</span>};
2910189
2920190 AO{ifam}.Monitor.Mode             = Mode;
2930191 AO{ifam}.Monitor.DataType         = <span class="string">'Scalar'</span>;
2940192 AO{ifam}.Monitor.Units            = <span class="string">'Hardware'</span>;
2950193 AO{ifam}.Monitor.HWUnits          = <span class="string">'A'</span>;
2960194 AO{ifam}.Monitor.PhysicsUnits     = <span class="string">'rad'</span>;
2970195 AO{ifam}.Monitor.HW2PhysicsFcn    = @amp2k;
2980196 AO{ifam}.Monitor.Physics2HWFcn    = @k2amp;
2990197
3000198 <span class="comment">% Get mapping from TANGO static database</span>
3010199 map = tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'tracy_correctorH_mapping'</span>);
3020200 dev = regexprep(map,<span class="string">'^HCOR\d*::'</span>,<span class="string">''</span>)';
3030201 cellindex = cell2mat(regexpi(map,<span class="string">'C[0-9]'</span>,<span class="string">'once'</span>))+1;
3040202 numindex  = cell2mat(regexpi(map,<span class="string">'\.[0-9]'</span>,<span class="string">'once'</span>))+1;
3050203 elemindex = cell2mat(regexpi(map,<span class="string">'HCOR[0-9]'</span>,<span class="string">'once'</span>))+4;
3060204 sep       = cell2mat(regexpi(map,<span class="string">'::'</span>,<span class="string">'once'</span>))-1;
3070205
3080206 nb = size(map,2);
3090207 <span class="keyword">for</span> k = 1:nb
3100208     AO{ifam}.DeviceList(k,:)  = [str2num(map{k}(cellindex(k):cellindex(k)+1)) 1];
3110209     AO{ifam}.ElementList(k,:) = str2num(map{k}(elemindex(k):sep(k)));
3120210 <span class="keyword">end</span>
3130211
3140212 AO{ifam}.DeviceName(:,:)            = dev;
3150213 AO{ifam}.CommonNames(:,:)           = [repmat(AO{ifam}.FamilyName,nb,1) num2str((1:nb)',<span class="string">'%03d'</span>)];
3160214 AO{ifam}.Status                     = ones(nb,1);
3170215 AO{ifam}.Monitor.TangoNames(:,:)    = strcat(dev,<span class="string">'/current'</span>);
3180216 AO{ifam}.Monitor.Handles(:,1)       = NaN*ones(nb,1);
3190217
3200218 <span class="comment">%Load fields from datablock</span>
3210219 <span class="comment">% AT use the &quot;A-coefficients&quot; for correctors plus an offset</span>
3220220 [C, Leff, MagnetType, coefficients] = magnetcoefficients(AO{ifam}.FamilyName);
3230221
3240222 <span class="keyword">for</span> ii=1:nb
3250223     AO{ifam}.Monitor.HW2PhysicsParams{1}(ii,:)  = coefficients;
3260224     AO{ifam}.Monitor.Physics2HWParams{1}(ii,:)  = coefficients;
3270225 <span class="keyword">end</span>
3280226
3290227 AO{ifam}.Setpoint = AO{ifam}.Monitor;
3300228 AO{ifam}.Desired  = AO{ifam}.Monitor;
3310229
3320230 AO{ifam}.Setpoint.Range(:,:)        = repmat([-1.5 1.5],nb,1); <span class="comment">% 1 A for ???</span>
3330231 AO{ifam}.Setpoint.Tolerance(:,:)    = 1000*ones(nb,1);
3340232 AO{ifam}.Setpoint.DeltaRespMat(:,:) = ones(nb,1)*2e-5; <span class="comment">% ???</span>
3350233
3360234 AO{ifam}.Status = AO{ifam}.Status(:);
3370235 <span class="comment">%convert response matrix kicks to HWUnits (after AO is loaded to AppData)</span>
3380236 setao(cell2field(AO));   <span class="comment">%required to make physics2hw function</span>
3390237 AO{ifam}.Setpoint.DeltaRespMat = physics2hw(AO{ifam}.FamilyName,<span class="string">'Setpoint'</span>, <span class="keyword">...</span>
3400238     AO{ifam}.Setpoint.DeltaRespMat, AO{ifam}.DeviceList);
3410239
3420240 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
3430241 <span class="comment">%% SLOW VERTICAL CORRECTORS</span>
3440242 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
3450243 ifam = ifam +1;
3460244 AO{ifam}.FamilyName               = <span class="string">'VCOR'</span>;
3470245 AO{ifam}.FamilyType               = <span class="string">'COR'</span>;
3480246 AO{ifam}.MemberOf                 = {<span class="string">'MachineConfig'</span>; <span class="string">'COR'</span>; AO{ifam}.FamilyName; <span class="string">'Magnet'</span>};
3490247
3500248 AO{ifam}.Monitor.Mode             = Mode;
3510249 AO{ifam}.Monitor.DataType         = <span class="string">'Scalar'</span>;
3520250 AO{ifam}.Monitor.Units            = <span class="string">'Hardware'</span>;
3530251 AO{ifam}.Monitor.HWUnits          = <span class="string">'A'</span>;
3540252 AO{ifam}.Monitor.PhysicsUnits     = <span class="string">'rad'</span>;
3550253 AO{ifam}.Monitor.HW2PhysicsFcn = @amp2k;
3560254 AO{ifam}.Monitor.Physics2HWFcn = @k2amp;
3570255
3580256 <span class="comment">% Get mapping from TANGO static database</span>
3590257 map = tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'tracy_correctorV_mapping'</span>);
3600258 dev = regexprep(map,<span class="string">'^VCOR\d*::'</span>,<span class="string">''</span>)';
3610259 cellindex = cell2mat(regexpi(map,<span class="string">'C[0-9]'</span>,<span class="string">'once'</span>))+1;
3620260 numindex  = cell2mat(regexpi(map,<span class="string">'\.[0-9]'</span>,<span class="string">'once'</span>))+1;
3630261 elemindex = cell2mat(regexpi(map,<span class="string">'VCOR[0-9]'</span>,<span class="string">'once'</span>))+4;
3640262 sep       = cell2mat(regexpi(map,<span class="string">'::'</span>,<span class="string">'once'</span>))-1;
3650263
3660264 nb = size(map,2);
3670265 <span class="keyword">for</span> k = 1:nb
3680266     AO{ifam}.DeviceList(k,:)  = [str2num(map{k}(cellindex(k):cellindex(k)+1)) 1];
3690267     AO{ifam}.ElementList(k,:) = str2num(map{k}(elemindex(k):sep(k)));
3700268 <span class="keyword">end</span>
3710269
3720270 AO{ifam}.DeviceName(:,:)            = dev;
3730271 AO{ifam}.Status                     = ones(nb,1);
3740272 AO{ifam}.CommonNames(:,:)           = [repmat(AO{ifam}.FamilyName,nb,1) num2str((1:nb)',<span class="string">'%03d'</span>)];
3750273 AO{ifam}.Monitor.TangoNames(:,:)    = strcat(dev,<span class="string">'/current'</span>);
3760274
3770275 AO{ifam}.Monitor.Handles(:,1)    = NaN*ones(nb,1);
3780276
3790277 <span class="comment">%Load fields from datablock</span>
3800278 <span class="comment">% AT use the &quot;A-coefficients&quot; for correctors plus an offset</span>
3810279 [C, Leff, MagnetType, coefficients] = magnetcoefficients(AO{ifam}.FamilyName);
3820280
3830281 <span class="keyword">for</span> ii = 1:nb
3840282     AO{ifam}.Monitor.HW2PhysicsParams{1}(ii,:)  = coefficients;
3850283     AO{ifam}.Monitor.Physics2HWParams{1}(ii,:)  = coefficients;
3860284 <span class="keyword">end</span>
3870285
3880286 AO{ifam}.Setpoint = AO{ifam}.Monitor;
3890287 AO{ifam}.Desired  = AO{ifam}.Monitor;
3900288
3910289 AO{ifam}.Setpoint.Range(:,:) = repmat([-1.5 1.5],nb,1); <span class="comment">%  1 A for ???</span>
3920290 AO{ifam}.Setpoint.Tolerance(:,:) = 1000*ones(nb,1);
3930291 AO{ifam}.Setpoint.DeltaRespMat(:,:) = ones(nb,1)*4e-5; <span class="comment">% ???</span>
3940292
3950293 <span class="comment">%convert response matrix kicks to HWUnits (after AO is loaded to AppData)</span>
3960294 setao(cell2field(AO));   <span class="comment">%required to make physics2hw function</span>
3970295 AO{ifam}.Setpoint.DeltaRespMat = physics2hw(AO{ifam}.FamilyName,<span class="string">'Setpoint'</span>, <span class="keyword">...</span>
3980296     AO{ifam}.Setpoint.DeltaRespMat, AO{ifam}.DeviceList);
3990297
4000298 <span class="comment">%=============================</span>
4010299 <span class="comment">% MAIN MAGNETS</span>
4020300 <span class="comment">%=============================</span>
4030301
4040302 <span class="comment">%===========</span>
4050303 <span class="comment">%% Dipole data</span>
4060304 <span class="comment">%===========</span>
4070305
4080306 <span class="comment">% *** BEND ***</span>
4090307 ifam = ifam+1;
4100308 AO{ifam}.FamilyName                 = <span class="string">'BEND'</span>;
4110309 AO{ifam}.FamilyType                 = <span class="string">'BEND'</span>;
4120310 AO{ifam}.MemberOf                   = {<span class="string">'MachineConfig'</span>; <span class="string">'BEND'</span>; <span class="string">'Magnet'</span>;};
4130311 HW2PhysicsParams                    = magnetcoefficients(<span class="string">'BEND'</span>);
4140312 Physics2HWParams                    = HW2PhysicsParams;
4150313
4160314 AO{ifam}.Monitor.Mode               = Mode;
4170315 AO{ifam}.Monitor.DataType           = <span class="string">'Scalar'</span>;
4180316 AO{ifam}.Monitor.Units              = <span class="string">'Hardware'</span>;
4190317 AO{ifam}.Monitor.HW2PhysicsFcn      = @bend2gev;
4200318 AO{ifam}.Monitor.Physics2HWFcn      = @gev2bend;
4210319 AO{ifam}.Monitor.HWUnits            = <span class="string">'A'</span>;
4220320 AO{ifam}.Monitor.PhysicsUnits       = <span class="string">'energy'</span>;
4230321
4240322
4250323 <span class="comment">% nb = size(map,2);</span>
4260324 nb = 1;
4270325
4280326 AO{ifam}.DeviceList(:,:)   = [1 1];
4290327 AO{ifam}.ElementList(:,:)  = 1;
4300328 AO{ifam}.DeviceName(:,:)   = <span class="string">'BOO/AE/Dipole'</span>;
4310329 AO{ifam}.Monitor.TangoNames(:,:)  = strcat(AO{ifam}.DeviceName,<span class="string">'/d1current'</span>);
4320330
4330331 AO{ifam}.Status = 1;
4340332 AO{ifam}.Monitor.Handles = NaN;
4350333
4360334 val = 1.0;
4370335 AO{ifam}.Monitor.HW2PhysicsParams{1}(1,:)                 = HW2PhysicsParams;
4380336 AO{ifam}.Monitor.HW2PhysicsParams{2}(1,:)                 = val;
4390337 AO{ifam}.Monitor.Physics2HWParams{1}(1,:)                 = Physics2HWParams;
4400338 AO{ifam}.Monitor.Physics2HWParams{2}(1,:)                 = val;
4410339
4420340 <span class="comment">% When using bend2gev / gev2bend don't use Params</span>
4430341 AO{ifam}.Monitor = rmfield(AO{ifam}.Monitor,<span class="string">'HW2PhysicsParams'</span>);
4440342 AO{ifam}.Monitor = rmfield(AO{ifam}.Monitor,<span class="string">'Physics2HWParams'</span>);
4450343
4460344 AO{ifam}.Setpoint = AO{ifam}.Monitor;
4470345 AO{ifam}.Desired  = AO{ifam}.Monitor;
4480346 AO{ifam}.Setpoint.TangoNames = strcat(AO{ifam}.DeviceName,<span class="string">'/current'</span>);
4490347
4500348 AO{ifam}.Setpoint.Range(:,:) = [0 560]; <span class="comment">% 525 A for 1.71T</span>
4510349 AO{ifam}.Setpoint.Tolerance(:,:) = 0.05;
4520350 AO{ifam}.Setpoint.DeltaRespMat(:,:) = 0.05;
4530351
4540352 <span class="comment">%convert response matrix kicks to HWUnits (after AO is loaded to AppData)</span>
4550353 <span class="comment">%setao(cell2field(AO));   %required to make physics2hw function</span>
4560354 <span class="comment">%AO{ifam}.Setpoint.DeltaRespMat=physics2hw(AO{ifam}.FamilyName,'Setpoint',AO{ifam}.Setpoint.DeltaRespMat,AO{ifam}.DeviceList);</span>
4570355
4580356
4590357 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
4600358 <span class="comment">%% QUADRUPOLE MAGNETS</span>
4610359 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
4620360
4630361 map     = tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'tracy_quadrupole_mapping'</span>);
4640362 iifam   = cell2mat(regexpi(map,<span class="string">'/Q'</span>,<span class="string">'once'</span>))+2;
4650363 ifound  = regexpi(map,<span class="string">'/QF'</span>);
4660364
4670365 <span class="comment">%%% build mapping for the two families</span>
4680366 <span class="comment">%%% cleanup</span>
4690367 mapQF = []; mapQD = [];
4700368 <span class="keyword">for</span> k = 1:length(ifound)
4710369     <span class="keyword">if</span> isempty(ifound{k})
4720370         mapQD = [mapQD map(k)];
4730371     <span class="keyword">else</span>
4740372         mapQF = [mapQF map(k)];
4750373     <span class="keyword">end</span>
4760374 <span class="keyword">end</span>
4770375
4780376
4790377 mapQP  = {mapQF,mapQD};
4800378 nameQP = {<span class="string">'QF'</span>, <span class="string">'QD'</span>};
4810379
4820380 <span class="comment">% for both family</span>
4830381 <span class="keyword">for</span> k = 1:2   
4840382     sep = cell2mat(regexprep(mapQP{k},<span class="string">'::'</span>,<span class="string">'once'</span>))-1;
4850383     dev = regexprep(mapQP{k},<span class="string">'^Q[F,D]\d*::'</span>,<span class="string">''</span>)';
4860384     ifam = ifam + 1;
4870385
4880386     AO{ifam}.FamilyName                 = nameQP{k};
4890387     AO{ifam}.FamilyType                 = <span class="string">'QUAD'</span>;
4900388     AO{ifam}.MemberOf                   = {<span class="string">'MachineConfig'</span>; <span class="string">'QUAD'</span>; <span class="string">'Magnet'</span>;};
4910389     HW2PhysicsParams                    = magnetcoefficients(AO{ifam}.FamilyName);
4920390     Physics2HWParams                    = magnetcoefficients(AO{ifam}.FamilyName);
4930391
4940392     AO{ifam}.Monitor.Mode               = Mode;
4950393     AO{ifam}.Monitor.DataType           = <span class="string">'Scalar'</span>;
4960394     AO{ifam}.Monitor.Units              = <span class="string">'Hardware'</span>;
4970395     AO{ifam}.Monitor.HWUnits            = <span class="string">'A'</span>;
4980396     AO{ifam}.Monitor.PhysicsUnits       = <span class="string">'meter^-2'</span>;
4990397     AO{ifam}.Monitor.HW2PhysicsFcn      = @amp2k;
5000398     AO{ifam}.Monitor.Physics2HWFcn      = @k2amp;
5010399     
5020400     AO{ifam}.DeviceList(1,:) = [1 1];
5030401     AO{ifam}.ElementList(1,:)= 1;
5040402
5050403     prev0 = prev;
5060404
5070405     AO{ifam}.DeviceName(:,:)    = dev;
5080406     
5090407     <span class="comment">%% Build common names</span>
5100408     AO{ifam}.CommonNames(:,:) = AO{ifam}.FamilyName;
5110409
5120410     AO{ifam}.Monitor.TangoNames(:,:)  = strcat(dev,<span class="string">'/current'</span>);
5130411
5140412     AO{ifam}.Status = 1;
5150413     AO{ifam}.Monitor.Handles(:,1) = NaN;
5160414
5170415     AO{ifam}.Monitor.HW2PhysicsParams{1}(1,:)                 = HW2PhysicsParams;
5180416     AO{ifam}.Monitor.HW2PhysicsParams{2}(1,:)                 = val;
5190417     AO{ifam}.Monitor.Physics2HWParams{1}(1,:)                 = Physics2HWParams;
5200418     AO{ifam}.Monitor.Physics2HWParams{2}(1,:)                 = val;
5210419
5220420     AO{ifam}.Setpoint = AO{ifam}.Monitor;
5230421     AO{ifam}.Desired  = AO{ifam}.Monitor;
5240422
5250423     AO{ifam}.Setpoint.Range(:,:) = [0 300]; <span class="comment">%260 A for 19.7Tm-1</span>
5260424     AO{ifam}.Setpoint.Tolerance(:,:) = 0.05;
5270425     AO{ifam}.Setpoint.DeltaRespMat(:,:) = 0.02;
5280426
5290427     <span class="comment">%convert response matrix kicks to HWUnits (after AO is loaded to AppData)</span>
5300428     setao(cell2field(AO));   <span class="comment">%required to make physics2hw function</span>
5310429 <span class="comment">%     AO{ifam}.Setpoint.DeltaRespMat = physics2hw(AO{ifam}.FamilyName, ...</span>
5320430 <span class="comment">%         'Setpoint',AO{ifam}.Setpoint.DeltaRespMat,AO{ifam}.DeviceList);</span>
5330431 <span class="keyword">end</span>
5340432
5350433
5360434 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
5370435 <span class="comment">%% SEXTUPOLE MAGNETS</span>
5380436 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
5390437
5400438 map=tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'tracy_sextupole_mapping'</span>);
5410439 iifam = cell2mat(regexpi(map,<span class="string">'/S'</span>,<span class="string">'once'</span>))+2;
5420440 ifound  = regexpi(map,<span class="string">'/SF'</span>);
5430441
5440442 <span class="comment">%%% build mapping for the ten families</span>
5450443 <span class="comment">%%% cleanup</span>
5460444 mapSF = []; mapSD = [];
5470445 <span class="keyword">for</span> k = 1:length(ifound)
5480446     <span class="keyword">if</span> isempty(ifound{k})
5490447         mapSD = [mapSD map(k)];
5500448     <span class="keyword">else</span>
5510449         mapSF = [mapSF map(k)];
5520450     <span class="keyword">end</span>
5530451 <span class="keyword">end</span>
5540452
5550453
5560454 mapS  = {mapSF,mapSD};
5570455 nameS = {<span class="string">'SF'</span>, <span class="string">'SD'</span>};
5580456
5590457 <span class="comment">% For both families</span>
5600458 <span class="keyword">for</span> k = 1:2
5610459     sep = cell2mat(regexpi(mapS{k},<span class="string">'::'</span>,<span class="string">'once'</span>))-1;
5620460     dev = regexprep(mapS{k},<span class="string">'^S[F,D]\d*::'</span>,<span class="string">''</span>)';
5630461
5640462     ifam=ifam+1;
5650463
5660464     AO{ifam}.FamilyName                = nameS{k};
5670465     AO{ifam}.FamilyType                = <span class="string">'SEXT'</span>;
5680466     AO{ifam}.MemberOf                  = {<span class="string">'MachineConfig'</span>; <span class="string">'SEXT'</span>; <span class="string">'Magnet'</span>;};
5690467     HW2PhysicsParams                   = magnetcoefficients(AO{ifam}.FamilyName);
5700468     Physics2HWParams                   = magnetcoefficients(AO{ifam}.FamilyName);
5710469
5720470     AO{ifam}.Monitor.Mode              = Mode;
5730471     AO{ifam}.Monitor.DataType          = <span class="string">'Scalar'</span>;
5740472     AO{ifam}.Monitor.Units             = <span class="string">'Hardware'</span>;
5750473     AO{ifam}.Monitor.HW2PhysicsFcn     = @amp2k;
5760474     AO{ifam}.Monitor.Physics2HWFcn     = @k2amp;
5770475     AO{ifam}.Monitor.HWUnits           = <span class="string">'A'</span>;
5780476     AO{ifam}.Monitor.PhysicsUnits      = <span class="string">'meter^-3'</span>;
5790477
5800478     AO{ifam}.DeviceList(:,:) = [1 1];
5810479     AO{ifam}.ElementList(:,:)= 1;
5820480
5830481     AO{ifam}.DeviceName(:,:)    = dev;
5840482     <span class="comment">%% Build common names</span>
5850483     AO{ifam}.CommonNames(:,:)   = AO{ifam}.FamilyName;
5860484     AO{ifam}.Monitor.TangoNames(:,:)  = strcat(dev,<span class="string">'/current'</span>);
5870485     
5880486
5890487     AO{ifam}.Status = 1;
5900488     AO{ifam}.Monitor.Handles(:,1) = NaN;
5910489
5920490     val = 1.0;
5930491     AO{ifam}.Monitor.HW2PhysicsParams{1}(1,:)               = HW2PhysicsParams;
5940492     AO{ifam}.Monitor.HW2PhysicsParams{2}(1,:)               = val;
5950493     AO{ifam}.Monitor.Physics2HWParams{1}(1,:)               = Physics2HWParams;
5960494     AO{ifam}.Monitor.Physics2HWParams{2}(1,:)               = val;
5970495
5980496     AO{ifam}.Setpoint = AO{ifam}.Monitor;
5990497     AO{ifam}.Desired  = AO{ifam}.Monitor;
6000498
6010499     AO{ifam}.Setpoint.Range(:,:) = [0 400]; <span class="comment">% 343 A for 320 Tm-2</span>
6020500     AO{ifam}.Setpoint.Tolerance(:,:) = 0.05;
6030501     AO{ifam}.Setpoint.DeltaRespMat(:,:) = 0.05;
6040502
6050503     <span class="comment">%convert response matrix kicks to HWUnits (after AO is loaded to AppData)</span>
6060504     setao(cell2field(AO));   <span class="comment">%required to make physics2hw function</span>
6070505 <span class="comment">%     AO{ifam}.Setpoint.DeltaRespMat=physics2hw(AO{ifam}.FamilyName,'Setpoint',AO{ifam}.Setpoint.DeltaRespMat,AO{ifam}.DeviceList);</span>
6080506 <span class="keyword">end</span>
6090507
6100508 <span class="comment">% Convert to new format</span>
6110509 AO = cell2field(AO);
6120510
6130511
6140512 <span class="comment">%=======</span>
6150513 <span class="comment">%% TUNE</span>
6160514 <span class="comment">%=======</span>
6170515 ifam = <span class="string">'TUNE'</span>;
6180516 AO.(ifam).FamilyName  = ifam;
6190517 AO.(ifam).FamilyType  = <span class="string">'Diagnostic'</span>;
6200518 AO.(ifam).MemberOf    = {<span class="string">'Diagnostics'</span>};
6210519 AO.(ifam).CommonNames = [<span class="string">'nux'</span>;<span class="string">'nuz'</span>;<span class="string">'nus'</span>];
6220520 AO.(ifam).DeviceList  = [1 1; 1 2; 1 3];
6230521 AO.(ifam).ElementList = [1 2 3]';
6240522 AO.(ifam).Status      = [1 1 1]';
6250523
6260524 AO.(ifam).Monitor.Mode                   = Mode; <span class="comment">%'Simulator';  % Mode;</span>
6270525 AO.(ifam).Monitor.DataType               = <span class="string">'Scalar'</span>;
6280526 AO.(ifam).Monitor.DataTypeIndex          = [1 2];
6290527 AO.(ifam).Monitor.TangoNames              = [<span class="string">'BOO/DG/BPM-TUNEX/Nu'</span>; <span class="keyword">...</span>
6300528                                              <span class="string">'BOO/DG/BPM-TUNEZ/Nu'</span>; <span class="string">'BOO/DG/BPM-TUNEX/Nu'</span>];
6310529 AO.(ifam).Monitor.Units                  = <span class="string">'Hardware'</span>;
6320530 AO.(ifam).Monitor.Handles                = NaN;
6330531 AO.(ifam).Monitor.HW2PhysicsParams       = 1;
6340532 AO.(ifam).Monitor.Physics2HWParams       = 1;
6350533 AO.(ifam).Monitor.HWUnits                = <span class="string">'fractional tune'</span>;
6360534 AO.(ifam).Monitor.PhysicsUnits           = <span class="string">'fractional tune'</span>;
6370535
6380536 <span class="comment">%%%%%%%%%%%%%%%%%%</span>
6390537 <span class="comment">%% Pulsed Magnet</span>
6400538 <span class="comment">%%%%%%%%%%%%%%%%%%</span>
6410539
6420540 <span class="comment">%% Injection kicker</span>
6430541 ifam = <span class="string">'K_Inj'</span>;
6440542 AO.(ifam).FamilyName           = <span class="string">'K_Inj'</span>;
6450543 AO.(ifam).MemberOf             = {<span class="string">'Injection'</span>;<span class="string">'Archivable'</span>;<span class="string">'EP'</span>};
6460544 AO.(ifam).Monitor.Mode         = Mode;
6470545 AO.(ifam).Monitor.DataType     = <span class="string">'Scalar'</span>;
6480546
6490547 AO.(ifam).Status                   = 1;
6500548 AO.(ifam).DeviceName               = cellstr(<span class="string">'BOO-C01/EP/AL_K.Inj'</span>);
6510549 AO.(ifam).CommonNames              = <span class="string">'K_Inj'</span>;
6520550 AO.(ifam).ElementList              = 1;
6530551 AO.(ifam).DeviceList(:,:)          = [1 1];
6540552 AO.(ifam).Monitor.Handles(:,1)     = NaN;
6550553 AO.(ifam).Monitor.TangoNames       = strcat(AO.(ifam).DeviceName, <span class="string">'/voltage'</span>);
6560554 AO.(ifam).Monitor.HW2PhysicsParams = 1;
6570555 AO.(ifam).Monitor.Physics2HWParams = 1;
6580556 AO.(ifam).Monitor.Units            = <span class="string">'Hardware'</span>;   
6590557 AO.(ifam).Monitor.HWUnits          = <span class="string">'V'</span>;
6600558 AO.(ifam).Monitor.PhysicsUnits     = <span class="string">'mrad'</span>;
6610559 AO.(ifam).Setpoint = AO.(ifam).Monitor;
6620560 AO.(ifam).Desired = AO.(ifam).Monitor;
6630561
6640562 <span class="comment">%% Injection Septum</span>
6650563 ifam = <span class="string">'SEP_Inj'</span>;
6660564 AO.(ifam).FamilyName           = <span class="string">'SEP_Inj'</span>;
6670565 AO.(ifam).MemberOf             = {<span class="string">'Injection'</span>;<span class="string">'Archivable'</span>;<span class="string">'EP'</span>};
6680566 AO.(ifam).Monitor.Mode         = Mode;
6690567 AO.(ifam).Monitor.DataType     = <span class="string">'Scalar'</span>;
6700568
6710569 AO.(ifam).Status                   = 1;
6720570 AO.(ifam).DeviceName               = cellstr(<span class="string">'BOO-C22/EP/AL_SEP_P.Inj'</span>);
6730571 AO.(ifam).CommonNames              = <span class="string">'SEP_P'</span>;
6740572 AO.(ifam).ElementList              = 1;
6750573 AO.(ifam).DeviceList(:,:)           = [1 1];
6760574 AO.(ifam).Monitor.Handles(:,1)     = NaN;
6770575 AO.(ifam).Monitor.TangoNames       = strcat(AO.(ifam).DeviceName, <span class="string">'/voltage'</span>);
6780576 AO.(ifam).Monitor.HW2PhysicsParams = 1;
6790577 AO.(ifam).Monitor.Physics2HWParams = 1;
6800578 AO.(ifam).Monitor.Units            = <span class="string">'Hardware'</span>;   
6810579 AO.(ifam).Monitor.HWUnits          = <span class="string">'V'</span>;
6820580 AO.(ifam).Monitor.PhysicsUnits     = <span class="string">'mrad'</span>;
6830581 AO.(ifam).Setpoint = AO.(ifam).Monitor;
6840582 AO.(ifam).Desired = AO.(ifam).Monitor;
6850583
6860584 <span class="comment">%% Injection Septum</span>
6870585 ifam = <span class="string">'SEPA_EXT'</span>;
6880586 AO.(ifam).FamilyName           = ifam;
6890587 AO.(ifam).MemberOf             = {<span class="string">'Injection'</span>;<span class="string">'Archivable'</span>;<span class="string">'EP'</span>};
6900588 AO.(ifam).Monitor.Mode         = Mode;
6910589 AO.(ifam).Monitor.DataType     = <span class="string">'Scalar'</span>;
6920590
6930591 AO.(ifam).Status                   = 0;
6940592 AO.(ifam).DeviceName               = cellstr(<span class="string">'BOO-C22/EP/AL_SEP_P.Inj'</span>);
6950593 AO.(ifam).CommonNames              = <span class="string">'SEP_P'</span>;
6960594 AO.(ifam).ElementList              = 1;
6970595 AO.(ifam).DeviceList(:,:)           = [1 1];
6980596 AO.(ifam).Monitor.Handles(:,1)     = NaN;
6990597 AO.(ifam).Monitor.TangoNames       = strcat(AO.(ifam).DeviceName, <span class="string">'/voltage'</span>);
7000598 AO.(ifam).Monitor.HW2PhysicsParams = 1;
7010599 AO.(ifam).Monitor.Physics2HWParams = 1;
7020600 AO.(ifam).Monitor.Units            = <span class="string">'Hardware'</span>;   
7030601 AO.(ifam).Monitor.HWUnits          = <span class="string">'V'</span>;
7040602 AO.(ifam).Monitor.PhysicsUnits     = <span class="string">'mrad'</span>;
7050603 AO.(ifam).Setpoint = AO.(ifam).Monitor;
7060604 AO.(ifam).Desired = AO.(ifam).Monitor;
7070605
7080606 <span class="comment">%% Injection Septum</span>
7090607 ifam = <span class="string">'SEP_P_EXT'</span>;
7100608 AO.(ifam).FamilyName           = ifam;
7110609 AO.(ifam).MemberOf             = {<span class="string">'Injection'</span>;<span class="string">'Archivable'</span>;<span class="string">'EP'</span>};
7120610 AO.(ifam).Monitor.Mode         = Mode;
7130611 AO.(ifam).Monitor.DataType     = <span class="string">'Scalar'</span>;
7140612
7150613 AO.(ifam).Status                   = 0;
7160614 AO.(ifam).DeviceName               = cellstr(<span class="string">'BOO-C11/EP/AL_SEP_P.Ext'</span>);
7170615 AO.(ifam).CommonNames              = <span class="string">'SEP_P_EXT'</span>;
7180616 AO.(ifam).ElementList              = 1;
7190617 AO.(ifam).DeviceList(:,:)           = [1 1];
7200618 AO.(ifam).Monitor.Handles(:,1)     = NaN;
7210619 AO.(ifam).Monitor.TangoNames       = strcat(AO.(ifam).DeviceName, <span class="string">'/voltage'</span>);
7220620 AO.(ifam).Monitor.HW2PhysicsParams = 1;
7230621 AO.(ifam).Monitor.Physics2HWParams = 1;
7240622 AO.(ifam).Monitor.Units            = <span class="string">'Hardware'</span>;   
7250623 AO.(ifam).Monitor.HWUnits          = <span class="string">'V'</span>;
7260624 AO.(ifam).Monitor.PhysicsUnits     = <span class="string">'mrad'</span>;
7270625 AO.(ifam).Setpoint = AO.(ifam).Monitor;
7280626 AO.(ifam).Desired = AO.(ifam).Monitor;
7290627
7300628 <span class="comment">%%%%%%%%%%%%%%%%%%</span>
7310629 <span class="comment">%% VACUUM SYSTEM</span>
7320630 <span class="comment">%%%%%%%%%%%%%%%%%%</span>
7330631
7340632 <span class="comment">%% IonPump</span>
7350633 ifam = <span class="string">'PI'</span>;
7360634 AO.(ifam).FamilyName           = <span class="string">'PI'</span>;
7370635 AO.(ifam).FamilyType           = <span class="string">'PI'</span>;
7380636 AO.(ifam).MemberOf             = {<span class="string">'PlotFamily'</span>; <span class="string">'IonPump'</span>; <span class="string">'Pressure'</span>; <span class="string">'Archivable'</span>};
7390637 AO.(ifam).Monitor.Mode         = Mode;
7400638 AO.(ifam).Monitor.DataType     = <span class="string">'Scalar'</span>;
7410639
7420640 map     = tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'pompe_ionique'</span>);
7430641 numindex  = cell2mat(regexpi(map,<span class="string">'\.[0-9]'</span>,<span class="string">'once'</span>))+1;
7440642
7450643 nb = size(map,2);
7460644 <span class="keyword">for</span> k = 1:nb,
7470645     <span class="keyword">switch</span> map{k}(1:6)
7480646         <span class="keyword">case</span> <span class="string">'BOO-B1'</span>
7490647             k1 = 1;
7500648         <span class="keyword">case</span> <span class="string">'BOO-Bi'</span>
7510649             k1 = 2;
7520650         <span class="keyword">case</span> <span class="string">'BOO-B2'</span>
7530651             k1 = 3;
7540652         <span class="keyword">case</span> <span class="string">'BOO-Be'</span>
7550653             k1 = 4;
7560654         <span class="keyword">case</span> <span class="string">'BOO-B3'</span>
7570655             k1 = 5;
7580656         <span class="keyword">case</span> <span class="string">'BOO-B4'</span>
7590657             k1 = 6;
7600658     <span class="keyword">end</span>           
7610659     AO.(ifam).DeviceList(k,:)  = [k1 str2double(map{k}(numindex(k)))];
7620660     AO.(ifam).ElementList(k,:) = k;
7630661     AO.(ifam).CommonNames(k,:) = [<span class="string">'PI'</span> num2str(ik)];
7640662 <span class="keyword">end</span>
7650663
7660664 AO.(ifam).Status                   = ones(nb,1);
7670665 <span class="comment">%AO.(ifam).Status(26) = 0;% BOO-Bext/VI/PI300.3</span>
7680666 AO.(ifam).DeviceName               = map';
7690667 AO.(ifam).CommonNames              = AO.(ifam).CommonNames';
7700668 AO.(ifam).ElementList              = (1:nb)';
7710669 AO.(ifam).Monitor.Handles(:,1)     = NaN*ones(nb,1);
7720670 AO.(ifam).Monitor.TangoNames       = strcat(AO.(ifam).DeviceName, <span class="string">'/pressure'</span>);
7730671 AO.(ifam).Monitor.HW2PhysicsParams = 1;
7740672 AO.(ifam).Monitor.Physics2HWParams = 1;
7750673 AO.(ifam).Monitor.Units            = <span class="string">'Hardware'</span>;   
7760674 AO.(ifam).Monitor.HWUnits          = <span class="string">'mBar'</span>;
7770675 AO.(ifam).Monitor.PhysicsUnits     = <span class="string">'mBar'</span>;
7780676
7790677 <span class="comment">%% Penning Gauges</span>
7800678 ifam = <span class="string">'JPEN'</span>;
7810679 AO.(ifam).FamilyName           = <span class="string">'JPEN'</span>;
7820680 AO.(ifam).MemberOf             = {<span class="string">'PlotFamily'</span>; <span class="string">'PenningGauge'</span>; <span class="string">'Pressure'</span>; <span class="string">'Archivable'</span>};
7830681 AO.(ifam).Monitor.Mode         = Mode;
7840682 AO.(ifam).Monitor.DataType     = <span class="string">'Scalar'</span>;
7850683
7860684 map     = tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'jauge_penning'</span>);
7870685 numindex  = cell2mat(regexpi(map,<span class="string">'\.[0-9]'</span>,<span class="string">'once'</span>))+1;
7880686
7890687 nb = size(map,2);
7900688 <span class="keyword">for</span> k = 1:nb,
7910689     <span class="keyword">switch</span> map{k}(1:6)
7920690         <span class="keyword">case</span> <span class="string">'BOO-B1'</span>
7930691             k1 = 1;
7940692         <span class="keyword">case</span> <span class="string">'BOO-Bi'</span>
7950693             k1 = 2;
7960694         <span class="keyword">case</span> <span class="string">'BOO-B2'</span>
7970695             k1 = 3;
7980696         <span class="keyword">case</span> <span class="string">'BOO-Be'</span>
7990697             k1 = 4;
8000698         <span class="keyword">case</span> <span class="string">'BOO-B3'</span>
8010699             k1 = 5;
8020700         <span class="keyword">case</span> <span class="string">'BOO-B4'</span>
8030701             k1 = 6;
8040702     <span class="keyword">end</span>           
8050703     AO.(ifam).DeviceList(k,:)  = [k1 str2double(map{k}(numindex(k)))];
8060704     AO.(ifam).ElementList(k,:) = k;
8070705     AO.(ifam).CommonNames(k,:) = [<span class="string">'JPEN'</span> num2str(ik)];
8080706 <span class="keyword">end</span>
8090707
8100708 AO.(ifam).Status                   = ones(nb,1);
8110709 AO.(ifam).DeviceName               = map';
8120710 AO.(ifam).CommonNames              = AO.(ifam).CommonNames';
8130711 AO.(ifam).ElementList              = (1:nb)';
8140712 AO.(ifam).Monitor.Handles(:,1)     = NaN*ones(nb,1);
8150713 AO.(ifam).Monitor.TangoNames       = strcat(AO.(ifam).DeviceName, <span class="string">'/pressure'</span>);
8160714 AO.(ifam).Monitor.HW2PhysicsParams = 1;
8170715 AO.(ifam).Monitor.Physics2HWParams = 1;
8180716 AO.(ifam).Monitor.Units            = <span class="string">'Hardware'</span>;   
8190717 AO.(ifam).Monitor.HWUnits          = <span class="string">'mBar'</span>;
8200718 AO.(ifam).Monitor.PhysicsUnits     = <span class="string">'mBar'</span>;
8210719
8220720 <span class="comment">%% Pirani Gauges</span>
8230721 ifam = <span class="string">'JPIR'</span>;
8240722 AO.(ifam).FamilyName           = <span class="string">'JPIR'</span>;
8250723 AO.(ifam).MemberOf             = {<span class="string">'PlotFamily'</span>; <span class="string">'PiraniGauge'</span>; <span class="string">'Pressure'</span>; <span class="string">'Archivable'</span>};
8260724 AO.(ifam).Monitor.Mode         = Mode;
8270725 AO.(ifam).Monitor.DataType     = <span class="string">'Scalar'</span>;
8280726
8290727 map     = tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'jauge_pirani'</span>);
8300728 numindex  = cell2mat(regexpi(map,<span class="string">'\.[0-9]'</span>,<span class="string">'once'</span>))+1;
8310729
8320730 nb = size(map,2);
8330731 <span class="keyword">for</span> k = 1:nb,
8340732     <span class="keyword">switch</span> map{k}(1:6)
8350733         <span class="keyword">case</span> <span class="string">'BOO-B1'</span>
8360734             k1 = 1;
8370735         <span class="keyword">case</span> <span class="string">'BOO-Bi'</span>
8380736             k1 = 2;
8390737         <span class="keyword">case</span> <span class="string">'BOO-B2'</span>
8400738             k1 = 3;
8410739         <span class="keyword">case</span> <span class="string">'BOO-Be'</span>
8420740             k1 = 4;
8430741         <span class="keyword">case</span> <span class="string">'BOO-B3'</span>
8440742             k1 = 5;
8450743         <span class="keyword">case</span> <span class="string">'BOO-B4'</span>
8460744             k1 = 6;
8470745     <span class="keyword">end</span>           
8480746     AO.(ifam).DeviceList(k,:)  = [k1 str2double(map{k}(numindex(k)))];
8490747     AO.(ifam).ElementList(k,:) = k;
8500748     AO.(ifam).CommonNames(k,:) = [<span class="string">'JPIR'</span> num2str(ik)];
8510749 <span class="keyword">end</span>
8520750
8530751 AO.(ifam).Status                   = ones(nb,1);
8540752 AO.(ifam).DeviceName               = map';
8550753 AO.(ifam).CommonNames              = AO.(ifam).CommonNames';
8560754 AO.(ifam).ElementList              = (1:nb)';
8570755 AO.(ifam).Monitor.Handles(:,1)     = NaN*ones(nb,1);
8580756 AO.(ifam).Monitor.TangoNames       = strcat(AO.(ifam).DeviceName, <span class="string">'/pressure'</span>);
8590757 AO.(ifam).Monitor.HW2PhysicsParams = 1;
8600758 AO.(ifam).Monitor.Physics2HWParams = 1;
8610759 AO.(ifam).Monitor.Units            = <span class="string">'Hardware'</span>;   
8620760 AO.(ifam).Monitor.HWUnits          = <span class="string">'mBar'</span>;
8630761 AO.(ifam).Monitor.PhysicsUnits     = <span class="string">'mBar'</span>;
8640762
8650763 <span class="comment">%====</span>
8660764 <span class="comment">%% DCCT</span>
8670765 <span class="comment">%====</span>
8680766 ifam=ifam+1;
8690767 AO.DCCT.FamilyName                     = <span class="string">'DCCT'</span>;
8700768 AO.DCCT.FamilyType                     = <span class="string">'Diagnostic'</span>;
8710769 AO.DCCT.MemberOf                       = {<span class="string">'Diagnostics'</span>,<span class="string">'Archivable'</span>,<span class="string">'Plotfamily'</span>};
8720770 AO.DCCT.CommonNames                    = <span class="string">'DCCT'</span>;
8730771 AO.DCCT.DeviceList                     = [1 1; 1 2];
8740772 AO.DCCT.ElementList                    = (1:2)';
8750773 AO.DCCT.Status                         = AO.DCCT.ElementList;
8760774
8770775 AO.DCCT.Monitor.Mode                   = Mode;
8780776 AO.DCCT.FamilyName                     = <span class="string">'DCCT'</span>;
8790777 AO.DCCT.deviceName                     = <span class="string">'BOO-C01/DG/DCCT'</span>;
8800778 AO.DCCT.Monitor.DataType               = <span class="string">'Scalar'</span>;
8810779 AO.DCCT.Monitor.TangoNames             = [<span class="string">'BOO-C01/DG/DCCT/iInj'</span>; <span class="string">'BOO-C01/DG/DCCT/iExt'</span>]; <span class="comment">%afin de ne pas avoir de bug</span>
8820780 AO.DCCT.Monitor.Units                  = <span class="string">'Hardware'</span>;
8830781 AO.DCCT.Monitor.Handles                = NaN;
8840782 AO.DCCT.Monitor.HWUnits                = <span class="string">'milli-ampere'</span>;
8850783 AO.DCCT.Monitor.PhysicsUnits           = <span class="string">'A'</span>;
8860784 AO.DCCT.Monitor.HW2PhysicsParams       = 1;
8870785 AO.DCCT.Monitor.Physics2HWParams       = 1;
8880786
8890787 <span class="comment">%============</span>
8900788 <span class="comment">%% RF System</span>
8910789 <span class="comment">%============</span>
8920790 ifam = <span class="string">'RF'</span>;
8930791 AO.(ifam).FamilyName                = ifam;
8940792 AO.(ifam).FamilyType                = <span class="string">'RF'</span>;
8950793 AO.(ifam).MemberOf                  = {<span class="string">'RF'</span>,<span class="string">'RFSystem'</span>};
8960794 AO.(ifam).Status                    = 1;
8970795 AO.(ifam).CommonNames               = <span class="string">'RF'</span>;
8980796 AO.(ifam).DeviceList                = [1 1];
8990797 AO.(ifam).ElementList               = 1;
9000798 AO.(ifam).DeviceName(:,:)           = {<span class="string">'BOO/RF/MasterClock/'</span>};
9010799
9020800 <span class="comment">%Frequency Readback</span>
9030801 AO.(ifam).Monitor.Mode                = Mode;
9040802 AO.(ifam).Monitor.DataType            = <span class="string">'Scalar'</span>;
9050803 AO.(ifam).Monitor.Units               = <span class="string">'Hardware'</span>;
9060804 AO.(ifam).Monitor.HW2PhysicsParams    = 1e+6;       <span class="comment">%no hw2physics function necessary</span>
9070805 AO.(ifam).Monitor.Physics2HWParams    = 1e-6;
9080806 AO.(ifam).Monitor.HWUnits             = <span class="string">'MHz'</span>;
9090807 AO.(ifam).Monitor.PhysicsUnits        = <span class="string">'Hz'</span>;
9100808 AO.(ifam).Monitor.TangoNames          = {<span class="string">'ANS/RF/MasterClock/frequency'</span>};
9110809 AO.(ifam).Monitor.Handles             = NaN;
9120810 AO.(ifam).Monitor.Range               = [350e6 360e6];
9130811
9140812 AO.(ifam).Setpoint = AO.(ifam).Monitor;
9150813 AO.(ifam).Desired  = AO.(ifam).Monitor;
9160814
9170815
9180816 <span class="comment">%=====================</span>
9190817 <span class="comment">%% Gamma Monitors DOSE</span>
9200818 <span class="comment">%====================</span>
9210819 ifam = ifam+1;
9220820 AO.CIGdose.FamilyName                     = <span class="string">'CIGdose'</span>;
9230821 AO.CIGdose.FamilyType                     = <span class="string">'Radioprotection'</span>;
9240822 AO.CIGdose.MemberOf                       = {<span class="string">'Radioprotection'</span>,<span class="string">'Archivable'</span>,<span class="string">'Plotfamily'</span>};
9250823 AO.CIGdose.CommonNames                    = <span class="string">'CIG'</span>;
9260824
9270825 map = tango_get_db_property(<span class="string">'anneau'</span>,<span class="string">'gammamonitor_mapping'</span>);
9280826 AO.CIGdose.DeviceName = map';
9290827
9300828 AO.CIGdose.Monitor.Mode                   = Mode;
9310829 AO.CIGdose.FamilyName                     = <span class="string">'CIGdose'</span>;
9320830 AO.CIGdose.Monitor.DataType               = <span class="string">'Scalar'</span>;
9330831
9340832 nb = length(AO.CIGdose.DeviceName);
9350833 AO.CIGdose.DeviceList                     = [ones(1,nb); (1:nb)]';
9360834 AO.CIGdose.ElementList                    = (1:nb)';
9370835 AO.CIGdose.Status                         = ones(nb,1);
9380836
9390837 AO.CIGdose.Monitor.TangoNames            = strcat(AO.CIGdose.DeviceName,<span class="string">'/dose'</span>);
9400838
9410839 ;<span class="comment">%afin de ne pas avoir de bug</span>
9420840 AO.CIGdose.Monitor.Units                  = <span class="string">'Hardware'</span>;
9430841 AO.CIGdose.Monitor.Handles                = NaN;
9440842 AO.CIGdose.Monitor.HWUnits                = <span class="string">'uGy'</span>;
9450843 AO.CIGdose.Monitor.PhysicsUnits           = <span class="string">'uGy'</span>;
9460844 AO.CIGdose.Monitor.HW2PhysicsParams       = 1;
9470845 AO.CIGdose.Monitor.Physics2HWParams       = 1;
9480846
9490847 <span class="comment">%=========================</span>
9500848 <span class="comment">%% Gamma Monitors DOSErate</span>
9510849 <span class="comment">%=========================</span>
9520850
9530851 ifam = ifam+1;
9540852
9550853 AO.CIGrate = AO.CIGdose;
9560854 AO.CIGrate.FamilyName                     = <span class="string">'CIGrate'</span>;
9570855 AO.CIGrate.CommonNames                    = <span class="string">'CIGrate'</span>;
9580856 AO.CIGrate.FamilyName                     = <span class="string">'CIGrate'</span>;
9590857
9600858 nb = length(AO.CIGrate.DeviceName);
9610859 AO.CIGrate.Status                         = ones(nb,1);
9620860
9630861 AO.CIGrate.Monitor.TangoNames            = strcat(AO.CIGrate.DeviceName,<span class="string">'/doseRate'</span>);
9640862
9650863 <span class="comment">%afin de ne pas avoir de bug</span>
9660864 AO.CIG.Monitor.HWUnits                = <span class="string">'uGy/h'</span>;
9670865 AO.CIG.Monitor.PhysicsUnits           = <span class="string">'uGy/h'</span>;
9680866
9690867 <span class="comment">%==================</span>
9700868 <span class="comment">%Machine Parameters</span>
9710869 <span class="comment">%==================</span>
9720870 AO.MachineParameters.FamilyName                = <span class="string">'MachineParameters'</span>;
9730871 AO.MachineParameters.FamilyType                = <span class="string">'Parameter'</span>;
9740872 AO.MachineParameters.MemberOf                  = {<span class="string">'Diagnostics'</span>};
9750873 AO.MachineParameters.Status                    = [1 1 1 1]';
9760874
9770875 AO.MachineParameters.Monitor.Mode              = Mode;
9780876 AO.MachineParameters.Monitor.DataType          = <span class="string">'Scalar'</span>;
9790877 AO.MachineParameters.Monitor.Units             = <span class="string">'Hardware'</span>;
9800878
9810879 <span class="comment">%use spear2 process variable names</span>
9820880 mp={
9830881     <span class="string">'mode    '</span>    <span class="string">'SPEAR:BeamStatus  '</span>          [1 1]  1; <span class="keyword">...</span>
9840882     <span class="string">'energy  '</span>    <span class="string">'SPEAR:Energy      '</span>          [1 2]  2; <span class="keyword">...</span>
9850883     <span class="string">'current '</span>    <span class="string">'SPEAR:BeamCurrAvg '</span>          [1 3]  3; <span class="keyword">...</span>
9860884     <span class="string">'lifetime'</span>    <span class="string">'SPEAR:BeamLifetime'</span>          [1 4]  4; <span class="keyword">...</span>
9870885     };
9880886 AO.MachineParameters.Monitor.HWUnits          = <span class="string">' '</span>;
9890887 AO.MachineParameters.Monitor.PhysicsUnits     = <span class="string">' '</span>;
9900888
9910889 AO.MachineParameters.Setpoint.HWUnits         = <span class="string">' '</span>;
9920890 AO.MachineParameters.Setpoint.PhysicsUnits    = <span class="string">' '</span>;
9930891
9940892 <span class="keyword">for</span> ii=1:size(mp,1)
9950893     name  =mp(ii,1);    AO.MachineParameters.CommonNames(ii,:)            = char(name{1});
9960894     <span class="comment">%     name  =mp(ii,2);    AO.MachineParameters.Monitor.ChannelNames(ii,:)   = char(name{1});</span>
9970895     <span class="comment">%     name  =mp(ii,2);    AO.MachineParameters.Setpoint.ChannelNames(ii,:)  = char(name{1});</span>
9980896     val   =mp(ii,3);    AO.MachineParameters.DeviceList(ii,:)             = val{1};
9990897     val   =mp(ii,4);    AO.MachineParameters.ElementList(ii,:)            = val{1};
10000898
10010899     AO.MachineParameters.Monitor.HW2PhysicsParams(ii,:)    = 1;
10020900     AO.MachineParameters.Monitor.Physics2HWParams(ii,:)    = 1;
10030901     AO.MachineParameters.Monitor.Handles(ii,1)  = NaN;
10040902     AO.MachineParameters.Setpoint.HW2PhysicsParams(ii,:)   = 1;
10050903     AO.MachineParameters.Setpoint.Physics2HWParams(ii,:)   = 1;
10060904     AO.MachineParameters.Setpoint.Handles(ii,1)  = NaN;
10070905 <span class="keyword">end</span>
10080906
10090907 <span class="comment">% Save AO</span>
10100908 setao(AO);
10110909
10120910 <span class="comment">% The operational mode sets the path, filenames, and other important params</span>
10130911 <span class="comment">% Run setoperationalmode after most of the AO is built so that the Units and Mode fields</span>
10140912 <span class="comment">% can be set in setoperationalmode</span>
10150913
10160914 <a href="setoperationalmode.html" class="code" title="function setoperationalmode(ModeNumber)">setoperationalmode</a>(OperationalMode);
10170915
10180916 <span class="comment">%======================================================================</span>
10190917 <span class="comment">%======================================================================</span>
10200918 <span class="comment">%% Append Accelerator Toolbox information</span>
10210919 <span class="comment">%======================================================================</span>
10220920 <span class="comment">%======================================================================</span>
10230921 disp(<span class="string">'** Initializing Accelerator Toolbox information'</span>);
10240922
10250923 AT = getao;
10260924
10270925 ATindx = atindex(THERING);  <span class="comment">%structure with fields containing indices</span>
10280926
10290927 s = findspos(THERING,1:length(THERING)+1)';
10300928
10310929 <span class="comment">% Horizontal BPMS</span>
10320930 <span class="comment">% WARNING: BPM1 is the one before the injection straigth section</span>
10330931 <span class="comment">%          since a cell begins from begin of Straigths</span>
10340932 <span class="comment">% CELL1 BPM1 to BPM7</span>
10350933 ifam = (<span class="string">'BPMx'</span>);
10360934 AO.(ifam).AT.ATType  = ifam;
10370935 AO.(ifam).AT.ATIndex = ATindx.BPM(:);
10380936 AO.(ifam).Position   = s(AO.(ifam).AT.ATIndex);
10390937
10400938 <span class="comment">% Vertical BPMS</span>
10410939 ifam = (<span class="string">'BPMz'</span>);
10420940 AO.(ifam).AT.ATType  = ifam;
10430941 AO.(ifam).AT.ATIndex = ATindx.BPM(:);
10440942 AO.(ifam).Position   = s(AO.(ifam).AT.ATIndex); 
10450943
10460944 <span class="comment">% SLOW HORIZONTAL CORRECTORS</span>
10470945 ifam = (<span class="string">'HCOR'</span>);
10480946 AO.(ifam).AT.ATType  = ifam;
10490947 AO.(ifam).AT.ATIndex = ATindx.HCOR(:);
10500948 AO.(ifam).Position   = s(AO.(ifam).AT.ATIndex);
10510949
10520950 <span class="comment">% SLOW VERTICAL CORRECTORS</span>
10530951 ifam = (<span class="string">'VCOR'</span>);
10540952 AO.(ifam).AT.ATType  = ifam;
10550953 AO.(ifam).AT.ATIndex = ATindx.VCOR(:);
10560954 AO.(ifam).Position   = s(AO.(ifam).AT.ATIndex); 
10570955
10580956 <span class="comment">%% BENDING magnets</span>
10590957 ifam = (<span class="string">'BEND'</span>);
10600958 AO.(ifam).AT.ATType  = ifam;
10610959 AO.(ifam).AT.ATIndex = ATindx.BEND(:);
10620960 AO.(ifam).Position   = s(AO.(ifam).AT.ATIndex);
10630961
10640962 <span class="comment">%% QF magnets</span>
10650963 ifam = (<span class="string">'QF'</span>);
10660964 AO.(ifam).AT.ATType  = <span class="string">'QUAD'</span>;
10670965 AO.(ifam).AT.ATIndex = ATindx.QPF(:);
10680966 AO.(ifam).Position   = s(AO.(ifam).AT.ATIndex);
10690967 AO.(ifam).AT.ATParameterGroup = mkparamgroup(THERING,AO.(ifam).AT.ATIndex,<span class="string">'K'</span>);
10700968
10710969 <span class="comment">%% QD magnets</span>
10720970 ifam = (<span class="string">'QD'</span>);
10730971 AO.(ifam).AT.ATType  = <span class="string">'QUAD'</span>;
10740972 AO.(ifam).AT.ATIndex = ATindx.QPD(:);
10750973 AO.(ifam).Position   = s(AO.(ifam).AT.ATIndex);
10760974 AO.(ifam).AT.ATParameterGroup = mkparamgroup(THERING,AO.(ifam).AT.ATIndex,<span class="string">'K'</span>);
10770975
10780976 <span class="comment">%% SF magnets</span>
10790977 ifam = (<span class="string">'SF'</span>);
10800978 AO.(ifam).AT.ATType  = <span class="string">'SEXT'</span>;
10810979 AO.(ifam).AT.ATIndex = ATindx.SXF(:);
10820980 AO.(ifam).Position   = s(AO.(ifam).AT.ATIndex);
10830981 AO.(ifam).AT.ATParameterGroup = mkparamgroup(THERING,AO.(ifam).AT.ATIndex,<span class="string">'K2'</span>);
10840982
10850983 <span class="comment">%% SD magnets</span>
10860984 ifam = (<span class="string">'SD'</span>);
10870985 AO.(ifam).AT.ATType  = <span class="string">'SEXT'</span>;
10880986 AO.(ifam).AT.ATIndex = ATindx.SXD(:);
10890987 AO.(ifam).Position   = s(AO.(ifam).AT.ATIndex);
10900988 AO.(ifam).AT.ATParameterGroup = mkparamgroup(THERING,AO.(ifam).AT.ATIndex,<span class="string">'S'</span>);
10910989
10920990 <span class="comment">% RF Cavity</span>
10930991 ifam = (<span class="string">'RF'</span>);
10940992 AO.(ifam).AT.ATType = <span class="string">'RF Cavity'</span>;
10950993 AO.(ifam).AT.ATIndex = findcells(THERING,<span class="string">'Frequency'</span>)';
10960994 AO.(ifam).Position   = s(AO.(ifam).AT.ATIndex);
10970995
10980996 <span class="comment">% Save AO</span>
10990997 setao(AO);
11000998
11010999 <span class="keyword">if</span> iscontrolroom
11021000     switch2online;
11031001 <span class="keyword">else</span>
11041002     switch2sim;
11051003 <span class="keyword">end</span></pre></div>
1106<hr><address>Generated on Mon 21-May-2007 15:35:27 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
1107</body>
1108</html>
Note: See TracBrowser for help on using the repository browser.