
! *** OPTICS=LCLS2sc20MAR15 ***

! LCLS2sc post laser heater diagnostic beamline

! ==============================================================================
! Modification History
! ------------------------------------------------------------------------------
! 20-MAR-2015, M. Woodley
!  * roll kicker into bend plane of septum
!  * fix interferences per H. Alvarez
!  * replace QDG002 (1.259Q3.5) with 1.0Q3.1
!  * change BPMDG002 and BPMDG003 to "Stripline-9"
!  * define additional magnet TYPEs
! ------------------------------------------------------------------------------
! 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)
! ------------------------------------------------------------------------------

! geometry and horizontal dispersion matching parameters

! YANG0   : vertical kick angle (rad)
! XANG0   : septum bend angle (rad)
! SROL0   : kicker/septum roll angle (suppress vertical dispersion)
! AROLL0K : removes tiny coordinate roll from rolled kicker
! AROLL0L : removes tiny coordinate roll from rolled HLAM
! YK01    : simulates vertical kick due to misaligned QDG001
! YK02    : simulates vertical kick due to misaligned QDG003
! LHH0    : z-distance from HLAM0 center to HBND0 center (m)
! LTWK0a  : drift adjust (moves QDG001 and QBF0 w.r.t. QDG002)
! LTWK0b  : drift adjust (moves QDG001/QDG002/QDG003 together)
! KQBF0   : strength of QDG001/QDG003
! KQBD0   : strength of QDG002

  YANG0   := -0.833341639007E-2 !-0.833341639024E-2 !
  XANG0   := 0.104910700344     !0.106397010444     !
  SROL0   := -0.178821385857    !-0.177773723667    !
  AROLL0K := 0.607784423971E-5  !0                  !
  AROLL0L := -0.117280053114E-3 !-0.113183311453E-3 !
  YK01    := -0.987733421605E-2 !-0.98899572586E-2  !
  YK02    := -0.593122468161E-3 !-0.603030109212E-3 !
  LHH0    := 4.754736834382     !4.783096296216     !
  LTWK0a  := -0.289726812861    !-0.287969079239    !
  LTWK0b  := -0.013873432202    !0.264581497875E-3  !
  KQBF0   := 19.964936908858    !19.888298615358    !
  KQBD0   := -14.02177319877    !-11.858828089962   !

  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+SROL0
  BKYDG0b : SBEN, TYPE="kicker", HGAP=GKICK0/2, L=LKICK0/2, ANGLE=YANG0/2, &
                  E2=YANG0, FINT=0, FINTX=0.5, TILT=90*RADDEG+SROL0
  BLRDG0a : SBEN, TYPE="0.79SD14.96", HGAP=GHLAM0/2, L=LHLAM0/2, &
                  ANGLE=-XANG0/2, E1=-XANG0/2, FINT=0.5, FINTX=0, TILT=SROL0
  BLRDG0b : SBEN, TYPE="0.79SD14.96", HGAP=GHLAM0/2, L=LHLAM0/2, &
                  ANGLE=-XANG0/2, E2=-XANG0/2, FINT=0, FINTX=0.5, TILT=SROL0
  BXDG0a  : SBEN, TYPE="0.79D14.96", HGAP=GHBND0/2, L=LHBND0/2, &
                  ANGLE=XANG02/2, E1=XANG02/2, FINT=0.5, FINTX=0
  BXDG0b  : SBEN, TYPE="0.79D14.96", HGAP=GHBND0/2, L=LHBND0/2, &
                  ANGLE=XANG02/2, E2=XANG02/2, FINT=0, FINTX=0.5
  BYDG0a  : SBEN, TYPE="0.98VD18.7", HGAP=GBDMP0/2, L=LBDMP0/2, &
                  ANGLE=ABDMP0/2, E1=ABDMP0/2, FINT=0.5, FINTX=0, &
                  TILT=90*RADDEG
  BYDG0b  : SBEN, TYPE="0.98VD18.7", HGAP=GBDMP0/2, L=LBDMP0/2, &
                  ANGLE=ABDMP0/2, E2=ABDMP0/2, FINT=0, FINTX=0.5, &
                  TILT=90*RADDEG

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

  KQDG004 :=   2.958520014387 !  3.024453153975  
  KQDG005 := -11.066917167158 !-11.160626076491
  KQDG006 :=   9.33835198583  !  9.422277172561  
  KQDG007 := -19.528829288803 !-19.860111285797
  KQDG008 :=  16.156849073784 ! 16.243229977675 
  KQDG009 := -16.26176958329  !-16.43238231253 
  KQDG010 :=  12.067837080981 ! 12.707644058866 
  KQDG011 :=  -9.524928388406 !-10.113412010643
  KQDG012 :=  -4.685727279528 ! -4.685727279525 

  QDG001 : QUAD, TYPE="1.0Q3.1",   L=LQs/2, APER=rQs, K1=KQBF0
  QDG002 : QUAD, TYPE="1.0Q3.1",   L=LQs/2, APER=rQs, 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

  RODG0K : SROT, ANGLE=AROLL0K
  RODG0L : SROT, ANGLE=AROLL0L

