
! *** OPTICS=LCLS2sc12DEC14 ***

! LCLS2sc post laser heater diagnostic beamline

! ==============================================================================
! Modification History
! ------------------------------------------------------------------------------
! 12-DEC-2014, M. Woodley
!  * interference resolution per H. Alvarez:
!    - move BPMDG00 38.1 cm (15 inches) upstream
!    - replace QDG001 and QDG003 (1.259Q3.5) with 1.0Q3.1
!    - move SCDG002 (XCDG002/YCDG002) 4.0 cm (1.5 inches) upstream
!    - move SCDG003 (XCDG003/YCDG003) 30.5 cm (12 inches) upstream
!    - move QDG004/BPMDG004 5.1 cm (2 inches) downstream
!    - move RFBDG003 20.4 cm (8 inches) downstream
!    - move RFBDG004 14.0 cm (5.5 inches) upstream
!  * replace RFBDG004 (defer=2) with BPMDG004 (defer=0)
! ------------------------------------------------------------------------------
! 28-OCT-2014, M. Woodley
!  * move BYDG0/SCDG012 21 inches d/s to avoid interference with COL0 devices;
!    add an additional 20 cm between SCDG012 and OTRDG04 to match spectrometer
!    optics
! ------------------------------------------------------------------------------
! 13-OCT-2014, M. Woodley
!  * parameters of extraction magnets (BKYDG0, BLRDG0, and BXDG0) per "Post-LH
!    Diagnostic Beamline Requirements" PRD (LCLSII-2.4-PR-0068-R1)
!  * adjust deferment/deprecation levels
! ------------------------------------------------------------------------------
! 07-AUG-2014, M. Woodley
!  * diagnostics complement per "Electron Beam Diagnostics Systems" PRD
!    (LCLSII-2.7-PR-0170)
!  * decorate device TYPE attributes to indicate non-baseline status
! 17-APR-2014, M. Woodley
!  * add "CNT" MARKERs after dispersive areas (ELEGANT CENTERing)
! ------------------------------------------------------------------------------
! 31-MAR-2014, M. Woodley
!  * reduce horizontal beamline offset from 70 cm to 50 cm per H. Alvarez
!  * add WSDG01
!  * element names changed to conform to nomenclature PRD
! 27-FEB-2014, M. Woodley
!  * created (based on a previous deck from Paul Emma)
! ------------------------------------------------------------------------------

! matched Twiss at kicker entrance

  D0BX0 := 19.999999969159 !twiss beta x at start of kicker (m)
  D0AX0 :=  7.05493233088  !twiss alpha x at start of kicker
  D0BY0 := 19.452694213812 !twiss beta y at start of kicker (m)
  D0AY0 :=  3.591924627005 !twiss alpha y at start of kicker

  D0TW0 : BETA0, ENERGY=Ei, BETX=D0BX0, ALFX=D0AX0, BETY=D0BY0, ALFY=D0AY0

! geometry and horizontal dispersion matching parameters

  YANG0  := -0.833341639024E-2 !vertical kick angle (rad)
  XANG0  := 0.106397010444     !septum bend angle (rad)
  SROL0  := -0.177773723667    !septum roll angle (suppress vertical dispersion)
  AROLL0 := -0.113183311453E-3 !removes tiny coordinate roll from rolled HLAM
  YK01   := -0.98899572586E-2  !simulates vertical kick due to misaligned QDG001
  YK02   := -0.603030109212E-3 !simulates vertical kick due to misaligned QDG003
  LHH0   := 4.783096296216     !z-distance from HLAM0 center to HBND0 center (m)
  LTWK0a := -0.287969079239    !drift adjust (moves QDG001 and QBF0 w.r.t. QDG002)
  LTWK0b := 0.264581497875E-3  !drift adjust (moves QDG001/QDG002/QDG003 together)
  KQBF0  := 19.888298615358    !strength of QDG001/QDG003
  KQBD0  := -11.858828089962   !strength of QDG002

  VALUE, 1.E3*YK01/(KQBF0*LQx),1.E3*YK02/(KQBF0*LQx) !vertical offsets (mm)

! ==============================================================================
! LCAV
! ------------------------------------------------------------------------------

! transverse deflecting cavities
! (NOTE: TCYDG0 might be installed as an uprgade at a later time)

  TCYDG0h : LCAV, TYPE="@4,TRANS_YDEF", FREQ=2856, L=0.8/2 !Y-deflector (split)
  TCXDG0h : LCAV, TYPE="@1,TRANS_XDEF", FREQ=2856, L=0.8/2 !X-deflector (split)

