1 | function LT1emittancelattice |
---|
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 | ECR0 = marker('BPM', 'IdentityPass'); |
---|
16 | ECR1 = marker('BPM', 'IdentityPass'); |
---|
17 | ECR2 = marker('BPM', 'IdentityPass'); |
---|
18 | ECR3 = marker('BPM', 'IdentityPass'); |
---|
19 | ECR4 = marker('BPM', 'IdentityPass'); |
---|
20 | %% Collimateur (fente d'analyse) |
---|
21 | COLL = marker('COLL', '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 | SDL1 = drift('SDL1', 1.2892000, 'DriftPass'); |
---|
31 | SDL1A = drift('SDL1A', 0.379800, 'DriftPass'); |
---|
32 | SDL2 = drift('SDL2', 0.180000, 'DriftPass'); |
---|
33 | SDL2B = drift('SDL2B', 0.674150, 'DriftPass'); |
---|
34 | SDL3 = drift('SDL3', 0.180000, 'DriftPass'); |
---|
35 | SDL3B = drift('SDL3B', 2.220000, 'DriftPass'); |
---|
36 | SDL4 = drift('SDL4', 0.180000, 'DriftPass'); |
---|
37 | SDL4B = drift('SDL4B', 0.770000, 'DriftPass'); |
---|
38 | SDL5H1= drift('SDL5H1', 0.180000, 'DriftPass'); |
---|
39 | SDL5H2= drift('SDL5H2', 0.505260, 'DriftPass'); |
---|
40 | SDL5C = drift('SDL5C', 0.364740, 'DriftPass'); |
---|
41 | SDL6 = drift('SDL6', 2.49248, 'DriftPass'); |
---|
42 | SDL6T = drift('SDL6T', 0.221200, 'DriftPass'); |
---|
43 | SDL7 = drift('SDL7', 0.130000, 'DriftPass'); |
---|
44 | SDL7B = drift('SDL7B', 0.971910, 'DriftPass'); |
---|
45 | SDL8 = drift('SDL8', 0.180000, 'DriftPass'); |
---|
46 | SDL8B = drift('SDL8B', 0.300000, 'DriftPass'); |
---|
47 | SDL9 = drift('SDL9', 0.344540, 'DriftPass'); |
---|
48 | SDL9B = drift('SDL9B', 0.180000, 'DriftPass'); |
---|
49 | SDL0 = drift('SDL0', 0.198800, 'DriftPass'); |
---|
50 | SDL0B = drift('SDL0B', 0.583820, 'DriftPass'); |
---|
51 | SDL0B1= drift('SDL0B1', 0.500000, 'DriftPass'); |
---|
52 | SDL0C = drift('SDL0C', 2.309270, 'DriftPass'); |
---|
53 | SBOO1 = drift('SBOO1', 1.294100, 'DriftPass'); |
---|
54 | SBOO2 = drift('SBOO2', 0.764434, 'DriftPass'); |
---|
55 | SBOO3 = drift('SBOO3', 0.150000, 'DriftPass'); |
---|
56 | SBOO4 = drift('SBOO4', 2.000000, 'DriftPass'); |
---|
57 | PERTEBR = drift('PERTEBR', 0.130000, 'DriftPass'); |
---|
58 | PERTELM = drift('PERTELM', 0.30000, 'DriftPass'); |
---|
59 | PERTSLM = drift('PERTSLM', 0.30000, 'DriftPass'); |
---|
60 | PERTSBR = drift('PERTSBR', 0.130000, 'DriftPass'); |
---|
61 | |
---|
62 | %% QUADRUPOLES |
---|
63 | L= 0.15/2; |
---|
64 | QP1 = quadrupole('QP', L, 4.17582 , 'QuadLinearPass'); |
---|
65 | QP2 = quadrupole('QP', L, -2.78267 , 'QuadLinearPass'); |
---|
66 | QP3 = quadrupole('QP', L, -2.61001 , 'QuadLinearPass'); |
---|
67 | QP4 = quadrupole('QP', L, 4.29826 , 'QuadLinearPass'); |
---|
68 | QP5 = quadrupole('QP', L, 4.94250 , 'QuadLinearPass'); |
---|
69 | QP6 = quadrupole('QP', L, -4.94777 , 'QuadLinearPass'); |
---|
70 | QP7 = quadrupole('QP', L, 4.92238 , 'QuadLinearPass'); |
---|
71 | QDBOO= quadrupole('QDBOO', 0.2, -0.891375 , 'QuadLinearPass'); |
---|
72 | |
---|
73 | % Q1 = [QP1 QP1]; |
---|
74 | % Q2 = [QP2 QP2]; |
---|
75 | % Q3 = [QP3 QP3]; |
---|
76 | % Q4 = [QP4 QP4]; |
---|
77 | % Q5 = [QP5 QP5]; |
---|
78 | % Q6 = [QP6 QP6]; |
---|
79 | % Q7 = [QP7 QP7]; |
---|
80 | % EN attente d'elements coupes en deux |
---|
81 | L= 0.15; |
---|
82 | Q1 = quadrupole('QP', L, 4.17582, 'QuadLinearPass'); |
---|
83 | Q2 = quadrupole('QP', L, -2.78267, 'QuadLinearPass'); |
---|
84 | Q3 = quadrupole('QP', L, -2.61001, 'QuadLinearPass'); |
---|
85 | Q4 = quadrupole('QP', L, 4.29826, 'QuadLinearPass'); |
---|
86 | Q5 = quadrupole('QP', L, 4.94250, 'QuadLinearPass'); |
---|
87 | Q6 = quadrupole('QP', L, -4.94777, 'QuadLinearPass'); |
---|
88 | Q7 = quadrupole('QP', L, 4.92238, 'QuadLinearPass'); |
---|
89 | |
---|
90 | |
---|
91 | %% Vertical Correctors |
---|
92 | CV = corrector('CV',0.0,[0 0],'CorrectorPass'); |
---|
93 | |
---|
94 | %% Horizontal Correctors |
---|
95 | CH = corrector('CH',0.0,[0 0],'CorrectorPass'); |
---|
96 | |
---|
97 | %% DIPOLES |
---|
98 | % {** 1.3815 factor to fit with BETA ??? strange **} |
---|
99 | %theta = -15*pi/180; |
---|
100 | theta = 0.001; |
---|
101 | fullgap = 0.105*0.724*2/6*1.3815; |
---|
102 | BEND = rbend2('BEND', 0.30, theta, theta/2, theta/2, 0.0, ... |
---|
103 | fullgap,'BendLinearFringeTiltPass'); |
---|
104 | |
---|
105 | %% {** septa booster **} |
---|
106 | % beta_gap=0.03/6; |
---|
107 | % tracy_gap=beta_gap*0.724*2; |
---|
108 | theta = -7.5*pi/180; |
---|
109 | fullgap= 0.03/6*0.724*2; %*1.3815; |
---|
110 | L = 0.30; |
---|
111 | SEP = rbend2('SEP', L, theta, theta/2, theta/2, 0.0, fullgap, 'BendLinearFringeTiltPass'); |
---|
112 | SEPup = rbend2('SEPup', L/2, theta/2, theta/2, 0.0, 0.0, fullgap, 'BendLinearFringeTiltPass'); |
---|
113 | SEPdown = rbend2('SEPdown', L/2, theta/2, 0.0, theta/2, 0.0, fullgap, 'BendLinearFringeTiltPass'); |
---|
114 | |
---|
115 | % Begin Lattice |
---|
116 | %% Superperiods |
---|
117 | LINE2 = [ ... |
---|
118 | SDL1 ECR0 SDL1A QP1 QP1 SDL2 CH ... |
---|
119 | SDL2B ... |
---|
120 | QP2 QP2 SDL3 CV SDL3B QP3 QP3 ... |
---|
121 | SDL4 SDL4B QP4 QP4 SDL5H1 CH SDL5H2 ... |
---|
122 | ECR1 SDL5C BEND SDL6 COLL ... |
---|
123 | SDL6T QP5 QP5 SDL7 CH SDL7B CV ... |
---|
124 | SDL8 QP6 QP6 SDL8B BEND SDL9 ECR2 ... |
---|
125 | SDL0 QP7 QP7 SDL9B SDL0C CV SDL0B1 ... |
---|
126 | ECR3 SDL0B SEPup SEPdown SBOO1 QDBOO ... |
---|
127 | KICKQD QDBOO ... |
---|
128 | SBOO2 SBOO3 PERTEBR PERTELM PERTM PERTSLM PERTSBR ... |
---|
129 | SBOO3 ECR4 SBOO4 |
---|
130 | ]; |
---|
131 | |
---|
132 | LINE = [ ... |
---|
133 | SDL1 ECR0 SDL1A Q1 SDL2 CH SDL2B ... |
---|
134 | Q2 SDL3 CV SDL3B Q3 ... |
---|
135 | SDL4 SDL4B Q4 SDL5H1 CH SDL5H2 ... |
---|
136 | ECR1 SDL5C BEND SDL6 COLL ... |
---|
137 | SDL6T Q5 SDL7 CH SDL7B CV ... |
---|
138 | SDL8 Q6 SDL8B BEND SDL9 ECR2 ... |
---|
139 | SDL0 Q7 SDL9B SDL0C CV SDL0B1 ... |
---|
140 | ECR3 SDL0B SEPup CH SEPdown SBOO1 QDBOO ... |
---|
141 | KICKQD QDBOO ... |
---|
142 | SBOO2 SBOO3 PERTEBR PERTELM PERTM PERTSLM PERTSBR ... |
---|
143 | SBOO3 ECR4 SBOO4 |
---|
144 | ]; |
---|
145 | |
---|
146 | ELIST = [DEBUT, LINE2, FIN]; |
---|
147 | |
---|
148 | buildlat(ELIST); |
---|
149 | |
---|
150 | % Set all magnets to same energy |
---|
151 | THERING = setcellstruct(THERING,'Energy',1:length(THERING),GLOBVAL.E0); |
---|
152 | |
---|
153 | disp('** Done **'); |
---|