
! *** OPTICS=LCLS2sc01MAR14 ***

! LCLS2sc L2 linac matching routines

! ==============================================================================
! SUBROUTINEs
! ------------------------------------------------------------------------------

  ML2e : SUBROUTINE
    VALUE, GradL2
    BEAM, ENERGY=E1
    USE, L2
    MATCH, BETX=1, BETY=1
      VARY, GradL2, STEP=1.E-6
      WEIGHT, ENERGY=1
      CONSTR, #E, ENERGY=E2
      LMDIF, TOL=1.E-20, CALLS=10000
      MIGRAD, TOL=1.E-20, CALLS=10000
    ENDMATCH
    VALUE, GradL2
    BEAM, ENERGY=E1
    USE, L2
    TWISS, BETX=1, BETY=1, SAVE
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=ENERGY, &
      STYLE=100, SPLINE=.T., FILE="L2"
  ENDSUBROUTINE

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

 !BXCMfodo2 := 61.477468156554 !L2: 30 degrees per cell
 !BYCMfodo2 := 36.274091990807 !L2: 30 degrees per cell

  SET, BXL2M, 32.805926544601
  SET, AXL2M, 0.101692008662
  SET, BYL2M, 59.999997221409
  SET, AYL2M, -0.044077844708

  ML2acc : SUBROUTINE
    BEAM, ENERGY=E1
    USE, L2
    MATCH, BETX=BXL2m, ALFX=AXL2m, BETY=BYL2m, ALFY=AYL2m
      VARY, BXL2m, STEP=1.E-6, LOWER=30, UPPER=40
      VARY, AXL2m, STEP=1.E-6
      VARY, BYL2m, STEP=1.E-6, LOWER=50, UPPER=60
      VARY, AYL2m, STEP=1.E-6
      VARY, QCM04[K1], STEP=1.E-6, UPPER=0
      VARY, QCM05[K1], STEP=1.E-6, LOWER=0
      VARY, QCM06[K1], STEP=1.E-6, UPPER=0
      VARY, QCM07[K1], STEP=1.E-6, LOWER=0
      VARY, QCM08[K1], STEP=1.E-6, UPPER=0
      VARY, QCM09[K1], STEP=1.E-6, LOWER=0
      VARY, QCM10[K1], STEP=1.E-6, UPPER=0
      VARY, QCM11[K1], STEP=1.E-6, LOWER=0
      VARY, QCM12[K1], STEP=1.E-6, UPPER=0
      VARY, QCM13[K1], STEP=1.E-6, LOWER=0
      VARY, QCM14[K1], STEP=1.E-6, UPPER=0
      CONSTR, QCM04[1], BETY=BXCMfodo2
      CONSTR, QCM05[1], BETX=BXCMfodo2
      CONSTR, QCM06[1], BETY=BXCMfodo2
      CONSTR, QCM07[1], BETX=BXCMfodo2
      CONSTR, QCM08[1], BETY=BXCMfodo2
      CONSTR, QCM09[1], BETX=BXCMfodo2
      CONSTR, QCM10[1], BETY=BXCMfodo2
      CONSTR, QCM11[1], BETX=BXCMfodo2
      CONSTR, QCM12[1], BETY=BXCMfodo2
      CONSTR, QCM13[1], BETX=BXCMfodo2
      CONSTR, QCM14[1], BETY=BXCMfodo2
      CONSTR, QCM15[1], BETX=BXCMfodo2
      WEIGHT, BETX=0.01, BETY=0.01
      CONSTR, QCM04[1], BETX=BYCMfodo2
      CONSTR, QCM05[1], BETY=BYCMfodo2
      CONSTR, QCM06[1], BETX=BYCMfodo2
      CONSTR, QCM07[1], BETY=BYCMfodo2
      CONSTR, QCM08[1], BETX=BYCMfodo2
      CONSTR, QCM09[1], BETY=BYCMfodo2
      CONSTR, QCM10[1], BETX=BYCMfodo2
      CONSTR, QCM11[1], BETY=BYCMfodo2
      CONSTR, QCM12[1], BETX=BYCMfodo2
      CONSTR, QCM13[1], BETY=BYCMfodo2
      CONSTR, QCM14[1], BETX=BYCMfodo2
      CONSTR, QCM15[1], BETY=BYCMfodo2
      LMDIF, TOL=1.E-20, CALLS=10000
      MIGRAD, TOL=1.E-20, CALLS=10000
    ENDMATCH
    VALUE, BXL2m,AXL2m,BYL2m,AYL2m
    VALUE, QCM04[K1],QCM05[K1],QCM06[K1],QCM07[K1],QCM08[K1],QCM09[K1]
    VALUE, QCM10[K1],QCM11[K1],QCM12[K1],QCM13[K1],QCM14[K1],QCM15[K1]
    BEAM, ENERGY=E1
    USE, L2
    PRINT, FULL
    TWISS, BETX=BXL2m, ALFX=AXL2m, BETY=BYL2m, ALFY=AYL2m, SAVE
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE=.T., FILE="L2"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=ENERGY, &
      STYLE=100, SPLINE=.T., FILE="L2"
  ENDSUBROUTINE

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

 !ML2e
 !ML2acc

 !SET, GradL2, 0
 !SET, PhasL2, 0

 !COMMENT
    BEAM, ENERGY=E1
    USE, L2
    PRINT, FULL
    SAVEBETA, TWSSm, QCM07[1]
    TWISS, BETX=BXL2m, ALFX=AXL2m, BETY=BYL2m, ALFY=AYL2m, SAVE, &
      TAPE="twiss.tape"
    VALUE, TWSSm[BETX],TWSSm[ALFX],TWSSm[BETY],TWSSm[ALFY]
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE=.T., FILE="L2"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=ENERGY, &
      STYLE=100, SPLINE=.T., FILE="L2"
 !ENDCOMMENT

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

  RETURN
