
! *** OPTICS=LCLS2sc28OCT14 ***

! LCLS2sc 3-way spreader system

! ==============================================================================
! Modification History
! ------------------------------------------------------------------------------
! 10-OCT-2014, Y. Nosochkov
!  * update the TYPE of STSP6ha (BCS stopper) and IMSPd (toroid) to indicate
!    the non-baseline level "0"
! 28-JUL-2014, Y. Nosochkov
!  * replace a 3-hole spreader septum with two separate 2-hole septa for SXR
!    and HXR
!  * replace a 1-m deflector in the spreader with six 1-m magnetic kickers
!    (per T. Beukers)
!  * replace dipole corrector type "1.0D18.69" with "1.0D22.625" (per J. Amann)
! 15-JUL-2014, Y. Nosochkov
!  * replace RFBSP1d, RFBSP2d with stripline BPMSP1d, BPMSP2d (per J. Frisch)
! 02-MAY-2014, M. Woodley
!  * add "CNT" MARKERs after dispersive areas (ELEGANT CENTERing)
! 01-MAY-2014, Y. Nosochkov
!  * replace BPMSP1d, BPMSP2d with cavity BPMs RFBSP1d, RFBSP2d (per J. Frisch)
! 30-APR-2014, Y. Nosochkov
!  * add average current monitors IMSPs, IMSPh, IMSPd (per J. Frisch)
! 28-APR-2014, Y. Nosochkov
!  * remove QSP3D, QSP4D and their BPMs and correctors in BSY dumpline
!    assuming OTR and beta waist are not needed (per J. Frisch)
! 23-APR-2014, Y. Nosochkov
!  * remove OTRDMPd in SPD near D10 (per J. Frisch)
! 07-APR-2014, M. Woodley
!  * reorder and/or modify some drift length parameter definitions to avoid
!    using parameters before they are defined
! 04-APR-2014, Y. Nosochkov
! *  add BCS stopper upstream of 3 PPS stoppers in HXR,
!    name the BCS stopper STSP6ha, and PPS stoppers STSP6hb, STSP6hc, STSP6hd
! ------------------------------------------------------------------------------
! 31-MAR-2014, M. Woodley
!  * element names changed to conform to nomenclature PRD
! 25-MAR-2014, Y. Nosochkov
!  * add insertable beam stoppers STSP6ha, STSP6hb, STSP6hc in HXR
! 07-MAR-2014, Y. Nosochkov
!  * move corrector YCSP8h upstream of quad QSP8h for better separation with
!    nearby LCLS-1 quad
! 26-FEB-2014, Y. Nosochkov
!  * change from L=2.623 m dipoles (type 1.26D102.0T) to L=1.0 m dipoles
!    (type 1.0D38.37)
!  * reduce septum length from 2.0 to 1.0 m
!  * change type of BCSP1, BCSP2 dipoles from 1.26D18.43 to 1.0D18.69
! 14-FEB-2014, Y. Nosochkov
!  * add a dumpline from the spreader to D10 dump including optics
!    for energy diagnostic
! 17-JAN-2014, Y. Nosochkov
!  * modify HXR spreader from 1-step to 2-step dogleg for tunable R56
!    and better magnet separation
! 18-DEC-2013, Y. Nosochkov
!  * adjust magnet positions in the spreader for less magnet interference
! 16-DEC-2013, Y. Nosochkov
!  * 3-way spreader design with low R56
! ------------------------------------------------------------------------------

! XYZ (linac system) and Twiss at the beginning of spreader (BEGSP)

  XSP  := XOFF
  YSP  := YOFF
  ZSP  := 2780.576003
  THSP := 0.0
  PHSP := 0.0
  PSSP := 0.0

  TBXSP := 25.308039106939
  TBYSP := 2.40000000001E2
  TAXSP := 0.648538060556
  TAYSP := 3.409591544498
  TWSSP : BETA0, BETX=TBXSP, BETY=TBYSP, ALFX=TAXSP, ALFY=TAYSP

! XYZ (linac system) and Twiss at the end of HXR spreader SPRDh

  XSPh  :=  0.0
  YSPh  :=  0.0
  ZSPh  :=  3110.961492
  THSPh :=  0.0
  PHSPh :=  0.0
  PSSPh :=  0.0

  TBXSPh :=  2.507158802E+01
  TBYSPh :=  1.116648089E+02
  TAXSPh :=  6.955527885E-01
  TAYSPh := -2.340149196E+00
  TWSSPh : BETA0, BETX=TBXSPh, BETY=TBYSPh, ALFX=TAXSPh, ALFY=TAYSPh

! SXR quads

  KQSP1S :=  0.597957467619
  KQSP2S := -0.475976199662
  KQSP3S :=  0.605993363875
  KQSP4S := -0.400387399342
  KQSP5S :=  0.148125795418
  KQSP8S := -0.476195393364
  KQSP9S :=  0.598090178285
  KQSP6s :=  KQSP4s
  KQSP7s :=  KQSP3s

  QSP1s : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP1s, APER=rQA
  QSP2s : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP2s, APER=rQA
  QSP3s : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP3s, APER=rQA
  QSP4s : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP4s, APER=rQA
  QSP5s : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP5s, APER=rQA
  QSP6s : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP6s, APER=rQA
  QSP7s : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP7s, APER=rQA
  QSP8s : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP8s, APER=rQA
  QSP9s : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP9s, APER=rQA

