
! *** OPTICS=LCLS2sc28NOV16 ***

! LCLS2sc DASEL @4GeV

! ==============================================================================
! Modification History
! ------------------------------------------------------------------------------
! 23-NOV-2016, Y. Nosochkov
!  * reduce number of kickers from 7 to 6 (T. Beukers)
!  * correct minor error in kicker length formulas
!  * move PRDAS14 to center of the drift between quads QDAS14 and QDAS15
!  * move PRDAS17 to upstream side of QDAS17 to avoid interference with BXSP1H
! 02-NOV-2016, Y. Nosochkov
!  * match DASEL to new trajectory between BSY pulsed magnets and BXAM1
!  * increase x-offset of DASEL line between DC-bends from 35 to 40 cm
!  * rename QDAS18 to QDAS18a and add a placeholder for QDAS18b for 8 GeV
!  * add a note that BRDAS2 is a merge DC-bend which is turned ON for
!    DASEL beam to A-line or OFF for beam to A-line from BSY pulsed magnets 
! 21-SEP-2016, Y. Nosochkov
!  * add Y-corrector YCDAS1 (to compensate for missing trims on BYDAS1,2)
!  * move YCDAS15 downstream and rename to YCDAS17 (for better phase)
! 16-SEP-2016, Y. Nosochkov
!  * remove weak vertical bends BYDAS1, BYDAS2
!  * roll kicker/septum to compensate kicker vertical angle
!  * rematch geometry & optics to compensate kicker orbit & dispersion
! 26-AUG-2016, Y. Nosochkov
!  * change quad type from 2Q10 to 2Q4W
!  * rename QDAS1 -> QDAS1a, QDAS2 -> QDAS2a
! 17-AUG-2016, Y. Nosochkov
!  * add 3 BPMs (2 for MPS), 5 dipole correctors, 3 profile monitors
! 05-AUG-2016, Y. Nosochkov
!  * resolve interferences:
!    move QDAS1&2 and BYDAS2 0.815 m downstream
!    move QDAS19 0.6 m upstream --> this will move QDAS17 0.45 m upstream
!  * increase the number of kickers to 7 and move them 3 m upstream,
!    note: this will also require moving dumpline BPMSP1D 3 m upstream
! 30-APR-2016, Y. Nosochkov
!  * initial lattice
! ------------------------------------------------------------------------------
! DASEL
! ------------------------------------------------------------------------------

