1 | function boostersteerer |
---|
2 | % Booster soleil lattice w/o ID |
---|
3 | % Lattice definition file |
---|
4 | % Perfect lattice no magnetic errors |
---|
5 | % Controlroom : set linearpass for quad (closed orbit) |
---|
6 | |
---|
7 | global FAMLIST THERING GLOBVAL |
---|
8 | |
---|
9 | %GLOBVAL.E0 = 2.75e9; % Ring energy |
---|
10 | GLOBVAL.E0 = 0.1085e9; % Ring energy |
---|
11 | % GLOBVAL.E0 = 0.100e9; % Ring energy |
---|
12 | |
---|
13 | GLOBVAL.LatticeFile = mfilename; |
---|
14 | FAMLIST = cell(0); |
---|
15 | |
---|
16 | disp(['** Loading SOLEIL booster magnet lattice ', mfilename]); |
---|
17 | |
---|
18 | L0 = 156.620; % design length [m] |
---|
19 | C0 = 2.99792458e8; % speed of light [m/s] |
---|
20 | HarmNumber = 184; |
---|
21 | |
---|
22 | %% Cavity |
---|
23 | % NAME L U[V] f[Hz] h method |
---|
24 | CAV = rfcavity('RF' , 0 , 0.844e+6 , HarmNumber*C0/L0, ... |
---|
25 | HarmNumber ,'CavityPass'); |
---|
26 | CAV = rfcavity('RF' , 0 , 0.200e+6 , HarmNumber*C0/L0, ... |
---|
27 | HarmNumber ,'CavityPass'); |
---|
28 | % CAV = rfcavity('RF' , 0 , 0.204e+6 , HarmNumber*C0/L0, ... |
---|
29 | % HarmNumber ,'ThinCavityPass'); |
---|
30 | |
---|
31 | %% Marker and apertures |
---|
32 | SECT1 = marker('SECT1', 'IdentityPass'); |
---|
33 | SECT2 = marker('SECT2', 'IdentityPass'); |
---|
34 | DEBUT = marker('DEBUT', 'IdentityPass'); |
---|
35 | FIN = marker('FIN', 'IdentityPass'); |
---|
36 | |
---|
37 | INJ = aperture('INJ',[-0.035 0.035 -0.125 0.125],'AperturePass'); |
---|
38 | |
---|
39 | % BPM |
---|
40 | BPM = marker('BPM', 'IdentityPass'); |
---|
41 | |
---|
42 | % DRIFT SPACES |
---|
43 | SD1 = drift('SD1', 3.15955 , 'DriftPass'); |
---|
44 | SD2 = drift('SD2',.408000 , 'DriftPass'); |
---|
45 | SD3 = drift('SD3',.591550 , 'DriftPass'); |
---|
46 | |
---|
47 | SD11 = drift('SD1', 3.00000 , 'DriftPass'); |
---|
48 | SD12 = drift('SD1', 0.15955 , 'DriftPass'); |
---|
49 | % QUADRUPOLES |
---|
50 | QPD = quadrupole('QPD' , 0.40,-0.9382000E+00 , 'QuadLinearPass'); |
---|
51 | QPF = quadrupole('QPF' , 0.40, 0.1178000E+01 , 'QuadLinearPass'); |
---|
52 | |
---|
53 | % SEXTUPOLES for xix=0.4 and xi_y=1.4 |
---|
54 | F = 1e8; |
---|
55 | Finv = 1/F; |
---|
56 | % SXF = 0.383 SXD = -0.525 for correcting natural chromaticities (Alex) |
---|
57 | % do not take in account 1. Eddy current when ramping the energy |
---|
58 | % 2. remnant sextupole field at injection field |
---|
59 | % 3. sextupole from geometry of dipole |
---|
60 | |
---|
61 | SXF = sextupole('SXF' , Finv, 0.383*F, 'StrMPoleSymplectic4Pass'); |
---|
62 | SXD = sextupole('SXD' , Finv, -0.525*F, 'StrMPoleSymplectic4Pass'); |
---|
63 | |
---|
64 | % Slow feedback correctors |
---|
65 | HCOR = corrector('HCOR',0.0,[0 0],'CorrectorPass'); |
---|
66 | VCOR = corrector('VCOR',0.0,[0 0],'CorrectorPass'); |
---|
67 | |
---|
68 | % DIPOLES |
---|
69 | BEND = rbend('BEND' , 2.160, ... |
---|
70 | 0.174533, 0.0872665, 0.0872665 , 0.0,'BendLinearPass'); |
---|
71 | |
---|
72 | % Begin Lattice |
---|
73 | % Superperiods |
---|
74 | |
---|
75 | SUP1 = [ ... |
---|
76 | QPD VCOR SD1 QPF HCOR BPM SD3 BEND SD2 ... |
---|
77 | QPD VCOR SD1 HCOR QPF SD2 BEND SD3 ... |
---|
78 | VCOR BPM QPD SXD SD2 BEND SD3 HCOR BPM QPF SXF SD2 ... |
---|
79 | BEND SD3 VCOR QPD SXD SD2 BEND SD3 ... |
---|
80 | HCOR QPF SXF SD2 BEND SD3 VCOR BPM QPD SXD SD2 ... |
---|
81 | BEND SD3 HCOR BPM QPF SXF SD2 BEND SD3 ... |
---|
82 | VCOR QPD SXD SD2 BEND SD3 HCOR BPM QPF SD3 ... |
---|
83 | BEND SD2 SXD QPD VCOR SD3 BEND SD2 ... |
---|
84 | SXF QPF BPM HCOR SD3 BEND SD2 SXD QPD BPM VCOR SD3 ... |
---|
85 | BEND SD2 SXF QPF HCOR SD3 BEND SD2 ... |
---|
86 | SXD QPD VCOR SD3 BEND SD2 SXF QPF BPM HCOR SD3 ... |
---|
87 | BEND SD2 SXD QPD BPM VCOR SD3 BEND SD2 ... |
---|
88 | QPF HCOR SD1 VCOR QPD SD2 BEND SD3 ... |
---|
89 | HCOR BPM QPF SD1 ]; |
---|
90 | |
---|
91 | ELIST = [DEBUT INJ SECT1 SUP1 SECT2 SUP1 CAV FIN]; |
---|
92 | |
---|
93 | buildlat(ELIST); |
---|
94 | |
---|
95 | % Set all magnets to same energy |
---|
96 | THERING = setcellstruct(THERING,'Energy',1:length(THERING),GLOBVAL.E0); |
---|
97 | |
---|
98 | evalin('caller','global THERING FAMLIST GLOBVAL'); |
---|
99 | atsummary; |
---|