! HXR quads

  KQSP1H  :=  0.353826268303
  KQSP2H  := -0.261605238465
  KQSP3H  :=  0.453260443016
  KQSP4H  := -0.362379114303
  KQSP5H  :=  0.155043485477
  KQSP6H  := -0.176007271879
  KQSP7H  :=  0.212650165951
  KQSP10H := -0.363505378116
  KQSP11H :=  0.457636361184
  KQSP12H := -0.270175965115
  KQSP13H :=  0.352466102259
  KQSP8h  :=  KQSP6h
  KQSP9h  :=  KQSP5h

  QSP1h  : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP1h , APER=rQA
  QSP2h  : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP2h , APER=rQA
  QSP3h  : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP3h , APER=rQA
  QSP4h  : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP4h , APER=rQA
  QSP5h  : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP5h , APER=rQA
  QSP6h  : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP6h , APER=rQA
  QSP7h  : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP7h , APER=rQA
  QSP8h  : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP8h , APER=rQA
  QSP9h  : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP9h , APER=rQA
  QSP10h : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP10h, APER=rQA
  QSP11h : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP11h, APER=rQA
  QSP12h : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP12h, APER=rQA
  QSP13h : QUAD, TYPE="1.26Q12", L=LQA/2, K1=KQSP13h, APER=rQA

! BSY dumpline quads

  KQSP1D :=  0.146730216818
  KQSP2D := -0.148060421275

  QSP1d : QUAD, TYPE="3.94Q17", L=LQP/2, K1=KQSP1d, APER=rQP
  QSP2d : QUAD, TYPE="3.94Q17", L=LQP/2, K1=KQSP2d, APER=rQP

  DQSP3d : DRIF, L=LQP
  DQSP4d : DRIF, L=LQP

! SXR and HXR vertical magnetic kickers
! All kickers aligned along the same z-axis (per T. Beukers)
! Assume the same z-length per kicker and same field (per SXR or HXR)

  GBKYSP := 0.01 !kicker gap (m) - round pipe, square bore aperture
  LBKYSP := 1.0  !kicker straight length (m)

  ABKYSPh   :=  0.75E-3 *SETKIKh               !total HXR kicker y-angle (rad)
  ABKYSPs   := -0.75E-3 *SETKIKs               !total SXR kicker y-angle (rad)
  ABKYSP1h  := ASIN(SIN(ABKYSPh)/3)            !1st HXR kicker y-angle (rad)
  ABKYSP1s  := ASIN(SIN(ABKYSPs)/3)            !1st SXR kicker y-angle (rad)
  ABKYSP2h  := ASIN(SIN(2*ABKYSPh)/3)-ABKYSP1h !2nd HXR kicker y-angle (rad)
  ABKYSP2s  := ASIN(SIN(2*ABKYSPs)/3)-ABKYSP1s !2nd SXR kicker y-angle (rad)
  ABKYSP12h := ABKYSP1h+ABKYSP2h
  ABKYSP12s := ABKYSP1s+ABKYSP2s
  ABKYSP3h  := ABKYSPh-ABKYSP12h               !3rd HXR kicker y-angle (rad)
  ABKYSP3s  := ABKYSPs-ABKYSP12s               !3rd SXR kicker y-angle (rad)

  LBKYSP1h := LBKYSP/(1-ABKYSP1h*ABKYSP1h/6)
  LBKYSP1s := LBKYSP/(1-ABKYSP1s*ABKYSP1s/6)/COS(ABKYSP1h)
  LBKYSP2h := (2*LBKYSP/(1-ABKYSP12h*ABKYSP12h/6)-LBKYSP1h)/COS(ABKYSP1s)
  LBKYSP2s := (2*LBKYSP/(1-ABKYSP12s*ABKYSP12s/6)-LBKYSP1s)/COS(ABKYSP12h)
  LBKYSP3h := (3*LBKYSP/(1-ABKYSPh*ABKYSPh/6)-LBKYSP1h-LBKYSP2h)/COS(ABKYSP12s)
  LBKYSP3s := (3*LBKYSP/(1-ABKYSPs*ABKYSPs/6)-LBKYSP1s-LBKYSP2s)/COS(ABKYSPh)

  BKYSP1ha : SBEN, TYPE="spreader", L=LBKYSP1h/2, ANGLE=ABKYSP1h/2, TILT, &
    E1=0, E2=0, FINT=0.5, FINTX=0, HGAP=GBKYSP/2
  BKYSP1hb : SBEN, TYPE="spreader", L=LBKYSP1h/2, ANGLE=ABKYSP1h/2, TILT, &
    E2=ABKYSP1h, E1=0, FINT=0, FINTX=0.5, HGAP=GBKYSP/2

  BKYSP2ha : SBEN, TYPE="spreader", L=LBKYSP2h/2, ANGLE=ABKYSP2h/2, TILT, &
    E1=-ABKYSP1h, E2=0, FINT=0.5, FINTX=0, HGAP=GBKYSP/2
  BKYSP2hb : SBEN, TYPE="spreader", L=LBKYSP2h/2, ANGLE=ABKYSP2h/2, TILT, &
    E2=ABKYSP1h+ABKYSP2h, E1=0, FINT=0, FINTX=0.5, HGAP=GBKYSP/2

  BKYSP3ha : SBEN, TYPE="spreader", L=LBKYSP3h/2, ANGLE=ABKYSP3h/2, TILT, &
    E1=-ABKYSP1h-ABKYSP2h, E2=0, FINT=0.5, FINTX=0, HGAP=GBKYSP/2
  BKYSP3hb : SBEN, TYPE="spreader", L=LBKYSP3h/2, ANGLE=ABKYSP3h/2, TILT, &
    E2=ABKYSPh, E1=0, FINT=0, FINTX=0.5, HGAP=GBKYSP/2

  BKYSP1sa : SBEN, TYPE="spreader", L=LBKYSP1s/2, ANGLE=ABKYSP1s/2, TILT, &
    E1=0, E2=0, FINT=0.5, FINTX=0, HGAP=GBKYSP/2
  BKYSP1sb : SBEN, TYPE="spreader", L=LBKYSP1s/2, ANGLE=ABKYSP1s/2, TILT, &
    E2=ABKYSP1s, E1=0, FINT=0, FINTX=0.5, HGAP=GBKYSP/2

  BKYSP2sa : SBEN, TYPE="spreader", L=LBKYSP2s/2, ANGLE=ABKYSP2s/2, TILT, &
    E1=-ABKYSP1s, E2=0, FINT=0.5, FINTX=0, HGAP=GBKYSP/2
  BKYSP2sb : SBEN, TYPE="spreader", L=LBKYSP2s/2, ANGLE=ABKYSP2s/2, TILT, &
    E2=ABKYSP1s+ABKYSP2s, E1=0, FINT=0, FINTX=0.5, HGAP=GBKYSP/2

  BKYSP3sa : SBEN, TYPE="spreader", L=LBKYSP3s/2, ANGLE=ABKYSP3s/2, TILT, &
    E1=-ABKYSP1s-ABKYSP2s, E2=0, FINT=0.5, FINTX=0, HGAP=GBKYSP/2
  BKYSP3sb : SBEN, TYPE="spreader", L=LBKYSP3s/2, ANGLE=ABKYSP3s/2, TILT, &
    E2=ABKYSPs, E1=0, FINT=0, FINTX=0.5, HGAP=GBKYSP/2

