TITLE,”ThomX_10/11/17 from Iryna’s AT”; option, warn, -info, echo; Assign, echo=ThomX.echo; E0:= 0.05; beam, particle= ELECTRON, EX= 5.0E-08, EY = 5.0E-08, ENERGY= E0; !, RADIATE; !for EMIT //Length of the ring //L0 = 17.986715999999994; //Dipoles, fringe as AT BEND: SBEND, L=0.296351, ANGLE= 0.785398, E1=0.0332, E2=0.0332, FINT=0.5, hgap=0.01757532; !sept1: SBEND, L=0.251072, ANGLE= -0.16, E1=-0.16, E2=0, FINT= 0, HGAP= 0; !kick1: SBEND, L=0.200004, ANGLE= -0.011, E1=-0.011, E2=0, FINT= 0, HGAP= 0; !kick2: SBEND, L=0.200004, ANGLE= -0.011, E1=0, E2=-0.011, FINT= 0, HGAP= 0; !sept2: SBEND, L=0.251072, ANGLE= -0.16, E1=0, E2=-0.16, FINT= 0, HGAP= 0; //Drifts dL := (0.296233-0.27646)/2; dL_track := (0.296351 - 0.296233)/2; dL_quad := (0.15731-0.15)/2; SD0: drift, l:= 0.1000000E+00-dL - dL_track; SD1S1B : drift, l:= 0.600000E-01 - dL_quad; SD1S1: drift, l:= 0.190000E+00-LSX/2; SD1S: drift, l:= 0.7500000E-01-LSX/2 - dL_quad; SD3S2: drift, l:= 0.1250000E+00-LSX/2 - dL - dL_track; SD2: drift, l:= 0.2100000E+00 - 2*dL_quad; SD31: drift, l:= 0.7537500E+00 - dL - dL_quad - dL_track; SD5B: drift, l:= 0.74; !!contains RF/2, old= 0.6400000E+00; SD5: drift, l:= 0.0600000E+00 - dL_quad; SD3S: drift, l:= 0.7500000E-01-LSX/2 - dL_quad; SD3S1: drift, l:= 0.1350000E+00-LSX/2 - dL_quad; SD2SB: drift, l:= 0.4000000E-01 - dL_quad; SD2S: drift, l:= 0.1950000E+00 - dL - dL_track; SD5Brf: drift, l:= 0.64; !!contains RF/2, old= 0.7400000E+00; //Quadrupoles QP1: quadrupole, l=0.15731, k1= -.4861690E+01; QP2: quadrupole, l=0.15731, k1= 0.9441459E+01; QP3: quadrupole, l=0.15731, k1= -.1854283E+02; QP4: quadrupole, l=0.15731, k1= 0.1646009E+02; QP31: quadrupole, l=0.15731, k1= -.8900146E+01; QP41: quadrupole, l=0.15731, k1= 0.5107448E+01; //Sextupoles (flag ON or OFF) SX_ON = 1.; lse:=1e-06; !”thick” sextupoles !k2SX1 := -325568.10*2*SX_ON; !k2SX2 := 2896110.38*2*SX_ON; !k2SX3 := -8674118.16*2*SX_ON; !SX1: sextupole, l=lse, k2= k2SX1; !SX2: sextupole, l=lse, k2= k2SX2; !SX3: sextupole, l=lse, k2= k2SX3; !Multipole/sextupoles !AT sextupole values result in Cx=0.1, Cy=0.14 k2SX1 := -325568.10*lse*2*SX_ON; k2SX2 := 2896110.38*lse*2*SX_ON; k2SX3 := -8674118.16*lse*2*SX_ON; !Zero chromaticity in MADX: (k2*L) !k2sx1 = -0.265912254 ; !k2sx2 = 5.743932173 ; !k2sx3 = -17.34823632 ; SX1: multipole, lrad=0., knl:={0,0,k2SX1,0,0}; SX2: multipole, lrad=0., knl:={0,0,k2SX2,0,0}; SX3: multipole, lrad=0., knl:={0,0,k2SX3,0,0}; value,k2SX1,K2SX2,K2SX3; !RF Cavity (flag ON or OFF) RF_ON := 0; RFVOLT:= 0.3*RF_ON; RFC: RFCAVITY, L=0.20, VOLT:=RFVOLT, LAG=0.5, HARMON=30; //Markers RING.END: Marker; SEPT: MARKER; Inj_KICKER: MARKER; RING.START: MARKER; Mqp31: MARKER; Msd1s1: MARKER; BPMx: marker; BPMz: marker; IP: marker; HCOR: marker; VCOR: marker; //RFC: marker; str1: line=(SD5B, BPMx, BPMz, SD5, QP1, SD2, QP2, SD31); str1rf: line=(SD5Brf, BPMx, BPMz, SD5, QP1, SD2, QP2, SD31); str2: line=(SD31, QP2, SD2, QP1, SD5, BPMx, BPMz, SD5B); str2rf: line=(SD31, QP2, SD2, QP1, SD5, BPMx, BPMz, SD5Brf); cell1: line=(BEND, SD3S2, SX1, HCOR, VCOR, SD3S, QP31, SD3S, SX3, HCOR, VCOR, SD3S1, QP41, SD1S1B, BPMx, BPMz, SD1S1, SX2, HCOR, VCOR, SD1S, QP4, SD2, QP3, SD2SB, BPMx, BPMz, SD2S, BEND, SD0); cell2: line=( SD0, BEND, SD2S, BPMx, BPMz, SD2SB, QP3, SD2, QP4, SD1S, SX2, HCOR, VCOR, SD1S1, BPMx, BPMz, SD1S1B, QP41, SD3S1, SX3, HCOR, VCOR, SD3S, QP31, SD3S, SX1, HCOR, VCOR, SD3S2, BEND); RING: line=(RING.START, SEPT, str1, cell1, IP, cell2, str2rf, RFC, str1rf, cell1, cell2, str2,RING.END); use, sequence=RING; //AT values: betx=3.455893, alfx=0.3167609E-15 , bety=2.662101,alfy=0.2883261E-15, //dx=0.0290735, dpx=-0.1604619E-15, select,flag = twiss,column = name,s,betx,alfx,dx,bety,alfy; twiss, save, file = ThomX.twiss; plot, table=twiss, haxis= s, vaxis1= betx,bety, vaxis2 = dx, colour= 100, file= ThomX.plots; !-------- MADX CLASSIC MATCHING (FASTER, NOT ROBUST, CHROMA ONLY) ------- match, sequence= RING; vary, name=K2SX1, step=0.01; vary, name=K2SX2, step=0.01; ! vary, name=K2SX3, step=0.01; global, sequence=RING, DQ1=0.0; global, sequence=RING, DQ2=0.0; lmdif, calls = 1000, tolerance = 1.e-21; migrad, calls = 1000, tolerance = 1.e-21; ENDMATCH; value,K2SX1,K2SX2,K2SX3; !TWISS, SAVE; //Adds calculation of Hx invariant and sigmas to Twiss table select, flag = twiss,full, column = sigx,sigpx,sigy, sigpy,Hinvx; sigx:= sqrt(beam->ex*table(twiss,betx)); sigpx:= sqrt(beam->ex/table(twiss,betx)); sigy:= sqrt(beam->ey*table(twiss,bety)); sigpy:= sqrt(beam->ey/table(twiss,bety)); Gammax:= (1+table(twiss,alfx)*table(twiss,alfx)/table(twiss,betx)); Hinvx:= Gammax*table(twiss,dx)*table(twiss,dx)+2*table(twiss,alfx)*table(twiss,dx)*table(twiss,dpx)+table(twiss,betx)*table(twiss,dpx)*table(twiss,dpx); twiss, save, file = ThomX.sigma; plot, table=twiss, haxis= s, vaxis= sigx, sigy, colour= 100; plot, table=twiss, haxis= s, vaxis= Hinvx, colour= 100; //Note: to have the emittance calculation parameter LAG in the RF needs to be NOT zero! EMIT; !=======================================================================! ! (Chromatic) TWISS WITH MADX output in twiss* detuning* chroma* ! !=======================================================================! !/* !**** TUNES, BETAS AND ALFAS @ SS CENTRE Vs ENERGY DEVIATION (+-2.0%)**** de_t := 0.02; ! scan range DP := -de_t; ! scan start NMAX = 20; ! scan points SAVEBETA, label=TWSSIP, place=#e; option,-info,-warn; ! otherwise you get redifiniton warnings n = 1; create,table=twiss_end,column=DELTA_P,bx,by,ax,ay; create,table=twiss_tune,column=DELTA_P,Qx,Qy; while (n < NMAX+1) { TWISS, DELTAP=DP; DELTA_P :=DP*1e2; bx:=table(twiss,RING.END,betx); by:=table(twiss,RING.END,bety); ax:=table(twiss,RING.END,alfx); ay:=table(twiss,RING.END,alfy); Qx:=table(twiss,RING.END,mux)-3; Qy:=table(twiss,RING.END,muy)-1; if(Bx > 1e-100 && By > 1e-100) { fill,table=twiss_end; fill,table=twiss_tune; } DP:=-de_t*(1-2/NMAX*n); n = n + 1; }; PLOT, TABLE=twiss_tune, HAXIS=DELTA_P, VAXIS1=QX, VAXIS2=QY, STYLE=100, symbol=4,!VMIN=0.10,0.60,VMAX=0.30,0.80, TITLE="Tune Vs Dp/p [%]",noversion,FILE="RING-plots"; PLOT, TABLE=twiss_end, HAXIS=DELTA_P, VAXIS1=BX, VAXIS2=BY, STYLE=100, symbol=4,!VMIN=3.0,1.4,VMAX=6.0,3.0, TITLE="Beta Vs Dp/p [%], SS centre",noversion,FILE="RING-plots"; PLOT, TABLE=twiss_end, HAXIS=DELTA_P, VAXIS1=AX, VAXIS2=AY, STYLE=100, symbol=4,!VMIN=3.0,1.4,VMAX=6.0,3.0, TITLE="Alfa Vs Dp/p [%], SS centre",noversion,FILE="RING-plots"; write,table=twiss_end; write,table=twiss_tune; write,table=twiss_tune,file=chroma_tunes.dat; !***************** TUNES Vs INITIAL CONDITIONS ************************* de_t := 0.040; ! scan range [m] DP = -de_t; ! scan start NMAX = 20; ! scan points TWISS, SAVE; SAVEBETA, label=TWSSIP, place=#e; n = 1; create,table=twiss_detuneAx,column=Ax,Ay,Qx,Qy; while (n < NMAX+1) { TWISS, DELTAP=0,X=DP; Ax :=DP*1e3; Ay :=0; Qx:=table(twiss,RING.END,mux)-3; Qy:=table(twiss,RING.END,muy)-1; if(Qx < 1 && Qy < 1) { value,n,Ax,Ay,Qx,Qy; fill,table=twiss_detuneAx; } // DP:=de_t/NMAX*n; DP:=-de_t*(1-2/NMAX*n); n = n + 1; }; PLOT, TABLE=twiss_detuneAx, HAXIS=Ax, VAXIS1=QX, VAXIS2=QY, STYLE=100, symbol=4,!VMIN=0.10,0.60,VMAX=0.30,0.80, TITLE="Tunes Vs X position [mm]",noversion; de_t := 0.020; ! scan range [m] DP := 0; ! scan start n = 1; create,table=twiss_detuneAy,column=Ax,Ay,Qx,Qy; while (n < NMAX+1) { TWISS, DELTAP=0,Y=DP; Ax :=0; Ay :=DP*1e3; Qx:=table(twiss,RING.END,mux)-3; Qy:=table(twiss,RING.END,muy)-1; if(Qx < 1 && Qy < 1) { value,n,Ax,Ay,Qx,Qy; fill,table=twiss_detuneAy; } DP:=de_t/NMAX*n; n = n + 1; }; PLOT, TABLE=twiss_detuneAy, HAXIS=Ay, VAXIS1=QX, VAXIS2=QY, STYLE=100, symbol=4,!VMIN=0.10,0.60,VMAX=0.30,0.80, TITLE="Tunes Vs Y position [mm]",noversion; write,table=twiss_detuneAx;write,table=twiss_detuneAx,file=detuning_x.dat; write,table=twiss_detuneAy;write,table=twiss_detuneAy,file=detuning_y.dat; */ !=======================================================================! ! END OF (Chromatic) TWISS WITH MADX output in twiss* detuning* chroma* ! !=======================================================================! return; stop;