
! *** OPTICS=LCLS2sc26FEB16 ***

! LCLS2sc transport from Cu-linac to SXR

! ==============================================================================
! Modification History
! ------------------------------------------------------------------------------
! 26-FEB-2016, M. Woodley
!  * remove SEQnn MARKers
! 26-FEB-2016, Y. Nosochkov
!  * replace 5 kickers (based on spreader kicker design) with one kicker
!    based on BYKIK1 design (per T. Beukers)
!  * increase CUSXR length by 1.2 m to avoid interference with A-line kicker
!    (septum and first 3 quad positions are not changed, but the rest is moved
!    downstream while keeping the CUSXR symmetry) 
! ------------------------------------------------------------------------------
! 25-SEP-2015, Y. Nosochkov
!  * update definitions of kickers, septum and last DC bend to allow
!    zero angle
! 24-AUG-2015, Y. Nosochkov
!  * move BPMCUS2 downstream of QCUS2
!  * move XCCUS10 upstream of QCUS10
!  * replace the first DC bend with a fast kicker and a septum (deferred at @3)
!  * increase the distance from first/last bend to the nearest quad
!  * add two corrector bends to cancel the kicker orbit and dispersion (at @3)
! ------------------------------------------------------------------------------
! 19-JUN-2015, Y. Nosochkov
!  * add additional deferred quadrupole at center of CUSXR
!  * rename some magnets/devices to put the names in order
!  * change magnet type of QCUS4, QCUS5, QCUS6, QCUS7 from 2Q10 to 1.085Q4.31
!  * change BPM type at 2Q10 to Stripline-5, and at 1.085Q4.31 to Stripline-2
!  * move BPMs outside of the quads
!  * adjust distance from BPM/corr to the quad
! ------------------------------------------------------------------------------
! 20-MAR-2015, M. Woodley
!  * move definitions of BEGCUSXR and ENDCUSXR MARKERs to common.xsif
!  * add SEQ20BEG and SEQ20END MARKERs
! 12-MAR-2015, Y. Nosochkov
!  * add a dogleg transport line from Cu-linac to SXR (deferred to level 3)
! ------------------------------------------------------------------------------

! XYZ (linac system) and Twiss at entrance of the first kicker (BEGCUSXR)

  XCUS1  := -3.309962022E-7 !per existing LCLS-1 coordinates
  YCUS1  :=  0.0
  ZCUS1  :=  3059.078178
  THCUS1 :=  0.0
  PHCUS1 :=  0.0
  PSCUS1 :=  0.0

  TBXCUS1 :=  2.807382441E+01 !get these from matched HXR tape file
  TBYCUS1 :=  5.190127990E+01
  TAXCUS1 := -1.257156802E-01
  TAYCUS1 :=  6.663734673E-01
  TWSCUS1 : BETA0, BETX=TBXCUS1, BETY=TBYCUS1, ALFX=TAXCUS1, ALFY=TAYCUS1

! XYZ (linac system) at exit of the last bend (ENDCUSXR)

  XCUS2  := -25.610*IN2M
  YCUS2  :=  25.570*IN2M
  ZCUS2  :=  3177.65
  THCUS2 :=  0.0
  PHCUS2 :=  0.0
  PSCUS2 :=  0.0