! 2-hole HXR horizontal septum

  GBLXSP := 0.01 !septum gap height (m) - TBD
  LBLXSP := 1.0  !septum straight length (m)
  ABLXSP := 0.011055447407

  ABLXSPh    := -ABLXSP/2 *SETKIKh
  ABLXSPha   := ASIN(SIN(ABLXSPh)/2)
  ABLXSPhb   := ABLXSPh-ABLXSPha
  ABLXSPh_2  := ABLXSPh*ABLXSPh
  ABLXSPh_4  := ABLXSPh_2*ABLXSPh_2
  ABLXSPha_2 := ABLXSPha*ABLXSPha
  ABLXSPha_4 := ABLXSPha_2*ABLXSPha_2

  LBLXSPh  := LBLXSP/(1-ABLXSPh_2/6+ABLXSPh_4/120)/COS(ABKYSPh+ABKYSPs)
  LBLXSPha := LBLXSP/2/(1-ABLXSPha_2/6+ABLXSPha_4/120)/COS(ABKYSPh+ABKYSPs)
  LBLXSPhb := LBLXSPh-LBLXSPha

  BLXSPha : SBEN, TYPE="HLAM", L=LBLXSPha, ANGLE=ABLXSPha, &
                  E1=0, E2=0, FINT=0.5, FINTX=0, HGAP=GBLXSP/2
  BLXSPhb : SBEN, TYPE="HLAM", L=LBLXSPhb, ANGLE=ABLXSPhb, &
                  E1=0, E2=ABLXSPh, FINT=0, FINTX=0.5, HGAP=GBLXSP/2

! 2-hole SXR horizontal septum

  ABLXSPs    := ABLXSP *SETKIKs
  ABLXSPsa   := ASIN(SIN(ABLXSPs)/2)
  ABLXSPsb   := ABLXSPs-ABLXSPsa
  ABLXSPs_2  := ABLXSPs*ABLXSPs
  ABLXSPs_4  := ABLXSPs_2*ABLXSPs_2
  ABLXSPsa_2 := ABLXSPsa*ABLXSPsa
  ABLXSPsa_4 := ABLXSPsa_2*ABLXSPsa_2

  LBLXSPs  := LBLXSP/(1-ABLXSPs_2/6+ABLXSPs_4/120)/COS(ABLXSPh)/ &
              COS(ABKYSPh+ABKYSPs)
  LBLXSPsa := LBLXSP/2/(1-ABLXSPsa_2/6+ABLXSPsa_4/120)/COS(ABLXSPh)/ &
              COS(ABKYSPh+ABKYSPs)
  LBLXSPsb := LBLXSPs-LBLXSPsa

  BLXSPsa : SBEN, TYPE="HLAM", L=LBLXSPsa, ANGLE=ABLXSPsa, &
                  E1=0, E2=0, FINT=0.5, FINTX=0, HGAP=GBLXSP/2
  BLXSPsb : SBEN, TYPE="HLAM", L=LBLXSPsb, ANGLE=ABLXSPsb, &
                  E1=0, E2=ABLXSPs, FINT=0, FINTX=0.5, HGAP=GBLXSP/2

! SXR horizontal bends

  dABXSPs := 0.310909196485E-8
  ABXSPs  := ABLXSPs+dABXSPs
  LBXSPs  := LBSP*ABXSPs/(2*SIN(ABXSPs/2)) !BXSPs path length (m)

  BXSP1sa : SBEN, TYPE="1.0D38.37", L=LBXSPs/2, ANGLE=-ABXSPs/2, &
                  E1=-ABXSPs/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBSP/2
  BXSP1sb : SBEN, TYPE="1.0D38.37", L=LBXSPs/2, ANGLE=-ABXSPs/2, &
                  E1=0, E2=-ABXSPs/2, FINT=0, FINTX=0.5, HGAP=GBSP/2

  BXSP2sa : SBEN, TYPE="1.0D38.37", L=LBXSPs/2, ANGLE=-ABXSPs/2, &
                  E1=-ABXSPs/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBSP/2
  BXSP2sb : SBEN, TYPE="1.0D38.37", L=LBXSPs/2, ANGLE=-ABXSPs/2, &
                  E1=0, E2=-ABXSPs/2, FINT=0, FINTX=0.5, HGAP=GBSP/2

  BXSP3sa : SBEN, TYPE="1.0D38.37", L=LBXSPs/2, ANGLE=ABXSPs/2, &
                  E1=ABXSPs/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBSP/2
  BXSP3sb : SBEN, TYPE="1.0D38.37", L=LBXSPs/2, ANGLE=ABXSPs/2, &
                  E1=0, E2=ABXSPs/2, FINT=0, FINTX=0.5, HGAP=GBSP/2