! ==============================================================================
! SBEN
! ------------------------------------------------------------------------------

  LKICK0 := 1.0   !kicker path length (m)
  GKICK0 := 0.02  !kicker full gap (m)
  LHLAM0 := 0.4   !lambertson path length (m)
  GHLAM0 := 0.02  !lambertson full gap (m)
  LHBND0 := 0.4   !BXDG0 path length (m)
  GHBND0 := 0.02  !BXDG0 full gap (m)
  LBDMP0 := 0.5   !dump bend path length (m)
  GBDMP0 := 0.025 !dump bend full gap (m)

  YKOFF0 := 15E-3      !vertical offset at septum face (m)
  LKS0   := 2.0        !z-distance from KDIAG0 center to HLAM0 center (m)
  DX0    := 0.5        !x-distance from linac axis to diagnostic line axis (m)
  XANG02 := 6*RADDEG   !HBND0 bend angle (rad)
  ABDMP0 := -30*RADDEG !dump bend angle (rad)

  BKYDG0a : SBEN, TYPE="kicker", HGAP=GKICK0/2, L=LKICK0/2, ANGLE=YANG0/2, &
                  E1=0, FINT=0.5, FINTX=0, TILT=90*RADDEG
  BKYDG0b : SBEN, TYPE="kicker", HGAP=GKICK0/2, L=LKICK0/2, ANGLE=YANG0/2, &
                  E2=YANG0, FINT=0, FINTX=0.5, TILT=90*RADDEG
  BLRDG0a : SBEN, TYPE="lambertson", HGAP=GHLAM0/2, L=LHLAM0/2, &
                  ANGLE=-XANG0/2, E1=-XANG0/2, FINT=0.5, FINTX=0, TILT=SROL0
  BLRDG0b : SBEN, TYPE="lambertson", HGAP=GHLAM0/2, L=LHLAM0/2, &
                  ANGLE=-XANG0/2, E2=-XANG0/2, FINT=0, FINTX=0.5, TILT=SROL0
  BXDG0a  : SBEN, TYPE="unknown", HGAP=GHBND0/2, L=LHBND0/2, ANGLE=XANG02/2, &
                  E1=XANG02/2, FINT=0.5, FINTX=0
  BXDG0b  : SBEN, TYPE="unknown", HGAP=GHBND0/2, L=LHBND0/2, ANGLE=XANG02/2, &
                  E2=XANG02/2, FINT=0, FINTX=0.5
  BYDG0a  : SBEN, TYPE="unknown", HGAP=GBDMP0/2, L=LBDMP0/2, ANGLE=ABDMP0/2, &
                  E1=ABDMP0/2, FINT=0.5, FINTX=0, TILT=90*RADDEG
  BYDG0b  : SBEN, TYPE="unknown", HGAP=GBDMP0/2, L=LBDMP0/2, ANGLE=ABDMP0/2, &
                  E2=ABDMP0/2, FINT=0, FINTX=0.5, TILT=90*RADDEG

! ==============================================================================
! QUAD
! ------------------------------------------------------------------------------

  KQDG004 := 3.024453153975   !  4.609471733188
  KQDG005 := -11.160626076491 !-11.674818508678
  KQDG006 := 9.422277172561   !  9.17148736963
  KQDG007 := -19.860111285797 !-16.090098035396
  KQDG008 := 16.243229977675  ! 15.346157002335
  KQDG009 := -16.43238231253  !-15.161645781277
  KQDG010 := 12.707644058866  ! 12.70764405862
  KQDG011 := -10.113412010643 !-10.113412010494
  KQDG012 := -4.685727279525  ! -4.685727279518

  QDG001 : QUAD, TYPE="1.0Q3.1",   L=LQs/2, APER=rQs, K1=KQBF0
  QDG002 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQBD0
  QDG003 : QUAD, TYPE="1.0Q3.1",   L=LQs/2, APER=rQs, K1=KQBF0
  QDG004 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQDG004
  QDG005 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQDG005
  QDG006 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQDG006
  QDG007 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQDG007
  QDG008 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQDG008
  QDG009 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQDG009
  QDG010 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQDG010
  QDG011 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQDG011
  QDG012 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQDG012

! ==============================================================================
! MULT
! ------------------------------------------------------------------------------

! model misaligned quadrupoles

  DYQDG001 : MULTIPOLE, K0L=YK01, T0=90*RADDEG
  DYQDG003 : MULTIPOLE, K0L=YK02, T0=90*RADDEG

! ==============================================================================
! SROT
! ------------------------------------------------------------------------------

! removes creeping roll introduced by rolled Lambertson

  RODG0 : SROT, ANGLE=AROLL0

