source: MML/trunk/machine/SOLEIL/StorageRing/bpm/bpm2quad4bba.m @ 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: 6.5 KB
Line 
1function [Quadstruct] = bpm2quad4bba(BPMFamily, BPMDev, LocationFlag)
2%BPM2QUAD - Returns the nearest quadrupole to the specified BPM
3%  [QUADFamily, QUADDeviceList, DeltaSpos, PhaseAdvance] = bpm2quad(BPMFamily, BPMDeviceList, LocationFlag)
4%
5%  INPUTS
6%  1. BPMFamily - BPM family (1 family only (row string))
7%  2. BPMDeviceList - BPM device list
8%  3. LocationFlag - Only search quadrupole positions that are 'UpStream' or 'DownStream' {Default for transport lines}
9%                    of the BPM.  Else no location preference is used {Default for rings}.
10%
11%  OUTPUTS
12%  1. QUADFamily
13%  2. QUADDeviceList
14%  3. DeltaSpos - Distance from the BPM to the Quad 
15%
16%  See Also quad2bpm
17
18%
19%  Written by Laurent S. Nadolski
20
21% List device list of BBA BPM sharing same quad
22
23BPM4Q4Q5DevList=[
24    1 4
25    4 4
26    5 4
27    8 4
28    9 4
29    12 4
30    13 4
31    16 4
32    ];
33
34BPM4Q10DevList =[
35   2 4
36   2 7
37   3 4
38   3 7
39   6 4
40   6 7
41   7 4
42   7 7
43  10 4
44  10 7
45  11 4
46  11 7
47  14 4
48  14 7
49  15 4
50  15 7
51  ];
52
53BPM4Q12DevList =[
54  13 8
55  13 9
56  ];
57
58if nargin < 1
59    BPMFamily = [];
60end
61if isempty(BPMFamily)
62    BPMFamily = gethbpmfamily;
63end
64
65if nargin < 2
66    BPMDev = [];
67end
68if isempty(BPMFamily)
69    BPMDev = family2dev(BPMFamily);
70    BPMDev = BPMDev(1,:);
71end
72
73if nargin < 3
74    LocationFlag = '';
75end
76if isempty(LocationFlag)
77    if any(strcmpi(getfamilydata('MachineType'), {'Transport','Transportline','Linac'}))
78        LocationFlag = 'UpStream';
79    else
80        LocationFlag = 'Any';
81    end
82end
83
84
85% Get all the quad families
86QUADFamilyList = getfamilylist;
87[tmp, i] = ismemberof(QUADFamilyList, 'QUAD');
88if ~isempty(i)
89    QUADFamilyList = QUADFamilyList(i,:);
90else
91    QUADFamilyList = ['QF','QD'];
92end
93
94
95% Find the Quad next to the BPM
96
97% BPMdev  Quad1Fam Quad1dev Quad2 Quad2dev
98% Question: Special field to add to SOLEILinit?
99%  Example: BPM.BBA
100
101Idx = dev2elem('BPMx', BPMDev);
102
103varlist = {
104    [ 1 2] 'Q1 ' [ 1 1] ''    []
105    [ 1 3] 'Q2 ' [ 1 1] 'Q3 ' [1 1]
106    [ 1 4] 'Q4 ' [ 1 1] 'Q5 ' [1 1]
107    [ 1 5] 'Q5 ' [ 1 2] '' []
108    [ 1 6] 'Q4 ' [ 1 2] '' []
109    [ 1 7] 'Q6 ' [ 1 1] 'Q7' [1 1]
110    [ 2 1] 'Q8 ' [ 1 1] '' []
111    [ 2 2] 'Q8 ' [ 2 1] '' []
112    [ 2 3] 'Q7 ' [ 2 1] 'Q6' [2 1]
113    [ 2 4] 'Q9 ' [ 2 1] '' []
114    [ 2 5] 'Q10' [ 2 1] '' []
115    [ 2 6] 'Q10' [ 2 2] '' []
116    [ 2 7] 'Q9 ' [ 2 2] '' []
117    [ 2 8] 'Q6 ' [ 2 2] 'Q7' [2 2]
118    [ 3 1] 'Q8 ' [ 2 2] '' []
119    [ 3 2] 'Q8 ' [ 3 1] '' []
120    [ 3 3] 'Q7 ' [ 3 1] 'Q6' [3 1]
121    [ 3 4] 'Q9 ' [ 3 1] '' []
122    [ 3 5] 'Q10' [ 3 1] '' []
123    [ 3 6] 'Q10' [ 3 2] '' []
124    [ 3 7] 'Q9 ' [ 3 2] '' []
125    [ 3 8] 'Q6 ' [ 3 2] 'Q7' [3 2]
126    [ 4 1] 'Q8 ' [ 3 2] ''    []
127    [ 4 2] 'Q8 ' [ 4 1] ''    []
128    [ 4 3] 'Q7 ' [ 4 1] 'Q6 ' [4 1]
129    [ 4 4] 'Q4 ' [ 4 1] 'Q5 ' [4 1]
130    [ 4 5] 'Q5 ' [ 4 2] '' []
131    [ 4 6] 'Q4 ' [ 4 2] '' []
132    [ 4 7] 'Q3 ' [ 4 1] 'Q2' [4 1]   
133    [ 5 1] 'Q1 ' [ 4 1] ''    []
134    [ 5 2] 'Q1 ' [ 5 1] ''    []
135    [ 5 3] 'Q2 ' [ 5 1] 'Q3 ' [5 1]
136    [ 5 4] 'Q4 ' [ 5 1] 'Q5 ' [5 1]
137    [ 5 5] 'Q5 ' [ 5 2] '' []
138    [ 5 6] 'Q4 ' [ 5 2] '' []
139    [ 5 7] 'Q6 ' [ 5 1] 'Q7' [5 1]
140    [ 6 1] 'Q8 ' [ 5 1] '' []
141    [ 6 2] 'Q8 ' [ 6 1] '' []
142    [ 6 3] 'Q7 ' [ 6 1] 'Q6' [6 1]
143    [ 6 4] 'Q9 ' [ 6 1] '' []
144    [ 6 5] 'Q10' [ 6 1] '' []
145    [ 6 6] 'Q10' [ 6 2] '' []
146    [ 6 7] 'Q9 ' [ 6 2] '' []
147    [ 6 8] 'Q6 ' [ 6 2] 'Q7' [6 2]
148    [ 7 1] 'Q8 ' [ 6 2] '' []
149    [ 7 2] 'Q8 ' [ 7 1] '' []
150    [ 7 3] 'Q7 ' [ 7 1] 'Q6' [7 1]
151    [ 7 4] 'Q9 ' [ 7 1] '' []
152    [ 7 5] 'Q10' [ 7 1] '' []
153    [ 7 6] 'Q10' [ 7 2] '' []
154    [ 7 7] 'Q9 ' [ 7 2] '' []
155    [ 7 8] 'Q6 ' [ 7 2] 'Q7' [7 2]
156    [ 8 1] 'Q8 ' [ 7 2] ''    []
157    [ 8 2] 'Q8 ' [ 8 1] ''    []
158    [ 8 3] 'Q7 ' [ 8 1] 'Q6 ' [8 1]
159    [ 8 4] 'Q4 ' [ 8 1] 'Q5 ' [8 1]
160    [ 8 5] 'Q5 ' [ 8 2] '' []
161    [ 8 6] 'Q4 ' [ 8 2] '' []
162    [ 8 7] 'Q3 ' [ 8 1] 'Q2' [8 1]   
163    [ 9 1] 'Q1 ' [ 8 1] ''    []
164    [ 9 2] 'Q1 ' [ 9 1] ''    []
165    [ 9 3] 'Q2 ' [ 9 1] 'Q3 ' [9 1]
166    [ 9 4] 'Q4 ' [ 9 1] 'Q5 ' [9 1]
167    [ 9 5] 'Q5 ' [ 9 2] '' []
168    [ 9 6] 'Q4 ' [ 9 2] '' []
169    [ 9 7] 'Q6 ' [ 9 1] 'Q7' [9 1]
170    [10 1] 'Q8 ' [ 9 1] '' []
171    [10 2] 'Q8 ' [10 1] '' []
172    [10 3] 'Q7 ' [10 1] 'Q6' [10 1]
173    [10 4] 'Q9 ' [10 1] '' []
174    [10 5] 'Q10' [10 1] '' []
175    [10 6] 'Q10' [10 2] '' []
176    [10 7] 'Q9 ' [10 2] '' []
177    [10 8] 'Q6 ' [10 2] 'Q7' [10 2]
178    [11 1] 'Q8 ' [10 2] '' []
179    [11 2] 'Q8 ' [11 1] '' []
180    [11 3] 'Q7 ' [11 1] 'Q6' [11 1]
181    [11 4] 'Q9 ' [11 1] '' []
182    [11 5] 'Q10' [11 1] '' []
183    [11 6] 'Q10' [11 2] '' []
184    [11 7] 'Q9 ' [11 2] '' []
185    [11 8] 'Q6 ' [11 2] 'Q7' [11 2]
186    [12 1] 'Q8 ' [11 2] ''    []
187    [12 2] 'Q8 ' [12 1] ''    []
188    [12 3] 'Q7 ' [12 1] 'Q6 ' [12 1]
189    [12 4] 'Q4 ' [12 1] 'Q5 ' [12 1]
190    [12 5] 'Q5 ' [12 2] '' []
191    [12 6] 'Q4 ' [12 2] '' []
192    [12 7] 'Q3 ' [12 1] 'Q2' [12 1]   
193    [13 1] 'Q1 ' [12 1] ''    []
194    [13 8] 'Q11' [13 1] ''    []
195    [13 9] 'Q12' [13 1] 'Q11' [13 2]
196    [13 2] 'Q1 ' [13 1] ''    []
197    [13 3] 'Q2 ' [13 1] 'Q3 ' [13 1]
198    [13 4] 'Q4 ' [13 1] 'Q5 ' [13 1]
199    [13 5] 'Q5 ' [13 2] '' []
200    [13 6] 'Q4 ' [13 2] '' []
201    [13 7] 'Q6 ' [13 1] 'Q7' [13 1]
202    [14 1] 'Q8 ' [13 1] '' []
203    [14 2] 'Q8 ' [14 1] '' []
204    [14 3] 'Q7 ' [14 1] 'Q6' [14 1]
205    [14 4] 'Q9 ' [14 1] '' []
206    [14 5] 'Q10' [14 1] '' []
207    [14 6] 'Q10' [14 2] '' []
208    [14 7] 'Q9 ' [14 2] '' []
209    [14 8] 'Q6 ' [14 2] 'Q7' [14 2]
210    [15 1] 'Q8 ' [14 2] '' []
211    [15 2] 'Q8 ' [15 1] '' []
212    [15 3] 'Q7 ' [15 1] 'Q6' [15 1]
213    [15 4] 'Q9 ' [15 1] '' []
214    [15 5] 'Q10' [15 1] '' []
215    [15 6] 'Q10' [15 2] '' []
216    [15 7] 'Q9 ' [15 2] '' []
217    [15 8] 'Q6 ' [15 2] 'Q7' [15 2]
218    [16 1] 'Q8 ' [15 2] ''    []
219    [16 2] 'Q8 ' [16 1] ''    []
220    [16 3] 'Q7 ' [16 1] 'Q6 ' [16 1]
221    [16 4] 'Q4 ' [16 1] 'Q5 ' [16 1]
222    [16 5] 'Q5 ' [16 2] '' []
223    [16 6] 'Q4 ' [16 2] '' []
224    [16 7] 'Q3 ' [16 1] 'Q2' [16 1]   
225    [ 1 1] 'Q1 ' [16 1] ''    []
226    };
227
228% rechecher avec findrowindex
229% idem dan getbpmbycell
230Idx = findrowindex(BPMDev, reshape([varlist{:,1}],[2,length([varlist{:,1}])/2])');
231for k = 1:size(Idx,1)
232    if isempty(varlist{Idx(k),4})
233        fprintf('BPM(%2d,%2d)   %s(%2d,%2d)\n', varlist{Idx(k),1}, varlist{Idx(k),2}, varlist{Idx(k),3});
234    else
235        fprintf('BPM(%2d,%2d)   %s(%2d,%2d)   %s(%2d,%2d)\n', varlist{Idx(k),1}, varlist{Idx(k),2}, varlist{Idx(k),3}, varlist{Idx(k),4}, varlist{Idx(k),5});
236    end 
237        Quadstruct(k).Family1 = deblank(varlist{Idx(k),2});
238        Quadstruct(k).DevList1    = varlist{Idx(k),3};
239        Quadstruct(k).Family2 = deblank(varlist{Idx(k),4});
240        Quadstruct(k).DevList2    = varlist{Idx(k),5};
241end
242 
243%function contructOutput(1)
Note: See TracBrowser for help on using the repository browser.