! HXR rolled bends

  ABRSPh := 0.65032125667E-2
  LBRSPh := LBSP*ABRSPh/(2*SIN(ABRSPh/2)) !BRSPh path length (m)
  TBRSPh := 0.554818928471                !BRSPh roll angle (rad)

  BRSP1ha : SBEN, TYPE="1.0D38.37", L=LBRSPh/2, ANGLE=ABRSPh/2, &
            E1=ABRSPh/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBSP/2, TILT=TBRSPh
  BRSP1hb : SBEN, TYPE="1.0D38.37", L=LBRSPh/2, ANGLE=ABRSPh/2, &
            E1=0, E2=ABRSPh/2, FINT=0, FINTX=0.5, HGAP=GBSP/2, TILT=TBRSPh

  BRSP2ha : SBEN, TYPE="1.0D38.37", L=LBRSPh/2, ANGLE=-ABRSPh/2, &
            E1=-ABRSPh/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBSP/2, TILT=TBRSPh
  BRSP2hb : SBEN, TYPE="1.0D38.37", L=LBRSPh/2, ANGLE=-ABRSPh/2, &
            E1=0, E2=-ABRSPh/2, FINT=0, FINTX=0.5, HGAP=GBSP/2, TILT=TBRSPh

! HXR horizontal bend

  dABXSPh := 0.155464098402E-8
  ABXSPh  := -ABLXSPh+dABXSPh
  LBXSPh  := LBSP*ABXSPh/(2*SIN(ABXSPh/2)) !BXSPh path length (m)

  BXSP1ha : SBEN, TYPE="1.0D38.37", L=LBXSPh/2, ANGLE=ABXSPh/2, &
                  E1=ABXSPh/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBSP/2
  BXSP1hb : SBEN, TYPE="1.0D38.37", L=LBXSPh/2, ANGLE=ABXSPh/2, &
                  E1=0, E2=ABXSPh/2, FINT=0, FINTX=0.5, HGAP=GBSP/2

! BSY dumpline vertical bends

  ABYSPd := 0.877684127155E-2
  LBYSPd := LBSP*ABYSPd/(2*SIN(ABYSPd/2)) !BYSPd path length (m)

  BYSP1da : SBEN, TYPE="1.0D38.37", L=LBYSPd/2, ANGLE=ABYSPd/2, TILT, &
                  E1=ABYSPd/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBSP/2
  BYSP1db : SBEN, TYPE="1.0D38.37", L=LBYSPd/2, ANGLE=ABYSPd/2, TILT, &
                  E1=0, E2=ABYSPd/2, FINT=0, FINTX=0.5, HGAP=GBSP/2

  BYSP2da : SBEN, TYPE="1.0D38.37", L=LBYSPd/2, ANGLE=-ABYSPd/2, TILT, &
                  E1=-ABYSPd/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBSP/2
  BYSP2db : SBEN, TYPE="1.0D38.37", L=LBYSPd/2, ANGLE=-ABYSPd/2, TILT, &
                  E1=0, E2=-ABYSPd/2, FINT=0, FINTX=0.5, HGAP=GBSP/2

! BSY dumpline horizontal bend

  ABXSPd := -0.901402689746E-2
  LBXSPd := LBSP*ABXSPd/(2*SIN(ABXSPd/2)) !BXSPd path length (m)

  BXSPda : SBEN, TYPE="1.0D38.37", L=LBXSPd/2, ANGLE=ABXSPd/2, &
                 E1=ABXSPd/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBSP/2
  BXSPdb : SBEN, TYPE="1.0D38.37", L=LBXSPd/2, ANGLE=ABXSPd/2, &
                 E1=0, E2=ABXSPd/2, FINT=0, FINTX=0.5, HGAP=GBSP/2

! SXR DC bend correctors to compensate kicker orbit and dispersion

  LBCSP   :=  0.6                             !DC corrector length
  GBCSP   :=  0.0254                          !DC corrector gap
  ABCSP1s :=  0.317906794365E-2
  ABCSP2s := -0.242911377678E-2
  LBCSP1s := LBCSP*ABCSP1s/(2*SIN(ABCSP1s/2)) !BYSP1s path length (m)
  LBCSP2s := LBCSP*ABCSP2s/(2*SIN(ABCSP2s/2)) !BYSP2s path length (m)

  BYSP1sa : SBEN, TYPE="1.0D22.625", L=LBCSP1s/2, ANGLE=ABCSP1s/2, &
            E1=ABCSP1s/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBCSP/2, TILT
  BYSP1sb : SBEN, TYPE="1.0D22.625", L=LBCSP1s/2, ANGLE=ABCSP1s/2, &
            E2=ABCSP1s/2, E1=0, FINTX=0.5, FINT=0, HGAP=GBCSP/2, TILT

  BYSP2sa : SBEN, TYPE="1.0D22.625", L=LBCSP2s/2, ANGLE=ABCSP2s/2, &
            E1=ABCSP2s/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBCSP/2, TILT
  BYSP2sb : SBEN, TYPE="1.0D22.625", L=LBCSP2s/2, ANGLE=ABCSP2s/2, &
            E2=ABCSP2s/2, E1=0, FINTX=0.5, FINT=0, HGAP=GBCSP/2, TILT

