1 | %% |
---|
2 | solamor2 |
---|
3 | BENDINDEX = findcells(THERING,'PassMethod','BndMPoleSymplectic4RadPass'); |
---|
4 | QUADSEXTINDEX = findcells(THERING,'PassMethod','StrMPoleSymplectic4RadPass'); |
---|
5 | RADELEMINDEX = sort([BENDINDEX QUADSEXTINDEX]); |
---|
6 | |
---|
7 | %% Set tilt error |
---|
8 | % Find indexes of elements in different families |
---|
9 | Q1I = findcells(THERING,'FamName','Q1'); |
---|
10 | % Select some of them to randomly tilt |
---|
11 | TILTI = Q1I; |
---|
12 | |
---|
13 | % NOTE: How to introduce random coupling and misalignment errors: |
---|
14 | % s-rotations(tilts) and transverse displacements (shifts) |
---|
15 | |
---|
16 | % 1.generate random rotations |
---|
17 | tilterr = 0.2*pi/180; % RMS tilt error [radians] |
---|
18 | qftilts = tilterr*randn(1,length(TILTI)); |
---|
19 | |
---|
20 | % 2. rotate elements |
---|
21 | settilt(TILTI,qftilts); |
---|
22 | |
---|
23 | %% |
---|
24 | [ENV, DP, DL] = ohmienvelope(THERING,RADELEMINDEX, 1:length(THERING)+1) |
---|
25 | |
---|
26 | %% |
---|
27 | sigmas = cat(2,ENV.Sigma); |
---|
28 | tilt = cat(2,ENV.Tilt); |
---|
29 | spos = findspos(THERING,1:length(THERING)+1); |
---|
30 | |
---|
31 | figure(1) |
---|
32 | plot(spos,tilt*180/pi,'.-') |
---|
33 | set(gca,'XLim',[0 spos(end)]) |
---|
34 | title('Rotation angle of the beam ellipse [degrees]'); |
---|
35 | xlabel('s - position [m]'); |
---|
36 | grid on |
---|
37 | |
---|
38 | figure(2) |
---|
39 | [A, H1, H2] = plotyy(spos,sigmas(1,:)*1e6,spos,sigmas(2,:)*1e6); |
---|
40 | |
---|
41 | set([H1 H2],'Marker','.') |
---|
42 | set(A,'XLim',[0 spos(end)]) |
---|
43 | title('Principal axis of the beam ellipse [m]'); |
---|
44 | xlabel('s - position [m]'); |
---|
45 | grid on |
---|
46 | ylabel('Sigma (um)') |
---|
47 | %% |
---|
48 | [TD, tune] = twissring(THERING,0,1:length(THERING)+1,'chroma'); |
---|
49 | ETA = cat(2,TD.Dispersion); |
---|
50 | BETA = cat(1,TD.beta)'; |
---|
51 | |
---|
52 | emittancex = (power(sigmas(1,:),2)-power(DP*ETA(1,:),2))./BETA(1,:); |
---|
53 | emittancez = (power(sigmas(2,:),2)-power(DP*ETA(3,:),2))./BETA(2,:); |
---|
54 | %% |
---|
55 | figure |
---|
56 | [A, H1, H2] = plotyy(spos,emittancex,spos,emittancez); |
---|
57 | grid on |
---|
58 | set(A,'XLim',[0 spos(end)]) |
---|
59 | |
---|
60 | %% couplying end emittance at lattice entrance |
---|
61 | fprintf('Ex = %4.2g m.rad \n',emittancex(1)); |
---|
62 | fprintf('Ez = %4.2g m.rad \n',emittancez(2)); |
---|
63 | fprintf('Coupling = %4.2g %% \n',emittancez(1)/emittancex(2)*100) |
---|