! y_sep=0.01; py_sep=0.0; !dy_sep=-y_sep; !dpy_sep=-py_sep; S20SY02.MKDC010.cory := SYKICK*2; S20SY02.MKAC020.cory := SYKICK*3; S20SY02.MKDC030.cory := SYKICK*2; S20SY02.MKAC040.cory := SYKICK*3; S20SY02.MKDC050.cory := SYKICK*2; use,sequence=swissfel; select,flag=Error,pattern="SAT.*"; ealign,DY=0.01; Print,text='MATCH POINT: Kicker Strength of Septum'; MATCH,SEQUENCE=swissfel,range=s20sy02$start/s20sy02$end,beta0=Twisssep; VARY,NAME=s20sy02.mqua070.k1,STEP=0.0001,lower=-3,upper=3; VARY,NAME=s20sy02.mqua100.k1,STEP=0.0001,lower=-3,upper=3; VARY,NAME=s20sy02.mqua140.k1,STEP=0.0001,lower=-3,upper=3; VARY,NAME=s20sy02.mqua180.k1,STEP=0.0001,lower=-3,upper=3; VARY,NAME=SYKICK,STEP=0.0001; CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mbnd200,y=y_sep; CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mbnd200,py=py_sep; CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mbnd200,dy=-0.007; CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mbnd200,dpy=1.7e-3; CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mqua180, BETY < 60; LMDIF,CALLS=8000,TOLERANCE=1.e-21; ENDMATCH; ! this statements are needed to have explicit values in the output file S20SY02.MKDC010.c1= SYKICK*2; S20SY02.MKAC020.c1= SYKICK*3; S20SY02.MKDC030.c1= SYKICK*2; S20SY02.MKAC040.c1= SYKICK*3; S20SY02.MKDC050.c1= SYKICK*2; twiss,SEQUENCE=swissfel,range=s20sy02$start/S20SY02$END,beta0=twisssep; plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100; plot,haxis=s,vaxis=y,dy,range=#s/#e,colour=100; satsy01.mqua110.k1=-0.7; Print,text='MATCH POINT: Closed Dispersion in Switchyard'; MATCH,SEQUENCE=Swissfel,range=s20sy02$start/satsy02$end,beta0=twisssep; VARY,NAME=satsy01.mqua020.k1,STEP=0.0001; VARY,NAME=satsy01.mqua050.k1,STEP=0.0001; VARY,NAME=satsy01.mqua080.k1,STEP=0.0001; VARY,NAME=satsy02.mqua010.k1,STEP=0.0001; !VARY,NAME=satsy01.mqua110.k1,STEP=0.0001; CONSTRAINT,SEQUENCE=SwissFEL,range= satsy01$end,DX=0.0; CONSTRAINT,SEQUENCE=SwissFEL,range= satsy01$end,DPX=0.0; CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mbnd200,DY=0.0; CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mbnd200,DPY=0.0; JACOBIAN,CALLS=1000,TOLERANCE=1.e-21; SIMPLEX,CALLS=1000,TOLERANCE=1.e-21; ENDMATCH; twiss,SEQUENCE=swissfel,range=s20sy02$start/Satsy02.mqua210$start,beta0=twisssep; plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100; plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100; Print,text='MATCH POINT: Closed Dispersion in SATSY03'; MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep; VARY,NAME=satsy03.mqua120.k1,STEP=0.0001; CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mbnd200,DX=0.0; LMDIF,CALLS=1000,TOLERANCE=1.e-21; ENDMATCH; satsy02.mqua210.k1=1; satsy02.mqua230.k1=0; satsy02.mqua240.k1=0; satsy02.mqua260.k1=0; Print,text='MATCH POINT: Switchyard Drift'; MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep; VARY,NAME=satsy02.mqua210.k1,STEP=0.0001; VARY,NAME=satsy02.mqua230.k1,STEP=0.0001; VARY,NAME=satsy02.mqua240.k1,STEP=0.0001; VARY,NAME=satsy02.mqua260.k1,STEP=0.0001; CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua260$end,betx=twissAT1->BETX; CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua260$end,bety=twissAT1->BETY; CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua260$end,alfx=twissAT1->ALFX; CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua260$end,alfy=twissAT1->ALFY; LMDIF,CALLS=1000,TOLERANCE=1.e-21; ENDMATCH; Print,text='MATCH POINT: Match into SATSY03'; MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep; VARY,NAME=satsy02.mqua300.k1,STEP=0.0001; VARY,NAME=satsy02.mqua310.k1,STEP=0.0001; VARY,NAME=satsy02.mqua330.k1,STEP=0.0001; VARY,NAME=satsy02.mqua340.k1,STEP=0.0001; CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua120,betx=twissAT2->BETX; CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua120,bety=twissAT2->BETY; CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua120,alfx=twissAT2->ALFX; CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua120,alfy=twissAT2->ALFY; LMDIF,CALLS=1000,TOLERANCE=1.e-21; ENDMATCH; twiss,SEQUENCE=swissfel,range=s20sy02$start/Satsy03.mbnd200,beta0=twisssep; plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100; plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100; Print,text='MATCH POINT: BC2 in Switchyard'; MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satbc01$end,beta0=twisssep; VARY,NAME=satsy03.mqua220.k1,STEP=0.0001; VARY,NAME=satsy03.mqua310.k1,STEP=0.0001; VARY,NAME=satsy03.mqua430.k1,STEP=0.0001; CONSTRAINT,SEQUENCE=SwissFEL,range= satbc01.mbnd400,BETX<5; CONSTRAINT,SEQUENCE=SwissFEL,range= satbc01.mbnd400,BETY<60; CONSTRAINT,SEQUENCE=SwissFEL,range= satbc01.mbnd100,BETX<80; LMDIF,CALLS=1000,TOLERANCE=1.e-21; ENDMATCH; CL1.k1 := -1.3; CL2.k1 := 1.1; satcl01.mqua120.k1 := CL1.k1; satcl01.mqua130.k1 := CL2.k1; satcl01.mqua180.k1 := CL2.k1; satcl01.mqua190.k1 := CL1.k1; Print,text='MATCH POINT: Closed Dispersion in SATCL01'; MATCH,SEQUENCE=SwissFEL,range=satcl01$start/satcl01$end,betx=3,alfx=0,bety=50,alfy=5; VARY,NAME=cl1.k1,STEP=0.0001; VARY,NAME=cl2.k1,STEP=0.0001; CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01$end,dx=0; CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01$end,dpx=0; LMDIF,CALLS=1000,TOLERANCE=1.e-21; ENDMATCH; Print,text='MATCH POINT: Match into SATCL01'; MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satcl01$end,beta0=twisssep; VARY,NAME=satbc01.mqua410.k1,STEP=0.0001; VARY,NAME=satbc01.mqua430.k1,STEP=0.0001; VARY,NAME=satbc01.mqua450.k1,STEP=0.0001; VARY,NAME=satbc01.mqua470.k1,STEP=0.0001; CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01.msex160, alfx = 0; CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01.msex160, alfy = 0; CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01.msex160, betx > 10; CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01.msex160, bety < 5; LMDIF,CALLS=1000,TOLERANCE=1.e-21; ENDMATCH; Print,text='MATCH POINT: Minimizing Beam Size in HERO Modulator'; MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satdi01$end,beta0=twisssep; VARY,NAME=satdi01.mqua025.k1,STEP=0.0001; CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.dscr065$start, betx<19; CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.dscr065$start, bety<19; LMDIF,CALLS=1000,TOLERANCE=1.e-21; ENDMATCH; twiss,SEQUENCE=swissfel,rmatrix,range=s20sy02$start/satdi01.dscr065$end,beta0=twisssep; plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100; plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100; plot,haxis=s,vaxis=re56,range=#s/#e,colour=100; scl:=1.5; ss:=0.83; satdi01.mqua080.k1:=0.8*scl; satdi01.mqua220.k1:=-0.52*scl; satdi01.mqua230.k1:=-1.2*ss; satdi01.mqua250.k1:=1.2*ss; satcb01.mqua230.k1:=1.2*ss; satcb01.mqua430.k1:=-1.2*ss+0.2; L = 20.; alpha=0.7; beta=L*alpha; Print,text='MATCH POINT: Match through Athos C-Band Linac'; MATCH, SEQUENCE=SwissFEL,range=s20sy02$start/satcb01$end,beta0=twisssep; VARY,NAME=satdi01.mqua080.k1,STEP=0.0001,lower=-1.8,upper=1.8; VARY,NAME=satdi01.mqua220.k1,STEP=0.0001,lower=-1.8,upper=1.8; VARY,NAME=satdi01.mqua230.k1,STEP=0.0001,lower=-1.8,upper=1.8; VARY,NAME=satdi01.mqua250.k1,STEP=0.0001,lower=-1.8,upper=1.8; VARY,NAME=satcb01.mqua230.k1,STEP=0.0001,lower=-1.8,upper=1.8; VARY,NAME=satcb01.mqua430.k1,STEP=0.0001,lower=-1.8,upper=1.8; CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,betx=twissAT3->BETX; CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,alfx=twissAT3->ALFX; CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,bety=twissAT3->BETY; CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,alfy=twissAT3->ALFY; CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$start,x<10; CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$start,y<10; CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$start,DX<10; LMDIF,CALLS=1000,TOLERANCE=1.e-21; ENDMATCH; twiss,SEQUENCE=swissfel,range=s20sy02$start/satma01$end,beta0=twisssep; plot,haxis=s,vaxis=betx,bety,range=satdi01$start/satma01.dscr030$start,colour=100; !!!!!!!!!!!!!!!!!!!!!! Athos undulator pol=-1; satun06.mqua080.k1 := -1.699673315*pol; satun07.mqua080.k1 := 1.746074065*pol; muAT=0.15; Print,text='MATCH POINT: FODO - Athos Undulator'; match,SEQUENCE=swissfel,range=satun06$start/satun07$end; Vary,name=satun06.mqua080.k1,step=0.0001; Vary,name=satun07.mqua080.k1,step=0.0001; constraint,sequence=swissfel,range=satun07$end,mux=muAT; constraint,sequence=swissfel,range=satun07$end,muy=muAT; lmdif,calls=100,tolerance=1e-21; endmatch; satun08.mqua080.k1 := satun06.mqua080.k1; satun09.mqua080.k1 := satun07.mqua080.k1; satun10.mqua080.k1 := satun06.mqua080.k1; satun11.mqua080.k1 := satun07.mqua080.k1; satun12.mqua080.k1 := satun06.mqua080.k1; satun13.mqua080.k1 := satun07.mqua080.k1; satun14.mqua080.k1 := satun06.mqua080.k1; satun15.mqua080.k1 := satun07.mqua080.k1; satun16.mqua420.k1 := satun06.mqua080.k1; satun17.mqua080.k1 := satun07.mqua080.k1; satun18.mqua080.k1 := satun06.mqua080.k1; satun19.mqua080.k1 := satun07.mqua080.k1; satun20.mqua080.k1 := satun06.mqua080.k1; satun21.mqua080.k1 := satun07.mqua080.k1; satun22.mqua080.k1 := satun06.mqua080.k1; satun23.mqua080.k1 := satun07.mqua080.k1; satun24.mqua080.k1 := satun06.mqua080.k1; satun25.mqua080.k1 := satun07.mqua080.k1; satun26.mqua080.k1 := satun06.mqua080.k1; twiss,sequence=swissfel,range=satun06$start/satun07$end; plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100; ATbetx=table(twiss,satun07$end,betx); ATalfx=table(twiss,satun07$end,alfx); ATbety=table(twiss,satun07$end,bety); ATalfy=table(twiss,satun07$end,alfy); eebetx=8; eealfx=0.5; eebety=30; eealfy=-0.5; eebetx=7; eealfx=0.5; eebety=30; eealfy=1.5; twissee: beta0,betx=eebetx,bety=eebety,alfx=eealfx,alfy=eealfy; Print,text='MATCH POINT: Match into Athos Undulator'; MATCH, SEQUENCE=swissfel,range=satma01.mqua250$end/satun07$end,beta0=twissee; VARY,NAME=satma01.mqua610.k1,STEP=0.0001,lower=-2.0,upper=2.0; VARY,NAME=satma01.mqua630.k1,STEP=0.0001,lower=-2.0,upper=2.0; VARY,NAME=satma01.mqua640.k1,STEP=0.0001,lower=-2.0,upper=2.0; VARY,NAME=satun04.mqua060.k1,STEP=0.0001,lower=-3.8,upper=3.8; VARY,NAME=satun05.mqua420.k1,STEP=0.0001,lower=-3.8,upper=3.8; CONSTRAINT,SEQUENCE=swissfel,range=satun06$start,betx=ATbetx; CONSTRAINT,SEQUENCE=swissfel,range=satun06$start,bety=ATbety; CONSTRAINT,SEQUENCE=swissfel,range=satun06$start,alfx=ATalfx; CONSTRAINT,SEQUENCE=swissfel,range=satun06$start,alfy=ATalfy; CONSTRAINT,SEQUENCE=swissfel,range=satun06$start,x<10; LMDIF,CALLS=1000,TOLERANCE=1.e-21; ENDMATCH; twiss,SEQUENCE=swissfel,range=satma01.mqua250$end/satun11$end,beta0=twissee; plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100; scl=4; satcb02.mqua230.k1=scl*0.2; satcb02.mqua430.k1=-scl*0.2; satcb03.mqua230.k1=scl*0.2; satcb03.mqua430.k1=-scl*0.2; Print,text='MATCH POINT: Match through EEHG Section'; MATCH, SEQUENCE=swissfel,range=s20sy02$start/satma01$end,beta0=twisssep; VARY,NAME=satcb03.mqua430.k1,STEP=0.0001,lower=-3.8,upper=3.8; VARY,NAME=satma01.mqua120.k1,STEP=0.0001,lower=-3.8,upper=3.8; VARY,NAME=satma01.mqua140.k1,STEP=0.0001,lower=-3.8,upper=3.8; VARY,NAME=satma01.mqua160.k1,STEP=0.0001,lower=-3.8,upper=3.8; VARY,NAME=satma01.mqua180.k1,STEP=0.0001,lower=-3.8,upper=3.8; VARY,NAME=satma01.mqua230.k1,STEP=0.0001,lower=-3.0,upper=3.0; VARY,NAME=satma01.mqua250.k1,STEP=0.0001,lower=-3.0,upper=3.0; CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,betx=twissee->BETX; CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,bety=twissee->BETY; CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,alfx=twissee->ALFX; CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,alfy=twissee->ALFY; CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua120$start, betx <70; CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua120$start, bety <70; CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua140$start, betx <70; CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua140$start, bety <70; CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua160$start, betx <70; CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua160$start, bety <70; CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua180$start, betx <70; CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua180$start, bety <70; LMDIF,CALLS=1000,TOLERANCE=1.e-21; ENDMATCH; twiss,SEQUENCE=swissfel,range=s20sy02$start/satun11$end,beta0=twisssep; plot,haxis=s,vaxis=betx,bety,range=satdi01$start/#e,colour=100; twiss,SEQUENCE=swissfel,range=#s/satun26$end,beta0=twiss0; plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100; plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;