  TITLE, "AD_ACCEL (October 17, 2023)" ! copper linac

! *** OPTICS=AD_ACCEL-17OCT23 ***

  OPTION, -ECHO, INFO, WARN, VERIFY
  ASSIGN, ECHO="LCLS2cu.echo"
  ASSIGN, PRINT="LCLS2cu.print"

! ==============================================================================
! Modification History
! ------------------------------------------------------------------------------
! 07-AUG-2019, M. Woodley
!  * remove "h" from names of split elements
!  * create "_full" sub-LINEs for split elements
! ------------------------------------------------------------------------------
! 22-JAN-2016, M. Woodley
!  * start LCLS2cuS at CATHODE; EBC2=3.0, Ef=4.0 (Eu=4.0)
!  * add SETcu4GeV to rematch through lower energy linac
!  * modify color plots for LCLS2cuS
! ------------------------------------------------------------------------------
! 30-OCT-2018, M. Woodley
!  * set IntgSX= 20 kG (was 30 kG) for 4 GeV beam (cuS and scS optics identical
!    downstream of QDL11)
! ------------------------------------------------------------------------------
! 19-JUL-2017, M. Woodley
!  * structural changes in deck to accomodate MAD-to-BMAD
! ------------------------------------------------------------------------------
! 01-MAR-2017, M. Woodley
!  * WS24 is actually installed (per LCLS)
! ------------------------------------------------------------------------------
! 25-SEP-2015, Y. Nosochkov
!  * rename LCLS1AL to LCLS2cuAL
!  * load ALINE.xsif before LTU.xsif
!  * load SPRD.xsif
! 24-AUG-2015, Y. Nosochkov
!  * see list of changes in .xsif files
! ------------------------------------------------------------------------------
! 19-JUN-2015, Y. Nosochkov
!  * see list of changes in .xsif files and in file MADdeckChanges.pdf
! ------------------------------------------------------------------------------
! 12-MAR-2015, Y. Nosochkov
!  * remove PCTDKIK1-4 collimators in BSY1 (per S. Mao)
!  * use kicker/septum or pulsed magnets to connect BSY with the A-line
!  * add CUSXR beamline for transport from Cu-linac to SXR
! ------------------------------------------------------------------------------
! 09-DEC-2014, Y. Nosochkov
!  * update initial Twiss and survey coordinates at BSY1BEG
! ------------------------------------------------------------------------------
! 28-OCT-2014, M. Woodley
!  * redefine DBMARK29 to be LI30 IV30-9 (Z=3042.005)
! ------------------------------------------------------------------------------
! 15-SEP-2014, Y. Nosochkov
!  * designate BSY1 line connecting the end of LCLS1 L3 with the beginning of
!    LCLS2 HXR merge bend BXSP1h
! 02-MAY-2014, Y. Nosochkov
!  * rematch HXR undulator for 13.64 GeV and 40 kG quad integral field
! 18-APR-2014, Y. Nosochkov
!  * combine upstream LCLS1 lattice with downstream LCLS2scH lattice
! ==============================================================================

! ==============================================================================
! Beamline area names (see LCLSII-2.1-PR-0134)
!   https://docs.slac.stanford.edu/sites/pub/Publications/
!   Beamline Boundaries.pdf
! ------------------------------------------------------------------------------
! Cu linac common areas
! ------------------------------------------------------------------------------
! GUN    : cathode to BXG u/s face
! L0     : L0A and L0B
! DL1_1  : laser heater, diagnostics, matching
! DL1_2  : injection into main linac
! L1     : L1 linac (21-1b,c,d)
! BC1    : L1X and BC1 chicane
! L2     : L2 linac (21-3, LI22, LI23, LI24->24-6)
! BC2    : BC2 chicane
! L3     : L2 linac (LI25, LI26, LI27, LI28, LI29, LI30->30-8c)
! CLTH_0 : end of linac sector 30 to start of BSY (wooden door)
! CLTH_1 : start of BSY to CUSXR kicker
! ------------------------------------------------------------------------------
! Cu linac to HXR areas
! ------------------------------------------------------------------------------
! CLTH_2 : CUSXR kickers to Cu/SC linac merge (HXR line)
! BSYH_1 : Cu/SC linac merge to A-line kickers
! BSYH_2 : A-line kickers to end of BSY
! LTUH   : HXR LTU (from end of BSY)
! UNDH   : HXR undulator
! DMPH_1 : HXR post-undulator line
! DMPH_2 : HXR dump line
! SFTH_1 : BYDSH u/s face to BXPM1 u/s face
! SFTH_2 : BXPM1 u/s face to HXR safety dump
! HXTES  : BXPM1 u/s face to HXR XTES (BSY coordinate SURVEY only)
! ------------------------------------------------------------------------------
! Cu linac to SXR areas
! ------------------------------------------------------------------------------
! CUSXR  : CUSXR kicker to Cu/SC linac merge
! BSYS   : Cu/SC merge to end of BSY
! LTUS   : SXR LTU (from end of BSY)
! UNDS   : SXR extension + SXR undulator
! DMPS_1 : SXR post-undulator line
! DMPS_2 : SXR dump line
! SFTS_1 : BYDSS u/s face to BXPM1B u/s face
! SFTS_2 : BXPM1B u/s face to SXR safety dump
! SXTES  : BXPM1B u/s face to SXR XTES (BSY coordinate SURVEY only)
! ------------------------------------------------------------------------------
! Cu linac to other areas
! ------------------------------------------------------------------------------
! GSPEC  : 6 MeV spectrometer
! SPEC   : 135 MeV spectrometer
! BSYA_1 : A-line kickers to A-line merge
! BSYA_2 : A-line merge to Beam Dump East
! ==============================================================================