! HXR DC bend correctors to compensate kicker orbit and dispersion

  ABCSP1h := -0.378701235849E-2
  ABCSP2h :=  0.303702381686E-2
  LBCSP1h := LBCSP*ABCSP1h/(2*SIN(ABCSP1h/2)) !BYSP1h path length (m)
  LBCSP2h := LBCSP*ABCSP2h/(2*SIN(ABCSP2h/2)) !BYSP2h path length (m)

  BYSP1ha : SBEN, TYPE="1.0D22.625", L=LBCSP1h/2, ANGLE=ABCSP1h/2, &
            E1=ABCSP1h/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBCSP/2, TILT
  BYSP1hb : SBEN, TYPE="1.0D22.625", L=LBCSP1h/2, ANGLE=ABCSP1h/2, &
            E2=ABCSP1h/2, E1=0, FINTX=0.5, FINT=0, HGAP=GBCSP/2, TILT

  BYSP2ha : SBEN, TYPE="1.0D22.625", L=LBCSP2h/2, ANGLE=ABCSP2h/2, &
            E1=ABCSP2h/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBCSP/2, TILT
  BYSP2hb : SBEN, TYPE="1.0D22.625", L=LBCSP2h/2, ANGLE=ABCSP2h/2, &
            E2=ABCSP2h/2, E1=0, FINTX=0.5, FINT=0, HGAP=GBCSP/2, TILT