! Six rolled vertical kickers aligned along the BSY dumpline axis

  GBKYDAS := 0.01 !kicker gap (m)
  ZBKYDAS := 1.0  !kicker straight length (m)
  TBKYDAS := -0.044741691113 !kicker tilt angle relative to y-axis (rad)

  ABKYDAS0  := -0.65217383227E-3
  ABKYDAS   := ABKYDAS0 *SETDA        !total kicker angle (rad)
  ABKYDAS1  := ASIN(1*SIN(ABKYDAS)/6) !1st kicker angle (rad)
  ABKYDAS12 := ASIN(2*SIN(ABKYDAS)/6) !1st+2nd kicker angle (rad)
  ABKYDAS13 := ASIN(3*SIN(ABKYDAS)/6) !1+2+3 kicker angle (rad)
  ABKYDAS14 := ASIN(4*SIN(ABKYDAS)/6) !1+2+3+4 kicker angle (rad)
  ABKYDAS15 := ASIN(5*SIN(ABKYDAS)/6) !1+2+3+4+5 kicker angle (rad)
  ABKYDAS2  := ABKYDAS12-ABKYDAS1     !2nd kicker angle (rad)
  ABKYDAS3  := ABKYDAS13-ABKYDAS12    !3rd kicker angle (rad)
  ABKYDAS4  := ABKYDAS14-ABKYDAS13    !4th kicker angle (rad)
  ABKYDAS5  := ABKYDAS15-ABKYDAS14    !5th kicker angle (rad)
  ABKYDAS6  := ABKYDAS  -ABKYDAS15    !6th kicker angle (rad)

  LBKYDAS1  := 1*ZBKYDAS/(1-ABKYDAS1 *ABKYDAS1 /6)
  LBKYDAS12 := 2*ZBKYDAS/(1-ABKYDAS12*ABKYDAS12/6)
  LBKYDAS13 := 3*ZBKYDAS/(1-ABKYDAS13*ABKYDAS13/6)
  LBKYDAS14 := 4*ZBKYDAS/(1-ABKYDAS14*ABKYDAS14/6)
  LBKYDAS15 := 5*ZBKYDAS/(1-ABKYDAS15*ABKYDAS15/6)
  LBKYDAS   := 6*ZBKYDAS/(1-ABKYDAS  *ABKYDAS  /6)
  LBKYDAS2  :=   LBKYDAS12-LBKYDAS1
  LBKYDAS3  :=   LBKYDAS13-LBKYDAS12
  LBKYDAS4  :=   LBKYDAS14-LBKYDAS13
  LBKYDAS5  :=   LBKYDAS15-LBKYDAS14
  LBKYDAS6  :=   LBKYDAS  -LBKYDAS15

  BKYDAS1a : SBEN, TYPE="@3,0.787K35.4", L=LBKYDAS1/2, ANGLE=ABKYDAS1/2, &
    E1=0         , E2=0, FINT=0.5, FINTX=0, HGAP=GBKYDAS/2, TILT=PI/2+TBKYDAS
  BKYDAS1b : SBEN, TYPE="@3,0.787K35.4", L=LBKYDAS1/2, ANGLE=ABKYDAS1/2, &
    E2=ABKYDAS1  , E1=0, FINT=0, FINTX=0.5, HGAP=GBKYDAS/2, TILT=PI/2+TBKYDAS

  BKYDAS2a : SBEN, TYPE="@3,0.787K35.4", L=LBKYDAS2/2, ANGLE=ABKYDAS2/2, &
    E1=-ABKYDAS1 , E2=0, FINT=0.5, FINTX=0, HGAP=GBKYDAS/2, TILT=PI/2+TBKYDAS
  BKYDAS2b : SBEN, TYPE="@3,0.787K35.4", L=LBKYDAS2/2, ANGLE=ABKYDAS2/2, &
    E2= ABKYDAS12, E1=0, FINT=0, FINTX=0.5, HGAP=GBKYDAS/2, TILT=PI/2+TBKYDAS

  BKYDAS3a : SBEN, TYPE="@3,0.787K35.4", L=LBKYDAS3/2, ANGLE=ABKYDAS3/2, &
    E1=-ABKYDAS12, E2=0, FINT=0.5, FINTX=0, HGAP=GBKYDAS/2, TILT=PI/2+TBKYDAS
  BKYDAS3b : SBEN, TYPE="@3,0.787K35.4", L=LBKYDAS3/2, ANGLE=ABKYDAS3/2, &
    E2= ABKYDAS13, E1=0, FINT=0, FINTX=0.5, HGAP=GBKYDAS/2, TILT=PI/2+TBKYDAS

  BKYDAS4a : SBEN, TYPE="@3,0.787K35.4", L=LBKYDAS4/2, ANGLE=ABKYDAS4/2, &
    E1=-ABKYDAS13, E2=0, FINT=0.5, FINTX=0, HGAP=GBKYDAS/2, TILT=PI/2+TBKYDAS
  BKYDAS4b : SBEN, TYPE="@3,0.787K35.4", L=LBKYDAS4/2, ANGLE=ABKYDAS4/2, &
    E2= ABKYDAS14, E1=0, FINT=0, FINTX=0.5, HGAP=GBKYDAS/2, TILT=PI/2+TBKYDAS

  BKYDAS5a : SBEN, TYPE="@3,0.787K35.4", L=LBKYDAS5/2, ANGLE=ABKYDAS5/2, &
    E1=-ABKYDAS14, E2=0, FINT=0.5, FINTX=0, HGAP=GBKYDAS/2, TILT=PI/2+TBKYDAS
  BKYDAS5b : SBEN, TYPE="@3,0.787K35.4", L=LBKYDAS5/2, ANGLE=ABKYDAS5/2, &
    E2= ABKYDAS15, E1=0, FINT=0, FINTX=0.5, HGAP=GBKYDAS/2, TILT=PI/2+TBKYDAS

  BKYDAS6a : SBEN, TYPE="@3,0.787K35.4", L=LBKYDAS6/2, ANGLE=ABKYDAS6/2, &
    E1=-ABKYDAS15, E2=0, FINT=0.5, FINTX=0, HGAP=GBKYDAS/2, TILT=PI/2+TBKYDAS
  BKYDAS6b : SBEN, TYPE="@3,0.787K35.4", L=LBKYDAS6/2, ANGLE=ABKYDAS6/2, &
    E2= ABKYDAS  , E1=0, FINT=0, FINTX=0.5, HGAP=GBKYDAS/2, TILT=PI/2+TBKYDAS

