source: MML/trunk/mml/doc_html/mml/plotchro.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: 18.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 plotchro</title>
6  <meta name="keywords" content="plotchro">
7  <meta name="description" content="PLOTCHRO - Plot the chromaticity function">
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; plotchro.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>plotchro
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>PLOTCHRO - Plot the chromaticity function</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 [c, FileName] = plotchro(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">PLOTCHRO - Plot the chromaticity function
31  c = plotchro(c);
32  c = plotchro(c, 'Hardware');  plots in hardware units [Tune/MHz]
33  c = plotchro(c, 'Physics');   plots in physics  units [Tune/(dp/p)]
34  c = plotchro(FileName);
35  [c, FileName] = plotchro(''); prompts for a file
36
37  INPUTS
38  1. c is the chromacity structure returned by measchro
39  2. PhysicsString is the units 'Hardware' or 'Physics'
40
41  OUTPUTS
42  1. c is the chromacity structure returned by measchro
43
44  NOTES
45  1.'Zeta' can be used instead of 'Physics'
46  2. The default units comes from the structure c.Units
47
48  See Also <a href="measchro.html" class="code" title="function [Chromaticity, FileName] = measchro(varargin)">measchro</a>, <a href="getchro.html" class="code" title="function [Data, FileName] = getchro(varargin)">getchro</a></pre></div>
49
50<!-- crossreference -->
51<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
52This function calls:
53<ul style="list-style-image:url(../matlabicon.gif)">
54<li><a href="getchro.html" class="code" title="function [Data, FileName] = getchro(varargin)">getchro</a>       GETCHRO - Return the chromaticity function (from file)</li><li><a href="hw2physics.html" class="code" title="function S = hw2physics(Family, Field, value, DeviceList, Energy)">hw2physics</a>  HW2PHYSICS - Converts from 'Hardware' units to 'Physics' units</li><li><a href="physics2hw.html" class="code" title="function S = physics2hw(Family, Field, value, DeviceList, Energy)">physics2hw</a>  PHYSICS2HW - Converts from 'Physics' units to 'Hardware' units</li><li><a href="plotchro.html" class="code" title="function [c, FileName] = plotchro(varargin)">plotchro</a>    PLOTCHRO - Plot the chromaticity function</li></ul>
55This function is called by:
56<ul style="list-style-image:url(../matlabicon.gif)">
57<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="plotchro.html" class="code" title="function [c, FileName] = plotchro(varargin)">plotchro</a>        PLOTCHRO - Plot the chromaticity function</li><li><a href="plotorbitdata.html" class="code" title="function [BPMx, BPMy] = plotorbitdata(varargin)">plotorbitdata</a>   PLOTORBITDATA - Plots BPM statistics</li></ul>
58<!-- crossreference -->
59
60
61<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
62<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function [c, FileName] = plotchro(varargin)</a>
630002 <span class="comment">%PLOTCHRO - Plot the chromaticity function</span>
640003 <span class="comment">%  c = plotchro(c);</span>
650004 <span class="comment">%  c = plotchro(c, 'Hardware');  plots in hardware units [Tune/MHz]</span>
660005 <span class="comment">%  c = plotchro(c, 'Physics');   plots in physics  units [Tune/(dp/p)]</span>
670006 <span class="comment">%  c = plotchro(FileName);</span>
680007 <span class="comment">%  [c, FileName] = plotchro(''); prompts for a file</span>
690008 <span class="comment">%</span>
700009 <span class="comment">%  INPUTS</span>
710010 <span class="comment">%  1. c is the chromacity structure returned by measchro</span>
720011 <span class="comment">%  2. PhysicsString is the units 'Hardware' or 'Physics'</span>
730012 <span class="comment">%</span>
740013 <span class="comment">%  OUTPUTS</span>
750014 <span class="comment">%  1. c is the chromacity structure returned by measchro</span>
760015 <span class="comment">%</span>
770016 <span class="comment">%  NOTES</span>
780017 <span class="comment">%  1.'Zeta' can be used instead of 'Physics'</span>
790018 <span class="comment">%  2. The default units comes from the structure c.Units</span>
800019 <span class="comment">%</span>
810020 <span class="comment">%  See Also measchro, getchro</span>
820021
830022 <span class="comment">%</span>
840023 <span class="comment">%  Written by Greg Portmann and Jeff Corbett</span>
850024 <span class="comment">%  Modified by Laurent S. Nadolski</span>
860025
870026 c = [];
880027 PhysicsString = <span class="string">''</span>;
890028 FileName = <span class="string">''</span>;
900029
910030
920031 <span class="comment">% Input parsing</span>
930032 UnitsFlag = {};
940033 <span class="keyword">for</span> i = length(varargin):-1:1
950034     <span class="keyword">if</span> isstruct(varargin{i})
960035         <span class="comment">% Ignor structures</span>
970036     <span class="keyword">elseif</span> iscell(varargin{i})
980037         <span class="comment">% Ignor cells</span>
990038     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Zeta'</span>) || strcmpi(varargin{i},<span class="string">'Physics'</span>)
1000039         UnitsFlag = [UnitsFlag varargin(i)];
1010040         <span class="comment">%if length(varargin) &gt;= i+1         % Not using these inputs at the moment</span>
1020041         <span class="comment">%    if isnumeric(varargin{i+1})</span>
1030042         <span class="comment">%        MCF = varargin{i+1};</span>
1040043         <span class="comment">%        if length(varargin) &gt;= i+2</span>
1050044         <span class="comment">%            if isnumeric(varargin{i+2})</span>
1060045         <span class="comment">%                RF0 = varargin{i+2};</span>
1070046         <span class="comment">%                varargin(i+2) = [];</span>
1080047         <span class="comment">%            end</span>
1090048         <span class="comment">%        end</span>
1100049         <span class="comment">%        varargin(i+1) = [];</span>
1110050         <span class="comment">%    end</span>
1120051         <span class="comment">%end</span>
1130052         varargin(i) = [];   
1140053     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Hardware'</span>)
1150054         UnitsFlag = [UnitsFlag varargin(i)];
1160055         varargin(i) = [];   
1170056     <span class="keyword">end</span>
1180057 <span class="keyword">end</span>
1190058
1200059
1210060 <span class="keyword">if</span> length(varargin) &gt;= 1
1220061     <span class="keyword">if</span> isstruct(varargin{1})
1230062         c = varargin{1};
1240063     <span class="keyword">elseif</span> ischar(varargin{1})
1250064         FileName = varargin{1};
1260065     <span class="keyword">end</span>
1270066 <span class="keyword">end</span>
1280067 <span class="keyword">if</span> isempty(c)
1290068     [c, FileName] = <a href="getchro.html" class="code" title="function [Data, FileName] = getchro(varargin)">getchro</a>(FileName, <span class="string">'Struct'</span>, UnitsFlag{:});
1300069 <span class="keyword">end</span>
1310070 <span class="keyword">if</span> ~isstruct(c) 
1320071     error(<span class="string">'Input must be a structure as returned by measchro'</span>);
1330072 <span class="keyword">end</span>
1340073
1350074 <span class="keyword">if</span> strcmpi(c.Mode,<span class="string">'Model'</span>)
1360075     warning(<span class="string">'Measured taken as Model and not as Simulator. Not implemented'</span>)
1370076 <span class="keyword">end</span>
1380077
1390078 Chromaticity = c.Data;
1400079 Tune =  c.Tune;
1410080 Units = c.Units;
1420081 UnitsString = c.UnitsString;
1430082 DeltaRF = c.ActuatorDelta;       
1440083
1450084 <span class="comment">% Override the Units field</span>
1460085 <span class="keyword">if</span> isempty(UnitsFlag)
1470086     PhysicsString = Units;
1480087 <span class="keyword">else</span>
1490088     PhysicsString = UnitsFlag{1};
1500089 <span class="keyword">end</span>
1510090
1520091
1530092 <span class="keyword">if</span> strcmpi(Units, <span class="string">'Hardware'</span>)
1540093     <span class="keyword">if</span> strcmpi(PhysicsString,<span class="string">'Physics'</span>)
1550094         <span class="comment">% Change units to physics</span>
1560095         <span class="comment">% MCF = c.MCF;</span>
1570096         <span class="comment">% RF0 = c.Actuator.Data;</span>
1580097         <span class="comment">% p = polyfit(c.dp, Tune(1,:), 2);</span>
1590098         <span class="comment">% c.PolyFit(1,:) = p;</span>
1600099         <span class="comment">% c.Data(1,1) = p(2);</span>
1610100         <span class="comment">% p = polyfit(c.dp, Tune(2,:), 2);</span>
1620101         <span class="comment">% c.PolyFit(2,:) = p;</span>
1630102         <span class="comment">% c.Data(2,1) = p(2);</span>
1640103         <span class="comment">% c.Units = 'Physics';</span>
1650104         <span class="comment">% c.UnitsString = '1/(dp/p)';</span>
1660105         c = <a href="hw2physics.html" class="code" title="function S = hw2physics(Family, Field, value, DeviceList, Energy)">hw2physics</a>(c);
1670106         <a href="plotchro.html" class="code" title="function [c, FileName] = plotchro(varargin)">plotchro</a>(c);
1680107         <span class="keyword">return</span>
1690108     <span class="keyword">end</span>
1700109     
1710110     <span class="comment">%================================================</span>
1720111     <span class="comment">% Tune shift vs. rf frequency</span>
1730112     <span class="comment">%================================================</span>
1740113     x2 = linspace(min(DeltaRF), max(DeltaRF), 1000);
1750114     
1760115     clf reset
1770116     set(gcf,<span class="string">'NumberTitle'</span>,<span class="string">'on'</span>,<span class="string">'Name'</span>,<span class="string">'Tune Shift vs. RF Frequency'</span>);
1780117     subplot(2,1,1);
1790118     <span class="keyword">if</span> strcmpi(c.Actuator.UnitsString,<span class="string">'MHz'</span>)
1800119         <span class="comment">% Hz is easier to view</span>
1810120         plot(1e6*DeltaRF, Tune(1,:), <span class="string">'ob'</span>,<span class="string">'markersize'</span>,2);   <span class="comment">% plot raw tune data</span>
1820121     <span class="keyword">else</span>
1830122         plot(DeltaRF, Tune(1,:), <span class="string">'ob'</span>,<span class="string">'markersize'</span>,2);   <span class="comment">% plot raw tune data</span>
1840123     <span class="keyword">end</span>
1850124     hold on;
1860125     p = c.PolyFit(1,:);
1870126     y = polyval(p, x2);                  <span class="comment">% evaluate polynomial on equispaced points x2</span>
1880127     <span class="keyword">if</span> strcmpi(c.Actuator.UnitsString,<span class="string">'MHz'</span>)
1890128         plot(1e6*x2, y, <span class="string">'-b'</span>);                   <span class="comment">% plot polynomial fit</span>
1900129         xlabel(<span class="string">'RF Frequency Change [Hz]'</span>);
1910130     <span class="keyword">else</span>
1920131         plot(x2, y, <span class="string">'-b'</span>);                   <span class="comment">% plot polynomial fit</span>
1930132         xlabel(sprintf(<span class="string">'RF Frequency Change [%s]'</span>, c.Actuator.UnitsString));
1940133     <span class="keyword">end</span>
1950134     hold off;
1960135     title([num2str(p(1)),<span class="string">' x (drf/rf)^2  + '</span>,num2str(p(2)),<span class="string">' x drf/rf  + '</span>,num2str(p(3))]);
1970136     ylabel(<span class="string">'Horizontal Tune'</span>);
1980137     
1990138     subplot(2,1,2);
2000139     <span class="keyword">if</span> strcmpi(c.Actuator.UnitsString,<span class="string">'MHz'</span>)
2010140         plot(1e6*DeltaRF, Tune(2,:), <span class="string">'ob'</span>,<span class="string">'markersize'</span>,2);   <span class="comment">% plot raw tune data</span>
2020141     <span class="keyword">else</span>
2030142         plot(DeltaRF, Tune(2,:), <span class="string">'ob'</span>,<span class="string">'markersize'</span>,2);       <span class="comment">% plot raw tune data</span>
2040143     <span class="keyword">end</span>
2050144     hold on;
2060145     p = c.PolyFit(2,:);
2070146     y = polyval(p, x2);
2080147     <span class="keyword">if</span> strcmpi(c.Actuator.UnitsString,<span class="string">'MHz'</span>)
2090148         plot(1e6*x2, y, <span class="string">'-b'</span>);                   <span class="comment">% plot polynomial fit</span>
2100149         xlabel(<span class="string">'RF Frequency Change [Hz]'</span>);
2110150     <span class="keyword">else</span>
2120151         plot(x2, y, <span class="string">'-b'</span>);                       <span class="comment">% plot polynomial fit</span>
2130152         xlabel(sprintf(<span class="string">'RF Frequency Change [%s]'</span>, c.Actuator.UnitsString));
2140153     <span class="keyword">end</span>   
2150154     hold off;
2160155     title([num2str(p(1)),<span class="string">' x (drf/rf)^2  + '</span>,num2str(p(2)),<span class="string">' x drf/rf  + '</span>,num2str(p(3))]);
2170156     ylabel(<span class="string">'Vertical Tune'</span>);
2180157     <span class="keyword">if</span> any(strcmpi(c.Monitor.Mode, {<span class="string">'Model'</span>,<span class="string">'Simulator'</span>}))
2190158         addlabel(1,0,sprintf(<span class="string">'%s (Model)'</span>, datestr(c.TimeStamp,0)));
2200159     <span class="keyword">else</span>
2210160         addlabel(1,0,sprintf(<span class="string">'%s'</span>, datestr(c.TimeStamp,0)));       
2220161     <span class="keyword">end</span>
2230162     orient tall
2240163     
2250164 <span class="keyword">elseif</span> strcmpi(Units, <span class="string">'Physics'</span>)
2260165     <span class="keyword">if</span> strcmpi(PhysicsString,<span class="string">'Hardware'</span>)
2270166         <span class="comment">% Change units to hardware</span>
2280167         <span class="comment">%MCF = c.MCF;</span>
2290168         <span class="comment">%RF0 = c.Actuator.Data;</span>
2300169         <span class="comment">%p = polyfit(DeltaRF, Tune(1,:), 2);</span>
2310170         <span class="comment">%c.PolyFit(1,:) = p;</span>
2320171         <span class="comment">%c.Data(1,1) = p(2);</span>
2330172         <span class="comment">%p = polyfit(DeltaRF, Tune(2,:), 2);</span>
2340173         <span class="comment">%c.PolyFit(2,:) = p;</span>
2350174         <span class="comment">%c.Data(2,1) = p(2);</span>
2360175         <span class="comment">%c.Units = 'Hardware';</span>
2370176         <span class="comment">%c.UnitsString = c.Actuator.UnitsString;</span>
2380177         c = <a href="physics2hw.html" class="code" title="function S = physics2hw(Family, Field, value, DeviceList, Energy)">physics2hw</a>(c);
2390178         
2400179         <a href="plotchro.html" class="code" title="function [c, FileName] = plotchro(varargin)">plotchro</a>(c);
2410180         <span class="keyword">return</span>
2420181     <span class="keyword">end</span>
2430182
2440183     <span class="comment">%================================================</span>
2450184     <span class="comment">% Tune shift vs. momentum</span>
2460185     <span class="comment">%================================================</span>
2470186     x2 = linspace(min(c.dp), max(c.dp), 1000);     <span class="comment">%create momentum value interval</span>
2480187     
2490188     clf reset
2500189     set(gcf,<span class="string">'NumberTitle'</span>,<span class="string">'on'</span>,<span class="string">'Name'</span>,<span class="string">'Tune Shift vs. Momentum '</span>);
2510190     subplot(2,1,1);
2520191     plot(100*c.dp,Tune(1,:), <span class="string">'ob'</span>,<span class="string">'markersize'</span>,2);   <span class="comment">%raw data</span>
2530192     hold on;
2540193     p = c.PolyFit(1,:);
2550194     y = polyval(p, x2);                          <span class="comment">%evaluate polynomial on equispaced points x2</span>
2560195     plot(100*x2, y, <span class="string">'-b'</span>);                       <span class="comment">%plot polynomial fit</span>
2570196     hold off;
2580197     xlabel(<span class="string">'Momentum Shift, dp/p [%]'</span>)
2590198     title([num2str(p(1)),<span class="string">' (dp/p)^2  + '</span>,num2str(p(2)),<span class="string">' dp/p  + '</span>,num2str(p(3))]);
2600199     ylabel(<span class="string">'Horizontal Tune'</span>);
2610200     
2620201     subplot(2,1,2);
2630202     plot(100*c.dp,Tune(2,:),<span class="string">'ob'</span>,<span class="string">'markersize'</span>,2);
2640203     hold on;
2650204     p = c.PolyFit(2,:);
2660205     y = polyval(p, x2);
2670206     plot(100*x2, y, <span class="string">'-b'</span>);
2680207     hold off;
2690208     
2700209     xlabel(<span class="string">'Momentum Shift, dp/p [%]'</span>)
2710210     title([num2str(p(1)),<span class="string">' (dp/p)^2  + '</span>,num2str(p(2)),<span class="string">' dp/p  + '</span>,num2str(p(3))]);
2720211     ylabel(<span class="string">'Vertical Tune'</span>);
2730212     <span class="keyword">if</span> any(strcmpi(c.Monitor.Mode, {<span class="string">'Model'</span>,<span class="string">'Simulator'</span>}))
2740213         addlabel(1,0,sprintf(<span class="string">'%s (Model)'</span>, datestr(c.TimeStamp,0)));
2750214     <span class="keyword">else</span>
2760215         addlabel(1,0,sprintf(<span class="string">'%s'</span>, datestr(c.TimeStamp,0)));       
2770216     <span class="keyword">end</span>
2780217     <span class="comment">%addlabel(1,0,sprintf('%s', datestr(c.TimeStamp,0)));</span>
2790218     orient tall
2800219     
2810220 <span class="keyword">else</span>
2820221     error(<span class="string">'UnitsString unknown type'</span>);
2830222 <span class="keyword">end</span></pre></div>
284<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>
285</body>
286</html>
Note: See TracBrowser for help on using the repository browser.