! drifts

  LDSPBLX  := 0.5/COS(ABLXSPh)/COS(ABKYSPh+ABKYSPs)
  LDSPBK   := 0.15
  LDSPBK1  := LDSPBK/COS(ABKYSP1h)
  LDSPBK2  := LDSPBK/COS(ABKYSP1h+ABKYSP1s)
  LDSPBK3  := LDSPBK/COS(ABKYSP12h+ABKYSP1s)
  LDSPBK4  := LDSPBK/COS(ABKYSP12h+ABKYSP12s)
  LDSPBK5  := LDSPBK/COS(ABKYSPh+ABKYSP12s)
  LDSP1    := 15.375/COS(ABKYSPh+ABKYSPs)
 dLDSP2s   := 0.0
  LDSP2s   := 32.6 +dLDSP2s +0.175/2
  LDSP2sb  := 12.0 -0.2
  LDSP2sc  := 0.5
  LDSP2sa  := LDSP2s-LDSP2sb-LDSP2sc-LBCSP1s-LBCSP2s
 dLDSP3s   := 0.0
  LDSP3s   := 2.1 +dLDSP3s
  LDSP3sa  := 0.4
  LDSP3sb  := LDSP3s-LDSP3sa
  LDSP4s   := 8.8 -dLDSP2s -dLDSP3s
  LDSP4sa  := 0.4
  LDSP4sc  := 0.4
  LDSP4sb  := LDSP4s-LDSP4sa-LDSP4sc
 dLDSP5s   := 0.0
  LDSP5s   := 6.623 +dLDSP5s
 dLDSP6s   := -9.4
  LDSP6s   := (69.146-LDSP5s-LDSP5s)/4 !avoid using parameters before they are defined
  LDSP6sa  := 0.4
  LDSP6sb  := LDSP6s-LDSP6sa +dLDSP6s
  LDSP7s   := LDSP6s
  LDSP7sa  := 0.4
  LDSP7sb  := LDSP7s-LDSP7sa -dLDSP6s
  LDSP8s   := LDSP6s
  LDSP8sa  := 0.4
  LDSP8sb  := LDSP8s-LDSP8sa -dLDSP6s
  LDSP9s   := LDSP6s
  LDSP9sa  := 0.4
  LDSP9sb  := LDSP9s-LDSP9sa +dLDSP6s
  LDSP10s  := LDSP5s
  LDSP10sa := 0.4
  LDSP10sb := LDSP10s-LDSP10sa
  LDSP11s  := LDSP4s
  LDSP12s  := LDSP3s
  LDSP12sa := 0.4
  LDSP12sb := LDSP12s-LDSP12sa
 dLDSP13s  := -0.41404035707E-4
  LDSP13s  := LDSP2s +dLDSP13s +LBLXSPs/2-LBXSPs/2
  LDSP13sa := 0.4
  LDSP13sb := LDSP13s-LDSP13sa

  DSPBLX  : DRIF, L=LDSPBLX
  DSPBK1  : DRIF, L=LDSPBK1
  DSPBK2  : DRIF, L=LDSPBK2
  DSPBK3  : DRIF, L=LDSPBK3
  DSPBK4  : DRIF, L=LDSPBK4
  DSPBK5  : DRIF, L=LDSPBK5
  DSP1    : DRIF, L=LDSP1
  DSP2sa  : DRIF, L=LDSP2sa
  DSP2sb  : DRIF, L=LDSP2sb
  DSP2sc  : DRIF, L=LDSP2sc
  DSP3sa  : DRIF, L=LDSP3sa
  DSP3sb  : DRIF, L=LDSP3sb
  DSP4sa  : DRIF, L=LDSP4sa
  DSP4sb  : DRIF, L=LDSP4sb
  DSP4sc  : DRIF, L=LDSP4sc
  DSP5s   : DRIF, L=LDSP5s
  DSP6sa  : DRIF, L=LDSP6sa
  DSP6sb  : DRIF, L=LDSP6sb
  DSP7sa  : DRIF, L=LDSP7sa
  DSP7sb  : DRIF, L=LDSP7sb
  DSP8sa  : DRIF, L=LDSP8sa
  DSP8sb  : DRIF, L=LDSP8sb
  DSP9sa  : DRIF, L=LDSP9sa
  DSP9sb  : DRIF, L=LDSP9sb
  DSP10sa : DRIF, L=LDSP10sa
  DSP10sb : DRIF, L=LDSP10sb
  DSP11s  : DRIF, L=LDSP11s
  DSP12sa : DRIF, L=LDSP12sa
  DSP12sb : DRIF, L=LDSP12sb
  DSP13sa : DRIF, L=LDSP13sa
  DSP13sb : DRIF, L=LDSP13sb

 dLDSP2h   := 0.0
  LDSP2h   := 43.0 +dLDSP2h +0.175/2
  LDSP2hb  := 12.0 -0.2
  LDSP2hc  := 0.5
  LDSP2ha  := LDSP2h-LDSP2hb-LDSP2hc-LBCSP1h-LBCSP2h-LDSPBLX-LBLXSPh
 dLDSP3h   := 0.0
  LDSP3h   := 6.2 +dLDSP3h
  LDSP3ha  := 0.4
  LDSP3hb  := LDSP3h-LDSP3ha
 dLDSP4h   := 0.012059712048
  LDSP4h   := 7.9 -dLDSP2h -dLDSP3h +dLDSP4h
  LDSP4ha  := 0.4
  LDSP4hc  := 0.4
  LDSP4hb  := LDSP4h-LDSP4ha-LDSP4hc
 dLDSP5h   := 0.0
  LDSP5h   := 8.94 +dLDSP5h
 dLDSP6h   := 0.0
  LDSP6h   := 5.0 +dLDSP6h
  LDSP6ha  := 0.4
  LDSP6hc  := 0.4
  LDSP6hb  := LDSP6h-LDSP6ha-LDSP6hc
 dLDSPh    := 0.0
  LDSPh    := (185.704364620844-LDSP5h-LDSP6h-LDSP6h-LDSP5h)/6 +dLDSPh
  LDSP7h   := LDSPh -0.3
  LDSP8h   := LDSPh -0.3
  LDSP8ha  := 0.4
  LDSP8hb  := LDSP8h-LDSP8ha
  LDSP9h   := LDSPh +0.6
  LDSP9ha  := 0.4
  LDSP9hb  := 4.3
  LDSP9hc  := 2.5
  LDSP9hd  := 2.5
  LDSP9he  := 2.5
  LDSP9hf  := LDSP9h-LDSP9ha-LDSP9hb-LDSP9hc-LDSP9hd-LDSP9he
  LDSP10h  := LDSP9h
  LDSP10ha := 0.4
  LDSP10hc := 0.4
  LDSP10hb := LDSP10h-LDSP10ha-LDSP10hc
  LDSP11h  := LDSP8h
  LDSP11ha := 0.4
  LDSP11hb := LDSP11h-LDSP11ha
  LDSP12h  := LDSP7h
  LDSP12ha := 0.4
  LDSP12hb := LDSP12h-LDSP12ha
  LDSP13h  := LDSP6h
  LDSP13ha := 0.4
  LDSP13hb := LDSP13h-LDSP13ha
  LDSP14h  := LDSP5h
  LDSP14ha := 0.4
  LDSP14hb := LDSP14h-LDSP14ha
  LDSP15h  := LDSP4h
  LDSP16h  := LDSP3h
  LDSP16ha := 0.4
  LDSP16hb := LDSP16h-LDSP16ha
 dLDSP17h  := -0.543682939739E-4
  LDSP17h  := LDSP2h +dLDSP17h +LBLXSPh/2-LBXSPh/2
  LDSP17ha := 0.4
  LDSP17hb := LDSP17h-LDSP17ha

  DSP2ha  : DRIF, L=LDSP2ha
  DSP2hb  : DRIF, L=LDSP2hb
  DSP2hc  : DRIF, L=LDSP2hc
  DSP3ha  : DRIF, L=LDSP3ha
  DSP3hb  : DRIF, L=LDSP3hb
  DSP4ha  : DRIF, L=LDSP4ha
  DSP4hb  : DRIF, L=LDSP4hb
  DSP4hc  : DRIF, L=LDSP4hc
  DSP5h   : DRIF, L=LDSP5h
  DSP6ha  : DRIF, L=LDSP6ha
  DSP6hb  : DRIF, L=LDSP6hb
  DSP6hc  : DRIF, L=LDSP6hc
  DSP7h   : DRIF, L=LDSP7h
  DSP8ha  : DRIF, L=LDSP8ha
  DSP8hb  : DRIF, L=LDSP8hb
  DSP9ha  : DRIF, L=LDSP9ha
  DSP9hb  : DRIF, L=LDSP9hb
  DSP9hc  : DRIF, L=LDSP9hc
  DSP9hd  : DRIF, L=LDSP9hd
  DSP9he  : DRIF, L=LDSP9he
  DSP9hf  : DRIF, L=LDSP9hf
  DSP10ha : DRIF, L=LDSP10ha
  DSP10hb : DRIF, L=LDSP10hb
  DSP10hc : DRIF, L=LDSP10hc
  DSP11ha : DRIF, L=LDSP11ha
  DSP11hb : DRIF, L=LDSP11hb
  DSP12ha : DRIF, L=LDSP12ha
  DSP12hb : DRIF, L=LDSP12hb
  DSP13ha : DRIF, L=LDSP13ha
  DSP13hb : DRIF, L=LDSP13hb
  DSP14ha : DRIF, L=LDSP14ha
  DSP14hb : DRIF, L=LDSP14hb
  DSP15h  : DRIF, L=LDSP15h
  DSP16ha : DRIF, L=LDSP16ha
  DSP16hb : DRIF, L=LDSP16hb
  DSP17ha : DRIF, L=LDSP17ha
  DSP17hb : DRIF, L=LDSP17hb

  LDSP2db := 32.0
  LDSP3da := 0.4
  LDSP3db := 0.4
  LDSP3dd := 0.4
  LDSP3dc := 5.0-LDSP3da-LDSP3db-LDSP3dd-DRFB[L]
  LDSP4d  := 1.0
  LDSP2da := 76.5-LDSP2db-LDSP3da-LDSP3db-LDSP3dc-LDSP3dd-LDSP4d-2*LQP-DRFB[L] &
                 -LDSPBLX-LBLXSP +0.175
  LDSP5d  := 73.0
  LDSP7da := 0.4
  LDSP7db := 0.4
  LDSP7dc := 4.0-LDSP7da-LDSP7db
  LDSP8d  := 1.0
  LDSP6d  := 200.5-LDSP7da-LDSP7db-LDSP7dc-LDSP8d-2*LQP -2.3
  dLDSP9d := 0.0 !adjust Z at D10
  LDSP9db := 3.0
  LDSP9da := 21.6879371947-LDSP9db +dLDSP9d

  DSP2da : DRIF, L=LDSP2da
  DSP2db : DRIF, L=LDSP2db
  DSP3da : DRIF, L=LDSP3da
  DSP3db : DRIF, L=LDSP3db
  DSP3dc : DRIF, L=LDSP3dc
  DSP3dd : DRIF, L=LDSP3dd
  DSP4d  : DRIF, L=LDSP4d
  DSP5d  : DRIF, L=LDSP5d
  DSP6d  : DRIF, L=LDSP6d
  DSP7da : DRIF, L=LDSP7da
  DSP7db : DRIF, L=LDSP7db
  DSP7dc : DRIF, L=LDSP7dc
  DSP8d  : DRIF, L=LDSP8d
  DSP9da : DRIF, L=LDSP9da
  DSP9db : DRIF, L=LDSP9db

