1 | function maille_LT1 |
---|
2 | % Lattice definition file |
---|
3 | % Lattice for LT1 |
---|
4 | % |
---|
5 | % Laurent S. Nadolski, SOLEIL, 03/04 |
---|
6 | |
---|
7 | global FAMLIST THERING GLOBVAL |
---|
8 | GLOBVAL.E0 = 100e6; |
---|
9 | GLOBVAL.LatticeFile = mfilename; |
---|
10 | FAMLIST = cell(0); |
---|
11 | disp(['** Loading lattice in ' mfilename]) |
---|
12 | |
---|
13 | %% markers |
---|
14 | %% Ecrans |
---|
15 | ECR1 = marker('BPM', 'IdentityPass'); |
---|
16 | ECR2 = marker('BPM', 'IdentityPass'); |
---|
17 | ECR3 = marker('BPM', 'IdentityPass'); |
---|
18 | ECR4 = marker('BPM', 'IdentityPass'); |
---|
19 | %% Collimateurs |
---|
20 | COLL1 = marker('COLL1', 'IdentityPass'); |
---|
21 | COLL2 = marker('COLL2', 'IdentityPass'); |
---|
22 | %% perturbateurs |
---|
23 | KICKQD = marker('KICKQD', 'IdentityPass'); |
---|
24 | PERTM = marker('PERTM', 'IdentityPass'); |
---|
25 | %% divers |
---|
26 | FIN = marker('FIN', 'IdentityPass'); |
---|
27 | DEBUT = marker('DEBUT', 'IdentityPass'); |
---|
28 | |
---|
29 | % DRIFT SPACES |
---|
30 | |
---|
31 | SDL1 = drift('SDL1', 1.119000, 'DriftPass'); |
---|
32 | SDL1A = drift('SDL1A', 0.550000, 'DriftPass'); |
---|
33 | SDL2 = drift('SDL2', 0.180000, 'DriftPass'); |
---|
34 | SDL2B = drift('SDL2B', 0.674150, 'DriftPass'); |
---|
35 | SDL3 = drift('SDL3', 0.180000, 'DriftPass'); |
---|
36 | SDL3B = drift('SDL3B', 2.220000, 'DriftPass'); |
---|
37 | SDL4 = drift('SDL4', 0.180000, 'DriftPass'); |
---|
38 | SDL4B = drift('SDL4B', 0.770000, 'DriftPass'); |
---|
39 | SDL5 = drift('SDL5', 0.180000, 'DriftPass'); |
---|
40 | SDL5B = drift('SDL5B', 0.570000, 'DriftPass'); |
---|
41 | SDL5H1= drift('SDL5H1', 0.180000, 'DriftPass'); |
---|
42 | SDL5H2= drift('SDL5H2', 0.570000, 'DriftPass'); |
---|
43 | SDL5C = drift('SDL5C', 0.300000, 'DriftPass'); |
---|
44 | SDL6 = drift('SDL6', 1.983680, 'DriftPass'); |
---|
45 | SDL6B = drift('SDL6B', 0.380000, 'DriftPass'); |
---|
46 | SDL6T = drift('SDL6T', 0.350000, 'DriftPass'); |
---|
47 | SDL7 = drift('SDL7', 0.130000, 'DriftPass'); |
---|
48 | SDL7B = drift('SDL7B', 0.971910, 'DriftPass'); |
---|
49 | SDL8 = drift('SDL8', 0.180000, 'DriftPass'); |
---|
50 | SDL8B = drift('SDL8B', 0.300000, 'DriftPass'); |
---|
51 | SDL9 = drift('SDL9', 0.300000, 'DriftPass'); |
---|
52 | SDL9B = drift('SDL9B', 0.180000, 'DriftPass'); |
---|
53 | SDL0 = drift('SDL0', 0.243340, 'DriftPass'); |
---|
54 | SDL0B = drift('SDL0B', 0.500000, 'DriftPass'); |
---|
55 | SDL0B1= drift('SDL0B1', 0.500000, 'DriftPass'); |
---|
56 | SDL0C = drift('SDL0C', 2.393090, 'DriftPass'); |
---|
57 | SBOO1 = drift('SBOO1', 1.294100, 'DriftPass'); |
---|
58 | SBOO2 = drift('SBOO2', 0.764434, 'DriftPass'); |
---|
59 | SBOO3 = drift('SBOO3', 0.150000, 'DriftPass'); |
---|
60 | SBOO4 = drift('SBOO4', 2.000000, 'DriftPass'); |
---|
61 | PERTEBR = drift('PERTEBR', 0.130000, 'DriftPass'); |
---|
62 | PERTELM = drift('PERTELM', 0.30000, 'DriftPass'); |
---|
63 | PERTSLM = drift('PERTSLM', 0.30000, 'DriftPass'); |
---|
64 | PERTSBR = drift('PERTSBR', 0.130000, 'DriftPass'); |
---|
65 | |
---|
66 | % QUADRUPOLES |
---|
67 | L= 0.15/2; |
---|
68 | QP1 = quadrupole('QP1', L, 4.17582 , 'QuadLinearPass'); |
---|
69 | QP2 = quadrupole('QP2', L, -2.78267 , 'QuadLinearPass'); |
---|
70 | QP3 = quadrupole('QP3', L, -2.61001 , 'QuadLinearPass'); |
---|
71 | QP4 = quadrupole('QP4', L, 4.29826 , 'QuadLinearPass'); |
---|
72 | QP5 = quadrupole('QP5', L, 4.94250 , 'QuadLinearPass'); |
---|
73 | QP6 = quadrupole('QP6', L, -4.94777 , 'QuadLinearPass'); |
---|
74 | QP7 = quadrupole('QP7', L, 4.92238 , 'QuadLinearPass'); |
---|
75 | QDBOO= quadrupole('QDBOO', 0.2, -0.891375 , 'QuadLinearPass'); |
---|
76 | |
---|
77 | % Q1 = [QP1 QP1]; |
---|
78 | % Q2 = [QP2 QP2]; |
---|
79 | % Q3 = [QP3 QP3]; |
---|
80 | % Q4 = [QP4 QP4]; |
---|
81 | % Q5 = [QP5 QP5]; |
---|
82 | % Q6 = [QP6 QP6]; |
---|
83 | % Q7 = [QP7 QP7]; |
---|
84 | %% EN attente d'éléments coupés en deux |
---|
85 | L= 0.15; |
---|
86 | Q1 = quadrupole('QP', L, 4.17582 , 'QuadLinearPass'); |
---|
87 | Q2 = quadrupole('QP', L, -2.78267 , 'QuadLinearPass'); |
---|
88 | Q3 = quadrupole('QP', L, -2.61001 , 'QuadLinearPass'); |
---|
89 | Q4 = quadrupole('QP', L, 4.29826 , 'QuadLinearPass'); |
---|
90 | Q5 = quadrupole('QP', L, 4.94250 , 'QuadLinearPass'); |
---|
91 | Q6 = quadrupole('QP', L, -4.94777 , 'QuadLinearPass'); |
---|
92 | Q7 = quadrupole('QP', L, 4.92238 , 'QuadLinearPass'); |
---|
93 | |
---|
94 | |
---|
95 | %% Vertical Correctors |
---|
96 | CV = corrector('COR',0.0,[0 0],'CorrectorPass'); |
---|
97 | CV1 = corrector('CV1',0.0,[0 0],'CorrectorPass'); |
---|
98 | CV2 = corrector('CV2',0.0,[0 0],'CorrectorPass'); |
---|
99 | CV3 = corrector('CV3',0.0,[0 0],'CorrectorPass'); |
---|
100 | |
---|
101 | %% Horizontal Correctors |
---|
102 | CH = corrector('CH',0.0,[0 0],'CorrectorPass'); |
---|
103 | CH1 = corrector('CH1',0.0,[0 0],'CorrectorPass'); |
---|
104 | CH2 = corrector('CH2',0.0,[0 0],'CorrectorPass'); |
---|
105 | CH3 = corrector('CH3',0.0,[0 0],'CorrectorPass'); |
---|
106 | CH4 = corrector('CH4',0.0,[0 0],'CorrectorPass'); |
---|
107 | |
---|
108 | % DIPOLES |
---|
109 | % {** 1.3815 factor to fit with BETA ??? strange **} |
---|
110 | theta = -15*pi/180; |
---|
111 | fullgap = 0.105*0.724*2/6*1.3815; |
---|
112 | BEND = rbend2('BEND', 0.30, theta, theta/2, theta/2, 0.0, ... |
---|
113 | fullgap,'BendLinearFringeTiltPass'); |
---|
114 | |
---|
115 | % {** septa booster **} |
---|
116 | % beta_gap=0.03/6; |
---|
117 | % tracy_gap=beta_gap*0.724*2; |
---|
118 | theta = -7.5*pi/180; |
---|
119 | fullgap= 0.03/6*0.724*2; %*1.3815; |
---|
120 | L = 0.30; |
---|
121 | SEP = rbend2('SEP', L, theta, theta/2, theta/2, 0.0, fullgap, 'BendLinearFringeTiltPass'); |
---|
122 | SEPup = rbend2('SEPup', L/2, theta/2, theta/2, 0.0, 0.0, fullgap, 'BendLinearFringeTiltPass'); |
---|
123 | SEPdown = rbend2('SEPdown', L/2, theta/2, 0.0, theta/2, 0.0, fullgap, 'BendLinearFringeTiltPass'); |
---|
124 | |
---|
125 | % Begin Lattice |
---|
126 | %% Superperiods |
---|
127 | LINE2 = [ ... |
---|
128 | SDL1 SDL1A QP1 QP1 SDL2 CH1 SDL2B ... |
---|
129 | QP2 QP2 SDL3 CV1 SDL3B QP3 QP3 ... |
---|
130 | SDL4 SDL4B QP4 QP4 SDL5H1 CH2 SDL5H2 ... |
---|
131 | ECR1 SDL5C BEND SDL6 COLL1 SDL6B COLL2 ... |
---|
132 | SDL6T QP5 QP5 SDL7 CH3 SDL7B CV2 ... |
---|
133 | SDL8 QP6 QP6 SDL8B BEND SDL9 ECR2 ... |
---|
134 | SDL0 QP7 QP7 SDL9B SDL0C CV3 SDL0B1 ... |
---|
135 | ECR3 SDL0B SEPup CH4 SEPdown SBOO1 QDBOO ... |
---|
136 | KICKQD QDBOO ... |
---|
137 | SBOO2 SBOO3 PERTEBR PERTELM PERTM PERTSLM PERTSBR ... |
---|
138 | SBOO3 ECR4 SBOO4 |
---|
139 | ]; |
---|
140 | |
---|
141 | LINE = [ ... |
---|
142 | SDL1 SDL1A Q1 SDL2 CH SDL2B ... |
---|
143 | Q2 SDL3 CV SDL3B Q3 ... |
---|
144 | SDL4 SDL4B Q4 SDL5H1 CH SDL5H2 ... |
---|
145 | ECR1 SDL5C BEND SDL6 COLL1 SDL6B COLL2 ... |
---|
146 | SDL6T Q5 SDL7 CH SDL7B CV ... |
---|
147 | SDL8 Q6 SDL8B BEND SDL9 ECR2 ... |
---|
148 | SDL0 Q7 SDL9B SDL0C CV SDL0B1 ... |
---|
149 | ECR3 SDL0B SEPup CH SEPdown SBOO1 QDBOO ... |
---|
150 | KICKQD QDBOO ... |
---|
151 | SBOO2 SBOO3 PERTEBR PERTELM PERTM PERTSLM PERTSBR ... |
---|
152 | SBOO3 ECR4 SBOO4 |
---|
153 | ]; |
---|
154 | |
---|
155 | ELIST = [DEBUT, LINE, FIN]; |
---|
156 | |
---|
157 | THERING=cell(size(ELIST)); |
---|
158 | for i=1:length(THERING) |
---|
159 | THERING{i} = FAMLIST{ELIST(i)}.ElemData; |
---|
160 | FAMLIST{ELIST(i)}.NumKids=FAMLIST{ELIST(i)}.NumKids+1; |
---|
161 | FAMLIST{ELIST(i)}.KidsList = [FAMLIST{ELIST(i)}.KidsList i]; |
---|
162 | end |
---|
163 | |
---|
164 | %% compute total length |
---|
165 | |
---|
166 | L0_tot=0; |
---|
167 | for i=1:length(THERING) |
---|
168 | L0_tot=L0_tot+THERING{i}.Length; |
---|
169 | end |
---|
170 | |
---|
171 | disp('** Done **'); |
---|