
! *** OPTICS=AD_ACCEL-01JAN2025s ***

! XLEAP-II optics

! ==============================================================================
! Modification History
! ------------------------------------------------------------------------------
! 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_8GeV : SUBROUTINE
    SET, Ef, 8.0 ; SET, Eu, Ef
   !COMMENT !turn on UMXL1 (default)
      SET, R11XL1, 1.0   ! 1.024433796036150 
      SET, R12XL1, Lundh ! 1.678538794967410 
      SET, R21XL1, 0.0   ! 0.029468846719147 
      SET, R22XL1, 1.0   ! 1.024433796036150 
      SET, R33XL1, 1.0   ! 0.975763600637818 
      SET, R34XL1, Lundh ! 1.651526938083830 
      SET, R43XL1, 0.0   !-0.028994619806734 
      SET, R44XL1, 1.0   ! 0.975763600637818 
     !comment !UMXL1 on; WIGXL on (default)
        SET, SETXL2WIG, 1
        SET, KQEM2B, -1.822581085609 !-1.834046330639
        SET, KQEM3B,  1.252473584698 ! 1.281881645665
        SET, KQEM4B, -0.867784240163 !-0.677895600383
        SET, KQE31B,  0.398863482357 ! 0.0
        SET, KQFXL1,  0.0            ! 0.765886449932
     !endcomment
      comment !UMXL1 on; WIGXL off
        SET, SETXL2WIG, 0
        SET, KQEM2B, -1.808608302717 !-1.822070435389
        SET, KQEM3B,  1.263487899148 ! 1.295717708237
        SET, KQEM4B, -0.892866479123 !-0.70591416778
        SET, KQE31B,  0.403466645832 ! 0.0
        SET, KQFXL1,  0.0            ! 0.770168135984
      endcomment
   !ENDCOMMENT
   !COMMENT !turn on UMXL3 and UMXL4 (default)
      SET, R11XL3, 1.0   ! 1.024433796036150
      SET, R12XL3, Lundh ! 1.678538794967410
      SET, R21XL3, 0.0   ! 0.029468846719147
      SET, R22XL3, 1.0   ! 1.024433796036150
      SET, R33XL3, 1.0   ! 0.975763600637818
      SET, R34XL3, Lundh ! 1.651526938083830
      SET, R43XL3, 0.0   !-0.028994619806734
      SET, R44XL3, 1.0   ! 0.975763600637818
      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            ! 1.038528489949
        SET, KQE36B, -0.348500537681 !-0.379207335859
        SET, KQUM1B,  0.598491278242 ! 0.35869201539
        SET, KQUM2B, -0.917684366978 ! 0.192875610206
        SET, KQUM3B,  0.821057649925 !-1.104395797104
        SET, KQUM4B, -0.38348664644  ! 0.790860357154
     !endcomment
      comment !UMXL3 and UMXL4 on; BCXXL self-seeding chicane off
        SET, SETXL2SS, 0
        SET, KQFXL2,  0.0            ! 1.184331571212
        SET, KQE36B, -0.402023027698 !-0.439481744911
        SET, KQUM1B,  0.605183518851 ! 0.203239728799
        SET, KQUM2B, -0.880566035085 ! 0.316828417496
        SET, KQUM3B,  0.883007635371 !-1.099871957004
        SET, KQUM4B, -0.526314258453 ! 0.915018568731
      endcomment
   !ENDCOMMENT
  ENDSUBROUTINE

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

  MXL01 : SUBROUTINE !match into XLEAP-II
    BEAM, ENERGY=E00
    USE, CU_SXR
    VALUE, KQEM2B,KQEM3B,KQEM4B,KQE31B,KQFXL1
    MATCH, BETA0=TWSSC
      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
      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
    TWISS, SAVE, BETA0=TWSSC, TAPE="twiss.tape"
    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=E00
    USE, CU_SXR
    VALUE, KQFXL2,KQE36B,KQUM1B,KQUM2B,KQUM3B,KQUM4B
    MATCH, BETA0=TWSSC
     !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<76, BETY<76
      CONSTR, QUM2B[1], BETX<76, BETY<76
      CONSTR, QUM3B[1], BETX<76, BETY<76
      CONSTR, QUM4B[1], BETX<76, BETY<76
      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
     !MIGRAD, TOL=1.E-20
    ENDMATCH
    VALUE, KQFXL2,KQE36B,KQUM1B,KQUM2B,KQUM3B,KQUM4B
    PRINT, FULL
    TWISS, SAVE, BETA0=TWSSC, TAPE="twiss.tape"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE, RANGE=WS31B/MBLMS48, FILE="match"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE, RANGE=MM1B/MBLMS48, FILE="match"
  ENDSUBROUTINE

! ------------------------------------------------------------------------------
! create ELEGANT beamline (start at WS02)
! ------------------------------------------------------------------------------

  BEGDL1_1e : MARK
  ENDDL1_1e : MARK

  DL1_1e : LINE=(BEGDL1_1e,&
    WS02,DE05a,MRK0,DE05a,OTR2,DE06d,BPM10,DE06e,WS03,DE05,OTR3,DE07,&
    QM01,BPM11,QM01,DE08,SC8,DE08a,VV04,DE08b,&
    QM02,BPM12,QM02,DE09,DBMARK82,&
    ENDDL1_1e)

  LCLS2cuSe : LINE=(DL1_1e,DL1_2,L1,BC1,L2,BC2,L3,BSYLTUS)

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

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

  SET, SETCUS, CUSON
  SETK2cuS
  SETXL_8GeV

 !MXL01
 !MXL02

 !COMMENT !SXR from Cu linac (XLEAP-II)
    ASSIGN, PRINT="LCLS2cuS-XL2.print"
    TITLE, "AD_ACCEL: copper linac to SXR (XLEAP)"
    BEAM, ENERGY=Ei
    USE, LCLS2cuSe
    PRINT, FULL
    SURVEY, X0=XWS02, Z0=ZWS02, THETA0=ADL1, TAPE="LCLS2cuS-XL2_survey.tape"
    TWISS, SAVE, BETA0=TWSSi, TAPE="LCLS2cuS-XL2_twiss.tape" !, &
   !  RTAPE="LCLS2cuS-XL2_rmat.tape"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE, RANGE=WS31B/SXR46END, FILE="LCLS2cuS-XL2", &
      TITLE="XLEAP-II (from Cu linac): LTUS-UNDS"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
      STYLE=100, SPLINE, RANGE=SXR46END/#E, FILE="LCLS2cuS-XL2", &
      TITLE="XLEAP-II (from Cu linac): DMPS"
 !ENDCOMMENT

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

  RETURN