! ------------------------------------------------------------------------------
! deflector switch definitions
! ------------------------------------------------------------------------------

  SETSP     := 0 !deflector switch for HXR/SXR/BSYD spreader
  SETCUS    := 0 !deflector switch for HXR/CUSXR
  SETAL     := 0 !deflector switch for HXR/Aline
  SETDA     := 0 !deflector switch for BSYD/DASEL
  SETXLEAP2 := 0 !selector switch for XLEAP-II components

  SETHXRSS  := 0 !ON/OFF switch for HXR self-seeding chicane
  SETSXRSS  := 0 !ON/OFF switch for SXR self-seeding chicane
  SETPEPX   := 0 !ON/OFF switch for PEPPEx chicane
  SETCBXFEL := 0 !ON/OFF switch for CBXFEL chicanes

! ------------------------------------------------------------------------------
! integrated gradients for undulator quadrupoles
! ------------------------------------------------------------------------------

  IntgSX := 30.0 !kG
  IntgHX := 30.0 !kG

! ------------------------------------------------------------------------------
! element and line definitions
! ------------------------------------------------------------------------------

  CALL, FILENAME="LCLS2cu_master.xsif"

! ------------------------------------------------------------------------------
! input beam definitions
! ------------------------------------------------------------------------------

  SIG0  : SIGMA0, SIGX=SQRT(SIG11), SIGPX=SQRT(SIG22), R21=C21, &
                  SIGY=SQRT(SIG33), SIGPY=SQRT(SIG44), R43=C43, &
                  SIGT=BLENG,       SIGPT=ESPRD

  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=E00, EX=EMITX, EY=EMITY, &
        SIGT=BLENG, SIGE=ESPRD

! ------------------------------------------------------------------------------
! BETA0 block definitions
! ------------------------------------------------------------------------------

! twiss parameters at L0a-exit:

  TWSS0 : BETA0, ENERGY=E0i, BETX=TBETX, ALFX=TALFX, BETY=TBETY, ALFY=TALFY

! Dummy, fitted twiss parameters at cathode which yield the above twiss parameters at
! L0a-exit (for plotting purposes only - assumes only drift between cathode and L0a-exit)

  TWSSC : BETA0, ENERGY=E00, BETX=CBETX, ALFX=CALFX, BETY=CBETY, ALFY=CALFY

! Twiss at OTR2

  TWSSi : BETA0, ENERGY=Ei, BETX=BXi, ALFX=AXi, BETY=BYi, ALFY=AYi

! Twiss at the beginning of L3 linac

  TWBEGL3 : BETA0, BETX=BXBEGL3, ALFX=AXBEGL3, &
                   BETY=BYBEGL3, ALFY=AYBEGL3, ENERGY=ENBEGL3

! Twiss at the end of L3 linac

  TWENDL3 : BETA0, BETX=BXENDL3, ALFX=AXENDL3, &
                   BETY=BYENDL3, ALFY=AYENDL3, ENERGY=ENENDL3

! Twiss at the entrance of CUSXR kicker (BEGCLTS)

  TWSCUS1 : BETA0, BETX=TBXCUS1, ALFX=TAXCUS1, BETY=TBYCUS1, ALFY=TAYCUS1

! periodic Twiss in HXR dogleg cells (copy from LCLS2sc_main.mad8)

  TWSSmh : BETA0, ENERGY=Ef, BETX=MBETXh, ALFX=MALFXh, BETY=MBETYh, ALFY=MALFYh

! periodic Twiss in SXR dogleg cells (at QDL12 center)

  TWSSms : BETA0, ENERGY=Ef, BETX=MBETXs, ALFX=MALFXs, BETY=MBETYs, ALFY=MALFYs

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

