
! *** OPTICS=AD_ACCEL-14APR2025s ***

! LCLS2sc undulator

! ==============================================================================
! Modification History
! ------------------------------------------------------------------------------
! 10-APR-2025, M. Woodley
!  * replace short-period undulator and phase shifter in SXR cell 26 with a
!   long-period undulator and phase shifter
! ------------------------------------------------------------------------------
! 07-FEB-2025, M. Woodley
!  * remove MBLMS MARKERs from all even-numbered SXR cells (16-46)
!  * remove MBLMH MARKERs from all odd-numbered HXR cells (15-47)
!  * add a long-period undulator plus phase shifter in SXR cell 21
!  * NOTE: replacement of undulator in SXR cell 47 put off until later
! 18-JAN-2025, M. Woodley
!  * fix lengths of DU3S_ and DU4S_ (long-period phase shifters)
! 17-JAN-2025, M. Woodley
!  * replace short-period undulator in SXR cell 47 with a long-period undulator
! ------------------------------------------------------------------------------
! 23-DEC-2024, M. Woodley
!  * per H.-D. Nuhn:
!    - use KSXU= 5.5, KSXU_= 4.5, PIPSSX=PIPSSX_= 1800
!    - restore QSXH16
!    - operational long-period undulators and phase shifters in SXR cells 22-25
! 19-DEC-2024, M. Woodley
!  * per X. Permanyer: move SXR long-period phase shifters ~10.99 mm upstream
! 10-DEC-2024, M. Woodley
!  * per H.-D. Nuhn: add long-period undulators, phase shifters, and BLMs in
!    SXR cells 22 and 23
! 05-DEC-2024, M. Woodley
!  * per H.-D. Nuhn: turn on long-period undulators in SXR cells 24 and 25;
!    add BLMs; add long-period phase shifters
! 04-DEC-2024, M. Woodley
!  * relocate RFBSX15 per X. Permanyer
! 18-SEP-2024, M. Woodley
!  * add SXR interspace quadrupoles and RFBPMs in cells 17, 18, 20, and 25
!  * turn ON all SXR quadrupoles in cells 17-25
!  * remove quadrupole SXR cell 16
!  * add RFBSX15 at end of LTUS (LCLS-II-HE location)
!  * add (inoperative) long-period undulators in SXR cells 24 and 25;
!    no phase shifters
! ------------------------------------------------------------------------------
! 01-SEP-2024, M. Woodley
!  * add quadrupole (not powered) and RFBPM to SXR cells 22 and 23
!  * VVs are in SXR cells 21, 28, 34, 35, 38, and 44 per X. Permanyer
!  * include long-period undulator definitions ... comment out short-period
!    definitions and uncomment long-period definitions as cells are upgraded
! ------------------------------------------------------------------------------
! 13-APR-2024, M. Woodley
!  * rename BODCBX42 -> YAGCBX42
!  * add BODCBX40
! ------------------------------------------------------------------------------
! 31-MAR-2024, M. Woodley
!  * remove WIGXLh from SXR cell 18 (move to LTUS)
! ------------------------------------------------------------------------------
! 12-JAN-2024, M. Woodley
!  * adjust complement and locations of CBXFEL components per SLAC-I-120-022-R2
! ------------------------------------------------------------------------------
! 02-MAR-2023, M. Woodley
!  * reomve FSPEPX1 and FSPEPX3 (PEPPEx Phase 2) per X. Permanyer
! 17-FEB-2023, M. Woodley
!  * change TYPE of SXR undulators to "VGHPU39"
! 07-FEB-2023, M. Woodley
!  * modified SXR undulator end area: single (1.5 m long) TCX01B per P. Krejcik
! 20-DEC-2022, M. Woodley
!  * relocate BCXHS1 and BCXHS4 to as-built locations per Metrology
! ------------------------------------------------------------------------------
! 15-JUL-2022, M. Woodley
!  * install CBXFEL chicanes in HXR cells 13 and 21 * per X. Permanyer
! 29-APR-2022, M. Woodley
!  * change names of CBXFEL chicane dipoles from BCXCB* to BCXCBX* per G. Marcus
! ------------------------------------------------------------------------------
! 11-OCT-2021, M. Woodley
!  * add CBXFEL chicane in HXR cell 21
!  * add phase shifter to HXR cell 46 per G. Kraft
!  * add HXU/BLM/QUAD/RFBPM to HXR cell 47 (no phase shifter, no VV) per G. Kraft
! ------------------------------------------------------------------------------
! 26-MAR-2021, M. Woodley
!  * add PEPPEx devices at end of SXR
!  * add VGCCPEPX1 and VGPRPEPX1 (INST) per S. Alverson
! ------------------------------------------------------------------------------
! 18-JAN-2021, M. Woodley
!  * install final nominal LCLS-II HXR cells (#13, #14, #15, #16, and #17)
! ------------------------------------------------------------------------------
! 28-OCT-2020, M. Woodley
!  * install nominal LCLS-II HXR cells #19 and #20
! ------------------------------------------------------------------------------
! 19-OCT-2020, M. Woodley
!  * install nominal LCLS-II HXR cells #22 and #23
! ------------------------------------------------------------------------------
! 02-OCT-2020, M. Woodley
!  * install nominal LCLS-II cell HXR #18
! 30-AUG-2020, M. Woodley
!  * replace BLMS* and BLMH* (INST) with MBLMS* and MBLMH* (MARK)
! ------------------------------------------------------------------------------
! 03-MAR-2020, M. Woodley
!  * move XLEAP wiggler to SXR cell #18
!  * change keyword for "type-V" correctors from HKIC/VKIC to INST
! 25-FEB-2020, M. Woodley
!  * replace HXR cells 13-20 and 22-23 with "empty" (no undulator) LCLS girders
!    > redefine QUADs and RFBPMs (different lengths)
! ------------------------------------------------------------------------------
! 12-DEC-2019, M. Woodley
!  * swap HXR cells 20 and 21 ... cell 21 is now the empty cell per H.-D. Nuhn
!  * add "h" to HXR and SXR undulators, quadrupoles, and phase shifters
! 20-NOV-2019, M. Woodley
!  * add BOD10 and BOD12 for SXRSS-II project per D. Bruch
! 13-NOV-2019, M. Woodley
!  * KQDHXM, KQUE1, KQUE2, and KQDMP values come from Y. Nosochkov's
!    UNDH_KQ4_USDS.xsif file, for E= 4.0 GeV and KHXU= 2.0 (IntgHX= 30.0 kG)
! 17-JUL-2019, M. Woodley
!  * add cell number to phase shifter names
! ------------------------------------------------------------------------------
! 10-MAY-2019, M. Woodley
!  * move BLM's in HXR cells from before undulator to after per H.-D. Nuhn
! 30-APR-2019, M. Woodley
!  * remove M1, M2, and YAGBRAG from HXRSS self-seeding chicane per H.-D. Nuhn
! 19-FEB-2019, M. Woodley
!  * move SXRSS self-seeding chicane from undulator cell 33 to cell 35 per
!    G. Marcus (DCR_2018-012)
!  * move undulator 35 and associated devices to cell 33 (replace "35" with
!    "33" in device names)
! ------------------------------------------------------------------------------
! 08-JAN-2019, M. Woodley
!  * define HXRSS and SXRSS chicane bend angles (rather than integrated
!    strengths) to allow constant R56 when energy changes
!  * set nominal SXRSS beam offset to +17.0 mm per G. Marcus
!  * set nominal HXRSS R56 to +15.0 um per G. Marcus
! ------------------------------------------------------------------------------
! 27-NOV-2018, M. Woodley
!  * move definition of Eu to LCLS2sc_master.xsif and LCLS2cu_master.xsif
!    (for BMAD compatability)
! 29-MAY-2018, M. Woodley
!  * install LCLS HXRSS self-seeding chicane in HXR cell #28 per
!    LCLSII-3.2-PR-0102-R1; chicane is off for high-rate beams from SC linac
!  * install LCLS SXRSS self-seeding chicane in SXR cell #33 per
!    LCLSII-3.2-PR-0101-R0
! 30-APR-2018, M. Woodley
!  * set aperture radius of PCPM0/PCPM0B to 1.75 cm (circular) per RP-14-15-R5
!    section 4.3 (two permanant magnet bends in SXR safety dump line)
! 27-APR-2018, M. Woodley
!  * add a second set of beam phase monitors 1.5 m u/s of original set per
!    C. Xu (TID); original cavities (PH31-32,PH31B-32B, for low-rate beam) are
!    2805 MHz ... new cavities (PH33-34,PH33B-34B, for high-rate beam) will be
!    2604 MHz; all but original LCLS cavities (PH31-32) are deferred
! ------------------------------------------------------------------------------
! 22-JAN-2018, M. Woodley
!  * move SXR phase shifters 5 mm upstream per D. Bruch
! 20-DEC-2017, M. Woodley
!  * defer (level 0) PH31b and PH32b
! 04-DEC-2017, M. Woodley
!  * define dzHXTES parameter to adjust lengths of DUE5e and DDLWALL by ~0.7 um
!    to set BSY-Z of MDLWALL to exactly 685 m (to align with HXR XTES system)
!  * define drifts DUE5eB and DDLWALLB (DUE5e and DDLWALL on SXR side)
!  * define dzSXTES parameter to adjust lengths of DUE5eB and DDLWALLB by ~0.7 um
!    to set BSY-Z of MDLWALLb to exactly 685 m (to align with SXR XTES system)
! ------------------------------------------------------------------------------
! 06-SEP-2017, Y. Nosochkov
!  * move PH32, PH32B 0.012 m upstream to Z = 674.062492 (BSY coordinates)
!    (M. Kosovsky)
!  * change length of DU2h drift from negative value to zero, adjust lengths
!    of nearby drifts to keep the same device positions
!  * update definition of phase shifters in undulators (H.-D. Nuhn),
!    increase phase shifter period to 75 mm (SXR) and 45 mm (HXR),
!    define phase shifter undulator K-parameter through phase integral (PI)
!  * note: the present setting of the integrated field IntgHX of HXR undulator
!    quadrupoles is 12 kG. Per H.-D. Nuhn, it needs to be increased to 26 kG.
!    This however, does not match well with the dumpline optics at 4 GeV.
!    Additional quad(s) may need to be included downstream of the undulator
!    or in the dumpline -- to be studied
! 05-SEP-2017, M. Woodley
!  * move IntgSX and IntgHX defn's to LCLS2sc_main.xsif and LCLS2cu_main.xsif
!  * move XbandF definition to common.xsif
! ------------------------------------------------------------------------------
! 05-MAY-2017, M. Woodley
!  * Beam Loss Monitors (BLMS*, BLMH*): keyword=INST
! ------------------------------------------------------------------------------
! 24-FEB-2017, Y. Nosochkov
!  * update device positions in the undulator cells (D. Bruch)
!    note that RFBHX12 moves upstream into LTUH
!  * remove RFBHX49 (D. Bruch, H-D. Nuhn)
!  * move RFBHX51, RFBSX51 0.057 m upstream (D. Bruch)
!  * move BTMQUEB 0.1016 m downstream (M. Owens)
! ------------------------------------------------------------------------------
! 02-NOV-2016, Y. Nosochkov
!  * specify half-aperture of PCTCX, PCTCXB to be 4.5 mm (per deck note)
! ------------------------------------------------------------------------------
! 24-JUN-2016, Y. Nosochkov
!  * defer PCTCXB, SPTCXB to level @1 (P. Emma)
!  * change the type of existing BPMUE1, BPMUE2 from Stripline-1 to
!    Stripline-13 (M. Woodley, Alev)
!  * change the type of BPMUE1B, BPMUE2B from Stripline-1 to Stripline-5 to
!    fit the 2Q10 quads
!  * remove existing toroids IMUNDO, IMBCS3 as they are not compatible
!    with SCRF beam (S. Mao, P. Emma)
!  * remove deferred IMUNDOB (S. Mao)
!  * update positions of BPMUE1&2, BPMUE1B&2B and BTMQUEB (M. Owens)
! ------------------------------------------------------------------------------
! 26-FEB-2016, Y. Nosochkov
!  * replace the HXR undulator with HGVPU undulator (D. Bruch, M. Rowen)
!  * VPU undulator length: 3.373968 m
!  * VPU undulator cell length: 4.01266666667 m
!  * same undulator period and K-value in VPU as before (H-D. Nuhn)
!  * move the RFBHX16, previously located upstream of undulator, to just after
!    the VPU undulator and rename to RFBHX49 -- this keeps the number
!    of RFBPMs unchanged
! 26-FEB-2016, M. Woodley
!  * remove SEQnn MARKers
!  * define new areas: UEH (HXR end to BYD1) and UES (SXR end to BYD1B)
! ------------------------------------------------------------------------------
! 24-AUG-2015, Y. Nosochkov
!  * adjust positions of BPMUE1, BPMUE2 (per M. Owens)
!  * match dumpline optics to new TCAV/OTR constraints (per Y. Ding)
! ------------------------------------------------------------------------------
! 19-JUN-2015, Y. Nosochkov
!  * assign IMUNDO, IMUNDOb to be BCS current monitors
! 20-MAY-2015, Y. Nosochkov
!  * change the status of BPMUE1, BPMUE2, BPMUE1B, BPMUE2B from deferred
!    to baseline
!  * update aperture of PCPM0, PCPM0B (per Shanjie)
!  * defer THz Be foils TRUE1, TRUE1B at level @5 (per Tor and A. Fisher)
! ------------------------------------------------------------------------------
! 20-MAR-2015, M. Woodley
!  * assign TYPEs to BCS devices ... defer at level 0
! 12-MAR-2015, Y. Nosochkov
!  * change type of QUE1B, QUE2B from "1.97Q10" to "2Q10"
! ------------------------------------------------------------------------------
! 12-DEC-2014, M. Woodley
!  * change some RFBs (defer=2) to BPMs (defer=0)
!  * assign BPM TYPE attributes per PRD LCLSII-2.4-PR-0136
! 09-DEC-2014, Y. Nosochkov
!  * restore dumpline toroid IMBCS3 in HXR (per LCLSII-2.4-PR-0107)
!  * assign the non-baseline level "4" to TRUE1b (Be foil, THz) in SXR
!  * change type of QUE1b, QUE2b to "1.97Q10"
!  * change type of undulator quads to "0.433Q3.1" (per J. Amann)
!  * rename BTM0, BTM0b to BTMQUE, BTMQUEb (per Shanjie Xiao)
!  * add BTM0, BTM0b downstream of PCPM0 and PCPM0b (per Shanjie Xiao)
!  * change stripline to RF bpms in the SXR undulator extension:
!    BPMSX16 -> RFBSX16, BPMSX19 -> RFBSX19, BPMSX21 -> RFBSX21
!  * add PH31, PH32, PH31b, PH32b post-undulator phase measurement cavities
! ------------------------------------------------------------------------------
! 13-OCT-2014, Y. Nosochkov
!  * remove RFBUE3, RFBUE3B in the dumplines
!  * replace XCUE1 -> YCUE1, YCUE2 -> XCUE2, XCUE1b -> YCUE1b, YCUE2b -> XCUE2b
!  * add marker for dumpline wall
! 10-OCT-2014, Y. Nosochkov
!  * update TYPE of (6) RFBPMs to indicate the non-baseline level "0"
! 07-AUG-2014, M. Woodley
!  * decorate device TYPE attributes to indicate non-baseline status
! 31-JUL-2014, Y. Nosochkov
!  * remove IMBCS3, IMBCS3b
! 23-JUL-2014, Y. Nosochkov
!  * remove SXR extension cell SXCEL15, use this space (4.4 m) for moving
!    TDUNDb 2.8 m downstream,
!  * replace the quads QSXh15 and QSXh22 with QSXh16 and QSXh21
! 17-JUN-2014, Y. Nosochkov
!  * replace all stripline BPMs downstream of the undulators with RFBPMs
!    (per J. Frisch)
!  * change type of IMUNDO, IMUNDOB from toroid to beam current monitor
!    (per J. Frisch)
! 21-MAY-2014, Y. Nosochkov
!  * move marker points ENDSXR, BEGDMPS and ENDHXR, BEGDMPH to the downstream
!    end of RFBSX51 and RFBHX51 in order to include these RFBPMs into the
!    SXR and HXR areas as defined in PRD LCLSII-2.1-PR-0134
!    (per request from D. Hanquist)
! 02-MAY-2014, M. Woodley
!  * add MTCX01 and MTCX01b MARKERs (for ELEGANT WATCH points)
!  * explicitly define R55=R66=1 in MATRs (for translation to BMAD)
! 24-APR-2014, Y. Nosochkov
!  * include place holder DBKXDMPS(H) for dumpline x-kicker (per J. Frisch)
! 22-APR-2014, Y. Nosochkov
!  * restore T-cavities TCX01B, TCX02B in SXR dumpline (per J. Frisch)
! 07-APR-2014, M. Woodley
!  * move undulator phase shifter definitions earlier in this file to avoid
!    using LPSSH and LPSHX parameters before they are defined
! ------------------------------------------------------------------------------
! 31-MAR-2014, M. Woodley
!  * element names changed to conform to nomenclature PRD
! 26-MAR-2014, Y. Nosochkov
!  * put phase shifter and RFBPM positions back to 03/14 version
! 21-MAR-2014, Y. Nosochkov
!  * update positions of phase shifters and RFBPMs in undulator cells
!  * add Y-corrector to each undulator
!  * update phase shifter parameters (per H-D. Nuhn)
! 07-MAR-2014, Y. Nosochkov
!  * remove transverse deflecting cavities from SXR dumpline
!  * slightly adjust Z-position of dumpline bends
! 06-MAR-2014, Y. Nosochkov
!  * minor matching update
! ------------------------------------------------------------------------------
! 28-FEB-2014, Y. Nosochkov
!  * reduce undulator break length from 1.15 m to 1.0 m for cell length of 4.4 m
!    use cell numbering from 15 to 50 (this includes cells with and without
!    undulators)
!    put SXR undulators in cells 26-32, 34-47
!    put HXR undulators in cells 17-23, 25-31, 33-50
!    the SXR cell-33 and HXR cells 24 and 32 have only quad and RFBPM --
!    these cells will be used for self-seeding
!    reduce length of undulator quadrupole to 0.084 m
!    add one extra RFBPM about ~1 m after end of cell-50 in SXR and HXR
!    add two RFBPMs in two cells upstream of SXR and HXR undulators
!    use the last undulator quadrupole in cell-50 for matching to dump line
! 17-JAN-2014, Y. Nosochkov
!  * minor matching update
! 18-DEC-2013, Y. Nosochkov
!  * minor matching update
! 16-DEC-2013, Y. Nosochkov
!  * minor matching update
! 23-OCT-2013, Y. Nosochkov
!  * change the number of SXR undulator cells to 22 and the number of
!    SXR extension cells to 12
!  * change the number of HXR undulator cells to 34
!  * change undulator cell length to 4.55 m
!  * update undulator parameters and undulator quad field (per H.-D. Nuhn)
!  * new position of SXRTERM, HXRTERM is at Z'=669.586491 m in BSY coordinates
!  * move QUE1, QUE1B 4.0 m downstream
!  * adjust strengths in the last two undulator quads to help with
!    beta match in the dumpline
! 17-OCT-2013, Y. Nosochkov
!  * change quadrupole type of QUE1B, QUE2B, QDMP1B, QDMP2B to 3.94Q17
! ------------------------------------------------------------------------------

 !Eu   :  definition moved to LCLS2sc_master.xsif and LCLS2cu_master.xsif
  gamu := Eu/mc2 !Lorentz energy factor in undulator [ ]

! ------------------------------------------------------------------------------
! SXR definitions
! ------------------------------------------------------------------------------

! ##############################################################################
! SXR: short-period undulator and phase shifter definitions (LCLS-II)
! ##############################################################################

! ------------------------------------------------------------------------------
! undulator segment
! ------------------------------------------------------------------------------
! - Author: Heinz-Dieter Nuhn, Stanford Linear Accelerator Center
! - Last edited Mar 03, 2014
! - 7.2 mm miminum Undulator Gap; only constant break length each
! - include natural vertical focusing over all but edge terminations
! ------------------------------------------------------------------------------
! - LDUSEGS = SXR Undulator segment length
! - luSXU   = SXR Undulator period
! - NpSXU   = SXR Undulator period count
! - LSXUCR  = SXR Undulator magnetic length
! - LSXUe   = SXR Undulator spacing between magnet array and strongback end
! - KSXU    = SXR Undulator parameter (rms); range 2-5.5
! - kQSX    = natural SXR undulator focusing "k" in y-plane
! ------------------------------------------------------------------------------

  LDUSEGS := 3.4
  luSXU   := 0.039                            !m
  NpSXU   := 87
  LSXUCR  := luSXU*NpSXU                      !m
  LSXUe   := (LDUSEGS-LSXUCR)/2               !m
  LSXUh   := LSXUCR/2
  KSXU    := 5.5 !5.0
  kQSX    := (KSXU*2*pi/luSXU/sqrt(2)/gamu)^2 !m^-2

  UMASXh : MATR, TYPE="VGHPU39", L=LSXUh,        &
    RM(1,1) = 1.0,                               &
    RM(1,2) = LSXUh,                             &
    RM(2,1) = 0.0,                               &
    RM(2,2) = 1.0,                               &
    RM(3,3) =  cos(LSXUh*sqrt(kQSX)),            &
    RM(3,4) =  sin(LSXUh*sqrt(kQSX))/sqrt(kQSX), &
    RM(4,3) = -sin(LSXUh*sqrt(kQSX))*sqrt(kQSX), &
    RM(4,4) =  cos(LSXUh*sqrt(kQSX)),            &
    RM(5,5) = 1.0,                               &
    RM(6,6) = 1.0

! ------------------------------------------------------------------------------
! PPM phase shifter
! - Author: Heinz-Dieter Nuhn, Stanford Linear Accelerator Center
! - Last edited September 06, 2017
! - 10.0 mm miminum Undulator Gap
! ------------------------------------------------------------------------------
! - LPSSX  = SXR Phase Shifter length
! - luPSSX = SXR Phase Shifter period
! - PIPSSX = SXR Phase Shifter phase integral
! - KPSSX  = SXR Phase Shifter Undulator parameter (rms); range 1.34-3.59
! - kQPSSX = natural SXR Phase Shifter undulator focusing "k" in y-plane
! ------------------------------------------------------------------------------

  LPSSX  := 0.0825                             !m
  luPSSX := 0.075                              !m
  LPSSXh := LPSSX/2
  PIPSSX := 1800 !3814                         !T^2mm^3 (180-3814)
  KPSSX  := 1.E-9*CLIGHT/mc2*SQRT(2.E-9*PIPSSX/luPSSX)
  kQPSSX := (KPSSX*2*pi/luPSSX/sqrt(2)/gamu)^2 !m^-2

  PSSXh : MATR, TYPE="PS75", L=LPSSXh,       &
    RM(1,1) = 1.0,                                    &
    RM(1,2) = LPSSXh,                                 &
    RM(2,1) = 0.0,                                    &
    RM(2,2) = 1.0,                                    &
    RM(3,3) =  cos(LPSSXh*sqrt(kQPSSX)),              &
    RM(3,4) =  sin(LPSSXh*sqrt(kQPSSX))/sqrt(kQPSSX), &
    RM(4,3) = -sin(LPSSXh*sqrt(kQPSSX))*sqrt(kQPSSX), &
    RM(4,4) =  cos(LPSSXh*sqrt(kQPSSX)),              &
    RM(5,5) = 1.0,                                    &
    RM(6,6) = 1.0

! ------------------------------------------------------------------------------
! FODO cell drifts
! ------------------------------------------------------------------------------
! - DTSXU = SXU undulator segment small terminations modeled as drift
! ------------------------------------------------------------------------------

  LDU1s := 0.1
  LDU2s := 0.03
  LDU3s := 0.25-LPSSXh -0.04 -0.005
  LDU4s := (0.25-LPSSXh-0.5*LQu)/2 +0.04 +0.005
  LDU5s := (0.25-LPSSXh-0.5*LQu)/2
  LDU6s := 0.12-LQu/2-LRFBub/2 +0.01
  LDU7s := 0.25-LRFBub/2 -0.01
 dLDU0s := 0.0 !fine tune Z in undulator
  LDU0s := 2.1359-LDU6s-LDU7s-LQu +dLDU0s

  DTSXU  : DRIF, L=LSXUe
  DU0s   : DRIF, L=LDU0s
  DU1s   : DRIF, L=LDU1s
  DU2s   : DRIF, L=LDU2s
  DU3s   : DRIF, L=LDU3s
  DU4s   : DRIF, L=LDU4s
  DU5s   : DRIF, L=LDU5s
  DU6s   : DRIF, L=LDU6s
  DU7s   : DRIF, L=LDU7s
  DUE1ab : DRIF, L=0.9-LRFBub -0.057
  DUE1e  : DRIF, L=0.057

  DU0sa : DRIF, L=0.814408 !0.7908811950945
  DU0sb : DRIF, L=DU0s[L]-DU0sa[L]-LRFBub

  DU3sa : DRIF, L=0.114
  DU3sb : DRIF, L=DU3s[L]-DU3sa[L]
  DU4sa : DRIF, L=0.117258
  DU4sb : DRIF, L=DU4s[L]-DU4sa[L]

! ##############################################################################
! SXR: long-period undulator and phase shifter definitions (LCLS-II-HE)
! ##############################################################################

! ------------------------------------------------------------------------------
! undulator segment
! - Author: Heinz-Dieter Nuhn, Stanford Linear Accelerator Center
! - Last edited June 22, 2020 (LCLS-II-HE)
! - 7.2 mm miminum Undulator Gap; only constant break length each
! - include natural vertical focusing over all but edge terminations
! ------------------------------------------------------------------------------
! - LDUSEGS_ = SXR Undulator segment length
! - luSXU_   = SXR Undulator period
! - NpSXU_   = SXR Undulator period count
! - LSXUCR_  = SXR Undulator magnetic length
! - LSXUe_   = SXR Undulator spacing between magnet array and strongback end
! - KSXU_    = SXR Undulator parameter (rms); range 2-5.5
! - kQSX_    = natural SXR undulator focusing "k" in y-plane
! ------------------------------------------------------------------------------

  LDUSEGS_ := 3.4
  luSXU_   := 0.056                              !m
  NpSXU_   := 60
  LSXUCR_  := luSXU_*NpSXU_                      !m
  LSXUe_   := (LDUSEGS_-LSXUCR_)/2               !m
  LSXUh_   := LSXUCR_/2
  KSXU_    := 4.5 !8.3
  kQSX_    := (KSXU_*2*pi/luSXU_/sqrt(2)/gamu)^2 !m^-2

  UMASXh_ : MATR, TYPE="VGHPU56", L=LSXUh_,         &
    RM(1,1) = 1.0,                                  &
    RM(1,2) = LSXUh_,                               &
    RM(2,1) = 0.0,                                  &
    RM(2,2) = 1.0,                                  &
    RM(3,3) =  cos(LSXUh_*sqrt(kQSX_)),             &
    RM(3,4) =  sin(LSXUh_*sqrt(kQSX_))/sqrt(kQSX_), &
    RM(4,3) = -sin(LSXUh_*sqrt(kQSX_))*sqrt(kQSX_), &
    RM(4,4) =  cos(LSXUh_*sqrt(kQSX_)),             &
    RM(5,5) = 1.0,                                  &
    RM(6,6) = 1.0

! ------------------------------------------------------------------------------
! PPM phase shifter
! - Author: Heinz-Dieter Nuhn, Stanford Linear Accelerator Center
! - Last edited September 06, 2017
! - 10.0 mm miminum Undulator Gap
! ------------------------------------------------------------------------------
! - LPSSX_  = SXR Phase Shifter length
! - luPSSX_ = SXR Phase Shifter period
! - PIPSSX_ = SXR Phase Shifter phase integral
! - KPSSX_  = SXR Phase Shifter Undulator parameter (rms); range 1.34-3.59
! - kQPSSX_ = natural SXR Phase Shifter undulator focusing "k" in y-plane
! ------------------------------------------------------------------------------

  LPSSX_  := 0.1073                               !m
  luPSSX_ := 0.0975                               !m
  LPSSXh_ := LPSSX_/2
  PIPSSX_ := 1800 !5700                           !T^2mm^3
  KPSSX_  := 1.E-9*CLIGHT/mc2*SQRT(2.E-9*PIPSSX_/luPSSX_)
  kQPSSX_ := (KPSSX_*2*pi/luPSSX_/sqrt(2)/gamu)^2 !m^-2

  PSSXh_ : MATR, TYPE="PS97.5", L=LPSSXh_,        &
    RM(1,1) = 1.0,                                       &
    RM(1,2) = LPSSXh_,                                   &
    RM(2,1) = 0.0,                                       &
    RM(2,2) = 1.0,                                       &
    RM(3,3) =  cos(LPSSXh_*sqrt(kQPSSX_)),               &
    RM(3,4) =  sin(LPSSXh_*sqrt(kQPSSX_))/sqrt(kQPSSX_), &
    RM(4,3) = -sin(LPSSXh_*sqrt(kQPSSX_))*sqrt(kQPSSX_), &
    RM(4,4) =  cos(LPSSXh_*sqrt(kQPSSX_)),               &
    RM(5,5) = 1.0,                                       &
    RM(6,6) = 1.0

! ------------------------------------------------------------------------------
! FODO cell drifts
! ------------------------------------------------------------------------------
! - DTSXU_ = SXU undulator segment small terminations modeled as drift
! ------------------------------------------------------------------------------

  LDU3s_ := 0.25-LPSSXh_-0.04-0.005
  LDU4s_ := (0.25-LPSSXh_-0.5*LQu)/2+0.04+0.005-0.0062
  LDU5s_ := (0.25-LPSSXh_-0.5*LQu)/2+0.0062

  DTSXU_   : DRIF, L=LSXUe_
  DU3s_    : DRIF, L=LDU3s_
  DU4s_    : DRIF, L=LDU4s_
  DU5s_    : DRIF, L=LDU5s_
  DU4sb_   : DRIF, L=DU4s_[L]-DU4sa[L]
  DU3sb_   : DRIF, L=DU3s_[L]-DU3sa[L]

! ##############################################################################
! SXR: common definitions
! NOTE: not all definitions are used until SXR upgrade is complete
! ##############################################################################

! ------------------------------------------------------------------------------
! SXR undulator X-steering coils in undulator segments
! ------------------------------------------------------------------------------

  XCSU21 : HKIC, TYPE="type-V"
  XCSU22 : HKIC, TYPE="type-V"
  XCSU23 : HKIC, TYPE="type-V"
  XCSU24 : HKIC, TYPE="type-V"
  XCSU25 : HKIC, TYPE="type-V"
  XCSU26 : HKIC, TYPE="type-V"
  XCSU27 : HKIC, TYPE="type-V"
  XCSU28 : HKIC, TYPE="type-V"
  XCSU29 : HKIC, TYPE="type-V"
  XCSU30 : HKIC, TYPE="type-V"
  XCSU31 : HKIC, TYPE="type-V"
  XCSU32 : HKIC, TYPE="type-V"
  XCSU33 : HKIC, TYPE="type-V"
  XCSU34 : HKIC, TYPE="type-V"
! ----35
  XCSU36 : HKIC, TYPE="type-V"
  XCSU37 : HKIC, TYPE="type-V"
  XCSU38 : HKIC, TYPE="type-V"
  XCSU39 : HKIC, TYPE="type-V"
  XCSU40 : HKIC, TYPE="type-V"
  XCSU41 : HKIC, TYPE="type-V"
  XCSU42 : HKIC, TYPE="type-V"
  XCSU43 : HKIC, TYPE="type-V"
  XCSU44 : HKIC, TYPE="type-V"
  XCSU45 : HKIC, TYPE="type-V"
  XCSU46 : HKIC, TYPE="type-V"
  XCSU47 : HKIC, TYPE="type-V"

! ------------------------------------------------------------------------------
! SXR undulator Y-steering coils in undulator segments
! ------------------------------------------------------------------------------

  YCSU21 : VKIC, TYPE="type-V"
  YCSU22 : VKIC, TYPE="type-V"
  YCSU23 : VKIC, TYPE="type-V"
  YCSU24 : VKIC, TYPE="type-V"
  YCSU25 : VKIC, TYPE="type-V"
  YCSU26 : VKIC, TYPE="type-V"
  YCSU27 : VKIC, TYPE="type-V"
  YCSU28 : VKIC, TYPE="type-V"
  YCSU29 : VKIC, TYPE="type-V"
  YCSU30 : VKIC, TYPE="type-V"
  YCSU31 : VKIC, TYPE="type-V"
  YCSU32 : VKIC, TYPE="type-V"
  YCSU33 : VKIC, TYPE="type-V"
  YCSU34 : VKIC, TYPE="type-V"
! ----35
  YCSU36 : VKIC, TYPE="type-V"
  YCSU37 : VKIC, TYPE="type-V"
  YCSU38 : VKIC, TYPE="type-V"
  YCSU39 : VKIC, TYPE="type-V"
  YCSU40 : VKIC, TYPE="type-V"
  YCSU41 : VKIC, TYPE="type-V"
  YCSU42 : VKIC, TYPE="type-V"
  YCSU43 : VKIC, TYPE="type-V"
  YCSU44 : VKIC, TYPE="type-V"
  YCSU45 : VKIC, TYPE="type-V"
  YCSU46 : VKIC, TYPE="type-V"
  YCSU47 : VKIC, TYPE="type-V"

! ------------------------------------------------------------------------------
! SXR undulator quadrupoles
! ------------------------------------------------------------------------------
! - IntgSX = integrated quadrupole gradient
! - GQFSX  = QF and QD gradients can be made different to compensate for
!            undulator focussing ...
! - GQDSX  = ... but since undulator focussing depends on gamma^2, compensation
!            will only work for one energy
! - kQFSX  = QF undulator quadrupole focusing "k"
! - kQDSX  = QD undulator quadrupole focusing "k"
! ------------------------------------------------------------------------------

 !IntgSX :   definition moved to LCLS2sc_main.xsif and LCLS2cu_main.xsif
  GQFSX  :=  IntgSX/LQu/10*1.0           !T/m
  GQDSX  := -IntgSX/LQu/10*1.0           !T/m
  kQFSX  :=  1.E-9*GQFSX*CLIGHT/gamu/mc2 !m^-2
  kQDSX  :=  1.E-9*GQDSX*CLIGHT/gamu/mc2 !m^-2
  kQSX16 :=  1.275225965331              ! 0.365159074386
  kQSX47 := -1.8284                      !-2.295714281502

  QSXh16 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQSX16, APER=rQu
  QSXh17 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh18 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh19 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh20 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh21 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh22 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh23 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh24 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh25 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh26 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh27 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh28 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh29 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh30 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh31 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh32 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh33 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh34 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh35 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh36 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh37 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh38 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh39 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh40 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh41 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh42 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh43 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh44 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh45 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDSX,  APER=rQu
  QSXh46 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFSX,  APER=rQu
  QSXh47 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQSX47, APER=rQu

! ------------------------------------------------------------------------------
! SXR undulator X-steering coils in quads
! ------------------------------------------------------------------------------

  XCSX16 : HKIC, TYPE="type-U"
  XCSX17 : HKIC, TYPE="type-U"
  XCSX18 : HKIC, TYPE="type-U"
  XCSX19 : HKIC, TYPE="type-U"
  XCSX20 : HKIC, TYPE="type-U"
  XCSX21 : HKIC, TYPE="type-U"
  XCSX22 : HKIC, TYPE="type-U"
  XCSX23 : HKIC, TYPE="type-U"
  XCSX24 : HKIC, TYPE="type-U"
  XCSX25 : HKIC, TYPE="type-U"
  XCSX26 : HKIC, TYPE="type-U"
  XCSX27 : HKIC, TYPE="type-U"
  XCSX28 : HKIC, TYPE="type-U"
  XCSX29 : HKIC, TYPE="type-U"
  XCSX30 : HKIC, TYPE="type-U"
  XCSX31 : HKIC, TYPE="type-U"
  XCSX32 : HKIC, TYPE="type-U"
  XCSX33 : HKIC, TYPE="type-U"
  XCSX34 : HKIC, TYPE="type-U"
  XCSX35 : HKIC, TYPE="type-U"
  XCSX36 : HKIC, TYPE="type-U"
  XCSX37 : HKIC, TYPE="type-U"
  XCSX38 : HKIC, TYPE="type-U"
  XCSX39 : HKIC, TYPE="type-U"
  XCSX40 : HKIC, TYPE="type-U"
  XCSX41 : HKIC, TYPE="type-U"
  XCSX42 : HKIC, TYPE="type-U"
  XCSX43 : HKIC, TYPE="type-U"
  XCSX44 : HKIC, TYPE="type-U"
  XCSX45 : HKIC, TYPE="type-U"
  XCSX46 : HKIC, TYPE="type-U"
  XCSX47 : HKIC, TYPE="type-U"

! ------------------------------------------------------------------------------
! SXR undulator Y-steering coils in quads
! ------------------------------------------------------------------------------

  YCSX16 : VKIC, TYPE="type-U"
  YCSX17 : VKIC, TYPE="type-U"
  YCSX18 : VKIC, TYPE="type-U"
  YCSX19 : VKIC, TYPE="type-U"
  YCSX20 : VKIC, TYPE="type-U"
  YCSX21 : VKIC, TYPE="type-U"
  YCSX22 : VKIC, TYPE="type-U"
  YCSX23 : VKIC, TYPE="type-U"
  YCSX24 : VKIC, TYPE="type-U"
  YCSX25 : VKIC, TYPE="type-U"
  YCSX26 : VKIC, TYPE="type-U"
  YCSX27 : VKIC, TYPE="type-U"
  YCSX28 : VKIC, TYPE="type-U"
  YCSX29 : VKIC, TYPE="type-U"
  YCSX30 : VKIC, TYPE="type-U"
  YCSX31 : VKIC, TYPE="type-U"
  YCSX32 : VKIC, TYPE="type-U"
  YCSX33 : VKIC, TYPE="type-U"
  YCSX34 : VKIC, TYPE="type-U"
  YCSX35 : VKIC, TYPE="type-U"
  YCSX36 : VKIC, TYPE="type-U"
  YCSX37 : VKIC, TYPE="type-U"
  YCSX38 : VKIC, TYPE="type-U"
  YCSX39 : VKIC, TYPE="type-U"
  YCSX40 : VKIC, TYPE="type-U"
  YCSX41 : VKIC, TYPE="type-U"
  YCSX42 : VKIC, TYPE="type-U"
  YCSX43 : VKIC, TYPE="type-U"
  YCSX44 : VKIC, TYPE="type-U"
  YCSX45 : VKIC, TYPE="type-U"
  YCSX46 : VKIC, TYPE="type-U"
  YCSX47 : VKIC, TYPE="type-U"

! ------------------------------------------------------------------------------
! SXR undulator BPMs
! ------------------------------------------------------------------------------

  RFBSX15 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX16 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX17 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX18 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX19 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX20 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX21 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX22 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX23 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX24 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX25 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX26 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX27 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX28 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX29 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX30 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX31 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX32 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX33 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX34 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX35 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX36 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX37 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX38 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX39 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX40 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX41 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX42 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX43 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX44 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX45 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX46 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBSX47 : MONI, L=LRFBub, TYPE="CavityX-1"
  DRFBS48 : DRIF, L=LRFBub
  DRFBS49 : DRIF, L=LRFBub
  DRFBS50 : DRIF, L=LRFBub
  RFBSX51 : MONI, L=LRFBub, TYPE="CavityX-1"

! ------------------------------------------------------------------------------
! SXR undulator Beam Loss Monitors (placeholders)
! ------------------------------------------------------------------------------

  MBLMS17 : MARK
  MBLMS19 : MARK
  MBLMS21 : MARK
  MBLMS23 : MARK
  MBLMS25 : MARK
  MBLMS27 : MARK
  MBLMS29 : MARK
  MBLMS31 : MARK
  MBLMS33 : MARK
! -----35
  MBLMS37 : MARK
  MBLMS39 : MARK
  MBLMS41 : MARK
  MBLMS43 : MARK
  MBLMS45 : MARK
  MBLMS47 : MARK

! ------------------------------------------------------------------------------
! SXR undulator inline valves, VAT Series 48
! ------------------------------------------------------------------------------

! post-SDT

  VVSXU21 : MARK
  VVSXU28 : MARK
  VVSXU34 : MARK
  VVSXU35 : MARK
  VVSXU38 : MARK
  VVSXU44 : MARK

! ------------------------------------------------------------------------------
! markers
! ------------------------------------------------------------------------------

  SXRSTART : MARK !start of undulator system
  RWWAKE5S : MARK, TYPE="WAKE" !SXR beampipe wake applied here
  SXRTERM  : MARK !~end of undulator system

! SXR quadrupole centers

  MUQS16 : MARK
  MUQS17 : MARK
  MUQS18 : MARK
  MUQS19 : MARK
  MUQS20 : MARK
  MUQS21 : MARK
  MUQS22 : MARK
  MUQS23 : MARK
  MUQS24 : MARK
  MUQS25 : MARK
  MUQS26 : MARK
  MUQS27 : MARK
  MUQS28 : MARK
  MUQS29 : MARK
  MUQS30 : MARK
  MUQS31 : MARK
  MUQS32 : MARK
  MUQS33 : MARK
  MUQS34 : MARK
  MUQS35 : MARK
  MUQS36 : MARK
  MUQS37 : MARK
  MUQS38 : MARK
  MUQS39 : MARK
  MUQS40 : MARK
  MUQS41 : MARK
  MUQS42 : MARK
  MUQS43 : MARK
  MUQS44 : MARK
  MUQS45 : MARK
  MUQS46 : MARK
  MUQS47 : MARK

! SXR phase shifter centers

  MPHS21 : MARK
  MPHS22 : MARK
  MPHS23 : MARK
  MPHS24 : MARK
  MPHS25 : MARK
  MPHS26 : MARK
  MPHS27 : MARK
  MPHS28 : MARK
  MPHS29 : MARK
  MPHS30 : MARK
  MPHS31 : MARK
  MPHS32 : MARK
  MPHS33 : MARK
  MPHS34 : MARK
! ----35
  MPHS36 : MARK
  MPHS37 : MARK
  MPHS38 : MARK
  MPHS39 : MARK
  MPHS40 : MARK
  MPHS41 : MARK
  MPHS42 : MARK
  MPHS43 : MARK
  MPHS44 : MARK
  MPHS45 : MARK
  MPHS46 : MARK

! ------------------------------------------------------------------------------
! SXRSS self-seeding chicane (LCLSII-3.2-PR-0101-R0 doesn't specify chicane
! requirements ... use LCLS PRD SLAC-I-081-101-003-00-R000)
! NOTE: chicane slides across the aisle from LCLS to SXR; now bends toward the
!       (north) wall, away from the aisle
! ------------------------------------------------------------------------------

! NOTEs:
! - in LCLS: BXSS1-4
! - nominal beam energy range is 3.35-4.74 GeV
! - minimum energy is 2.6 GeV; maximum energy is 5.2 GeV
! - Bmax = 2.56 kG-m @ 9 A (20 mm maximum beam offset)
! - use series approximation for sinc(x)=sin(x)/x to allow AB5=0
! - deflects toward +X (to the left/north/wall)
! - bends toward coil side
! - Dieter Walz designation: 1.575D14-C (pole-width rather than gap height)

! BCXSS1 gets an X-offset of +1.0 mm (toward the wall)
! BCXSS2 gets an X-offset of +9.7 mm (toward the wall)
! BCXSS3 gets an X-offset of +9.7 mm (toward the wall)
! BCXSS4 gets an X-offset of +1.0 mm (toward the wall)

  Brho5    := Cb*Eu                             !beam rigidity at chicane (kG-m)
  GB5      := 0.315*in2m                        !full gap height [m]
  ZB5      := 14.315*in2m                       !on-axis effective length is 14" + gap (rule-of-thumb)
  FB5      := 0.5                               !not measured
  AB5      := -0.014249046471*SETSXRSS          !bend angle (rad) for dX=+17.0 mm
  BLB5     := Brho5*AB5                         !integrated strength (-1.901188 kG-m @ 4 GeV)
  AB5_2    := AB5*AB5
  AB5_4    := AB5_2*AB5_2
  AB5_6    := AB5_4*AB5_2
  SINCAB5  := 1-AB5_2/6+AB5_4/120-AB5_6/5040    !~sinc(AB5)=sin(AB5)/AB5
  LB5      := ZB5/SINCAB5                       !chicane bend path length (m)
  AB5s     := ASIN(SIN(AB5)/2)                  !"short" half chicane bend angle (rad)
  AB5s_2   := AB5s*AB5s
  AB5s_4   := AB5s_2*AB5s_2
  AB5s_6   := AB5s_4*AB5s_2
  SINCAB5s := 1-AB5s_2/6+AB5s_4/120-AB5s_6/5040 !~sinc(AB5s)=sin(AB5s)/AB5s
  LB5s     := ZB5/(2*SINCAB5s)                  !"short" half chicane bend path length (m)
  AB5L     := AB5-AB5S                          !"long" half chicane bend angle (rad)
  LB5L     := LB5-LB5S                          !"long" half chicane bend path length (m)

  BCXSS1a : SBEN, TYPE="0.315D14-C", HGAP=GB5/2, L=LB5S, ANGLE=+AB5S, &
                  E1=0, FINT=0.5, FINTX=0
  BCXSS1b : SBEN, TYPE="0.315D14-C", HGAP=GB5/2, L=LB5L, ANGLE=+AB5L, &
                  E2=+AB5, FINT=0, FINTX=0.5
  BCXSS2a : SBEN, TYPE="0.315D14-C", HGAP=GB5/2, L=LB5L, ANGLE=-AB5L, &
                  E1=-AB5, FINT=0.5, FINTX=0
  BCXSS2b : SBEN, TYPE="0.315D14-C", HGAP=GB5/2, L=LB5S, ANGLE=-AB5S, &
                  E2=0, FINT=0, FINTX=0.5
  BCXSS3a : SBEN, TYPE="0.315D14-C", HGAP=GB5/2, L=LB5S, ANGLE=-AB5S, &
                  E1=0, FINT=0.5, FINTX=0
  BCXSS3b : SBEN, TYPE="0.315D14-C", HGAP=GB5/2, L=LB5L, ANGLE=-AB5L, &
                  E2=-AB5, FINT=0, FINTX=0.5
  BCXSS4a : SBEN, TYPE="0.315D14-C", HGAP=GB5/2, L=LB5L, ANGLE=+AB5L, &
                  E1=+AB5, FINT=0.5, FINTX=0
  BCXSS4b : SBEN, TYPE="0.315D14-C", HGAP=GB5/2, L=LB5S, ANGLE=+AB5S, &
                  E2=0, FINT=0, FINTX=0.5

! define unsplit SBENs for BMAD ... not used by MAD

  BCXSS1 : SBEN, TYPE="0.315D14-C", HGAP=GB5/2, L=LB5, ANGLE=+AB5, &
                 E1=0, FINT=0.5, E2=+AB5, FINTX=0.5
  BCXSS2 : SBEN, TYPE="0.315D14-C", HGAP=GB5/2, L=LB5, ANGLE=-AB5, &
                 E1=-AB5, FINT=0.5, E2=0, FINTX=0.5
  BCXSS3 : SBEN, TYPE="0.315D14-C", HGAP=GB5/2, L=LB5, ANGLE=-AB5, &
                 E1=0, FINT=0.5, E2=-AB5, FINTX=0.5
  BCXSS4 : SBEN, TYPE="0.315D14-C", HGAP=GB5/2, L=LB5, ANGLE=+AB5, &
                 E1=+AB5, FINT=0.5, E2=0, FINTX=0.5

  LSssB2Bo := 1.193 !outer bend center-to-center (PRD Table 3)
  LSssB2Bi := 0.52  !inner bend center-to-center (PRD Table 3)

  ZD1S  := LSssB2Bo-ZB5
  ZD1Sa := 0.44
  ZD1Sb := 0.049
  ZD1Sc := ZD1S-(ZD1Sa+ZD1Sb)
  ZD1Sd := 0.077
  ZD1Se := 0.185
  ZD1Sf := 0.128
  ZD1Sg := ZD1S-(ZD1Sd+ZD1Se+ZD1Sf)

  DMONOS : DRIF, L=(3.4-2*LSssB2Bo-LSssB2Bi-ZB5)/2
  D1Sa   : DRIF, L=ZD1Sa/COS(AB5)
  D1Sb   : DRIF, L=ZD1Sb/COS(AB5)
  D1Sc   : DRIF, L=ZD1Sc/COS(AB5)
  D1Sd   : DRIF, L=ZD1Sd/COS(AB5)
  D1Se   : DRIF, L=ZD1Se/COS(AB5)
  D1Sf   : DRIF, L=ZD1Sf/COS(AB5)
  D1Sg   : DRIF, L=ZD1Sg/COS(AB5)
  DCHS   : DRIF, L=(LSssB2Bi-ZB5)/2

  SXRSSBEG : MARK
  GSXS1    : INST, TYPE="grating"
  MSXS1    : INST, TYPE="mirror"
  CNTRS    : MARK
  SLSXS1   : INST, TYPE="slit"
  MSXS2    : INST, TYPE="mirror"
  MSXS3    : INST, TYPE="mirror"
  SXRSSEND : MARK

  BCXSS1_full : LINE=(BCXSS1a,BCXSS1b)
  BCXSS2_full : LINE=(BCXSS2a,BCXSS2b)
  BCXSS3_full : LINE=(BCXSS3a,BCXSS3b)
  BCXSS4_full : LINE=(BCXSS4a,BCXSS4b)

  SCHICANE : LINE=(SXRSSBEG,DMONOS,&
    BCXSS1_full,D1Sa,GSXS1,D1Sb,MSXS1,D1Sc,&
    BCXSS2_full,DCHS,CNTRS,DCHS,&
    BCXSS3_full,D1Sd,SLSXS1,D1Se,MSXS2,D1Sf,MSXS3,D1Sg,&
    BCXSS4_full,DMONOS,SXRSSEND)

! ------------------------------------------------------------------------------
! complete SXR undulator segments
! ------------------------------------------------------------------------------

  UMASXh21 : UMASXh_
  UMASXh22 : UMASXh_
  UMASXh23 : UMASXh_
  UMASXh24 : UMASXh_
  UMASXh25 : UMASXh_
  UMASXh26 : UMASXh_
  UMASXh27 : UMASXh
  UMASXh28 : UMASXh
  UMASXh29 : UMASXh
  UMASXh30 : UMASXh
  UMASXh31 : UMASXh
  UMASXh32 : UMASXh
  UMASXh33 : UMASXh
  UMASXh34 : UMASXh
! ------35
  UMASXh36 : UMASXh
  UMASXh37 : UMASXh
  UMASXh38 : UMASXh
  UMASXh39 : UMASXh
  UMASXh40 : UMASXh
  UMASXh41 : UMASXh
  UMASXh42 : UMASXh
  UMASXh43 : UMASXh
  UMASXh44 : UMASXh
  UMASXh45 : UMASXh
  UMASXh46 : UMASXh
  UMASXh47 : UMASXh

  DUSEGS17 : DRIF, L=LDUSEGS
  DUSEGS18 : DRIF, L=LDUSEGS
  DUSEGS19 : DRIF, L=LDUSEGS
  DUSEGS20 : DRIF, L=LDUSEGS
  USEGSX21 : LINE=(DTSXU_,UMASXh21,XCSU21,YCSU21,UMASXh21,DTSXU_)
  USEGSX22 : LINE=(DTSXU_,UMASXh22,XCSU22,YCSU22,UMASXh22,DTSXU_)
  USEGSX23 : LINE=(DTSXU_,UMASXh23,XCSU23,YCSU23,UMASXh23,DTSXU_)
  USEGSX24 : LINE=(DTSXU_,UMASXh24,XCSU24,YCSU24,UMASXh24,DTSXU_)
  USEGSX25 : LINE=(DTSXU_,UMASXh25,XCSU25,YCSU25,UMASXh25,DTSXU_)
  USEGSX26 : LINE=(DTSXU_,UMASXh26,XCSU26,YCSU26,UMASXh26,DTSXU_)
  USEGSX27 : LINE=(DTSXU,UMASXh27,XCSU27,YCSU27,UMASXh27,DTSXU)
  USEGSX28 : LINE=(DTSXU,UMASXh28,XCSU28,YCSU28,UMASXh28,DTSXU)
  USEGSX29 : LINE=(DTSXU,UMASXh29,XCSU29,YCSU29,UMASXh29,DTSXU)
  USEGSX30 : LINE=(DTSXU,UMASXh30,XCSU30,YCSU30,UMASXh30,DTSXU)
  USEGSX31 : LINE=(DTSXU,UMASXh31,XCSU31,YCSU31,UMASXh31,DTSXU)
  USEGSX32 : LINE=(DTSXU,UMASXh32,XCSU32,YCSU32,UMASXh32,DTSXU)
  USEGSX33 : LINE=(DTSXU,UMASXh33,XCSU33,YCSU33,UMASXh33,DTSXU)
  USEGSX34 : LINE=(DTSXU,UMASXh34,XCSU34,YCSU34,UMASXh34,DTSXU)
  DUSEGS35 : LINE=(SCHICANE)
  USEGSX36 : LINE=(DTSXU,UMASXh36,XCSU36,YCSU36,UMASXh36,DTSXU)
  USEGSX37 : LINE=(DTSXU,UMASXh37,XCSU37,YCSU37,UMASXh37,DTSXU)
  USEGSX38 : LINE=(DTSXU,UMASXh38,XCSU38,YCSU38,UMASXh38,DTSXU)
  USEGSX39 : LINE=(DTSXU,UMASXh39,XCSU39,YCSU39,UMASXh39,DTSXU)
  USEGSX40 : LINE=(DTSXU,UMASXh40,XCSU40,YCSU40,UMASXh40,DTSXU)
  USEGSX41 : LINE=(DTSXU,UMASXh41,XCSU41,YCSU41,UMASXh41,DTSXU)
  USEGSX42 : LINE=(DTSXU,UMASXh42,XCSU42,YCSU42,UMASXh42,DTSXU)
  USEGSX43 : LINE=(DTSXU,UMASXh43,XCSU43,YCSU43,UMASXh43,DTSXU)
  USEGSX44 : LINE=(DTSXU,UMASXh44,XCSU44,YCSU44,UMASXh44,DTSXU)
  USEGSX45 : LINE=(DTSXU,UMASXh45,XCSU45,YCSU45,UMASXh45,DTSXU)
  USEGSX46 : LINE=(DTSXU,UMASXh46,XCSU46,YCSU46,UMASXh46,DTSXU)
  USEGSX47 : LINE=(DTSXU,UMASXh47,XCSU47,YCSU47,UMASXh47,DTSXU)
  DUSEGS48 : DRIF, L=LDUSEGS
  DUSEGS49 : DRIF, L=LDUSEGS
  DUSEGS50 : DRIF, L=LDUSEGS

! ------------------------------------------------------------------------------
! complete SXR undulator phase shifters
! ------------------------------------------------------------------------------

  DPSSX17 : DRIF, L=LPSSX
  DPSSX18 : DRIF, L=LPSSX
  DPSSX19 : DRIF, L=LPSSX
  DPSSX20 : DRIF, L=LPSSX
  PSSXh21 : PSSXh_
  PSSXh22 : PSSXh_
  PSSXh23 : PSSXh_
  PSSXh24 : PSSXh_
  PSSXh25 : PSSXh_
  PSSXh26 : PSSXh_
  PSSXh27 : PSSXh
  PSSXh28 : PSSXh
  PSSXh29 : PSSXh
  PSSXh30 : PSSXh
  PSSXh31 : PSSXh
  PSSXh32 : PSSXh
  PSSXh33 : PSSXh
  PSSXh34 : PSSXh
  DPSSX35 : DRIF, L=LPSSX
  PSSXh36 : PSSXh
  PSSXh37 : PSSXh
  PSSXh38 : PSSXh
  PSSXh39 : PSSXh
  PSSXh40 : PSSXh
  PSSXh41 : PSSXh
  PSSXh42 : PSSXh
  PSSXh43 : PSSXh
  PSSXh44 : PSSXh
  PSSXh45 : PSSXh
  PSSXh46 : PSSXh
  DPSSX47 : DRIF, L=LPSSX
  DPSSX48 : DRIF, L=LPSSX
  DPSSX49 : DRIF, L=LPSSX
  DPSSX50 : DRIF, L=LPSSX

  PSSXh21_full : LINE=(PSSXh21,MPHS21,PSSXh21)
  PSSXh22_full : LINE=(PSSXh22,MPHS22,PSSXh22)
  PSSXh23_full : LINE=(PSSXh23,MPHS23,PSSXh23)
  PSSXh24_full : LINE=(PSSXh24,MPHS24,PSSXh24)
  PSSXh25_full : LINE=(PSSXh25,MPHS25,PSSXh25)
  PSSXh26_full : LINE=(PSSXh26,MPHS26,PSSXh26)
  PSSXh27_full : LINE=(PSSXh27,MPHS27,PSSXh27)
  PSSXh28_full : LINE=(PSSXh28,MPHS28,PSSXh28)
  PSSXh29_full : LINE=(PSSXh29,MPHS29,PSSXh29)
  PSSXh30_full : LINE=(PSSXh30,MPHS30,PSSXh30)
  PSSXh31_full : LINE=(PSSXh31,MPHS31,PSSXh31)
  PSSXh32_full : LINE=(PSSXh32,MPHS32,PSSXh32)
  PSSXh33_full : LINE=(PSSXh33,MPHS33,PSSXh33)
  PSSXh34_full : LINE=(PSSXh34,MPHS34,PSSXh34)
! -----35
  PSSXh36_full : LINE=(PSSXh36,MPHS36,PSSXh36)
  PSSXh37_full : LINE=(PSSXh37,MPHS37,PSSXh37)
  PSSXh38_full : LINE=(PSSXh38,MPHS38,PSSXh38)
  PSSXh39_full : LINE=(PSSXh39,MPHS39,PSSXh39)
  PSSXh40_full : LINE=(PSSXh40,MPHS40,PSSXh40)
  PSSXh41_full : LINE=(PSSXh41,MPHS41,PSSXh41)
  PSSXh42_full : LINE=(PSSXh42,MPHS42,PSSXh42)
  PSSXh43_full : LINE=(PSSXh43,MPHS43,PSSXh43)
  PSSXh44_full : LINE=(PSSXh44,MPHS44,PSSXh44)
  PSSXh45_full : LINE=(PSSXh45,MPHS45,PSSXh45)
  PSSXh46_full : LINE=(PSSXh46,MPHS46,PSSXh46)

! ------------------------------------------------------------------------------
! complete SXR undulator quadrupoles
! ------------------------------------------------------------------------------

  QSXh16_full : LINE=(QSXh16,XCSX16,MUQS16,YCSX16,QSXh16)
  QSXh17_full : LINE=(QSXh17,XCSX17,MUQS17,YCSX17,QSXh17)
  QSXh18_full : LINE=(QSXh18,XCSX18,MUQS18,YCSX18,QSXh18)
  QSXh19_full : LINE=(QSXh19,XCSX19,MUQS19,YCSX19,QSXh19)
  QSXh20_full : LINE=(QSXh20,XCSX20,MUQS20,YCSX20,QSXh20)
  QSXh21_full : LINE=(QSXh21,XCSX21,MUQS21,YCSX21,QSXh21)
  QSXh22_full : LINE=(QSXh22,XCSX22,MUQS22,YCSX22,QSXh22)
  QSXh23_full : LINE=(QSXh23,XCSX23,MUQS23,YCSX23,QSXh23)
  QSXh24_full : LINE=(QSXh24,XCSX24,MUQS24,YCSX24,QSXh24)
  QSXh25_full : LINE=(QSXh25,XCSX25,MUQS25,YCSX25,QSXh25)
  QSXh26_full : LINE=(QSXh26,XCSX26,MUQS26,YCSX26,QSXh26)
  QSXh27_full : LINE=(QSXh27,XCSX27,MUQS27,YCSX27,QSXh27)
  QSXh28_full : LINE=(QSXh28,XCSX28,MUQS28,YCSX28,QSXh28)
  QSXh29_full : LINE=(QSXh29,XCSX29,MUQS29,YCSX29,QSXh29)
  QSXh30_full : LINE=(QSXh30,XCSX30,MUQS30,YCSX30,QSXh30)
  QSXh31_full : LINE=(QSXh31,XCSX31,MUQS31,YCSX31,QSXh31)
  QSXh32_full : LINE=(QSXh32,XCSX32,MUQS32,YCSX32,QSXh32)
  QSXh33_full : LINE=(QSXh33,XCSX33,MUQS33,YCSX33,QSXh33)
  QSXh34_full : LINE=(QSXh34,XCSX34,MUQS34,YCSX34,QSXh34)
  QSXh35_full : LINE=(QSXh35,XCSX35,MUQS35,YCSX35,QSXh35)
  QSXh36_full : LINE=(QSXh36,XCSX36,MUQS36,YCSX36,QSXh36)
  QSXh37_full : LINE=(QSXh37,XCSX37,MUQS37,YCSX37,QSXh37)
  QSXh38_full : LINE=(QSXh38,XCSX38,MUQS38,YCSX38,QSXh38)
  QSXh39_full : LINE=(QSXh39,XCSX39,MUQS39,YCSX39,QSXh39)
  QSXh40_full : LINE=(QSXh40,XCSX40,MUQS40,YCSX40,QSXh40)
  QSXh41_full : LINE=(QSXh41,XCSX41,MUQS41,YCSX41,QSXh41)
  QSXh42_full : LINE=(QSXh42,XCSX42,MUQS42,YCSX42,QSXh42)
  QSXh43_full : LINE=(QSXh43,XCSX43,MUQS43,YCSX43,QSXh43)
  QSXh44_full : LINE=(QSXh44,XCSX44,MUQS44,YCSX44,QSXh44)
  QSXh45_full : LINE=(QSXh45,XCSX45,MUQS45,YCSX45,QSXh45)
  QSXh46_full : LINE=(QSXh46,XCSX46,MUQS46,YCSX46,QSXh46)
  QSXh47_full : LINE=(QSXh47,XCSX47,MUQS47,YCSX47,QSXh47)
  DQSX48      : DRIF, L=LQu
  DQSX49      : DRIF, L=LQu
  DQSX50      : DRIF, L=LQu

! ------------------------------------------------------------------------------
! miscellaneous SXR stuff
! ------------------------------------------------------------------------------

! SXRSS-II BOD's

  BOD10 : PROF, TYPE="YAG" !Beam Overlap Device
  DU7sa : DRIF, L=0.078508
  BOD12 : PROF, TYPE="YAG" !Beam Overlap Device
  DU7sb : DRIF, L=DU7s[L]-DU7sa[L]
  
! PEPPEx components

  PEPXANG := 0.105263157895E-2 !offset beam toward aisle (south)

 !DU7sc     : DRIF, L=0.184
 !FSPEPX1   : INST, TYPE="fast shutter"
 !DU7sd     : DRIF, L=DU7s[L]-DU7sc[L]
  XCPEPX1   : HKIC, TYPE="2.19 Gap Type 4", KICK=-PEPXANG*SETPEPX
  DU7se     : DRIF, L=0.074
  VGPEPX1   : MARK, TYPE="vacuum gauges"
  VGCCPEPX1 : INST, TYPE="cold cathode"
  VGPRPEPX1 : INST, TYPE="pirani"
  DU7sf     : DRIF, L=DU7s[L]-DU7se[L]
  DUSEGS50a : DRIF, L=0.064
  XCPEPX2   : HKIC, TYPE="2.19 Gap Type 4", KICK=+PEPXANG*SETPEPX
  DUSEGS50b : DRIF, L=0.586
  ZPPEPX    : INST, TYPE="zone plate"
  DUSEGS50c : DRIF, L=0.29
  VPPEPX1   : MARK, TYPE="ion pump"
  DUSEGS50d : DRIF, L=0.224
  XCPEPX3   : HKIC, TYPE="2.19 Gap Type 4", KICK=+PEPXANG*SETPEPX
  DUSEGS50e : DRIF, L=0.95
  XCPEPX4   : HKIC, TYPE="2.19 Gap Type 4", KICK=-PEPXANG*SETPEPX
  DUSEGS50f : DRIF, L=0.6
  GJPEPX    : INST, TYPE="gas jet"
  DUSEGS50g : DRIF, L=DUSEGS50[L]-DUSEGS50a[L]-DUSEGS50b[L]&
                      -DUSEGS50c[L]-DUSEGS50d[L]-DUSEGS50e[L]&
                      -DUSEGS50f[L]
  DUE1ab1   : DRIF, L=0.121
  VPPEPX2   : MARK, TYPE="ion pump"
  DUE1ab2   : DRIF, L=DUE1ab[L]-DUE1ab1[L]

! ------------------------------------------------------------------------------
! SXR FODO cell interspace definitions
! ------------------------------------------------------------------------------

  SXBRK17 : LINE=(DU3s,DPSSX17,DU4s,DU5s,QSXh17_full,DU6s,&
                  RFBSX17,DU7s)
  SXBRK18 : LINE=(DU3s,DPSSX18,DU4s,DU5s,QSXh18_full,DU6s,&
                  RFBSX18,DU7s)
  SXBRK19 : LINE=(DU3s,DPSSX19,DU4s,DU5s,QSXh19_full,DU6s,&
                  RFBSX19,DU7s)
  SXBRK20 : LINE=(DU3s,DPSSX20,DU4s,DU5s,QSXh20_full,DU6s,&
                  RFBSX20,DU7s)
  SXBRK21 : LINE=(DU3s_,PSSXh21_full,DU4s_,VVSXU21,DU5s_,QSXh21_full,DU6s,&
                  RFBSX21,DU7s)
  SXBRK22 : LINE=(DU3s_,PSSXh22_full,DU4s_,DU5s_,QSXh22_full,DU6s,&
                  RFBSX22,DU7s)
  SXBRK23 : LINE=(DU3s_,PSSXh23_full,DU4s_,DU5s_,QSXh23_full,DU6s,&
                  RFBSX23,DU7s)
  SXBRK24 : LINE=(DU3s_,PSSXh24_full,DU4s_,DU5s_,QSXh24_full,DU6s,&
                  RFBSX24,DU7s)
  SXBRK25 : LINE=(DU3s_,PSSXh25_full,DU4s_,DU5s_,QSXh25_full,DU6s,&
                  RFBSX25,DU7s)
  SXBRK26 : LINE=(DU3s_,PSSXh26_full,DU4s_,DU5s_,QSXh26_full,DU6s,&
                  RFBSX26,DU7s)
  SXBRK27 : LINE=(DU3s,PSSXh27_full,DU4s,DU5s,QSXh27_full,DU6s,&
                  RFBSX27,DU7s)
  SXBRK28 : LINE=(DU3s,PSSXh28_full,DU4s,VVSXU28,DU5s,QSXh28_full,DU6s,&
                  RFBSX28,DU7s)
  SXBRK29 : LINE=(DU3s,PSSXh29_full,DU4s,DU5s,QSXh29_full,DU6s,&
                  RFBSX29,DU7s)
  SXBRK30 : LINE=(DU3s,PSSXh30_full,DU4s,DU5s,QSXh30_full,DU6s,&
                  RFBSX30,DU7s)
  SXBRK31 : LINE=(DU3s,PSSXh31_full,DU4s,DU5s,QSXh31_full,DU6s,&
                  RFBSX31,DU7s)
  SXBRK32 : LINE=(DU3s,PSSXh32_full,DU4s,DU5s,QSXh32_full,DU6s,&
                  RFBSX32,DU7s)
  SXBRK33 : LINE=(DU3s,PSSXh33_full,DU4s,DU5s,QSXh33_full,DU6s,&
                  RFBSX33,DU7s)
  SXBRK34 : LINE=(DU3s,PSSXh34_full,DU4s,VVSXU34,DU5s,QSXh34_full,DU6s,&
                  RFBSX34,DU7s)
  SXBRK35 : LINE=(DU3s,DPSSX35,DU4sa,BOD10,DU4sb,VVSXU35,DU5s,QSXh35_full,&
                  DU6s,RFBSX35,DU7s)
  SXBRK36 : LINE=(DU3s,PSSXh36_full,DU4s,DU5s,QSXh36_full,DU6s,&
                  RFBSX36,DU7s)
  SXBRK37 : LINE=(DU3s,PSSXh37_full,DU4s,DU5s,QSXh37_full,DU6s,&
                  RFBSX37,DU7sa,BOD12,DU7Sb)
  SXBRK38 : LINE=(DU3s,PSSXh38_full,DU4s,VVSXU38,DU5s,QSXh38_full,DU6s,&
                  RFBSX38,DU7s)
  SXBRK39 : LINE=(DU3s,PSSXh39_full,DU4s,DU5s,QSXh39_full,DU6s,&
                  RFBSX39,DU7s)
  SXBRK40 : LINE=(DU3s,PSSXh40_full,DU4s,DU5s,QSXh40_full,DU6s,&
                  RFBSX40,DU7s)
  SXBRK41 : LINE=(DU3s,PSSXh41_full,DU4s,DU5s,QSXh41_full,DU6s,&
                  RFBSX41,DU7s)
  SXBRK42 : LINE=(DU3s,PSSXh42_full,DU4s,DU5s,QSXh42_full,DU6s,&
                  RFBSX42,DU7s)
  SXBRK43 : LINE=(DU3s,PSSXh43_full,DU4s,DU5s,QSXh43_full,DU6s,&
                  RFBSX43,DU7s)
  SXBRK44 : LINE=(DU3s,PSSXh44_full,DU4s,VVSXU44,DU5s,QSXh44_full,DU6s,&
                  RFBSX44,DU7s)
  SXBRK45 : LINE=(DU3s,PSSXh45_full,DU4s,DU5s,QSXh45_full,DU6s,&
                  RFBSX45,DU7s)
  SXBRK46 : LINE=(DU3s,PSSXh46_full,DU4s,DU5s,QSXh46_full,DU6s,&
                  RFBSX46,DU7s)
  SXBRK47 : LINE=(DU3s,DPSSX47     ,DU4s,DU5s,QSXh47_full,DU6s,&
                  RFBSX47,DU7s)
  SXBRK48 : LINE=(DU3s,DPSSX48     ,DU4s,DU5s,DQSX48     ,DU6s,&
                  DRFBS48,DU7s)
  SXBRK49 : LINE=(DU3sa,XCPEPX1,DU3sb,DPSSX49,DU4s,DU5s,DQSX49,DU6s,&
                  DRFBS49,DU7se,VGPEPX1,VGCCPEPX1,VGPRPEPX1,DU7sf)
  SXBRK50 : LINE=(DU3s,DPSSX50     ,DU4s,DU5s,DQSX50     ,DU6s,&
                  DRFBS50,DU7s)

! ------------------------------------------------------------------------------
! SXR cell boundary definitions
! ------------------------------------------------------------------------------

  SXR17BEG : MARK ; SXR17END : MARK
  SXR18BEG : MARK ; SXR18END : MARK
  SXR19BEG : MARK ; SXR19END : MARK
  SXR20BEG : MARK ; SXR20END : MARK
  SXR21BEG : MARK ; SXR21END : MARK
  SXR22BEG : MARK ; SXR22END : MARK
  SXR23BEG : MARK ; SXR23END : MARK
  SXR24BEG : MARK ; SXR24END : MARK
  SXR25BEG : MARK ; SXR25END : MARK
  SXR26BEG : MARK ; SXR26END : MARK
  SXR27BEG : MARK ; SXR27END : MARK
  SXR28BEG : MARK ; SXR28END : MARK
  SXR29BEG : MARK ; SXR29END : MARK
  SXR30BEG : MARK ; SXR30END : MARK
  SXR31BEG : MARK ; SXR31END : MARK
  SXR32BEG : MARK ; SXR32END : MARK
  SXR33BEG : MARK ; SXR33END : MARK
  SXR34BEG : MARK ; SXR34END : MARK
  SXR35BEG : MARK ; SXR35END : MARK
  SXR36BEG : MARK ; SXR36END : MARK
  SXR37BEG : MARK ; SXR37END : MARK
  SXR38BEG : MARK ; SXR38END : MARK
  SXR39BEG : MARK ; SXR39END : MARK
  SXR40BEG : MARK ; SXR40END : MARK
  SXR41BEG : MARK ; SXR41END : MARK
  SXR42BEG : MARK ; SXR42END : MARK
  SXR43BEG : MARK ; SXR43END : MARK
  SXR44BEG : MARK ; SXR44END : MARK
  SXR45BEG : MARK ; SXR45END : MARK
  SXR46BEG : MARK ; SXR46END : MARK
  SXR47BEG : MARK ; SXR47END : MARK
  SXR48BEG : MARK ; SXR48END : MARK
  SXR49BEG : MARK ; SXR49END : MARK
  SXR50BEG : MARK ; SXR50END : MARK

! ------------------------------------------------------------------------------
! SXR cell definitions
! ------------------------------------------------------------------------------

  SXCEL17 : LINE=(SXR17BEG,DU1s,        DU2s,DUSEGS17,SXBRK17,SXR17END) !Q+RFBPM
  SXCEL18 : LINE=(SXR18BEG,DU1s,        DU2s,DUSEGS18,SXBRK18,SXR18END) !Q+RFBPM
  SXCEL19 : LINE=(SXR19BEG,DU1s,        DU2s,DUSEGS19,SXBRK19,SXR19END) !Q+RFBPM
  SXCEL20 : LINE=(SXR20BEG,DU1s,        DU2s,DUSEGS20,SXBRK20,SXR20END) !Q+RFBPM
  SXCEL21 : LINE=(SXR21BEG,DU1s,MBLMS21,DU2s,USEGSX21,SXBRK21,SXR21END) !long
  SXCEL22 : LINE=(SXR22BEG,DU1s,        DU2s,USEGSX22,SXBRK22,SXR22END) !long
  SXCEL23 : LINE=(SXR23BEG,DU1s,MBLMS23,DU2s,USEGSX23,SXBRK23,SXR23END) !long
  SXCEL24 : LINE=(SXR24BEG,DU1s,        DU2s,USEGSX24,SXBRK24,SXR24END) !long
  SXCEL25 : LINE=(SXR25BEG,DU1s,MBLMS25,DU2s,USEGSX25,SXBRK25,SXR25END) !long
  SXCEL26 : LINE=(SXR26BEG,DU1s,        DU2s,USEGSX26,SXBRK26,SXR26END) !short
  SXCEL27 : LINE=(SXR27BEG,DU1s,MBLMS27,DU2s,USEGSX27,SXBRK27,SXR27END) !short
  SXCEL28 : LINE=(SXR28BEG,DU1s,        DU2s,USEGSX28,SXBRK28,SXR28END) !short
  SXCEL29 : LINE=(SXR29BEG,DU1s,MBLMS29,DU2s,USEGSX29,SXBRK29,SXR29END) !short
  SXCEL30 : LINE=(SXR30BEG,DU1s,        DU2s,USEGSX30,SXBRK30,SXR30END) !short
  SXCEL31 : LINE=(SXR31BEG,DU1s,MBLMS31,DU2s,USEGSX31,SXBRK31,SXR31END) !short
  SXCEL32 : LINE=(SXR32BEG,DU1s,        DU2s,USEGSX32,SXBRK32,SXR32END) !short
  SXCEL33 : LINE=(SXR33BEG,DU1s,MBLMS33,DU2s,USEGSX33,SXBRK33,SXR33END) !short
  SXCEL34 : LINE=(SXR34BEG,DU1s,        DU2s,USEGSX34,SXBRK34,SXR34END) !short
  SXCEL35 : LINE=(SXR35BEG,DU1s,        DU2s,DUSEGS35,SXBRK35,SXR35END) !SXRSS+Q+RFBPM
  SXCEL36 : LINE=(SXR36BEG,DU1s,        DU2s,USEGSX36,SXBRK36,SXR36END) !short
  SXCEL37 : LINE=(SXR37BEG,DU1s,MBLMS37,DU2s,USEGSX37,SXBRK37,SXR37END) !short
  SXCEL38 : LINE=(SXR38BEG,DU1s,        DU2s,USEGSX38,SXBRK38,SXR38END) !short
  SXCEL39 : LINE=(SXR39BEG,DU1s,MBLMS39,DU2s,USEGSX39,SXBRK39,SXR39END) !short
  SXCEL40 : LINE=(SXR40BEG,DU1s,        DU2s,USEGSX40,SXBRK40,SXR40END) !short
  SXCEL41 : LINE=(SXR41BEG,DU1s,MBLMS41,DU2s,USEGSX41,SXBRK41,SXR41END) !short
  SXCEL42 : LINE=(SXR42BEG,DU1s,        DU2s,USEGSX42,SXBRK42,SXR42END) !short
  SXCEL43 : LINE=(SXR43BEG,DU1s,MBLMS43,DU2s,USEGSX43,SXBRK43,SXR43END) !short
  SXCEL44 : LINE=(SXR44BEG,DU1s,        DU2s,USEGSX44,SXBRK44,SXR44END) !short
  SXCEL45 : LINE=(SXR45BEG,DU1s,MBLMS45,DU2s,USEGSX45,SXBRK45,SXR45END) !short
  SXCEL46 : LINE=(SXR46BEG,DU1s,        DU2s,USEGSX46,SXBRK46,SXR46END) !short
  SXCEL47 : LINE=(SXR47BEG,DU1s,MBLMS47,DU2s,USEGSX47,SXBRK47,SXR47END) !short
  SXCEL48 : LINE=(SXR48BEG,DU1s,        DU2s,DUSEGS48,SXBRK48,SXR48END) !empty
  SXCEL49 : LINE=(SXR49BEG,DU1s,        DU2s,DUSEGS49,SXBRK49,SXR49END) !empty
  SXCEL50 : LINE=(SXR50BEG,DU1s,DU2s,DUSEGS50a,XCPEPX2,DUSEGS50b,&
    ZPPEPX,DUSEGS50c,VPPEPX1,DUSEGS50d,XCPEPX3,DUSEGS50e,XCPEPX4,&
    DUSEGS50f,GJPEPX,DUSEGS50g,SXBRK50,SXR50END)                        !PEPPEx stuff

! ------------------------------------------------------------------------------
! SXR definitions
! ------------------------------------------------------------------------------

  SXRCL    : LINE=(&
    SXCEL17,SXCEL18,SXCEL19,SXCEL20,SXCEL21,SXCEL22,SXCEL23,SXCEL24,&
    SXCEL25,SXCEL26,SXCEL27,SXCEL28,SXCEL29,SXCEL30,SXCEL31,SXCEL32,&
    SXCEL33,SXCEL34,SXCEL35,SXCEL36,SXCEL37,SXCEL38,SXCEL39,SXCEL40,&
    SXCEL41,SXCEL42,SXCEL43,SXCEL44,SXCEL45,SXCEL46,SXCEL47,SXCEL48,&
    SXCEL49,SXCEL50)

  SXR : LINE=(DU0sa,RFBSX15,DU0sb,QSXh16_full,DU6s,RFBSX16,DU7s,&
    SXRSTART,SXRCL,RWWAKE5S,SXRTERM,DUE1ab1,VPPEPX2,DUE1ab2,&
    RFBSX51,DUE1e,ENDUNDS)

! ------------------------------------------------------------------------------
! SXR undulator exit section
! ------------------------------------------------------------------------------

  TCX01B : LCAV, FREQ=XbandF, TYPE="TRANS_DEFL", L=1.5/2 !horiz. deflection

! note: the below K-values are for SC beam; the settings for Cu beam are
! in the "LCLS2cu_main.mad8" file

  KQUE1B :=  0.292632459332 ! 0.28964739003
  KQUE2B :=  0.0            !-0.00606676202205

  QUE1B : QUAD, TYPE="2Q10", L=LQR/2, K1=KQUE1b, APER=rQR
  QUE2B : QUAD, TYPE="2Q10", L=LQR/2, K1=KQUE2b, APER=rQR

  LBKXDMP :=  1.0                !x-kicker length in dumpline
  dzSXTES :=  0.468389399848E-10 !set MDLWALLb at 685 m exactly to align with SXR XTES system
  dDSB0e  := -0.403705866174E-3

  DUE1d    : DRIF, L=0.1
  DUE1b    : DRIF, L=1.5
  DUE1c    : DRIF, L=0.5
  DUE2a    : DRIF, L=0.5
  DUE2d    : DRIF, L=0.188-0.012 !phase cavity center-to-center spacing
  DUE2b    : DRIF, L=0.8-DUE2d[L]+0.005555
  DUE2e    : DRIF, L=1.740055-DUE2b[L]-3*DUE2d[L]
  DUE2cb   : DRIF, L=0.615+(LQP-LQR)/2
  DUE3ab   : DRIF, L=0.375504+(LQP-LQR)/2-0.014955
  DUE3bb   : DRIF, L=1.2630495+0.014955
  DUE3c    : DRIF, L=(1.7968755-LBKXDMP)/2
  DBKXDMPS : DRIF, L=LBKXDMP !placeholder for x-kicker in SXR dumpline
  DUE3d    : DRIF, L=0.435884 !0.320516
  DFSPCB   : DRIF, L=0.115368
  DPCBVVB  : DRIF, L=0.401785
  DVVBTCXB : DRIF, L=0.314355
  DTCXBSPB : DRIF, L=0.380565 !0.381
  DUE4B    : DRIF, L=0.975911
  DUE5ab   : DRIF, L=0.477799+(LQP-LQR)/2-0.114162
  DUE5bb   : DRIF, L=0.264+0.114162-0.1016+0.1016
  DUE5cb   : DRIF, L=0.2674+0.1016-0.1016
  DUE5f    : DRIF, L=0.05
  DUE5d    : DRIF, L=0.137055-0.05
  DUE5eB   : DRIF, L=0.252825-DUE5d[L]-DUE5f[L]+dzSXTES
  DDLWALLB : DRIF, L=0.250825-dzSXTES !length of dumpline thermal barrier wall
  DSB0a    : DRIF, L=0.260150
  DSB0b    : DRIF, L=0.344
  DSB0c    : DRIF, L=0.32646
  DSB0d    : DRIF, L=0.123366
  DSB0e    : DRIF, L=0.1059327+dDSB0e

  BPMUE1B : MONI, TYPE="Stripline-5" !RFBUE1B : MONI, TYPE="@2,CavityS-1"
  BPMUE2B : MONI, TYPE="Stripline-5" !RFBUE2B : MONI, TYPE="@2,CavityS-1"

  XCUE2B : HKIC,TYPE="class-4"
  XCD3B  : HKIC,TYPE="class-5"

  YCUE1B : VKIC,TYPE="class-4"
  YCD3B  : VKIC,TYPE="class-5"

  PCTCXB : ECOL, TYPE="XCS coll", XSIZE=4.0E-3/2, YSIZE=4.0E-3/2 !XTCAV photon collimator (4 mm aperture)
  PCPM0B : ECOL, L=LPCPM, XSIZE=17.5E-3, YSIZE=17.5E-3

  PH31B   : INST, TYPE="2805 MHz" !post-undulator phase measurement RF cavity (low rate)
  PH32B   : INST, TYPE="2805 MHz" !post-undulator phase measurement RF cavity (low rate)
  PH33B   : INST, TYPE="2604 MHz" !post-undulator phase measurement RF cavity (high rate)
  PH34B   : INST, TYPE="2604 MHz" !post-undulator phase measurement RF cavity (high rate)
  TRUE1B  : INST, TYPE="@5" !Be foil inserter (THz)
  SPTCXB  : INST, TYPE="XTCAV spoiler"
  BTMQUEB : INST !Burn-Through-Monitor
  BTM0B   : INST !Burn-Through-Monitor behind the PCPM0B

  UEbegB   : MARK
  VV36B    : MARK !treaty-point vacuum valve just downbeam of undulator
  MIMUNDOB : MARK !IMUNDOB : IMON, TYPE="@0,BCS ACM" !BCS ACM
  VVTCXB   : MARK !XTCAV vacuum valve
  MTCX01B  : MARK !entrance to TCX01B (for ELEGANT WATCH point)
  MTCXB    : MARK !center of TCX01B (for matching)
  MDLWALLB : MARK !front face of dumpline thermal barrier wall
  UEendB   : MARK
  DLstartB : MARK !start of dumpline
  VV37B    : MARK !vac. valve in dumpline

  TCX01B_full : LINE=(TCX01B,MTCXB,TCX01B)

  QUE1B_full : LINE=(QUE1B,QUE1B)
  QUE2B_full : LINE=(QUE2B,QUE2B)

  UNDEXITb : LINE=(BEGDMPS_1,&
      UEbegB,DUE1d,VV36B,DUE1b,MIMUNDOB,DUE1c,DUE2a,YCUE1B,&
      DUE2b,PH31B,DUE2d,PH32B,DUE2d,PH33B,DUE2d,PH34B,DUE2e,XCUE2B,DUE2cb,&
    QUE1B_full,DUE3ab,BPMUE1B,DUE3bb,TRUE1B,DUE3c,DBKXDMPS,DUE3c,DUE3d,&
      PCTCXB,DPCBVVB,VVTCXB,DVVBTCXB,MTCX01B,TCX01B_full,DTCXBSPB,SPTCXB,&
      DUE4B,&
    QUE2B_full,DUE5ab,BPMUE2B,DUE5bb,BTMQUEB,DUE5cb,PCPM0B,DUE5f,BTM0B,&
      DUE5d,DUE5eB,MDLWALLB,DDLWALLB,UEendB,DLstartB,DSB0a,YCD3B,DSB0b,&
      XCD3B,DSB0c,VV37B,DSB0d,DSB0e,&
    ENDDMPS_1)

  SXRUND : LINE=(SXR,UNDEXITb)

! ==============================================================================
! HXR HGVPU undulator (south)
! ==============================================================================

! ------------------------------------------------------------------------------
! HXR undulator PPM phase shifter
! - Author: Heinz-Dieter Nuhn, Stanford Linear Accelerator Center
! - Last edited September 06, 2017
! - 10.0 mm miminum Undulator Gap
! ------------------------------------------------------------------------------
! - LPSHX  = HXR Phase Shifter length
! - luPSHX = HXR Phase Shifter period
! - PIPSHX = HXR Phase Shifter phase integral 
! - KPSHX  = HXR Phase Shifter Undulator parameter (rms); range 0.18-1.91
! - kQPSHX = natural HXR Phase Shifter undulator focusing "k" in y-plane
! ------------------------------------------------------------------------------

  LPSHX  := 0.0495                             !m
  luPSHX := 0.045                              !m
  LPSHXh := LPSHX/2
  PIPSHX := 490                                !T^2mm^3 (80-490)
  KPSHX  := 1.E-9*CLIGHT/mc2*SQRT(2.E-9*PIPSHX/luPSHX)
  kQPSHX := (KPSHX*2*pi/luPSHX/sqrt(2)/gamu)^2 !m^-2

  PSHXh : MATR, TYPE="PS45", L=LPSHXh,       &
    RM(1,1) = 1.0,                                    &
    RM(1,2) = LPSHXh,                                 &
    RM(2,1) = 0.0,                                    &
    RM(2,2) = 1.0,                                    &
    RM(3,3) =  cos(LPSHXh*sqrt(kQPSHX)),              &
    RM(3,4) =  sin(LPSHXh*sqrt(kQPSHX))/sqrt(kQPSHX), &
    RM(4,3) = -sin(LPSHXh*sqrt(kQPSHX))*sqrt(kQPSHX), &
    RM(4,4) =  cos(LPSHXh*sqrt(kQPSHX)),              &
    RM(5,5) = 1.0,                                    &
    RM(6,6) = 1.0

! -----13
  PSHXh14 : PSHXh
  PSHXh15 : PSHXh
  PSHXh16 : PSHXh
  PSHXh17 : PSHXh
  PSHXh18 : PSHXh
  PSHXh19 : PSHXh
  PSHXh20 : PSHXh
! -----21
  PSHXh22 : PSHXh
  PSHXh23 : PSHXh
  PSHXh24 : PSHXh
  PSHXh25 : PSHXh
  PSHXh26 : PSHXh
  PSHXh27 : PSHXh
! -----28
  PSHXh29 : PSHXh
  PSHXh30 : PSHXh
  PSHXh31 : PSHXh
  PSHXh32 : PSHXh
  PSHXh33 : PSHXh
  PSHXh34 : PSHXh
  PSHXh35 : PSHXh
  PSHXh36 : PSHXh
  PSHXh37 : PSHXh
  PSHXh38 : PSHXh
  PSHXh39 : PSHXh
  PSHXh40 : PSHXh
  PSHXh41 : PSHXh
  PSHXh42 : PSHXh
  PSHXh43 : PSHXh
  PSHXh44 : PSHXh
  PSHXh45 : PSHXh
  PSHXh46 : PSHXh

! ------------------------------------------------------------------------------
! - Author: Heinz-Dieter Nuhn, Stanford Linear Accelerator Center
! - Edited Mar 03, 2014
! - Updated Dec 02, 2015 for HGVPU (Y. Nosochkov, D. Bruch)
! - 7.2 mm miminum Undulator Gap; only constant break length each
! - include natural horizontal focusing over all but edge terminations
! ------------------------------------------------------------------------------
! - IntgHX  = integrated quadrupole gradient
! - GQFHX   = QF and QD gradients can be made different to compensate for
!             undulator focussing ...
! - GQDHX   = ... but since undulator focussing depends on gamma^2, compensation
!             will only work for one energy
! - kQFHX   = QF undulator quadrupole focusing "k"
! - kQDHX   = QD undulator quadrupole focusing "k"
! - LDUSEGH = HXR Undulator segment length
! - luHXU   = HXR Undulator period
! - NpHXU   = HXR Undulator period count
! - LHXUCR  = HXR Undulator magnetic length
! - LHXUe   = HXR Undulator spacing between magnet array and strongback end
! - KHXU    = HXR Undulator parameter (rms); range 0.54-2.45
! - kQHX    = natural HXR undulator focusing "k" in x-plane
! ------------------------------------------------------------------------------

  LDUSEGH := 3.372032
  LDU1h   := 0.040984
  LDU2h   := 0.0
  LDU3h   := (1.83-LDUSEGH/2-LQu/2)/2
  LDU4h   := 0.13-LQu/2-LRFBub/2
  LDU5h   := 0.1275-LPSHXh-LRFBub/2
  LDU6h   := 0.109243-LPSHXh
  LDU7h   := 0.08892366667
  LDU8h   := 0.025
 dLDU0h   := 0.0 !fine tune Z of undulator
  LDU0h   := 0.094391984077-LDU8h-LRFBub +LRFBub +dLDU0h

  DU0h : DRIF, L=LDU0h
  DU1h : DRIF, L=LDU1h
  DU2h : DRIF, L=LDU2h
  DU3h : DRIF, L=LDU3h
  DU4h : DRIF, L=LDU4h
  DU5h : DRIF, L=LDU5h
  DU6h : DRIF, L=LDU6h
  DU7h : DRIF, L=LDU7h
  DU8h : DRIF, L=LDU8h

 dDUE1a := 0.0
  DUE1a : DRIF, L=2.853174666558-LRFBub +dDUE1a

 !IntgHX : definition moved to LCLS2sc_main.xsif and LCLS2cu_main.xsif
  GQFHX  :=  IntgHX/LQu/10*1.0           !T/m
  GQDHX  := -IntgHX/LQu/10*1.0           !T/m
  kQFHX  :=  1.E-9*GQFHX*CLIGHT/gamu/mc2 !m^-2
  kQDHX  :=  1.E-9*GQDHX*CLIGHT/gamu/mc2 !m^-2
  kQHX46 := -2.482122917065
  kQHX47 :=  0.0

  QHXh13 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh14 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh15 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh16 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh17 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh18 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh19 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh20 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh21 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh22 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh23 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh24 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh25 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh26 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh27 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh28 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh29 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh30 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh31 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh32 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh33 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh34 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh35 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh36 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh37 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh38 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh39 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh40 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh41 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh42 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh43 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh44 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQDHX,  APER=rQu
  QHXh45 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQFHX,  APER=rQu
  QHXh46 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQHX46, APER=rQu
  QHXh47 : QUAD, TYPE="0.433Q3.1", L=LQu/2, K1=kQHX47, APER=rQu

  luHXU  := 0.026                            !m
  NpHXU  := 129
  LHXUCR := luHXU*NpHXU                      !m
  LHXUe  := (LDUSEGH-LHXUCR)/2               !m
  LHXUh  := LHXUCR/2
  KHXU   := 2.0
  kQHX   := (KHXU*2*pi/luHXU/sqrt(2)/gamu)^2 !m^-2

  UMAHXh : MATR, TYPE="HGVPU26", L=LHXUh,          &
    RM(1,1) =  cos(LHXUh*sqrt(kQHX)),            &
    RM(1,2) =  sin(LHXUh*sqrt(kQHX))/sqrt(kQHX), &
    RM(2,1) = -sin(LHXUh*sqrt(kQHX))*sqrt(kQHX), &
    RM(2,2) =  cos(LHXUh*sqrt(kQHX)),            &
    RM(3,3) = 1.0,                               &
    RM(3,4) = LHXUh,                             &
    RM(4,3) = 0.0,                               &
    RM(4,4) = 1.0,                               &
    RM(5,5) = 1.0,                               &
    RM(6,6) = 1.0

! ------13
  UMAHXh14 : UMAHXh
  UMAHXh15 : UMAHXh
  UMAHXh16 : UMAHXh
  UMAHXh17 : UMAHXh
  UMAHXh18 : UMAHXh
  UMAHXh19 : UMAHXh
  UMAHXh20 : UMAHXh
! ------21
  UMAHXh22 : UMAHXh
  UMAHXh23 : UMAHXh
  UMAHXh24 : UMAHXh
  UMAHXh25 : UMAHXh
  UMAHXh26 : UMAHXh
  UMAHXh27 : UMAHXh
! ------28
  UMAHXh29 : UMAHXh
  UMAHXh30 : UMAHXh
  UMAHXh31 : UMAHXh
  UMAHXh32 : UMAHXh
  UMAHXh33 : UMAHXh
  UMAHXh34 : UMAHXh
  UMAHXh35 : UMAHXh
  UMAHXh36 : UMAHXh
  UMAHXh37 : UMAHXh
  UMAHXh38 : UMAHXh
  UMAHXh39 : UMAHXh
  UMAHXh40 : UMAHXh
  UMAHXh41 : UMAHXh
  UMAHXh42 : UMAHXh
  UMAHXh43 : UMAHXh
  UMAHXh44 : UMAHXh
  UMAHXh45 : UMAHXh
  UMAHXh46 : UMAHXh
  UMAHXh47 : UMAHXh

! ------------------------------------------------------------------------------
! HXR undulator X-steering coils in quads
! ------------------------------------------------------------------------------

  XCHX13 : HKIC, TYPE="type-U"
  XCHX14 : HKIC, TYPE="type-U"
  XCHX15 : HKIC, TYPE="type-U"
  XCHX16 : HKIC, TYPE="type-U"
  XCHX17 : HKIC, TYPE="type-U"
  XCHX18 : HKIC, TYPE="type-U"
  XCHX19 : HKIC, TYPE="type-U"
  XCHX20 : HKIC, TYPE="type-U"
  XCHX21 : HKIC, TYPE="type-U"
  XCHX22 : HKIC, TYPE="type-U"
  XCHX23 : HKIC, TYPE="type-U"
  XCHX24 : HKIC, TYPE="type-U"
  XCHX25 : HKIC, TYPE="type-U"
  XCHX26 : HKIC, TYPE="type-U"
  XCHX27 : HKIC, TYPE="type-U"
  XCHX28 : HKIC, TYPE="type-U"
  XCHX29 : HKIC, TYPE="type-U"
  XCHX30 : HKIC, TYPE="type-U"
  XCHX31 : HKIC, TYPE="type-U"
  XCHX32 : HKIC, TYPE="type-U"
  XCHX33 : HKIC, TYPE="type-U"
  XCHX34 : HKIC, TYPE="type-U"
  XCHX35 : HKIC, TYPE="type-U"
  XCHX36 : HKIC, TYPE="type-U"
  XCHX37 : HKIC, TYPE="type-U"
  XCHX38 : HKIC, TYPE="type-U"
  XCHX39 : HKIC, TYPE="type-U"
  XCHX40 : HKIC, TYPE="type-U"
  XCHX41 : HKIC, TYPE="type-U"
  XCHX42 : HKIC, TYPE="type-U"
  XCHX43 : HKIC, TYPE="type-U"
  XCHX44 : HKIC, TYPE="type-U"
  XCHX45 : HKIC, TYPE="type-U"
  XCHX46 : HKIC, TYPE="type-U"
  XCHX47 : HKIC, TYPE="type-U"

! ------------------------------------------------------------------------------
! HXR undulator Y-steering coils in quads
! ------------------------------------------------------------------------------

  YCHX13 : VKIC, TYPE="type-U"
  YCHX14 : VKIC, TYPE="type-U"
  YCHX15 : VKIC, TYPE="type-U"
  YCHX16 : VKIC, TYPE="type-U"
  YCHX17 : VKIC, TYPE="type-U"
  YCHX18 : VKIC, TYPE="type-U"
  YCHX19 : VKIC, TYPE="type-U"
  YCHX20 : VKIC, TYPE="type-U"
  YCHX21 : VKIC, TYPE="type-U"
  YCHX22 : VKIC, TYPE="type-U"
  YCHX23 : VKIC, TYPE="type-U"
  YCHX24 : VKIC, TYPE="type-U"
  YCHX25 : VKIC, TYPE="type-U"
  YCHX26 : VKIC, TYPE="type-U"
  YCHX27 : VKIC, TYPE="type-U"
  YCHX28 : VKIC, TYPE="type-U"
  YCHX29 : VKIC, TYPE="type-U"
  YCHX30 : VKIC, TYPE="type-U"
  YCHX31 : VKIC, TYPE="type-U"
  YCHX32 : VKIC, TYPE="type-U"
  YCHX33 : VKIC, TYPE="type-U"
  YCHX34 : VKIC, TYPE="type-U"
  YCHX35 : VKIC, TYPE="type-U"
  YCHX36 : VKIC, TYPE="type-U"
  YCHX37 : VKIC, TYPE="type-U"
  YCHX38 : VKIC, TYPE="type-U"
  YCHX39 : VKIC, TYPE="type-U"
  YCHX40 : VKIC, TYPE="type-U"
  YCHX41 : VKIC, TYPE="type-U"
  YCHX42 : VKIC, TYPE="type-U"
  YCHX43 : VKIC, TYPE="type-U"
  YCHX44 : VKIC, TYPE="type-U"
  YCHX45 : VKIC, TYPE="type-U"
  YCHX46 : VKIC, TYPE="type-U"
  YCHX47 : VKIC, TYPE="type-U"

! ------------------------------------------------------------------------------
! HXR undulator X-steering coils in undulator segments
! ------------------------------------------------------------------------------

! ----13
  XCHU14 : HKIC, TYPE="type-V"
  XCHU15 : HKIC, TYPE="type-V"
  XCHU16 : HKIC, TYPE="type-V"
  XCHU17 : HKIC, TYPE="type-V"
  XCHU18 : HKIC, TYPE="type-V"
  XCHU19 : HKIC, TYPE="type-V"
  XCHU20 : HKIC, TYPE="type-V"
! ----21
  XCHU22 : HKIC, TYPE="type-V"
  XCHU23 : HKIC, TYPE="type-V"
  XCHU24 : HKIC, TYPE="type-V"
  XCHU25 : HKIC, TYPE="type-V"
  XCHU26 : HKIC, TYPE="type-V"
  XCHU27 : HKIC, TYPE="type-V"
! ----28
  XCHU29 : HKIC, TYPE="type-V"
  XCHU30 : HKIC, TYPE="type-V"
  XCHU31 : HKIC, TYPE="type-V"
  XCHU32 : HKIC, TYPE="type-V"
  XCHU33 : HKIC, TYPE="type-V"
  XCHU34 : HKIC, TYPE="type-V"
  XCHU35 : HKIC, TYPE="type-V"
  XCHU36 : HKIC, TYPE="type-V"
  XCHU37 : HKIC, TYPE="type-V"
  XCHU38 : HKIC, TYPE="type-V"
  XCHU39 : HKIC, TYPE="type-V"
  XCHU40 : HKIC, TYPE="type-V"
  XCHU41 : HKIC, TYPE="type-V"
  XCHU42 : HKIC, TYPE="type-V"
  XCHU43 : HKIC, TYPE="type-V"
  XCHU44 : HKIC, TYPE="type-V"
  XCHU45 : HKIC, TYPE="type-V"
  XCHU46 : HKIC, TYPE="type-V"
  XCHU47 : HKIC, TYPE="type-V"

! ------------------------------------------------------------------------------
! HXR undulator Y-steering coils in undulator segments
! ------------------------------------------------------------------------------

! ----13
  YCHU14 : VKIC, TYPE="type-V"
  YCHU15 : VKIC, TYPE="type-V"
  YCHU16 : VKIC, TYPE="type-V"
  YCHU17 : VKIC, TYPE="type-V"
  YCHU18 : VKIC, TYPE="type-V"
  YCHU19 : VKIC, TYPE="type-V"
  YCHU20 : VKIC, TYPE="type-V"
! ----21
  YCHU22 : VKIC, TYPE="type-V"
  YCHU23 : VKIC, TYPE="type-V"
  YCHU24 : VKIC, TYPE="type-V"
  YCHU25 : VKIC, TYPE="type-V"
  YCHU26 : VKIC, TYPE="type-V"
  YCHU27 : VKIC, TYPE="type-V"
! ----28
  YCHU29 : VKIC, TYPE="type-V"
  YCHU30 : VKIC, TYPE="type-V"
  YCHU31 : VKIC, TYPE="type-V"
  YCHU32 : VKIC, TYPE="type-V"
  YCHU33 : VKIC, TYPE="type-V"
  YCHU34 : VKIC, TYPE="type-V"
  YCHU35 : VKIC, TYPE="type-V"
  YCHU36 : VKIC, TYPE="type-V"
  YCHU37 : VKIC, TYPE="type-V"
  YCHU38 : VKIC, TYPE="type-V"
  YCHU39 : VKIC, TYPE="type-V"
  YCHU40 : VKIC, TYPE="type-V"
  YCHU41 : VKIC, TYPE="type-V"
  YCHU42 : VKIC, TYPE="type-V"
  YCHU43 : VKIC, TYPE="type-V"
  YCHU44 : VKIC, TYPE="type-V"
  YCHU45 : VKIC, TYPE="type-V"
  YCHU46 : VKIC, TYPE="type-V"
  YCHU47 : VKIC, TYPE="type-V"

! ------------------------------------------------------------------------------
! HXR undulator BPMs
! ------------------------------------------------------------------------------

  RFBHX13 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX14 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX15 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX16 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX17 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX18 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX19 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX20 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX21 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX22 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX23 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX24 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX25 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX26 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX27 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX28 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX29 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX30 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX31 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX32 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX33 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX34 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX35 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX36 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX37 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX38 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX39 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX40 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX41 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX42 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX43 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX44 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX45 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX46 : MONI, L=LRFBub, TYPE="CavityX-1"
  RFBHX47 : MONI, L=LRFBub, TYPE="CavityX-1"
  DRFBH48 : DRIF, L=LRFBub
  DRFBH49 : DRIF, L=LRFBub
  DRFBH50 : DRIF, L=LRFBub
  RFBHX51 : MONI, L=LRFBub, TYPE="CavityX-1"

! ------------------------------------------------------------------------------
! DTHXU = HXU undulator segment small terminations modeled as drift
! ------------------------------------------------------------------------------

  DTHXU : DRIF, L=LHXUe

! ------------------------------------------------------------------------------
! markers
! ------------------------------------------------------------------------------

  HXRSTART : MARK !start of undulator system
  RWWAKE5H : MARK, TYPE="WAKE" !HXR beampipe wake applied here
  HXRTERM  : MARK !end of undulator system

! HXR quadrupole centers

  MUQH13 : MARK
  MUQH14 : MARK
  MUQH15 : MARK
  MUQH16 : MARK
  MUQH17 : MARK
  MUQH18 : MARK
  MUQH19 : MARK
  MUQH20 : MARK
  MUQH21 : MARK
  MUQH22 : MARK
  MUQH23 : MARK
  MUQH24 : MARK
  MUQH25 : MARK
  MUQH26 : MARK
  MUQH27 : MARK
  MUQH28 : MARK
  MUQH29 : MARK
  MUQH30 : MARK
  MUQH31 : MARK
  MUQH32 : MARK
  MUQH33 : MARK
  MUQH34 : MARK
  MUQH35 : MARK
  MUQH36 : MARK
  MUQH37 : MARK
  MUQH38 : MARK
  MUQH39 : MARK
  MUQH40 : MARK
  MUQH41 : MARK
  MUQH42 : MARK
  MUQH43 : MARK
  MUQH44 : MARK
  MUQH45 : MARK
  MUQH46 : MARK
  MUQH47 : MARK

! HXR phase shifter centers

! ----13
  MPHH14 : MARK
  MPHH15 : MARK
  MPHH16 : MARK
  MPHH17 : MARK
  MPHH18 : MARK
  MPHH19 : MARK
  MPHH20 : MARK
! ----21
  MPHH22 : MARK
  MPHH23 : MARK
  MPHH24 : MARK
  MPHH25 : MARK
  MPHH26 : MARK
  MPHH27 : MARK
! ----28
  MPHH29 : MARK
  MPHH30 : MARK
  MPHH31 : MARK
  MPHH32 : MARK
  MPHH33 : MARK
  MPHH34 : MARK
  MPHH35 : MARK
  MPHH36 : MARK
  MPHH37 : MARK
  MPHH38 : MARK
  MPHH39 : MARK
  MPHH40 : MARK
  MPHH41 : MARK
  MPHH42 : MARK
  MPHH43 : MARK
  MPHH44 : MARK
  MPHH45 : MARK
  MPHH46 : MARK

! ------------------------------------------------------------------------------
! HXR undulator phase shifters
! ------------------------------------------------------------------------------

  DPSHX13      : DRIF, L=LPSHX
  PSHXh14_full : LINE=(PSHXh14,MPHH14,PSHXh14)
  PSHXh15_full : LINE=(PSHXh15,MPHH15,PSHXh15)
  PSHXh16_full : LINE=(PSHXh16,MPHH16,PSHXh16)
  PSHXh17_full : LINE=(PSHXh17,MPHH17,PSHXh17)
  PSHXh18_full : LINE=(PSHXh18,MPHH18,PSHXh18)
  PSHXh19_full : LINE=(PSHXh19,MPHH19,PSHXh19)
  PSHXh20_full : LINE=(PSHXh20,MPHH20,PSHXh20)
  DPSHX21      : DRIF, L=LPSHX
  PSHXh22_full : LINE=(PSHXh22,MPHH22,PSHXh22)
  PSHXh23_full : LINE=(PSHXh23,MPHH23,PSHXh23)
  PSHXh24_full : LINE=(PSHXh24,MPHH24,PSHXh24)
  PSHXh25_full : LINE=(PSHXh25,MPHH25,PSHXh25)
  PSHXh26_full : LINE=(PSHXh26,MPHH26,PSHXh26)
  PSHXh27_full : LINE=(PSHXh27,MPHH27,PSHXh27)
  DPSHX28      : DRIF, L=LPSHX
  PSHXh29_full : LINE=(PSHXh29,MPHH29,PSHXh29)
  PSHXh30_full : LINE=(PSHXh30,MPHH30,PSHXh30)
  PSHXh31_full : LINE=(PSHXh31,MPHH31,PSHXh31)
  PSHXh32_full : LINE=(PSHXh32,MPHH32,PSHXh32)
  PSHXh33_full : LINE=(PSHXh33,MPHH33,PSHXh33)
  PSHXh34_full : LINE=(PSHXh34,MPHH34,PSHXh34)
  PSHXh35_full : LINE=(PSHXh35,MPHH35,PSHXh35)
  PSHXh36_full : LINE=(PSHXh36,MPHH36,PSHXh36)
  PSHXh37_full : LINE=(PSHXh37,MPHH37,PSHXh37)
  PSHXh38_full : LINE=(PSHXh38,MPHH38,PSHXh38)
  PSHXh39_full : LINE=(PSHXh39,MPHH39,PSHXh39)
  PSHXh40_full : LINE=(PSHXh40,MPHH40,PSHXh40)
  PSHXh41_full : LINE=(PSHXh41,MPHH41,PSHXh41)
  PSHXh42_full : LINE=(PSHXh42,MPHH42,PSHXh42)
  PSHXh43_full : LINE=(PSHXh43,MPHH43,PSHXh43)
  PSHXh44_full : LINE=(PSHXh44,MPHH44,PSHXh44)
  PSHXh45_full : LINE=(PSHXh45,MPHH45,PSHXh45)
  PSHXh46_full : LINE=(PSHXh46,MPHH46,PSHXh46)
  DPSHX47      : DRIF, L=LPSHX
  DPSHX48      : DRIF, L=LPSHX
  DPSHX49      : DRIF, L=LPSHX
  DPSHX50      : DRIF, L=LPSHX

! ------------------------------------------------------------------------------
! HXR undulator inline vacuum isolation valves (VAT Series 48?)
! ------------------------------------------------------------------------------

  VVHXU14 : MARK
  VVHXU17 : MARK
  VVHXU20 : MARK
  VVHXU22 : MARK
  VVHXU24 : MARK
  VVHXU27 : MARK
  VVHXU29 : MARK
  VVHXU32 : MARK
  VVHXU35 : MARK
  VVHXU37 : MARK
  VVHXU40 : MARK
  VVHXU43 : MARK
  VVHXU45 : MARK

  DVVHXU : DRIF, L=0

! ------------------------------------------------------------------------------
! HXR undulator Beam Loss Monitors (placeholders)
! ------------------------------------------------------------------------------

  MBLMH14 : MARK
  MBLMH16 : MARK
  MBLMH18 : MARK
  MBLMH20 : MARK
  MBLMH22 : MARK
  MBLMH24 : MARK
  MBLMH26 : MARK
! -----28
  MBLMH30 : MARK
  MBLMH32 : MARK
  MBLMH34 : MARK
  MBLMH36 : MARK
  MBLMH38 : MARK
  MBLMH40 : MARK
  MBLMH42 : MARK
  MBLMH44 : MARK
  MBLMH46 : MARK

! ------------------------------------------------------------------------------
! HXRSS self-seeding chicane (LCLSII-3.2-PR-0102-R1)
! ------------------------------------------------------------------------------

! NOTEs:
! - in LCLS: BXHS1-4
! - Bmax = 1.9 kG-m @ 6 A (~24 mm beam offset)
! - use series approximation for sinc(x)=sin(x)/x to allow BLB4=0
! - deflects toward -X (to the right/south/wall)
! - bends away from coil side

! BCXHS1 gets an X-offset of  0    mm (toward the wall)
! BCXHS2 gets an X-offset of -2.39 mm (toward the wall)
! BCXHS3 gets an X-offset of -2.39 mm (toward the wall)
! BCXHS4 gets an X-offset of  0    mm (toward the wall)

  Brho4    := Cb*Eu                             !beam rigidity at chicane (kG-m)
  GB4      := 0.315*in2m                        !full gap height [m]
  ZB4      := 14.315*in2m                       !on-axis effective length is 14" + gap (rule-of-thumb)
  FB4      := 0.5                               !not measured
  AB4      := +3.02786616797E-3*SETHXRSS        !bend angle (rad) for R56=+15.0 um
  BLB4     := Brho4*AB4                         !integrated strength (1.377623 kG-m @ 13.64 GeV)
  AB4_2    := AB4*AB4
  AB4_4    := AB4_2*AB4_2
  AB4_6    := AB4_4*AB4_2
  SINCAB4  := 1-AB4_2/6+AB4_4/120-AB4_6/5040    !~sinc(AB4)=sin(AB4)/AB4
  LB4      := ZB4/SINCAB4                       !chicane bend path length (m)
  AB4s     := ASIN(SIN(AB4)/2)                  !"short" half chicane bend angle (rad)
  AB4s_2   := AB4s*AB4s
  AB4s_4   := AB4s_2*AB4s_2
  AB4s_6   := AB4s_4*AB4s_2
  SINCAB4s := 1-AB4s_2/6+AB4s_4/120-AB4s_6/5040 !~sinc(AB4s)=sin(AB4s)/AB4s
  LB4s     := (ZB4/2)/SINCAB4s                  !"short" half chicane bend path length (m)
  AB4L     := AB4-AB4S                          !"long" half chicane bend angle (rad)
  LB4L     := LB4-LB4S                          !"long" half chicane bend path length (m)

  BCXHS1a : SBEN, TYPE="0.315D14-C", HGAP=GB4/2, L=LB4S, ANGLE=+AB4S, &
                  E1=0, FINT=FB4, FINTX=0
  BCXHS1b : SBEN, TYPE="0.315D14-C", HGAP=GB4/2, L=LB4L, ANGLE=+AB4L, &
                  E2=+AB4, FINT=0, FINTX=FB4
  BCXHS2a : SBEN, TYPE="0.315D14-C", HGAP=GB4/2, L=LB4L, ANGLE=-AB4L, &
                  E1=-AB4, FINT=FB4, FINTX=0
  BCXHS2b : SBEN, TYPE="0.315D14-C", HGAP=GB4/2, L=LB4S, ANGLE=-AB4S, &
                  E2=0, FINT=0, FINTX=FB4
  BCXHS3a : SBEN, TYPE="0.315D14-C", HGAP=GB4/2, L=LB4S, ANGLE=-AB4S, &
                  E1=0, FINT=FB4, FINTX=0
  BCXHS3b : SBEN, TYPE="0.315D14-C", HGAP=GB4/2, L=LB4L, ANGLE=-AB4L, &
                  E2=-AB4, FINT=0, FINTX=FB4
  BCXHS4a : SBEN, TYPE="0.315D14-C", HGAP=GB4/2, L=LB4L, ANGLE=+AB4L, &
                  E1=+AB4, FINT=FB4, FINTX=0
  BCXHS4b : SBEN, TYPE="0.315D14-C", HGAP=GB4/2, L=LB4S, ANGLE=+AB4S, &
                  E2=0, FINT=0, FINTX=FB4

! define unsplit SBENs for BMAD ... not used by MAD

  BCXHS1 : SBEN, TYPE="0.315D14-C", HGAP=GB4/2, L=LB4, ANGLE=+AB4, &
                 E1=0, FINT=FB4, E2=+AB4, FINTX=FB4
  BCXHS2 : SBEN, TYPE="0.315D14-C", HGAP=GB4/2, L=LB4, ANGLE=-AB4, &
                 E1=-AB4, FINT=FB4, E2=0, FINTX=FB4
  BCXHS3 : SBEN, TYPE="0.315D14-C", HGAP=GB4/2, L=LB4, ANGLE=-AB4, &
                 E1=0, FINT=FB4, E2=-AB4, FINTX=FB4
  BCXHS4 : SBEN, TYPE="0.315D14-C", HGAP=GB4/2, L=LB4, ANGLE=+AB4, &
                 E1=+AB4, FINT=FB4, E2=0, FINTX=FB4

 !LHssB2Bo := 0.939 !outer bend center-to-center (PRD Table 3)
 !LHssB2Bi := 0.936 !inner bend center-to-center (PRD Table 3)

  LHssB2Bo := 0.957   !outer bend center-to-center (PRD Table 3)
  LHssB2Bi := 0.936   !inner bend center-to-center (PRD Table 3)

  D1      : DRIF, L=(LHssB2Bo-ZB4)/COS(AB4)
  DCH     : DRIF, L=(LHssB2Bi-ZB4)/2
  DMONO   : DRIF, L=(LDUSEGH-2*LHssB2Bo-LHssB2Bi-ZB4)/2

  HXRSSBEG : MARK
  DIAMOND  : INST
  HXRSSEND : MARK

  BCXHS1_full : LINE=(BCXHS1a,BCXHS1b)
  BCXHS2_full : LINE=(BCXHS2a,BCXHS2b)
  BCXHS3_full : LINE=(BCXHS3a,BCXHS3b)
  BCXHS4_full : LINE=(BCXHS4a,BCXHS4b)

  HCHICANE : LINE=(HXRSSBEG,DMONO,&
    BCXHS1_full,D1,&
    BCXHS2_full,DCH,DIAMOND,DCH,&
    BCXHS3_full,D1,&
    BCXHS4_full,DMONO,HXRSSEND)

! ------------------------------------------------------------------------------
! CBXFEL chicanes (off-project)
! ------------------------------------------------------------------------------

! NOTEs:
! - Bmax = 3.5 kG-m @ 12 A (approximately)
! - Emax = 10.35 GeV for CBXFEL project (8.6 GeV for DBFEL project)
! - use series approximation for sinc(x)=sin(x)/x to allow AB6=0
! - deflects toward +X (to the left/north/aisle)
! - bends toward coil side of C-dipoles
! - use Everson Tesla (ETI) "0.276D14-C" dipoles (356 mm core, 7 mm gap)

  Ecmax  := 10.35        !6.3-10.35 GeV
  Brho6  := Cb*Ecmax     !beam rigidity at CBXFEL chicanes (kG-m)
  BL6max :=  3.5         !kG-m @ ~12 A (measured)
  AB6max := BL6max/Brho6 !rad

  GB6      := 0.007                             !full gap height [m]
  ZB6      := 0.368                             !on-axis effective length (per ETI)
  FB6      := 1.0408                            !measured
  AB6      := +AB6max*SETCBXFEL                 !bend angle (rad)
  AB6_2    := AB6*AB6
  AB6_4    := AB6_2*AB6_2
  AB6_6    := AB6_4*AB6_2
  SINCAB6  := 1-AB6_2/6+AB6_4/120-AB6_6/5040    !~sinc(AB6)=sin(AB6)/AB6
  LB6      := ZB6/SINCAB6                       !chicane bend path length (m)
  AB6s     := ASIN(SIN(AB6)/2)                  !"short" half chicane bend angle (rad)
  AB6s_2   := AB6s*AB6s
  AB6s_4   := AB6s_2*AB6s_2
  AB6s_6   := AB6s_4*AB6s_2
  SINCAB6s := 1-AB6s_2/6+AB6s_4/120-AB6s_6/5040 !~sinc(AB6s)=sin(AB6s)/AB6s
  LB6s     := (ZB6/2)/SINCAB6s                  !"short" half chicane bend path length (m)
  AB6L     := AB6-AB6S                          !"long" half chicane bend angle (rad)
  LB6L     := LB6-LB6S                          !"long" half chicane bend path length (m)

  BCXCBX11a : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6S, ANGLE=-AB6S, &
                    E1=0, FINT=FB6, FINTX=0
  BCXCBX11b : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6L, ANGLE=-AB6L, &
                    E2=-AB6, FINT=0, FINTX=FB6
  BCXCBX12a : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6L, ANGLE=+AB6L, &
                    E1=+AB6, FINT=FB6, FINTX=0
  BCXCBX12b : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6S, ANGLE=+AB6S, &
                    E2=0, FINT=0, FINTX=FB6
  BCXCBX13a : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6S, ANGLE=+AB6S, &
                    E1=0, FINT=FB6, FINTX=0
  BCXCBX13b : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6L, ANGLE=+AB6L, &
                    E2=+AB6, FINT=0, FINTX=FB6
  BCXCBX14a : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6L, ANGLE=-AB6L, &
                    E1=-AB6, FINT=FB6, FINTX=0
  BCXCBX14b : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6S, ANGLE=-AB6S, &
                    E2=0, FINT=0, FINTX=FB6

  BCXCBX21a : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6S, ANGLE=-AB6S, &
                    E1=0, FINT=FB6, FINTX=0
  BCXCBX21b : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6L, ANGLE=-AB6L, &
                    E2=-AB6, FINT=0, FINTX=FB6
  BCXCBX22a : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6L, ANGLE=+AB6L, &
                    E1=+AB6, FINT=FB6, FINTX=0
  BCXCBX22b : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6S, ANGLE=+AB6S, &
                    E2=0, FINT=0, FINTX=FB6
  BCXCBX23a : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6S, ANGLE=+AB6S, &
                    E1=0, FINT=FB6, FINTX=0
  BCXCBX23b : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6L, ANGLE=+AB6L, &
                    E2=+AB6, FINT=0, FINTX=FB6
  BCXCBX24a : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6L, ANGLE=-AB6L, &
                    E1=-AB6, FINT=FB6, FINTX=0
  BCXCBX24b : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6S, ANGLE=-AB6S, &
                    E2=0, FINT=0, FINTX=FB6

! define unsplit SBENs for BMAD ... not used by MAD

  BCXCBX11 : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6, ANGLE=-AB6, &
                   E1=0, FINT=FB6, E2=-AB6, FINTX=FB6
  BCXCBX12 : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6, ANGLE=+AB6, &
                   E1=+AB6, FINT=FB6, E2=0, FINTX=FB6
  BCXCBX13 : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6, ANGLE=+AB6, &
                   E1=0, FINT=FB6, E2=+AB6, FINTX=FB6
  BCXCBX14 : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6, ANGLE=-AB6, &
                   E1=-AB6, FINT=FB6, E2=0, FINTX=FB6

  BCXCBX21 : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6, ANGLE=-AB6, &
                   E1=0, FINT=FB6, E2=-AB6, FINTX=FB6
  BCXCBX22 : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6, ANGLE=+AB6, &
                   E1=+AB6, FINT=FB6, E2=0, FINTX=FB6
  BCXCBX23 : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6, ANGLE=+AB6, &
                   E1=0, FINT=FB6, E2=+AB6, FINTX=FB6
  BCXCBX24 : SBEN, TYPE="0.276D14-C", HGAP=GB6/2, L=LB6, ANGLE=-AB6, &
                   E1=-AB6, FINT=FB6, E2=0, FINTX=FB6

 !Ztotal  := 134.391*in2m  !total system length
 !Zuseg   := 3.372032      !undulator segment length
  ZB2Bo   := 1.23035       !outer bend center-to-center
  ZB2Bi   := 0.535763      !inner bend center-to-center

  ZCBXC1  := 3.504082 !0.1+(D0CB1[L]+ZB6/2+ZB2Bo+ZB2Bi+ZB2Bo+ZB6/2)
  ZCBXC2  := 3.504089 !0.1+(D0CB2[L]+ZB6/2+ZB2Bo+ZB2Bi+ZB2Bo+ZB6/2)

  D0CB1    : DRIF, L=0.264603-(DU1H[L]+DU2H[L]+ZB6/2) !0.26456
  D1CB1    : DRIF, L=(ZB2Bo-ZB6)/COS(AB6)
  D1CB1a   : DRIF, L=(0.656216-ZB6/2)/COS(AB6)
  D1CB1b   : DRIF, L=0.1059/COS(AB6)
  D1CB1c   : DRIF, L=D1CB1[L]-D1CB1a[L]-D1CB1b[L]
  DCHCB1   : DRIF, L=(ZB2Bi-ZB6)/2
  D2CB     : DRIF, L=D1CB1[L]
  D2CBa    : DRIF, L=0.568799
  D2CBa2   : DRIF, L=517.8785-517.8728101
  D2CBa1   : DRIF, L=D2CBa[L]-D2CBa2[L]
  D2CBb    : DRIF, L=D2CB[L]-D2CBa[L]
  D3CB1    : DRIF, L=ZCBXC1-(D0CB1[L]+ZB6/2+ZB2Bo+ZB2Bi+ZB2Bo+ZB6/2)
  DU3hCB1  : DRIF, L=0.203362-D3CB1[L] !2*DU3h[L]+0.133428 ! 0.102780
  DU4hCB1  : DRIF, L=DU4h[L]-0.000176 !-0.025003
  DU5hCB1  : DRIF, L=DU5h[L]+0.000741 !-0.133252 !-0.108382

  D0CB2    : DRIF, L=0.264610-(DU1H[L]+DU2H[L]+ZB6/2) !0.26456
  D1CB2    : DRIF, L=D1CB1[L]
  D1CB2a   : DRIF, L=(0.605122666708-ZB6/2)/COS(AB6)
  D1CB2b   : DRIF, L=0.05019/COS(AB6)
  D1CB2c   : DRIF, L=D1CB2[L]-D1CB2a[L]-D1CB2b[L]
  DCHCB2   : DRIF, L=DCHCB1[L]
  D3CB2    : DRIF, L=ZCBXC2-(D0CB2[L]+ZB6/2+ZB2Bo+ZB2Bi+ZB2Bo+ZB6/2)
  DU3hCB2  : DRIF, L=0.203362-D3CB2[L] !DU3h[L]+0.184427
  DU4hCB2  : DRIF, L=DU4h[L]-0.000176 !-0.025003
  DU5hCB2  : DRIF, L=DU5h[L]+0.000734 !-0.133259 !-0.108382

  HXRCB1BEG : MARK
  MCBX4     : INST !X-ray diamond crystal mirror
  YAGCBX42  : PROF
  CENTER1   : MARK
  PRCBX40   : PROF !Diamond
  BODCBX40  : PROF !Beam Overlap Diagnostic
  HXRCB1END : MARK

  HXRCB2BEG : MARK
  DSSCBX11  : PROF !Diamond scintillator screen
  MCBX1     : INST !X-ray diamond crystal mirror
  CENTER2   : MARK
  HXRCB2END : MARK

  BCXCBX11_full : LINE=(BCXCBX11a,BCXCBX11b)
  BCXCBX12_full : LINE=(BCXCBX12a,BCXCBX12b)
  BCXCBX13_full : LINE=(BCXCBX13a,BCXCBX13b)
  BCXCBX14_full : LINE=(BCXCBX14a,BCXCBX14b)

  BCXCBX21_full : LINE=(BCXCBX21a,BCXCBX21b)
  BCXCBX22_full : LINE=(BCXCBX22a,BCXCBX22b)
  BCXCBX23_full : LINE=(BCXCBX23a,BCXCBX23b)
  BCXCBX24_full : LINE=(BCXCBX24a,BCXCBX24b)

  CBCHICANE1 : LINE=(HXRCB1BEG,D0CB1,&
    BCXCBX11_full,D1CB1a,MCBX4,D1CB1b,YAGCBX42,D1CB1c,&
    BCXCBX12_full,DCHCB1,CENTER1,DCHCB1,&
    BCXCBX13_full,D2CBa1,PRCBX40,D2CBa2,BODCBX40,D2CBb,&
    BCXCBX14_full,D3CB1,HXRCB1END)

  CBCHICANE2 : LINE=(HXRCB2BEG,D0CB2,&
    BCXCBX21_full,D1CB2a,DSSCBX11,D1CB2b,MCBX1,D1CB2c,&
    BCXCBX22_full,DCHCB2,CENTER2,DCHCB2,&
    BCXCBX23_full,D2CB,&
    BCXCBX24_full,D3CB2,HXRCB2END)

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

! DBFEL (install later)

 !ZB3toC1 := 0.32356 !3rd bend center to DBFEL crystal #1
 !ZB3toC4 := 0.77365 !3rd bend center to DBFEL crystal #4

 !D2CBa : DRIF, L=(ZB3toC1-ZB6/2)/COS(AB6)
 !D2CBb : DRIF, L=(ZB3toC4-ZB3toC1)/COS(AB6)
 !D2CBd : DRIF, L=0.0 +dSmdw
 !D2CBc : DRIF, L=D2CB[L]-D2CBa[L]-D2CBb[L]-D2CBd[L]

 !CRYSTAL11 : INST !1.55 mm
 !CRYSTAL12 : INST !1.55 mm
 !CRYSTAL21 : INST !1.55 mm
 !CRYSTAL22 : INST !1.55 mm

! ------------------------------------------------------------------------------
! HXR undulator cells
! ------------------------------------------------------------------------------

! ------13
  UMAHXh14_full : LINE=(UMAHXh14,XCHU14,YCHU14,UMAHXh14)
  UMAHXh15_full : LINE=(UMAHXh15,XCHU15,YCHU15,UMAHXh15)
  UMAHXh16_full : LINE=(UMAHXh16,XCHU16,YCHU16,UMAHXh16)
  UMAHXh17_full : LINE=(UMAHXh17,XCHU17,YCHU17,UMAHXh17)
  UMAHXh18_full : LINE=(UMAHXh18,XCHU18,YCHU18,UMAHXh18)
  UMAHXh19_full : LINE=(UMAHXh19,XCHU19,YCHU19,UMAHXh19)
  UMAHXh20_full : LINE=(UMAHXh20,XCHU20,YCHU20,UMAHXh20)
! ------21
  UMAHXh22_full : LINE=(UMAHXh22,XCHU22,YCHU22,UMAHXh22)
  UMAHXh23_full : LINE=(UMAHXh23,XCHU23,YCHU23,UMAHXh23)
  UMAHXh24_full : LINE=(UMAHXh24,XCHU24,YCHU24,UMAHXh24)
  UMAHXh25_full : LINE=(UMAHXh25,XCHU25,YCHU25,UMAHXh25)
  UMAHXh26_full : LINE=(UMAHXh26,XCHU26,YCHU26,UMAHXh26)
  UMAHXh27_full : LINE=(UMAHXh27,XCHU27,YCHU27,UMAHXh27)
! ------28
  UMAHXh29_full : LINE=(UMAHXh29,XCHU29,YCHU29,UMAHXh29)
  UMAHXh30_full : LINE=(UMAHXh30,XCHU30,YCHU30,UMAHXh30)
  UMAHXh31_full : LINE=(UMAHXh31,XCHU31,YCHU31,UMAHXh31)
  UMAHXh32_full : LINE=(UMAHXh32,XCHU32,YCHU32,UMAHXh32)
  UMAHXh33_full : LINE=(UMAHXh33,XCHU33,YCHU33,UMAHXh33)
  UMAHXh34_full : LINE=(UMAHXh34,XCHU34,YCHU34,UMAHXh34)
  UMAHXh35_full : LINE=(UMAHXh35,XCHU35,YCHU35,UMAHXh35)
  UMAHXh36_full : LINE=(UMAHXh36,XCHU36,YCHU36,UMAHXh36)
  UMAHXh37_full : LINE=(UMAHXh37,XCHU37,YCHU37,UMAHXh37)
  UMAHXh38_full : LINE=(UMAHXh38,XCHU38,YCHU38,UMAHXh38)
  UMAHXh39_full : LINE=(UMAHXh39,XCHU39,YCHU39,UMAHXh39)
  UMAHXh40_full : LINE=(UMAHXh40,XCHU40,YCHU40,UMAHXh40)
  UMAHXh41_full : LINE=(UMAHXh41,XCHU41,YCHU41,UMAHXh41)
  UMAHXh42_full : LINE=(UMAHXh42,XCHU42,YCHU42,UMAHXh42)
  UMAHXh43_full : LINE=(UMAHXh43,XCHU43,YCHU43,UMAHXh43)
  UMAHXh44_full : LINE=(UMAHXh44,XCHU44,YCHU44,UMAHXh44)
  UMAHXh45_full : LINE=(UMAHXh45,XCHU45,YCHU45,UMAHXh45)
  UMAHXh46_full : LINE=(UMAHXh46,XCHU46,YCHU46,UMAHXh46)
  UMAHXh47_full : LINE=(UMAHXh47,XCHU47,YCHU47,UMAHXh47)

  DUSEGH13 : LINE=(CBCHICANE1)
  USEGHX14 : LINE=(DTHXU,UMAHXh14_full,DTHXU)
  USEGHX15 : LINE=(DTHXU,UMAHXh15_full,DTHXU)
  USEGHX16 : LINE=(DTHXU,UMAHXh16_full,DTHXU)
  USEGHX17 : LINE=(DTHXU,UMAHXh17_full,DTHXU)
  USEGHX18 : LINE=(DTHXU,UMAHXh18_full,DTHXU)
  USEGHX19 : LINE=(DTHXU,UMAHXh19_full,DTHXU)
  USEGHX20 : LINE=(DTHXU,UMAHXh20_full,DTHXU)
  DUSEGH21 : LINE=(CBCHICANE2)
  USEGHX22 : LINE=(DTHXU,UMAHXh22_full,DTHXU)
  USEGHX23 : LINE=(DTHXU,UMAHXh23_full,DTHXU)
  USEGHX24 : LINE=(DTHXU,UMAHXh24_full,DTHXU)
  USEGHX25 : LINE=(DTHXU,UMAHXh25_full,DTHXU)
  USEGHX26 : LINE=(DTHXU,UMAHXh26_full,DTHXU)
  USEGHX27 : LINE=(DTHXU,UMAHXh27_full,DTHXU)
  DUSEGH28 : LINE=(HCHICANE)
  USEGHX29 : LINE=(DTHXU,UMAHXh29_full,DTHXU)
  USEGHX30 : LINE=(DTHXU,UMAHXh30_full,DTHXU)
  USEGHX31 : LINE=(DTHXU,UMAHXh31_full,DTHXU)
  USEGHX32 : LINE=(DTHXU,UMAHXh32_full,DTHXU)
  USEGHX33 : LINE=(DTHXU,UMAHXh33_full,DTHXU)
  USEGHX34 : LINE=(DTHXU,UMAHXh34_full,DTHXU)
  USEGHX35 : LINE=(DTHXU,UMAHXh35_full,DTHXU)
  USEGHX36 : LINE=(DTHXU,UMAHXh36_full,DTHXU)
  USEGHX37 : LINE=(DTHXU,UMAHXh37_full,DTHXU)
  USEGHX38 : LINE=(DTHXU,UMAHXh38_full,DTHXU)
  USEGHX39 : LINE=(DTHXU,UMAHXh39_full,DTHXU)
  USEGHX40 : LINE=(DTHXU,UMAHXh40_full,DTHXU)
  USEGHX41 : LINE=(DTHXU,UMAHXh41_full,DTHXU)
  USEGHX42 : LINE=(DTHXU,UMAHXh42_full,DTHXU)
  USEGHX43 : LINE=(DTHXU,UMAHXh43_full,DTHXU)
  USEGHX44 : LINE=(DTHXU,UMAHXh44_full,DTHXU)
  USEGHX45 : LINE=(DTHXU,UMAHXh45_full,DTHXU)
  USEGHX46 : LINE=(DTHXU,UMAHXh46_full,DTHXU)
  USEGHX47 : LINE=(DTHXU,UMAHXh47_full,DTHXU)
  DUSEGH48 : DRIF, L=LDUSEGH
  DUSEGH49 : DRIF, L=LDUSEGH
  DUSEGH50 : DRIF, L=LDUSEGH

  QHXh13_full : LINE=(QHXh13,XCHX13,MUQH13,YCHX13,QHXh13)
  QHXh14_full : LINE=(QHXh14,XCHX14,MUQH14,YCHX14,QHXh14)
  QHXh15_full : LINE=(QHXh15,XCHX15,MUQH15,YCHX15,QHXh15)
  QHXh16_full : LINE=(QHXh16,XCHX16,MUQH16,YCHX16,QHXh16)
  QHXh17_full : LINE=(QHXh17,XCHX17,MUQH17,YCHX17,QHXh17)
  QHXh18_full : LINE=(QHXh18,XCHX18,MUQH18,YCHX18,QHXh18)
  QHXh19_full : LINE=(QHXh19,XCHX19,MUQH19,YCHX19,QHXh19)
  QHXh20_full : LINE=(QHXh20,XCHX20,MUQH20,YCHX20,QHXh20)
  QHXh21_full : LINE=(QHXh21,XCHX21,MUQH21,YCHX21,QHXh21)
  QHXh22_full : LINE=(QHXh22,XCHX22,MUQH22,YCHX22,QHXh22)
  QHXh23_full : LINE=(QHXh23,XCHX23,MUQH23,YCHX23,QHXh23)
  QHXh24_full : LINE=(QHXh24,XCHX24,MUQH24,YCHX24,QHXh24)
  QHXh25_full : LINE=(QHXh25,XCHX25,MUQH25,YCHX25,QHXh25)
  QHXh26_full : LINE=(QHXh26,XCHX26,MUQH26,YCHX26,QHXh26)
  QHXh27_full : LINE=(QHXh27,XCHX27,MUQH27,YCHX27,QHXh27)
  QHXh28_full : LINE=(QHXh28,XCHX28,MUQH28,YCHX28,QHXh28)
  QHXh29_full : LINE=(QHXh29,XCHX29,MUQH29,YCHX29,QHXh29)
  QHXh30_full : LINE=(QHXh30,XCHX30,MUQH30,YCHX30,QHXh30)
  QHXh31_full : LINE=(QHXh31,XCHX31,MUQH31,YCHX31,QHXh31)
  QHXh32_full : LINE=(QHXh32,XCHX32,MUQH32,YCHX32,QHXh32)
  QHXh33_full : LINE=(QHXh33,XCHX33,MUQH33,YCHX33,QHXh33)
  QHXh34_full : LINE=(QHXh34,XCHX34,MUQH34,YCHX34,QHXh34)
  QHXh35_full : LINE=(QHXh35,XCHX35,MUQH35,YCHX35,QHXh35)
  QHXh36_full : LINE=(QHXh36,XCHX36,MUQH36,YCHX36,QHXh36)
  QHXh37_full : LINE=(QHXh37,XCHX37,MUQH37,YCHX37,QHXh37)
  QHXh38_full : LINE=(QHXh38,XCHX38,MUQH38,YCHX38,QHXh38)
  QHXh39_full : LINE=(QHXh39,XCHX39,MUQH39,YCHX39,QHXh39)
  QHXh40_full : LINE=(QHXh40,XCHX40,MUQH40,YCHX40,QHXh40)
  QHXh41_full : LINE=(QHXh41,XCHX41,MUQH41,YCHX41,QHXh41)
  QHXh42_full : LINE=(QHXh42,XCHX42,MUQH42,YCHX42,QHXh42)
  QHXh43_full : LINE=(QHXh43,XCHX43,MUQH43,YCHX43,QHXh43)
  QHXh44_full : LINE=(QHXh44,XCHX44,MUQH44,YCHX44,QHXh44)
  QHXh45_full : LINE=(QHXh45,XCHX45,MUQH45,YCHX45,QHXh45)
  QHXh46_full : LINE=(QHXh46,XCHX46,MUQH46,YCHX46,QHXh46)
  QHXh47_full : LINE=(QHXh47,XCHX47,MUQH47,YCHX47,QHXh47)
  DQHX48      : DRIF, L=LQu
  DQHX49      : DRIF, L=LQu
  DQHX50      : DRIF, L=LQu

  HXBRK13 : LINE=(DU3hCB1,QHXh13_full,&
                  DU4hCB1,RFBHX13,DU5hCB1,DU7h)
  HXBRK14 : LINE=(DU3h,MBLMH14,DU3h,QHXh14_full,DU4h,RFBHX14,DU5h,&
                  PSHXh14_full,DU6h,VVHXU14,DU7h)
  HXBRK15 : LINE=(DU3h,        DU3h,QHXh15_full,DU4h,RFBHX15,DU5h,&
                  PSHXh15_full,DU6h,DVVHXU,DU7h)
  HXBRK16 : LINE=(DU3h,MBLMH16,DU3h,QHXh16_full,DU4h,RFBHX16,DU5h,&
                  PSHXh16_full,DU6h,DVVHXU,DU7h)
  HXBRK17 : LINE=(DU3h,        DU3h,QHXh17_full,DU4h,RFBHX17,DU5h,&
                  PSHXh17_full,DU6h,VVHXU17,DU7h)
  HXBRK18 : LINE=(DU3h,MBLMH18,DU3h,QHXh18_full,DU4h,RFBHX18,DU5h,&
                  PSHXh18_full,DU6h,DVVHXU,DU7h)
  HXBRK19 : LINE=(DU3h,        DU3h,QHXh19_full,DU4h,RFBHX19,DU5h,&
                  PSHXh19_full,DU6h,DVVHXU,DU7h)
  HXBRK20 : LINE=(DU3h,MBLMH20,DU3h,QHXh20_full,DU4h,RFBHX20,DU5h,&
                  PSHXh20_full,DU6h,VVHXU20,DU7h)
  HXBRK21 : LINE=(DU3hCB2,QHXh21_full,&
                  DU4hCB2,RFBHX21,DU5hCB2,DU7h)
  HXBRK22 : LINE=(DU3h,MBLMH22,DU3h,QHXh22_full,DU4h,RFBHX22,DU5h,&
                  PSHXh22_full,DU6h,VVHXU22,DU7h)
  HXBRK23 : LINE=(DU3h,        DU3h,QHXh23_full,DU4h,RFBHX23,DU5h,&
                  PSHXh23_full,DU6h,DVVHXU,DU7h)
  HXBRK24 : LINE=(DU3h,MBLMH24,DU3h,QHXh24_full,DU4h,RFBHX24,DU5h,&
                  PSHXh24_full,DU6h,VVHXU24,DU7h)
  HXBRK25 : LINE=(DU3h,        DU3h,QHXh25_full,DU4h,RFBHX25,DU5h,&
                  PSHXh25_full,DU6h,DVVHXU,DU7h)
  HXBRK26 : LINE=(DU3h,MBLMH26,DU3h,QHXh26_full,DU4h,RFBHX26,DU5h,&
                  PSHXh26_full,DU6h,DVVHXU,DU7h)
  HXBRK27 : LINE=(DU3h,        DU3h,QHXh27_full,DU4h,RFBHX27,DU5h,&
                  PSHXh27_full,DU6h,VVHXU27,DU7h)
  HXBRK28 : LINE=(DU3h,        DU3h,QHXh28_full,DU4h,RFBHX28,DU5h,&
                  DPSHX28     ,DU6h        ,DU7h)
  HXBRK29 : LINE=(DU3h,        DU3h,QHXh29_full,DU4h,RFBHX29,DU5h,&
                  PSHXh29_full,DU6h,VVHXU29,DU7h)
  HXBRK30 : LINE=(DU3h,MBLMH30,DU3h,QHXh30_full,DU4h,RFBHX30,DU5h,&
                  PSHXh30_full,DU6h,DVVHXU,DU7h)
  HXBRK31 : LINE=(DU3h,        DU3h,QHXh31_full,DU4h,RFBHX31,DU5h,&
                  PSHXh31_full,DU6h,DVVHXU,DU7h)
  HXBRK32 : LINE=(DU3h,MBLMH32,DU3h,QHXh32_full,DU4h,RFBHX32,DU5h,&
                  PSHXh32_full,DU6h,VVHXU32,DU7h)
  HXBRK33 : LINE=(DU3h,        DU3h,QHXh33_full,DU4h,RFBHX33,DU5h,&
                  PSHXh33_full,DU6h,DVVHXU,DU7h)
  HXBRK34 : LINE=(DU3h,MBLMH34,DU3h,QHXh34_full,DU4h,RFBHX34,DU5h,&
                  PSHXh34_full,DU6h,DVVHXU,DU7h)
  HXBRK35 : LINE=(DU3h,        DU3h,QHXh35_full,DU4h,RFBHX35,DU5h,&
                  PSHXh35_full,DU6h,VVHXU35,DU7h)
  HXBRK36 : LINE=(DU3h,MBLMH36,DU3h,QHXh36_full,DU4h,RFBHX36,DU5h,&
                  PSHXh36_full,DU6h,DVVHXU,DU7h)
  HXBRK37 : LINE=(DU3h,        DU3h,QHXh37_full,DU4h,RFBHX37,DU5h,&
                  PSHXh37_full,DU6h,VVHXU37,DU7h)
  HXBRK38 : LINE=(DU3h,MBLMH38,DU3h,QHXh38_full,DU4h,RFBHX38,DU5h,&
                  PSHXh38_full,DU6h,DVVHXU,DU7h)
  HXBRK39 : LINE=(DU3h,        DU3h,QHXh39_full,DU4h,RFBHX39,DU5h,&
                  PSHXh39_full,DU6h,DVVHXU,DU7h)
  HXBRK40 : LINE=(DU3h,MBLMH40,DU3h,QHXh40_full,DU4h,RFBHX40,DU5h,&
                  PSHXh40_full,DU6h,VVHXU40,DU7h)
  HXBRK41 : LINE=(DU3h,        DU3h,QHXh41_full,DU4h,RFBHX41,DU5h,&
                  PSHXh41_full,DU6h,DVVHXU,DU7h)
  HXBRK42 : LINE=(DU3h,MBLMH42,DU3h,QHXh42_full,DU4h,RFBHX42,DU5h,&
                  PSHXh42_full,DU6h,DVVHXU,DU7h)
  HXBRK43 : LINE=(DU3h,        DU3h,QHXh43_full,DU4h,RFBHX43,DU5h,&
                  PSHXh43_full,DU6h,VVHXU43,DU7h)
  HXBRK44 : LINE=(DU3h,MBLMH44,DU3h,QHXh44_full,DU4h,RFBHX44,DU5h,&
                  PSHXh44_full,DU6h,DVVHXU,DU7h)
  HXBRK45 : LINE=(DU3h,        DU3h,QHXh45_full,DU4h,RFBHX45,DU5h,&
                  PSHXh45_full,DU6h,VVHXU45,DU7h)
  HXBRK46 : LINE=(DU3h,MBLMH46,DU3h,QHXh46_full,DU4h,RFBHX46,DU5h,&
                  PSHXh46_full,DU6h,DVVHXU,DU7h)
  HXBRK47 : LINE=(DU3h,        DU3h,QHXh47_full,DU4h,RFBHX47,DU5h,&
                  DPSHX47     ,DU6h,DVVHXU,DU7h)
  HXBRK48 : LINE=(DU3h        ,DU3h,DQHX48     ,DU4h,DRFBH48,DU5h,&
                  DPSHX48     ,DU6h        ,DU7h)
  HXBRK49 : LINE=(DU3h        ,DU3h,DQHX49     ,DU4h,DRFBH49,DU5h,&
                  DPSHX49     ,DU6h        ,DU7h)
  HXBRK50 : LINE=(DU3h        ,DU3H,DQHX50     ,DU4h,DRFBH50,DU5h,&
                  DPSHX50     ,DU6h        ,DU7h)

! ------------------------------------------------------------------------------
! HXR cell definitions
! ------------------------------------------------------------------------------

  HXR13BEG : MARK ; HXR13END : MARK
  HXR14BEG : MARK ; HXR14END : MARK
  HXR15BEG : MARK ; HXR15END : MARK
  HXR16BEG : MARK ; HXR16END : MARK
  HXR17BEG : MARK ; HXR17END : MARK
  HXR18BEG : MARK ; HXR18END : MARK
  HXR19BEG : MARK ; HXR19END : MARK
  HXR20BEG : MARK ; HXR20END : MARK
  HXR21BEG : MARK ; HXR21END : MARK
  HXR22BEG : MARK ; HXR22END : MARK
  HXR23BEG : MARK ; HXR23END : MARK
  HXR24BEG : MARK ; HXR24END : MARK
  HXR25BEG : MARK ; HXR25END : MARK
  HXR26BEG : MARK ; HXR26END : MARK
  HXR27BEG : MARK ; HXR27END : MARK
  HXR28BEG : MARK ; HXR28END : MARK
  HXR29BEG : MARK ; HXR29END : MARK
  HXR30BEG : MARK ; HXR30END : MARK
  HXR31BEG : MARK ; HXR31END : MARK
  HXR32BEG : MARK ; HXR32END : MARK
  HXR33BEG : MARK ; HXR33END : MARK
  HXR34BEG : MARK ; HXR34END : MARK
  HXR35BEG : MARK ; HXR35END : MARK
  HXR36BEG : MARK ; HXR36END : MARK
  HXR37BEG : MARK ; HXR37END : MARK
  HXR38BEG : MARK ; HXR38END : MARK
  HXR39BEG : MARK ; HXR39END : MARK
  HXR40BEG : MARK ; HXR40END : MARK
  HXR41BEG : MARK ; HXR41END : MARK
  HXR42BEG : MARK ; HXR42END : MARK
  HXR43BEG : MARK ; HXR43END : MARK
  HXR44BEG : MARK ; HXR44END : MARK
  HXR45BEG : MARK ; HXR45END : MARK
  HXR46BEG : MARK ; HXR46END : MARK
  HXR47BEG : MARK ; HXR47END : MARK
  HXR48BEG : MARK ; HXR48END : MARK
  HXR49BEG : MARK ; HXR49END : MARK
  HXR50BEG : MARK ; HXR50END : MARK

  HXCEL13  : LINE=(HXR13BEG,DU1h,DU2h,DUSEGH13,HXBRK13,HXR13END) !CBCHICANE1+Q+RFBPM
  HXCEL14  : LINE=(HXR14BEG,DU1h,DU2h,USEGHX14,HXBRK14,HXR14END)
  HXCEL15  : LINE=(HXR15BEG,DU1h,DU2h,USEGHX15,HXBRK15,HXR15END)
  HXCEL16  : LINE=(HXR16BEG,DU1h,DU2h,USEGHX16,HXBRK16,HXR16END)
  HXCEL17  : LINE=(HXR17BEG,DU1h,DU2h,USEGHX17,HXBRK17,HXR17END)
  HXCEL18  : LINE=(HXR18BEG,DU1h,DU2h,USEGHX18,HXBRK18,HXR18END)
  HXCEL19  : LINE=(HXR19BEG,DU1h,DU2h,USEGHX19,HXBRK19,HXR19END)
  HXCEL20  : LINE=(HXR20BEG,DU1h,DU2h,USEGHX20,HXBRK20,HXR20END)
  HXCEL21  : LINE=(HXR21BEG,DU1h,DU2h,DUSEGH21,HXBRK21,HXR21END) !CBCHICANE2+Q+RFBPM
  HXCEL22  : LINE=(HXR22BEG,DU1h,DU2h,USEGHX22,HXBRK22,HXR22END)
  HXCEL23  : LINE=(HXR23BEG,DU1h,DU2h,USEGHX23,HXBRK23,HXR23END)
  HXCEL24  : LINE=(HXR24BEG,DU1h,DU2h,USEGHX24,HXBRK24,HXR24END)
  HXCEL25  : LINE=(HXR25BEG,DU1h,DU2h,USEGHX25,HXBRK25,HXR25END)
  HXCEL26  : LINE=(HXR26BEG,DU1h,DU2h,USEGHX26,HXBRK26,HXR26END)
  HXCEL27  : LINE=(HXR27BEG,DU1h,DU2h,USEGHX27,HXBRK27,HXR27END)
  HXCEL28  : LINE=(HXR28BEG,DU1h,DU2h,DUSEGH28,HXBRK28,HXR28END) !HXRSS+Q+RFBPM
  HXCEL29  : LINE=(HXR29BEG,DU1h,DU2h,USEGHX29,HXBRK29,HXR29END)
  HXCEL30  : LINE=(HXR30BEG,DU1h,DU2h,USEGHX30,HXBRK30,HXR30END)
  HXCEL31  : LINE=(HXR31BEG,DU1h,DU2h,USEGHX31,HXBRK31,HXR31END)
  HXCEL32  : LINE=(HXR32BEG,DU1h,DU2h,USEGHX32,HXBRK32,HXR32END)
  HXCEL33  : LINE=(HXR33BEG,DU1h,DU2h,USEGHX33,HXBRK33,HXR33END)
  HXCEL34  : LINE=(HXR34BEG,DU1h,DU2h,USEGHX34,HXBRK34,HXR34END)
  HXCEL35  : LINE=(HXR35BEG,DU1h,DU2h,USEGHX35,HXBRK35,HXR35END)
  HXCEL36  : LINE=(HXR36BEG,DU1h,DU2h,USEGHX36,HXBRK36,HXR36END)
  HXCEL37  : LINE=(HXR37BEG,DU1h,DU2h,USEGHX37,HXBRK37,HXR37END)
  HXCEL38  : LINE=(HXR38BEG,DU1h,DU2h,USEGHX38,HXBRK38,HXR38END)
  HXCEL39  : LINE=(HXR39BEG,DU1h,DU2h,USEGHX39,HXBRK39,HXR39END)
  HXCEL40  : LINE=(HXR40BEG,DU1h,DU2h,USEGHX40,HXBRK40,HXR40END)
  HXCEL41  : LINE=(HXR41BEG,DU1h,DU2h,USEGHX41,HXBRK41,HXR41END)
  HXCEL42  : LINE=(HXR42BEG,DU1h,DU2h,USEGHX42,HXBRK42,HXR42END)
  HXCEL43  : LINE=(HXR43BEG,DU1h,DU2h,USEGHX43,HXBRK43,HXR43END)
  HXCEL44  : LINE=(HXR44BEG,DU1h,DU2h,USEGHX44,HXBRK44,HXR44END)
  HXCEL45  : LINE=(HXR45BEG,DU1h,DU2h,USEGHX45,HXBRK45,HXR45END)
  HXCEL46  : LINE=(HXR46BEG,DU1h,DU2h,USEGHX46,HXBRK46,HXR46END)
  HXCEL47  : LINE=(HXR47BEG,DU1h,DU2h,USEGHX47,HXBRK47,HXR47END) !no phase shifter
  HXCEL48  : LINE=(HXR48BEG,DU1h,DU2h,DUSEGH48,HXBRK48,HXR48END) !empty
  HXCEL49  : LINE=(HXR49BEG,DU1h,DU2h,DUSEGH49,HXBRK49,HXR49END) !empty
  HXCEL50  : LINE=(HXR50BEG,DU1h,DU2h,DUSEGH50,HXBRK50,HXR50END) !empty

  HXRCL    : LINE=(&
    HXCEL13,HXCEL14,HXCEL15,HXCEL16,HXCEL17,HXCEL18,HXCEL19,HXCEL20,&
    HXCEL21,HXCEL22,HXCEL23,HXCEL24,HXCEL25,HXCEL26,HXCEL27,HXCEL28,&
    HXCEL29,HXCEL30,HXCEL31,HXCEL32,HXCEL33,HXCEL34,HXCEL35,HXCEL36,&
    HXCEL37,HXCEL38,HXCEL39,HXCEL40,HXCEL41,HXCEL42,HXCEL43,HXCEL44,&
    HXCEL45,HXCEL46,HXCEL47,HXCEL48,HXCEL49,HXCEL50)

  HXR : LINE=(DU0h,DU8h,HXRSTART,HXRCL,RWWAKE5H,HXRTERM,DUE1a,RFBHX51,DUE1e,&
              ENDUNDH)

! ------------------------------------------------------------------------------
! HXR undulator exit section
! ------------------------------------------------------------------------------

  TCX01 : LCAV, FREQ=XbandF, TYPE="TRANS_DEFL", L=1.0/2 !horizontal deflection
  TCX02 : LCAV, FREQ=XbandF, TYPE="TRANS_DEFL", L=1.0/2 !horizontal deflection

! note: the below K-values are for SC beam; the settings for Cu beam are
! in the "LCLS2cu_main.mad8" file

  KQUE1 :=  0.177882363971 ! 0.178908931125
  KQUE2 := -0.136231234699

  QUE1 : QUAD, TYPE="3.25Q20", L=LQD/2, K1=KQUE1, APER=rQD
  QUE2 : QUAD, TYPE="3.25Q20", L=LQD/2, K1=KQUE2, APER=rQD

  dzHXTES := 0.749541186639E-6 !set MDLWALL at 685 m exactly to align with HXR XTES system

  DUE2c    : DRIF, L=DUE2cb[L]+(LQR-LQD)/2 !0.555
  DUE3a    : DRIF, L=0.375504 +(LQP-LQD)/2 +0.11496 -0.063643
  DUE3b    : DRIF, L=1.2630495 -0.11496 +0.063643
  DBKXDMPH : DRIF, L=LBKXDMP !placeholder for x-kicker in HXR dumpline
  DPCVV    : DRIF, L=0.397
  DVVTCX   : DRIF, L=0.32
  DTCX12   : DRIF, L=0.373/2
  DTCXSP   : DRIF, L=0.381
  DUE4     : DRIF, L=0.394 !DUE4b[L] +(LQR-LQD)/2
  DUE5a    : DRIF, L=0.477799 +(LQP-LQD)/2 +0.012675 -0.063653
  DUE5b    : DRIF, L=0.264 -0.012675 +0.063653
  DUE5c    : DRIF, L=0.2674
  DUE5e    : DRIF, L=0.252825-DUE5d[L]-DUE5f[L]-dzHXTES
  DDLWALL  : DRIF, L=0.250825+dzHXTES !length of dumpline thermal barrier wall

  BPMUE1 : MONI, TYPE="Stripline-13" !RFBUE1 : MONI, TYPE="@2,CavityS-1"
  BPMUE2 : MONI, TYPE="Stripline-13" !RFBUE2 : MONI, TYPE="@2,CavityS-1"

  XCUE2 : HKIC,TYPE="class-4"
  XCD3  : HKIC,TYPE="class-5"

  YCUE1 : VKIC,TYPE="class-4"
  YCD3  : VKIC,TYPE="class-5"

  PCTCX : ECOL, XSIZE=4.5E-3, YSIZE=4.5E-3 !XTCAV photon collimator (9 mm aperture)
  PCPM0 : ECOL, L=LPCPM, XSIZE=17.5E-3, YSIZE=17.5E-3

  PH31   : INST, TYPE="2805 MHz" !post-undulator phase measurement RF cavity (existing LCLS device)
  PH32   : INST, TYPE="2805 MHz" !post-undulator phase measurement RF cavity (existing LCLS device)
  PH33   : INST, TYPE="2604 MHz" !post-undulator phase measurement RF cavity (high rate)
  PH34   : INST, TYPE="2604 MHz" !post-undulator phase measurement RF cavity (high rate)
  TRUE1  : INST, TYPE="@5" !Be foil inserter (THz) -- existing LCLS device
  SPTCX  : INST !XTCAV spoiler
  BTMQUE : INST !Burn-Through-Monitor
  BTM0   : INST !Burn-Through-Monitor behind the PCPM0

  UEbeg   : MARK
  VV36    : MARK !treaty-point vacuum valve just downbeam of undulator
  MIMUNDO : MARK
  VVTCX   : MARK !XTCAV vacuum valve
  MTCX01  : MARK !entrance to TCX01 (for ELEGANT WATCH point)
  MTCX    : MARK !centerline between TCX01 and TCX02 (for matching)
  MIMBCS3 : MARK
  MDLWALL : MARK !front face of dumpline thermal barrier wall
  UEend   : MARK
  DLstart : MARK !start of dumpline
  VV37    : MARK !vac. valve in dumpline

  TCX01_full : LINE=(TCX01,TCX01)
  TCX02_full : LINE=(TCX02,TCX02)

  QUE1_full : LINE=(QUE1,QUE1)
  QUE2_full : LINE=(QUE2,QUE2)

  UNDEXIT : LINE=(BEGDMPH_1,&
      UEbeg,DUE1d,VV36,DUE1b,MIMUNDO,DUE1c,DUE2a,YCUE1,&
      DUE2b,PH31,DUE2d,PH32,DUE2d,PH33,DUE2d,PH34,DUE2e,XCUE2,DUE2c,&
    QUE1_full,DUE3a,BPMUE1,DUE3b,TRUE1,DUE3c,DBKXDMPH,DUE3c,PCTCX,&
      DPCVV,VVTCX,DVVTCX,MTCX01,&
      TCX01_full,DTCX12,MTCX,DTCX12,&
      TCX02_full,DTCXSP,SPTCX,DUE4,&
    QUE2_full,DUE5a,BPMUE2,DUE5b,BTMQUE,DUE5c,PCPM0,DUE5f,BTM0,&
      DUE5d,MIMBCS3,DUE5e,MDLWALL,DDLWALL,UEend,DLstart,DSB0a,YCD3,DSB0b,&
      XCD3,DSB0c,VV37,DSB0d,DSB0e,&
    ENDDMPH_1)

  HXRUND : LINE=(HXR,UNDEXIT)

  RETURN