! quads (Cu-linac energy is limited to 10 GeV)

  KQCUS1  :=  0.479631188804
  KQCUS2  := -0.38984430913
  KQCUS3  := -0.342143950357
  KQCUS4  :=  2.55506494282
  KQCUS5  := -1.607022010571
  KQCUS9  := -0.442457168406
  KQCUS10 :=  0.489942289147
  KQCUS6  :=  KQCUS5
  KQCUS7  :=  KQCUS4
  KQCUS8  :=  KQCUS3

  QCUS1  : QUAD, TYPE="@3,2Q10"      , L=LQR/2, K1=KQCUS1 , APER=rQR
  QCUS2  : QUAD, TYPE="@3,2Q10"      , L=LQR/2, K1=KQCUS2 , APER=rQR
  QCUS3  : QUAD, TYPE="@3,2Q10"      , L=LQR/2, K1=KQCUS3 , APER=rQR
  QCUS4  : QUAD, TYPE="@3,1.085Q4.31", L=LQE/2, K1=KQCUS4 , APER=rQE
  QCUS5  : QUAD, TYPE="@3,1.085Q4.31", L=LQE/2, K1=KQCUS5 , APER=rQE
  QCUS6  : QUAD, TYPE="@3,1.085Q4.31", L=LQE/2, K1=KQCUS6 , APER=rQE
  QCUS7  : QUAD, TYPE="@3,1.085Q4.31", L=LQE/2, K1=KQCUS7 , APER=rQE
  QCUS8  : QUAD, TYPE="@3,2Q10"      , L=LQR/2, K1=KQCUS8 , APER=rQR
  QCUS9  : QUAD, TYPE="@3,2Q10"      , L=LQR/2, K1=KQCUS9 , APER=rQR
  QCUS10 : QUAD, TYPE="@3,2Q10"      , L=LQR/2, K1=KQCUS10, APER=rQR

! kicker is aligned along the BSY1 axis and rolled approx. -45 deg
! kicker design is based on existing BYKIK1 (max. field ~600G per T. Beukers)

  TCUSXR := -0.778364433958 !roll angle of kicker, septum and DC bend (rad)

  GBKRCUS := 25.4E-3 !kicker gap (m)
  ZBKRCUS := 1.0601  !kicker straight length (m)

  ABKRCUS0 := -0.8707039818E-3
  ABKRCUS  :=  ABKRCUS0 *SETCUS     !total kicker angle (rad)
  ABKRCUSa :=  ASIN(SIN(ABKRCUS)/2) !1st half-kicker angle (rad)
  ABKRCUSb :=  ABKRCUS-ABKRCUSa     !2nd half-kicker angle (rad)

  ABKRCUS_2  := ABKRCUS   *ABKRCUS
  ABKRCUS_4  := ABKRCUS_2 *ABKRCUS_2
  ABKRCUSa_2 := ABKRCUSa  *ABKRCUSa
  ABKRCUSa_4 := ABKRCUSa_2*ABKRCUSa_2

  LBKRCUS  := ZBKRCUS   /(1 -ABKRCUS_2 /6 +ABKRCUS_4 /120)
  LBKRCUSa := ZBKRCUS/2 /(1 -ABKRCUSa_2/6 +ABKRCUSa_4/120)
  LBKRCUSb := LBKRCUS-LBKRCUSa

  BKRCUSa : SBEN, TYPE="@3,CUSXR", L=LBKRCUSa, ANGLE=ABKRCUSa, &
    E1=0, E2=0, FINT=0.5, FINTX=0, HGAP=GBKRCUS/2, TILT=PI/2+TCUSXR
  BKRCUSb : SBEN, TYPE="@3,CUSXR", L=LBKRCUSb, ANGLE=ABKRCUSb, &
    E1=0, E2=ABKRCUS, FINT=0, FINTX=0.5, HGAP=GBKRCUS/2, TILT=PI/2+TCUSXR

! 2-hole rolled septum aligned along the BSY1 axis

  GBLRCUS := GBLSP !septum gap height (m)
  ZBLRCUS := LBLSP !septum straight length (m)

  ABLRCUS0 := 0.910188069797E-2
  ABLRCUS  := ABLRCUS0 *SETCUS     !septum bending angle (rad)
  ABLRCUSa := ASIN(SIN(ABLRCUS)/2) !angle per 1st half of the septum
  ABLRCUSb := ABLRCUS-ABLRCUSa     !angle per 2nd half of the septum

  ABLRCUS_2  := ABLRCUS   *ABLRCUS
  ABLRCUS_4  := ABLRCUS_2 *ABLRCUS_2
  ABLRCUSa_2 := ABLRCUSa  *ABLRCUSa
  ABLRCUSa_4 := ABLRCUSa_2*ABLRCUSa_2

  LBLRCUS  := ZBLRCUS   /(1 -ABLRCUS_2/6  +ABLRCUS_4 /120)/COS(ABKRCUS)
  LBLRCUSa := ZBLRCUS/2 /(1 -ABLRCUSa_2/6 +ABLRCUSa_4/120)/COS(ABKRCUS)
  LBLRCUSb := LBLRCUS-LBLRCUSa

  BLRCUSa : SBEN, TYPE="@3,0.625SD38.98", L=LBLRCUSa, ANGLE=ABLRCUSa, &
            E1=0, E2=0, FINT=0.5, FINTX=0, HGAP=GBLRCUS/2, TILT=TCUSXR
  BLRCUSb : SBEN, TYPE="@3,0.625SD38.98", L=LBLRCUSb, ANGLE=ABLRCUSb, &
            E1=0, E2=ABLRCUS, FINT=0, FINTX=0.5, HGAP=GBLRCUS/2, TILT=TCUSXR

