source: MML/trunk/mml/at/doc_html/at/bendalign.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: 6.2 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2                "http://www.w3.org/TR/REC-html40/loose.dtd">
3<html>
4<head>
5  <title>Description of bendalign</title>
6  <meta name="keywords" content="bendalign">
7  <meta name="description" content="locate bend magnets in AO and return alignment to zero">
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">at</a> &gt; bendalign.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 at&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
19
20<h1>bendalign
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>locate bend magnets in AO and return alignment to zero</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 bendalign(sx,sy); </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">locate bend magnets in AO and return alignment to zero
31function bendalign(sx,sy);  sx and sy are sigma values for randn;
32units are meters</pre></div>
33
34<!-- crossreference -->
35<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
36This function calls:
37<ul style="list-style-image:url(../matlabicon.gif)">
38</ul>
39This function is called by:
40<ul style="list-style-image:url(../matlabicon.gif)">
41</ul>
42<!-- crossreference -->
43
44
45<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
46<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function bendalign(sx,sy);</a>
470002 <span class="comment">%locate bend magnets in AO and return alignment to zero</span>
480003 <span class="comment">%function bendalign(sx,sy);  sx and sy are sigma values for randn;</span>
490004 <span class="comment">%units are meters</span>
500005 <span class="keyword">if</span> nargin&lt;2
510006     disp(<span class="string">'Error in bendalign - must supply alignment spreads'</span>);
520007     <span class="keyword">return</span>
530008 <span class="keyword">end</span>
540009
550010 <span class="keyword">global</span> THERING
560011 AO = getao;
570012
580013 ATindx=[];   <span class="comment">%indices of bend magnets</span>
590014 mx=[];
600015 my=[];
610016 len=findspos(THERING,length(THERING)+1);
620017
630018 <span class="keyword">for</span> ii=1:length(AO)
640019     <span class="keyword">if</span> strcmp(lower(AO{ii}.FamilyType),<span class="string">'bend'</span>)
650020         indx=AO{ii}.AT.ATIndex;
660021         
670022         <span class="comment">%assign random alignment error to first magnet</span>
680023         mx=[mx; sx*randn];
690024         my=[my; sy*randn];
700025
710026         <span class="comment">% assign random error to rest of family</span>
720027         tol=1e-6; <span class="comment">%tolerance for spacing between magnets</span>
730028         <span class="keyword">for</span> jj=2:length(indx)
740029             
750030             <span class="comment">%check for split magnets</span>
760031             <span class="keyword">if</span> AO{ii}.Position(jj)-THERING{indx(jj)}.Length - AO{ii}.Position(jj-1)&lt;tol   <span class="comment">%magnet split</span>
770032                disp([<span class="string">'   Split magnet '</span> AO{ii}.FamilyName <span class="string">' found in function bendalign with index  '</span>, num2str(indx(jj))]);
780033                mx=[mx; -mx(end)];
790034                my=[my; -my(end)];
800035            <span class="keyword">else</span>   <span class="comment">%magnet not split</span>
810036                mx=[mx; sx*randn];   
820037                my=[my; sy*randn];
830038            <span class="keyword">end</span>
840039           
850040         <span class="keyword">end</span>
860041         
870042         <span class="comment">%check if first/last element split in THERING</span>
880043         <span class="keyword">if</span> abs(AO{ii}.Position(1))  &lt; tol  &amp; <span class="keyword">...</span><span class="comment">    %first element near zero</span>
890044            abs((len - AO{ii}.Position(end) - THERING{indx(end)}.Length &lt; tol))      <span class="comment">%last element near end</span>
900045            disp([<span class="string">'   Split magnet '</span> AO{ii}.FamilyName <span class="string">' found in function bendalign with index  '</span>,<span class="keyword">...</span>
910046            num2str(indx(1)), <span class="string">' '</span>,num2str(indx(end))]);
920047            mx(end)=-mx(end-length(indx)+1);       <span class="comment">%error on last quad same as error on first quad in family</span>
930048            my(end)=-my(end-length(indx)+1);
940049         <span class="keyword">end</span>
950050         
960051         ATindx=[ATindx; indx];
970052     <span class="keyword">end</span>  <span class="comment">%end quad condition</span>
980053 <span class="keyword">end</span>  <span class="comment">%end loop over families</span>
990054
1000055 <span class="comment">%set polynomials to mimic dipole misalignment errors</span>
1010056 <span class="keyword">for</span> ii=1:length(ATindx)
1020057     
1030058     rho=THERING{ATindx(ii)}.Length/THERING{ATindx(ii)}.BendingAngle;
1040059     dB=THERING{ATindx(ii)}.PolynomB(2)*mx(ii)*rho;                              <span class="comment">%dB = (gradB/B*rho)*dx*rho</span>
1050060     THERING{ATindx(ii)}.PolynomB(1)=THERING{ATindx(ii)}.PolynomB(1)+dB;         <span class="comment">%horizontal</span>
1060061
1070062     THERING{ATindx(ii)}.PolynomA(1)=THERING{ATindx(ii)}.PolynomA(1)+dB;         <span class="comment">%vertical</span>
1080063 <span class="keyword">end</span></pre></div>
109<hr><address>Generated on Fri 18-May-2007 17:13:39 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
110</body>
111</html>
Note: See TracBrowser for help on using the repository browser.