
! *** OPTICS=LCLS2sc01MAR14 ***

! LCLS2sc L3 linac matching routines

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

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

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

  ML3acc : SUBROUTINE
    BEAM, ENERGY=E2
    USE, L3
    MATCH, BETX=BXL3m, ALFX=AXL3m, BETY=BYL3m, ALFY=AYL3m
      VARY, BXL3m, STEP=1.E-6, LOWER=0
      VARY, AXL3m, STEP=1.E-6
      VARY, BYL3m, STEP=1.E-6, LOWER=0
      VARY, AYL3m, STEP=1.E-6
      VARY, QCM16[K1], STEP=1.E-6, LOWER=0
      VARY, QCM17[K1], STEP=1.E-6, UPPER=0
      VARY, QCM18[K1], STEP=1.E-6, LOWER=0
      VARY, QCM19[K1], STEP=1.E-6, UPPER=0
      VARY, QCM20[K1], STEP=1.E-6, LOWER=0
      VARY, QCM21[K1], STEP=1.E-6, UPPER=0
      VARY, QCM22[K1], STEP=1.E-6, LOWER=0
      VARY, QCM23[K1], STEP=1.E-6, UPPER=0
      VARY, QCM24[K1], STEP=1.E-6, LOWER=0
      VARY, QCM25[K1], STEP=1.E-6, UPPER=0
      VARY, QCM26[K1], STEP=1.E-6, LOWER=0
      VARY, QCM27[K1], STEP=1.E-6, UPPER=0
      VARY, QCM28[K1], STEP=1.E-6, LOWER=0
      VARY, QCM29[K1], STEP=1.E-6, UPPER=0
      VARY, QCM30[K1], STEP=1.E-6, LOWER=0
      VARY, QCM31[K1], STEP=1.E-6, UPPER=0
      VARY, QCM32[K1], STEP=1.E-6, LOWER=0
      VARY, QCM33[K1], STEP=1.E-6, UPPER=0
      VARY, QCM34[K1], STEP=1.E-6, LOWER=0
      CONSTR, QCM16[1], BETX=BXCMfodo3
      CONSTR, QCM17[1], BETY=BXCMfodo3
      CONSTR, QCM18[1], BETX=BXCMfodo3
      CONSTR, QCM19[1], BETY=BXCMfodo3
      CONSTR, QCM20[1], BETX=BXCMfodo3
      CONSTR, QCM21[1], BETY=BXCMfodo3
      CONSTR, QCM22[1], BETX=BXCMfodo3
      CONSTR, QCM23[1], BETY=BXCMfodo3
      CONSTR, QCM24[1], BETX=BXCMfodo3
      CONSTR, QCM25[1], BETY=BXCMfodo3
      CONSTR, QCM26[1], BETX=BXCMfodo3
      CONSTR, QCM27[1], BETY=BXCMfodo3
      CONSTR, QCM28[1], BETX=BXCMfodo3
      CONSTR, QCM29[1], BETY=BXCMfodo3
      CONSTR, QCM30[1], BETX=BXCMfodo3
      CONSTR, QCM31[1], BETY=BXCMfodo3
      CONSTR, QCM32[1], BETX=BXCMfodo3
      CONSTR, QCM33[1], BETY=BXCMfodo3
      CONSTR, QCM34[1], BETX=BXCMfodo3
      CONSTR, QCM35[1], BETY=BXCMfodo3
      WEIGHT, BETX=0.01, BETY=0.01
      CONSTR, QCM16[1], BETY=BYCMfodo3
      CONSTR, QCM17[1], BETX=BYCMfodo3
      CONSTR, QCM18[1], BETY=BYCMfodo3
      CONSTR, QCM19[1], BETX=BYCMfodo3
      CONSTR, QCM20[1], BETY=BYCMfodo3
      CONSTR, QCM21[1], BETX=BYCMfodo3
      CONSTR, QCM22[1], BETY=BYCMfodo3
      CONSTR, QCM23[1], BETX=BYCMfodo3
      CONSTR, QCM24[1], BETY=BYCMfodo3
      CONSTR, QCM25[1], BETX=BYCMfodo3
      CONSTR, QCM26[1], BETY=BYCMfodo3
      CONSTR, QCM27[1], BETX=BYCMfodo3
      CONSTR, QCM28[1], BETY=BYCMfodo3
      CONSTR, QCM29[1], BETX=BYCMfodo3
      CONSTR, QCM30[1], BETY=BYCMfodo3
      CONSTR, QCM31[1], BETX=BYCMfodo3
      CONSTR, QCM32[1], BETY=BYCMfodo3
      CONSTR, QCM33[1], BETX=BYCMfodo3
      CONSTR, QCM34[1], BETY=BYCMfodo3
      CONSTR, QCM35[1], BETX=BYCMfodo3
      LMDIF, TOL=1.E-20, CALLS=10000
      MIGRAD, TOL=1.E-20, CALLS=10000
    ENDMATCH
    VALUE, BXL3m,AXL3m,BYL3m,AYL3m
    VALUE, QCM16[K1],QCM17[K1],QCM18[K1],QCM19[K1],QCM20[K1]
    VALUE, QCM21[K1],QCM22[K1],QCM23[K1],QCM24[K1],QCM25[K1]
    VALUE, QCM26[K1],QCM27[K1],QCM28[K1],QCM29[K1],QCM30[K1]
    VALUE, QCM31[K1],QCM32[K1],QCM33[K1],QCM34[K1],QCM35[K1]
    BEAM, ENERGY=E2
    USE, L3
    PRINT, FULL
    TWISS, BETX=BXL3m, ALFX=AXL3m, BETY=BYL3m, ALFY=AYL3m, SAVE
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE=.T., FILE="L3"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=ENERGY, &
      STYLE=100, SPLINE=.T., FILE="L3"
  ENDSUBROUTINE

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

 !ML3e
  ML3acc

 !SET, GradL3, 0
 !SET, PhasL3, 0

  COMMENT
    BEAM, ENERGY=E2
    USE, L3
    PRINT, FULL
    TWISS, BETX=BXL3m, ALFX=AXL3m, BETY=BYL3m, ALFY=AYL3m, SAVE, &
      TAPE="twiss.tape"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE=.T., FILE="CMfodo"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=ENERGY, &
      STYLE=100, SPLINE=.T., FILE="CMfodo"
  ENDCOMMENT

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

  RETURN