! 2-hole rolled horizontal septum aligned along the BSY dumpline axis

  GBLXDAS := GBLSP !septum gap height (m)
  ZBLXDAS := LBLSP !septum straight length (m)

  ABLXDAS0   := -0.014565664428
  ABLXDAS    := ABLXDAS0 *SETDA      !septum bending angle (rad)
  ABLXDASa   := ASIN(SIN(ABLXDAS)/2) !angle per 1st half of the septum
  ABLXDASb   := ABLXDAS-ABLXDASa     !angle per 2nd half of the septum
  ABLXDAS_2  := ABLXDAS   *ABLXDAS
  ABLXDAS_4  := ABLXDAS_2 *ABLXDAS_2
  ABLXDASa_2 := ABLXDASa  *ABLXDASa
  ABLXDASa_4 := ABLXDASa_2*ABLXDASa_2

  LBLXDAS  := ZBLXDAS   /(1-ABLXDAS_2/6 +ABLXDAS_4/120 )/COS(ABKYDAS)
  LBLXDASa := ZBLXDAS/2 /(1-ABLXDASa_2/6+ABLXDASa_4/120)/COS(ABKYDAS)
  LBLXDASb := LBLXDAS-LBLXDASa

  BLXDASa : SBEN, TYPE="@3,0.625SD38.98", L=LBLXDASa, ANGLE=ABLXDASa, &
            E1=0, E2=0, FINT=0.5, FINTX=0, HGAP=GBLXDAS/2, TILT=TBKYDAS
  BLXDASb : SBEN, TYPE="@3,0.625SD38.98", L=LBLXDASb, ANGLE=ABLXDASb, &
            E1=0, E2=ABLXDAS, FINT=0, FINTX=0.5, HGAP=GBLXDAS/2, TILT=TBKYDAS

! rolled DC-bends

  ABRDAS1 := 0.015257226184
  LBRDAS1 := LBSP*ABRDAS1/(2*SIN(ABRDAS1/2)) !BRDAS1 path length (m)
  TBRDAS1 := 0.299028493345                  !BRDAS1 roll angle (rad)

  BRDAS1a : SBEN, TYPE="@3,1.0D38.37", L=LBRDAS1/2, ANGLE=ABRDAS1/2, &
            E1=ABRDAS1/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBSP/2, TILT=TBRDAS1
  BRDAS1b : SBEN, TYPE="@3,1.0D38.37", L=LBRDAS1/2, ANGLE=ABRDAS1/2, &
            E1=0, E2=ABRDAS1/2, FINT=0, FINTX=0.5, HGAP=GBSP/2, TILT=TBRDAS1

! Note: BRDAS2 is a merge DC-bend which is either turned ON to operate
!       DASEL beam in A-line, or turned OFF to operate beam in A-line from
!       BSY pulsed magnets

  ABRDAS2 := -0.012001987392
  LBRDAS2 := LBSP*ABRDAS2/(2*SIN(ABRDAS2/2)) !BRDAS2 path length (m)
  TBRDAS2 := 0.398106089513                  !BRDAS2 roll angle (rad)

  BRDAS2a : SBEN, TYPE="@3,1.0D38.37", L=LBRDAS2/2, ANGLE=ABRDAS2/2, &
            E1=ABRDAS2/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBSP/2, TILT=TBRDAS2
  BRDAS2b : SBEN, TYPE="@3,1.0D38.37", L=LBRDAS2/2, ANGLE=ABRDAS2/2, &
            E1=0, E2=ABRDAS2/2, FINT=0, FINTX=0.5, HGAP=GBSP/2, TILT=TBRDAS2