! special redefinitions for Cu-linac (high energy) beam passing through lattice
! defined for SC-linac (low energy) beam

  SETK2cuH : SUBROUTINE !for LCLS2cuH

  ! set quad strengths for 8 GeV Cu-linac beam to DMPH

    SET, KQ50Q3,  0.384840836193
    SET, KQ4,    -0.219396715005
    SET, KQ5,     0.165708852383
    SET, KQ6,    -0.113569101471
    SET, KQA0,    0.109210100868
  !               Yuri (8.0/2.0)
  !              ---------------
    SET, KQUM1,   0.272741408897
    SET, KQUM2,  -0.270601268265
    SET, KQUM3,   0.278762678373
    SET, KQUM4,  -0.247470889897
    SET, kQHX46, -1.734624260269
    SET, KQUE1,   0.169109252491
    SET, KQUE2,  -0.137840816238
    SET, KQDMP,  -0.155212710055
  ENDSUBROUTINE

  SETK2cuS : SUBROUTINE !for LCLS2cuS

  ! set quad strengths for 8 GeV Cu-linac beam to DMPS

  !                Mark rematch     Yuri rematch       22JAN21
  !              ---------------  ---------------  ---------------
    SET, KQBP33, -0.645066535808 !-0.64483675561  !-0.644549451693
    SET, KQBP34,  0.592977153135 ! 0.594232917856 ! 0.595248248123
    SET, KQDBL1, -1.045760158543 !-1.056286788769 !-1.067412487101
    SET, KQDBL2,  0.585600770813 ! 0.600969748735 ! 0.618987949218
    SET, KQDL11,  0.358732502069
  !                Mark rematch    Yuri (8.0/5.0)
  !              ---------------  ---------------
    SET, KQUM1B,                   0.311729673613
    SET, KQUM2B,                  -0.13
    SET, KQUM3B,                   0.384569277452
    SET, KQUM4B,                  -0.61774146348
    SET, KQSX16,  0.677696586055 ! 0.677894017174
    SET, KQSX19, -0.894080323674 !-0.893321229694
    SET, KQSX21,  0.902720730991 ! 0.901518123026
    SET, KQSX24, -0.825788398259 !-0.825282828044
    SET, KQDSXM,                  -1.843482712046
    SET, KQUE1B,                   0.325725075565
    SET, KQUE2B,                  -0.144356640751
    SET, KQDMPB,                  -0.154946553294
  ENDSUBROUTINE

  SETK2cuA : SUBROUTINE !for LCLS2cuA

  ! set quad strengths for 8 GeV Cu-linac beam to Aline

    SET, KQ50Q3,  0.384840836193 !from SETK2cuH
    SET, KQ4,    -0.219396715005 !from SETK2cuH
    SET, KQ10,    0.042155252569
    SET, KQ11,   -0.037534648193
    SET, KQ19,    0.028451022652
    SET, KQ20,    0.013158276826
    SET, KQ27,   -0.05915714658
    SET, KQ28,    0.0
    SET, KQ30,   -0.030016910355
    SET, KQ38,    0.035190121249
  ENDSUBROUTINE

! ==============================================================================
! for testing the online Matlab model
! ------------------------------------------------------------------------------

  COMMENT !for testing the online Matlab model
    BEAM, ENERGY=E00
    USE, CU_GSPEC
    TWISS, BETA0=TWSSC, TAPE="LCLS2cuGSPEC_twiss.tape", &
      RTAPE="LCLS2cuGSPEC_rmat.tape"

    BEAM, ENERGY=E00
    USE, CU_SPEC
    TWISS, BETA0=TWSSC, TAPE="LCLS2cuSPEC_twiss.tape", &
      RTAPE="LCLS2cuSPEC_rmat.tape"
    BEAM, ENERGY=Ei
    USE, CU_SPECi
    TWISS, BETA0=TWSSi, TAPE="LCLS2cuSPECi_twiss.tape", &
      RTAPE="LCLS2cuSPECi_rmat.tape"

    SET, SETCUS, CUSOFF ; SET, SETAL, ALOFF
    SETK2cuH
    BEAM, ENERGY=E00
    USE, CU_HXR
    TWISS, BETA0=TWSSC, TAPE="LCLS2cuH_twiss.tape", &
      RTAPE="LCLS2cuH_rmat.tape"
    BEAM, ENERGY=Ei
    USE, CU_HXRi
    TWISS, BETA0=TWSSi, TAPE="LCLS2cuHi_twiss.tape", &
      RTAPE="LCLS2cuHi_rmat.tape"

    SET, SETCUS, CUSOFF ; SET, SETAL, ALON
    SETK2cuA
    BEAM, ENERGY=E00
    USE, CU_ALINE
    TWISS, BETA0=TWSSC, TAPE="LCLS2cuA_twiss.tape", &
      RTAPE="LCLS2cuA_rmat.tape"
    BEAM, ENERGY=Ei
    USE, CU_ALINEi
    TWISS, BETA0=TWSSi, TAPE="LCLS2cuAi_twiss.tape", &
      RTAPE="LCLS2cuAi_rmat.tape"

    SET, SETCUS, CUSON !pulsed
    SETK2cuS
    BEAM, ENERGY=E00
    USE, CU_SXR
    TWISS, BETA0=TWSSC, TAPE="LCLS2cuS_twiss.tape", &
      RTAPE="LCLS2cuS_rmat.tape"
    BEAM, ENERGY=Ei
    USE, CU_SXRi
    TWISS, BETA0=TWSSi, TAPE="LCLS2cuSi_twiss.tape", &
      RTAPE="LCLS2cuSi_rmat.tape"

    STOP
  ENDCOMMENT