! rolled DC corrector bends to cancel the kicker orbit and dispersion

  GBRCCUS  :=  0.0254 !DC corrector gap height
  LBRCCUS  :=  0.6    !DC corrector straight length

  ABRCCUS1 :=  0.530165746995E-2
  ABRCCUS2 := -0.443098955432E-2
  LBRCCUS1 :=  LBRCCUS*ABRCCUS1/(2*SIN(ABRCCUS1/2)) !BRCCUS1 path length (m)
  LBRCCUS2 :=  LBRCCUS*ABRCCUS2/(2*SIN(ABRCCUS2/2)) !BRCCUS2 path length (m)

  BRCCUS1a : SBEN, TYPE="@3,1.0D22.625", L=LBRCCUS1/2, ANGLE=ABRCCUS1/2, &
             E1=ABRCCUS1/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBRCCUS/2, &
             TILT=PI/2+TCUSXR
  BRCCUS1b : SBEN, TYPE="@3,1.0D22.625", L=LBRCCUS1/2, ANGLE=ABRCCUS1/2, &
             E2=ABRCCUS1/2, E1=0, FINTX=0.5, FINT=0, HGAP=GBRCCUS/2, &
             TILT=PI/2+TCUSXR

  BRCCUS2a : SBEN, TYPE="@3,1.0D22.625", L=LBRCCUS2/2, ANGLE=ABRCCUS2/2, &
             E1=ABRCCUS2/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBRCCUS/2, &
             TILT=PI/2+TCUSXR
  BRCCUS2b : SBEN, TYPE="@3,1.0D22.625", L=LBRCCUS2/2, ANGLE=ABRCCUS2/2, &
             E2=ABRCCUS2/2, E1=0, FINTX=0.5, FINT=0, HGAP=GBRCCUS/2, &
             TILT=PI/2+TCUSXR

! rolled DC bend

  GBRCUS := GBSP !bend gap height (m)
  ZBRCUS := LBSP !bend straight length (1.0D38.37) (m)

  dABRCUS   := -0.344999413731E-8
  ABRCUS    := (-ABLRCUS0+dABRCUS) *SETCUS
  ABRCUSh   := ABRCUS/2
  ABRCUSh_2 := ABRCUSh   *ABRCUSh
  ABRCUSh_4 := ABRCUSh_2 *ABRCUSh_2
  LBRCUS    := ZBRCUS/(1-ABRCUSh_2/6 +ABRCUSh_4/120) !bend path length (m)

  BRCUS1a : SBEN, TYPE="@3,1.0D38.37", L=LBRCUS/2, ANGLE=ABRCUS/2, &
            E1=ABRCUS/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBRCUS/2, TILT=TCUSXR
  BRCUS1b : SBEN, TYPE="@3,1.0D38.37", L=LBRCUS/2, ANGLE=ABRCUS/2, &
            E2=ABRCUS/2, E1=0, FINT=0, FINTX=0.5, HGAP=GBRCUS/2, TILT=TCUSXR