! quads

  KQDAS1  := -0.919781573345
  KQDAS2  :=  0.899231675591
  KQDAS11 := -0.184329909971
  KQDAS12 :=  0.323346233248
  KQDAS13 := -0.64761379873
  KQDAS14 :=  0.588312874018
  KQDAS17 := -0.664726773842
  KQDAS18 :=  0.940732106157
  KQDAS19 := -0.445173320213
  KQDAS15 := -KQDAS14
  KQDAS16 :=  KQDAS14

  QDAS1a : QUAD, TYPE="@3,2Q4W", L=LQM/2, K1=KQDAS1 , APER=rQM
  QDAS2a : QUAD, TYPE="@3,2Q4W", L=LQM/2, K1=KQDAS2 , APER=rQM
  QDAS11 : QUAD, TYPE="@3,2Q4W", L=LQM/2, K1=KQDAS11, APER=rQM
  QDAS12 : QUAD, TYPE="@3,2Q4W", L=LQM/2, K1=KQDAS12, APER=rQM
  QDAS13 : QUAD, TYPE="@3,2Q4W", L=LQM/2, K1=KQDAS13, APER=rQM
  QDAS14 : QUAD, TYPE="@3,2Q4W", L=LQM/2, K1=KQDAS14, APER=rQM
  QDAS15 : QUAD, TYPE="@3,2Q4W", L=LQM/2, K1=KQDAS15, APER=rQM
  QDAS16 : QUAD, TYPE="@3,2Q4W", L=LQM/2, K1=KQDAS16, APER=rQM
  QDAS17 : QUAD, TYPE="@3,2Q4W", L=LQM/2, K1=KQDAS17, APER=rQM
  QDAS18a: QUAD, TYPE="@3,2Q4W", L=LQM/2, K1=KQDAS18, APER=rQM
  QDAS19 : QUAD, TYPE="@3,2Q4W", L=LQM/2, K1=KQDAS19, APER=rQM