! ==============================================================================
! COMMANDs
! ------------------------------------------------------------------------------

  SETPLOT, XSIZE=25.4, YSIZE=20.32
  SETPLOT, LWIDTH=5, LSCALE=1.5, SSCALE=1.5, RSCALE=1.5
  OPTION, ECHO

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

 !CALL, FILENAME="LCLS2cu_match.mad8"
 !CALL, FILENAME="LCLS2cu_XLEAP.mad8"
 !CALL, FILENAME="RDB/LCLS2cu_makeSymbols.mad8"
 !CALL, FILENAME="elegant/LCLS2cu_makeElegant.mad8" !use LCLS_L*e.xsif

 !STOP

! ------------------------------------------------------------------------------
! SURVEY in linac coordinates
! ------------------------------------------------------------------------------

! HXR

 !COMMENT
    ASSIGN, PRINT="LCLS2cuH.print"
    BEAM, ENERGY=E00
    SET, SETCUS, CUSOFF ; SET, SETAL, ALOFF
    SETK2cuH
    USE, CU_HXR
   !SAVELINE, NAME="CU_HXR", FILENAME="LCLS2cuH.saveline"
    PRINT, FULL
    SURVEY, THETA0=ADL1, X0=Xi, Z0=Zi, TAPE="LCLS2cuH_survey.tape"
    SAVEBETA, TWm, OTR2
    TWISS, SAVE, BETA0=TWSSC, TAPE="LCLS2cuH_twiss.tape" !, &
   !  RTAPE="LCLS2cuH_rmat.tape"
    SHOW, TWm
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=X,Y, &
      STYLE=100, SPLINE, RANGE=BEGDL1_1/DUMPFACE, FILE="LCLS2cuH", &
      TITLE="Cu-linac to HXR dump"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=ENERGY, VMIN=0, VMAX=9, &
      STYLE=100, SPLINE, RANGE=BEGDL1_1/DUMPFACE, FILE="LCLS2cuH", &
      TITLE="Cu-linac to HXR dump"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE, RANGE=BEGDL1_1/DUMPFACE, FILE="LCLS2cuH", &
      TITLE="Cu-linac to HXR dump"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=DX,DY, &
      STYLE=100, SPLINE, RANGE=BEGDL1_1/DUMPFACE, FILE="LCLS2cuH", &
      TITLE="Cu-linac to HXR dump"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE, RANGE=WS31/DU7H[25], FILE="LCLS2cuH", &
      TITLE="UNDH (Cu beam, 8 GeV)"
 !ENDCOMMENT

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

! HXR safety dump

  COMMENT
    ASSIGN, PRINT="LCLS2cuHS.print"
    BEAM, ENERGY=E00
    SET, SETCUS, CUSOFF ; SET, SETAL, ALOFF
    SETK2cuH
    USE, CU_SFTH
    PRINT, FULL
    SURVEY, THETA0=ADL1, X0=Xi, Z0=Zi, TAPE="LCLS2cuHS_survey.tape"
  ENDCOMMENT

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

! HXR XTES

 !COMMENT
    ASSIGN, PRINT="LCLS2cuHXTES.print"
    BEAM, ENERGY=E00
    SET, SETCUS, CUSOFF ; SET, SETAL, ALOFF
    SETK2cuH
    USE, CU_HXTES
    PRINT, FULL
    SURVEY, THETA0=ADL1, X0=Xi, Z0=Zi, TAPE="LCLS2cuHXTES_survey.tape"
 !ENDCOMMENT

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

! HXR TXI

 !COMMENT
    ASSIGN, PRINT="LCLS2cuHTXI.print"
    BEAM, ENERGY=E00
    SET, SETCUS, CUSOFF ; SET, SETAL, ALOFF
    SETK2cuH
    USE, CU_HTXI
    PRINT, FULL
    SURVEY, THETA0=ADL1, X0=Xi, Z0=Zi, TAPE="LCLS2cuHTXI_survey.tape"
 !ENDCOMMENT

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