! ==============================================================================
! 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+LTWK0a            !drift between QDG001 and QDG002
  LHH3D0 := LHH0/4-LQs+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.375213145904 !0.347
  DDG004 : DRIF, L=0.541
  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=1.5262254 !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.3
  DDG009d : DRIF, L=0.3
  DDG009e : DRIF, L=0.7
  DDG009f : DRIF, L=0.666 !0.296
  DDG010a : DRIF, L=0.296
  DDG010b : DRIF, L=DDG010[L]-DDG010a[L]
  DDG011a : DRIF, L=0.431 !0.304
  DDG011b : DRIF, L=DDG011[L]-DDG011a[L]
  DDG013a : DRIF, L=0.296
  DDG013b : DRIF, L=0.56
  DDG013c : DRIF, L=0.24
  DDG013d : DRIF, L=0.3

  BMINDG0 := (DDG009b[L]+DDG009c[L])/SQRT(3) !betas at waist (120 deg between OTRs)

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

  BPMDG000 : MONI, TYPE="Stripline-1"
  BPMDG002 : MONI, TYPE="Stripline-9"
  BPMDG003 : MONI, TYPE="Stripline-9"
  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)

  COMMENT
    DIAG0 : LINE=(&
      SEQ16BEG,&
      BEGDIAG0,&
      BKYDG0a,BKYDG0b,RODG0K,DKV0,M1DG0,&
      BLRDG0a,BLRDG0b,RODG0L,DQB01,&
      QDG001,DYQDG001,QDG001,DQB02,&
      QDG002,QDG002,DQB03,&
      QDG003,DYQDG003,QDG003,DQB04,&
      BXDG0a,BXDG0b,CNTDG0,M2DG0,DDG003,&
      QDG004,QDG004,DDG004,&
      QDG005,QDG005,DDG005,&
      QDG006,QDG006,DDG006,&
      QDG007,QDG007,DDG007,&
      QDG008,QDG008,DDG008,&
      QDG009,QDG009,DDG009,&
      QDG010,QDG010,DDG010,&
      QDG011,QDG011,DDG011,&
      BYDG0a,BYDG0b,DDG012,&
      QDG012,QDG012,DDG013,&
      ENDDIAG0,&
      SEQ16END)
  ENDCOMMENT

 !COMMENT
    DIAG0 : LINE=(&
      SEQ16BEG,&
      BEGDIAG0,&
      BKYDG0a,BKYDG0b,RODG0K,DKV0a,YCDG000,DKV0b,BPMDG000,DKV0c,M1DG0,&
      BLRDG0a,BLRDG0b,RODG0L,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, &
        OTRDG02,DDG009d,WSDG01,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)
 !ENDCOMMENT

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

  RETURN
