TITLE, "LCLS: 01MAY03 design" ! *** OPTICS=01MAY03 *** OPTION, -INTER, -ECHO, WARN ASSIGN, PRINT="LCLS_INJ.print" ASSIGN, ECHO="LCLS_INJ.echo" ! ============================================================================== ! 01-MAY-2003, P. Emma ! Lengthen BC2 bends from 0.4 m to 0.5 m, increase center BC2 drift from 0.5 m ! to 1 m, and take up this length by reducing the two drifts after B24B. Bend ! magnet name changes from 1D15.7 to 1D19.7. Also add MTWSSC fit call in ! string of fit routines. ! ------------------------------------------------------------------------------ ! initial conditions (exit of L0) Ei := 0.0641 !initial beam energy (GeV) EMITXN := 1.00E-06 !normalized horizontal emittance (m) EMITYN := 1.00E-06 !normalized vertical emittance (m) BLENG := 0.83E-03 !bunch length (m) ESPRD := 1.00E-03 !energy spread (1) ! twiss parameters from Cecile's 18 MV/m L0a and 30.5 MV/m L0b (at end of L0b) ! w/200K particles (P200k_El220.dat) TBETX := 15.5677 !twiss beta x (m) TALFX := 2.0028 !twiss alpha x TBETY := 15.6911 !twiss beta y (m) TALFY := 2.0134 !twiss alpha y ! dummy twiss parameters at end L0-1 which yield the above twiss parameters at ! DL1beg (assumes only drift between cathode and DL1beg) CBETX := 16.9 CALFX := -3.16 CBETY := 16.9 CALFY := -3.16 TWSS0 : BETA0, ENERGY=Ei, BETX=TBETX, ALFX=TALFX, BETY=TBETY, ALFY=TALFY TWSSC : BETA0, ENERGY=Ei, BETX=CBETX, ALFX=CALFX, BETY=CBETY, ALFY=CALFY ! construct input beam matrix EMITX := EMITXN/(TWSS0[ENERGY]/EMASS) EMITY := EMITYN/(TWSS0[ENERGY]/EMASS) TGAMX := (1+TWSS0[ALFX]*TWSS0[ALFX])/TWSS0[BETX] TGAMY := (1+TWSS0[ALFY]*TWSS0[ALFY])/TWSS0[BETY] SIG11 := EMITX*TWSS0[BETX] SIG21 := -EMITX*TWSS0[ALFX] SIG22 := EMITX*TGAMX SIG33 := EMITY*TWSS0[BETY] SIG43 := -EMITY*TWSS0[ALFY] SIG44 := EMITY*TGAMY C21 := SIG21/SQRT(SIG11*SIG22) C43 := SIG43/SQRT(SIG33*SIG44) SIG0 : SIGMA0, SIGX=SQRT(SIG11), SIGPX=SQRT(SIG22), R21=C21, & SIGY=SQRT(SIG33), SIGPY=SQRT(SIG44), R43=C43, & SIGT=BLENG, SIGPT=ESPRD CGAMX := (1+TWSSC[ALFX]*TWSSC[ALFX])/TWSSC[BETX] CGAMY := (1+TWSSC[ALFY]*TWSSC[ALFY])/TWSSC[BETY] SIG11C := EMITX*TWSSC[BETX] SIG21C := -EMITX*TWSSC[ALFX] SIG22C := EMITX*CGAMX SIG33C := EMITY*TWSSC[BETY] SIG43C := -EMITY*TWSSC[ALFY] SIG44C := EMITY*CGAMY C21C := SIG21C/SQRT(SIG11C*SIG22C) C43C := SIG43C/SQRT(SIG33C*SIG44C) SIGC : SIGMA0, SIGX=SQRT(SIG11C), SIGPX=SQRT(SIG22C), R21=C21C, & SIGY=SQRT(SIG33C), SIGPY=SQRT(SIG44C), R43=C43C, & SIGT=BLENG, SIGPT=ESPRD BEAM, PARTICLE=ELECTRON, ENERGY=TWSS0[ENERGY], EX=EMITX, EY=EMITY, & SIGT=BLENG, SIGE=ESPRD ! conversion factors Cb : CONSTANT=1.0E10/CLIGHT !energy to magnetic rigidity GeV2MeV : CONSTANT=1000.0 !GeV to MeV in2m : CONSTANT=0.0254 !inches to meters ! ============================================================================== ! LCAVs ! ------------------------------------------------------------------------------ ! global LCAV parameters SbandF := 2856.0 !rf frequency (MHz) DLWL10 := 3.0441 !"10 ft" (29 Sband wavelengths; 87 DLWG cavities) P25 := 1 !25% power factor P50 := SQRT(2) !50% power factor ! L0 sections ! (NOTE: L01* = L0-1 ! L02* = L0-2) L0_BCAV : LCAV, FREQ=SbandF, L=DLWL10/10, & DELTAE=56/10, PHI0=0 L01___a : DRIF, L=0.08 L01___b : DRIF, L=0.2 L01___c : DRIF, L=2.65 L01___d : DRIF, L=0.1141 L02___a : DRIF, L=0.0659 L02___b : DRIF, L=2.89 L02___c : DRIF, L=0.0882 TCAV0 : DRIF, L=0.55 ! ============================================================================== ! BENDs ! ------------------------------------------------------------------------------ ! global BEND parameters LB0 := 0.2032 !5D7.1 "Z" length (m) GB0 := 1.05*in2m !5D7.1 gap height (m) ! DL1 ADL1 := -35.0*RADDEG !injection line angle (rad) AB0 := ADL1/2 !full bend angle (rad) LeffB0 := LB0*AB0/(2*SIN(AB0/2)) !full bend path length (m) AEB0 := AB0/2 !edge angles B01A : SBEN, TYPE="5D7.1", L=LeffB0/2, HGAP=GB0/2, ANGLE=AB0/2, & E1=AEB0, FINT=0.5, FINTX=0 B01B : SBEN, TYPE="5D7.1", L=LeffB0/2, HGAP=GB0/2, ANGLE=AB0/2, & E2=AEB0, FINT=0, FINTX=0.5 B02A : SBEN, TYPE="5D7.1", L=LeffB0/2, HGAP=GB0/2, ANGLE=AB0/2, & E1=AEB0, FINT=0.5, FINTX=0 B02B : SBEN, TYPE="5D7.1", L=LeffB0/2, HGAP=GB0/2, ANGLE=AB0/2, & E2=AEB0, FINT=0, FINTX=0.5 ! ============================================================================== ! QUADs ! ------------------------------------------------------------------------------ ! global QUAD parameters LQA := 0.102 !QA effective length (m) rQA := (1.2*in2m)/2 !QA pole-tip radius (m) LQE := 0.1068 !QE effective length (m) rQE := (1.085*in2m)/2 !QE pole-tip radius (m) LQ := 0.1549 !1Q5.6 effective length (m) rQ := (1.0*in2m)/2 !1Q5.6 pole-tip radius (m) LQF := 0.46092 !0.91Q17.72 effective length (m) rQF := 0.023/2 !0.91Q17.72 pole-tip radius (m) ! DL1 KQA01 := -4.832439006423 KQA02 := 5.414259022571 ! KQE01 := -0.067852595276 ! KQE02 := 4.486215785002 ! KQE03 := -7.950605258917 ! KQE04 := 10.655421246488 KQE01 := -0.503152789539 KQE02 := -2.392852175389 KQE03 := 3.052335765032 KQE04 := -0.387828160222 KQM01 := 11.974948010683 KQM02 := -12.852875533245 KQM03 := -13.658768513187 KQM04 := 11.090013377372 KQB := 24.638389547568 QA01 : QUAD, TYPE="TEST" , L=LQ , K1=KQA01, APER=rQ QA02 : QUAD, TYPE="TEST" , L=LQ , K1=KQA02, APER=rQ QE01 : QUAD, TYPE="1Q5.6", L=LQ/2, K1=KQE01, APER=rQ QE02 : QUAD, TYPE="1Q5.6", L=LQ/2, K1=KQE02, APER=rQ QE03 : QUAD, TYPE="1Q5.6", L=LQ/2, K1=KQE03, APER=rQ QE04 : QUAD, TYPE="1Q5.6", L=LQ/2, K1=KQE04, APER=rQ QM01 : QUAD, TYPE="1Q5.6", L=LQ/2, K1=KQM01, APER=rQ QM02 : QUAD, TYPE="1Q5.6", L=LQ/2, K1=KQM02, APER=rQ QB : QUAD, TYPE="1Q5.6", L=LQ/2, K1=KQB, APER=rQ QM03 : QUAD, TYPE="1Q5.6", L=LQ/2, K1=KQM03, APER=rQ QM04 : QUAD, TYPE="1Q5.6", L=LQ/2, K1=KQM04, APER=rQ ! ============================================================================== ! SOLENOIDs ! ------------------------------------------------------------------------------ SOL2 : SOLENOID, L=0.3, KS=1. ! ============================================================================== ! DRIFTs ! ------------------------------------------------------------------------------ ! injector geometry LGGUN := 7.51*0.3048 LGL0 := 2*3.0441+1.0 LGBEND := 0.95 LGEMIT := 9.000328707307 LGMATCH := 1.5134597681 DGGUN : DRIF, L=LGGUN DGL0 : DRIF, L=LGL0 DGEMIT : DRIF, L=LGEMIT DGBEND : DRIF, L=LGBEND DGMATCH : DRIF, L=LGMATCH ! L0 ! (NOTE: DL01* = cathode to L0-1 ! DL02* = L0-1 to L0-2) LOADLOCK : DRIF, L=LGGUN-1.42 DL00 : DRIF, L=-LOADLOCK[L] !from cathode back to u/s end of loadlock DL01a : DRIF, L=0.25 DL01b : DRIF, L=0.25 DL01c : DRIF, L=0.25 DL01d : DRIF, L=0.15 DL01e : DRIF, L=0.1 DL01f : DRIF, L=0.25 DL01g : DRIF, L=0.17 DL02a : DRIF, L=0.30-LQ DL02b : DRIF, L=0.15 DL02c : DRIF, L=0.25-LQ DL02d : DRIF, L=0.15 DL02e : DRIF, L=0.15 ! DL1 BMIN0 := 1.25 !beta at WS02 (m) DE00 : DRIF, L=0.50 DE01 : DRIF, L=0.25 DE02 : DRIF, L=LGEMIT-(6*LQ+2*SQRT(3)*BMIN0+2.55) DE03 : DRIF, L=0.5 DE04 : DRIF, L=0.375 DE05 : DRIF, L=SQRT(3)*BMIN0/10 DE06 : DRIF, L=SQRT(3)*BMIN0/10 DE07 : DRIF, L=0.375 DE08 : DRIF, L=0.25 DE09 : DRIF, L=0.30 DE02b : DRIF, L=0.25 DE02a : DRIF, L=DE02[L]-(TCAV0[L]+DE02b[L]) DB00 : DRIF, L=(LGBEND-LQ)/2, TYPE="CSR" DM00 : DRIF, L=0.30, TYPE="CSR" DM01 : DRIF, L=0.25, TYPE="CSR" DM02 : DRIF, L=LGMATCH-(2*LQ+0.55), TYPE="CSR" ! ============================================================================== ! MARKERs ! ------------------------------------------------------------------------------ ! wire scanners WS01 : WIRE !DL1- emittance WS02 : WIRE !DL1- emittance WS03 : WIRE !DL1- emittance ! profile monitors OTR1 : PROF, TYPE="OTR" !L0 OTR2 : PROF, TYPE="OTR" !DL1 OTR3 : PROF, TYPE="OTR" !DL1 OTR4 : PROF, TYPE="OTR" !DL1 OTR5 : PROF, TYPE="OTR" !DL1 OTR6 : PROF, TYPE="OTR" !DL1 OTR7 : PROF, TYPE="OTR" !DL1 energy spread OTR8 : PROF, TYPE="OTR" !DL1 energy spread OTR9 : PROF, TYPE="OTR" !DL1 ! bunch length monitors EO1 : BLMO !L0 electro-optic EO2 : BLMO !DL1- electro-optic EO3 : BLMO !DL1+ electro-optic ! bunch charge monitors (toroids) CM1 : IMON !L0 CM2 : IMON !L0 CM3 : IMON !DL1- CM4 : IMON !DL1- CM5 : IMON !DL1+ ! other diagnostics FC1 : INST !L0 Faraday cup w/screen ! collimators CE01 : RCOL !DL1 ! miscellany L0beg : MARK CATHODE : MARK S1 : MARK !solenoid SPECT : MARK !spectrometer bend S2 : MARK !solenoid L0end : MARK L0SHIFT : MARK L0WAKE : MARK DL1beg : MARK CNT0 : MARK ETA0 : MARK DL1end : MARK L1beg : MARK ! reference points in the linac Z-coordinate system ZLIN01 : MARK ! entrance to 21-1b : Z=2035.0441 (= 20*101.600 + 3.0441 m) ZLIN02 : MARK ! center of QUAD LI21 201 : Z=2044.2640 (moved to 2045.329800 m) ZLIN03 : MARK ! center of QUAD LI21 301 : Z=2056.6084 (moved to 2057.855465 m) ! ============================================================================== ! new XCORs ! ------------------------------------------------------------------------------ SC1h : HKIC SC2h : HKIC SC3h : HKIC SC4h : HKIC SC5h : HKIC SC6h : HKIC SC7h : HKIC SC8h : HKIC SC9h : HKIC SC10h : HKIC HA11 : HKIC HA12 : HKIC HM11 : HKIC HS11 : HKIC HM13 : HKIC HM14 : HKIC HS21 : HKIC H6 : HKIC HA0 : HKIC ! ============================================================================== ! new YCORs ! ------------------------------------------------------------------------------ SC1v : VKIC SC2v : VKIC SC3v : VKIC SC4v : VKIC SC5v : VKIC SC6v : VKIC SC7v : VKIC SC8v : VKIC SC9v : VKIC SC10v : VKIC VA11 : VKIC VA12 : VKIC V21201 : VKIC VS11 : VKIC VM12 : VKIC VM15 : VKIC VS21 : VKIC V5 : VKIC ! ============================================================================== ! existing BPMs ! ------------------------------------------------------------------------------ ! BPM classes BPM05um : MONI, TYPE="05_um_res" BPM10um : MONI, TYPE="10_um_res" BPM20um : MONI, TYPE="20_um_res" BPM25um : MONI, TYPE="25_um_res" BPM40um : MONI, TYPE="40_um_res" M21201 : BPM20um ! ============================================================================== ! new BPMs ! ------------------------------------------------------------------------------ BPM1 : MONI BPM2 : MONI BPM3 : MONI BPM4 : BPM25um BPM5 : BPM25um BPM6 : BPM25um BPM7 : BPM25um BPM8 : BPM25um BPM9 : BPM25um BPM10 : BPM25um BPM11 : BPM25um MA11 : BPM20um MA12 : BPM20um MS11 : BPM20um MM12 : BPM20um MW13 : BPM20um MM14 : BPM20um MS21 : BPM40um ! ============================================================================== ! BEAMLINEs ! ------------------------------------------------------------------------------ SC1 : LINE=(SC1h,SC1v) SC2 : LINE=(SC2h,SC2v) SC3 : LINE=(SC3h,SC3v) SC4 : LINE=(SC4h,SC4v) SC5 : LINE=(SC5h,SC5v) L0 : LINE=(DL00,LOADLOCK,L0beg,CATHODE,DL01a,S1,DL01b,CM1,SC1,DL01c,& EO1,DL01d,FC1,DL01e,SPECT,DL01f,BPM1,DL01g,& L01___a,SC2,L01___b,S2,L01___c,SC3,L01___d,& DL02a,BPM2,DL02b,CM2,DL02c,OTR1,DL02d,BPM3,DL02e,& L02___a,SC4,L02___b,SC5,L02___c,L0end) L0B : LINE=(DL02a,QA01,BPM2,DL02b,CM2,QA02,DL02c,OTR1,DL02d,BPM3,DL02e,& 10*L0_BCAV,L0end) SC7 : LINE=(SC7h,SC7v) SC8 : LINE=(SC8h,SC8v) SC10 : LINE=(SC10h,SC10v) DL1 : LINE=(L0SHIFT,L0WAKE,DL1beg,CM3,BPM4,OTR2,DE00,& QE01,QE01,DE01,& QE02,QE02,BPM5,SC6h,DE02a,EO2,TCAV0,OTR3,DE02b,& QE03,QE03,BPM6,SC6v,DE03,& QE04,QE04,SC7,DE04,& BPM7,WS01,OTR4,10*DE05,BPM8,WS02,OTR5,10*DE06,& WS03,CM4,SC8,DE07,BPM9,& QM01,QM01,DE08,& QM02,QM02,OTR6,DE09,& B01A,B01B,CE01,DB00,OTR7,& QB,QB,BPM10,OTR8,DB00,& B02A,B02B,CNT0,ETA0,DM00,& QM03,QM03,SC9v,DM01,& QM04,QM04,SC9h,CM5,EO3,DM02,BPM11,OTR9,SC10,DL1end) ! ============================================================================== ! SUBROUTINEs ! ------------------------------------------------------------------------------ MTWSSC : SUBROUTINE ! find Twiss at cathode ! (NOTE: optics between cathode and DL1beg is meaningless ... used only to ! initialize sumL) VALUE, CBETX VALUE, CALFX VALUE, CBETY VALUE, CALFY USE, L0B MATCH, ENERGY=Ei, BETX=CBETX, ALFX=CALFX, BETY=CBETY, ALFY=CALFY VARY, CBETX, STEP=1.E-5 VARY, CALFX, STEP=1.E-5 VARY, CBETY, STEP=1.E-5 VARY, CALFY, STEP=1.E-5 CONSTR, #E, BETX=TBETX, ALFX=TALFX, BETY=TBETY, ALFY=TALFY !LMDIF !MIGRAD ENDMATCH VALUE, CBETX VALUE, CALFX VALUE, CBETY VALUE, CALFY ENDSUBROUTINE ! ------------------------------------------------------------------------------ MBSYS : SUBROUTINE ! match DL1 bend system dispersion USE, DL1 MATCH, BETA0=TWSS0 VARY, KQB, STEP=1.E-5 RMATRIX, DE09/B02B, RM(1,6)=0 !LMDIF !MIGRAD ENDMATCH VALUE, KQB ENDSUBROUTINE ! ------------------------------------------------------------------------------ MED0 : SUBROUTINE ! match from exit of L0A into ED0 VALUE, KQA01 VALUE, KQA02 VALUE, KQE01 VALUE, KQE02 VALUE, KQE03 VALUE, KQE04 USE, (L0B,DL1) MATCH, BETA0=TWSSC VARY, KQA01, STEP=1.E-5, LOWER=-60, UPPER=+60 VARY, KQA02, STEP=1.E-5, LOWER=-60, UPPER=+60 VARY, KQE01, STEP=1.E-5, LOWER=-20, UPPER=+20 VARY, KQE02, STEP=1.E-5, LOWER=-20, UPPER=+20 VARY, KQE03, STEP=1.E-5, LOWER=-20, UPPER=+20 VARY, KQE04, STEP=1.E-5, LOWER=-20, UPPER=+20 CONSTR, WS02, BETX=BMIN0, ALFX=0., BETY=BMIN0, ALFY=0. CONSTR, #S/#E, BETX<35, BETY<35 LMDIF MIGRAD ENDMATCH VALUE, KQA01 VALUE, KQA02 VALUE, KQE01 VALUE, KQE02 VALUE, KQE03 VALUE, KQE04 ENDSUBROUTINE ! ============================================================================== ! COMMANDs ! ------------------------------------------------------------------------------ SETPLOT, XSIZE=25.4, YSIZE=20.32 OPTION, ECHO ! do fitting ASSIGN, PRINT="LCLS.fit" ! MTWSSC ! MBSYS MED0 ASSIGN, PRINT="LCLS_inj.print" ! generate output files and plots (optics) USE, (L0B,DL1) PRINT, FULL SELECT, OPTICS, FULL TWISS, BETA0=TWSSC, SAVE, TAPE="LCLS_INJ_twiss.tape" ENVELOPE, SIGMA0=SIGC, SAVE, TAPE="LCLS_INJ_envelope.tape" PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, STYLE=100, SPLINE=.T., & RANGE=#S/#E, TITLE="L0B+DL1" PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, STYLE=100, & SPLINE=.T., RANGE=L0B/DL1end, TITLE="L0B+DL1" ! generate survey coordinates ! (NOTE: Y/PITCH coordinates are arbitrary) X0 := 10.9474 Z0 := 2032.0-14.8125 Xi := X0+LOADLOCK[L]*SIN(ADL1) Zi := Z0+LOADLOCK[L]*COS(ADL1) !VALUE, X0,Z0,Xi,Zi USE, (L0B,DL1) PRINT, FULL SELECT, OPTICS, FULL SURVEY, THETA0=ADL1, X0=Xi, Z0=Zi, TAPE="LCLS_INJ_survey.tape" ! ------------------------------------------------------------------------------ STOP