
! *** OPTICS=AD_ACCEL-14APR2025s ***

! XLEAP-II optics

! ==============================================================================
! Modification History
! ------------------------------------------------------------------------------
! 25-DEC-2024, M. Woodley
!  * modified UMXL* undulators don't focus/defocus
! ------------------------------------------------------------------------------
! 28-SEP-2024, M. Woodley
!  * add SXR interspace quadrupoles in cells 17, 18, 20, and 25
!  * turn ON all SXR quadrupoles in cells 17-25
!  * remove quadrupole SXR cell 16
! ------------------------------------------------------------------------------
! 07-APR-2024, M. Woodley
!  * remove UMXL2; move WIGXLH from SXR cell 18 to UMXL2 location
! ------------------------------------------------------------------------------

  KmaxQA    := 150.00/(Brhof*LQA) !max |K1| @ Ef for 1.26Q12    (165 A bipolar )
  KmaxQE200 := 102.00/(Brhof*LQE) !max |K1| @ Ef for 1.085Q4.31 (200 A bipolar )
  KmaxQE120 :=  67.00/(Brhof*LQE) !max |K1| @ Ef for 1.085Q4.31 (120 A bipolar )
  KmaxQx    :=  20.00/(Brhof*LQx) !max |K1| @ Ef for 1.26Q3.5   ( 12 A bipolar )
  KmaxQE110 :=  60.00/(Brhof*LQE) !max |K1| @ Ef for 1.085Q4.31 (110 A unipolar)
  KmaxQu    :=  40.00/(Brhof*LQu) !max |K1| @ Ef for 0.433Q3.1  (  6 A bipolar )

 !VALUE, Ef,KmaxQA,KmaxQE200,KmaxQE120,KmaxQx,KmaxQE110,KmaxQu

  TWM26 : BETA0

! ------------------------------------------------------------------------------

  SETXL_4GeV : SUBROUTINE
    SET, Ef, 4.0 ; SET, Eu, Ef
   !COMMENT !turn on UMXL1 (default)
      SET, R11XL1, 1.0   ! 1.098929204922070
      SET, R12XL1, Lundh ! 1.719551869522400
      SET, R21XL1, 0.0   ! 0.120755530037211
      SET, R22XL1, 1.0   ! 1.098929204922070
      SET, R33XL1, 1.0   ! 0.904229208659358
      SET, R34XL1, Lundh ! 1.611499871655030
      SET, R43XL1, 0.0   !-0.113167578486975
      SET, R44XL1, 1.0   ! 0.904229208659358
     !comment !UMXL1 on; WIGXL on (default)
        SET, SETXL2WIG, 1
        SET, KQEM2B, -1.865055848951 !-1.973605345097
        SET, KQEM3B,  1.216890682519 ! 1.331299697253
        SET, KQEM4B, -0.787262063572 !-1.754833260525
        SET, KQE31B,  0.383170001758 ! 1.277595256153
        SET, KQFXL1,  0.0            ! 1.090422741742
     !endcomment
      comment !UMXL1 on; WIGXL off
        SET, SETXL2WIG,  0
        SET, KQEM2B, -1.809226178133 !-1.98703633921
        SET, KQEM3B,  1.263611884326 ! 1.285093431874
        SET, KQEM4B, -0.891717464095 !-1.592853786707
        SET, KQE31B,  0.402753197993 ! 1.264501088423
        SET, KQFXL1,  0.0            ! 1.079018189246
      endcomment
   !ENDCOMMENT
   !COMMENT !turn on UMXL3 and UMXL4 (default)
      SET, R11XL3, 1.0    ! 1.098929204922070
      SET, R12XL3, Lundh  ! 1.719551869522400
      SET, R21XL3, 0.0    ! 0.120755530037211
      SET, R22XL3, 1.0    ! 1.098929204922070
      SET, R33XL3, 1.0    ! 0.904229208659358
      SET, R34XL3, Lundh  ! 1.611499871655030
      SET, R43XL3, 0.0    !-0.113167578486975
      SET, R44XL3, 1.0    ! 0.904229208659358
      SET, R11XL4, R11XL3
      SET, R12XL4, R12XL3
      SET, R21XL4, R21XL3
      SET, R22XL4, R22XL3
      SET, R33XL4, R33XL3
      SET, R34XL4, R34XL3
      SET, R43XL4, R43XL3
      SET, R44XL4, R44XL3
     !comment !UMXL3 and UMXL4 on; BCXXL self-seeding chicane on (default)
        SET, SETXL2SS, 1
        SET, KQFXL2,  0.0            ! 3.47482506037
        SET, KQE36B, -0.402753197988 ! 0.0
        SET, KQUM1B,  0.537307332375 !-1.301885841164
        SET, KQUM2B, -0.75458282549  ! 1.461236172683
        SET, KQUM3B,  1.195446484838 !-1.240844382987
        SET, KQUM4B, -1.227078284139 ! 0.791556197514
     !endcomment
      comment !UMXL3 and UMXL4 on; BCXXL self-seeding chicane off
        SET, SETXL2SS, 0
        SET, KQFXL2,  0.0            ! 3.476859941674
        SET, KQE36B, -0.402753197988 ! 0.0
        SET, KQUM1B,  0.561212670373 !-1.307652191336
        SET, KQUM2B, -0.786371244817 ! 1.468983435111
        SET, KQUM3B,  1.173213927861 !-1.252518608414
        SET, KQUM4B, -1.162531912424 ! 0.78942302041
      endcomment
   !ENDCOMMENT
  ENDSUBROUTINE