! inner vertical bends for R56 cancellation

  GBYCUS := 0.0254 !bend full gap (m)
  ZBYCUS := 0.6    !bend straight length (m)

  ABYCUS := -0.24E-2
  LBYCUS := ZBYCUS*ABYCUS/(2*SIN(ABYCUS/2)) !bend path length (m)

  BYCUS1a : SBEN, TYPE="@3,1.0D22.625", L=LBYCUS/2, ANGLE= ABYCUS/2, &
            E1= ABYCUS/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBYCUS/2, TILT=PI/2
  BYCUS1b : SBEN, TYPE="@3,1.0D22.625", L=LBYCUS/2, ANGLE= ABYCUS/2, &
            E2= ABYCUS/2, E1=0, FINT=0, FINTX=0.5, HGAP=GBYCUS/2, TILT=PI/2

  BYCUS2a : SBEN, TYPE="@3,1.0D22.625", L=LBYCUS/2, ANGLE=-ABYCUS/2, &
            E1=-ABYCUS/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBYCUS/2, TILT=PI/2
  BYCUS2b : SBEN, TYPE="@3,1.0D22.625", L=LBYCUS/2, ANGLE=-ABYCUS/2, &
            E2=-ABYCUS/2, E1=0, FINT=0, FINTX=0.5, HGAP=GBYCUS/2, TILT=PI/2

! drifts

  ZDCUSBLR := 16.1469 !Z-distance between the last kicker and septum
  LDCUSBLR := ZDCUSBLR/COS(ABKRCUS)

 dLDCUS0  :=  0.0 !adjust length of CUSXR
 dLDCUS2  :=  0.0 !adjust positions of QCUS2,9
 dLDCUS3  := -0.9 !adjust positions of QCUS3,8
 dLDCUS4  :=  0.16 !adjust positions of QCUS4,7
 dLDCUS13 :=  0.0 !asymmetry between LDCUS1 and LDCUS13

  LDCUS0  := 5.13369289414824 +dLDCUS0
  LDCUS1  := 29.4
  LDCUS2  := LDCUS0         +dLDCUS2
  LDCUS3  := LDCUS0 -dLDCUS2+dLDCUS3
  LDCUS4  := LDCUS0 -dLDCUS3+dLDCUS4 +0.599963125932
  LDCUS5  := 1.5-0.25 -dLDCUS4
  LDCUS6  := 1.0+0.25
  LDCUS7  := 0.3/2
  LDCUS8  := LDCUS6
  LDCUS9  := LDCUS5
  LDCUS10 := LDCUS4
  LDCUS11 := LDCUS3
  LDCUS12 := LDCUS2
  LDCUS13 := LDCUS1+LBLRCUS/2-LBRCUS/2 +dLDCUS13

  LDCUS1b  := 7.0
  LDCUS1c  := 0.5
  LDCUS1a  := LDCUS1-LDCUS1b-LDCUS1c-LBRCCUS1-LBRCCUS2 -dLDCUS13
  LDCUS2a  := 0.4471
  LDCUS2b  := 0.6368
  LDCUS2c  := LDCUS2-LDCUS2a-LDCUS2b
  LDCUS3a  := 0.4471
  LDCUS3b  := 0.6368
  LDCUS3d  := 0.4781
  LDCUS3c  := LDCUS3-LDCUS3a-LDCUS3b-LDCUS3d
  LDCUS4a  := 0.4285
  LDCUS4c  := 0.1924
  LDCUS4b  := LDCUS4-LDCUS4a-LDCUS4c +(LQR-LQE)/2
  LDCUS5a  := 0.4
  LDCUS5b  := LDCUS5-LDCUS5a +(LQR-LQE)/2
  LDCUS6b  := 0.1924
  LDCUS6a  := LDCUS6-LDCUS6b +(LQR-LQE)/2 -LQE/2-LDCUS7
  LDCUS8a  := 0.4
  LDCUS8b  := LDCUS8-LDCUS8a +(LQR-LQE)/2 -LQE/2-LDCUS7
  LDCUS9b  := 0.1924
  LDCUS9a  := LDCUS9-LDCUS9b +(LQR-LQE)/2
  LDCUS10a := 0.4
  LDCUS10c := 0.4781
  LDCUS10b := LDCUS10-LDCUS10a-LDCUS10c +(LQR-LQE)/2
  LDCUS11a := 0.4285
  LDCUS11c := 0.4781
  LDCUS11b := LDCUS11-LDCUS11a-LDCUS11c
  LDCUS12a := 0.4285
  LDCUS12c := 0.6058 !this distance to be checked
  LDCUS12d := 0.4781 !this distance to be checked
  LDCUS12b := LDCUS12-LDCUS12a-LDCUS12c-LDCUS12d

  DCUSBLR : DRIF, L=LDCUSBLR
  DCUS1a  : DRIF, L=LDCUS1a
  DCUS1b  : DRIF, L=LDCUS1b
  DCUS1c  : DRIF, L=LDCUS1c
  DCUS2a  : DRIF, L=LDCUS2a
  DCUS2b  : DRIF, L=LDCUS2b
  DCUS2c  : DRIF, L=LDCUS2c
  DCUS3a  : DRIF, L=LDCUS3a
  DCUS3b  : DRIF, L=LDCUS3b
  DCUS3c  : DRIF, L=LDCUS3c
  DCUS3d  : DRIF, L=LDCUS3d
  DCUS4a  : DRIF, L=LDCUS4a
  DCUS4b  : DRIF, L=LDCUS4b
  DCUS4c  : DRIF, L=LDCUS4c
  DCUS5a  : DRIF, L=LDCUS5a
  DCUS5b  : DRIF, L=LDCUS5b
  DCUS6a  : DRIF, L=LDCUS6a
  DCUS6b  : DRIF, L=LDCUS6b
  DCUS7   : DRIF, L=LDCUS7
  DCUS8a  : DRIF, L=LDCUS8a
  DCUS8b  : DRIF, L=LDCUS8b
  DCUS9a  : DRIF, L=LDCUS9a
  DCUS9b  : DRIF, L=LDCUS9b
  DCUS10a : DRIF, L=LDCUS10a
  DCUS10b : DRIF, L=LDCUS10b
  DCUS10c : DRIF, L=LDCUS10c
  DCUS11a : DRIF, L=LDCUS11a
  DCUS11b : DRIF, L=LDCUS11b
  DCUS11c : DRIF, L=LDCUS11c
  DCUS12a : DRIF, L=LDCUS12a
  DCUS12b : DRIF, L=LDCUS12b
  DCUS12c : DRIF, L=LDCUS12c
  DCUS12d : DRIF, L=LDCUS12d
  DCUS13  : DRIF, L=LDCUS13 