! SXR

 !COMMENT
    ASSIGN, PRINT="LCLS2cuS.print"
    BEAM, ENERGY=E00
    SET, SETCUS, CUSON   !pulsed
   !SET, SETCUS, CUSONDC !DC
   !VALUE, PULSED,DCMODE
    SETK2cuS
    USE, CU_SXR
   !SAVELINE, NAME="CU_SXR", FILENAME="LCLS2cuS.saveline"
    PRINT, FULL
    SURVEY, THETA0=ADL1, X0=Xi, Z0=Zi, TAPE="LCLS2cuS_survey.tape"
    TWISS, SAVE, BETA0=TWSSC, TAPE="LCLS2cuS_twiss.tape" !, &
   !  RTAPE="LCLS2cuS_rmat.tape"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=ENERGY, &
      STYLE=100, SPLINE, RANGE=BEGDL1_1/DUMPFACEB, FILE="LCLS2cuS", &
      TITLE="Cu-linac to SXR dump"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE, RANGE=BEGDL1_1/DUMPFACEB, FILE="LCLS2cuS", &
      TITLE="Cu-linac to SXR dump"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=DX,DY, &
      STYLE=100, SPLINE, RANGE=BEGDL1_1/DUMPFACEB, FILE="LCLS2cuS", &
      TITLE="Cu-linac to SXR dump"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE, RANGE=VBOUTB/DU7S[31], FILE="LCLS2cuS", &
      TITLE="UNDS (Cu beam, 8 GeV)"
 !ENDCOMMENT

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

! A-line

 !COMMENT
    ASSIGN, PRINT="LCLS2cuA.print"
    BEAM, ENERGY=E00
    SET, SETCUS, CUSOFF ; SET, SETAL, ALON
    SETK2cuA
    USE, CU_ALINE
   !SAVELINE, NAME="CU_ALINE", FILENAME="LCLS2cuA.saveline"
    PRINT, FULL
    SURVEY, THETA0=ADL1, X0=Xi, Z0=Zi, TAPE="LCLS2cuA_survey.tape"
    TWISS, SAVE, BETA0=TWSSC, TAPE="LCLS2cuA_twiss.tape" !, &
   !  RTAPE="LCLS2cuA_rmat.tape"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=ENERGY, &
      STYLE=100, SPLINE, RANGE=BEGDL1_1/ENDBSYA_2, FILE="LCLS2cuA", &
      TITLE="Cu-linac to A-line"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=rBETX,rBETY, &
      STYLE=100, SPLINE, RANGE=BEGDL1_1/ENDBSYA_2, FILE="LCLS2cuA", &
      TITLE="Cu-linac to A-line"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=DX,DY, &
      STYLE=100, SPLINE, RANGE=BEGDL1_1/ENDBSYA_2, FILE="LCLS2cuA", &
      TITLE="Cu-linac to A-line"
 !ENDCOMMENT

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

! 6 MeV gun spectrometer

  COMMENT
    ASSIGN, PRINT="LCLS2cuGSPEC.print"
    BEAM, ENERGY=E00
    USE, CU_GSPEC
   !SAVELINE, NAME="CU_GSPEC", FILENAME="LCLS2cuGSPEC.saveline"
    PRINT, FULL
    SURVEY, THETA0=ADL1, X0=Xi, Z0=Zi, TAPE="LCLS2cuGSPEC_survey.tape"
    TWISS, SAVE, BETA0=TWSSC, TAPE="LCLS2cuGSPEC_twiss.tape" !, &
   !  RTAPE="LCLS2cuGSPEC_rmat.tape"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
      STYLE=100, SPLINE, RANGE=BEGGUN/ENDGSPEC, FILE="LCLS2cuGSPEC", &
      TITLE="Cathode to 6-MeV Gun Spectrometer"
  ENDCOMMENT

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

! 135 MeV spectrometer

  COMMENT
    ASSIGN, PRINT="LCLS2cuSPEC.print"
    BEAM, ENERGY=E00
    USE, CU_SPEC
   !SAVELINE, NAME="CU_SPEC", FILENAME="LCLS2cuSPEC.saveline"
    PRINT, FULL
    SURVEY, THETA0=ADL1, X0=Xi, Z0=Zi, TAPE="LCLS2cuSPEC_survey.tape"
    TWISS, SAVE, BETA0=TWSSC, TAPE="LCLS2cuSPEC_twiss.tape" !, &
   !  RTAPE="LCLS2cuSPEC_rmat.tape"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
      STYLE=100, SPLINE, RANGE=BEGGUN/ENDSPEC, FILE="LCLS2cuSPEC", &
      TITLE="Cathode to 135-MeV Spectrometer"
  ENDCOMMENT

! ------------------------------------------------------------------------------
! SURVEY in BSY coordinates (from end of L3)
! ------------------------------------------------------------------------------

! HXR

 !COMMENT
    ASSIGN, PRINT="BSY-LCLS2cuH.print"
    BEAM, ENERGY=Ef
    SET, SETCUS, CUSOFF ; SET, SETAL, ALOFF
    SETK2cuH
    USE, BSYLTUH
    PRINT, FULL
    SURVEY, X0=Xf, Y0=Yf, Z0=Zf, THETA0=THETAf, PHI0=PHIf, PSI0=PSIf, &
      TAPE="BSY-LCLS2cuH_survey.tape"
 !ENDCOMMENT

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

