
! *** OPTICS=LCLS2sc15OCT14 ***

! LCLS2sc linac extension: end of L3 to start of bypass dogleg

! ==============================================================================
! Modification History
! ------------------------------------------------------------------------------
! 15-OCT-2014, M. Woodley
!  * switch to 45 degree FODO cells
!  * add R56 compensation chicane (steal 2.5 m from space reserved for CM
!    transport)
!  * adjust deferment/deprecation levels
! ------------------------------------------------------------------------------
! 07-AUG-2014, M. Woodley
!  * diagnostics complement per "Electron Beam Diagnostics Systems" PRD
!    (LCLSII-2.7-PR-0170)
!  * EXT FODO cell length increased from 38 m to 57 m ... phase advance per
!    cell reduced to 60 degrees
!  * use QW quadrupoles for FODO lattice ... last two EXT quadrupoles are QEs
!  * decorate device TYPE attributes to indicate non-baseline status
! ------------------------------------------------------------------------------
! 28-MAR-2014, M. Woodley
!  * element names changed to conform to nomenclature PRD
! ------------------------------------------------------------------------------

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

! R56 compensation chicane:
!   BBCX..  = chicane bend field (kG) at 4 GeV
!   ABCX..  = chicane bend angle (rad)
!   LBCX..  = chicane bend path length (m)
!   ABCX..S = "short" half chicane bend angle (rad)
!   ABCX..L = "long" half chicane bend angle (rad)
!   LBCX..S = "short" half chicane bend path length (m)
!   LBCX..L = "long" half chicane bend path length (m)

  BBCXDLU     := 4.091923726641
  ARGXDLU     := ZBCC*BBCXDLU/Brhof
  ABCXDLU     := ASIN(ARGXDLU)
  ABCXDLU_2   := ABCXDLU*ABCXDLU
  ABCXDLU_4   := ABCXDLU_2*ABCXDLU_2
  ABCXDLU_6   := ABCXDLU_4*ABCXDLU_2
  SINCBCXDLU  := 1-ABCXDLU_2/6+ABCXDLU_4/120-ABCXDLU_6/5040
  LBCXDLU     := ZBCC/SINCBCXDLU
  ABCXDLUS    := ASIN(ARGXDLU/2)
  ABCXDLUS_2  := ABCXDLUS*ABCXDLUS
  ABCXDLUS_4  := ABCXDLUS_2*ABCXDLUS_2
  ABCXDLUS_6  := ABCXDLUS_4*ABCXDLUS_2
  SINCBCXDLUS := 1-ABCXDLUS_2/6+ABCXDLUS_4/120-ABCXDLUS_6/5040
  LBCXDLUS    := ZBCC/(2*SINCBCXDLUS)
  ABCXDLUL    := ABCXDLU-ABCXDLUS
  LBCXDLUL    := LBCXDLU-LBCXDLUS

  BCXDLU1a : SBEN, TYPE="@0,R56", HGAP=GBCC/2, L=LBCXDLUS, ANGLE=+ABCXDLUS, &
                   E1=0, FINT=0.5, FINTX=0
  BCXDLU1b : SBEN, TYPE="@0,R56", HGAP=GBCC/2, L=LBCXDLUL, ANGLE=+ABCXDLUL, &
                   E2=+ABCXDLU, FINT=0, FINTX=0.5
  BCXDLU2a : SBEN, TYPE="@0,R56", HGAP=GBCC/2, L=LBCXDLUL, ANGLE=-ABCXDLUL, &
                   E1=-ABCXDLU, FINT=0.5, FINTX=0
  BCXDLU2b : SBEN, TYPE="@0,R56", HGAP=GBCC/2, L=LBCXDLUS, ANGLE=-ABCXDLUS, &
                   E2=0, FINT=0, FINTX=0.5
  BCXDLU3a : SBEN, TYPE="@0,R56", HGAP=GBCC/2, L=LBCXDLUS, ANGLE=-ABCXDLUS, &
                   E1=0, FINT=0.5, FINTX=0
  BCXDLU3b : SBEN, TYPE="@0,R56", HGAP=GBCC/2, L=LBCXDLUL, ANGLE=-ABCXDLUL, &
                   E2=-ABCXDLU, FINT=0, FINTX=0.5
  BCXDLU4a : SBEN, TYPE="@0,R56", HGAP=GBCC/2, L=LBCXDLUL, ANGLE=+ABCXDLUL, &
                   E1=+ABCXDLU, FINT=0.5, FINTX=0
  BCXDLU4b : SBEN, TYPE="@0,R56", HGAP=GBCC/2, L=LBCXDLUS, ANGLE=+ABCXDLUS, &
                   E2=0, FINT=0, FINTX=0.5

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

  KQXfodo := 0.108601693711   !45 degree FODO