! markers

  BEGCUSXR : MARK
  CENCUSXR : MARK !center of CUSXR
  CNTCUS1  : MARK, TYPE="CENTER"
  CNTCUS2  : MARK, TYPE="CENTER"
  CNTCUS3  : MARK, TYPE="CENTER"
  CNTCUS4  : MARK, TYPE="CENTER"
  CNTCUS5  : MARK, TYPE="CENTER"
  ENDCUSXR : MARK

! monitors

  BPMCUS1   : MONI, TYPE="@3,Stripline-5"
  BPMCUS2   : MONI, TYPE="@3,Stripline-5"
  BPMCUS3   : MONI, TYPE="@3,Stripline-5"
  BPMCUS4   : MONI, TYPE="@3,Stripline-2"
  BPMCUS5   : MONI, TYPE="@3,Stripline-2"
  BPMCUS7   : MONI, TYPE="@3,Stripline-2"
  BPMCUS8   : MONI, TYPE="@3,Stripline-5"
  BPMCUS9   : MONI, TYPE="@3,Stripline-5"
  BPMCUS10  : MONI, TYPE="@3,Stripline-5"

! steering correctors

  XCCUS1  : HKIC, TYPE="@3,class-4" !type TBD
  XCCUS4  : HKIC, TYPE="@3,class-4" !type TBD
  XCCUS7  : HKIC, TYPE="@3,class-4" !type TBD
  XCCUS10 : HKIC, TYPE="@3,class-4" !type TBD

  YCCUS2  : VKIC, TYPE="@3,class-4" !type TBD
  YCCUS3  : VKIC, TYPE="@3,class-4" !type TBD
  YCCUS6  : VKIC, TYPE="@3,class-4" !type TBD
  YCCUS8  : VKIC, TYPE="@3,class-4" !type TBD
  YCCUS9  : VKIC, TYPE="@3,class-4" !type TBD