! HXR safety dump

  !COMMENT
    ASSIGN, PRINT="BSY-LCLS2cuHS.print"
    BEAM, ENERGY=Ef
    SET, SETCUS, CUSOFF ; SET, SETAL, ALOFF
    SETK2cuH
    USE, BSYLTUHS
    PRINT, FULL
    SURVEY, X0=Xf, Y0=Yf, Z0=Zf, THETA0=THETAf, PHI0=PHIf, PSI0=PSIf, &
      TAPE="BSY-LCLS2cuHS_survey.tape"
  !ENDCOMMENT

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

! HXR XTES

 !COMMENT
    ASSIGN, PRINT="BSY-LCLS2cuHXTES.print"
    BEAM, ENERGY=Ef
    SET, SETCUS, CUSOFF ; SET, SETAL, ALOFF
    USE, BSYLTUHXTES
    PRINT, FULL
    SURVEY, X0=Xf, Y0=Yf, Z0=Zf, THETA0=THETAf, PHI0=PHIf, PSI0=PSIf, &
      TAPE="BSY-LCLS2cuHXTES_survey.tape"
 !ENDCOMMENT

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

! HXR TXI

 !COMMENT
    ASSIGN, PRINT="BSY-LCLS2cuHTXI.print"
    BEAM, ENERGY=Ef
    SET, SETCUS, CUSOFF ; SET, SETAL, ALOFF
    USE, BSYLTUHTXI
    PRINT, FULL
    SURVEY, X0=Xf, Y0=Yf, Z0=Zf, THETA0=THETAf, PHI0=PHIf, PSI0=PSIf, &
      TAPE="BSY-LCLS2cuHTXI_survey.tape"
 !ENDCOMMENT

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

! SXR

 !COMMENT
    ASSIGN, PRINT="BSY-LCLS2cuS.print"
    BEAM, ENERGY=Ef
    SET, SETCUS, CUSON   !pulsed
   !SET, SETCUS, CUSONDC !DC
   !VALUE, PULSED,DCMODE
    SETK2cuS
    USE, BSYLTUS
    PRINT, FULL
    SURVEY, X0=Xf, Y0=Yf, Z0=Zf, THETA0=THETAf, PHI0=PHIf, PSI0=PSIf, &
      TAPE="BSY-LCLS2cuS_survey.tape"
 !ENDCOMMENT

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

! A-line

 !COMMENT
    ASSIGN, PRINT="BSY-LCLS2cuA.print"
    BEAM, ENERGY=Ef
    SET, SETCUS, CUSOFF ; SET, SETAL, ALON
    SETK2cuA
    USE, BSYALINE
    PRINT, FULL
    SURVEY, X0=Xf, Y0=Yf, Z0=Zf, THETA0=THETAf, PHI0=PHIf, PSI0=PSIf, &
      TAPE="BSY-LCLS2cuA_survey.tape"
 !ENDCOMMENT

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

! S100 to A-line ("A-line BSY" coordinates from Transport deck)
! Note: the "A-line BSY" coordinates differ from the LCLS BSY coordinates

  COMMENT
    ASSIGN, PRINT="BSYA-LCLS1cuA.print"
    BEAM, ENERGY=Ef
    SET, SETCUS, CUSOFF ; SET, SETAL, ALON
    SETK2cuA
    USE, S100ALINE
    PRINT, FULL
    SURVEY, Y0=77.643643677513, PHI0=-0.00475999999158308164
  ENDCOMMENT

! ==============================================================================