! BminEXT := 49.789597979166
! BmaxEXT := 1.113964570472E2

  QFXfodo : QUAD, TYPE="4.63Q8.0", L=LQW/2, APER=rQW, K1= KQXfodo
  QDXfodo : QUAD, TYPE="4.63Q8.0", L=LQW/2, APER=rQW, K1=-KQXfodo

  KQX01 := -0.143333083541
  KQX02 :=  0.145143720408
  KQX03 := -KQXfodo
  KQX04 :=  KQXfodo
  KQX05 := -KQXfodo
  KQX06 :=  0.121016151713
  KQX07 := -0.12781914643
  KQX08 :=  0.844158759937
  KQX09 := -0.864013868085

  QX01 : QUAD, TYPE="4.63Q8.0",   L=LQW/2, APER=rQW, K1=KQX01
  QX02 : QUAD, TYPE="4.63Q8.0",   L=LQW/2, APER=rQW, K1=KQX02
  QX03 : QUAD, TYPE="4.63Q8.0",   L=LQW/2, APER=rQW, K1=KQX03
  QX04 : QUAD, TYPE="4.63Q8.0",   L=LQW/2, APER=rQW, K1=KQX04
  QX05 : QUAD, TYPE="4.63Q8.0",   L=LQW/2, APER=rQW, K1=KQX05
  QX06 : QUAD, TYPE="4.63Q8.0",   L=LQW/2, APER=rQW, K1=KQX06
  QX07 : QUAD, TYPE="4.63Q8.0",   L=LQW/2, APER=rQW, K1=KQX07
  QX08 : QUAD, TYPE="1.085Q4.31", L=LQE/2, APER=rQE, K1=KQX08
  QX09 : QUAD, TYPE="1.085Q4.31", L=LQE/2, APER=rQE, K1=KQX09

  COMMENT !GL < 16.5 kG @ 10 GeV for QWs
    VALUE, Cb*10*KQXfodo*LQW
    VALUE, Cb*10*KQX01*LQW
    VALUE, Cb*10*KQX02*LQW
    VALUE, Cb*10*KQX06*LQW
    VALUE, Cb*10*KQX07*LQW
    VALUE, Cb*10*KQX08*LQE
    VALUE, Cb*10*KQX09*LQE
  ENDCOMMENT

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

  LXfodo  := 57.0 !45 degree FODO
  LDXfodo := (LXfodo/2)-(QFXfodo[L]+QDXfodo[L])

  DXfodo : DRIF, L=LDXfodo

  DX00  : DRIF, L=15.0
  DX01  : DRIF, L=23.252       !LDXfodo
  DX02  : DRIF, L=LDXfodo
  DX03  : DRIF, L=LDXfodo
  DX04  : DRIF, L=LDXfodo
  DX05  : DRIF, L=LDXfodo
  DX06  : DRIF, L=LDXfodo
  DX07  : DRIF, L=31.100652
  DX08  : DRIF, L=8.5
  DX09  : DRIF, L=10.2-QX09[L]
  DX10  : DRIF, L=0.5

  DX01a : DRIF, L=0.2
  DX01b : DRIF, L=DX01[L]-DX01a[L]
  DX02a : DRIF, L=0.2
  DX02b : DRIF, L=DX02[L]-DX02a[L]
  DX03a : DRIF, L=0.2
  DX03b : DRIF, L=DX03[L]-DX03a[L]
  DX04a : DRIF, L=0.2
  DX04b : DRIF, L=DX04[L]-DX04a[L]
  DX05a : DRIF, L=0.2
  DX05b : DRIF, L=DX05[L]-DX05a[L]
  DX06a : DRIF, L=0.2
  DX06c : DRIF, L=DX06[L]/2
  DX06b : DRIF, L=DX06[L]-DX06a[L]-DX06c[L]
  DX07a : DRIF, L=0.2
  DX07b : DRIF, L=DX07[L]-DX07a[L]
  DX08a : DRIF, L=0.2
  DX08c : DRIF, L=0.2
  DX08b : DRIF, L=DX08[L]-DX08a[L]-DX08c[L]
  DX09a : DRIF, L=0.2
  DX09b : DRIF, L=DX09[L]-DX09a[L]

