source: MML/trunk/machine/SOLEIL/Booster/updateatindex.m @ 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: 3.9 KB
Line 
1function updateatindex
2%UPDATEATINDEX - Updates the AT indices in the MiddleLayer with the present AT lattice (THERING)
3
4%
5% Adapted by Laurent S. Nadolski
6
7global THERING
8
9%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10% Append Accelerator Toolbox information %
11%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12
13% Since changes in the AT model could change the AT indexes, etc,
14% It's best to regenerate all the model indices whenever a model is loaded
15
16% Sort by family first (findcells is linear and slow)
17Indices = atindex(THERING);
18
19AO = getao;
20
21% BPMS
22try
23    ifam = 'BPMx';
24    AO.(ifam).AT.ATType = 'X';
25    AO.(ifam).AT.ATIndex = Indices.BPM(:); % findcells(THERING,'FamName','BPM')';
26    AO.(ifam).Position = findspos(THERING, AO.(ifam).AT.ATIndex)';
27
28    ifam = 'BPMz';
29    AO.(ifam).AT.ATType = 'Z';
30    AO.(ifam).AT.ATIndex = Indices.BPM(:); % findcells(THERING,'FamName','BPM')';
31    AO.(ifam).Position = findspos(THERING, AO.(ifam).AT.ATIndex)';
32catch
33    warning('BPM family not found in the model.');
34end
35
36% CORRECTORS
37try
38    %% HORIZONTAL CORRECTORS
39    ifam = 'HCOR';
40    AO.(ifam).AT.ATType  = ifam;
41    AO.(ifam).AT.ATIndex = Indices.(ifam)(:);
42    AO.(ifam).AT.ATIndex = AO.(ifam).AT.ATIndex(AO.(ifam).ElementList);   %not all correctors used
43    AO.(ifam).Position   = findspos(THERING, AO.(ifam).AT.ATIndex(:,1))';
44
45    %% VERTICAL CORRECTORS
46    ifam = 'VCOR';
47    AO.(ifam).AT.ATType  = ifam;
48    AO.(ifam).AT.ATIndex = Indices.(ifam)(:);
49    AO.(ifam).AT.ATIndex = AO.(ifam).AT.ATIndex(AO.(ifam).ElementList);   %not all correctors used
50    AO.(ifam).Position   = findspos(THERING, AO.(ifam).AT.ATIndex(:,1))';
51catch
52    warning('Corrector family not found in the model.');
53end
54
55
56% QUADRUPOLES
57try
58    ifam = 'QF';
59    AO.(ifam).AT.ATType  = 'QUAD';
60    AO.(ifam).AT.ATIndex = Indices.QPF(:);
61    AO.(ifam).Position   = findspos(THERING, AO.(ifam).AT.ATIndex);
62    AO.(ifam).AT.ATParameterGroup{1} = mkparamgroup(THERING,AO.(ifam).AT.ATIndex,'K');
63
64    ifam = 'QD';
65    AO.(ifam).AT.ATType  = 'QUAD';
66    AO.(ifam).AT.ATIndex = Indices.QPD(:);
67    AO.(ifam).Position   = findspos(THERING, AO.(ifam).AT.ATIndex);
68    AO.(ifam).AT.ATParameterGroup{1} = mkparamgroup(THERING,AO.(ifam).AT.ATIndex,'K');
69catch
70    warning('%s family not found in the model.',ifam);
71end
72
73% SEXTUPOLES
74try
75    ifam = 'SF';
76    AO.(ifam).AT.ATType  = 'SEXT';
77    AO.(ifam).AT.ATIndex = Indices.SXF(:);
78    AO.(ifam).Position   = findspos(THERING, AO.(ifam).AT.ATIndex);
79    AO.(ifam).AT.ATParameterGroup{1} = mkparamgroup(THERING,AO.(ifam).AT.ATIndex,'K2');
80
81    ifam = 'SD';
82    AO.(ifam).AT.ATType  = 'SEXT';
83    AO.(ifam).AT.ATIndex = Indices.SXD(:);
84    AO.(ifam).Position   = findspos(THERING, AO.(ifam).AT.ATIndex);
85    AO.(ifam).AT.ATParameterGroup{1} = mkparamgroup(THERING,AO.(ifam).AT.ATIndex,'S');
86catch
87    warning('%s family not found in the model.', ifam);
88end
89
90
91% BEND
92
93try
94    ifam = 'BEND';
95    AO.(ifam).AT.ATType  = ifam;
96    ATIndex = Indices.(ifam)(:);
97    AO.(ifam).AT.ATIndex = buildatindex(AO.(ifam).FamilyName, sort(ATIndex));
98    AO.(ifam).Position   = findspos(THERING, AO.(ifam).AT.ATIndex(:,1))';
99catch
100    warning('BEND family not found in the model.');
101end
102
103% RF CAVITY
104try
105    AO.RF.AT.ATType = 'RF Cavity';
106    AO.RF.AT.ATIndex = findcells(THERING,'Frequency')';
107    AO.RF.Position = findspos(THERING, AO.RF.AT.ATIndex(:,1))';
108catch
109    warning('RF cavity not found in the model.');
110end
111
112setao(AO);
113
114% Set TwissData at the start of TL1
115try
116    %warning('to be completed by Alex');
117    % BTS twiss parameters at the input
118    TwissData.alpha = [0 0]';
119    TwissData.beta  = [13.8467 2.2582]';
120    TwissData.mu    = [0 0]';
121    TwissData.ClosedOrbit = [0 0 0 0]';
122    TwissData.dP = 0;
123    TwissData.dL = 0;
124    TwissData.Dispersion  = [.06 0 0 0]';
125
126    setpvmodel('TwissData', '', TwissData);  % Same as, THERING{1}.TwissData = TwissData;
127
128catch
129    warning('Setting the twiss data parameters in the MML failed.');
130end
Note: See TracBrowser for help on using the repository browser.