! markers

  BEGSP   : MARK
  CNTSP1S : MARK, TYPE="CENTER"
  CNTSP2S : MARK, TYPE="CENTER"
  CNTSP1H : MARK, TYPE="CENTER"
  CNTSP2H : MARK, TYPE="CENTER"
  CNTSP3H : MARK, TYPE="CENTER"
  D10Jd   : MARK !D10 entrance
  DUMPBSY : INST, TYPE="D10" !D10 dump

! monitors

  BPMSP1s  : MONI, TYPE="05_um_res" !type TBD
  BPMSP2s  : MONI, TYPE="05_um_res" !type TBD
  BPMSP3s  : MONI, TYPE="05_um_res" !type TBD
  BPMSP4s  : MONI, TYPE="05_um_res" !type TBD
  BPMSP5s  : MONI, TYPE="05_um_res" !type TBD
  BPMSP6s  : MONI, TYPE="05_um_res" !type TBD
  BPMSP7s  : MONI, TYPE="05_um_res" !type TBD
  BPMSP8s  : MONI, TYPE="05_um_res" !type TBD
  BPMSP9s  : MONI, TYPE="05_um_res" !type TBD

  BPMSP1h  : MONI, TYPE="05_um_res" !type TBD
  BPMSP2h  : MONI, TYPE="05_um_res" !type TBD
  BPMSP3h  : MONI, TYPE="05_um_res" !type TBD
  BPMSP4h  : MONI, TYPE="05_um_res" !type TBD
  BPMSP5h  : MONI, TYPE="05_um_res" !type TBD
  BPMSP6h  : MONI, TYPE="05_um_res" !type TBD
  BPMSP7h  : MONI, TYPE="05_um_res" !type TBD
  BPMSP8h  : MONI, TYPE="05_um_res" !type TBD
  BPMSP9h  : MONI, TYPE="05_um_res" !type TBD
  BPMSP10h : MONI, TYPE="05_um_res" !type TBD
  BPMSP11h : MONI, TYPE="05_um_res" !type TBD
  BPMSP12h : MONI, TYPE="05_um_res" !type TBD
  BPMSP13h : MONI, TYPE="05_um_res" !type TBD

  BPMSP1d  : MONI, TYPE="05_um_res" !type TBD
  BPMSP2d  : MONI, TYPE="05_um_res" !type TBD
  !BPMSP3d  : MONI, TYPE="05_um_res" !type TBD
  !BPMSP4d  : MONI, TYPE="05_um_res" !type TBD

  MRFBSP1d : MARK !MONI, TYPE="01_um_res" !RF-bpm if spreader is RF
  MRFBSP2d : MARK !MONI, TYPE="01_um_res" !RF-bpm if spreader is RF

 !OTRDMPd  : PROF, TYPE="OTR" !dump screen

! steering correctors

  XCSP1s  : HKIC, TYPE="class-4" !type TBD
  XCSP3s  : HKIC, TYPE="class-4" !type TBD
  XCSP5s  : HKIC, TYPE="class-4" !type TBD
  XCSP7s  : HKIC, TYPE="class-4" !type TBD
  XCSP9s  : HKIC, TYPE="class-4" !type TBD

  YCSP2s  : VKIC, TYPE="class-4" !type TBD
  YCSP4s  : VKIC, TYPE="class-4" !type TBD
  YCSP6s  : VKIC, TYPE="class-4" !type TBD
  YCSP8s  : VKIC, TYPE="class-4" !type TBD

  XCSP1h  : HKIC, TYPE="class-4" !type TBD
  XCSP3h  : HKIC, TYPE="class-4" !type TBD
  XCSP5h  : HKIC, TYPE="class-4" !type TBD
  XCSP7h  : HKIC, TYPE="class-4" !type TBD
  XCSP9h  : HKIC, TYPE="class-4" !type TBD
  XCSP11h : HKIC, TYPE="class-4" !type TBD
  XCSP13h : HKIC, TYPE="class-4" !type TBD

  YCSP2h  : VKIC, TYPE="class-4" !type TBD
  YCSP4h  : VKIC, TYPE="class-4" !type TBD
  YCSP6h  : VKIC, TYPE="class-4" !type TBD
  YCSP8h  : VKIC, TYPE="class-4" !type TBD
  YCSP10h : VKIC, TYPE="class-4" !type TBD
  YCSP12h : VKIC, TYPE="class-4" !type TBD

  XCSP1d  : HKIC, TYPE="class-4" !type TBD
 !XCSP3d  : HKIC, TYPE="class-4" !type TBD

  YCSP2d  : VKIC, TYPE="class-4" !type TBD
 !YCSP4d  : VKIC, TYPE="class-4" !type TBD

! stoppers

  STSP6ha : INST, TYPE="@0" !BCS stopper
  STSP6hb : INST            !center of STSP6hb PPS stopper in HXR
  STSP6hc : INST            !1st PPS backup stopper for STSP6hb
  STSP6hd : INST            !2nd PPS backup stopper for STSP6hb