! ==============================================================================
! DRIF
! ------------------------------------------------------------------------------

! dogleg

  LKSD0  := LKS0-LKICK0/2-LHLAM0/2       !dz between kicker exit and BLRDG0 entrance (m)
  LHH1D0 := LHH0/4-LHLAM0/2-LQs/2-LTWK0a !drift between BLRDG0 and 1st QDG001
  LHH2D0 := LHH0/4-LQs/2-LQx/2+LTWK0a    !drift between QDG001 and QDG002
  LHH3D0 := LHH0/4-LQx/2-LQs/2+LTWK0a    !drift between QDG002 and QDG003
  LHH4D0 := LHH0/4-LQs/2-LHBND0/2-LTWK0a !drift between QDG003 and BXDG0

  DKV0   : DRIF, L=LKSD0
  DQB01  : DRIF, L=LHH1D0+LTWK0b
  DQB02  : DRIF, L=LHH2D0
  DQB03  : DRIF, L=LHH3D0
  DQB04  : DRIF, L=LHH4D0-LTWK0b

  DKV0a   : DRIF, L=0.15
  DKV0c   : DRIF, L=0.531 !0.15
  DKV0b   : DRIF, L=DKV0[L]-DKV0a[L]-DKV0c[L]
  DQB01a  : DRIF, L=0.15
  DQB01c  : DRIF, L=0.15
  DQB01b  : DRIF, L=DQB01[L]-DQB01a[L]-DQB01c[L]
  DQB03b  : DRIF, L=0.19 !0.15
  DQB03a  : DRIF, L=DQB03[L]-DQB03b[L]
  DQB04b  : DRIF, L=0.455 !0.15
  DQB04a  : DRIF, L=DQB04[L]-DQB04b[L]

! diagnostic line

  DDG003 : DRIF, L=0.347 !0.296
  DDG004 : DRIF, L=0.541 !0.592
  DDG005 : DRIF, L=0.592
  DDG006 : DRIF, L=2.492
  DDG007 : DRIF, L=0.592
  DDG008 : DRIF, L=0.592
  DDG009 : DRIF, L=2.592
  DDG010 : DRIF, L=0.592
  DDG011 : DRIF, L=0.8294254
  DDG012 : DRIF, L=0.296
  DDG013 : DRIF, L=1.396

  DDG005a : DRIF, L=0.296
  DDG005b : DRIF, L=DDG005[L]-DDG005a[L]
  DDG006a : DRIF, L=0.296
  DDG006b : DRIF, L=0.15
  DDG006c : DRIF, L=0.15
  DDG006d : DRIF, L=DDG006[L]-DDG006a[L]-2*TCYDG0h[L]-DDG006b[L]-DDG006c[L] &
                    -2*TCXDG0h[L]
  DDG008a : DRIF, L=0.296
  DDG008b : DRIF, L=DDG008[L]-DDG008a[L]
  DDG009a : DRIF, L=0.296
  DDG009b : DRIF, L=0.7
  DDG009c : DRIF, L=0.15
  DDG009d : DRIF, L=0.15
  DDG009e : DRIF, L=1.0
  DDG009f : DRIF, L=0.296
  DDG010a : DRIF, L=0.296
  DDG010b : DRIF, L=DDG010[L]-DDG010a[L]
  DDG011a : DRIF, L=0.304 !0.1
  DDG011b : DRIF, L=DDG011[L]-DDG011a[L]
  DDG013a : DRIF, L=0.296
  DDG013b : DRIF, L=0.56 !0.7
  DDG013c : DRIF, L=0.24 !0.1
  DDG013d : DRIF, L=0.3

  BMINDG0 := DDG009e[L]/SQRT(3) !betaX=betaY at waist (120 deg between OTRs)

! ==============================================================================
! BPMs
! ------------------------------------------------------------------------------

  BPMDG000 : MONI, TYPE="Stripline-1"
  BPMDG002 : MONI, TYPE="Stripline-1"
  BPMDG003 : MONI, TYPE="Stripline-1"
  BPMDG004 : MONI, TYPE="Stripline-1"
  BPMDG005 : MONI, TYPE="Stripline-1"
  BPMDG0RF : MONI, TYPE="Stripline-1"
  BPMDG008 : MONI, TYPE="Stripline-1"
  BPMDG009 : MONI, TYPE="Stripline-1"
  BPMDG011 : MONI, TYPE="Stripline-1"

  RFBDG001 : MONI, TYPE="@2,CavityL-1"
  RFBDG002 : MONI, TYPE="@2,CavityS-1"
  RFBDG003 : MONI, TYPE="@2,CavityS-1"
  BPMDG013 : MONI, TYPE="@0,Stripline-5" !RFBDG004 : MONI, TYPE="@2,CavityL-1"