! drifts

  ZDDASBK   := 0.3      !Z-space between consecutive kickers
  ZDDASBLX  := 18.75    !Z-space between the last kicker and the septum
  ZDDASBLXa := 3.916667 !set for y=5mm at BPM
  ZDDASBLXb := ZDDASBLX-ZDDASBLXa

  LDDASBK1  := ZDDASBK  /COS(ABKYDAS1)
  LDDASBK2  := ZDDASBK  /COS(ABKYDAS12)
  LDDASBK3  := ZDDASBK  /COS(ABKYDAS13)
  LDDASBK4  := ZDDASBK  /COS(ABKYDAS14)
  LDDASBK5  := ZDDASBK  /COS(ABKYDAS15)
  LDDASBLXa := ZDDASBLXa/COS(ABKYDAS)
  LDDASBLXb := ZDDASBLXb/COS(ABKYDAS)

  DDASBK1  : DRIF, L=LDDASBK1
  DDASBK2  : DRIF, L=LDDASBK2
  DDASBK3  : DRIF, L=LDDASBK3
  DDASBK4  : DRIF, L=LDDASBK4
  DDASBK5  : DRIF, L=LDDASBK5
  DDASBLXa : DRIF, L=LDDASBLXa
  DDASBLXb : DRIF, L=LDDASBLXb

  LDDASQQ := 0.1357
  LDDAS1  := 26.8935
  LDDAS2a := 0.5
  LDDAS2b := 0.5
  LDDAS3  := 0.5
 dLDDAS4  := 0.0
  LDDAS4  := 1.9 +dLDDAS4
 dLDDAS5  := 0.557075922817E-2
  LDDAS5  := 72.0-(LBLSP+LBSP)/2-4*LQM-2*LDDASQQ &
                 -LDDAS1-LDDAS2a-LDDAS2b-LDDAS3-LDDAS4 +dLDDAS5

 dLDDAS11  := 0.0
  LDDAS11  := 5.6-(LBSP+LQM)/2 +dLDDAS11 
  LDDAS11a := 0.5
  LDDAS11b := LDDAS11-LDDAS11a
 dLDDAS19  := 0.0
  LDDAS19  := 9.44017725092-LDDASQQ-LQM +dLDDAS19 
 dLDDAS20  := 0.0
  LDDAS20  := 22.45-(LBSP+LQM)/2 +dLDDAS20 
  LDDAS20a := 0.5
  LDDAS20b := LDDAS20-LDDAS20a
 dLDDAS    := 0.0
  LDDAS    := (146.56661801108-10*LQM-LBSP-LDDAS11-LDDAS19-LDDASQQ-LDDAS20)/7 &
              +dLDDAS
  LDDAS12  := LDDAS
  LDDAS13  := LDDAS
  LDDAS13a := 2.97
  LDDAS13b := LDDAS13-LDDAS13a
  LDDAS14  := LDDAS
  LDDAS14b := 0.5
  LDDAS14a := LDDAS14-LDDAS14b
  LDDAS15  := LDDAS
  LDDAS15a := LDDAS/2
  LDDAS15b := LDDAS15-LDDAS15a
  LDDAS16  := LDDAS
  LDDAS17  := LDDAS
  LDDAS17b := 0.5
  LDDAS17c := 0.5
  LDDAS17a := LDDAS17-LDDAS17b-LDDAS17c
  LDDAS18  := LDDAS

  DQDAS1  : DRIF, L=LQM/2 !placeholder for future quad
  DQDAS2  : DRIF, L=LQM/2 !placeholder for future quad
  DQDAS18 : DRIF, L=LQM/2 !placeholder for future quad

  DDASQQ  : DRIF, L=LDDASQQ
  DDAS1   : DRIF, L=LDDAS1
  DDAS2a  : DRIF, L=LDDAS2a
  DDAS2b  : DRIF, L=LDDAS2b
  DDAS3   : DRIF, L=LDDAS3
  DDAS4   : DRIF, L=LDDAS4
  DDAS5   : DRIF, L=LDDAS5
  DDAS11a : DRIF, L=LDDAS11a
  DDAS11b : DRIF, L=LDDAS11b
  DDAS12  : DRIF, L=LDDAS12
  DDAS13a : DRIF, L=LDDAS13a
  DDAS13b : DRIF, L=LDDAS13b
  DDAS14a : DRIF, L=LDDAS14a
  DDAS14b : DRIF, L=LDDAS14b
  DDAS15a : DRIF, L=LDDAS15a
  DDAS15b : DRIF, L=LDDAS15b
  DDAS16  : DRIF, L=LDDAS16
  DDAS17a : DRIF, L=LDDAS17a
  DDAS17b : DRIF, L=LDDAS17b
  DDAS17c : DRIF, L=LDDAS17c
  DDAS18  : DRIF, L=LDDAS18
  DDAS19  : DRIF, L=LDDAS19
  DDAS20a : DRIF, L=LDDAS20a
  DDAS20b : DRIF, L=LDDAS20b

! roll angles

  ARODAS1 :=  0.474975673873E-5
  ARODAS2 :=  0.32766093743E-4
  ARODAS3 := -0.248626670868E-4

  RODAS1 : SROT, ANGLE=ARODAS1
  RODAS2 : SROT, ANGLE=ARODAS2
  RODAS3 : SROT, ANGLE=ARODAS3

! monitors

  BPMDAS   : MONI, TYPE="@3,Stripline-5" !not rolled
  BPMDAS1  : MONI, TYPE="@3,Stripline-5" !MPS BPM
  BPMDAS19 : MONI, TYPE="@3,Stripline-5" !MPS BPM

! steering correctors
! Notes: trims on all bends are used as correctors as well,
!        rolled correctors are rolled 90 deg relative to rolled bends

  XCDAS1  : HKIC, TYPE="@3,class-4"
  XCDAS14 : HKIC, TYPE="@3,class-4"

  YCDAS1  : VKIC, TYPE="@3,class-4"
  YCDAS17 : VKIC, TYPE="@3,class-4"

  RCDAS11 : HKIC, TYPE="@3,class-4"
  RCDAS19 : HKIC, TYPE="@3,class-4"

  ROLLRC := 0 !zero for twiss, but +1 for survey to show RC roll angle

  RODAS11P : SROT, ANGLE=(TBRDAS1-PI/2) *ROLLRC
  RODAS11M : SROT, ANGLE=-RODAS11P[ANGLE]

  RODAS19P : SROT, ANGLE=(TBRDAS2-PI/2) *ROLLRC
  RODAS19M : SROT, ANGLE=-RODAS19P[ANGLE]