! ------------------------------------------------------------------------------

  MXL01 : SUBROUTINE !match into XLEAP-II
    BEAM, ENERGY=Ei
    USE, SC_SXRi
    VALUE, KQEM2B,KQEM3B,KQEM4B,KQE31B,KQFXL1
    MATCH, BETA0=TWSSi
      VARY, KQEM2B, STEP=1.E-6, LOWER=-KmaxQE200, UPPER=+KmaxQE200
      VARY, KQEM3B, STEP=1.E-6, LOWER=-KmaxQE120, UPPER=+KmaxQE120
      VARY, KQEM4B, STEP=1.E-6, LOWER=-KmaxQE120, UPPER=+KmaxQE120
      VARY, KQE31B, STEP=1.E-6, LOWER=-KmaxQx,    UPPER=+KmaxQx
     !VARY, KQFXL1, STEP=1.E-6, LOWER= 0,         UPPER=+KmaxQE110
      CONSTR, QEM2B[1], BETX<100, BETY<100
      CONSTR, QEM3B[1], BETX<100, BETY<100
      WEIGHT, DX=0, DPX=0, DY=0, DPY=0
      CONSTR, QE32B[1], LINE=(QE32B,DQEC,DQEC,QE33B,QE33B,DQEC,DQEC,QE32B)
      CONSTR, #E, X=0, PX=0, Y=0, PY=0
     !LMDIF, TOL=1.E-20
     !MIGRAD, TOL=1.E-20
    ENDMATCH
    VALUE, KQEM2B,KQEM3B,KQEM4B,KQE31B,KQFXL1
    PRINT, FULL
    TWISS, BETA0=TWSSi, SAVE, TAPE="twiss.tape"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, RANGE=MM1B/QE32B[1], &
      STYLE=100, SPLINE, FILE="match"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, RANGE=MM1B/WS34B, &
      STYLE=100, SPLINE, FILE="match"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, RANGE=VBOUTB/WS34B, &
      STYLE=100, SPLINE, FILE="match"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, RANGE=VBOUTB/MBLMS48, &
      STYLE=100, SPLINE, FILE="match"
  ENDSUBROUTINE

  MXL02 : SUBROUTINE !match XLEAP-II into UNDS
    BEAM, ENERGY=Ef
    USE, (SXCEL26,SXCEL27,SXCEL28,SXCEL29, &
          SXCEL30,SXCEL31,SXCEL32,SXCEL33)
    SAVEBETA, TWm26, #S
    TWISS
    SET, MBETX, TWm26[BETX]
    SET, MALFX, TWm26[ALFX]
    SET, MBETY, TWm26[BETY]
    SET, MALFY, TWm26[ALFY]

    BEAM, ENERGY=Ei
    USE, SC_SXRi
    VALUE, KQFXL2,KQE36B,KQUM1B,KQUM2B,KQUM3B,KQUM4B
    MATCH, BETA0=TWSSi
     !VARY, KQFXL2, STEP=1.E-6, LOWER= 0,         UPPER=+KmaxQE110
      VARY, KQE36B, STEP=1.E-6, LOWER=-KmaxQx,    UPPER= 0
      VARY, KQUM1B, STEP=1.E-6, LOWER=-KmaxQE120, UPPER=+KmaxQE120
      VARY, KQUM2B, STEP=1.E-6, LOWER=-KmaxQE120, UPPER=+KmaxQE120
      VARY, KQUM3B, STEP=1.E-6, LOWER=-KmaxQE120, UPPER=+KmaxQE120
      VARY, KQUM4B, STEP=1.E-6, LOWER=-KmaxQE120, UPPER=+KmaxQE120
      CONSTR, QUM1B[1], BETX<90, BETY<90
      CONSTR, QUM2B[1], BETX<90, BETY<90
      CONSTR, QUM3B[1], BETX<90, BETY<90
      CONSTR, QUM4B[1], BETX<90, BETY<90
      WEIGHT, BETX=1, ALFX=10, BETY=1, ALFY=10
      CONSTR, SXR26BEG, BETX=MBETX, ALFX=MALFX, BETY=MBETY, ALFY=MALFY
      CONSTR, SXR26BEG, X=0, PX=0, Y=0, PY=0
     !LMDIF, TOL=1.E-20, CALLS=10000
     !MIGRAD, TOL=1.E-20, CALLS=10000
    ENDMATCH

    VALUE, KQFXL2,KQE36B,KQUM1B,KQUM2B,KQUM3B,KQUM4B
    PRINT, FULL
    TWISS, BETA0=TWSSi, SAVE, TAPE="twiss.tape"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE, RANGE=WS33B/SXR26BEG, FILE="match"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE, RANGE=WS31B/SXR46END, FILE="match"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE, RANGE=MM1B/SXR46END, FILE="match"
  ENDSUBROUTINE