! ==============================================================================
! XCORs
! ------------------------------------------------------------------------------

  XCDG001 : HKIC, TYPE="class-1a"
  XCDG002 : HKIC, TYPE="class-1a"
  XCDG003 : HKIC, TYPE="class-1a"
  XCDG005 : HKIC, TYPE="class-1a"
  XCDG008 : HKIC, TYPE="class-1a"
  XCDG010 : HKIC, TYPE="class-1a"
  XCDG012 : HKIC, TYPE="class-1a"

! ==============================================================================
! YCORs
! ------------------------------------------------------------------------------

  YCDG000 : VKIC, TYPE="class-6"
  YCDG001 : VKIC, TYPE="class-1a"
  YCDG002 : VKIC, TYPE="class-1a"
  YCDG003 : VKIC, TYPE="class-1a"
  YCDG005 : VKIC, TYPE="class-1a"
  YCDG008 : VKIC, TYPE="class-1a"
  YCDG010 : VKIC, TYPE="class-1a"
  YCDG012 : VKIC, TYPE="class-1a"

! ==============================================================================
! diagnostics, etc.
! ------------------------------------------------------------------------------

! profile monitors

  OTRDG01 : PROF, TYPE="@3,OTR"
  OTRDG02 : PROF, TYPE="OTR"
  OTRDG03 : PROF, TYPE="@3,OTR"
  OTRDG04 : PROF, TYPE="OTR"

! wire scanners

  WSDG01 : WIRE

! charge monitors

  FCDG0DU : IMON, TYPE="Faraday cup"

! ==============================================================================
! marker points
! ------------------------------------------------------------------------------

  M1DG0   : MARK
  CNTDG0  : MARK, TYPE="CENTER"
  M2DG0   : MARK
  MTCYDG0 : MARK
  MTCXDG0 : MARK

! ==============================================================================
! BEAMLINE
! ------------------------------------------------------------------------------

  SCDG001 : LINE=(XCDG001,YCDG001)
  SCDG002 : LINE=(XCDG002,YCDG002)
  SCDG003 : LINE=(XCDG003,YCDG003)
  SCDG005 : LINE=(XCDG005,YCDG005)
  SCDG008 : LINE=(XCDG008,YCDG008)
  SCDG010 : LINE=(XCDG010,YCDG010)
  SCDG012 : LINE=(XCDG012,YCDG012)

  TCYDG0 : LINE=(TCYDG0h,MTCYDG0,TCYDG0h)
  TCXDG0 : LINE=(TCXDG0h,MTCXDG0,TCXDG0h)

  DIAG0 : LINE=(&
    SEQ16BEG,&
    BEGDIAG0,&
    BKYDG0a,BKYDG0b,DKV0a,YCDG000,DKV0b,BPMDG000,DKV0c,M1DG0,&
    BLRDG0a,BLRDG0b,RODG0,DQB01a,RFBDG001,DQB01b,SCDG001,DQB01c,&
    QDG001,DYQDG001,QDG001,DQB02,&
    QDG002,BPMDG002,QDG002,DQB03a,SCDG002,DQB03b,&
    QDG003,BPMDG003,DYQDG003,QDG003,DQB04a,SCDG003,DQB04b,&
    BXDG0a,BXDG0b,CNTDG0,M2DG0,DDG003,&
    QDG004,BPMDG004,QDG004,DDG004,&
    QDG005,BPMDG005,QDG005,DDG005a,SCDG005,DDG005b,&
    QDG006,QDG006,DDG006a,TCYDG0,DDG006b,BPMDG0RF,DDG006c,TCXDG0,DDG006d,&
    QDG007,QDG007,DDG007,&
    QDG008,BPMDG008,QDG008,DDG008a,SCDG008,DDG008b,&
    QDG009,BPMDG009,QDG009,DDG009a,OTRDG01,DDG009b,RFBDG002,DDG009c, &
      WSDG01,DDG009d,OTRDG02,DDG009e,OTRDG03,DDG009f,&
    QDG010,QDG010,DDG010a,SCDG010,DDG010b,&
    QDG011,BPMDG011,QDG011,DDG011a,RFBDG003,DDG011b,&
    BYDG0a,BYDG0b,DDG012,&
    QDG012,QDG012,DDG013a,SCDG012,DDG013b,BPMDG013,DDG013c,OTRDG04, &
      DDG013d,FCDG0DU,&
    ENDDIAG0,&
    SEQ16END)

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

  RETURN