! Twiss plots

 !COMMENT
    ASSIGN, PRINT="LCLS2cu.print"

  ! Cathode to HXR Main Dump

    BEAM, ENERGY=E00
    SET, SETCUS, CUSOFF ; SET, SETAL, ALOFF
    SETK2cuH
    USE, CU_HXR
    PRINT, FULL
    TWISS, SAVE, BETA0=TWSSC
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=ENERGY, &
      COLOUR=100, RANGE=BEGDL1_1/DUMPFACE, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: DL1 to HXR dump"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      COLOUR=100, SPLINE, RANGE=BEGDL1_1/DUMPFACE, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: DL1 to HXR dump"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=DX,DY, &
      COLOUR=100, SPLINE, RANGE=BEGDL1_1/DUMPFACE, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: DL1 to HXR dump"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      COLOUR=100, RANGE=BEGGUN/ENDL0, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: Gun + L0 linac"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
      COLOUR=100, SPLINE, RANGE=LHbeg/LHend, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: Laser Heater chicane"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
      COLOUR=100, SPLINE, RANGE=L0bBEG/ENDDL1_2, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: L0b + DL1 dogleg"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      COLOUR=100, SPLINE, RANGE=BEGL1/ENDL1, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: L1 linac"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
      COLOUR=100, SPLINE, RANGE=BEGBC1/ENDBC1, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: BC1 chicane"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      COLOUR=100, SPLINE, RANGE=BEGL2/ENDL2, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: L2 linac"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
      COLOUR=100, SPLINE, RANGE=BEGBC2/ENDBC2, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: BC2 chicane"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      COLOUR=100, SPLINE, RANGE=BEGL3/ENDL3, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: L3 linac"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      COLOUR=100, SPLINE, RANGE=BEGCLTH_0/ENDBSYH_2, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: BSY to LTUH"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
      COLOUR=100, SPLINE, RANGE=BEGLTUH/ENDLTUH, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: LTUH"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      COLOUR=100, SPLINE, RANGE=BEGUNDH/ENDUNDH, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: HXR Undulator"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
      COLOUR=100, SPLINE, RANGE=BEGDMPH_1/DUMPFACE, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: HXR Post-undulator to dump"

  ! Cathode to HXR Safety Dump

    BEAM, ENERGY=E00
    USE, CU_SFTH
    TWISS, SAVE, BETA0=TWSSC
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
      COLOUR=100, SPLINE, RANGE=BEGSFTH_1/SFTDUMP, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: HXR safety dump"

  ! Cathode to SXR Main Dump

    BEAM, ENERGY=E00
    SET, SETCUS, CUSON   !pulsed
   !SET, SETCUS, CUSONDC !DC
   !VALUE, PULSED,DCMODE
    SETK2cuS
    USE, CU_SXR
   !SAVELINE, NAME="CU_SXR", FILENAME="LCLS2cuS.saveline"
    PRINT, FULL
    TWISS, SAVE, BETA0=TWSSC
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=ENERGY, &
      COLOUR=100, SPLINE, RANGE=BEGDL1_1/DUMPFACEB, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: DL1 to SXR dump"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      COLOUR=100, SPLINE, RANGE=BEGDL1_1/DUMPFACEB, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: DL1 to SXR dump"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=DX,DY, &
      COLOUR=100, SPLINE, RANGE=BEGDL1_1/DUMPFACEB, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: DL1 to SXR dump"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
      COLOUR=100, SPLINE, RANGE=BEGCLTH_0/ENDBSYS, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: BSY to LTUS"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
      COLOUR=100, SPLINE, RANGE=BEGLTUS/ENDLTUS, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: LTUS"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      COLOUR=100, SPLINE, RANGE=BEGUNDS/ENDUNDS, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: SXR Undulator"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
      COLOUR=100, SPLINE, RANGE=BEGDMPS_1/DUMPFACEb, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: SXR Post-indulator to dump"

  ! Cathode to A-line

    BEAM, ENERGY=E00
    SET, SETCUS, CUSOFF ; SET, SETAL, ALON
    SETK2cuA
    USE, CU_ALINE
    TWISS, SAVE, BETA0=TWSSC
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=rBETX,rBETY, VAXIS2=DX,DY, &
      COLOUR=100, SPLINE, RANGE=BEGCLTH_0/ENDBSYA_2, FILE="LCLS2cu_color", &
      TITLE="Cu_linac: BSY to A-line"
 !ENDCOMMENT

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

 !CALL, FILENAME="LCLS2cu_area_plots.mad8"

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

  STOP