! SROT to remove rotation angle

  AROSPs  := -0.829141820717E-5
  AROSP1h := -0.414577244198E-5
  AROSP2h :=  0.946849052537E-5
  AROSP3h := -AROSP2h

  ROSPs  : SROT, ANGLE=AROSPs
  ROSP1h : SROT, ANGLE=AROSP1h
  ROSP2h : SROT, ANGLE=AROSP2h
  ROSP3h : SROT, ANGLE=AROSP3h

  IMSPs : IMON             !average current monitor in SPS
  IMSPh : IMON             !average current monitor in SPH
  IMSPd : IMON, TYPE="@0"  !average current monitor in SPD

! beamlines

  SPRDk : LINE=(BEGSP,&
                BKYSP1ha,BKYSP1hb,DSPBK1,BKYSP1sa,BKYSP1sb,DSPBK2,&
                BKYSP2ha,BKYSP2hb,DSPBK3,BKYSP2sa,BKYSP2sb,DSPBK4,&
                BKYSP3ha,BKYSP3hb,DSPBK5,BKYSP3sa,BKYSP3sb,DSP1, &
                BLXSPha,BLXSPhb,DSPBLX,BLXSPsa,BLXSPsb)

  SPRDs : LINE=(SEQ06BEG,&
                SPRDk,ROSPs,DSP2sa,BYSP1sa,BYSP1sb,DSP2sb,&
                                   BYSP2sa,BYSP2sb,CNTSP1S,DSP2sc,&
                QSP1s,BPMSP1s,QSP1s,DSP3sa ,XCSP1s,DSP3sb,&
                QSP2s,BPMSP2s,QSP2s,DSP4sa ,YCSP2s,DSP4sb,IMSPs,DSP4sc,&
                BXSP1sa,BXSP1sb    ,DSP5s  ,&
                QSP3s,BPMSP3s,QSP3s,DSP6sa ,XCSP3s,DSP6sb,&
                QSP4s,BPMSP4s,QSP4s,DSP7sa ,YCSP4s,DSP7sb,&
                QSP5s,BPMSP5s,QSP5s,DSP8sa ,XCSP5s,DSP8sb,&
                QSP6s,BPMSP6s,QSP6s,DSP9sa ,YCSP6s,DSP9sb,&
                QSP7s,BPMSP7s,QSP7s,DSP10sa,XCSP7s,DSP10sb,&
                BXSP2sa,BXSP2sb    ,DSP11s ,&
                QSP8s,BPMSP8s,QSP8s,DSP12sa,YCSP8s,DSP12sb,&
                QSP9s,BPMSP9s,QSP9s,DSP13sa,XCSP9s,DSP13sb,&
                BXSP3sa,BXSP3sb,CNTSP2S)

  SPRDh : LINE=(SEQ11BEG,&
                SPRDk,ROSP1h,DSP2ha,BYSP1ha,BYSP1hb,DSP2hb,&
                                    BYSP2ha,BYSP2hb,CNTSP1H,DSP2hc,&
                QSP1h ,BPMSP1h ,QSP1h  ,DSP3ha ,XCSP1h ,DSP3hb,&
                QSP2h ,BPMSP2h ,QSP2h  ,DSP4ha ,YCSP2h ,DSP4hb,&
                                                IMSPh  ,DSP4hc,&
                BRSP1ha,BRSP1hb,ROSP2h ,DSP5h  ,&
                QSP3h ,BPMSP3h ,QSP3h  ,DSP6ha ,XCSP3h ,DSP6hb,&
                                                YCSP4h ,DSP6hc,&
                QSP4h ,BPMSP4h ,QSP4h  ,DSP7h  ,&
                QSP5h ,BPMSP5h ,QSP5h  ,DSP8ha ,XCSP5h ,DSP8hb,&
                QSP6h ,BPMSP6h ,QSP6h  ,DSP9ha ,YCSP6h ,DSP9hb,&
                 STSP6ha,DSP9hc,STSP6hb,DSP9hd ,STSP6hc,DSP9he,STSP6hd,DSP9hf,&
                QSP7h ,BPMSP7h ,QSP7h  ,DSP10ha,XCSP7h ,DSP10hb,&
                                                YCSP8h ,DSP10hc,&
                QSP8h ,BPMSP8h ,QSP8h  ,DSP11ha,        DSP11hb,&
                QSP9h ,BPMSP9h ,QSP9h  ,DSP12ha,XCSP9h ,DSP12hb,&
                QSP10h,BPMSP10h,QSP10h ,DSP13ha,YCSP10h,DSP13hb,&
                QSP11h,BPMSP11h,QSP11h ,DSP14ha,XCSP11h,DSP14hb,ROSP3h,&
                BRSP2ha,BRSP2hb,CNTSP2H,DSP15h ,&
                QSP12h,BPMSP12h,QSP12h ,DSP16ha,YCSP12h,DSP16hb,&
                QSP13h,BPMSP13h,QSP13h ,DSP17ha,XCSP13h,DSP17hb,&
                BXSP1ha,BXSP1hb,CNTSP3H)

  SPRDd : LINE=(SEQ15BEG,&
                SPRDk          ,DSP2da,MRFBSP1d,DSP2db,&
                QSP1d  ,BPMSP1d,QSP1d ,DSP3da,XCSP1d,DSP3db,IMSPd,DSP3dc,&
                                       YCSP2d,DSP3dd,MRFBSP2d,DRFB,&
                QSP2d  ,BPMSP2d,QSP2d ,DSP4d ,&
                BYSP1da,BYSP1db,DSP5d ,&
                BYSP2da,BYSP2db,DSP6d ,&
                DQSP3d ,DSP7da ,DSP7db,DSP7dc,&
                DQSP4d ,DSP8d  ,&
                BXSPda ,BXSPdb ,DSP9da,DSP9db,D10Jd,DUMPBSY,&
                ENDSPD,&
                SEQ15END)

  RETURN
