1 | function LT2lattice |
---|
2 | % Lattice definition file |
---|
3 | % Lattice for LT2 |
---|
4 | % |
---|
5 | % Laurent S. Nadolski, SOLEIL, 03/04 |
---|
6 | % 17/01/06 Pass method for bend is obsolete in new AT |
---|
7 | |
---|
8 | global FAMLIST THERING GLOBVAL |
---|
9 | GLOBVAL.E0 = 2.75e9; % Ring energy |
---|
10 | GLOBVAL.LatticeFile = mfilename; |
---|
11 | FAMLIST = cell(0); |
---|
12 | disp(['** Loading lattice in ' mfilename]) |
---|
13 | |
---|
14 | %% markers |
---|
15 | %% Ecrans |
---|
16 | ECR1 = marker('BPM', 'IdentityPass'); |
---|
17 | ECR_EMIT = marker('BPM', 'IdentityPass'); |
---|
18 | ECR2 = marker('BPM', 'IdentityPass'); |
---|
19 | ECR3 = marker('BPM', 'IdentityPass'); |
---|
20 | BPM1 = marker('BPM', 'IdentityPass'); |
---|
21 | BPM2 = marker('BPM', 'IdentityPass'); |
---|
22 | BPM3 = marker('BPM', 'IdentityPass'); |
---|
23 | % %% perturbateurs |
---|
24 | % KICKQD = marker('KICKQD', 'IdentityPass'); |
---|
25 | % PERTM = marker('PERTM', 'IdentityPass'); |
---|
26 | % emittance |
---|
27 | EMIT = marker('EMITTANCE', 'IdentityPass'); |
---|
28 | %% divers |
---|
29 | FIN = marker('FIN', 'IdentityPass'); |
---|
30 | DEBUT = marker('DEBUT', 'IdentityPass'); |
---|
31 | |
---|
32 | %% DRIFT SPACES |
---|
33 | SD1 = drift('SD1', 0.100000E+00,'DriftPass'); |
---|
34 | SD2 = drift('SD2', 0.493000E+01,'DriftPass'); |
---|
35 | SD20 = drift('SD20', 0.116250E+01,'DriftPass'); |
---|
36 | %SD20A = drift('SD20A', 2.125,'DriftPass'); |
---|
37 | SD20A = drift('SD20A', 1.975,'DriftPass'); |
---|
38 | SD22A = drift('SD20A', 0.30,'DriftPass'); |
---|
39 | SD21 = drift('SD21', 0.354250E+01,'DriftPass'); |
---|
40 | %SD21A = drift('SD21A', 1.3201,'DriftPass'); |
---|
41 | SD21A = drift('SD21A', 1.1701,'DriftPass'); |
---|
42 | SD21AB = drift('SD21AB',0.554,'DriftPass'); |
---|
43 | SD21ABBP = drift('SD21ABBP', 0.350,'DriftPass'); |
---|
44 | SD22 = drift('SD22', 0.255500E+01,'DriftPass'); |
---|
45 | SD22B = drift('SD22B', 0.355900E+00,'DriftPass'); |
---|
46 | SD31 = drift('SD31', 0.100000E+01,'DriftPass'); |
---|
47 | SD32 = drift('SD32', 0.176000E+01,'DriftPass'); |
---|
48 | SD32A = drift('SD32A',0.210,'DriftPass'); |
---|
49 | SD33 = drift('SD33', 0.130000E+01,'DriftPass'); |
---|
50 | SD33A = drift('SD33A', 0.120000E+01,'DriftPass'); |
---|
51 | SD34 = drift('SD34', 0.310000E+01,'DriftPass'); |
---|
52 | SD4 = drift('SD4', 0.500000E+00,'DriftPass'); |
---|
53 | SD5 = drift('SD5', 0.100000E+01,'DriftPass'); |
---|
54 | SD5G = drift('SD5G', 0.775000E+00,'DriftPass'); |
---|
55 | SD5G1 = drift('SD5G1', 0.387500E+00,'DriftPass'); |
---|
56 | SD51 = drift('SD5G1', 0.500000E+00,'DriftPass'); |
---|
57 | SD6 = drift('SD6', 0.691715E+01,'DriftPass'); |
---|
58 | SD6A = drift('SD6A', 0.502831E+01,'DriftPass'); |
---|
59 | SD6AGBP = drift('SD6AGBP',0.450,'DriftPass'); |
---|
60 | SD6AG = drift('SD6AG', 0.435331E+01,'DriftPass'); |
---|
61 | SD6AB = drift('SD6AB', 0.300000E+00,'DriftPass'); |
---|
62 | SD6B = drift('SD6B', 0.151524E+01,'DriftPass'); |
---|
63 | SD61 = drift('SD61', 0.700000E+00,'DriftPass'); |
---|
64 | SD62 = drift('SD62', 0.700000E+00,'DriftPass'); |
---|
65 | SD62B = drift('SD62B', 0.600000E+00,'DriftPass'); |
---|
66 | SD63 = drift('SD63', 0.126260E+01,'DriftPass'); |
---|
67 | SD7 = drift('SD7', 0.147000E+01,'DriftPass'); |
---|
68 | SD7G = drift('SD7G', 0.124500E+01,'DriftPass'); |
---|
69 | SDG = drift('SDG', 0.225000E+00,'DriftPass'); |
---|
70 | SD8 = drift('SD8', 0.100000E+01,'DriftPass'); |
---|
71 | SD8G = drift('SD8G', 0.775000E+00,'DriftPass'); |
---|
72 | SD81 = drift('SD81', 0.500000E+00,'DriftPass'); |
---|
73 | SD9 = drift('SD9',0.100000E+01,'DriftPass'); |
---|
74 | SD10 = drift('SD10', 0.620000E+01,'DriftPass'); |
---|
75 | SD101 = drift('SD101', 0.291500E+01,'DriftPass'); |
---|
76 | SD102 = drift('SD102', 0.133530E+01,'DriftPass'); |
---|
77 | SD101E = drift('SD101E', 0.200000E+01,'DriftPass'); |
---|
78 | SD102E = drift('SD102E', 0.684700E+00,'DriftPass'); |
---|
79 | SD103 = drift('SD103', 0.181000E+01,'DriftPass'); |
---|
80 | SD11 = drift('SD11', 0.799977E+00,'DriftPass'); |
---|
81 | DRIFT = drift('DRIFT', 0.200000E+02,'DriftPass'); |
---|
82 | |
---|
83 | %% QUADRUPOLES |
---|
84 | L= 0.4; |
---|
85 | % focalisation sans les champs de fuite dans les dipoles |
---|
86 | % QP1 = quadrupole('QP', L, 0.1004788E+01 , 'QuadLinearPass'); |
---|
87 | % QP2 = quadrupole('QP', L, -.6306412E+00 , 'QuadLinearPass'); |
---|
88 | % QP3 = quadrupole('QP', L, -.7193035E+00 , 'QuadLinearPass'); |
---|
89 | % QP4 = quadrupole('QP', L, 0.1047543E+01 , 'QuadLinearPass'); |
---|
90 | % QP5 = quadrupole('QP', L, 0.9431380E+00 , 'QuadLinearPass'); |
---|
91 | % QP6 = quadrupole('QP', L, -.1152734E+01 , 'QuadLinearPass'); |
---|
92 | % QP7 = quadrupole('QP', L, 0.6238244E+00 , 'QuadLinearPass'); |
---|
93 | |
---|
94 | % % focalisation avec champ de fuite dans les dipoles - betax = 10.8 m entrée ANNEAU |
---|
95 | % QP1 = quadrupole('QP', L, 0.40371/L , 'QuadLinearPass'); |
---|
96 | % QP2 = quadrupole('QP', L, -.25738/L , 'QuadLinearPass'); |
---|
97 | % QP3 = quadrupole('QP', L, -.29429/L , 'QuadLinearPass'); |
---|
98 | % QP4 = quadrupole('QP', L, 0.42088/L , 'QuadLinearPass'); |
---|
99 | % QP5 = quadrupole('QP', L, 0.37640/L , 'QuadLinearPass'); |
---|
100 | % QP6 = quadrupole('QP', L, -.46712/L , 'QuadLinearPass'); |
---|
101 | % QP7 = quadrupole('QP', L, 0.25389/L , 'QuadLinearPass'); |
---|
102 | |
---|
103 | % focalisation avec champ de fuite dans les dipoles - betax = 3 m entrée ANNEAU |
---|
104 | QP1 = quadrupole('QP', L, 0.31134/L , 'QuadLinearPass'); |
---|
105 | QP2 = quadrupole('QP', L, -.18935/L , 'QuadLinearPass'); |
---|
106 | QP3 = quadrupole('QP', L, -.29986/L , 'QuadLinearPass'); |
---|
107 | QP4 = quadrupole('QP', L, 0.40561/L , 'QuadLinearPass'); |
---|
108 | QP5 = quadrupole('QP', L, 0.35898/L , 'QuadLinearPass'); |
---|
109 | QP6 = quadrupole('QP', L, -.43423/L , 'QuadLinearPass'); |
---|
110 | QP7 = quadrupole('QP', L, 0.21242/L , 'QuadLinearPass'); |
---|
111 | |
---|
112 | |
---|
113 | % Q1 = [QP1 QP1]; |
---|
114 | % Q2 = [QP2 QP2]; |
---|
115 | % Q3 = [QP3 QP3]; |
---|
116 | % Q4 = [QP4 QP4]; |
---|
117 | % Q5 = [QP5 QP5]; |
---|
118 | % Q6 = [QP6 QP6]; |
---|
119 | % Q7 = [QP7 QP7]; |
---|
120 | % EN attente d'elements coupes en deux |
---|
121 | |
---|
122 | |
---|
123 | %% Vertical Correctors |
---|
124 | CV = corrector('CV',0.0,[0 0],'CorrectorPass'); |
---|
125 | |
---|
126 | %% Horizontal Correctors |
---|
127 | CH = corrector('CH',0.0,[0 0],'CorrectorPass'); |
---|
128 | |
---|
129 | %% DIPOLES |
---|
130 | % {** 1.3815 factor to fit with BETA ??? strange **} |
---|
131 | theta = 0.193789E+00; % radian |
---|
132 | %fullgap = 0.105*0.724*2/6*1.3815; |
---|
133 | BEND = rbend('BEND', 1.052435, ... |
---|
134 | theta, theta/2, theta/2, 0.0, ... |
---|
135 | 'BendLinearPass'); |
---|
136 | |
---|
137 | %% {** septa booster **} |
---|
138 | % beta_gap=0.03/6; |
---|
139 | % tracy_gap=beta_gap*0.724*2; |
---|
140 | % theta = -7.5*pi/180; |
---|
141 | % fullgap= 0.03/6*0.724*2; %*1.3815; |
---|
142 | |
---|
143 | % SEP = rbend2('SEP', L, theta, theta/2, theta/2, 0.0, fullgap, 'BendLinearPass'); |
---|
144 | % SEPup = rbend2('SEPup', L/2, theta/2, theta/2, 0.0, 0.0, fullgap, 'BendLinearPass'); |
---|
145 | % SEPdown = rbend2('SEPdown', L/2, theta/2, 0.0, theta/2, 0.0, fullgap, 'BendLinearPass'); |
---|
146 | |
---|
147 | L_sep_A = 0.50; theta_sep_A = 0.550000E-01; % radian |
---|
148 | L_sep_P = 0.60; theta_sep_P = 0.2374000E-01; % radian |
---|
149 | SEP_A_1 = rbend('SEP_A_1', L_sep_A, theta_sep_A, 0, theta_sep_A, 0.0, 'BendLinearPass'); |
---|
150 | SEP_A_2 = rbend('SEP_A_2', L_sep_A, theta_sep_A, theta_sep_A,0, 0.0, 'BendLinearPass'); |
---|
151 | SEP_P = rbend('SEP_A_2', L_sep_P, theta_sep_P, theta_sep_P,0, 0.0, 'BendLinearPass'); |
---|
152 | |
---|
153 | |
---|
154 | % Begin Lattice |
---|
155 | %% Superperiods |
---|
156 | |
---|
157 | LINE1 = [... |
---|
158 | SD20A CV SD22A... |
---|
159 | CV SD21A SD21AB SD21ABBP ECR1 ... |
---|
160 | SD22B CH SDG QP1 SD31 ... |
---|
161 | QP2 SD32A SD32 BEND SD33 ... |
---|
162 | SD33A ECR_EMIT SD34 BEND SD4 ... |
---|
163 | QP3 SDG CV SD5G1 SD5G1 ... |
---|
164 | QP4 SDG CH SD6AGBP SD6AG ... |
---|
165 | SD6AB BPM1 SD6B BEND SD63 ... |
---|
166 | BEND SD7G CH SDG QP5 ... |
---|
167 | SD81 BPM2 SD81 QP6 SDG ... |
---|
168 | CV SD8G QP7 SD101E CV ... |
---|
169 | SD102E SD102 BPM3 ECR2 SD103 ... |
---|
170 | SEP_A_1 SD1 SEP_A_2 SD11 SEP_P ... |
---|
171 | ECR3... |
---|
172 | ]; |
---|
173 | |
---|
174 | |
---|
175 | |
---|
176 | ELIST = [DEBUT, LINE1, FIN]; |
---|
177 | |
---|
178 | buildlat(ELIST); |
---|
179 | |
---|
180 | % Set all magnets to same energy |
---|
181 | THERING = setcellstruct(THERING,'Energy',1:length(THERING),GLOBVAL.E0); |
---|
182 | |
---|
183 | disp('** Done **'); |
---|