! ------------------------------------------------------------------------------
! LCLS2cu_main working stuff
! ------------------------------------------------------------------------------

  comment !use with undhBBA.m (non-BBA)
    BEAM, ENERGY=Ef
    SET, SETCUS, CUSOFF ; SET, SETAL, ALOFF
    SETK2cuH
    USE, (LTUH,HXRUND,DUMPLINE), RANGE=MM1/#E
    PRINT, FULL
    TWISS, BETA0=TWSSmh, SAVE=TWISS, TAPE="twiss.tape"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
      STYLE=100, SPLINE, RANGE=QHXh44[1]/DUMPFACE, &
      TITLE="HXR undulator to Dump, w/o coupling", FILE="match"
   !TWISS, BETA0=TWSSmh, SAVE=TWISS, COUPLE
   !PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
   !  STYLE=100, SPLINE, RANGE=QHXh44[1]/DUMPFACE, &
   !  TITLE="HXR undulator to Dump, with coupling", FILE="match"
  endcomment

  comment !use with undhBBA.m (BBA)
    BEAM, ENERGY=Ef
    SET, SETCUS, CUSOFF ; SET, SETAL, ALOFF
    SETK2cuH
    SET, kQHX46, kQDHX !for BBA
    SET, kQHX47, kQFHX !for BBA
    USE, (LTUH,HXRUND,DUMPLINE), RANGE=MM1/#E
    PRINT, FULL
    TWISS, BETA0=TWSSmh, SAVE=TWISS, TAPE="BBAtwiss.tape"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
      STYLE=100, SPLINE, RANGE=QHXh44[1]/DUMPFACE, &
      TITLE="HXR undulator to Dump (BBA), w/o coupling", FILE="BBAmatch"
   !TWISS, BETA0=TWSSmh, SAVE=TWISS, COUPLE
   !PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
   !  STYLE=100, SPLINE, RANGE=QHXh44[1]/DUMPFACE, &
   !  TITLE="HXR undulator to Dump, with coupling", FILE="BBAmatch"
  endcomment

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

  comment !match HXRSS chicane to R56= 15.0 um
    BEAM, ENERGY=Ef
    VALUE, Ef,Eu
    SET, SETHXRSS, 1
    USE, HCHICANE
    VALUE, AB4,BLB4
    MATCH, BETX=1, BETY=1
      VARY, AB4, STEP=1.E-6, LOWER=0
      RMATRIX, #S/#E, RM(5,6)=15.0E-6, WEIGHT(5,6)=1
      LMDIF, TOL=1.E-20
      MIGRAD, TOL=1.E-20
    ENDMATCH
    VALUE, AB4,BLB4
    PRINT, FULL
    SURVEY
  endcomment

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

  COMMENT
    SETK2cuH
    CALL, FILENAME="patch.mad8"
   !VALUE, Ef,Eu,Brhou/Cb
    GLmaxQUM := 100 !BMAX = 100 kG @ 120 A (bipolar)
    KmaxQUM  := GLmaxQUM/LQA/(Cb*Eu)

    BEAM, ENERGY=Ef
    SET, SETSP, SETSPh ; SET, SETAL, ALOFF
    USE, (LTUH,HXRUND), RANGE=MM1/#E
   !VALUE, KQUM1,KQUM2,KQUM3,KQUM4
    MATCH, BETA0=TWSSmh
      VARY, KQUM1, STEP=1.E-6, LOWER=0, UPPER= KmaxQUM
      VARY, KQUM2, STEP=1.E-6, UPPER=0, LOWER=-KmaxQUM
      VARY, KQUM3, STEP=1.E-6, LOWER=0, UPPER= KmaxQUM
      VARY, KQUM4, STEP=1.E-6, UPPER=0, LOWER=-KmaxQUM
      comment !match periodic betas in HXR
        WEIGHT, DX=0, DPX=0, DY=0, DPY=0, X=0, PX=0, Y=0, PY=0, T=0, PT=0
        WEIGHT, BETX=1.E-5, BETY=1.E-5, ALFX=0, ALFY=0
        COUPLE, MUQh[1]/MUQh[3]
        COUPLE, MUQh[2]/MUQh[4]
        COUPLE, MUQh[1]/MUQh[5]
        COUPLE, MUQh[2]/MUQh[6]
        COUPLE, MUQh[1]/MUQh[7]
        COUPLE, MUQh[2]/MUQh[8]
        COUPLE, MUQh[1]/MUQh[9]
        COUPLE, MUQh[2]/MUQh[10]
        COUPLE, MUQh[1]/MUQh[11]
        COUPLE, MUQh[2]/MUQh[12]
        COUPLE, MUQh[1]/MUQh[13]
        COUPLE, MUQh[2]/MUQh[14]
        COUPLE, MUQh[1]/MUQh[15]
        COUPLE, MUQh[2]/MUQh[16]
        COUPLE, MUQh[1]/MUQh[17]
        COUPLE, MUQh[2]/MUQh[18]
        COUPLE, MUQh[1]/MUQh[19]
        COUPLE, MUQh[2]/MUQh[20]
        COUPLE, MUQh[1]/MUQh[21]
        COUPLE, MUQh[2]/MUQh[22]
        COUPLE, MUQh[1]/MUQh[23]
        COUPLE, MUQh[2]/MUQh[24]
        COUPLE, MUQh[1]/MUQh[25]
        COUPLE, MUQh[2]/MUQh[26]
        COUPLE, MUQh[1]/MUQh[27]
        COUPLE, MUQh[2]/MUQh[28]
        COUPLE, MUQh[1]/MUQh[29]
        COUPLE, MUQh[2]/MUQh[30]
        COUPLE, MUQh[1]/MUQh[31]
        COUPLE, MUQh[2]/MUQh[32]
        COUPLE, MUQh[1]/MUQh[33]
       !COUPLE, MUQh[2]/MUQh[34] !KQDHXM
        WEIGHT, BETX=1.E-6, BETY=1.E-6
        CONSTR, QUM2[1], BETX<50, BETY<70
        CONSTR, QUM3[1], BETX<50, BETY<50
        CONSTR, QUM4[1], BETX<50, BETY<50
      endcomment
     !comment !match at start of HXR cell 24
        CONSTR, DU7H[6], BETX=BXHXRm, ALFX=AXHXRm, BETY=BYHXRm, ALFY=AYHXRm
     !endcomment
     !LMDIF, TOL=1.E-20, CALLS=10000
     !MIGRAD, TOL=1.E-20, CALLS=10000
    ENDMATCH
    VALUE, KQUM1,KQUM2,KQUM3,KQUM4
    PRINT, FULL
    SAVEBETA, TWm, DU7H[6]
    TWISS, COUPLE, BETA0=TWSSmh, SAVE, TAPE="twiss.tape"
    SHOW, TWm
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, RANGE=WS31/DU7H[29], &
      STYLE=100, SPLINE=.T., FILE="Escale"
    STOP
  ENDCOMMENT

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

  STOP
