source: MML/trunk/mml/doc_html/mml/at/getkleff.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: 7.5 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 getkleff</title>
6  <meta name="keywords" content="getkleff">
7  <meta name="description" content="GETKLEFF - Returns K * Leff in the AT deck">
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; <a href="index.html">at</a> &gt; getkleff.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/at&nbsp;<img alt=">" border="0" src="../../right.png"></a></td></tr></table>-->
19
20<h1>getkleff
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>GETKLEFF - Returns K * Leff in the AT deck</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 [KLeff, K, Leff] = getkleff(Family, 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">GETKLEFF - Returns K * Leff in the AT deck
31  KLeff = getkleff(Family, DeviceList)
32
33  INPUTS
34  1. Family = Family Name
35              Accelerator Object
36              Cell Array of Accelerator Objects or Family Names
37              AT FamName
38  2. DeviceList = [Sector Device #] or [element #] list {Default or empty list: entire family}
39
40  NOTES
41  1. If Family is a cell array, then DeviceList must also be a cell array
42  2. If using AT FamName, then DeviceList is index vector, ie,
43              Length = THERING{ATIndexList}.Length(DeviceList)
44
45  Written by Greg Portmann</pre></div>
46
47<!-- crossreference -->
48<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
49This function calls:
50<ul style="list-style-image:url(../../matlabicon.gif)">
51<li><a href="getleff.html" class="code" title="function Length = getleff(Family, varargin);">getleff</a>        GETLEFF - Returns the magnet length as in the AT deck [meters]</li></ul>
52This function is called by:
53<ul style="list-style-image:url(../../matlabicon.gif)">
54</ul>
55<!-- crossreference -->
56
57
58<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
59<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function [KLeff, K, Leff] = getkleff(Family, varargin);</a>
600002 <span class="comment">%GETKLEFF - Returns K * Leff in the AT deck</span>
610003 <span class="comment">%  KLeff = getkleff(Family, DeviceList)</span>
620004 <span class="comment">%</span>
630005 <span class="comment">%  INPUTS</span>
640006 <span class="comment">%  1. Family = Family Name</span>
650007 <span class="comment">%              Accelerator Object</span>
660008 <span class="comment">%              Cell Array of Accelerator Objects or Family Names</span>
670009 <span class="comment">%              AT FamName</span>
680010 <span class="comment">%  2. DeviceList = [Sector Device #] or [element #] list {Default or empty list: entire family}</span>
690011 <span class="comment">%</span>
700012 <span class="comment">%  NOTES</span>
710013 <span class="comment">%  1. If Family is a cell array, then DeviceList must also be a cell array</span>
720014 <span class="comment">%  2. If using AT FamName, then DeviceList is index vector, ie,</span>
730015 <span class="comment">%              Length = THERING{ATIndexList}.Length(DeviceList)</span>
740016 <span class="comment">%</span>
750017 <span class="comment">%  Written by Greg Portmann</span>
760018
770019 <span class="keyword">global</span> THERING
780020
790021 <span class="keyword">if</span> nargin == 0,
800022     error(<span class="string">'Must have at least one input (Family or Channel Name).'</span>);
810023 <span class="keyword">end</span>
820024
830025 ATIndexList = getfamilydata(Family, <span class="string">'AT'</span>, <span class="string">'ATIndex'</span>, varargin{:});
840026
850027 <span class="keyword">if</span> isempty(ATIndexList)
860028     <span class="comment">% Try an AT family</span>
870029     <span class="comment">% For split families, this will return all the magnets</span>
880030     ATIndexList = findcells(THERING, <span class="string">'FamName'</span>, Family);
890031     ATIndexList = ATIndexList(:);
900032     <span class="keyword">if</span> nargin &gt;= 2
910033         ATIndexList = ATIndexList(varargin{2});
920034     <span class="keyword">end</span>
930035 <span class="keyword">end</span>
940036
950037
960038 Leff = <a href="getleff.html" class="code" title="function Length = getleff(Family, varargin);">getleff</a>(Family, varargin{:});
970039
980040
990041 <span class="comment">% For split magngets this assumes that all K-values are the same</span>
1000042 <span class="keyword">for</span> i=1:size(ATIndexList,1)
1010043     <span class="keyword">if</span> isfield(THERING{ATIndexList(i,1)},<span class="string">'K'</span>)
1020044         <span class="comment">% Could be QUAD or a BEND depend on the machine</span>
1030045         K(i,:) = THERING{ATIndexList(i,1)}.K;
1040046         KLeff(i,:) = Leff(i) * K(i,:);
1050047     <span class="keyword">elseif</span> isfield(THERING{ATIndexList(i,1)},<span class="string">'KickAngle'</span>) &amp; ismemberof(Family, <span class="string">'HCM'</span>)
1060048         <span class="comment">% For correctors, KickAngle = B * Leff / Brho ???  (mradians)</span>
1070049         KLeff(i,:) = THERING{ATIndexList(i,1)}.KickAngle(1);
1080050         <span class="keyword">if</span> nargout &gt;= 2
1090051             K(i,:) = KLeff(i,:) ./ Leff;
1100052         <span class="keyword">end</span>
1110053     <span class="keyword">elseif</span> isfield(THERING{ATIndexList(i,1)},<span class="string">'KickAngle'</span>) &amp; ismemberof(Family, <span class="string">'VCM'</span>)
1120054         <span class="comment">% For correctors, KickAngle = B * Leff / Brho ???  (mradians)</span>
1130055         <span class="comment">% Hence, even if Leff = 0 (thin lense corrector) K*Leff will be right</span>
1140056         KLeff(i,:) = THERING{ATIndexList(i,1)}.KickAngle(2);
1150057         <span class="keyword">if</span> nargout &gt;= 2
1160058             K(i,:) = KLeff(i,:) ./ Leff;
1170059         <span class="keyword">end</span>
1180060     <span class="keyword">elseif</span> isfield(THERING{ATIndexList(i,1)},<span class="string">'PolynomB'</span>) &amp; ismemberof(Family, <span class="string">'SEXT'</span>)
1190061         K(i,:) = THERING{ATIndexList(i,1)}.PolynomB(3);
1200062         KLeff(i,:) = Leff(i) * K(i,:);
1210063     <span class="keyword">elseif</span> isfield(THERING{ATIndexList(i,1)},<span class="string">'PolynomA'</span>) &amp; ismemberof(Family, <span class="string">'SKEWQUAD'</span>)
1220064         K(i,:) = THERING{ATIndexList(i,1)}.PolynomA(2);
1230065         KLeff(i,:) = Leff(i) * K(i,:);
1240066     <span class="keyword">else</span>
1250067         error(<span class="string">'Which field in THERING to use is not clear.'</span>);
1260068     <span class="keyword">end</span>
1270069 <span class="keyword">end</span>
1280070</pre></div>
129<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>
130</body>
131</html>
Note: See TracBrowser for help on using the repository browser.