! profile monitors

  PRDAS12 : PROF, TYPE="@3,PHOSPHOR"
  PRDAS14 : PROF, TYPE="@3,PHOSPHOR"
  PRDAS17 : PROF, TYPE="@3,PHOSPHOR"

! markers

  BEGDASEL : MARK
  ENDDASEL : MARK

! ------------------------------------------------------------------------------
! A-line adjustments
! ------------------------------------------------------------------------------

! quad strengths (also duplicate in SETK2scDA subroutine)

  KQ10 :=  0.039328599694
  KQ11 := -0.03454881345
  KQ19 :=  0.030795593516
  KQ20 := -0.504496621976E-3
  KQ27 := -0.083115468455
  KQ28 :=  0.040276527544
  KQ30 := -0.028711007764
  KQ38 :=  0.03419319725

! drifts

  LDDASA  := 21.329173153578
  LDDASA1 := 0.5
  LDDASA2 := LDDASA-LDDASA1

  DDASA1 : DRIF, L=LDDASA1
  DDASA2 : DRIF, L=LDDASA2

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

! beamlines

  DASEL : LINE=(&
    BKYDAS1a,BKYDAS1b,DDASBK1 ,&
    BKYDAS2a,BKYDAS2b,DDASBK2 ,&
    BKYDAS3a,BKYDAS3b,DDASBK3 ,&
    BKYDAS4a,BKYDAS4b,DDASBK4 ,&
    BKYDAS5a,BKYDAS5b,DDASBK5 ,&
    BKYDAS6a,BKYDAS6b,DDASBLXa,BPMDAS  ,DDASBLXb,&
    BLXDASa ,BLXDASb ,RODAS1  ,DDAS1   ,&
                               XCDAS1  ,DDAS2a  ,&
                               YCDAS1  ,DDAS2b  ,&
                               BPMDAS1 ,DDAS3   ,&
    DQDAS1  ,DQDAS1  ,DDASQQ  ,&
    QDAS1a  ,QDAS1a  ,DDAS4   ,&
    QDAS2a  ,QDAS2a  ,DDASQQ  ,&
    DQDAS2  ,DQDAS2  ,DDAS5   ,&
    BRDAS1a ,BRDAS1b ,RODAS2  ,DDAS11a ,&
                      RODAS11P,RCDAS11 ,RODAS11M,DDAS11b,&
    QDAS11  ,QDAS11  ,DDAS12  ,&
    QDAS12  ,QDAS12  ,DDAS13a ,PRDAS12 ,DDAS13b,&
    QDAS13  ,QDAS13  ,DDAS14a ,XCDAS14 ,DDAS14b,&
    QDAS14  ,QDAS14  ,DDAS15a ,PRDAS14 ,DDAS15b,&
    QDAS15  ,QDAS15  ,DDAS16  ,&
    QDAS16  ,QDAS16  ,DDAS17a ,PRDAS17 ,DDAS17b,YCDAS17,DDAS17c,&
    QDAS17  ,QDAS17  ,DDAS18  ,&
    QDAS18a ,QDAS18a ,DDASQQ  ,&
    DQDAS18 ,DQDAS18 ,DDAS19  ,&
    QDAS19  ,QDAS19  ,DDAS20a ,BPMDAS19,DDAS20b,RODAS3,&
    BRDAS2a ,BRDAS2b )

  DASELA : LINE=(BEGDASEL,DASEL,&
                 DDASA1,RODAS19P,RCDAS19,RODAS19M,ENDDASEL,DDASA2,ALINEc)

  SPDASELA : LINE=(SPRDkh,SPRDks,SPRDda,DASELA)

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

  RETURN

