
! *** OPTICS=LCLS2sc01OCT15 ***

! LCLS2sc 3-way spreader system

! ==============================================================================
! Modification History
! ------------------------------------------------------------------------------
! 25-SEP-2015, Y. Nosochkov
!  * update definition of BXSP1h to allow zero angle
! 24-AUG-2015, Y. Nosochkov
!  * add placeholder kickers for future  expansion (2 HXR and 2 SXR sections)
!    deferred at level @2
!  * move BYSP1h 1.8 m downstream to increase separation with dump line
!  * update the TYPE of septa from 0.39SD38.98 to 0.625SD38.98 (J. Amann)
!  * add two quads QSP1, QSP2 (baseline) with BPMs/correctors (deferred
!    at level @0)
!  * separate the HXR/SXR spreader kickers by moving the SXR kicker, septum
!    and chicane ~86 m downstream
!  * use positive sign of vertical kick in both HXR/SXR kickers for the same
!    style septa in HXR and SXR
! ------------------------------------------------------------------------------
! 19-JUN-2015, Y. Nosochkov
!  * add OTRSPDMP ~12 m before the muon wall, deferred at @0 (per Paul)
!  * move WSSP1D upstream to between vertical bends where Dy=0.4 m (per Paul)
!  * add deferred BTMs behind BCS PCSP collimators (per S. Mao)
!  * move IMSP1D upstream of PCSP2D (per S. Mao)
!  * remove PCSP4D, move PCSP3D close to muon wall (per S. Mao)
!  * move BPMSP1d upstream to within 23 m of the septum (per Tor and T. O'Heron)
!  * change the type of BPMSP4D to "Stripline-5" (per C. Iverson)
!  * change the status of IMSP0D, WSSP1D, STSP5S from deferred to baseline
!  * move BPMSP2H,7H,12H outside of the quads (per T. O'Heron)
!  * move QSP1S 5 cm downstream and QSP9S 5 cm upstream (per T. O'Heron)
!  * change type of quads QSP1S,2S,3S,7S,8S,9S,3H,11H to 1.97Q20
!  * adjust positions of correctors and BPMs at 1.97Q20 quads (per T. O'Heron)
!  * remove BXSP1D assuming new BSY dump will be installed (per A. Ibrahimov)
!  * adjust positions of BPMSP3D, IMSP0D, IMSP0H, IMSP0S (per T. O'Heron)
!  * change BPMSP3D to "Stripline-8" (per M. Gaynor)
!  * change type of BPMs at 2Q10 quads to "Stripline-5" (per M. Gaynor)
! ------------------------------------------------------------------------------
! 16-APR-2015, M. Woodley
!  * restore "LQL" parameter and its dependencies
! 20-MAR-2015, M. Woodley
!  * remove dependences on (now undefined) parameter "LQL"
!  * assign TYPEs to BCS devices ... defer at level 0
! 12-MAR-2015, Y. Nosochkov
!  * move QSP3H u/s and QSP11H d/s by 15 inches (per T. O'Heron)
!  * move BPMs outside of 2Q10 quads and adjust positions of corresponding
!    correctors (per T. O'Heron)
!  * move STSP6HB 32 inches downstream (per T. O'Heron)
! 28-FEB-2015, Y. Nosochkov
!  * minor update to definiton of the spreader kickers and septa
!  * change type of QSP1S-QSP9S, QSP1H, QSP3H-QSP6H, QSP8H-QSP11H, QSP13H,
!    QSP1D, QSP2D from "1.97Q10" to "2Q10"
! ------------------------------------------------------------------------------
! 12-DEC-2014, M. Woodley
!  * assign BPM TYPE attributes per PRD LCLSII-2.4-PR-0136
! 09-DEC-2014, Y. Nosochkov
!  * move STBP32 stopper to inside of the SXR spreader chicane and rename it
!    to STSP5s
!  * move D10 dump inside the muon wall in the BSY
!  * change engineering TYPE of QSP1d, QSP2d to "1.97Q10"
!  * rename BXSPd to BXSP1d and change its engineering TYPE to "9D28.5"
!  * rename ROSPs to ROSP1s
!  * rename IMSPs -> IMSP0s, IMSPh -> IMSP0h, IMSPd -> IMSP0d
!  * add BSC current monitors IMSP1d, IMSP2d in SPD (S. Mao)
!  * add BCS collimators PCSP1s, PCSP2s in SPS (S. Mao)
!  * add BCS collimators PCSP1h, PCSP2h in SPH (S. Mao)
!  * add BCS collimators PCSP1d, PCSP2d, PCSP3d, PCSP4d in SPD (S. Mao)
!  * change TYPE of septum magnets from "HLAM" to "0.39SD38.98" (J. Amann)
!  * add BPMSP3d, BPMSP4d at the last two bends in SPD
!  * add fast wire WSSP1d to measure beam size upstream of D10 dump (J. Frisch)
!  * change to type "QE" the following quadrupoles: QSP2h, QSP7h, QSP12h
!  * change to type "1.97Q10" the quads: QSP1h, QSP3h,...,QSP6h,
!    QSP8h,...,QSP11h, QSP13h, QSP1s,...,QSP9s
!    note: field of QSP1s,3s,7s,9s reaches the limit at 7.8 GeV
! ------------------------------------------------------------------------------
! 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 optimized Twiss at the beginning of spreader (BEGSP)

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

  TBXSP := 1.085640507381E2
  TBYSP := 60.000000011617
  TAXSP := 2.880788392217
  TAYSP := 0.858083864088
  TWSSP : BETA0, BETX=TBXSP, BETY=TBYSP, ALFX=TAXSP, ALFY=TAYSP

! XYZ (linac system) at the end of HXR merge bend BXSP1h

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

  !TBXSPh :=  2.268076783E+01
  !TBYSPh :=  4.347967081E+01
  !TAXSPh := -9.678231011E-01
  !TAYSPh := -1.622871865E-01
  !TWSSPh : BETA0, BETX=TBXSPh, BETY=TBYSPh, ALFX=TAXSPh, ALFY=TAYSPh

! HXR quads

  KQSP1H  :=  0.492063568211
  KQSP2H  := -0.998681650941
  KQSP3H  :=  0.190610213038
  KQSP4H  := -0.313386903899
  KQSP5H  :=  0.168030491289
  KQSP6H  := -0.223015677909
  KQSP7H  :=  0.454505441079
  KQSP10H := -0.31344586404
  KQSP11H :=  0.19071420131
  KQSP12H := -0.988860533394
  KQSP13H :=  0.4910401179
  KQSP8h  :=  KQSP6h
  KQSP9h  :=  KQSP5h

  QSP1h  : QUAD, TYPE="2Q10"      , L=LQR/2, K1=KQSP1h , APER=rQR
  QSP2h  : QUAD, TYPE="1.085Q4.31", L=LQE/2, K1=KQSP2h , APER=rQE
  QSP3h  : QUAD, TYPE="1.97Q20"   , L=LQN/2, K1=KQSP3h , APER=rQN
  QSP4h  : QUAD, TYPE="2Q10"      , L=LQR/2, K1=KQSP4h , APER=rQR
  QSP5h  : QUAD, TYPE="2Q10"      , L=LQR/2, K1=KQSP5h , APER=rQR
  QSP6h  : QUAD, TYPE="2Q10"      , L=LQR/2, K1=KQSP6h , APER=rQR
  QSP7h  : QUAD, TYPE="1.085Q4.31", L=LQE/2, K1=KQSP7h , APER=rQE
  QSP8h  : QUAD, TYPE="2Q10"      , L=LQR/2, K1=KQSP8h , APER=rQR
  QSP9h  : QUAD, TYPE="2Q10"      , L=LQR/2, K1=KQSP9h , APER=rQR
  QSP10h : QUAD, TYPE="2Q10"      , L=LQR/2, K1=KQSP10h, APER=rQR
  QSP11h : QUAD, TYPE="1.97Q20"   , L=LQN/2, K1=KQSP11h, APER=rQN
  QSP12h : QUAD, TYPE="1.085Q4.31", L=LQE/2, K1=KQSP12h, APER=rQE
  QSP13h : QUAD, TYPE="2Q10"      , L=LQR/2, K1=KQSP13h, APER=rQR

! SXR & dumpline shared quads

  KQSP1 :=  0.525508143134
  KQSP2 := -0.519668615973

  QSP1 : QUAD, TYPE="2Q10", L=LQR/2, K1=KQSP1, APER=rQR
  QSP2 : QUAD, TYPE="2Q10", L=LQR/2, K1=KQSP2, APER=rQR

! SXR quads

  KQSP1S :=  0.379958046024
  KQSP2S := -0.335582025325
  KQSP3S :=  0.38928102266
  KQSP4S := -0.506226620177
  KQSP5S :=  0.186989131
  KQSP8S := -0.335716873854
  KQSP9S :=  0.380036610483
  KQSP6s :=  KQSP4s
  KQSP7s :=  KQSP3s

  QSP1s : QUAD, TYPE="1.97Q20", L=LQN/2, K1=KQSP1s, APER=rQN
  QSP2s : QUAD, TYPE="1.97Q20", L=LQN/2, K1=KQSP2s, APER=rQN
  QSP3s : QUAD, TYPE="1.97Q20", L=LQN/2, K1=KQSP3s, APER=rQN
  QSP4s : QUAD, TYPE="2Q10"   , L=LQR/2, K1=KQSP4s, APER=rQR
  QSP5s : QUAD, TYPE="2Q10"   , L=LQR/2, K1=KQSP5s, APER=rQR
  QSP6s : QUAD, TYPE="2Q10"   , L=LQR/2, K1=KQSP6s, APER=rQR
  QSP7s : QUAD, TYPE="1.97Q20", L=LQN/2, K1=KQSP7s, APER=rQN
  QSP8s : QUAD, TYPE="1.97Q20", L=LQN/2, K1=KQSP8s, APER=rQN
  QSP9s : QUAD, TYPE="1.97Q20", L=LQN/2, K1=KQSP9s, APER=rQN

! BSY dumpline quads

  KQSP1D := -0.258438263390
  KQSP2D :=  0.232594552705

  QSP1d : QUAD, TYPE="2Q10", L=LQR/2, K1=KQSP1d, APER=rQR
  QSP2d : QUAD, TYPE="2Q10", L=LQR/2, K1=KQSP2d, APER=rQR

! 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 (in SXR or HXR)

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

  ABKYSPh0  := -0.75E-3
  ABKYSPh   := ABKYSPh0 *SETKIKh      !total HXR kicker y-angle (rad)
  ABKYSP1h  := ASIN(  SIN(ABKYSPh)/3) !1st HXR kicker y-angle (rad)
  ABKYSP12h := ASIN(2*SIN(ABKYSPh)/3) !1st+2nd HXR kicker y-angle (rad)
  ABKYSP2h  := ABKYSP12h-ABKYSP1h     !2nd HXR kicker y-angle (rad)
  ABKYSP3h  := ABKYSPh  -ABKYSP12h    !3rd HXR kicker y-angle (rad)

  LBKYSP1h  :=   LBKYSP/(1-ABKYSP1h *ABKYSP1h /6)
  LBKYSP12h := 2*LBKYSP/(1-ABKYSP12h*ABKYSP12h/6)
  LBKYSP13h := 3*LBKYSP/(1-ABKYSPh  *ABKYSPh  /6)
  LBKYSP2h  :=   LBKYSP12h-LBKYSP1h
  LBKYSP3h  :=   LBKYSP13h-LBKYSP12h

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

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

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

! placeholder for future HXR kickers

  LBKYSP0h := LBKYSP
  LBKYSP4h := LBKYSP/COS(ABKYSPh)

  BKYSP0ha : SBEN, TYPE="@2,spreader", L=LBKYSP0h/2, ANGLE=0, TILT
  BKYSP0hb : SBEN, TYPE="@2,spreader", L=LBKYSP0h/2, ANGLE=0, TILT

  BKYSP4ha : SBEN, TYPE="@2,spreader", L=LBKYSP4h/2, ANGLE=0, TILT
  BKYSP4hb : SBEN, TYPE="@2,spreader", L=LBKYSP4h/2, ANGLE=0, TILT

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

  ABKYSPs0  := -0.75E-3
  ABKYSPs   := ABKYSPs0 *SETKIKs      !total SXR kicker y-angle (rad)
  ABKYSP1s  := ASIN(  SIN(ABKYSPs)/3) !1st SXR kicker y-angle (rad)
  ABKYSP12s := ASIN(2*SIN(ABKYSPs)/3) !1st+2nd SXR kicker y-angle (rad)
  ABKYSP2s  := ABKYSP12s-ABKYSP1s     !2nd SXR kicker y-angle (rad)
  ABKYSP3s  := ABKYSPs  -ABKYSP12s    !3rd SXR kicker y-angle (rad)

  LBKYSP1s  :=   LBKYSP/(1-ABKYSP1s *ABKYSP1s /6)
  LBKYSP12s := 2*LBKYSP/(1-ABKYSP12s*ABKYSP12s/6)
  LBKYSP13s := 3*LBKYSP/(1-ABKYSPs  *ABKYSPs  /6)
  LBKYSP2s  :=   LBKYSP12s-LBKYSP1s
  LBKYSP3s  :=   LBKYSP13s-LBKYSP12s

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

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

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

! placeholder for future SXR kickers

  LBKYSP0s := LBKYSP
  LBKYSP4s := LBKYSP/COS(ABKYSPs)

  BKYSP0sa : SBEN, TYPE="@2,spreader", L=LBKYSP0s/2, ANGLE=0, TILT
  BKYSP0sb : SBEN, TYPE="@2,spreader", L=LBKYSP0s/2, ANGLE=0, TILT

  BKYSP4sa : SBEN, TYPE="@2,spreader", L=LBKYSP4s/2, ANGLE=0, TILT
  BKYSP4sb : SBEN, TYPE="@2,spreader", L=LBKYSP4s/2, ANGLE=0, TILT

! 2-hole HXR horizontal septum aligned along the bypass axis

  GBLXSP := GBLSP !septum gap height (m)
  LBLXSP := LBLSP !septum straight length (m)

  ABLXSPh0   := -0.0055277237035
  ABLXSPh    := ABLXSPh0 *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)
  LBLXSPha := LBLXSP/2 /(1-ABLXSPha_2/6+ABLXSPha_4/120)/COS(ABKYSPh)
  LBLXSPhb := LBLXSPh-LBLXSPha

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

! 2-hole SXR horizontal septum aligned along the bypass axis

  ABLXSPs0   := 0.011055447407
  ABLXSPs    := ABLXSPs0 *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(ABKYSPs)
  LBLXSPsa := LBLXSP/2 /(1-ABLXSPsa_2/6+ABLXSPsa_4/120)/COS(ABKYSPs)
  LBLXSPsb := LBLXSPs-LBLXSPsa

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

! HXR rolled bends

  ABRSPH := 0.650488048269E-2
  LBRSPh := LBSP*ABRSPh/(2*SIN(ABRSPh/2)) !BRSPh path length (m)
  TBRSPh := 0.555232529864                !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.155464098791E-8
  ABXSPh    := (-ABLXSPh0+dABXSPh) *SETKIKh
  ABXSPhh   := ABXSPh/2
  ABXSPhh_2 := ABXSPhh   *ABXSPhh
  ABXSPhh_4 := ABXSPhh_2 *ABXSPhh_2
  LBXSPh    := LBSP/(1-ABXSPhh_2/6 +ABXSPhh_4/120) !BXSP1h 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

! SXR horizontal bends

  dABXSPs := 0.310909196253E-8
  ABXSPs  := ABLXSPs0+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

! 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 (removed)

  GBXSPd  :=  0.07874 !BXSP1d gap height (m)
  LBXSPdz :=  0.80340 !BXSP1d straight length (m)
  ABXSPd  := -0.896292406042E-2
  LBXSPd  :=  LBXSPdz*ABXSPd/(2*SIN(ABXSPd/2)) !BXSP1d path length (m)

  BXSP1da : SBEN, TYPE="9D28.5", L=LBXSPd/2, ANGLE=ABXSPd/2, &
                  E1=ABXSPd/2, E2=0, FINT=0.5, FINTX=0, HGAP=GBXSPd/2
  BXSP1db : SBEN, TYPE="9D28.5", L=LBXSPd/2, ANGLE=ABXSPd/2, &
                  E1=0, E2=ABXSPd/2, FINT=0, FINTX=0.5, HGAP=GBXSPd/2

  DBXSP1d : DRIF, L=0.803391932471/2 !half-length of BXSP1d Z-projection

! HXR DC bend correctors to compensate kicker orbit and dispersion

  LBCSP   :=  0.6                             !DC corrector length
  GBCSP   :=  0.0254                          !DC corrector gap

  ABCSP1H :=  0.445436076072E-2
  ABCSP2H := -0.370437221909E-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

! SXR DC bend correctors to compensate kicker orbit and dispersion

  ABCSP1S :=  0.316848325608E-2
  ABCSP2S := -0.241852908922E-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

! drifts

  LDSPCOR1 := 0.3617
  LDSPCOR2 := 0.5263
  LDSPBPM1 := 0.4471
  LDSPBPM2 := 0.5342
  LDSPBK   := 0.15

  LDSPBK0h := LDSPBK
  LDSPBK1h := LDSPBK/COS(ABKYSP1h)
  LDSPBK2h := LDSPBK/COS(ABKYSP12h)
  LDSPBK3h := LDSPBK/COS(ABKYSPh)
  LDSPBK4h := 16.7  /COS(ABKYSPh)

  DSPBK0h  : DRIF, L=LDSPBK0h
  DSPBK1h  : DRIF, L=LDSPBK1h
  DSPBK2h  : DRIF, L=LDSPBK2h
  DSPBK3h  : DRIF, L=LDSPBK3h
  DSPBK4h  : DRIF, L=LDSPBK4h

 dLDSP2h   := 0.0
  LDSP2h   := 43.0875+(LQA-LQR)/2 +dLDSP2h +0.168
  LDSP2hb  := 10.0 !11.8
  LDSP2hc  := 0.5+(LQA-LQR)/2
  LDSP2ha  := LDSP2h-LDSP2hb-LDSP2hc-LBCSP1h-LBCSP2h
 dLDSP3h   := 0.0
  LDSP3h   := 4.694+(LQA-LQE)/2+(LQA-LQR)/2 +dLDSP3h -0.168
  LDSP3ha  := LDSPBPM1
  LDSP3hb  := 0.6368
  LDSP3hd  := 0.1924
  LDSP3hc  := LDSP3h-LDSP3ha-LDSP3hb-LDSP3hd
 dLDSP4h   := 0.012085492416
  LDSP4h   := 9.406+(LQA-LQE)/2 -dLDSP2h-dLDSP3h+dLDSP4h
  LDSP4ha  := 0.4
  LDSP4hc  := 0.3459992
  LDSP4hb  := LDSP4h-LDSP4ha-LDSP4hc
 dLDSP5h   := 0.0
  LDSP5h   := 14.885+(LQA-LQR)/2 +dLDSP5h +(LQR-LQN)/2
  LDSP5ha  := 1.124131
  LDSP5hc  := LDSPCOR2
  LDSP5hb  := LDSP5h-LDSP5ha-LDSP5hc-LPCSP
 dLDSP6h   := 0.0
  LDSP6h   := 7.863+(LQA-LQR) +dLDSP6h +(LQR-LQN)/2
  LDSP6ha  := LDSPBPM2
  LDSP6hc  := LDSPCOR1
  LDSP6hb  := LDSP6h-LDSP6ha-LDSP6hc
 dLDSPh    := 0.0
  LDSPh    := (185.529365489743+9*(LQA-LQR)+2*(LQR-LQN)-2*LDSP5h-2*LDSP6h)/6 &
              +dLDSPh
  LDSP7h   := LDSPh -0.3
  LDSP7ha  := LDSPBPM1
  LDSP7hc  := LDSPCOR1
  LDSP7hb  := LDSP7h-LDSP7ha-LDSP7hc
  LDSP8h   := LDSPh -0.3
  LDSP8ha  := LDSPBPM1
  LDSP8hc  := LDSPCOR1
  LDSP8hb  := LDSP8h-LDSP8ha-LDSP8hc
  LDSP9h   := LDSPh+(LQR-LQE)/2 +0.6
  LDSP9ha  := LDSPBPM1
  LDSP9hb  := 4.2529+(LQA-LQR)/2
  LDSP9hc  := 3.3128
  LDSP9hd  := 1.6872
  LDSP9he  := 2.5
  LDSP9hg  := 0.1924
  LDSP9hf  := LDSP9h-LDSP9ha-LDSP9hb-LDSP9hc-LDSP9hd-LDSP9he-LDSP9hg
  LDSP10h  := LDSP9h
  LDSP10ha := 0.4
  LDSP10hc := LDSPCOR1
  LDSP10hb := LDSP10h-LDSP10ha-LDSP10hc
  LDSP11h  := LDSP8h
  LDSP11ha := LDSPBPM1
  LDSP11hc := 0.4781
  LDSP11hb := LDSP11h-LDSP11ha-LDSP11hc
  LDSP12h  := LDSP7h
  LDSP12ha := 0.4285
  LDSP12hc := LDSPCOR1
  LDSP12hb := LDSP12h-LDSP12ha-LDSP12hc
  LDSP13h  := LDSP6h
  LDSP13ha := LDSPBPM1
  LDSP13hc := LDSPCOR2
  LDSP13hb := LDSP13h-LDSP13ha-LDSP13hc
  LDSP14h  := LDSP5h
  LDSP14ha := LDSPBPM2
  LDSP14hb := LDSP14h-LDSP14ha
  LDSP15h  := LDSP4h
  LDSP15ha := 4.0
  LDSP15hc := 0.1924
  LDSP15hb := LDSP15h-LDSP15ha-LDSP15hc-LPCSP
  LDSP16h  := LDSP3h
  LDSP16ha := 0.4
  LDSP16hc := LDSPCOR1
  LDSP16hb := LDSP16h-LDSP16ha-LDSP16hc
 dLDSP17h  := -0.801500183647E-4
  LDSP17h  := LDSP2h +dLDSP17h +LBLXSPh/2-LBXSPh/2
  LDSP17ha := LDSPBPM1
  LDSP17hb := LDSP17h-LDSP17ha

  DSP2ha  : DRIF, L=LDSP2ha
  DSP2hb  : DRIF, L=LDSP2hb
  DSP2hc  : DRIF, L=LDSP2hc
  DSP3ha  : DRIF, L=LDSP3ha
  DSP3hb  : DRIF, L=LDSP3hb
  DSP3hc  : DRIF, L=LDSP3hc
  DSP3hd  : DRIF, L=LDSP3hd
  DSP4ha  : DRIF, L=LDSP4ha
  DSP4hb  : DRIF, L=LDSP4hb
  DSP4hc  : DRIF, L=LDSP4hc
  DSP5h   : DRIF, L=LDSP5h
  DSP5ha  : DRIF, L=LDSP5ha
  DSP5hb  : DRIF, L=LDSP5hb
  DSP5hc  : DRIF, L=LDSP5hc
  DSP6ha  : DRIF, L=LDSP6ha
  DSP6hb  : DRIF, L=LDSP6hb
  DSP6hc  : DRIF, L=LDSP6hc
  DSP7ha  : DRIF, L=LDSP7ha
  DSP7hb  : DRIF, L=LDSP7hb
  DSP7hc  : DRIF, L=LDSP7hc
  DSP8ha  : DRIF, L=LDSP8ha
  DSP8hb  : DRIF, L=LDSP8hb
  DSP8hc  : DRIF, L=LDSP8hc
  DSP9ha  : DRIF, L=LDSP9ha
  DSP9hb  : DRIF, L=LDSP9hb
  DSP9hc  : DRIF, L=LDSP9hc
  DSP9hd  : DRIF, L=LDSP9hd
  DSP9he  : DRIF, L=LDSP9he
  DSP9hf  : DRIF, L=LDSP9hf
  DSP9hg  : DRIF, L=LDSP9hg
  DSP10ha : DRIF, L=LDSP10ha
  DSP10hb : DRIF, L=LDSP10hb
  DSP10hc : DRIF, L=LDSP10hc
  DSP11ha : DRIF, L=LDSP11ha
  DSP11hb : DRIF, L=LDSP11hb
  DSP11hc : DRIF, L=LDSP11hc
  DSP12ha : DRIF, L=LDSP12ha
  DSP12hb : DRIF, L=LDSP12hb
  DSP12hc : DRIF, L=LDSP12hc
  DSP13ha : DRIF, L=LDSP13ha
  DSP13hb : DRIF, L=LDSP13hb
  DSP13hc : DRIF, L=LDSP13hc
  DSP14ha : DRIF, L=LDSP14ha
  DSP14hb : DRIF, L=LDSP14hb
  DSP15h  : DRIF, L=LDSP15h
  DSP15ha : DRIF, L=LDSP15ha
  DSP15hb : DRIF, L=LDSP15hb
  DSP15hc : DRIF, L=LDSP15hc
  DSP16ha : DRIF, L=LDSP16ha
  DSP16hb : DRIF, L=LDSP16hb
  DSP16hc : DRIF, L=LDSP16hc
  DSP17ha : DRIF, L=LDSP17ha
  DSP17hb : DRIF, L=LDSP17hb

  LDSPQ1  := 45.0 +0.126
  LDSPQ1b := LDSPCOR1
  LDSPQ1a := LDSPQ1-LDSPQ1b
 dLDSPQ2  := 0.0
  LDSPQ2  := 1.8 +dLDSPQ2
  LDSPQ2a := LDSPBPM1
  LDSPQ2c := 0.4781
  LDSPQ2b := LDSPQ2-LDSPQ2a-LDSPQ2c
 dLDSPQ3  := 0.0
  LDSPQ3  := 16.55 -dLDSPQ2+dLDSPQ3 -0.126
  LDSPQ3a := 0.4285
  LDSPQ3b := LDSPQ3-LDSPQ3a

  DSPQ1a : DRIFT, L=LDSPQ1a
  DSPQ1b : DRIFT, L=LDSPQ1b
  DSPQ2a : DRIFT, L=LDSPQ2a
  DSPQ2b : DRIFT, L=LDSPQ2b
  DSPQ2c : DRIFT, L=LDSPQ2c
  DSPQ3a : DRIFT, L=LDSPQ3a
  DSPQ3b : DRIFT, L=LDSPQ3b

  LDSPBK0s := LDSPBK
  LDSPBK1s := LDSPBK/COS(ABKYSP1s)
  LDSPBK2s := LDSPBK/COS(ABKYSP12s)
  LDSPBK3s := LDSPBK/COS(ABKYSPs)
  LDSPBK4s := 16.7  /COS(ABKYSPs)

  DSPBK0s  : DRIF, L=LDSPBK0s
  DSPBK1s  : DRIF, L=LDSPBK1s
  DSPBK2s  : DRIF, L=LDSPBK2s
  DSPBK3s  : DRIF, L=LDSPBK3s
  DSPBK4s  : DRIF, L=LDSPBK4s

 dLDSP2s   := 0.0
 dLDSP2sa  := -0.311854213744E-6
  LDSP2s   := 32.7375+(LQA-LQN)/2 +dLDSP2s +dLDSP2sa
  LDSP2sb  := 11.8
  LDSP2sc  := 0.55+(LQA-LQN)/2
  LDSP2sa  := LDSP2s-LDSP2sb-LDSP2sc-LBCSP1s-LBCSP2s
 dLDSP3s   := 0.0
  LDSP3s   := 2.05+(LQA-LQN) +dLDSP3s
  LDSP3sa  := LDSPBPM2
  LDSP3sb  := 0.6445
  LDSP3sc  := LDSP3s-LDSP3sa-LDSP3sb
  LDSP4s   := 8.8+(LQA-LQN)/2 -dLDSP2s -dLDSP3s
  LDSP4sa  := LDSPBPM2
  LDSP4sb  := 0.6445
  LDSP4sd  := 0.3442954
  LDSP4sc  := LDSP4s-LDSP4sa-LDSP4sb-LDSP4sd
 dLDSP5s   := 0.0
  LDSP5s   := 6.623+(LQA-LQN)/2 +dLDSP5s
  LDSP5sb  := LDSPCOR2
  LDSP5sa  := LDSP5s-LDSP5sb
 dLDSP0s   := -dLDSPQ3/4
  LDSP0s   := (55.146+5*LQA-(2*LDSP5s+LQN))/4 +dLDSP0s
 dLDSP6s   := -7.8
  LDSP6s   := LDSP0s -(LQR+LQN)/2 +dLDSP6s
  LDSP6sa  := LDSPBPM2
  LDSP6sc  := LDSPCOR1
  LDSP6sb  := LDSP6s-LDSP6sa-LDSP6sc
  LDSP7s   := LDSP0s -LQR -dLDSP6s
  LDSP7sa  := LDSPBPM1
  LDSP7sb  := 0.9729 +(LQL-LQR)/2
  LDSP7sd  := LDSPCOR1
  LDSP7sc  := LDSP7s-LDSP7sa-LDSP7sb-LDSP7sd-LPCSP
  LDSP8s   := LDSP7s
  LDSP8sa  := LDSPBPM1
  LDSP8sb  := 1.9529 +(LQL-LQR)/2
  LDSP8sd  := LDSPCOR1
  LDSP8sc  := LDSP8s-LDSP8sa-LDSP8sb-LDSP8sd
  LDSP9s   := LDSP6s
  LDSP9sa  := LDSPBPM1
  LDSP9sc  := LDSPCOR2
  LDSP9sb  := LDSP9s-LDSP9sa-LDSP9sc
  LDSP10s  := LDSP5s
  LDSP10sa := LDSPBPM2
  LDSP10sb := LDSP10s-LDSP10sa
  LDSP11s  := LDSP4s
  LDSP11sa := 1.0
  LDSP11sc := LDSPCOR2
  LDSP11sb := LDSP11s-LDSP11sa-LDSP11sc-LPCSP
  LDSP12s  := LDSP3s
  LDSP12sa := LDSPBPM2
  LDSP12sc := LDSPCOR2
  LDSP12sb := LDSP12s-LDSP12sa-LDSP12sc
 dLDSP13s  := -0.410918340435E-4
  LDSP13s  := LDSP2s +dLDSP13s +LBLXSPs/2-LBXSPs/2
  LDSP13sa := LDSPBPM2
  LDSP13sb := LDSP13s-LDSP13sa

  DSP2sa  : DRIF, L=LDSP2sa
  DSP2sb  : DRIF, L=LDSP2sb
  DSP2sc  : DRIF, L=LDSP2sc
  DSP3sa  : DRIF, L=LDSP3sa
  DSP3sb  : DRIF, L=LDSP3sb
  DSP3sc  : DRIF, L=LDSP3sc
  DSP4sa  : DRIF, L=LDSP4sa
  DSP4sb  : DRIF, L=LDSP4sb
  DSP4sc  : DRIF, L=LDSP4sc
  DSP4sd  : DRIF, L=LDSP4sd
  DSP5sa  : DRIF, L=LDSP5sa
  DSP5sb  : DRIF, L=LDSP5sb
  DSP6sa  : DRIF, L=LDSP6sa
  DSP6sb  : DRIF, L=LDSP6sb
  DSP6sc  : DRIF, L=LDSP6sc
  DSP7sa  : DRIF, L=LDSP7sa
  DSP7sb  : DRIF, L=LDSP7sb
  DSP7sc  : DRIF, L=LDSP7sc
  DSP7sd  : DRIF, L=LDSP7sd
  DSP8sa  : DRIF, L=LDSP8sa
  DSP8sb  : DRIF, L=LDSP8sb
  DSP8sc  : DRIF, L=LDSP8sc
  DSP8sd  : DRIF, L=LDSP8sd
  DSP9sa  : DRIF, L=LDSP9sa
  DSP9sb  : DRIF, L=LDSP9sb
  DSP9sc  : DRIF, L=LDSP9sc
  DSP10sa : DRIF, L=LDSP10sa
  DSP10sb : DRIF, L=LDSP10sb
  DSP11sa : DRIF, L=LDSP11sa
  DSP11sb : DRIF, L=LDSP11sb
  DSP11sc : DRIF, L=LDSP11sc
  DSP12sa : DRIF, L=LDSP12sa
  DSP12sb : DRIF, L=LDSP12sb
  DSP12sc : DRIF, L=LDSP12sc
  DSP13sa : DRIF, L=LDSP13sa
  DSP13sb : DRIF, L=LDSP13sb

  LDSP2db := 22.147740
  LDSP2dd := LDSPCOR1
  LDSP2dc := 32.0-LDSP2db-LDSP2dd-LPCSP +(LQL-LQR)/2
 dLDSP3d  := 0.0
  LDSP3d  := 3.3 +(LQL-LQR) +dLDSP3d
  LDSP3da := LDSPBPM1
  LDSP3db := 0.6149 +(LQL-LQR)/2
  LDSP3dd := 0.4781
  LDSP3dc := LDSP3d-LDSP3da-LDSP3db-LDSP3dd
  LDSP4d  := 4.5 +(LQL-LQR)/2 -dLDSP3d
  LDSP4da := 0.4285
  LDSP4db := LDSP4d-LDSP4da
  LDSP2da1 := 23.0
  LDSP2da2 := 76.675-LDSP2da1-LDSP2db-LDSP2dc-LDSP2dd-LPCSP-LDSP3d-LDSP4d-2*LQR
  LDSP5d  := 73.0
  LDSP5da := 45.575-LBYSPd/2
  LDSP5dc := 0.2298134
  LDSP5db := LDSP5d-LDSP5da-LDSP5dc
 dLDSP6d  := 0.0 !adjust Z at muon wall
  LDSP6da := 2.0
  LDSP6db := 1.5
  LDSP6dd := 1.0
  LDSP6de := 1.0
  LDSP6df := 0.4
  LDSP6dc := 143.648999999997-LDSP6da-LDSP6db-LDSP6dd-LDSP6de-LDSP6df-LPCSP &
             +dLDSP6d
  LDSP7d  := 20.0818610101
  LDSP7db := 1.5
  LDSP7dc := 1.5
  LDSP7da := LDSP7d-LDSP7db-LDSP7dc-LPCSP

  DSP2da1 : DRIF, L=LDSP2da1
  DSP2da2 : DRIF, L=LDSP2da2
  DSP2db : DRIF, L=LDSP2db
  DSP2dc : DRIF, L=LDSP2dc
  DSP2dd : DRIF, L=LDSP2dd
  DSP3da : DRIF, L=LDSP3da
  DSP3db : DRIF, L=LDSP3db
  DSP3dc : DRIF, L=LDSP3dc
  DSP3dd : DRIF, L=LDSP3dd
  DSP4da : DRIF, L=LDSP4da
  DSP4db : DRIF, L=LDSP4db
  DSP5da : DRIF, L=LDSP5da
  DSP5db : DRIF, L=LDSP5db
  DSP5dc : DRIF, L=LDSP5dc
  DSP6da : DRIF, L=LDSP6da
  DSP6db : DRIF, L=LDSP6db
  DSP6dc : DRIF, L=LDSP6dc
  DSP6dd : DRIF, L=LDSP6dd
  DSP6de : DRIF, L=LDSP6de
  DSP6df : DRIF, L=LDSP6df
  DSP7da : DRIF, L=LDSP7da
  DSP7db : DRIF, L=LDSP7db
  DSP7dc : DRIF, L=LDSP7dc
  DWALLad : DRIF, L=1.83 !distance from face of muon wall to D10

! markers

  BEGSP   : MARK
  CNTSP1S : MARK, TYPE="CENTER"
  CNTSP2S : MARK, TYPE="CENTER"
  CNTSP1H : MARK, TYPE="CENTER"
  CNTSP2H : MARK, TYPE="CENTER"
  CNTSP3H : MARK, TYPE="CENTER"
  MUWALLd : MARK !front face of muon wall for dump beam
  D10Jd   : MARK !front face of D10 for dump beam
  DUMPBSY : INST, TYPE="D10" !D10 dump

! monitors

  BPMSP1h  : MONI, TYPE="Stripline-5"
  BPMSP2h  : MONI, TYPE="Stripline-2"
  BPMSP3h  : MONI, TYPE="Stripline-5"
  BPMSP4h  : MONI, TYPE="Stripline-5"
  BPMSP5h  : MONI, TYPE="Stripline-5"
  BPMSP6h  : MONI, TYPE="Stripline-5"
  BPMSP7h  : MONI, TYPE="Stripline-2"
  BPMSP8h  : MONI, TYPE="Stripline-5"
  BPMSP9h  : MONI, TYPE="Stripline-5"
  BPMSP10h : MONI, TYPE="Stripline-5"
  BPMSP11h : MONI, TYPE="Stripline-5"
  BPMSP12h : MONI, TYPE="Stripline-2"
  BPMSP13h : MONI, TYPE="Stripline-5"

  BPMSP1   : MONI, TYPE="@0,Stripline-5"
  BPMSP2   : MONI, TYPE="@0,Stripline-5"

  BPMSP1s  : MONI, TYPE="Stripline-5"
  BPMSP2s  : MONI, TYPE="Stripline-5"
  BPMSP3s  : MONI, TYPE="Stripline-5"
  BPMSP4s  : MONI, TYPE="Stripline-5"
  BPMSP5s  : MONI, TYPE="Stripline-5"
  BPMSP6s  : MONI, TYPE="Stripline-5"
  BPMSP7s  : MONI, TYPE="Stripline-5"
  BPMSP8s  : MONI, TYPE="Stripline-5"
  BPMSP9s  : MONI, TYPE="Stripline-5"

  BPMSP1d  : MONI, TYPE="Stripline-5"
  BPMSP2d  : MONI, TYPE="Stripline-5"
  BPMSP3d  : MONI, TYPE="Stripline-8"
  BPMSP4d  : MONI, TYPE="Stripline-5"

  MRFBSP1d : MARK !MONI, TYPE="CavityS-1" !make RF-bpm if spreader is RF
  MRFBSP2d : MARK !MONI, TYPE="CavityS-1" !make RF-bpm if spreader is RF

! steering correctors

  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

  XCSP1   : HKIC, TYPE="@0,class-4" !type TBD
  YCSP2   : VKIC, TYPE="@0,class-4" !type TBD

  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

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

! stoppers

  STSP6ha : INST, TYPE="@0,BCS STOPPER" !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

  STSP5s  : INST, TYPE="BCS STOPPER"    !center of BCS stopper

! SROT to remove rotation angle

  AROSP1H :=  0.414577244197E-5
  AROSP2H :=  0.947723870567E-5
  AROSP3h := -AROSP2h
  AROSP1s := -0.82914182071E-5

  ROSP1h : SROT, ANGLE=AROSP1h
  ROSP2h : SROT, ANGLE=AROSP2h
  ROSP3h : SROT, ANGLE=AROSP3h
  ROSP1s : SROT, ANGLE=AROSP1s

! other diagnostic

  IMSP0h : IMON !diagnostic average current monitor in SPH
  IMSP0s : IMON !diagnostic average current monitor in SPS
  IMSP0d : IMON !diagnostic average current monitor in SPD

  IMSP1d : IMON, TYPE="@0,BCS ACM" !BCS current monitor in SPD
  IMSP2d : IMON, TYPE="@0,BCS ACM" !BCS current monitor in SPD

  PCSP1h : ECOL, L=LPCSP, TYPE="@0,BCS PC" !BCS protection collimator in SPH (size TBD)
  PCSP2h : ECOL, L=LPCSP, TYPE="@0,BCS PC" !BCS protection collimator in SPH (size TBD)
  PCSP1s : ECOL, L=LPCSP, TYPE="@0,BCS PC" !BCS protection collimator in SPS (size TBD)
  PCSP2s : ECOL, L=LPCSP, TYPE="@0,BCS PC" !BCS protection collimator in SPS (size TBD)
  PCSP1d : ECOL, L=LPCSP, TYPE="@0,BCS PC" !BCS protection collimator in SPD (size TBD)
  PCSP2d : ECOL, L=LPCSP, TYPE="@0,BCS PC" !BCS protection collimator in SPD (size TBD)
  PCSP3d : ECOL, L=LPCSP, TYPE="@0,BCS PC" !BCS protection collimator in SPD (size TBD)

  BTMSP1h : INST, TYPE="@0,BCS BTM" !Burn-Through-Monitor behind PCSP1h
  BTMSP2h : INST, TYPE="@0,BCS BTM" !Burn-Through-Monitor behind PCSP2h
  BTMSP1s : INST, TYPE="@0,BCS BTM" !Burn-Through-Monitor behind PCSP1s
  BTMSP2s : INST, TYPE="@0,BCS BTM" !Burn-Through-Monitor behind PCSP2s
  BTMSP1d : INST, TYPE="@0,BCS BTM" !Burn-Through-Monitor behind PCSP1d
  BTMSP2d : INST, TYPE="@0,BCS BTM" !Burn-Through-Monitor behind PCSP2d
  BTMSP3d : INST, TYPE="@0,BCS BTM" !Burn-Through-Monitor behind PCSP3d

  WSSP1d : WIRE, TYPE="fast" !to measure beam size, energy before BSY dump

  OTRSPDMP : PROF, TYPE="@0,OTR" !OTR screen before BSY dump

! beamlines

  SPRDkh : LINE=(BEGSP,&
                 BKYSP0ha,BKYSP0hb,DSPBK0h,&
                 BKYSP1ha,BKYSP1hb,DSPBK1h,&
                 BKYSP2ha,BKYSP2hb,DSPBK2h,&
                 BKYSP3ha,BKYSP3hb,DSPBK3h,&
                 BKYSP4ha,BKYSP4hb,DSPBK4h,&
                 BLXSPha ,BLXSPhb )

  SPRDks : LINE=(          DSPQ1a,XCSP1 ,DSPQ1b,&
                 QSP1,QSP1,DSPQ2a,BPMSP1,DSPQ2b,BPMSP2,DSPQ2c,&
                 QSP2,QSP2,DSPQ3a,YCSP2 ,DSPQ3b,&
                 BKYSP0sa,BKYSP0sb,DSPBK0s,&
                 BKYSP1sa,BKYSP1sb,DSPBK1s,&
                 BKYSP2sa,BKYSP2sb,DSPBK2s,&
                 BKYSP3sa,BKYSP3sb,DSPBK3s,&
                 BKYSP4sa,BKYSP4sb,DSPBK4s,&
                 BLXSPsa ,BLXSPsb )

  SPRDh : LINE=(SEQ11BEG,SPRDkh,ROSP1h,&
                              DSP2ha   ,BYSP1ha ,BYSP1hb,DSP2hb ,&
                                        BYSP2ha ,BYSP2hb,CNTSP1H,DSP2hc,&
                QSP1h ,QSP1h ,DSP3ha   ,BPMSP1h ,DSP3hb ,&
                                        XCSP1h  ,DSP3hc ,&
                                        BPMSP2h ,DSP3hd ,&
                QSP2h ,QSP2h ,DSP4ha   ,YCSP2h  ,DSP4hb ,&
                                        IMSP0h  ,DSP4hc ,&
                BRSP1ha,BRSP1hb,ROSP2h ,         DSP5ha ,&
                                        PCSP1h  ,BTMSP1h,DSP5hb ,&
                                        XCSP3h  ,DSP5hc ,&
                QSP3h ,QSP3h ,DSP6ha   ,BPMSP3h ,DSP6hb ,&
                                        YCSP4h  ,DSP6hc ,&
                QSP4h ,QSP4h ,DSP7ha   ,BPMSP4h ,DSP7hb ,&
                                        XCSP5h  ,DSP7hc ,&
                QSP5h ,QSP5h ,DSP8ha   ,BPMSP5h ,DSP8hb ,&
                                        YCSP6h  ,DSP8hc ,&
                QSP6h ,QSP6h ,DSP9ha   ,BPMSP6h ,DSP9hb ,&
                                        STSP6ha ,DSP9hc ,&
                                        STSP6hb ,DSP9hd ,&
                                        STSP6hc ,DSP9he ,&
                                        STSP6hd ,DSP9hf ,&
                                        BPMSP7h ,DSP9hg ,&
                QSP7h ,QSP7h ,DSP10ha  ,XCSP7h  ,DSP10hb,&
                                        YCSP8h  ,DSP10hc,&
                QSP8h ,QSP8h ,DSP11ha  ,BPMSP8h ,DSP11hb,&
                                        BPMSP9h ,DSP11hc,&
                QSP9h ,QSP9h ,DSP12ha,  XCSP9h  ,DSP12hb,&
                                        YCSP10h ,DSP12hc,&
                QSP10h,QSP10h,DSP13ha  ,BPMSP10h,DSP13hb,&
                                        XCSP11h ,DSP13hc,&
                QSP11h,QSP11h,DSP14ha  ,BPMSP11h,DSP14hb,ROSP3h ,&
                BRSP2ha,BRSP2hb,CNTSP2H,         DSP15ha,&
                                        PCSP2h  ,BTMSP2h,DSP15hb,&
                                        BPMSP12h,DSP15hc,&
                QSP12h,QSP12h,DSP16ha  ,YCSP12h ,DSP16hb,&
                                        XCSP13h ,DSP16hc,&
                QSP13h,QSP13h,DSP17ha  ,BPMSP13h,DSP17hb,&
                BXSP1ha,BXSP1hb,CNTSP3H)

  SPRDs : LINE=(SEQ06BEG,SPRDkh,SPRDks,ROSP1s,&
                                DSP2sa ,BYSP1sa,BYSP1sb,DSP2sb ,&
                                        BYSP2sa,BYSP2sb,CNTSP1S,DSP2sc ,&
                QSP1s  ,QSP1s  ,DSP3sa ,BPMSP1s,DSP3sb ,&
                                        XCSP1s ,DSP3sc ,&
                QSP2s  ,QSP2s  ,DSP4sa ,BPMSP2s,DSP4sb ,&
                                        YCSP2s ,DSP4sc ,&
                                        IMSP0s ,DSP4sd ,&
                BXSP1sa,BXSP1sb,DSP5sa ,XCSP3s ,DSP5sb ,&
                QSP3s  ,QSP3s  ,DSP6sa ,BPMSP3s,DSP6sb ,&
                                        YCSP4s ,DSP6sc ,&
                QSP4s  ,QSP4s  ,DSP7sa ,BPMSP4s,DSP7sb ,&
                                        PCSP1s ,BTMSP1s,DSP7sc ,&
                                        XCSP5s ,DSP7sd ,&
                QSP5s  ,QSP5s  ,DSP8sa ,BPMSP5s,DSP8sb ,&
                                        STSP5s ,DSP8sc ,&
                                        YCSP6s ,DSP8sd ,&
                QSP6s  ,QSP6s  ,DSP9sa ,BPMSP6s,DSP9sb ,&
                                        XCSP7s ,DSP9sc ,&
                QSP7s  ,QSP7s  ,DSP10sa,BPMSP7s,DSP10sb,&
                BXSP2sa,BXSP2sb,DSP11sa,PCSP2s ,BTMSP2s,DSP11sb,&
                                        YCSP8s ,DSP11sc,&
                QSP8s  ,QSP8s  ,DSP12sa,BPMSP8s,DSP12sb,&
                                        XCSP9s ,DSP12sc,&
                QSP9s  ,QSP9s  ,DSP13sa,BPMSP9s,DSP13sb,&
                BXSP3sa,BXSP3sb,CNTSP2S)

  SPRDd : LINE=(SEQ15BEG,SPRDkh,SPRDks,&
                                DSP2da1,BPMSP1d ,DSP2da2,&
                                        MRFBSP1d,DSP2db ,&
                                        PCSP1d  ,BTMSP1d,DSP2dc,&
                                        XCSP1d  ,DSP2dd ,&
                QSP1d  ,QSP1d  ,DSP3da          ,DSP3db ,&
                                        IMSP0d  ,DSP3dc ,MRFBSP2d,&
                                        BPMSP2d ,DSP3dd ,&
                QSP2d  ,QSP2d  ,DSP4da ,YCSP2d  ,DSP4db ,&
                BYSP1da,BYSP1db,DSP5da ,WSSP1d  ,DSP5db ,&
                                        BPMSP3d ,DSP5dc ,&
                BYSP2da,BYSP2db,DSP6da ,IMSP1d  ,DSP6db ,&
                                        PCSP2d  ,BTMSP2d,DSP6dc,DSP6dd ,&
                                        OTRSPDMP,DSP6de ,&
                                        BPMSP4d ,DSP6df ,&
                DBXSP1d,DBXSP1d,DSP7da ,IMSP2d  ,DSP7db ,&
                                        PCSP3d  ,BTMSP3d,DSP7dc,&
                MUWALLd,DWALLad,D10Jd  ,DUMPBSY ,&
                ENDSPD,&
                SEQ15END)

  RETURN