! ------------------------------------------------------------------------------

! to run XLEAP-II optics, use SETXL_4GeV; uncomment blocks with the desired
! undulator(s) turned on (UMXL1 and/or UMXL3&UMXL4); within the selected
! block(s), turn on WIGXL and/or BCXLSS chicane

  SET, SETSP, SETSPs ; SET, SETCUS, CUSOFF
  SETXL_4GeV

 !MXL01
 !MXL02

 !COMMENT !SXR from SC linac (XLEAP-II)
    UMXL1h, TYPE="UMXL1-XL2"
    UMXL3h, TYPE="UMXL3-XL2"
    UMXL4h, TYPE="UMXL4-XL2"
    WIGXLh, TYPE="WIGXL-XL2"

    ASSIGN, PRINT="LCLS2scS-XL2.print"
    TITLE, "AD_ACCEL: superconducting linac to SXR (XLEAP)"
    BEAM, ENERGY=Ei
    USE, SC_SXRi
    PRINT, FULL
    SURVEY, X0=Xgun, Y0=Ygun, Z0=Zi, TAPE="LCLS2scS-XL2_survey.tape"
    TWISS, BETA0=TWSSi, SAVE, TAPE="LCLS2scS-XL2_twiss.tape" !, &
   !  RTAPE="LCLS2scS-XL2_rmat.tape"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE, RANGE=WS31B/SXR46END, FILE="LCLS2scS-XL2", &
      TITLE="XLEAP-II (from SC linac): LTUS-UNDS"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
      STYLE=100, SPLINE, RANGE=SXR46END/#E, FILE="LCLS2scS-XL2", &
      TITLE="XLEAP-II (from SC linac): DMPS"
 !ENDCOMMENT

! ------------------------------------------------------------------------------

  RETURN