! R56 compensation chicane

  DCCDLUo : DRIF, L=ZDCC/COS(ABCXDLU), TYPE="CSR"
  DCCDLUi : DRIF, L=ZDCC,              TYPE="CSR"

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

  BPMX01 : MONI, TYPE="10_um_res_R45"
  BPMX02 : MONI, TYPE="10_um_res_R45"
  BPMX03 : MONI, TYPE="10_um_res_R45"
  BPMX04 : MONI, TYPE="10_um_res_R45"
  BPMX05 : MONI, TYPE="10_um_res_R45"
  BPMX06 : MONI, TYPE="10_um_res_R45"
  BPMX07 : MONI, TYPE="10_um_res_R45"
  BPMX08 : MONI, TYPE="10_um_res_R45"

  RFBX06 : MONI, TYPE="@1,01_um_res"
  RFBX09 : MONI, TYPE="@1,01_um_res"

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

  XCX02 : HKIC, TYPE="class-4"
  XCX04 : HKIC, TYPE="@3,class-4"
  XCX06 : HKIC, TYPE="class-4"
  XCX08 : HKIC, TYPE="class-4"

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

  YCX01 : VKIC, TYPE="class-4"
  YCX03 : VKIC, TYPE="@3,class-4"
  YCX05 : VKIC, TYPE="class-4"
  YCX07 : VKIC, TYPE="@3,class-4"
  YCX09 : VKIC, TYPE="class-4"

! ==============================================================================
! marker points, etc.
! ------------------------------------------------------------------------------

  CCDLUBEG : MARK
  CNTDLU   : MARK, TYPE="CENTER"
  CCDLUEND : MARK

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

  Xfodo : LINE=(QDXfodo,DXfodo,QFXfodo,QFXfodo,DXfodo,QDXfodo)

  CCDLU : LINE=(CCDLUBEG,&
    BCXDLU1a,BCXDLU1b,DCCDLUo,&
    BCXDLU2a,BCXDLU2b,DCCDLUi,&
    BCXDLU3a,BCXDLU3b,DCCDLUo,&
    BCXDLU4a,BCXDLU4b,CNTDLU,CCDLUEND)

  EXT0 : LINE=(BEGEXT,&
    DX00,&
    QX01,QX01,DX01,&
    QX02,QX02,DX02,&
    QX03,QX03,DX03,&
    QX04,QX04,DX04,&
    QX05,QX05,DX05,&
    QX06,QX06,DX06,&
    QX07,QX07,DX07,&
    QX08,QX08,DX08,&
    QX09,QX09,DX09,&
    CCDLU,DX10,&
    ENDEXT)

  EXT : LINE=(&
    BEGEXT,&
    DX00,&
    QX01,BPMX01,QX01,DX01a,YCX01,DX01b,&
    QX02,BPMX02,QX02,DX02a,XCX02,DX02b,&
    QX03,BPMX03,QX03,DX03a,YCX03,DX03b,&
    QX04,BPMX04,QX04,DX04a,XCX04,DX04b,&
    QX05,BPMX05,QX05,DX05a,YCX05,DX05b,&
    QX06,BPMX06,QX06,DX06a,XCX06,DX06b,RFBX06,DX06c,&
    QX07,BPMX07,QX07,DX07a,YCX07,DX07b,&
    QX08,BPMX08,QX08,DX08a,XCX08,DX08b,RFBX09,DX08c,&
    QX09,QX09,DX09a,YCX09,DX09b,&
    CCDLU,DX10,&
    ENDEXT,&
    SEQ03END)

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

  RETURN