! SROT to remove rotation angle

  AROCUS0 := -0.792493635157E-5
  AROCUS1 := -0.207093043993E-4
  AROCUS2 := -AROCUS1
  AROCUS3 := -0.956071677087E-19
  AROCUS4 := -AROCUS3

  ROCUS0  : SROT, ANGLE= AROCUS0
  ROCUS1  : SROT, ANGLE= AROCUS1
  ROCUS2  : SROT, ANGLE= AROCUS2
  ROCUS3  : SROT, ANGLE= AROCUS3
  ROCUS4  : SROT, ANGLE= AROCUS4

! beamlines

  KCUSXRa : LINE=(&
                BKRCUSa,BKRCUSb,DCUSBLR,&
                BLRCUSa,BLRCUSb)

  KCUSXRb : LINE=(&
                CNTCUS1 ,ROCUS0  ,DCUS1a,&
                BRCCUS1a,BRCCUS1b,DCUS1b,&
                BRCCUS2a,BRCCUS2b,CNTCUS5)

  KCUSXR : LINE=(KCUSXRa,KCUSXRb)

  DLCUSXR : LINE=(       ROCUS1  ,DCUS1c ,&
                QCUS1   ,QCUS1   ,DCUS2a ,BPMCUS1 ,DCUS2b ,XCCUS1,DCUS2c,&
                QCUS2   ,QCUS2   ,DCUS3a ,BPMCUS2 ,DCUS3b ,YCCUS2,DCUS3c,&
                                          BPMCUS3 ,DCUS3d ,&
                QCUS3   ,QCUS3   ,DCUS4a ,YCCUS3  ,DCUS4b ,&
                                          BPMCUS4 ,DCUS4c ,&
                QCUS4   ,QCUS4   ,DCUS5a ,XCCUS4  ,DCUS5b ,&
                BYCUS1a ,BYCUS1b ,CNTCUS3,ROCUS3  ,DCUS6a ,&
                                          BPMCUS5 ,DCUS6b ,&
                QCUS5   ,QCUS5   ,DCUS7  ,CENCUSXR,DCUS7  ,&
                QCUS6   ,QCUS6   ,DCUS8a ,YCCUS6  ,DCUS8b ,ROCUS4,&
                BYCUS2a ,BYCUS2b ,CNTCUS4,         DCUS9a ,&
                                          BPMCUS7 ,DCUS9b ,&
                QCUS7   ,QCUS7   ,DCUS10a,XCCUS7  ,DCUS10b,&
                                          BPMCUS8 ,DCUS10c,&
                QCUS8   ,QCUS8   ,DCUS11a,YCCUS8  ,DCUS11b,&
                                          BPMCUS9 ,DCUS11c,&
                QCUS9   ,QCUS9   ,DCUS12a,YCCUS9  ,DCUS12b,&
                                          XCCUS10 ,DCUS12c,BPMCUS10,DCUS12d,&
                QCUS10  ,QCUS10  ,DCUS13 ,ROCUS2  ,&
                BRCUS1a ,BRCUS1b ,CNTCUS2)

  CUSXR : LINE=(BEGCUSXR,KCUSXR,DLCUSXR,ENDCUSXR)

! ------------------------------------------------------------------------------
! for match only (unrolled KCUSXR)

  TCUSXRM := 0.0

  BKRCUSMa : BKRCUSa, TILT=PI/2+TCUSXRM
  BKRCUSMb : BKRCUSb, TILT=PI/2+TCUSXRM

  BLRCUSMa : BLRCUSa, TILT=TCUSXRM
  BLRCUSMb : BLRCUSb, TILT=TCUSXRM

  BRCCUS1Ma : BRCCUS1a, TILT=PI/2+TCUSXRM
  BRCCUS1Mb : BRCCUS1b, TILT=PI/2+TCUSXRM
  BRCCUS2Ma : BRCCUS2a, TILT=PI/2+TCUSXRM
  BRCCUS2Mb : BRCCUS2b, TILT=PI/2+TCUSXRM

  KCUSXRM : LINE=(&
                  BKRCUSMa ,BKRCUSMb ,DCUSBLR,&
                  BLRCUSMa ,BLRCUSMb ,CNTCUS1,ROCUS0,DCUS1a,&
                  BRCCUS1Ma,BRCCUS1Mb,DCUS1b ,&
                  BRCCUS2Ma,BRCCUS2Mb,CNTCUS5)

  RETURN
