  TITLE, "LCLS: LCLS07JAN15 design"

! *** OPTICS=LCLS07JAN15 ***

  OPTION, -INTER, -ECHO, WARN
  ASSIGN, ECHO="LCLS.echo"
  ASSIGN, PRINT="LCLS.print"

! ==============================================================================
! Element naming conventions with the first 1-3 characters meaning:
! ------------------------------------------------------------------------------
! SOL.. = SOLenoid magnet (not fully modeled in this file - zero-length, etc)
! Q.... = Quadrupole magnet (normal quad, and always split into two halves)
! SQ... = Skew-Quadrupole magnet (45-deg rotated quad, always split into two halves)
! CQ... = Correction Quadrupole magnet (nominally set to zero field, always split)
! BX... = Horizontal Bend magnet (always split in two with suffixes "A" and "B")
! BY... = Vertical Bend magnet (always split in two with suffixes "A" and "B")
! WS... = Wire-Scanner transverse beam profile monitor
! PR... = screen-type Profile Monitor (transverse beam profile)
! YAG.. = YAG-screen profile monitor (transverse beam profile)
! BPM.. = Beam Position Monitor (various resolutions, see TYPE=...)
! RFB.. = RF Beam position monitor (<1 micron rms resolution)
! OTR.. = Optical Transition Radiation transverse beam profile monitor
! CTR.. = Coherent Transition Radiation measurement
! XC... = X-Corrector steering dipole
! YC... = Y-Corrector steering dipole
! SC... = Steering Coil package (X- and Y-Corrector dipole set)
! BL... = Bunch Length monitor (various types)
! IM... = Bunch charge (I=current) Monitor (e.g. toroid)
! TD... = Tune-up Dump (insertable copper block to stop beam)
! CE... = Collimator for Energy cuts (adjustable)
! CX... = Collimator for X position cuts (adjustable)
! CY... = Collimator for Y position cuts (adjustable)
! PC... = Protection Collimator (fixed aperture)
! VV... = Vacuum Valve
! FC... = Faraday Cup (measure charge)
! CR... = Cerenkov radiator
! AM... = Alignment Mirror
! PH... = Phase detector
! RST.. = Radiation STopper
! BFW.. = Beam Finder Wire in FEL undulator for segment alignment
! BTM.. = Burn-Through Monitor BCS device
! TR... = Transition radiator
! ==============================================================================

! ==============================================================================
! Modification History
! ------------------------------------------------------------------------------
! 07-JAN-2015, M. Woodley
!  * change TYPE of LI21 XCORs and YCORs to "type-4al"
!  * move WSVM1 downstream of QVM2 ... change name to WSVM2
!  * move XCVM2 upstream between QVM1 and QVM2
!  * new BSY/LTU optics, optimized for WSVM2 quad-scan emittance measurements
!  * fix edge angles of permanent bends in safety dump line
! ------------------------------------------------------------------------------
! 14-NOV-2014, M. Woodley
!  * add XDCXRAY screen in XDC chamber #3 per H. Loos and A. Cedillos
! ------------------------------------------------------------------------------
! 31-OCT-2014, M. Woodley
!  * define "New BSY" optics as default per H. Loos
! 21-OCT-2014, M. Woodley
!  * replace undulator segment US33 with "delta" undulator and phase shifter
!    per A. Cedillos, H-D. Nuhn, and G. Gassner
! 21-AUG-2014, M. Woodley
!  * remove ST0/BTMST0 per K. Fox
!  * add XDC chamber and YAGXRAY per J. Turner and A. Cedillos
!  * add (3) Undulator Hall walls per D. Bruch
!    - UHWALL1 and UHWALL2 are also known as the "thermal barriers"
!    - RWWAKEAl moves ~8 mm u/s (to u/s face of UHWALL1)
!  * add beam phase cavities PH31 and PH32 per J. Turner
!  * move ST1 in the safety dump line d/s per M. Carrasco
!  * add MPS spoiler SP0 u/s of ST1 per M. Carrasco
!  * move BPMUE1 u/s of QUE1 per A. Cedillos
!  * move YCUE2 u/s per A. Cedillos
!  * add new wire scanner WS24 d/s of Q24701B per D. Kharakh
!  * manually merge in "forked" changes from latest checked-in CVS version
! 31-JUL-2014, M. Woodley
!  * add new wire scanner WSVM1 between QVM1 and QVM2 per A. Cedillos
! 29-MAY-2014, M. Woodley
!  * correct BFW-quad separation per H. Loos
!  * add Beam Overlap Diagnostic devices BOD10 and BOD13 per H. Loos
!  * add wire scanners WS35 and WS36 per H. Loos (exact location TBD)
! ------------------------------------------------------------------------------
! 28-MAY-2014, M. Woodley
!    Restore QSM1 (1.259Q3.5) per R. Iverson (exact location TBD)
! ------------------------------------------------------------------------------
! 27-MAR-2014, G. White
!    Reenabled creation of SPEC and GSPEC survey files, required for device maps
! 24-OCT-2013, M. Woodley
!    Remove QSM1 per K. Luchini and H. Loos; add YAGPSI per H. Loos
! 01-OCT-2013, M. Woodley
!    Replace undulator U9 with SXRSS "soft" self-seeding chicane; turn chicane
!    OFF for nominal (13.64 GeV) running
! 01-AUG-2013, M. Woodley
!    Add RF BPM (RFBU34) downstream of RFBU33 per H. Loos and S. Hoobler
! 17-SEP-2012, M. Woodley
!    Remove XCVB2 and set TYPE="type-4" for XCVM2 and XCVM3 per R. Iverson;
!    mods in UNDEXIT line for installation of XTCAVs per P. Krejcik
! 28-NOV-2011, M. Woodley
!    Replace undulator U16 with HXRSS self-seeding chicane; change LI30
!    wraparound quads (QUAD LI30 615 and QUAD LI30 715) to MARKers ... rematch
!    at end of LI30; inventory of BSY devices between Q50Q1 and D10 per visual
!    inspection; merge BSY device locations with SLC and A-line decks
! 29-SEP-2010, M. Woodley
!    Add TR (Transition Radiator) to element naming conventions above
! 28-MAY-2010, M. Woodley
!    Add CQ31 and CQ32 in DL2 (per P. Emma); add TRUE1 Be foil inserter for
!    THz radiation (per H. Loos and D. Rich)
! 04-JAN-2010, M. Woodley
!    Name change: BPM304001T becomes BPMBSY1; add SQ13 in BC1
! 17-MAR-2009, M. Woodley
!    Switch locations of YCUE1 and XCUE1 ... YCUE1 becomes YCUE2 (per P. Emma);
!    change IM61 from INST to MARK (this toroid is no longer used and will now
!    become "non MAD" in the Oracle "Elements" table); measured locations of
!    some LTU/DMP correctors; add WSDL31 and WSDUMP
! 10-OCT-2008, P. Emma
!    Eliminate old "ST1" safety-dump stopper (but keeping a marker there with its
!    empty can) and rename old "ST2" to "ST1".  Note that the new "ST2" (was "ST3")
!    is not in the safety-dump line, but is in the x-ray line.
! 30-SEP-2008, M. Woodley
!    Change all vacuum valves from INST to MARK (these devices will now become
!    "non MAD" in the Oracle "Elements" table); rename "PVALVE" to "VV999";
!    remove references to XRAYBL
! 25-SEP-2008, M. Woodley
!    Change all DBMARKers from INST back to MARK, since MARKs now show up in
!    the Excel SYMBOLS file; change BPMBSY51 (used to be BPM460051T) from MONI
!    to MARK ... the physical device is still there, but it won't be read out
! 18-SEP-2008, M. Woodley
!    For XAL model generation:
!    - split and change names of the 52-line wiggler sections (from B52WIG1-4
!      to B52WIG1A-B, B52WIG2A-B, B52WIG3A-B)
!    - add TILT to definition of SQ01;
!    for SYMBOLS file generation:
!    - add CALL (normally commented out) to makeSymbols.mad
! 18-SEP-2008, M. Woodley
!    Fix structure counts in computation of "gfac3"; fix Q52Q2 (don't divide
!    length by 2, change polarity to "QD")
! 11-SEP-2008, P. Emma
!    Update TWSS0 beta's based on real measurements and re-fit QA01-QE04 for match
!    at OTR2 with laser-heater chicane and undulator ON (BETX=BETY=12 m at HTRUND).
!    All XCs, YCs, and BPMs with "**4600...", "**9200...", and "**9210..." names
!    now changed to "**BSY...".
! 10-SEP-2008, P. Emma
!    Set TDKIK to 24" long (was 0). Also change "I50I1A" to IMBSY34 (TORO CA11 34).
!    Also move a few dumpline components (BPM & corr's) slightly and swap IMDUMP
!    with IMBCS4 per Rago.
! 08-AUG-2008, P. Emma
!    Change names of 6 old BSY BPMs from BPM920020 to BPMBSY61, etc, and 4 old
!    correctors from XC920020T --> XCCA1160, etc.
! 30-JUL-2008, H.-D. Nuhn
!    Adjust z-locations of BFW01-BFW33, QU01-QU33, and BPM01-BPM03 to include
!    precise length measurements. The adjusted lengths are:
!       DF0:   LQu-0.0417  -> LQu-0.04241                ! No quad + correction to maintain symmetry
!       Lbr1:  6.96E-2     -> 6.889E-2                   ! und-seg to quad [m]
!       Lbr3:  9.117E-2    -> 9.111E-2                   ! quad to BPM [m]
!       Lbrwm: 3.6881E-2   -> 7.1683E-2                  ! BFW to radiation monitor [m]
! 13-JUL-2008, P. Emma
!    Set BYD1,2,3 to FINT = 0.57, based on magnetic measurements. Set up L3 MUX
!    to get nearly 45-deg per S28 wire (all new quad settings from QM22 through
!    QVM4).  Update PCMUON ID. Move XCM13/YCM12 center to 14" downstream of QM13
!    center as done in tunnel in July to allow L2 feedback and QM13 quad scans.
!    Change BXH1-4 FINT from 0.5 (guess) to 0.400 (measured) and increase Leff
!    of BXH1-4 from 0.110 m (R. Carr from 2005) to 0.1244 m (measured).
! 25-MAR-2008, H.-D. Nuhn
!    Remove Radiation Monitors (RDM) in the Undulator section. They will be
!    handled as Non-MAD elements.
! 06-MAR-2008, P. Emma
!    Move laser heater components by ~1" adjustments per Joe Steiber and remove
!    YAG04 in prep. for Nov. '08 laser-heater installation.  Matching now done
!    and used here with laser-heater chicane AND undulator ON (FINT=0.5).  Also
!    switch BBh1 fit to use only DL1 at Ei=135 MeV (was L0b,DL1 at 64 MeV).
! 21-FEB-2008, P. Emma
!    Move Q24701B, BPM24701, and BPM24901 based on tunnel tape measurements.
!    (~1" move of Q24701B plus re-fit strength).  Rename sec-28 wires and move
!    RFB08 a bit.  Add and update a few DBMARKers.  Move XCEM4 0.402839 m upstream
!    for Kay Fox.  Change all DBMARKers from MARK to INST so that they show up
!    in the EXCEL symbols file.  Move YCDL1, XCDL3, YCDL3, YCDL4 per K. Fox
!    E-mail of 2/21/08.
! 04-NOV-2007, P. Emma
!    Move CX31, CY32, CX35, CY36, PCTDKIK1, PCTDKIK2, PCTDKIK3, and PCTDKIK4
!    downstream by half their length so that they have the right Z in the EXCEL
!    files.  Also modify LCLS_L3.xsif file (see comments there).
! 21-OCT-2007, P. Emma
!    Locate YC5, XC6, XCA0, and YCA0 properly after installed.  Move components
!    in and around safety dump for J. Langton (new version of XRAYBL file).
! 04-OCT-2007, P. Emma
!    Remove accidental extra YCA0 just after QA0.
! 28-SEP-2007, P. Emma
!    Move many components in the BC2, L3, LTU, and dump areas based on input from
!    R.F. Boyce, P. Cutino, T. Montagne, and J. Langton.  WS21-24 become marker
!    points named DWS21-24 (no longer in baseline design due to money limits).
!    Some components in BC2 are left up to 0.3 mm offset in z (too small for
!    effort). Remove K25_1c, 1d, and K28_5d 10-ft sections (not re-installed
!    anymore - makes 164 10-ft, 25% power sections in L3 rather than 167).
!    Add PH03 and remove MUSPLR.  Added ST1, 2, 3, and severak BTM's plus moved
!    SFTDMP from Z' = 717.514485 m to 719.7361 m.  Also added 52-line optics as
!    another output file.  Also BX21-24 FINT changed from 0.5 to 0.633
!    (measured Sep. 2007).  Also removed (descoped) CX37 and CY38 (now drifts
!    DCX37 & DCY38).  BYKIK becomes two series magnets -> BYKIK1 & BYKIK2.
!    PCTDKIK now in 4 pieces (PCTDKIK1, 2, 3, 4).  CTRWIG, PRXRAY, BYW1, BYW2,
!    and BYW3 all descoped.  Reduced LSPONT from 2.5 m to 1.5 m, removed VV35
!    and replaced with PVALVE (rename to VV35 soon?).  BX21-24 Leff changed from
!    0.540 m to 0.549 m based on magnetic measurements (no z-shifts). Removed
!    PRTDUND (descoped) and set PCMUO to 46" long (was 36" long).
! 07-APR-2007, P. Emma
!    Move a few and add some components in the dump and safety dump for J. Langton.
! 17-MAR-2007, P. Emma
!    Move a few BC2 components for Steve Score (IMBC2I, VV21, BPM24701, QM21, QM22).
!    Set Leff of BYD1-3 to 1.452 m (was 1.399951 m) from J. Tanabe.
! 06-MAR-2007, P. Emma
!    Change 'Q150kG' pole-tip radius to 16 mm (was 11.5 mm).  Changed fit routine
!    "MBChETA" to "USE, (L0b,DL1)".  Was mistakenly (?) set to "USE, DL1", but
!    with TWSS0 (64 MeV).
! 20-FEB-2007, P. Emma
!    BXG bend radius changed from 0.1967 m to 0.1963 m based on magnetic
!    measurements (per D. Dowell - FINAL!).  Refit QG02 & QG03 and move DBMARK81
!    from Z = 2018.712185 m to Z = 2018.712486 m.
! 15-FEB-2007, P. Emma
!    BXG bend radius changed from 0.193188 m to 0.1967 m based on magnetic
!    measurements (per D. Dowell).  Refit QG02 & QG03 and move DBMARK81 from
!    Z = 2018.714822 m to Z = 2018.712185 m.
! 11-FEB-2007, P. Emma
!    BXG effective length changed from 0.2660 to 0.2866 m based on magnetic
!    measurements.  Requires moving bend center a bit and re-fitting QG02-03.
!    This also moves DBMARK81 (BXG entrance) upbeam from Z = 2018.725244 m to
!    Z = 2018.714822 m.  Remove "GTL_ON" flag (no longer used).
! 10-FEB-2007, P. Emma
!    BXG edge angle changed from 26.76 to 24.25 degrees, and FINT from 0.45
!    to 0.492, and BXS edge angle from 7.5 to 7.29 degrees, all based on magnetic
!    measurements. Move XC08/YC08 upbeam by 0.03 m, XCS1/YCS1 upbeam by 0.04 m,
!    XC10/YC10 downbeam by 0.03 m, YC21303 downbeam by 0.1 m, all based on tunnel
!    tape measurements. Change Q150kG quad Leff from 0.300 to 0.316 m (per R. Carr).
!    Adjust zpos of QA11, Q21201, Q21301, QM14, and QM15 per Hans Imfeld
!    list of final (constrained) alignment results (search for "dz_").  Move
!    OTRS1 upbeam 2 cm until more precise number available (no adjustment left).
!    Add DBMARK98 (SDMP) to list of reference points in z.
! 15-DEC-2006, P. Emma
!    Move WS21,22,23 upbeam by 4 feet each to reduce possible quad-reflected dark
!    charge.  Set BXS effective length to 0.5435 m (was 0.5 m) after measurement
!    and re-adjust QS01 and QS02 settings to compensate.
! 14-DEC-2006, H.D. Nuhn
!   Add two inline valves in the undulator line:
!   (1) VVU10 between US09 and US10,
!   (2) VVU25 between US24 and US25.
!   The exact locations are expected to require slight adjustment as
!   the design is finalized.
! 10-DEC-2006, P. Emma
!   Move BXKIK to 25-3d where it will fit after removing the 25-3d RF acc.
!   structure.  Also add OTR22 near BXKIK.  Move XC01/YC01 1/8" (3.175 mm) upbeam.
!   Change BXS FINT from 0.45 to 0.391, based on magnetic measurements (no associated
!   quad setting changes necessary).  Adjust post-BC2 component locations per S. Score.
!   Move BPM2 to 0.892574 m from cathode per K. Fox.  Move (~6 in.) XC24202, YC24203,
!   YC24403, YC24503, YC24603, XC24702 per T. Osier (all in L2-linac file).
! 26-NOV-2006, P. Emma
!   Move nomimal beam waist to between WS02 and OTR2, rather than at WS02, then
!   rematch, which slightly changes many nearby quad settings.  Add BL22. Also
!   reduce effective length of the 12 "Q150kG" quads from 0.46092 m to 0.300 m
!   in prep. for better number (with dLQA2 parameter). Finally, add x-ray
!   beamline input file: XRAYBL.xsif.  Move IMBC2O from QM22 area to upbeam of
!   BXKIK (TCAV3 center still not agreeing with Jose?).
! 01-NOV-2006, H.D. Nuhn
!   Name all 33 undulator segments individually: US01-US33. Use new names
!   GIRD01-GIRD33 and USTBK01-USTBK33 to improve clarity of undulator line.
! 24-OCT-2006, P. Emma
!   Remove QG01 quad from GTL beamline permanently.  Change BX11,12,13,14 FINT
!   from 0.5 to 0.387 (measured).
! 15-OCT-2006, P. Emma
!   Set the new BSY correctors (XC6, YC5, XCA0, and YCA0) to more realistic
!   locations based on Jim Turner's tunnel inspection. Move some BC2 stuff for
!   Steve Score.  Also move WS21,22,23 for Jose Chan.
! 21-SEP-2006, P. Emma
!   Set BX01,02 FINT and FINTX to 0.45 based on mag. measurements (was 0.5).
!   Adjust collimator gaps a bit, including PCPM1,2.  Also move YAG03,04,S1,S2
!   0.323" upstream so that YAG crystal center is defined as the MAD location,
!   not the mirror as before (YAG01,02,G1 are a different design).
! 15-AUG-2006, P. Emma
!   Set BYD1,2,3 full pole gap (hor. in this case) to 43 mm (was 23 mm). Remove
!   IMPM toroid from safety dumpline - not needed.  Set BPMUE1,2,3 res. to 10 um
!   (was 5).  Lengthen BC2 bends from 50 cm to 54 cm (CSR emit increase only 1%),
!   but do not change overall length or R56.  Add VV22 vacuum valve after BC2.
! 07-AUG-2006, M. Woodley
!   Change "DVBm25cm" and "DVBm25cmc" to "DVB25cm" and "DVB25cmc" because of 8
!   character element name limit in skeleton decks (names that are longer than
!   8 characters are OK if they are unique in their first 8 characters ... they
!   will be truncated at 8 characters in the skeleton decks); add new Database
!   MARKer points to delineate skeleton deck boundaries; reinstate LI30
!   wraparound quads (QUAD LI30 615 and QUAD LI30 715) as quadrupoles (NOTE:
!   uses negative drifts!); change "T850034T" to "I50I1A"; eliminate use of MAD
!   element CLASS definitions ("inheritance"); add VALUE commands for MATRIX
!   elements; add SAVELINE commands for use in skeleton deck generation
! 18-JUL-2006, H.D. Nuhn
!   Corrected placement of all undulator break section components. Added marker
!   for radiation monitor. Modified RF BPM to zero length, located at the center
!   of the dipole cavity.
! 16-JUL-2006, P. Emma
!   Move a few components in the VVX2 to BPMM14 region per J. Langton.
! 22-JUN-2006, P. Emma
!   Move OTR11 36 mm downbeam, per J. Langton.  Fix comments in undulator area and
!   prepare for small adjustments of RFBPMs, etc from H.-D. Nuhn (temporarily change
!   RFBPM length from 5 to 4 inches so that "Lbr2s" drift length is > 0). Set
!   energy in safety-dump file to right value, rather than 6 MeV. Also eliminate
!   TD21 (post BC2 dump) as unnecessary.
! 15-MAY-2006, P. Emma
!   Adjust WS01,2,3 positions to match drawings and fix small errors in MAD file,
!   and move BPM10 upbeam ~1 inch to its electrical center (center of strip length),
!   all per R.F. Boyce.  Remove GSDMP (gun-spec. dump) - not a real device.
! 09-MAY-2006, P. Emma
!   Move SOL2 downstream by 3 mm per R.F. Boyce. Move PH02 upbeam by 0.1017 m,
!   XC21302 upbeam by 14.2 mm, BL12 upbeam by 152.4 mm, and YC21303 upbeam by
!   63 mm, all per Joe Steiber.
! 26-APR-2006, P. Emma
!   Move XC04-YC04 and XC05-YC05, per P. Stephens.
! ------------------------------------------------------------------------------
! 23-MAR-2006, P. Emma
!   Remove FCS1 as should have been done last time.  Slide IMBC1O upbeam
!   about 1 inch per Tom Borden. Move SC7, QA01, QA02, PH01, QE03,
!   QE04, IM02, and VV02 per R.F. Boyce (2-inch is maximum move of these).
! 16-MAR-2006, P. Emma
!   Replace laser-heater undulator SBEN's with MATRIX element.  Changes vert.
!   focusing causing QA01/02 25% stringer with much smaller betaY in L0-b.
!   SUM(L) gets 6 microns shorter at BXH4B-exit. Add 4 BCS toroids (IMBCS1,
!   IMBCS2, IMBCS3, IMBCS4). First two are DL2 comparator and 2nd two are
!   main dump comparator. Remove OTRH1,2 until Nov. '07 installation. Add
!   temporary YAG04 (until Nov. '07) very near future OTRH2 location.
!   Change K of Laser-htr und. to 765-nm resonance (was 800 nm). Move SC2
!   to 2.366320 m in SUM(L) from cathode (was 2.65 then 2.5 m but won't fit).
!   Adjust undulator BPMs, BFWs, and quads to Heinz-Deiter's spacing, add
!   XCUn and YCUn (n=1-33) steering coils to each undulator quad center.
!   Adjust undulator quad length from 7.4 cm to 7.8 cm (ESD 1.4-102) keeping
!   all integrated gradients at 3.000 T. Add BL12, ceramic-gap type bunch
!   length moinitor, just after BC1 (per T. Borden). Add PH02 phase monitor
!   cavity after BC1 (per T. Borden). Move XC21302, YC21303, QM14, and QM15
!   per T. Borden, and put BPMM14 inside QM14. Place SCM15 (as XCM14/YCM15)
!   between QM14 and QM15 (were seperate magnets on either side of doublet).
!   Remove PRTD11 (not easily added to old SLC FF TD-23 stopper). Remove
!   RFB01-06 from LTU (ID too small and RFB07-08 do the job). Swap YAGS2
!   and OTRS1 positions and adjust their locations to fit. Add R(5,6) of
!   laser-heater undulator. Swap VV04 & SC8 and tweak Z per Wing. Tweak
!   BPMS3, YAGS2, and OTRS1 positions per Wing. HTRMID renamed to HTRUND.
!   Also moved SC11, SCA11, SCA12, YC21203, and XC21202 in LCLS_L1.xsif per
!   P. Stephens.  Finally, removed VV0A per Leif, and moved YC21303 upbeam
!   of WS13 to make room for McCormick's fast ion chamber in front of TD11.
! 21-FEB-2006, P. Emma
!   TCAV0 flange to flange is 0.6680236 m (was 0.55 m).  Adjust z-pos of
!   BPMS1, IMS1, BPMS3 and XC08/YCO8 per Wing and Cecile. Adjust SC3, YAG03,
!   TCAV0, SC6, and add VV0a, all per P. Stephens. Add BFW's to undulator.
! 11-FEB-2006, P. Emma
!   Change BXS gap to 34 mm for Rago to fit chamber (no X-focus effect).
!   Add serial numbers for Q21201-601 for post-Aug-2006 magnets.  Change
!   BC1 dipole gap (43->43.28 mm).
! 04-FEB-2006, P. Emma
!   Move DL1 and SAB devices per Cecile and Wing and move SOL2-center to
!   171.4 cm downstream of cathode (per Cecile and M. Palrang). Also change
!   BC1 and BC2 dipole gaps (30->43 mm and 25.4->33.35 mm, respectively).
! 25-JAN-2006, P. Emma
!   Move VV03 ~12 cm.
! 17-JAN-2006, P. Emma
!   Fix a few corrector types to be consistemt with PRD 1.1-007-r1 (especially
!   make SC2 type-1s-L0a (0.003 kG-m max.).  Also add HGAPs and edge angles
!   to BXKIK and BYKIK (does nothing but document, since these are off). Loosen
!   HTRMID fit from exactly 10 m BETAX,Y to 8<BETA<12 (better WS02 fit).
! 05-JAN-2006, P. Emma
!   Save KQS01,2 & KQM01,2 settings in comments for OTRS1 3-keV resolution.
!   Move SOL2 center to 1.654 m after cathode (per Cecile) and move SC2 center
!   to 2.650 m after cathode. Splits L0a into 7 segments rather than 6.
!   Replace QE31-36 quads with "ETA" type (were 'QE' type and FFTB b4 that).
! 20-DEC-2005, P. Emma
!   Reverse BXH1 to negative field (& angle), also reversing BXH2,3,4.  This
!   pushes the laser-heater undulator close to the north-east wall of the
!   injector vault, as preferred by Alan Miahnahri. Place CRG1 after YAGG1 (i.e.,
!   switch their order). [Fix OTR11 to type='OTR' on Jan. 02, '06.]. [Make
!   "MUSPLR" an ECOL, as it always should have been, on Jan. 3, '06.]
! 14-DEC-2005, P. Emma
!   Small 135-MeV spectrometer component z adjustments from Wing Ng's list.
! 12-DEC-2005, P. Emma
!   Remove QS03 from 135-MeV spectrometer and shorten system, per Cecile.
!   Also change XC06 & YC06 to class-1t (was 1s by mistake) - changed Dec. 14.
! 10-DEC-2005, P. Emma
!   Move XC21302 & YC21303 to realistic locations around Q21301.
! 08-DEC-2005, P. Emma
!   Move WS11,12,13 farther apart and rematch (improves QM12 y-chromaticity
!   by reducing betaY there - slight increase in QM11 x-chrom.)
! 02-DEC-2005, P. Emma
!   Adjust laser-heater spacings and set dX=35 mm at its chicane center.
! 01-DEC-2005, P. Emma
!   Adjust QE01-QE03 for laser-heater shuffling, including hor. chicane
!   offset from 2.5 cm to 4.0 cm done while sliding BXH1 ansd BXH4 outboard
!   by 10 cm more. Also move ZLIN02 from 2045.365312 to 2045.436400 m
!   (Q21201 moved a bit). Move XC21202 & YC21203 onto end of 21-1d.
! 29-NOV-2005, P. Emma
!   Fix X-band RF split so EXCEL file shows one cavity only (i.e., rename from
!   L1X_A and L1X_B to L1X___1 and L1X___2 - such that 1st 6 characters are
!   idetical as required by Woodley's xtffs2symbols.m code). Add type-4, -5
!   to existing linac correctors (also in L2 & L3 subfiles). Give all QUADs
!   types ("FFTB" -> "0.91Q17.7") and all LCAV's have type ("10ft", "9.4ft",
!   and "DUALFEED"). Add type to BYD1,2,3. Remove BPM7 and YAG04.
! 23-NOV-2005, P. Emma
!   Change QM11,12,13,14,15 to ETA-type quads, rather than QE-types. Was
!   changed in PRD months ago, but somehow I failed to change it here. Adjust
!   component locations in the X-band area per Jose Chan's drawings and
!   add VVX1 and VVX2 around X-band structure. Remove BL31,32,33 (EO &
!   unknown diagnostics).
! 14-NOV-2005, P. Emma
!   Give all undulator quads thir own name (QU01...QU33).  Move TDUND to
!   dwnstr. side of RFB08 to have beam on RFB07 & 08 with TDUND stopper IN.
!   Modify 135-MeV spectrometer to get more x-separation with linac
!   (per Cecile).
! 09-NOV-2005, P. Emma
!   Add YCM11 and use x/y corrector packages for type-1 correctors.
!   Make various small adjustments to elements to be consistent
!   with drawings.  Add IMS1 toroid, YAGS2, and FCS1.
! 19-OCT-2005, P. Emma
!   Correct the lengths of L0-a and L0-b based on Jose's new data.
! 18-OCT-2005, P. Emma
!   Use 3.25Q20 quads for QUE1 and QUE2. Remove BLE02,3 (EO bunch length).
!   Also add QG02/QG03 gun-spectrometer R-matrix fitting.
! 15-OCT-2005, P. Emma
!   Setup file so that we always get output files for all of the branch lines:
!   1) 6-MeV spectrometer (GSPEC-...)
!   2) 135-MeV spectrometer (SPEC-...)
!   3) safety dump line (SFTDMP-...)
!   4) LTU-only (LTU-...)
!   5) entire LCLS to main dump (LCLS...)
! 13-OCT-2005, P. Emma
!   Replace QUE1 and QUE2 with SLC FF Q18 magnets, and QDMP with 3.25Q20 magnets
!   from the FFTB dumpline.  All 3 were Q80kG types which are now not needed.  Also
!   add BPMQd in QDMP quad.  Move YCD3 upbeam a few meters and add XCD3.
! 08-OCT-2005, P. Emma
!   Small location variations of some components in the L0a L0b area per
!   J. Langton and Paul Stephens. Add ZLIN00 ref. at L0-a entr. flange face.
!   BX01/02 gap set to 30 mm, from 35 mm.
! 07-OCT-2005, P. Emma
!   Add gun spectrometer (see GTL_ON) and adjusted L0a,b lengths and GTL
!   positions. Removed BPM1, BPM4, and BPMG2 (can't fit them in, and not needed).
! 25-SEP-2005, P. Emma
!   Add idealized and as-built L1-linac files, the latter to split L1-linac
!   structures to add correctors at proper locations.  The former is used
!   for Elegant tracking where spitting the structures is undesireable. Also
!   add VV21 valve in front of BC2 (added Sep. 27, 2005).
! 24-SEP-2005, P. Emma
!   Adjust safety dump section to show locations of tripped off bends (i.e,
!   (BYD1->DYD1, BYD2->DYD2, BYD3->DYD3), fix LBdm to include curvature,
!   remove PCPM2 from main dump line (should be only in safety dump line),
!   and name lower (main dump branch) aperture of PCPM1 as PCMP1L (lower
!   hole of two-hole collimator on main and safety dump).
! 29-AUG-2005, P. Emma
!   Change BX11,12,13,14 gap to 30 mm (was 1.05 inches).  Updated corrector
!   class table (under 13-JUL-2005) and adjusted class of all XC's and YC's.
!   Also update QS01,2,3 K-values from Cecile.
! 19-AUG-2005, P. Emma
!   Add 135-MeV spectrometer beamline (when BX01 is switched off).  Based
!   on Cecile's "Final_Aug05.MAD" file. Search for DL1_ON to turn on or off
!   the spectrometer.  Also add solenoid bucking coil, SOL1BK.
! 01-AUG-2005, P. Emma
!   Shorten BXH1,2,3,4 bends from 0.126 m to 0.110 m.  Set Q21301 to remnant
!   integrated-gradient of 0.12 kG. Replace QB with a "QE" magnet (water
!   cooled) rather than an "ET" magnet, which could get too hot and change
!   alignment. Finally, adjust 21-1b,c,d z-positions so that their upstream
!   ends are not moved w.r.t. existing locations (~9 mm upstr. shift due to all
!   eyelets being 0.353" upstream of the "division lines" (per P. Stephens).
! 23-JUL-2005, P. Emma
!   Add 9-foot long, 0.4-inch ID muon collimator after TDKIK beam-abort
!   dump in LTU based on Stan Mao's PRD 1.9-100, pg. 9 (May 6, 2004).
! 22-JUL-2005, P. Emma
!   Add back final undulator quadrupole after last segment to facilitate
!   alignment of this last segment. Refit dump area to slightly larger
!   betaX,Y and etaY, but still 1E-5 dE/E & sigE/E resolution.
! 16-JUL-2005, P. Emma
!   Replace Q24701 & 901 with double QE magnets and QM21 & QM22 with FFTB
!   style 46-cm magnets to allow 30-50 GeV SLC operations. Replace QE31-36
!   quads with "QE" type (were FFTB type).
! 15-JUL-2005, P. Emma
!   Replace RFBUE1 & 2 with strip-line BPMs of ID>36 mm (BPMUE1 & 2) to stay
!   clear of x-ray beam. QUE1 & 2 also must have ID>36 mm, so magnet-type was
!   changed for these also, along with QDMP.  Also introduce new LTU magnet
!   types (Q150kG: ID=23 mm, Q80kG: ID=36 mm).
!   Replace QA11 & QA12 with ET quads (were QE's).
! 13-JUL-2005, P. Emma
!   Replace XC21202 (original XCOR) near Q21201 and put back XC21302 and
!   YC21303 which were removed when the 21-2/3a RF sections were removed.
!   Move TCAV3 to 25-2d for better sigZ resolution and adjust MUY in L3 to
!   get back to 270-deg between TCAV3 and OTR30 (plus small MUX L3 tweak
!   to get BX24A -> BX31A = n*360 deg - was 25 deg off?).  Also add QEM3V
!   "1.259Q3.5" injector-type vernier quad near QEM3 for slice emit-meas
!   in the LTU on OTR33.  Also change LCLS corrector types to:
!    class-G: |BL| < 0.0010 kG-m (RF gun area corrector)
!    class-1: |BL| < 0.0060 kG-m (injector corrector)
!    class-4: |BL| < 0.0600 kG-m (nominal linac corrector)
!    class-5: |BL| < 0.1200 kG-m (strong linac corrector)
! 09-JUL-2005, P. Emma
!   Change XCA11,12, YCA11,12 to type-0 (was type-1 due to wrap-around),
!   change YC5,XC6,XCA0 to type-2 (was no type before - don't know why),
!   change XCE31,YCE32,XCE33,YCE34,XCE35,YCE36 to type-1 (was type-2 because
!   type-2 was cut at 0.02 kG-m - 0.025 kG-m cut is better).
! 06-JUL-2005, P. Emma
!   Rename TCAV1 to TCAV0 (in injector) and TCAVH to TCAV3 (in L3). Replace
!   old 0.4-m BYW1,2,3,4 with SLC 3-bend wiggler with two 0.233681-m long
!   magnets and one 0.467362-m long magnet, each seperated by 0.17373 m.
!   Also convert BXKIK and BYKIK to SBEN (from DRIFT) using ANGLE=1E-12
!   so these show up in the EXCEL symbols files as turned off bends.
!   Also remove PCDMP1, which was actually the same as PCPM1 and separate
!   PCPM1 and PCPM2 as far as possible in safety dump. Then set BXPM1,2,3
!   to reduced field with 5.2-cm gaps (rather than 3.81 cm gaps).
! 29-JUN-2005, P. Emma
!   Replace QA11 and QA12 L1-linac quadrupoles with QE-type magnets rather
!   than QA-types.  There are no more QA-types in the LCLS design.
! 27-JUN-2005, P. Emma
!   Update undulator drifts lengths to 0.470 and 0.898 m (short,short,long).
!   Forces "UNDSTOP" to be redefined as "UNDTERM" at slightly new z-location.
! 18-JUN-2005, P. Emma
!   Move L0-a downstream about 8 cm, lengthen L0-a and L0-b due to dual feed
!   modifications, add Cecile's dual-feed "DLFDa" and "DLFDb" marker points,
!   and move components around between L0-a and L0-b.
! 02-JUN-2005, P. Emma
!   Add comment to each fast-feedback corrector and identify loop number.
!   Add spoiler to beam abort system (SBD).
! 31-MAY-2005, P. Emma
!   Adjust QE04 through QM01 section z-locations by a few mm to back out
!   06-MAY-2005 changes and to accomodate new BPM lengths (per Leif and Wing Ng).
! 25-MAY-2005, P. Emma
!   Move entire FEL undulator upstream by 2 m, remove odd break lengths in
!   first 3 breaks, shorten section between end of undulator and start of
!   dump by 5 m, and shorten section between beginning of dump line and
!   dump's vertical bend magnets by 2 m. Also move saftey-dump disaster
!   monitor ("SFTDMP") upstream by 1.5 m to allow room for X-ray PPS stoppers.
!   (Note the reference points named: "UNDBEG","UNDEND", "DMPBEG", and "DUMP"
!   are all removed now, and replaced by "UNDSTART", "UNDSTOP", "DLSTART", and
!   "EOL", with different Z-locations.) Remove 1st QF quad from start of undulator,
!   which requires rematching, forcing the CX37 and CY38 collimators to move.
!   Also, moved the RFB07 to get 3 BPMs in a row over the 7-m drift from the
!   last undulator matching quad to the first undulator segment. Finally, add
!   BXKIK horizontal kicker magnet just downbeam of sec-25 TCAV for off-axis
!   bunch length meas on 25-9 screen.
! 06-MAY-2005, P. Emma
!   Adjust QE04 through QM01 section z-locations by a few mm due to unfortunate
!   adjustments by designers when they changed the length of RST1.
! 04-MAY-2005, P. Emma
!   Reverse the Nov. 05, beta swap by  (approximately) reversing the signs
!   of the 6 quads: QA01-2, and QE01-4, in order to get betaX back to 30 m
!   from 12 m at the L0-b input coupler.  This so we can measure slice
!   x-emittance at WS02 wth QE03.
! 05-APR-2005, P. Emma
!   Change safety dump layout to Saleski's Nov. 10, 2004 layout, including
!   BYPM1-3 becoming BXPM1-3 for horizontal safety bends. PCDMP1 moved ~1 m
!   to be consistent with new PCPM1 location (same collimator body).
! 23-MAR-2005, P. Emma
!   Make TCAV1 and TCAVH into LCAV types, rather than DRIFTs, so that the
!   xtffs2symbols.m program recognizes them and places them in the EXCEL file.
! 21-MAR-2005, P. Emma
!   Move elements around in the QE04-QM01 area by a few cm based on the CAD
!   layout by Wing Ng and Leif Eriksson. Re-fit WS01-03 beta/alpha.
! 01-MAR-2005, P. Emma
!   Set bore radius of Xgamma injector quads to 16 mm (was 13.75 mm), per
!   Schmerge EXCEL list, and also R. Carr vendor bid document.
! 17-FEB-2005, P. Emma
!   Rematch injector to Cecile's new 1-nC Parmela run (not much different)
!   called 'LCLS_end_L0a_nominal.dat'. Remove L0SHIFT and move move L0WAKE
!   to just after L0a and rename it L0aWAKE, since we start tracking at end
!   of L0a now, rather than L0b.
! 03-FEB-2005, P. Emma
!   Use new SPPS-chicane-like tweaker quads ("2.1Q5.87") in BC1 and BC2
!   and adjust the locations of CQ11,12 quads to dZ=0.40005 m from BX11-center
!   to CQ11-center (and from BX14-center to CQ12-center, backwards), for
!   Joe Stieber's BC1 interference problems.  BC2 not engineered yet, but
!   CQ21 and CQ22 now moved to 2-m from outer bends (was asymmetric -
!   see 13-NOV-2001). Move BPM3 upstr. 2 cm (per Cecile). Move S2 upstr.
!   5 mm (per Cecile). Add VV02 and rename old-VV02 and old-VV03 to VV03
!   and VV04 (per Cecile).
! 18-JAN-2005, P. Emma
!   The steering correctors I would like to have well calibrated
!   (in kG-m of integrated dipole field) prior to installation at
!   the level of <1% accuracy, if possible. (sent to Rago in Fall 2004)
!   DL1-Area:   XC05 & YC05
!   BC1-Area:   XCA12 & YCA11
!   BC2-Area:   XC24702 & YC24703
!   LTU-Area:   XCVM2 & YCVM1
! 01-DEC-2004, P. Emma
!    Move BC1-area devices per Bill Brooks list:
!     1) YCM12  relocated downstream to 21.233 m (was  21.055 m)
!     2) XCM13  relocated downstream to 21.904 m (was  21.726 m)
!     3) IMBC1O relocated upstream   to 22.500 m (was  26.576 m)
!     4) OTR12  relocated upstream   to 23.900 m (was  24.195 m)
!     5) XCM14  relocated upstream   to 26.988 m (was  27.242 m)
!     6) YCM15  relocated downstream to 28.000 m (was  27.599 m)
! 22-NOV-2004, P. Emma
!    Move gun/injector devices in z to be consistent with Cecile's list. This
!    moves most devices from the gun solenoid, S1, to BPM5 in quad QA02. Also
!    update "LQx" quad length from 10.7 cm to 10.8 cm, per J. Schmerge.
! 17-NOV-2004, P. Emma
!    Move entire injector beamline 12.100 mm downstream in a parallel direction
!    to the main linac axis.  This because the Q20901 quad (not in this file
!    but used as a tunnel reference) was found to have a MAD-file z-location
!    12.100 mm too far upstream and the injector was already laid out, so we will
!    preserve the 3.428107-m distance between Q20901-center and the point of
!    intersection of the LCLS injector (with BX01 off) with the SLAC linac, by
!    moving the injector beamline 12.100 mm downstream (see ZOFFINJ).
! 04-NOV-2004, P. Emma
!    Set cathode distances to L0-a and L0-b structure centers and the QA01 and
!    QA02 quadrupole centers so that they agree with Cecile's Parmela files.
!      Cathode to L0-a CENTER = 2.925052 m
!      Cathode to QA01 CENTER = 4.652654 m
!      Cathode to QA02 CENTER = 4.957554 m
!      Cathode to L0-b CENTER = 6.866150 m (Cecile's file changed to this L0-b value)
!    Also (approximately) reverse signs of the 6 quads: QA01-2, and QE01-4, in order
!    to get betaX from 30 m down to 12 m at the L0-b input coupler so the RF kick
!    there produces ~6% x-emiitance growth rather than ~15% (according to Cecile).
!    Add L0a 3-m RF section to injector, rather than the 3-m drift that was used.
!    Set laser-heater chicane bends to 12.6 cm (added 2.6 cm) using "dLbh" parameter.
!    Finally, add mid-points to the L0-a and L0-b RF sections to more easily see
!    their (x,y,z) coordinates.
! 21-OCT-2004, P. Emma
!    Set laser-heater chicane dispersion to 2.5 cm (was 2.0 cm) for Roger Carr
!    and Lynn Bentson (QE01-QE04 quads get somewhat weaker). Also update FEL
!    undulator quad effective lengths to 7.4 cm (was 5 cm) and set gradients
!    to 40.54 T/m (was 60 T/m) to keep the 3.0 T integrated gradients.
! 08-OCT-2004, P. Emma
!    Move CQ11 and CQ12 BC1 quads to exact location as in Joe Stieber's drawings
!    (519E-6 m shifts).  Move OTR11, CE11, and BPMS11 (in BC1) to same as Joe's
!    drawings (~few cm shifts) and use same diagnostics package in BC2, but with
!    a short drift preceeding it, which might be changed later.  Also shortened
!    PCMUON from 5 to 3 feet, according to Lew Keller's new design and added
!    Lew's powered magnetic muon spoiler in the saftey-dump line. Add "TILT" to
!    QSM1 (got lost?), since it is a skew-quad (but nominally off). Fixed
!    'LCLS_L3.xsif file', which had typo using K25_2b,c,d where K25_1b,c,d actually
!    are (no actual effect though, since these are identical sections).
! 24-SEP-2004, P. Emma
!    Set final energy to 13.64 GeV for new undulator parameter of K=3.500 and 6.8-mm
!    gap. This puts BC2 energy at 4.300 GeV (from 4.540 GeV), which adds one spare
!    klystron to the L2-linac. L2-phase now -41.4 deg (rather than -40.8 deg) and
!    L3-linac phase now at crest (0 deg rather than -13.6 deg). Also specify half-gap
!    widths for all LTU collimators (lengths already specified). Finally, remove
!    soft-bend in dumpline (replaced with slightly less drift length such that
!    "DUMP" face coordinates remains unchanged - Y & Z).
! 21-SEP-2004, P. Emma
!    Move CQ11 and CQ12 closer together by ~15 cm each (i.e., each ~15-cm farther
!    from their adjacent dipole.  Now each is exactly 30 cm in Z from adjacent dipole.
!    Also calculate BMIN1 based on drift, rather than the reverse.
! 16-SEP-2004, P. Emma
!    Move Q21201 downstream by 0.035512 m for better fit of X-band structure.
!    Move X-band structure upstream by 0.016491 m for Bill Brooks. Move IMBC1I
!    toroid from BX11 face to just 8 cm downstream of Q21201. Move YC21203 and
!    XCM11 to between Q21201 and QM11 as 4-coil combined x/y corrector. Verified
!    all 22 "ZLIN..." markers, from ZLIN01 to "DUMP" - all OK. Remove PRWIG,
!    since it is now called PRXRAY and placed in the Y-wiggler.
! 17-AUG-2004, P. Emma
!    Comment out Z0=-14.101382 survey line because I don't remember what it's for.
!    Turn on realistic L2 and L3 linac XSIF-files, rather than idealized files.
! 13-AUG-2004, P. Emma
!    Move QM11 downstream by 0.1828 m to make a bit more room for the 60-cm
!    X-band structure.
! 22-JUN-2004, P. Emma
!    Change BC1 length for longer central drift to accomodate diagnostics.
!    Joe Steiber says: move BX12 moved -0.165100 m (-6.5") and BX13 moved
!    +0.165100 m (+6.5").  This gives us 0.508584 m (20.023") to work with.
!    This requires a new BC1 bend angle.
! 05-MAY-2004, P. Emma
!    Change QM11, QM12, and QM13 to QE-type quads, rather than 1Q5.6-types and
!    increase surrounding drifts accordingly (0.0481 m quad length difference).
!    This should have been done a few months ago, but somehow got missed. Now
!    there are no more 1Q5.6 quads anywhere in the LCLS. Re-order BC1 and BC2
!    diagnostics BPM, coll, OTR and spread to get 10-cm space between each.
! 04-MAY-2004, P. Emma
!    Add 7 "fixed points" in the LTU/undulator/dump-line area to document precise
!    locations for future beamline comparisons.  These fixed points (as those termed
!    "ZLIN..." in the linac) are to be maintained in X,Y,Z,THETA,PHI, and PSI,
!    unless an intentional change is made and clearly documented in the comments
!    above (and below - see "ZLIN..." section).  ZLIN08a removed since it was no
!    longer in the beamline anywhere.
! 19-APR-2004, P. Emma
!    Adjust matching upbeam and downbeam of BC2 to get slightly better phase advances
!    across WS21-24 wires. Also reversed K1 signs of QM22 and Q24901 quads to get ~30%
!    weaker strengths (were the tightest alignment tol quads in the area).  Finally,
!    slide OTR30 downstream by 4 cm to center it between XCDL3-exit and QDL33-entrance.
!    (Also put MDL2M fitting above ML3DL2 - was above MDL2T).
! 16-APR-2004, P. Emma
!    Re-model FEL undulator with R-matrix to include natural y-focusing and
!    set <beta>=30 m using 60 T/m QF and QD gradients (H.-D. Nuhn). Also add
!    1st three undulator special break lengths, then re-match and save.
!    Change nominal FEL e- energy to 14.077 GeV with K = 3.630 (H.-D. Nuhn).
! 13-APR-2004, P. Emma
!    Undulator "center" is now at 583 m from S100 rather than 532 m.  This also
!    changes "YF" from 0.009755 m to 0.009738 m to get S100 at Y=0 and changes the
!    BY1/BY2 bend angles slightly.  This change should have been made on 08MAR04
!    but was missed.  Also change LTU coordinates print and survey output file names
!    from FFTBLCLS... to LTU-LCLS..., as preferred by T. Montagne.  Also move MVBEND
!    fitting subroutine to just before ML3DL2, rather than just before MUNDP.  Also
!    add S100_HEIGHT to Earth's radius to refine vertical bend determination (added
!    late: April 16, 2004).
! 24-MAR-2004, P. Emma
!    Add one undulator RFBPM just after last undulator segment (not linac
!    responsibility) and set undulator RFBPMs at proper positions rather than
!    in centers of quads.  Move IMUNDO downstream of undulator-exit by ~15 m
!    (was < 1 m) and move dump-system upstream by ~8 m so that VV36 is 404 m
!    downstream of the RSY-wall. Change PCMUON from 4-ft length to 5-ft length.
!    Change BC1-screen to OTR and rename it from PR11 to OTR11.  Make all 11
!    injector quads (E>60 MeV) into "XGamma" type (10.7 cm long).  Add L0b
!    3-m RF section for 64->135 MeV acc. (still ignore L0a), and move TWSS0
!    beam location to L0a-exit (Parmela TWISS output at L0a-exit now).
! 08-MAR-2004, P. Emma
!    Lengthen LTU emittance diagnostic section by ~34 m to get undulator to start
!    at 517 m from S100.  Also add ~40-m undulator exit section with minimal,
!    low-cost elements, to possibly be used as a future undulator extension.
!    Note, S100 to outer face of research-yard (RSY) wall is 935 ft exactly,
!    or 284.988000 m (updated Sep. 29, 2004 -PE).  Also add slice-Y-emit meas
!    OTR33 (renamed old slice-E-spread OTR33 to OTR30).
! 02-MAR-2004, P. Emma
!    Move dump upbeam about 6 m and move final safety permanent magnets
!    downbeam about 20 m and add 2 PC's upbeam of BYPM dipoles.
! 26-FEB-2004, P. Emma, J. Schmerge
!    Rename some injector elements from gun to 21-1b section.
! 23-FEB-2004, P. Emma
!    Shift injector elements around according to Lynn Bentson's changes. These
!    changes are restricted to the area from gun to entrance of L1-linac.
! 22-JAN-2004, P. Emma
!    Redefine staion-100 (S100) as Y=0 as suggested by Catherine LeCocq.
!    Also dump LTU file starting near 50Q1, rather than at 50B1.  Note
!    S100 is 77.643680 m above its local sea level.
! 13-JAN-2004, P. Emma
!    Adjust alignment coordinates of LTU area to Catherine LeCocq's conventions.
!    This sets the station-100 (S100) height at Y=77.643680 m, the pitch at
!    -4.760 mrad (unchanged) and the Earth's mean radius at R=6372.508025 km.
!    These changes slightly adjust the height of the undulator and the angles
!    of the vertical bends (BY1 and BY2).  Also we changed LTU to allow space to
!    keep the existing VAT valve at the start of FFTB/LTU (see below).
!    Added 30 cm between WALL and YCVM1, subtracted 6 cm from the drift between
!    YCVM1 and QVM1, or:
!    Device    Old Coordinate/m  New Coordinate/m
!    YCVM1     176.11            176.41
!    QVM1      176.74            176.98
!    QVM2      177.70            177.94
!    XCVM2     178.18            178.42
!    BV1       178.63            178.87
!    These moves allow us to keep an existing VAT valve at the start of FFTB/LTU.
! 05-JAN-2004, P. Emma
!    Move single beam dumper (BYKIK and TDKIK) from last bend module (DX37-38)
!    into 2nd bend module (DX33-34) so that dump will be inside BSY enclosure
!    where shielding requirements are much easier.  This limits the spontaneuos
!    undulator to <5 m in length (was limited to <12 m).
! 15-DEC-2003, P. Emma
!    Add laser-heater undulator model to include focusing effects - rematch.
! 06-DEC-2003, P. Emma
!    Move correctors, etc. to realistic location in LTU according to Davies
!    list.
! 01-DEC-2003, P. Emma
!    Use effective path length for BX31,32,35,36 bends rather than effective
!    core length (adds 8.3 microns to bend length).  Change optical fitting
!    in DL2 to ignore vertical E-wiggler-chicane (EWIG).  Lengthen heater
!    undulator by 0.025 m for a 10.5 period length (=0.525 m), and re-match.
! 19-NOV-2003, P. Emma
!    Change e- dump for Stan Mao.  Reduce length of powered Y-bends from
!    1.5 m to 1.4 m, use 5-deg total powered-bends with 3 bends rather than
!    4, use 3 perm-magnet bends rather than 2, and re-fit optics.
! 14-NOV-2003, P. Emma
!    SLide BX01/BX02 bends farther apart by 24" total, move QM01,2,3,4 to
!    accomodate this, and fit BETX<1.7 m, BETY<8 m at OTR4 which is now
!    just upbeam of QB.  All this for Lynn Bentson.
! 13-NOV-2003, P. Emma
!    Add Laser-Heater System (LHS), including chicane, between QE02 and QE03.
!    L0-b slides upbeam by 12 cm, QE03-04 slide downbeam ~1.5 m, TCAV fits
!    after LHS, WS01-WS03 separation goes from 4.33 m to 3.9 m (see LWS01_03),
!    QE01-04 quads become 10-cm new-GTF types, OTR3 gone, WS02 does not move.
! 10-NOV-2003, P. Emma
!    Add 8 RF-BPMs ("RFB...") just upstream of 30-m undulator extension. Add
!    5 new toroids ("IM...") just before BX31, just after BX36 (comparator),
!    at TDUND, just after FEL-undulator, and in dump line. Add X-ray stripe
!    vertical chicane and screens for E-spread meas. in LTU. Add EO, OTR, and CTR
!    bunch length monitors just after BX36. Point to possible future spontaneous
!    undulator location in LTU (no real device in baseline for now). Also
!    set LTU coordinates from station-100 (S100) and set vertical bends to get
!    level system at center of FEL-undulator, including 30-m extension (11-Nov-03).
! 04-NOV-2003, P. Emma
!    Update corrector placements in LTU based on simulated steering.
!    Add YCA0 to BSY (near QA0 upstream of WALL), if easy to add.
! 28-OCT-2003, P. Emma
!    Replace old FFTB-DL2 design with much longer LTU (Linac-To-Undulator)
!    beamline, with multiple undulator branch point options.  Also add
!    129-m undulator model with 30-m pre-extension and e- dump line.
!    Change nominal energy at 1.5 Angtsroms to 14.100 GeV with
!    <beta>=25 m in undulator.
! 16-OCT-2003, P. Emma
!    Add a few BPMs in the DL1 area for better steering and move a few
!    DL1 XCORs and YCORs approximately to where Lynn's drawing show them.
!    Also remove CE01 from near QB in DL1.
! 06-OCT-2003, P. Emma, C. Limborg
!    Replace QA01 and QA02 15-cm long L0-quads with two 6-cm long GTF-type
!    quads. Setup matching using initial beta functions at L0a-exit from Cecile.
!    Add to naming convention above: "CX" as x collimator and "CY" as y
!    collimator.
! 16-JUL-2003, P. Emma
!    Improve location of X and Y correctors and BPMs in the DL1, and BC1
!    areas, based on simulated steering.  Only done from QE01 to undulator,
!    not including L0-linac area, and no moves made in BC2 or DL2 areas,
!    but 2 XCOR's and 2 YCOR's removed from centers of BC1 and BC2
!    chicanes, because Elegant steering shows they were not needed, and
!    BPMWIG was added just dnstr of SC-wiggler which has small aperture.
!    NOTE: Do not use XC460034, XC460036, or XC921010, AND YC460035,
!    YC460037, or YC921010 for steering: Get BAD results in Elegant.
! 15-JUL-2003, P. Emma
!    Add QA01 & QA02 quads to injector at 64 MeV point according to Cecile's
!    new 135-MeV injector design.
! 09-JUL-2003, P. Emma
!    Readjust parameters for 135 MeV injector output.  New RF phases, reduced
!    X-band voltage (22->19 MV), X-band phase now at -160 deg, new BC1 & BC2
!    strengths, loosened jitter tolerances, especially for X-band RF phase
!    (was 0.3 deg, now 0.5 deg).  No elements were moved, except 2 quads added
!    in injector at 64 MeV point.  Only operational were parameters changed.
! 10-JUN-2003, P. Emma
!    Move OTR6 close to WS03 (was 1-m dnstr.), rename B1WA... to BW1A...,
!    remove OTR adjacent to OTR4 (was almost identical), add WS04 back near OTR4,
!    SC-wig gap increased by 2 (to 1-in), add PRTD11, PRTD21, PRTD31 screens on
!    TD11, TD21, and TD31, add dump of expected fit-OFF penalty functions, plus
!    clean up and update of fits results.
! 01-MAY-2003, P. Emma
!    Lengthen BC2 bends from 0.4 m to 0.5 m, increase center BC2 drift from 0.5 m
!    to 1 m, and take up this length by reducing the two drifts after B24B. Bend
!    magnet name changes from 1D15.7 to 1D19.7.  Also add MTWSSC fit call in
!    string of fit routines.
! 17-MAR-2003, M. Woodley
!    Shorten DM23B drift length to compensate for fix of 14-AUG-2002; rematch
!    L3 optics; add "instrumentation section" (~31 m long ) comprised of
!    undulator FODO cells immediately upstream of undulator
! 14-AUG-2002, P. Emma
!    Fixed bug where BC2 drifts were LDo?/cos(0), rather than ../cos(AB21);
!    also update settings around BC2 after new fit
! 10-APR-2002, M. Woodley
!    Correct location of 901 quads in LI25-28 (!); change BC2 bends from 1D30.5
!    to 1D15.7; change K21X name to K21_X; remove WS04 (use OTR8); remove WS11
!    (use PR11 OTR); add PR12 OTR in BC1/ED1; remove WS25 (use PR21 OTR);
!    replace WS31 with PR32 OTR; add PR33 OTR in DL2/ED2; add TYPE information
!    for PROFs (PHOSPHOR or OTR) and MONIs (resolution); create seperate
!    (external) input files for L2 and L3 ... one set contains "idealized"
!    layouts with non-split accelerator sections and correctors located at
!    structure entrances, while a second set contains the as-built layouts with
!    split structures, wraparound correctors, etc.
! 14-FEB-2002, M. Woodley
!    Add diagnostics in L0/DL1 area per D. Dowell spreadsheet; run optics such
!    that "sumL" is accumulated distance from cathode
! 15-JAN-2002, M. Woodley
!    For parts list generation: change wire scanners to WIREs; change profile
!    monitors to PROFs; change bunch length monitors to BLMOs; change charge
!    monitors to IMONs; change collimators to RCOLs; change dumps to INSTs;
!    added TYPE="SC_WIGG" to wiggler SBEN definitions; split DW2 in half and
!    added WIGbeg, WIGmid, WIGend MARKers
! 29-NOV-2001, P. Emma
!    New input beam from Cecile with 120 MV/m at gun, 18 MV/m in L0a, and
!    30.5 MV/m in L0b.  Now converging beam at L0-exit.  Beta's in DL1 and
!    BC1 now more like 07-NOV-01, but L1 FODO sign-flipped w.r.t. 07-NOV.
!    Still need better L1-entrance and L2-entrance matching conversion.
! 26-NOV-2001, P. Emma
!    Tweak matching through DL1 and BC1 to reduce CSR?
! 15-NOV-2001, M. Woodley
!    New DL1/injector design: 35 degee off-axis injection, load-lock/gun/L0
!    moved upstream, more space between L0 sections, larger betas at WS02,
!    fewer quads to match through DL1 bend, reverse polarity of L1 quads; add
!    55 cm transverse deflecting structure; rematch to Emma's latest BC1
!    optics
! 13-NOV-2001, P. Emma
!    Move BC2 CQ21 and CQ22 to better locations within BC2 (mostly CQ21 goes
!    4 m past B21 to get bigger etaX/betaX ratio) ... rematch BC2 area
! 07-NOV-2001, P. Emma
!    Move BC2 superconducting wiggler upstream by one quad to get betaX smaller
!    in wiggler (reduces ISR emittance growth, plus allows better BC2 CSR
!    match); make all drifts, which are downstream of and close to bends, of
!    TYPE="CSR"; set MUX from B24 to B31 = 0 for better BC2-DL2 CSR emittance
!    cancellation
! 23-OCT-2001, P. Emma
!    Add a pre-BC2 one-period superconducting wiggler to kill the CSR micro-
!    bunching
! 13-AUG-2001, P. Emma
!    Replace double-chicanes with single, long chicanes to beat high-frequency
!    CSR
! 02-JAN-2001, P. Emma
!    Tweak R56 of BC2-2 from 3.60 mm to 3.55 mm to get 22 um rms final bunch
!    length, rather than 21 um; clean up this file
! 06-DEC-2000, P. Emma
!    Re-match end-of-L0 quads to Patrick's 100000-particle Parmela beta
!    functions ... had to increase drifts between QE01-2,3,4 and reduce BMIN0
!    from 1 m to 0.733855 m (WS02 sig=50 microns now) which moves WS01-2-3
!    closer together accordingly - plus slightly shorter LMED so that length to
!    DL1END is unchanged ... this now allows matching either JR beam or PKR
!    beam
! 25-OCT-2000, P. Emma
!    Tweak basic compression parameters to get more spare klystrons (L1phase
!    from -38.479 deg to -37.824 deg, L2phase from -42.963 to -42.528 deg,
!    R56(BC1) from (24.012+11.500) mm to (24.807+11.900) mm, R56(BC2) from
!    (18.40+3.50) mm to (18.923+3.600) mm ... TRACKED in Elegant: gives 16% CSR
!    emittance growth total
! 22-OCT-2000, M. Woodley
!    Change sign of BC1 and BC2 chicanes (bend away from the aisle); adjust
!    horizontal phase advance of L3 to get 3*360 degrees between last bend
!    of BC2 and center of QL32 in DL2; define CSR drifts for translation to
!    ELEGANT; change "INJ45" back to "DL1"
! 21-OCT-2000, P. Emma
!    Change BC2 beta's to reduce CSR emittance growth (betax=7 m, alphax=-1.1
!    at B28B-exit) and adjust both BC2 chicanes for same total R56, but
!    R56(1)=18.4 mm, R56(2)=3.5 mm (~ 20-OCT values)
! 13-OCT-2000, P. Emma
!    Change BC1 beta's to reduce CSR emittance growth (betax=1.2 m at B18B-exit)
!    and adjust both BC1 chicanes for same total R56, but R56(1)=24.012 mm,
!    R56(2)=11.500 mm; add a few MARKers, like XBEG and XEND
! 10-OCT-2000, M. Woodley
!    Move DL1 line to 3 feet from injector tunnel wall; tweak length and
!    location of X-band section; change BC1 to double chicane system; adjust
!    horizontal phase advance of L2 to get 7*180 degrees between last bend
!    of BC1 and last bend of BC2; add vertical bend system between DL2 dogleg
!    and ED2 emittance diagnostic section to bring beamline level; R56=0
!    optics for DL2 dogleg
! 31-AUG-2000, P. Emma
!    New compression parameters based on optimizer (e.g. sigZ(BC1)=200 um)
! 03-AUG-2000, P. Emma
!    Match injector for Jamie Rosenzweig input beta functions (i.e.
!    "thermal1_jr.sdds"); add X-band to BC1 entrance; re-tune BC1 & BC2 R56 to
!    accomodate different initial beam
! 24-JUL-2000, M. Woodley
!    Verify that all fitting results have been propagated into element
!    definitions; define dummy quads for matching L1/L2/L3 phase advance per
!    cell (coasting)
! 20-JUL-2000, P. Emma
!    Add TCAVPROF screen near H25901; reset R56(BC2-1)=26.0 mm (BB21=10.9.. kG)
! 19-JUL-2000, M. Woodley
!    Remove 25-5a section ... increase gradient on 25-5b; add 8' transverse
!    deflecting cavity at 25-5a for bunch length measurement; adjust phase
!    advance per cell of L3 linac from 30 to 33.4 degrees/cell to get 270
!    degrees of vertical phase advance between the transverse deflecting cavity
!    at 25-5a and PR31 in DL2
! 05-JUL-2000, P. Emma
!    Added 1st-guess zero-length correctors to make ELEGANT steering work;
!    reduce BC2-to-L3 quad strengths to reduce chromatic dilution and rematch;
!    fix effective length of DL1 bends
! 27-APR-2000, M. Woodley
!    From L0 exit to undulator entrance; 45 degree off-axis injection; location
!    of injection line wrt off-axis tunnel per P. Stephens
! ==============================================================================

! initial conditions (exit of L0)

  injdeg := -35.0    !injector bend angle w.r.t. linac [degrees]
  E00    := 0.006    !beam energy after gun (GeV)
  E0i    := 0.064    !beam energy between L0a and L0b sections (GeV)
  Ei     := 0.135    !initial beam energy (GeV) (150->135 MeV on July 9, 2003)
  EBC1   := 0.250    !BC1 energy (GeV)
  EBC2   := 4.300    !BC2 energy (GeV)
  Ef     := 13.640   !final beam energy (GeV)
  EMITXN := 1.00E-06 !normalized horizontal emittance (m)
  EMITYN := 1.00E-06 !normalized vertical emittance (m)
  BLENG  := 0.83E-03 !bunch length (m)
  ESPRD  := 2.00E-05 !slice rms energy spread at 135 MeV (1)
  ZOFFINJ:= 0.012100 !moves entire injector in main-linac z-direction by this amount (+12.100 mm Nov. 17, 2004)

! twiss parameters at L0a-exit:
! (Update these with output at L0a-exit - NOT L0b-exit anymore - March 29, 2004 - PE)

 ! TBETX := 17.239  !twiss beta x (m)  ! OLD - from Cecile's 19 MV/m L0a and 24 MV/m L0b (Oct. 6, 2003)
 ! TALFX := -3.295  !twiss alpha x
 ! TBETY := 17.169  !twiss beta y (m)
 ! TALFY := -3.278  !twiss alpha y

  TBETX :=  1.410  !twiss beta x (m)  ! back-tracked from measured/matched OTR2 through post Aug. 11, 2008 QA01-QE04 real BDES settings
  TALFX := -2.613  !twiss alpha x
  TBETY :=  6.706  !twiss beta y (m)
  TALFY :=  0.506  !twiss alpha y

! Twiss at start of ED2 diagnostic section

  BX1  :=  46.225914269746   !twiss beta x (m)
  AX1  :=  -1.084608324864   !twiss alpha x
  BY1  :=  46.225914304669   !twiss beta y (m)
  AY1  :=   1.084608327766   !twiss alpha y

! Dummy, fitted twiss parameters at cathode which yield the above twiss parameters at
! L0a-exit (for plotting purposes only - assumes only drift between cathode and L0a-exit)

!  CBETX :=  3.844367602819  ! consistent with TWSS0 from Cecile's 19 MV/m L0a and 24 MV/m L0b (Oct. 6, 2003)
!  CALFX :=  3.546536553224
!  CBETY :=  3.824602098386
!  CALFY :=  3.530071369667

  CBETX :=  15.574222013212  ! consistent with back-tracked from matched OTR2 through post Aug. 11, 2008 QA01-QE04 real BDES
  CALFX :=  -3.081460532254
  CBETY :=  0.390930039559
  CALFY :=  0.551432669489E-2

! match into LCLS undulator

  UBETX  := 34.233825931612  ! twiss beta x (m)
  UALFX  :=  1.136104327233  ! twiss alpha x
  UBETY  := 23.966898717584  ! twiss beta y (m)
  UALFY  := -0.797118403589  ! twiss alpha y

! match in LTU (fitted)

  MBETX  := 48.916343743109  !at MM1 twiss beta x (m)
  MALFX  :=  3.142045480135  !at MM1 twiss alpha x
  MBETY  := 96.854994510320  !at MM1 twiss beta y (m)
  MALFY  :=  3.631316672149  !at MM1 twiss alpha y

! Parameters below are used to set LTU Y-bends so that beam is level w.r.t. gravity at center of FEL-undulator, including 30-m extension
  S100_PITCH  := -4.760000E-3                           ! pitch-down angle of linac at station-100 [rad] (0.27272791 deg)
  S100_HEIGHT := 77.643680                              ! station-100 height above local sea level, from Catherine LeCocq, Jan. 22, 2004 [m]
  Z_S100_UNDH := 583.000000                             ! undulator center is defined as 583 m from sta-100 meas. along und. Z-axis (~1/2 und+xtns)
  R_Earth     := 6.372508025E6                          ! total radius of Earth (gaussain sphere) from Catherine LeCocq, Jan. 2004 [m]

  VALUE, S100_PITCH,S100_HEIGHT,Z_S100_UNDH,R_Earth

! set up TWSS0, TWSSC, and TWSSU

  TWSSC : BETA0, ENERGY=E00, BETX=CBETX, ALFX=CALFX, BETY=CBETY, ALFY=CALFY
  TWSS0 : BETA0, ENERGY=E0i, BETX=TBETX, ALFX=TALFX, BETY=TBETY, ALFY=TALFY
  TWSSM : BETA0, ENERGY=Ef , BETX=MBETX, ALFX=MALFX, BETY=MBETY, ALFY=MALFY
  TWSSU : BETA0, ENERGY=Ef , BETX=UBETX, ALFX=UALFX, BETY=UBETY, ALFY=UALFY

! construct input beam matrix

  EMITX := EMITXN/(TWSS0[ENERGY]/EMASS)
  EMITY := EMITYN/(TWSS0[ENERGY]/EMASS)
  TGAMX := (1+TWSS0[ALFX]*TWSS0[ALFX])/TWSS0[BETX]
  TGAMY := (1+TWSS0[ALFY]*TWSS0[ALFY])/TWSS0[BETY]
  SIG11 := EMITX*TWSS0[BETX]
  SIG21 := -EMITX*TWSS0[ALFX]
  SIG22 := EMITX*TGAMX
  SIG33 := EMITY*TWSS0[BETY]
  SIG43 := -EMITY*TWSS0[ALFY]
  SIG44 := EMITY*TGAMY
  C21   := SIG21/SQRT(SIG11*SIG22)
  C43   := SIG43/SQRT(SIG33*SIG44)

  SIG0  : SIGMA0, SIGX=SQRT(SIG11), SIGPX=SQRT(SIG22), R21=C21, &
                  SIGY=SQRT(SIG33), SIGPY=SQRT(SIG44), R43=C43, &
                  SIGT=BLENG,       SIGPT=ESPRD

  CGAMX  := (1+TWSSC[ALFX]*TWSSC[ALFX])/TWSSC[BETX]
  CGAMY  := (1+TWSSC[ALFY]*TWSSC[ALFY])/TWSSC[BETY]
  SIG11C := EMITX*TWSSC[BETX]
  SIG21C := -EMITX*TWSSC[ALFX]
  SIG22C := EMITX*CGAMX
  SIG33C := EMITY*TWSSC[BETY]
  SIG43C := -EMITY*TWSSC[ALFY]
  SIG44C := EMITY*CGAMY
  C21C   := SIG21C/SQRT(SIG11C*SIG22C)
  C43C   := SIG43C/SQRT(SIG33C*SIG44C)

  SIGC  : SIGMA0, SIGX=SQRT(SIG11C), SIGPX=SQRT(SIG22C), R21=C21C, &
                  SIGY=SQRT(SIG33C), SIGPY=SQRT(SIG44C), R43=C43C, &
                  SIGT=BLENG,        SIGPT=ESPRD

  BEAM, PARTICLE=ELECTRON, ENERGY=TWSSC[ENERGY], EX=EMITX, EY=EMITY, &
        SIGT=BLENG, SIGE=ESPRD

! conversion factors

  Cb      : CONSTANT=1.0E10/CLIGHT !energy to magnetic rigidity
  GeV2MeV : CONSTANT=1000.0        !GeV to MeV
  in2m    : CONSTANT=0.0254        !inches to meters
  mc2     : CONSTANT=510.99906E-6  !e- rest mass [GeV]

! Database MARKer points

  DBMARK80 : MARK !(LCLS GUN) RF gun cathode
  DBMARK81 : MARK !(BXG_entr) entrance of BXG
  DBMARK97 : MARK !(GUNSPECT) 6 MeV gun spectrometer dump
  DBMARK82 : MARK !(BX01entr) entrance of BX01
  DBMARK98 : MARK !(135SPECT) 135-MeV spect. dump
  DBMARK83 : MARK !(BX02exit) exit of BX02 ... LCLS injection point
  DBMARK28 : MARK !(QM15exit) exit of QM15 ... just after TD11
  DBMARK29 : MARK !(LI30 FV2) LI30 fast valve 2 ... start of BSY
  DBMARK14 : MARK !(50B1BEND) entrance of 50B1
  DBMARK33 : MARK !(SWIVEL  ) SLC "swivel point"
  DBMARK99 : MARK !(52-SL2  ) 52 SL2
  DBMARK34 : MARK !(BX31entr) entrance of BX31
  DBMARK36 : MARK !(WS31    ) center of WS31
  DBMARK37 : MARK !(endUNMCH) end of undulator match
  DBMARK38 : MARK !(UND_DUMP) final undulator dump

! ==============================================================================
! Longitudinal misalignments observed after installation and difficult to fix:
! Added to MAD file (but not drawings) so that optics comes out right (1/11/07).
! ------------------------------------------------------------------------------

  dz_QA11   := 3.42E-3    !quad is too far downstream when dz>0
  dz_Q21201 :=-2.39E-3    !quad is too far downstream when dz>0
  dz_Q21301 := 5.73E-3    !quad is too far downstream when dz>0
  dz_QM14   := 2.17E-3    !quad is too far downstream when dz>0
  dz_QM15   := 2.48E-3    !quad is too far downstream when dz>0

! ==============================================================================
! QUADs
! ------------------------------------------------------------------------------

! global QUAD parameters

  LQc := 0.1080         !eff. length of Everson-Tesla big-bore (ETB) quad [ETB: 2.5-kG GDLmax] (m)
  rQc := 0.0300         !pole-tip radius of Everson-Tesla big-bore (ETB) quad (m)
  LQE := 0.1068         !QE effective length (m)
  rQE := (1.085*in2m)/2 !QE pole-tip radius (m)
  LQx := 0.1080         !Everson-Tesla (ET) quads "1.259Q3.5" effective length (m)
  rQx := 0.01600        !Everson-Tesla (ET) quads "1.259Q3.5" pole-tip radius (m)
  LQF := 0.46092        !FFTB (0.91Q17.72) effective length (m)
  rQF := 0.023/2        !FFTB (0.91Q17.72) pole-tip radius (m)
  LQA := 0.31600        !Q150kG effective length [not known yet] (m)
  rQA := 0.016          !Q150kG pole-tip radius (m)
  LQD := 0.550          !FFTB dump quad (3.25Q20) effective length (m)
  rQD := (3.25*in2m)/2  !FFTB dump quad (3.25Q20) pole-tip radius (m)

  dLQA2 := (0.46092 - LQA)/2        !used to adjust LQA adjacent drifts (m)

! global LCAV parameters

  SbandF := 2856.0    !rf frequency (MHz)
  XbandF := SbandF*4  !X-band rf frequency (MHz)
  DLWLX  := 0.5948    !Xband structure length from input-coupler center to output-coupler center, each with tooling balls (m)

  DLWL10 := 3.0441    !"10  ft" (29 Sband wavelengths; 87 DLWG cavities)
  DLWL9  := 2.8692    !"9.41 ft" (27 1/3 Sband wavelengths; 82 DLWG cavities)
  DLWL7  := 2.1694    !"7   ft" (20 2/3 Sband wavelengths; 62 DLWG cavities)
  P25    := 1         !25% power factor
  P50    := SQRT(2)   !50% power factor

! L0 energy profile (model the one 3-m L0b section only)

  L0phase  := -1.1              !L0b S-band rf phase (deg)
  dEL0a    := GeV2MeV*(E0i-E00) !total L0a energy gain (MeV)
  dEL0b    := GeV2MeV*(Ei-E0i)  !total L0b energy gain (MeV)
  PhiL0    := L0phase/360       !radians/2pi
!  gfac0    := 3.130139          ! flange-to-flange length of dual-feed L0-a and L0-b RF structures [m]
  gfac0    := 3.095244          ! flange-to-flange length (121.86" Oct. 18, '05) of dual-feed L0-a and L0-b RF structures [m]
  gradL0a  := dEL0a/(gfac0*COS(PhiL0*TWOPI))
  gradL0b  := dEL0b/(gfac0*COS(PhiL0*TWOPI))

! L1 energy profile

  L1phase  := -25.1             !L1 S-band rf phase (deg)
  L1Xphase :=-160.0             !L1 X-band rf phase (deg)
  dEL1     := GeV2MeV*(EBC1-Ei) !total L1 energy gain (MeV)
  dEL1X    := 19.0              !L1 X-band amplitude (MeV)
  PhiL1    := L1phase/360       !radians/2pi
  PhiL1X   := L1Xphase/360      !radians/2pi
  gfac1    := P50*DLWL9+P25*DLWL9+P25*DLWL10
  gradL1   := (dEL1-dEL1X*COS(PhiL1X*TWOPI))/(gfac1*COS(PhiL1*TWOPI))
  VALUE, gradL1

! L2 energy profile

  L2phase := -41.4               !L2 rf phase (deg)
  dEL2    := GeV2MeV*(EBC2-EBC1) !total L2 energy gain (MeV)
  PhiL2   := L2phase/360         !radians/2pi
  gfac2   := 110*P25*DLWL10+1*P50*DLWL10
  gradL2  := dEL2/(gfac2*COS(PhiL2*TWOPI))
  VALUE, gradL2

! L3 energy profile

  L3phase := 0.0               !L3 rf phase (deg)
  dEL3    := GeV2MeV*(Ef-EBC2) !total L3 energy gain (MeV)
  PhiL3   := L3phase/360       !radians/2pi
  gfac3   := 161*P25*DLWL10 + 12*P50*DLWL10 + 3*P25*DLWL9 + 4*P25*DLWL7
  gradL3  := dEL3/(gfac3*COS(PhiL3*TWOPI))
  VALUE, gradL3

  L1X___1 : LCAV, TYPE="X1_Xband", FREQ=XbandF, L=DLWLX/2,  &
                  DELTAE=dEL1X/2 , PHI0=PhiL1X
  L1X___2 : LCAV, TYPE="X1_Xband", FREQ=XbandF, L=DLWLX/2,  &
                  DELTAE=dEL1X/2 , PHI0=PhiL1X

! L0 sections

  L0a___1 : LCAV, TYPE="DUALFEED",  FREQ=SbandF, L=0.0586460,  &
                   DELTAE=gradL0a*0.0586460,  PHI0=PhiL0
  L0a___2 : LCAV, TYPE="DUALFEED",  FREQ=SbandF, L=0.1993540,  &
                   DELTAE=gradL0a*0.1993540,  PHI0=PhiL0
  L0a___3 : LCAV, TYPE="DUALFEED",  FREQ=SbandF, L=0.6493198,  &
                   DELTAE=gradL0a*0.6493198,  PHI0=PhiL0
  L0a___4 : LCAV, TYPE="DUALFEED",  FREQ=SbandF, L=0.6403022,  &
                   DELTAE=gradL0a*0.6403022,  PHI0=PhiL0
  L0a___5 : LCAV, TYPE="DUALFEED",  FREQ=SbandF, L=1.1518464,  &
                   DELTAE=gradL0a*1.1518464,  PHI0=PhiL0
  L0a___6 : LCAV, TYPE="DUALFEED",  FREQ=SbandF, L=0.3348566,  &
                   DELTAE=gradL0a*0.3348566,  PHI0=PhiL0
  L0a___7 : LCAV, TYPE="DUALFEED",  FREQ=SbandF, L=0.0609190,  &
                   DELTAE=gradL0a*0.0609190,  PHI0=PhiL0

  L0b___1 : LCAV, TYPE="DUALFEED",  FREQ=SbandF, L=0.0586460,  &
                   DELTAE=gradL0b*0.0586460,  PHI0=PhiL0
  L0b___2 : LCAV, TYPE="DUALFEED",  FREQ=SbandF, L=0.3371281,  &
                   DELTAE=gradL0b*0.3371281,  PHI0=PhiL0
  L0b___3 : LCAV, TYPE="DUALFEED",  FREQ=SbandF, L=1.1518479,  &
                   DELTAE=gradL0b*1.1518479,  PHI0=PhiL0
  L0b___4 : LCAV, TYPE="DUALFEED",  FREQ=SbandF, L=1.1515630,  &
                   DELTAE=gradL0b*1.1515630,  PHI0=PhiL0
  L0b___5 : LCAV, TYPE="DUALFEED",  FREQ=SbandF, L=0.3351400,  &
                   DELTAE=gradL0b*0.3351400,  PHI0=PhiL0
  L0b___6 : LCAV, TYPE="DUALFEED",  FREQ=SbandF, L=0.0609190,  &
                   DELTAE=gradL0b*0.0609190,  PHI0=PhiL0

  FLNGa1  : MARK      ! upstream   face of L0a entrance flange
  FLNGa2  : MARK      ! downstream face of L0a exit flange
  FLNGb1  : MARK      ! upstream   face of L0b entrance flange
  FLNGb2  : MARK      ! downstream face of L0b exit flange

! transverse deflecting cavities

 ! TCAV0 : DRIF, L=0.6680236/2  ! flange-to-flange (then split in two)
 ! TCAV3 : DRIF, L=2.438/2
  TCAV0 : LCAV, TYPE="TRANS_DEFL", L=0.6680236/2  ! flange-to-flange (then split in two)
  TCAV3 : LCAV, TYPE="TRANS_DEFL", L=2.438/2
  LKIK    := 1.0601              ! kicker coil length per magnet (m) [41.737 in from SA-380-330-02, rev. 0]
  BXKIKA  : SBEN, TYPE="XPULSED", L=LKIK/2, ANGLE=1E-12, HGAP=25.4E-3, &
                  E1=0  , FINT=0.5, FINTX=0
  BXKIKB  : SBEN, TYPE="XPULSED", L=LKIK/2, ANGLE=1E-12, HGAP=25.4E-3, &
                  FINT=0, E2=2E-12, FINTX=0.5

! ==============================================================================
! BENDs
! ------------------------------------------------------------------------------

! global BEND parameters

  dLBh:= 0.0144     !increase to lengthen BXH1-4 eff. length (m)
  LBh := 0.110+dLBh !5D3.9 "Z" length (m)   laser-heater chicane bends approx. effective length (R. Carr, 01-AUG-05 -PE)
  GBh := 30E-3      !5D3.9 gap height (m)
  LB0 := 0.2032     !5D7.1 "Z" length (m)
  GB0 := 30E-3      !5D7.1 gap height (m)
  LB1 := 0.2032     !5D7.1 "Z" length (m)
  GB1 := 43.28E-3   !5D7.1 gap height (m)
  LB2 := 0.5490     !1D19.7 "Z" length (m)      !changed from 0.540 m to 0.549 on Sep. 28, '07 based on magnetic measurements - PE
  GB2 := 33.35E-3   !1D19.7 gap height (m)
  LB3 := 2.623      !4D102.36T effective length (m)
  GB3 := 0.023      !4D102.36T gap height (m)
  LVB := 1.025      !3D39 vertical bend effective length (m)
  GVB := 0.034925   !vertical bend gap width (m)

! GTL
! ===

  RBXG   := 0.1963                 ! BXG bend radius (measured) [m]

  ABXG   := 85.0*RADDEG            ! bend angle of BXG dipole [deg*RADDEG = rad]
  EBXG   := 24.25*RADDEG           ! BXG pole-face rot. edge angle of BXG dipole [deg*RADDEG = rad]
  GBXG   := 0.043                  ! BXG magnet full gap height (m)
  LBXG   := RBXG*ABXG              ! path length of BXG dipole when ON (= R*theta) [m]
  VALUE, LBXG

  BXGA    : SBEN, L=LBXG/2, ANGLE=ABXG/2, &
                  HGAP=GBXG/2, E1=EBXG, E2=0   , &
                  FINT=0.492, FINTX=0              ! 1st-half of gun spectrometer bend (set to ~zero length and strength, with longitudinal position as the actual bend's center)
  BXGB    : SBEN, L=LBXG/2, ANGLE=ABXG/2, &
                  HGAP=GBXG/2, E1=0   , E2=EBXG, &
                  FINT=0.0 , FINTX=0.492           ! 1st-half of gun spectrometer bend (set to ~zero length and strength, with longitudinal position as the actual bend's center)

  DXG0    : DRIF, L=RBXG*SIN(ABXG/2)               ! drift, w/BXG off, from BXG entrance face to its z-projected center
  DXGA    : SBEN, L=1E-9/2, ANGLE=0/2              ! 1st-half of gun-spec bend (set to ~zero length and strength, with longitudinal position as bend's center)
  DXGB    : SBEN, L=1E-9/2, ANGLE=0/2              ! 2nd-half of gun-spec bend (set to ~zero length and strength, with longitudinal position as bend's center)

  DGS1    : DRIF, L=0.1900-LQGx/2-20E-6-0.0155757
  DGS2    : DRIF, L=(0.2300-LQGx)/2+20E-6
  DGS3    : DRIF, L=(0.2300-LQGx)/2-20E-6
  DGS4    : DRIF, L= 0.1680-LQGx/2-0.00283
  DGS5    : DRIF, L= 0.0300-0.02271
  DGS6    : DRIF, L= 0.0240-0.00402
  DGS7    : DRIF, L= 0.05

  rQGx   := 0.020                  ! QG quadrupole pole-tip radius [m]
  LQGx   := 0.076                  ! QG quadrupole effective length [m]
  KQG02  := -35.48540
  KQG03  := 80.16051

  CQ01    : QUAD,L=1E-9/2,K1=0,TYPE="QSOL"                   !correction quad in 1st solenoid at gun (nominally set to 0) (set to ~zero length, with longitudinal position as the actual quad's center)
  SQ01    : QUAD,L=1E-9/2,K1=0,TILT,TYPE="QSOL"              !correction skew-quad in 1st solenoid at gun (nominally set to 0) (set to ~zero length, with longitudinal position as the actual quad's center)
  QG02    : QUAD,L=LQGx/2,K1=KQG02,APER=rQGx,TYPE="QG"
  QG03    : QUAD,L=LQGx/2,K1=KQG03,APER=rQGx,TYPE="QG"

  XCG1    : HKIC,TYPE="class-G"
  XCG2    : HKIC,TYPE="class-G"
  YCG1    : VKIC,TYPE="class-G"
  YCG2    : VKIC,TYPE="class-G"
  SCG1    : LINE=(XCG1,YCG1)
  SCG2    : LINE=(XCG2,YCG2)

  BPMG1   : MONI, TYPE="25_um_res"
  CRG1    : INST                  ! Cerenkov radiator bunch length monitor
  YAGG1   : PROF, TYPE="YAG"      ! 6-MeV spectrometer screen
  FCG1    : INST                  ! gun-spec. Faraday cup w/screen
  GSPECBEG: MARK

  GSPEC   : LINE=(GSPECBEG,BXGA,BXGB,DGS1,QG02,SCG1,QG02, &
                  DGS2,BPMG1,DGS3,QG03,SCG2,QG03,&
                  DGS4,YAGG1,DGS5,CRG1,DGS6,FCG1,DGS7,DBMARK97) ! gun spectrometer from BXG to Farraday cup and dump

! 135-MeV Spectrometer
! ====================
  KQS01 :=  9.682244191676
  KQS02 := -5.648980372134

  QS01    : QUAD, TYPE="ETA", L=LQx/2, K1=KQS01, APER=rQx
  QS02    : QUAD, TYPE="ETA", L=LQx/2, K1=KQS02, APER=rQx
  DX01A   : SBEN, L=LB0/2, ANGLE=1E-9     ! 1st half of BX01 magnet switched off here
  DX01B   : SBEN, L=LB0/2, ANGLE=1E-9     ! 2nd half of BX01 magnet switched off here

  DS0     : DRIF, L=0.5583996
  DS0a    : DRIF, L=0.1691504
  DS0b    : DRIF, L=0.4615/2
  DS1a    : DRIF, L=0.0890085
  DS1b    : DRIF, L=0.1451215
  DS1c    : DRIF, L=0.171796
  DS1d    : DRIF, L=0.251824

  DS2     : DRIF, L=0.478250
  DS3a    : DRIF, L=0.199626
  DS3b    : DRIF, L=0.200374
  DS4     : DRIF, L=0.287275
  DS6a    : DRIF, L=0.2575952
  DS6b    : DRIF, L=0.2273298-0.008205
  DS7     : DRIF, L=0.3801874+0.008205-0.02
  DS8     : DRIF, L=0.1976126+0.02
  DS9     : DRIF, L=0.3378194
  SPECBEG : MARK
  BPMS1   : MONI, TYPE="20_um_res"
  BPMS2   : MONI, TYPE="20_um_res"
  BPMS3   : MONI, TYPE="20_um_res"
  VVS1    : MARK                  !135-MeV spectrometer vacuum valve
  YAGS1   : PROF, TYPE="YAG"      !1st 135-MeV spectrometer YAG-screen - center of device in MAD is defined as center of YAG crystal, not mirror
  YAGS2   : PROF, TYPE="YAG"      !2nd 135-MeV spectrometer YAG-screen - center of device in MAD is defined as center of YAG crystal, not mirror
  OTRS1   : PROF, TYPE="OTR"      !135-MeV spectrometer OTR-screen
  SDMP    : INST                  ! gun-spec. dump (exact location? - 11/09/05)
  XCS1    : HKIC,TYPE="class-1a"
  YCS1    : VKIC,TYPE="class-1a"
  XCS2    : HKIC,TYPE="class-1a"
  YCS2    : VKIC,TYPE="class-1a"
  SCS1    : LINE=(XCS1,YCS1)
  SCS2    : LINE=(XCS2,YCS2)
  LBS     := 0.5435        !measured effective length along curved trajectory (m)
  GBS     := 34E-3         !gap height (m)
  ABS     := injdeg*RADDEG !injection line angle (rad)
  BXSEj   := -7.29*RADDEG
  BXSA    : SBEN, L=LBS/2 , HGAP=GBS/2, ANGLE=ABS/2, &
                  E1=BXSEj, E2=0      , FINT=0.391  , FINTX=0
  BXSB    : SBEN, L=LBS/2 , HGAP=GBS/2, ANGLE=ABS/2, &
                  E1=0    , E2=BXSEj  , FINT=0     , FINTX=0.391

  SPECBL  : LINE=(SPECBEG,DX01A,DX01B,DS0,SCS1,DS0a,DS0b,DS1a,&
                  VVS1,DS1b,YAGS1,DS1c,BPMS1,DS1d,BXSA,BXSB,DS2,&
                  QS01,BPMS2,QS01,DS3a,SCS2,DS3b,QS02,QS02,DS4,&
                  IMS1,DS6a,BPMS3,DS6b,YAGS2,DS7,OTRS1,DS8,&
                  DS9,SDMP,DBMARK98)

! DL1
! ===

  DL1_ON := 1                      !=1: nominal LCLS with BX01/02 bend magnet DL1 power-supply is ON, =0: 135-MeV spectrometer-mode with DL1 OFF

  ADL1 := injdeg*RADDEG            !injection line angle (rad)

  AB0    := ADL1/2                 !full bend angle (rad)
  LeffB0 := LB0*AB0/(2*SIN(AB0/2)) !full bend path length (m)
  AEB0   := AB0/2                  !edge angles

  BX01A : SBEN, TYPE="5D7.1", L=LeffB0/2, HGAP=GB0/2, ANGLE=AB0/2, &
                E1=AEB0, FINT=0.45, FINTX=0
  BX01B : SBEN, TYPE="5D7.1", L=LeffB0/2, HGAP=GB0/2, ANGLE=AB0/2, &
                E2=AEB0, FINT=0, FINTX=0.45
  BX02A : SBEN, TYPE="5D7.1", L=LeffB0/2, HGAP=GB0/2, ANGLE=AB0/2, &
                E1=AEB0, FINT=0.45, FINTX=0
  BX02B : SBEN, TYPE="5D7.1", L=LeffB0/2, HGAP=GB0/2, ANGLE=AB0/2, &
                E2=AEB0, FINT=0, FINTX=0.45

! BC1
! ===

  Brho1 := Cb*EBC1            !beam rigidity at BC1 (kG-m)
  BB11  := -3.555805785115    !chicane-1 bend field (kG) - changed June 22, 2004
  RB11  := Brho1/BB11         !chicane-1 bend radius (m)
  AB11  := ASIN(LB1/RB11)     !full chicane bend angle (rad)
  AB11S := ASIN((LB1/2)/RB11) !"short" half chicane bend angle (rad)
  LB11S := RB11*AB11S         !"short" half chicane bend path length (m)
  AB11L := AB11-AB11S         !"long" half chicane bend angle (rad)
  LB11L := RB11*AB11L         !"long" half chicane bend path length (m)

! BX11 gets an offset of 2.2 mm (theta*L/8) towards the wall
! BX12 gets an offset of 2.2 mm (theta*L/8) towards the aisle
! BX13 gets an offset of 2.2 mm (theta*L/8) towards the aisle
! BX14 gets an offset of 2.2 mm (theta*L/8) towards the wall

  BX11A : SBEN, TYPE="5D7.1", L=LB11S, ANGLE=+AB11S, HGAP=GB1/2, &
                E1=0, FINT=0.387, FINTX=0
  BX11B : SBEN, TYPE="5D7.1", L=LB11L, ANGLE=+AB11L, HGAP=GB1/2, &
                FINT=0, E2=+AB11, FINTX=0.387
  BX12A : SBEN, TYPE="5D7.1", L=LB11L, ANGLE=-AB11L, HGAP=GB1/2, &
                E1=-AB11, FINT=0.387, FINTX=0
  BX12B : SBEN, TYPE="5D7.1", L=LB11S, ANGLE=-AB11S, HGAP=GB1/2, &
                FINT=0, E2=0, FINTX=0.387
  BX13A : SBEN, TYPE="5D7.1", L=LB11S, ANGLE=-AB11S, HGAP=GB1/2, &
                E1=0, FINT=0.387, FINTX=0
  BX13B : SBEN, TYPE="5D7.1", L=LB11L, ANGLE=-AB11L, HGAP=GB1/2, &
                FINT=0, E2=-AB11, FINTX=0.387
  BX14A : SBEN, TYPE="5D7.1", L=LB11L, ANGLE=+AB11L, HGAP=GB1/2, &
                E1=+AB11, FINT=0.387, FINTX=0
  BX14B : SBEN, TYPE="5D7.1", L=LB11S, ANGLE=+AB11S, HGAP=GB1/2, &
                FINT=0, E2=0, FINTX=0.387

! magnet-to-magnet path lengths
  LD11   := 2.434900                  !outer bend-to-bend "Z" distance (m)
  LD11o  := LD11/COS(AB11)            !outer bend-to-bend path length (m) (minus ~0.15 m 9/21/04)
  LD11a  := 0.261301                  !"Z" distance upstream of SQ13 (m)
  LD11b  := LD11-LD11a-0.16*COS(AB11) !"Z" distance downstream of SQ13 (m)
  LD11oa := LD11a/COS(AB11)           !path length upstream of SQ13
  LD11ob := LD11b/COS(AB11)           !path length downstream of SQ13

! BC2
! ===

  Brho2 := Cb*EBC2            !beam rigidity at BC2 (kG-m)
  BB21  := -9.071122639275    !chicane bend field (kG)
  RB21  := Brho2/BB21         !chicane bend radius (m)
  AB21  := ASIN(LB2/RB21)     !full chicane bend angle (rad)
  AB21S := ASIN((LB2/2)/RB21) !"short" half chicane bend angle (rad)
  LB21S := RB21*AB21S         !"short" half chicane bend path length (m)
  AB21L := AB21-AB21S         !"long" half chicane bend angle (rad)
  LB21L := RB21*AB21L         !"long" half chicane bend path length (m)

! BX21 gets an offset of ~2.3 mm (theta*L/8) towards the wall
! BX22 gets an offset of ~2.3 mm (theta*L/8) towards the aisle
! BX23 gets an offset of ~2.3 mm (theta*L/8) towards the aisle
! BX24 gets an offset of ~2.3 mm (theta*L/8) towards the wall

  BX21A : SBEN, TYPE="1D19.7", L=LB21S, ANGLE=+AB21S, HGAP=GB2/2, &
                E1=0, FINT=0.633, FINTX=0
  BX21B : SBEN, TYPE="1D19.7", L=LB21L, ANGLE=+AB21L, HGAP=GB2/2, &
                FINT=0, E2=+AB21, FINTX=0.633
  BX22A : SBEN, TYPE="1D19.7", L=LB21L, ANGLE=-AB21L, HGAP=GB2/2, &
                E1=-AB21, FINT=0.633, FINTX=0
  BX22B : SBEN, TYPE="1D19.7", L=LB21S, ANGLE=-AB21S, HGAP=GB2/2, &
                FINT=0, E2=0, FINTX=0.633
  BX23A : SBEN, TYPE="1D19.7", L=LB21S, ANGLE=-AB21S, HGAP=GB2/2, &
                E1=0, FINT=0.633, FINTX=0
  BX23B : SBEN, TYPE="1D19.7", L=LB21L, ANGLE=-AB21L, HGAP=GB2/2, &
                FINT=0, E2=-AB21, FINTX=0.633
  BX24A : SBEN, TYPE="1D19.7", L=LB21L, ANGLE=+AB21L, HGAP=GB2/2, &
                E1=+AB21, FINT=0.633, FINTX=0
  BX24B : SBEN, TYPE="1D19.7", L=LB21S, ANGLE=+AB21S, HGAP=GB2/2, &
                FINT=0, E2=0, FINTX=0.633

! magnet-to-magnet path lengths

  LD21i := 1.0 - 2*0.1       !inner bend-to-bend "Z" distance (m)

  LD1  := 2.00-0.04-0.0045   !outer bend-to-bend "Z" distance (m)
  LD2  := 8.00-0.04-0.0508-0.0045   !outer bend-to-bend "Z" distance (m)
  LD3  := 8.00-0.04-0.0508-0.0045   !outer bend-to-bend "Z" distance (m)
  LD4  := 2.00-0.04-0.0045   !outer bend-to-bend "Z" distance (m)
  LDo1 := LD1/COS(AB21)      !outer bend-to-bend path length (m)
  LDo2 := LD2/COS(AB21)-LQc  !outer bend-to-bend path length (m)
  LDo3 := LD3/COS(AB21)-LQc  !outer bend-to-bend path length (m)
  LDo4 := LD4/COS(AB21)      !outer bend-to-bend path length (m)

! 52-line stuff
! =============

  B50B1A  :  SBEN,L=1.1320272,ANGLE=-0.86939816E-02,TYPE="50B1"
  B50B1B  :  SBEN,L=1.1320272,ANGLE=-0.86939816E-02,TYPE="50B1"
  B52AGFA :  SBEN,L=0.40010029,ANGLE=-0.14360109E-02,&
                  K1=0.43265282,TYPE="52AGF"
  B52AGFB :  SBEN,L=0.40010029,ANGLE=-0.14360109E-02,&
                  K1=0.43265282,TYPE="52AGF"
  B52WIG1A:  SBEN,L=0.23367797/2,ANGLE=-0.23818663E-02/2,&
                  TILT,TYPE="52WG1"
  B52WIG1B:  SBEN,L=0.23367797/2,ANGLE=-0.23818663E-02/2,&
                  TILT,TYPE="52WG1"
  B52WIG2A:  SBEN,L=0.23368102,ANGLE=0.23818974E-02,&
                  TILT,TYPE="52WG1"
  B52WIG2B:  SBEN,L=0.23368102,ANGLE=0.23818974E-02,&
                  TILT,TYPE="52WG1"
  B52WIG3A:  SBEN,L=0.23367797/2,ANGLE=-0.23818663E-02/2,&
                  TILT,TYPE="52WG1"
  B52WIG3B:  SBEN,L=0.23367797/2,ANGLE=-0.23818663E-02/2,&
                  TILT,TYPE="52WG1"
  Q52Q2   :  QUAD,L=0.37224614,K1=-0.38544745,TYPE="52Q2"
  XC69    :  HKIC,TYPE="52A1X"
  YC54T   :  VKIC,TYPE="52WIGT"
  YC59    :  VKIC,TYPE="52A1Y"
  BPM52   :  MONI,TYPE="20_um_res"
  BPM56   :  MONI,TYPE="20_um_res"
  BPM64   :  MONI,TYPE="20_um_res"
  BPM68   :  MONI,TYPE="20_um_res"
  IM61    :  MARK,TYPE="52I1"
  PR45    :  INST,TYPE="50PR2"
  PR55    :  INST,TYPE="52PR0"
  PR60    :  INST,TYPE="52PR1"
  WS62    :  INST,TYPE="52WS1"
  DRI14001:  DRIF,L=0.7620000
  DRI14002:  DRIF,L=2.9725315
  DRI14003:  DRIF,L=0.91440000E-01
  DRI14004:  DRIF,L=0.2092970
  DRI14005:  DRIF,L=0.1737360
  DRI14006:  DRIF,L=0.1139068
  DRI14007:  DRIF,L=0.2255520
  DRI14008:  DRIF,L=0.1280160
  DRI14009:  DRIF,L=0.1219200
  DRI14010:  DRIF,L=0.1916339
  T460061T:  DRIF,L=0,TYPE="52I1"
  DRI14011:  DRIF,L=0.1981200
  DRI14012:  DRIF,L=0.3230880
  DRI14013:  DRIF,L=0.4252539
  SL1X    :  DRIF,L=0,TYPE="52SL1X"
  DRI14014:  DRIF,L=0.7909590
  SL1Y    :  DRIF,L=0,TYPE="52SL1Y"
  DRI14015:  DRIF,L=1.0088270
  DRI14016:  DRIF,L=0.3139440
  DRI14017:  DRIF,L=2.2764689
  SL2     :  DRIF,L=0,TYPE="52SL2"

! Vertical bend system and DL2
! ============================

  AVB := (S100_PITCH + ASIN(Z_S100_UNDH/(R_Earth+S100_HEIGHT)))/2 !bend up twice this angle so e- is level in cnt. of und., incl. 30-m ext.
  VALUE, 2*AVB

  BY1A : SBEN, TYPE="3D39", L=LVB/2, ANGLE=AVB/2, HGAP=GVB/2, &
               E1=AVB/2, FINT=0.5, FINTX=0, TILT
  BY1B : SBEN, TYPE="3D39", L=LVB/2, ANGLE=AVB/2, HGAP=GVB/2, &
               FINT=0, E2=AVB/2, FINTX=0.5, TILT
  BY2A : SBEN, TYPE="VB", L=LVB/2, ANGLE=AVB/2, HGAP=GVB/2, &
               E1=AVB/2, FINT=0.5, FINTX=0, TILT
  BY2B : SBEN, TYPE="VB", L=LVB/2, ANGLE=AVB/2, HGAP=GVB/2, &
               FINT=0, E2=AVB/2, FINTX=0.5, TILT

  AB3P   := 0.5*RADDEG*(+1)
  AB3M   := 0.5*RADDEG*(-1)
  LeffB3 := LB3*AB3P/(2*SIN(AB3P/2)) !full bend eff. path length (m)

  BX31A  : SBEN, TYPE="4D102.36T"    , L=LeffB3/2 , ANGLE=AB3P/2, HGAP=GB3/2, &
                 E1=AB3P/2, E2=0     , FINT=0.5, FINTX=0.0
  BX31B  : SBEN, TYPE="4D102.36T"    , L=LeffB3/2 , ANGLE=AB3P/2, HGAP=GB3/2, &
                 E1=0     , E2=AB3P/2, FINT=0.0, FINTX=0.5
  BX32A  : SBEN, TYPE="4D102.36T"    , L=LeffB3/2 , ANGLE=AB3P/2, HGAP=GB3/2, &
                 E1=AB3P/2, E2=0     , FINT=0.5, FINTX=0.0
  BX32B  : SBEN, TYPE="4D102.36T"    , L=LeffB3/2 , ANGLE=AB3P/2, HGAP=GB3/2, &
                 E1=0     , E2=AB3P/2, FINT=0.0, FINTX=0.5

  DX33A  : DRIFT, L=LB3/2     !optional bend for branch point
  DX33B  : DRIFT, L=LB3/2
  DX34A  : DRIFT, L=LB3/2
  DX34B  : DRIFT, L=LB3/2

  BX35A  : SBEN, TYPE="4D102.36T"   , L=LeffB3/2 , ANGLE=AB3M/2, HGAP=GB3/2, &
                 E1=AB3M/2, E2=0    , FINT=0.5, FINTX=0.0
  BX35B  : SBEN, TYPE="4D102.36T"   , L=LeffB3/2 , ANGLE=AB3M/2, HGAP=GB3/2, &
                 E1=0    , E2=AB3M/2, FINT=0.0, FINTX=0.5
  BX36A  : SBEN, TYPE="4D102.36T"   , L=LeffB3/2 , ANGLE=AB3M/2, HGAP=GB3/2, &
                 E1=AB3M/2, E2=0    , FINT=0.5, FINTX=0.0
  BX36B  : SBEN, TYPE="4D102.36T"   , L=LeffB3/2 , ANGLE=AB3M/2, HGAP=GB3/2, &
                 E1=0    , E2=AB3M/2, FINT=0.0, FINTX=0.5

  DX37A  : DRIFT, L=LB3/2     !optional bend for branch point
  DX37B  : DRIFT, L=LB3/2
  DX38A  : DRIFT, L=LB3/2
  DX38B  : DRIFT, L=LB3/2

! Single beam dumper vertical kicker
! ==================================

  BYKIK1A : SBEN, TYPE="YPULSED", L=LKIK/2, ANGLE=1E-12/2, HGAP=25.4E-3, &
                  FINT=0.5, FINTX=0  , TILT
  BYKIK1B : SBEN, TYPE="YPULSED", L=LKIK/2, ANGLE=1E-12/2, HGAP=25.4E-3, &
                  FINT=0  , FINTX=0.5, TILT
  BYKIK2A : SBEN, TYPE="YPULSED", L=LKIK/2, ANGLE=1E-12/2, HGAP=25.4E-3, &
                  FINT=0.5, FINTX=0  , TILT
  BYKIK2B : SBEN, TYPE="YPULSED", L=LKIK/2, ANGLE=1E-12/2, HGAP=25.4E-3, &
                  FINT=0  , FINTX=0.5, TILT

  TDKIK   : INST, L=0.6096    !SBD vertical off-axis kicker dump (24 in long - 9/8/08)
  SPOILER : INST              !SBD dump spoiler

! X-ray stripe 'wiggler' vertical 3-dipole chicane (from SLC BSY)
! ===============================================================

  LBxw  := 0.233681            !"Z" length (m)
!  GBxw  := 1.05*in2m           !gap height - SLC wiggler gap not known yet - used 1.05 inches for now - 7/6/05 -PE (m)
  Brhox := Cb*Ef               !beam rigidity in LTU (kG-m)
  BBxw  := -6.0                !X-ray chicane bend field (kG) - (eta matching in DL2 not fixed yet: small error - PE)
  RBxw  := Brhox/BBxw          !X-ray chicane bend radius (m)
  ABxw  := ASIN(LBxw/RBxw)     !full X-ray chicane bend angle (rad)
!  ABxwS := ASIN((LBxw/2)/RBxw) !"short" half X-ray chicane bend angle (rad)
!  LBxwS := RBxw*ABxwS          !"short" half X-ray chicane bend path length (m)
!  ABxwL := ABxw-ABxwS          !"long" half X-ray chicane bend angle (rad)
!  LBxwL := RBxw*ABxwL          !"long" half X-ray chicane bend path length (m)
!
!  BYw1A : SBEN, TYPE="5D7.1", L=LBxwS, ANGLE=+ABxwS, HGAP=GBxw/2, &
!                E1=0, FINT=0.5, FINTX=0, TILT
!  BYw1B : SBEN, TYPE="5D7.1", L=LBxwL, ANGLE=+ABxwL, HGAP=GBxw/2, &
!                FINT=0, E2=+ABxw, FINTX=0.5, TILT
!  BYw2A : SBEN, TYPE="5D7.1", L=LBxwL+LBxwS, ANGLE=-ABxw, HGAP=GBxw/2, &
!                E1=-ABxw, FINT=0.5, FINTX=0, TILT
!  BYw2B : SBEN, TYPE="5D7.1", L=LBxwS+LBxwL, ANGLE=-ABxw, HGAP=GBxw/2, &
!                FINT=0, E2=-ABxw, FINTX=0.5, TILT
!  BYw3A : SBEN, TYPE="5D7.1", L=LBxwL, ANGLE=+ABxwL, HGAP=GBxw/2, &
!                E1=+ABxw, FINT=0.5, FINTX=0, TILT
!  BYw3B : SBEN, TYPE="5D7.1", L=LBxwS, ANGLE=+ABxwS, HGAP=GBxw/2, &
!                FINT=0, E2=0, FINTX=0.5, TILT

  DBYw1A: DRIF, L=LBxw/2
  DBYw1B: DRIF, L=LBxw/2
  DBYw2A: DRIF, L=LBxw
  DBYw2B: DRIF, L=LBxw
  DBYw3A: DRIF, L=LBxw/2
  DBYw3B: DRIF, L=LBxw/2

  LDw1o := 0.173736
  SDw1o := LDw1o/COS(ABxw)
  Dw1o  : DRIF, L=SDw1o, TYPE="CSR"

! HXRSS self-seeding undulator (diamond crystal)
! ==============================================

  Brho4 := Cb*Ef             !beam rigidity at chicane (kG-m)
  GB4   := 0.008             !1.25D14-C gap height (m)
  LB4   := 0.3556+GB4        !1.25D14-C "Z" length (m) ... rule-of-thumb est.
  BB4   := 3.373513346927    !chicane bend field for 12-um R56 (kG)
  RB4   := Brho4/BB4         !chicane bend radius (m)
  AB4   := ASIN(LB4/RB4)     !chicane bend angle (rad)
  AB4S  := ASIN((LB4/2)/RB4) !"short" half chicane bend angle (rad)
  LB4S  := RB4*AB4S          !"short" half chicane bend path length (m)
  AB4L  := AB4-AB4S          !"long" half chicane bend angle (rad)
  LB4L  := RB4*AB4L          !"long" half chicane bend path length (m)

  BXHS1a : SBEN, TYPE="1.25D14-C", L=LB4S, HGAP=GB4/2, ANGLE=+AB4S, &
                 E1=0, FINT=0.5, FINTX=0
  BXHS1b : SBEN, TYPE="1.25D14-C", L=LB4L, HGAP=GB4/2, ANGLE=+AB4L, &
                 FINT=0, E2=+AB4, FINTX=0.5
  BXHS2a : SBEN, TYPE="1.25D14-C", L=LB4L, HGAP=GB4/2, ANGLE=-AB4L, &
                 E1=-AB4, FINT=0.5, FINTX=0
  BXHS2b : SBEN, TYPE="1.25D14-C", L=LB4S, HGAP=GB4/2, ANGLE=-AB4S, &
                 FINT=0, E2=0, FINTX=0.5
  BXHS3a : SBEN, TYPE="1.25D14-C", L=LB4S, HGAP=GB4/2, ANGLE=-AB4S, &
                 E1=0, FINT=0.5, FINTX=0
  BXHS3b : SBEN, TYPE="1.25D14-C", L=LB4L, HGAP=GB4/2, ANGLE=-AB4L, &
                 FINT=0, E2=-AB4, FINTX=0.5
  BXHS4a : SBEN, TYPE="1.25D14-C", L=LB4L, HGAP=GB4/2, ANGLE=+AB4L, &
                 E1=+AB4, FINT=0.5, FINTX=0
  BXHS4b : SBEN, TYPE="1.25D14-C", L=LB4S, HGAP=GB4/2, ANGLE=+AB4S, &
                 FINT=0, E2=0, FINTX=0.5

  D1      : DRIF, L=0.5828/COS(AB4) !0.582802
  DCH     : DRIF, L=0.58/2
  DMONO   : DRIF, L=0.1
  DIAMOND : INST
  M1      : MARK
  M2      : MARK

  CHICANE : LINE=(DMONO,M1,BXHS1A,BXHS1B,D1,BXHS2A,BXHS2B,DCH,DIAMOND,DCH,&
                  BXHS3A,BXHS3B,D1,BXHS4A,BXHS4B,M2,DMONO)

! SXRSS self-seeding chicane
! ==========================

! NOTEs:
! - nominal operating energy for this chicane is 4.744 GeV
! - chicane is OFF for 13.64 GeV operation
! - use series approximation for sinc(x)=sin(x)/x to allow BB5=0

  Brho5    := Cb*Ef                             !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)
 !BB5      := 5.921701953748 !(4.744 GeV)       !chicane bend field for 397-um R56 (kG) [1000 eV]
  BB5      := 0                                 !chicane is OFF for 13.64 GeV
  ARG5     := ZB5*BB5/Brho5
  AB5      := ASIN(ARG5)                        !chicane bend angle (rad)
  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(ARG5/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)

  BXSS1a : SBEN, TYPE="WALZ", HGAP=GB5/2, L=LB5S, ANGLE=+AB5S, &
                 E1=0, FINT=0.5, FINTX=0
  BXSS1b : SBEN, TYPE="WALZ", HGAP=GB5/2, L=LB5L, ANGLE=+AB5L, &
                 E2=+AB5, FINT=0, FINTX=0.5
  BXSS2a : SBEN, TYPE="WALZ", HGAP=GB5/2, L=LB5L, ANGLE=-AB5L, &
                 E1=-AB5, FINT=0.5, FINTX=0
  BXSS2b : SBEN, TYPE="WALZ", HGAP=GB5/2, L=LB5S, ANGLE=-AB5S, &
                 E2=0, FINT=0, FINTX=0.5
  BXSS3a : SBEN, TYPE="WALZ", HGAP=GB5/2, L=LB5S, ANGLE=-AB5S, &
                 E1=0, FINT=0.5, FINTX=0
  BXSS3b : SBEN, TYPE="WALZ", HGAP=GB5/2, L=LB5L, ANGLE=-AB5L, &
                 E2=-AB5, FINT=0, FINTX=0.5
  BXSS4a : SBEN, TYPE="WALZ", HGAP=GB5/2, L=LB5L, ANGLE=+AB5L, &
                 E1=+AB5, FINT=0.5, FINTX=0
  BXSS4b : SBEN, TYPE="WALZ", HGAP=GB5/2, L=LB5S, ANGLE=+AB5S, &
                 E2=0, FINT=0, FINTX=0.5

  ZD1S  := 0.8303985
  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=0.0641995 !sets RFBU08-to-RFBU09 distance to 3.87 m exactly
  D1S    : DRIF, L=ZD1S/COS(AB5)
  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=0.1564/2

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

  SCHICANE : LINE=(&
    DMONOS,&
    BXSS1A,BXSS1B,D1Sa,GSXS1,D1Sb,MSXS1,D1Sc,&
    BXSS2A,BXSS2B,DCHS,CNTRS,DCHS,&
    BXSS3A,BXSS3B,D1Sd,SLSXS1,D1Se,MSXS2,D1Sf,MSXS3,D1Sg,&
    BXSS4A,BXSS4B,&
    DMONOS)

! Dump
! ====

  LBdm   := 1.452          !effective vertical bend length of main dump bends - from J. Tanabe (m)
  GBdm   := 0.043          !full gap (m) - this is a full gap 'width' for these vert. dipoles
  ABdm0  := (5.0*RADDEG)/3

  LeffBdm := LBdm*ABdm0/(2*SIN(ABdm0/2)) !full bend path length (m)

  BYD1A  : SBEN, TYPE="1.69VD55.1", L=LeffBdm/2, ANGLE=ABdm0/2, HGAP=GBdm/2, &
                 E1=ABdm0/2, E2=0, FINT=0.57, FINTX=0.00, TILT
  BYD1B  : SBEN, TYPE="1.69VD55.1", L=LeffBdm/2, ANGLE=ABdm0/2, HGAP=GBdm/2, &
                 E1=0, E2=ABdm0/2, FINT=0.00, FINTX=0.57, TILT
  BYD2A  : SBEN, TYPE="1.69VD55.1", L=LeffBdm/2, ANGLE=ABdm0/2, HGAP=GBdm/2, &
                 E1=ABdm0/2, E2=0, FINT=0.57, FINTX=0.00, TILT
  BYD2B  : SBEN, TYPE="1.69VD55.1", L=LeffBdm/2, ANGLE=ABdm0/2, HGAP=GBdm/2, &
                 E1=0, E2=ABdm0/2, FINT=0.00, FINTX=0.57, TILT
  BYD3A  : SBEN, TYPE="1.69VD55.1", L=LeffBdm/2, ANGLE=ABdm0/2, HGAP=GBdm/2, &
                 E1=ABdm0/2, E2=0, FINT=0.57, FINTX=0.00, TILT
  BYD3B  : SBEN, TYPE="1.69VD55.1", L=LeffBdm/2, ANGLE=ABdm0/2, HGAP=GBdm/2, &
                 E1=0, E2=ABdm0/2 , FINT=0.00, FINTX=0.57, TILT

! modified FFTB permanent magnet dump bends

  LBpm   := 0.944           !originel effective length (m)
  GBpm0  := 0.0381          !original gap height (m)
  Bpm0   := 4.3             !original permanent magnetic field (kG)
  GBpm   := 0.052           !modified gap height (m)
  Bpm    := Bpm0*GBpm0/GBpm !modified permanent magnetic field (kG)
  ABpm   := LBpm*Bpm/Brhox  !modified bend angle (rad)

  BXPM1A : SBEN, TYPE="4D36-C"        , L=LBpm/2, ANGLE=ABpm/2, HGAP=GBpm/2, &
                 E1=0      , E2=0     , FINT=0.5, FINTX=0.0
  BXPM1B : SBEN, TYPE="4D36-C"        , L=LBpm/2, ANGLE=ABpm/2, HGAP=GBpm/2, &
                 E1=0      , E2=1*ABpm, FINT=0.0, FINTX=0.5
  BXPM2A : SBEN, TYPE="4D36-C"        , L=LBpm/2, ANGLE=ABpm/2, HGAP=GBpm/2, &
                 E1=-1*ABpm, E2=0     , FINT=0.5, FINTX=0.0
  BXPM2B : SBEN, TYPE="4D36-C"        , L=LBpm/2, ANGLE=ABpm/2, HGAP=GBpm/2, &
                 E1=0      , E2=2*ABpm, FINT=0.0, FINTX=0.5
  BXPM3A : SBEN, TYPE="4D36-C"        , L=LBpm/2, ANGLE=ABpm/2, HGAP=GBpm/2, &
                 E1=-2*ABpm, E2=0     , FINT=0.5, FINTX=0.0
  BXPM3B : SBEN, TYPE="4D36-C"        , L=LBpm/2, ANGLE=ABpm/2, HGAP=GBpm/2, &
                 E1=0      , E2=3*ABpm, FINT=0.0, FINTX=0.5

! DL1
!  KQA01 :=  -7.474220813631            ! OLD - no lsr-htr (for commissioning in Dec. '06 through July '07) & on-measured TWSS0
!  KQA02 :=   8.137641193725
!  KQE01 :=  -2.215639104385
!  KQE02 :=  -0.241173314721
!  KQE03 :=   7.613440306134
!  KQE04 :=  -6.985386854286

!  KQA01 := -12.492179751016            ! OLD - with 5.4-cm lamu lsr-htr and "MATRIX" focusing, but non-measured TWSS0
!  KQA02 :=  11.022504569397
!  KQE01 :=  -3.089332618348
!  KQE02 :=   0.090132722014
!  KQE03 :=   6.822078966488
!  KQE04 :=  -5.731166555613

!  KQA01 := -6.1200                     ! post Aug. 11, 2008 matching based on real measurements with heater/chicane not yet installed (64 & 135 MeV)
!  KQA02 := 12.6808
!  KQE01 := -1.4046
!  KQE02 := -2.4546
!  KQE03 :=  9.6624
!  KQE04 := -7.4610

  KQA01 := -12.317411498864            ! new design with laser-heater ON (chicane and und, w/Betx=Bety=12 m), based on measured (back-tracked) TWSS0
  KQA02 :=  13.706906173749
  KQE01 :=  -6.538179321052
  KQE02 :=   5.354060093454
  KQE03 :=   6.054674881291
  KQE04 :=  -5.235476556481

  KQM01 :=  15.072053882204
  KQM02 := -11.974604636345
  KQM03 :=  -8.255421303054
  KQM04 :=  13.306105246908

  KQB   :=  22.169701529353

  QA01 : QUAD, TYPE="ETA", L=LQx/2, K1=KQA01, APER=rQx
  QA02 : QUAD, TYPE="ETA", L=LQx/2, K1=KQA02, APER=rQx
  QE01 : QUAD, TYPE="ETA", L=LQx/2, K1=KQE01, APER=rQx
  QE02 : QUAD, TYPE="ETA", L=LQx/2, K1=KQE02, APER=rQx
  QE03 : QUAD, TYPE="ETA", L=LQx/2, K1=KQE03, APER=rQx
  QE04 : QUAD, TYPE="ETA", L=LQx/2, K1=KQE04, APER=rQx
  QM01 : QUAD, TYPE="ETA", L=LQx/2, K1=KQM01, APER=rQx
  QM02 : QUAD, TYPE="ETA", L=LQx/2, K1=KQM02, APER=rQx
  QB   : QUAD, TYPE="QE", L=LQE/2, K1=KQB  , APER=rQE
  QM03 : QUAD, TYPE="ETA", L=LQx/2, K1=KQM03, APER=rQx
  QM04 : QUAD, TYPE="ETA", L=LQx/2, K1=KQM04, APER=rQx

! L1

  KQL1 := 3.789198342593

  QFL1 : QUAD, TYPE="QE", L=LQE/2, K1=+KQL1, APER=rQE
  QDL1 : QUAD, TYPE="QE", L=LQE/2, K1=-KQL1, APER=rQE

  KQA11 := -KQL1
  KQA12 :=  1.863910872552
  QA11 : QUAD, TYPE="ETA", L=LQx/2, K1=KQA11, APER=rQx
  QA12 : QUAD, TYPE="ETA", L=LQx/2, K1=KQA12, APER=rQx

! BC1

  KQ21201 :=  -9.357677119503
  KQM11   :=   7.960339117021
  KQM12   :=  -8.366726970987
  KQM13   :=   9.860390676906
  KCQ11   :=   1E-12
  KSQ13   :=   1E-12
  KCQ12   :=   1E-12
  KQ21301 :=  -0.1347              ! turn this quad OFF for LCLS operations (this is meas'd remnant field of Gdl = 0.12 kG)
  KQM14   :=   7.079239169293
  KQM15   :=  -6.765038435385

  Q21201 : QUAD, TYPE="QE",  L=LQE/2, K1=KQ21201,APER=rQE   ! (QE-072 after Aug 2006) gets moved downstream of pre-LCLS location by 1.101312 m (measured parallel to main linac axis)
  QM11   : QUAD, TYPE="ETA", L=LQx/2, K1=KQM11,  APER=rQx
  CQ11   : QUAD, TYPE="ETB", L=LQc/2, K1=KCQ11,  APER=rQc   ! now ETB tweaker quad
  SQ13   : QUAD,             L=0.16/2,K1=KSQ13,  APER=0.06, TILT  ! per Kirk Bertsche
  CQ12   : QUAD, TYPE="ETB", L=LQc/2, K1=KCQ12,  APER=rQc   ! now ETB tweaker quad
  QM12   : QUAD, TYPE="ETA", L=LQx/2, K1=KQM12,  APER=rQx
  QM13   : QUAD, TYPE="ETA", L=LQx/2, K1=KQM13,  APER=rQx
  Q21301 : QUAD, TYPE="QE",  L=LQE/2, K1=KQ21301,APER=rQE   ! (QE-004 after Aug 2006) gets moved downstream of pre-LCLS location by 1.247066 m (measured parallel to main linac axis), and turned off for LCLS
  QM14   : QUAD, TYPE="ETA", L=LQx/2, K1=KQM14,  APER=rQx
  QM15   : QUAD, TYPE="ETA", L=LQx/2, K1=KQM15,  APER=rQx

! L2

  KQL2 := 0.708388522907

  QFL2 : QUAD, TYPE="QE", L=LQE/2, K1=+KQL2, APER=rQE
  QDL2 : QUAD, TYPE="QE", L=LQE/2, K1=-KQL2, APER=rQE

  KQ21401 :=  1.044881943081  ! (QE-002 after Aug 2006)
  KQ21501 := -0.833170329125 ! (use pre-Aug-2006 Q21201 magnet)
  KQ21601 :=  KQL2           ! (use pre-Aug-2006 Q21301 magnet)
  KQ21701 := -KQL2
  KQ21801 :=  0.721703961622
  KQ21901 := -0.721930035688

  KQ22201 :=  0.711368406706
  KQ22301 := -0.764179973154
  KQ22401 :=  KQL2
  KQ22501 := -KQL2
  KQ22601 :=  KQL2
  KQ22701 := -KQL2
  KQ22801 :=  0.748596129657
  KQ22901 := -0.709657173604

  KQ23201 :=  0.721241098608
  KQ23301 := -0.741011348313
  KQ23401 :=  KQL2
  KQ23501 := -KQL2
  KQ23601 :=  KQL2
  KQ23701 := -KQL2
  KQ23801 :=  0.770675623153
  KQ23901 := -0.726878264576

  KQ24201 :=  0.779404953697
  KQ24301 := -0.856812505218
  KQ24401 :=  1.025618689057
  KQ24501 := -0.931675081162
  KQ24601 :=  0.603160584173

  Q21401 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ21401, APER=rQE
  Q21501 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ21501, APER=rQE
  Q21601 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ21601, APER=rQE
  Q21701 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ21701, APER=rQE
  Q21801 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ21801, APER=rQE
  Q21901 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ21901, APER=rQE

  Q22201 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ22201, APER=rQE
  Q22301 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ22301, APER=rQE
  Q22401 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ22401, APER=rQE
  Q22501 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ22501, APER=rQE
  Q22601 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ22601, APER=rQE
  Q22701 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ22701, APER=rQE
  Q22801 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ22801, APER=rQE
  Q22901 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ22901, APER=rQE

  Q23201 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ23201, APER=rQE
  Q23301 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ23301, APER=rQE
  Q23401 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ23401, APER=rQE
  Q23501 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ23501, APER=rQE
  Q23601 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ23601, APER=rQE
  Q23701 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ23701, APER=rQE
  Q23801 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ23801, APER=rQE
  Q23901 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ23901, APER=rQE

  Q24201 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ24201, APER=rQE
  Q24301 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ24301, APER=rQE
  Q24401 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ24401, APER=rQE
  Q24501 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ24501, APER=rQE
  Q24601 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ24601, APER=rQE

! BC2

  KQ24701 := -1.286030138047
  KQM21   :=  0.508115309359
  KCQ21   :=  1E-12
  KCQ22   :=  1E-12
  KQM22   := -0.590418980634
  KQ24901 :=  1.082042245094

  Q24701A: QUAD, TYPE="QE"        , L=LQE/2, K1=KQ24701, APER=rQE  ! in same location as pre-LCLS (with its BPM)
  Q24701B: QUAD, TYPE="QE"        , L=LQE/2, K1=KQ24701, APER=rQE  ! 10 cm between Q24701A & B
  QM21   : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=KQM21,   APER=rQF
  CQ21   : QUAD, TYPE="ETB"       , L=LQc/2, K1=KCQ21,   APER=rQc
  CQ22   : QUAD, TYPE="ETB"       , L=LQc/2, K1=KCQ22,   APER=rQc
  QM22   : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=KQM22,   APER=rQF
  Q24901A: QUAD, TYPE="QE"        , L=LQE/2, K1=KQ24901, APER=rQE  ! moved 2.397400 m downstream of original Q24901 position
  Q24901B: QUAD, TYPE="QE"        , L=LQE/2, K1=KQ24901, APER=rQE  ! 10 cm between Q24901A & B (BPM in this 2nd quad)

! L3
!  KQFL3 :=  0.446670469684 ! was used for 12*2*pi MUX from BX24 to BX31
!  KQDL3 := -0.424793498653 ! was used for 12*2*pi MUX from BX24 to BX31
  KQFL3 :=  0.395798933782  ! gives psix = 50.76 deg, 44.64 deg, 45.00 deg between four LI28 wires
  KQDL3 := -0.395649286346  ! gives TCAV3 -> OTR30 right + WS28 psiy: 48.96 deg, 45.72 deg, 43.92 deg
  QFL3 : QUAD, TYPE="QE", L=LQE/2, K1=KQFL3, APER=rQE
  QDL3 : QUAD, TYPE="QE", L=LQE/2, K1=KQDL3, APER=rQE

  KQ25201 :=  0.697993592575
  KQ25301 := -0.478388226374
  KQ25401 :=  0.42896785871
  KQ25501 := -0.399864956514
  KQ25601 :=  KQFL3
  KQ25701 :=  KQDL3
  KQ25801 :=  0.407168436855
  KQ25901 := -0.388171234952

  KQ26201 :=  0.388578933647
  KQ26301 := -0.405404843557
  KQ26401 :=  KQFL3
  KQ26501 :=  KQDL3
  KQ26601 :=  KQFL3
  KQ26701 :=  KQDL3
  KQ26801 :=  0.406308742855
  KQ26901 := -0.388549789828

  KQ27201 :=  0.390161854669
  KQ27301 := -0.406474370795
  KQ27401 :=  KQFL3
  KQ27501 :=  KQDL3
  KQ27601 :=  KQFL3
  KQ27701 :=  KQDL3
  KQ27801 :=  0.406495928662
  KQ27901 := -0.388870517181

  KQ28201 :=  0.390352348197
  KQ28301 := -0.406461529502
  KQ28401 :=  KQFL3
  KQ28501 :=  KQDL3
  KQ28601 :=  KQFL3
  KQ28701 :=  KQDL3
  KQ28801 :=  0.406649614831
  KQ28901 := -0.389077444001

  KQ29201 :=  0.390429567548
  KQ29301 := -0.406416613477
  KQ29401 :=  KQFL3
  KQ29501 :=  KQDL3
  KQ29601 :=  KQFL3
  KQ29701 :=  KQDL3
  KQ29801 :=  0.406588653506
  KQ29901 := -0.389037213556

  KQ30201 :=  0.39027307525
  KQ30301 := -0.406178588622
  KQ30401 :=  KQFL3
  KQ30501 := -0.395648794699 !KQDL3
  KQ30601 :=  0.395797744026 !KQFL3
  KQ30701 := -0.395649272846 !KQDL3
  KQ30801 :=  0.418744300937 !0.418743774352

  Q25201 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ25201, APER=rQE
  Q25301 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ25301, APER=rQE
  Q25401 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ25401, APER=rQE
  Q25501 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ25501, APER=rQE
  Q25601 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ25601, APER=rQE
  Q25701 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ25701, APER=rQE
  Q25801 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ25801, APER=rQE
  Q25901 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ25901, APER=rQE

  Q26201 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ26201, APER=rQE
  Q26301 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ26301, APER=rQE
  Q26401 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ26401, APER=rQE
  Q26501 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ26501, APER=rQE
  Q26601 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ26601, APER=rQE
  Q26701 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ26701, APER=rQE
  Q26801 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ26801, APER=rQE
  Q26901 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ26901, APER=rQE

  Q27201 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ27201, APER=rQE
  Q27301 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ27301, APER=rQE
  Q27401 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ27401, APER=rQE
  Q27501 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ27501, APER=rQE
  Q27601 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ27601, APER=rQE
  Q27701 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ27701, APER=rQE
  Q27801 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ27801, APER=rQE
  Q27901 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ27901, APER=rQE

  Q28201 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ28201, APER=rQE
  Q28301 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ28301, APER=rQE
  Q28401 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ28401, APER=rQE
  Q28501 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ28501, APER=rQE
  Q28601 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ28601, APER=rQE
  Q28701 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ28701, APER=rQE
  Q28801 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ28801, APER=rQE
  Q28901 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ28901, APER=rQE

  Q29201 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ29201, APER=rQE
  Q29301 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ29301, APER=rQE
  Q29401 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ29401, APER=rQE
  Q29501 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ29501, APER=rQE
  Q29601 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ29601, APER=rQE
  Q29701 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ29701, APER=rQE
  Q29801 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ29801, APER=rQE
  Q29901 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ29901, APER=rQE

  Q30201 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ30201, APER=rQE
  Q30301 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ30301, APER=rQE
  Q30401 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ30401, APER=rQE
  Q30501 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ30501, APER=rQE
  Q30601 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ30601, APER=rQE
  Q30615A: MARK, TYPE="QW" !power supply decommissioned
  Q30615B: MARK, TYPE="QW" !power supply decommissioned
  Q30615C: MARK, TYPE="QW" !power supply decommissioned
  Q30701 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ30701, APER=rQE
  Q30715A: MARK, TYPE="QW" !power supply decommissioned
  Q30715B: MARK, TYPE="QW" !power supply decommissioned
  Q30715C: MARK, TYPE="QW" !power supply decommissioned
  Q30801 : QUAD, TYPE="QE", L=LQE/2,  K1=KQ30801, APER=rQE

! BSY

  K50Q   :=  0.252164058501
  KQ50Q1 := -K50Q
  KQ50Q2 :=  K50Q
  KQ50Q3 := -K50Q
  KQSM1  :=  0              !skew quad
  KQ5    := -0.159291446684
  KQ6    :=  0.234194141524
  KQA0   := -0.201473658651

  Q50Q1 : QUAD, TYPE="50Q1",       L=0.093671, K1=KQ50Q1, APER=0.010325
  Q50Q2 : QUAD, TYPE="50Q2",       L=0.162151, K1=KQ50Q2, APER=0.010325
  Q50Q3 : QUAD, TYPE="50Q3",       L=0.143254, K1=KQ50Q3, APER=0.010325
  QSM1  : QUAD, TYPE="ETA",        L=LQx/2,    K1=KQSM1,  APER=rQx     , TILT
  Q5    : QUAD, TYPE="0.91Q17.72", L=LQF/2,    K1=KQ5,    APER=rQF
  Q6    : QUAD, TYPE="0.91Q17.72", L=LQF/2,    K1=KQ6,    APER=rQF
  QA0   : QUAD, TYPE="0.91Q17.72", L=LQF/2,    K1=KQA0,   APER=rQF

! LTU vertical bend system quads:
! ------------------------------

  KQVM1 := -0.978990884832
  KQVM2 :=  0.666842383965
  KQVM3 :=  0.757009388096
  KQVM4 := -0.735502720623
  KQVB  := -0.42223036711
  QVM1 : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1= KQVM1, APER=rQF
  QVM2 : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1= KQVM2, APER=rQF
  QVB1 : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1= KQVB,  APER=rQF
  QVB2 : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=-KQVB,  APER=rQF
  QVB3 : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1= KQVB,  APER=rQF
  QVM3 : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1= KQVM3, APER=rQF
  QVM4 : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1= KQVM4, APER=rQF

! LTU dog-leg bend system quads:
! ------------------------------

  KQDL   := 0.44267670105
  KCQ31  := 0
  KCQ32  := 0
  KQT1   :=-0.420937827343
  KQT2   := 0.839614778043
  KQEM1  :=-0.3948193191
  KQEM2  := 0.437029374266
  KQEM3  :=-0.601204901993
  KQEM4  := 0.425609607536
!!KQEM1  := 0.523067013378         ! set KQED2=0 and match QEM1-4 for slice-x-emit on OTR33: BETX,Y=20.6 m, ALFX,Y=0 (20.6=12*DE3[L]/5) - 9/9/08
!!KQEM2  :=-0.353726700311
!!KQEM3  := 0.476261669139         ! use nearby QEM3V quad to scan slice-x-emit on OTR33
!!KQEM4  :=-0.277924519027
  KQUM1  := 0.438152708498         ! for <beta>=30 m undulator
  KQUM2  :=-0.387122017170         ! for <beta>=30 m undulator
  KQUM3  := 0.092751923581         ! for <beta>=30 m undulator
  KQUM4  := 0.340037095214         ! for <beta>=30 m undulator
  KQED2  := 0.402753198232*1       ! ED2 FODO quad strength (set =0 for slice-emit on OTR33)
  QDL31  : QUAD, TYPE="Q150kG", L=LQA/2, K1=KQDL, APER=rQA
  QDL32  : QUAD, TYPE="Q150kG", L=LQA/2, K1=KQDL, APER=rQA
  QDL33  : QUAD, TYPE="Q150kG", L=LQA/2, K1=KQDL, APER=rQA
  QDL34  : QUAD, TYPE="Q150kG", L=LQA/2, K1=KQDL, APER=rQA
  CQ31   : QUAD, TYPE="ETA", L=LQx/2, K1=KCQ31, APER=rQx
  CQ32   : QUAD, TYPE="ETA", L=LQx/2, K1=KCQ32, APER=rQx
  QT11   : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=KQT1, APER=rQF
  QT12   : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=KQT2, APER=rQF
  QT13   : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=KQT1, APER=rQF
  QT21   : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=KQT1, APER=rQF
  QT22   : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=KQT2, APER=rQF
  QT23   : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=KQT1, APER=rQF
  QT31   : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=KQT1, APER=rQF
  QT32   : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=KQT2, APER=rQF
  QT33   : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=KQT1, APER=rQF
  QT41   : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=KQT1, APER=rQF
  QT42   : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=KQT2, APER=rQF
  QT43   : QUAD, TYPE="0.91Q17.72", L=LQF/2, K1=KQT1, APER=rQF
  QE31   : QUAD, TYPE="ETA", L=LQx/2, K1=+KQED2, APER=rQx
  QE32   : QUAD, TYPE="ETA", L=LQx/2, K1=-KQED2, APER=rQx
  QE33   : QUAD, TYPE="ETA", L=LQx/2, K1=+KQED2, APER=rQx
  QE34   : QUAD, TYPE="ETA", L=LQx/2, K1=-KQED2, APER=rQx
  QE35   : QUAD, TYPE="ETA", L=LQx/2, K1=+KQED2, APER=rQx
  QE36   : QUAD, TYPE="ETA", L=LQx/2, K1=-KQED2, APER=rQx
  QEM1   : QUAD, TYPE="Q150kG", L=LQA/2, K1=KQEM1, APER=rQA
  QEM2   : QUAD, TYPE="Q150kG", L=LQA/2, K1=KQEM2, APER=rQA
  QEM3   : QUAD, TYPE="Q150kG", L=LQA/2, K1=KQEM3, APER=rQA
  QEM3V  : QUAD, TYPE="ETA", L=LQx/2, K1=0, APER=rQx
  QEM4   : QUAD, TYPE="Q150kG", L=LQA/2, K1=KQEM4, APER=rQA
  QUM1   : QUAD, TYPE="Q150kG", L=LQA/2, K1=KQUM1, APER=rQA
  QUM2   : QUAD, TYPE="Q150kG", L=LQA/2, K1=KQUM2, APER=rQA
  QUM3   : QUAD, TYPE="Q150kG", L=LQA/2, K1=KQUM3, APER=rQA
  QUM4   : QUAD, TYPE="Q150kG", L=LQA/2, K1=KQUM4, APER=rQA

! LTU stuff:
! ---------

  LPCTDKIK:= 0.8128                                            ! length of each if 4 muon protection collimator after TDKIK (0.875" ID w/pipe)
  PCTDKIK1: ECOL,L=LPCTDKIK,XSIZE=11.1125E-3,YSIZE=11.1125E-3  ! muon collimator after SBD TDKIK in-line dump
  PCTDKIK2: ECOL,L=LPCTDKIK,XSIZE=11.1125E-3,YSIZE=11.1125E-3  ! muon collimator after SBD TDKIK in-line dump
  PCTDKIK3: ECOL,L=LPCTDKIK,XSIZE=11.1125E-3,YSIZE=11.1125E-3  ! muon collimator after SBD TDKIK in-line dump
  PCTDKIK4: ECOL,L=LPCTDKIK,XSIZE=11.1125E-3,YSIZE=11.1125E-3  ! muon collimator after SBD TDKIK in-line dump
  DTDUND1 : DRIFT, L=1.057391 !0.5+0.127+1.087896-0.003189     ! drift before pre-undulator tune-up dump
  DTDUND2 : DRIFT, L=0.37935                                   ! drift after pre-undulator tune-up dump
  PCMUON  : ECOL,L=1.1684,XSIZE=8.64E-03/2,YSIZE=4.32E-03/2    ! muon scattering collimator after pre-undulator tune-up dump (ID from Rago: 7/18/08)
  DVV35   : DRIFT, L=1.780-0.254-1.087896+0.003189             ! drift after pre-undulator vacuum valve
  VV999   : MARK                                               ! new vacuum valve just upbeam of undulator
  VV36    : MARK                                               ! treaty-point vacuum valve just downbeam of undulator
  VV37    : MARK                                               ! vac. valve in dumpline
  VV38    : MARK                                               ! vac. valve in safety-dump line

! Undulator:
! ---------
  gamf   :=  Ef/mc2                                   ! Lorentz energy factor in undulator [ ]
  Kund   :=   3.500;                                  ! Undulator parameter (rms) [ ]
  lamu   :=   0.030;                                  ! Undulator period [m]
  GQF    :=  38.461538;                               ! Undulator F-quad gradient [T/m] (3 T integrated gradient)
  GQD    := -38.461538;                               ! Undulator D-quad gradient [T/m] (3 T integrated gradient)
  LQu    :=   0.078;                                  ! Undulator quadrupole effective length [m]
  Lseg   :=   3.400;                                  ! Undulator segment length [m]
  Lue    :=   0.035                                   ! Undulator termination length (approx) [m]
  Lund   :=   Lseg - 2*Lue;                           ! Undulator segment length without terminations [m]
  Lundh  :=   Lund/2
  shrt   :=   0.470;                                  ! Standard short break length [m]
  long   :=   0.898;                                  ! Standard long break length [m]
  LRFBu  :=   0                                       ! undulator RF-BPM only implemented as zero length monitor
  Lbr1   :=   6.889E-2                                ! und-seg to quad [m]
  Lbr3   :=   9.111E-2                                ! quad to BPM [m]
  Lbr4   :=   5.8577E-2                               ! Radiation monitor to segment [m]
  Lbrwm  :=   7.1683E-2                               ! BFW to radiation monitor [m]
  Lbrs   :=   shrt-LRFBu-LQu-Lbr1-Lbr3-Lbr4-Lbrwm;    ! Standard short break length (BPM-to-quad distance) [m]
  LBUVV2 :=   0.2                                     ! drift length after inline vaccum valve
  LBUVV1 :=   Lbrl - LBUVV2                           ! drift length before inline vaccum valve
  Lbrl   :=   long-LRFBu-LQu-Lbr1-Lbr3-Lbr4-Lbrwm;    ! Standard long break length (BPM-to-quad distance) [m]

  kqund  := (Kund*2*pi/lamu/sqrt(2)/gamf)^2           ! natural undulator focusing "k" in y-plane [m^-2]
  kQF    := 1E-9*GQF*clight/Ef;                       ! QF undulator quadrupole focusing "k" [m^-2]
  kQD    := 1E-9*GQD*clight/Ef;                       ! QD undulator quadrupole focusing "k" [m^-2]
  kQU33  := -0.304403258403                           ! XTCAV optics
  VALUE, Lundh,Lbrs,Lbrl,kqund,gamf,kQF,kQD,kQU33

  QU01   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad (even numbers are QF's, odd are QD's)
  QU02   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU03   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU04   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU05   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU06   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU07   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU08   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU09   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU10   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU11   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU12   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU13   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU14   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU15   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU16   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU17   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU18   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU19   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU20   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU21   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU22   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU23   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU24   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU25   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU26   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU27   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU28   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU29   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU30   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU31   : QUAD, TYPE="QUND", L=LQu/2, K1=kQD        ! undulator quad
  QU32   : QUAD, TYPE="QUND", L=LQu/2, K1=kQF        ! undulator quad
  QU33   : QUAD, TYPE="QUND", L=LQu/2, K1=kQU33      ! undulator quad

  RFBU00 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU01 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU02 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU03 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU04 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU05 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU06 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU07 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU08 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU09 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU10 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU11 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU12 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU13 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU14 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU15 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU16 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU17 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU18 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU19 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU20 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU21 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU22 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU23 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU24 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU25 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU26 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU27 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU28 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU29 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU30 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU31 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU32 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU33 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs
  RFBU34 : MONI, L=LRFBu, TYPE="01_um_res"           ! undulator BPMs

  BFW00  : INST      ! Beam Finder Wire
  BFW01  : INST      ! Beam Finder Wire
  BFW02  : INST      ! Beam Finder Wire
  BFW03  : INST      ! Beam Finder Wire
  BFW04  : INST      ! Beam Finder Wire
  BFW05  : INST      ! Beam Finder Wire
  BFW06  : INST      ! Beam Finder Wire
  BFW07  : INST      ! Beam Finder Wire
  BFW08  : INST      ! Beam Finder Wire
  BFW09  : INST      ! Beam Finder Wire
  BFW10  : INST      ! Beam Finder Wire
  BFW11  : INST      ! Beam Finder Wire
  BFW12  : INST      ! Beam Finder Wire
  BFW13  : INST      ! Beam Finder Wire
  BFW14  : INST      ! Beam Finder Wire
  BFW15  : INST      ! Beam Finder Wire
  BFW16  : INST      ! Beam Finder Wire
  BFW17  : INST      ! Beam Finder Wire
  BFW18  : INST      ! Beam Finder Wire
  BFW19  : INST      ! Beam Finder Wire
  BFW20  : INST      ! Beam Finder Wire
  BFW21  : INST      ! Beam Finder Wire
  BFW22  : INST      ! Beam Finder Wire
  BFW23  : INST      ! Beam Finder Wire
  BFW24  : INST      ! Beam Finder Wire
  BFW25  : INST      ! Beam Finder Wire
  BFW26  : INST      ! Beam Finder Wire
  BFW27  : INST      ! Beam Finder Wire
  BFW28  : INST      ! Beam Finder Wire
  BFW29  : INST      ! Beam Finder Wire
  BFW30  : INST      ! Beam Finder Wire
  BFW31  : INST      ! Beam Finder Wire
  BFW32  : INST      ! Beam Finder Wire
  BFW33  : INST      ! Beam Finder Wire

  XCU01  : HKICK     ! undulator X-steering coil in quad
  XCU02  : HKICK     ! undulator X-steering coil in quad
  XCU03  : HKICK     ! undulator X-steering coil in quad
  XCU04  : HKICK     ! undulator X-steering coil in quad
  XCU05  : HKICK     ! undulator X-steering coil in quad
  XCU06  : HKICK     ! undulator X-steering coil in quad
  XCU07  : HKICK     ! undulator X-steering coil in quad
  XCU08  : HKICK     ! undulator X-steering coil in quad
  XCU09  : HKICK     ! undulator X-steering coil in quad
  XCU10  : HKICK     ! undulator X-steering coil in quad
  XCU11  : HKICK     ! undulator X-steering coil in quad
  XCU12  : HKICK     ! undulator X-steering coil in quad
  XCU13  : HKICK     ! undulator X-steering coil in quad
  XCU14  : HKICK     ! undulator X-steering coil in quad
  XCU15  : HKICK     ! undulator X-steering coil in quad
  XCU16  : HKICK     ! undulator X-steering coil in quad
  XCU17  : HKICK     ! undulator X-steering coil in quad
  XCU18  : HKICK     ! undulator X-steering coil in quad
  XCU19  : HKICK     ! undulator X-steering coil in quad
  XCU20  : HKICK     ! undulator X-steering coil in quad
  XCU21  : HKICK     ! undulator X-steering coil in quad
  XCU22  : HKICK     ! undulator X-steering coil in quad
  XCU23  : HKICK     ! undulator X-steering coil in quad
  XCU24  : HKICK     ! undulator X-steering coil in quad
  XCU25  : HKICK     ! undulator X-steering coil in quad
  XCU26  : HKICK     ! undulator X-steering coil in quad
  XCU27  : HKICK     ! undulator X-steering coil in quad
  XCU28  : HKICK     ! undulator X-steering coil in quad
  XCU29  : HKICK     ! undulator X-steering coil in quad
  XCU30  : HKICK     ! undulator X-steering coil in quad
  XCU31  : HKICK     ! undulator X-steering coil in quad
  XCU32  : HKICK     ! undulator X-steering coil in quad
  XCU33  : HKICK     ! undulator X-steering coil in quad

  YCU01  : VKICK     ! undulator Y-steering coil in quad
  YCU02  : VKICK     ! undulator Y-steering coil in quad
  YCU03  : VKICK     ! undulator Y-steering coil in quad
  YCU04  : VKICK     ! undulator Y-steering coil in quad
  YCU05  : VKICK     ! undulator Y-steering coil in quad
  YCU06  : VKICK     ! undulator Y-steering coil in quad
  YCU07  : VKICK     ! undulator Y-steering coil in quad
  YCU08  : VKICK     ! undulator Y-steering coil in quad
  YCU09  : VKICK     ! undulator Y-steering coil in quad
  YCU10  : VKICK     ! undulator Y-steering coil in quad
  YCU11  : VKICK     ! undulator Y-steering coil in quad
  YCU12  : VKICK     ! undulator Y-steering coil in quad
  YCU13  : VKICK     ! undulator Y-steering coil in quad
  YCU14  : VKICK     ! undulator Y-steering coil in quad
  YCU15  : VKICK     ! undulator Y-steering coil in quad
  YCU16  : VKICK     ! undulator Y-steering coil in quad
  YCU17  : VKICK     ! undulator Y-steering coil in quad
  YCU18  : VKICK     ! undulator Y-steering coil in quad
  YCU19  : VKICK     ! undulator Y-steering coil in quad
  YCU20  : VKICK     ! undulator Y-steering coil in quad
  YCU21  : VKICK     ! undulator Y-steering coil in quad
  YCU22  : VKICK     ! undulator Y-steering coil in quad
  YCU23  : VKICK     ! undulator Y-steering coil in quad
  YCU24  : VKICK     ! undulator Y-steering coil in quad
  YCU25  : VKICK     ! undulator Y-steering coil in quad
  YCU26  : VKICK     ! undulator Y-steering coil in quad
  YCU27  : VKICK     ! undulator Y-steering coil in quad
  YCU28  : VKICK     ! undulator Y-steering coil in quad
  YCU29  : VKICK     ! undulator Y-steering coil in quad
  YCU30  : VKICK     ! undulator Y-steering coil in quad
  YCU31  : VKICK     ! undulator Y-steering coil in quad
  YCU32  : VKICK     ! undulator Y-steering coil in quad
  YCU33  : VKICK     ! undulator Y-steering coil in quad

  dLbfw := 3.6016-3.63815 !BFW location adjustment per H. Loos

  DF0    : DRIFT, L=LQu-0.04241                      ! No quad + correction to maintain symmetry
  DB0    : DRIFT, L=0.5653-Lbr1-LQu-Lbr3-2*LRFBu     ! sets UNDTERM to Jim Welch's Z' value
  DB0a   : DRIFT, L=0.184708-LRFBu                   ! RFBU33 exit to RFBU34 entrance
  DB0b   : DRIFT, L=DB0[L]-DB0a[L]                   ! RFBU34 exit to UNDTERM
  DB1    : DRIFT, L=Lbr1                             ! drift from segment to quad
  DB3    : DRIFT, L=Lbr3                             ! drift from quad to BPM
  DB4    : DRIFT, L=Lbr4                             ! Radiation monitor to segment drift
  DBWM   : DRIFT, L=Lbrwm+dLbfw                      ! BFW to radiation monitor drift
  DBRS   : DRIFT, L=Lbrs-dLbfw                       ! standard short undulator drift from BPM to segment
  DBRL   : DRIFT, L=Lbrl-dLbfw                       ! standard long undulator drift from BPM to segment
  DT     : DRIFT, L=Lue                              ! undulator segment small terminations modeled as drift
  MUQ    : MARK                                      ! undulator quad center marker for beta matching in all quads

  DBUVV1  : DRIFT, L=LBUVV1                          ! drift before inline vaccum valve
  DBUVV2  : DRIFT, L=LBUVV2-dLbfw                    ! drift after inline vaccum valve
  VVU10   : MARK                                     ! inline vacuum valve in undulator chamber before girder 10
  VVU25   : MARK                                     ! inline vacuum valve in undulator chamber before girder 25
  DBRL25  : LINE=(DBUVV1,VVU25,DBUVV2)               ! long undulator drift from BPM to segment with inline value

  DBUVV1b : DRIFT, L=0.02075                         ! BOD10 drift
  DBUVV1a : DRIFT, L=DBUVV1[L]-DBUVV1b[L]            ! BOD10 drift
  DBRLb   : DRIFT, L=0.2573                          ! BOD13 drift
  DBRLa   : DRIFT, L=DBRL[L]-DBRLb[L]                ! BOD13 drift

  BOD10 : INST ! Beam Overlap Diagnostic
  BOD13 : INST ! Beam Overlap Diagnostic

  DBRL10 : LINE=(DBUVV1a,BOD10,DBUVV1b,VVU10,DBUVV2) ! long undulator drift from BPM to segment with BOD and inline value
  DBRL13 : LINE=(DBRLa,BOD13,DBRLb)                  ! standard long undulator drift from BPM to segment with BOD

! undulator segment modeled as R-matrix to include vertical natural focusing over all but its edge terminations:
  USEGH  : MATRIX, L=Lundh,                               &
           RM(1,1) = 1.0,                                 &
           RM(1,2) = Lundh,                               &
           RM(2,1) = 0.0,                                 &
           RM(2,2) = 1.0,                                 &
           RM(3,3) =  cos(Lundh*sqrt(kqund)),             &
           RM(3,4) =  sin(Lundh*sqrt(kqund))/sqrt(kqund), &
           RM(4,3) = -sin(Lundh*sqrt(kqund))*sqrt(kqund), &
           RM(4,4) =  cos(Lundh*sqrt(kqund))

  US01    : USEGH
  US02    : USEGH
  US03    : USEGH
  US04    : USEGH
  US05    : USEGH
  US06    : USEGH
  US07    : USEGH
  US08    : USEGH
  US09    : USEGH
  US10    : USEGH
  US11    : USEGH
  US12    : USEGH
  US13    : USEGH
  US14    : USEGH
  US15    : USEGH
  US16    : USEGH
  US17    : USEGH
  US18    : USEGH
  US19    : USEGH
  US20    : USEGH
  US21    : USEGH
  US22    : USEGH
  US23    : USEGH
  US24    : USEGH
  US25    : USEGH
  US26    : USEGH
  US27    : USEGH
  US28    : USEGH
  US29    : USEGH
  US30    : USEGH
  US31    : USEGH
  US32    : USEGH

  VALUE, USEGH[RM(1,2)],Lundh
  VALUE, USEGH[RM(3,3)],cos(Lundh*sqrt(kqund))
  VALUE, USEGH[RM(3,4)],sin(Lundh*sqrt(kqund))/sqrt(kqund)
  VALUE, USEGH[RM(4,3)],-sin(Lundh*sqrt(kqund))*sqrt(kqund)
  VALUE, USEGH[RM(4,4)],cos(Lundh*sqrt(kqund))

! "delta" undulator (modeled as R-matrix with no focusing)
  US33  : MATRIX, TYPE="delta", L=3.184/2, &
          RM(1,1) = 1.0,     RM(1,2) = 3.184/2, &
          RM(2,1) = 0.0,     RM(2,2) = 1.0,     &
          RM(3,3) = 1.0,     RM(3,4) = 3.184/2, &
          RM(4,3) = 0.0,     RM(4,4) = 1.0

  DUS33b : DRIF, L=1.682-US33[L]
  DUS33c : DRIF, L=0.012891527481
  DUS33a : DRIF, L=Lseg-DUS33b[L]-2*US33[L]-DUS33c[L]

  PS33 : MARK, TYPE="phase shifter"

  USTBK01 : LINE=(DT,US01,US01,DT)
  USTBK02 : LINE=(DT,US02,US02,DT)
  USTBK03 : LINE=(DT,US03,US03,DT)
  USTBK04 : LINE=(DT,US04,US04,DT)
  USTBK05 : LINE=(DT,US05,US05,DT)
  USTBK06 : LINE=(DT,US06,US06,DT)
  USTBK07 : LINE=(DT,US07,US07,DT)
  USTBK08 : LINE=(DT,US08,US08,DT)
 !USTBK09 : LINE=(DT,US09,US09,DT)
  USTBK09 : LINE=(SCHICANE)
  USTBK10 : LINE=(DT,US10,US10,DT)
  USTBK11 : LINE=(DT,US11,US11,DT)
  USTBK12 : LINE=(DT,US12,US12,DT)
  USTBK13 : LINE=(DT,US13,US13,DT)
  USTBK14 : LINE=(DT,US14,US14,DT)
  USTBK15 : LINE=(DT,US15,US15,DT)
 !USTBK16 : LINE=(DT,US16,US16,DT)
  USTBK16 : LINE=(CHICANE)
  USTBK17 : LINE=(DT,US17,US17,DT)
  USTBK18 : LINE=(DT,US18,US18,DT)
  USTBK19 : LINE=(DT,US19,US19,DT)
  USTBK20 : LINE=(DT,US20,US20,DT)
  USTBK21 : LINE=(DT,US21,US21,DT)
  USTBK22 : LINE=(DT,US22,US22,DT)
  USTBK23 : LINE=(DT,US23,US23,DT)
  USTBK24 : LINE=(DT,US24,US24,DT)
  USTBK25 : LINE=(DT,US25,US25,DT)
  USTBK26 : LINE=(DT,US26,US26,DT)
  USTBK27 : LINE=(DT,US27,US27,DT)
  USTBK28 : LINE=(DT,US28,US28,DT)
  USTBK29 : LINE=(DT,US29,US29,DT)
  USTBK30 : LINE=(DT,US30,US30,DT)
  USTBK31 : LINE=(DT,US31,US31,DT)
  USTBK32 : LINE=(DT,US32,US32,DT)
  USTBK33 : LINE=(DUS33a,PS33,DUS33b,US33,US33,DUS33c)  !delta undulator + phase shifter
  QBLK01  : LINE=(QU01,XCU01,MUQ,YCU01,QU01)
  QBLK02  : LINE=(QU02,XCU02,MUQ,YCU02,QU02)
  QBLK03  : LINE=(QU03,XCU03,MUQ,YCU03,QU03)
  QBLK04  : LINE=(QU04,XCU04,MUQ,YCU04,QU04)
  QBLK05  : LINE=(QU05,XCU05,MUQ,YCU05,QU05)
  QBLK06  : LINE=(QU06,XCU06,MUQ,YCU06,QU06)
  QBLK07  : LINE=(QU07,XCU07,MUQ,YCU07,QU07)
  QBLK08  : LINE=(QU08,XCU08,MUQ,YCU08,QU08)
  QBLK09  : LINE=(QU09,XCU09,MUQ,YCU09,QU09)
  QBLK10  : LINE=(QU10,XCU10,MUQ,YCU10,QU10)
  QBLK11  : LINE=(QU11,XCU11,MUQ,YCU11,QU11)
  QBLK12  : LINE=(QU12,XCU12,MUQ,YCU12,QU12)
  QBLK13  : LINE=(QU13,XCU13,MUQ,YCU13,QU13)
  QBLK14  : LINE=(QU14,XCU14,MUQ,YCU14,QU14)
  QBLK15  : LINE=(QU15,XCU15,MUQ,YCU15,QU15)
  QBLK16  : LINE=(QU16,XCU16,MUQ,YCU16,QU16)
  QBLK17  : LINE=(QU17,XCU17,MUQ,YCU17,QU17)
  QBLK18  : LINE=(QU18,XCU18,MUQ,YCU18,QU18)
  QBLK19  : LINE=(QU19,XCU19,MUQ,YCU19,QU19)
  QBLK20  : LINE=(QU20,XCU20,MUQ,YCU20,QU20)
  QBLK21  : LINE=(QU21,XCU21,MUQ,YCU21,QU21)
  QBLK22  : LINE=(QU22,XCU22,MUQ,YCU22,QU22)
  QBLK23  : LINE=(QU23,XCU23,MUQ,YCU23,QU23)
  QBLK24  : LINE=(QU24,XCU24,MUQ,YCU24,QU24)
  QBLK25  : LINE=(QU25,XCU25,MUQ,YCU25,QU25)
  QBLK26  : LINE=(QU26,XCU26,MUQ,YCU26,QU26)
  QBLK27  : LINE=(QU27,XCU27,MUQ,YCU27,QU27)
  QBLK28  : LINE=(QU28,XCU28,MUQ,YCU28,QU28)
  QBLK29  : LINE=(QU29,XCU29,MUQ,YCU29,QU29)
  QBLK30  : LINE=(QU30,XCU30,MUQ,YCU30,QU30)
  QBLK31  : LINE=(QU31,XCU31,MUQ,YCU31,QU31)
  QBLK32  : LINE=(QU32,XCU32,MUQ,YCU32,QU32)
  QBLK33  : LINE=(QU33,XCU33,MUQ,YCU33,QU33)

  GIRD01  : LINE=(BFW01,DBWM,DB4,USTBK01,DB1,QBLK01,DB3,RFBU01)
  GIRD02  : LINE=(BFW02,DBWM,DB4,USTBK02,DB1,QBLK02,DB3,RFBU02)
  GIRD03  : LINE=(BFW03,DBWM,DB4,USTBK03,DB1,QBLK03,DB3,RFBU03)
  GIRD04  : LINE=(BFW04,DBWM,DB4,USTBK04,DB1,QBLK04,DB3,RFBU04)
  GIRD05  : LINE=(BFW05,DBWM,DB4,USTBK05,DB1,QBLK05,DB3,RFBU05)
  GIRD06  : LINE=(BFW06,DBWM,DB4,USTBK06,DB1,QBLK06,DB3,RFBU06)
  GIRD07  : LINE=(BFW07,DBWM,DB4,USTBK07,DB1,QBLK07,DB3,RFBU07)
  GIRD08  : LINE=(BFW08,DBWM,DB4,USTBK08,DB1,QBLK08,DB3,RFBU08)
  GIRD09  : LINE=(BFW09,DBWM,DB4,USTBK09,DB1,QBLK09,DB3,RFBU09)
  GIRD10  : LINE=(BFW10,DBWM,DB4,USTBK10,DB1,QBLK10,DB3,RFBU10)
  GIRD11  : LINE=(BFW11,DBWM,DB4,USTBK11,DB1,QBLK11,DB3,RFBU11)
  GIRD12  : LINE=(BFW12,DBWM,DB4,USTBK12,DB1,QBLK12,DB3,RFBU12)
  GIRD13  : LINE=(BFW13,DBWM,DB4,USTBK13,DB1,QBLK13,DB3,RFBU13)
  GIRD14  : LINE=(BFW14,DBWM,DB4,USTBK14,DB1,QBLK14,DB3,RFBU14)
  GIRD15  : LINE=(BFW15,DBWM,DB4,USTBK15,DB1,QBLK15,DB3,RFBU15)
  GIRD16  : LINE=(BFW16,DBWM,DB4,USTBK16,DB1,QBLK16,DB3,RFBU16)
  GIRD17  : LINE=(BFW17,DBWM,DB4,USTBK17,DB1,QBLK17,DB3,RFBU17)
  GIRD18  : LINE=(BFW18,DBWM,DB4,USTBK18,DB1,QBLK18,DB3,RFBU18)
  GIRD19  : LINE=(BFW19,DBWM,DB4,USTBK19,DB1,QBLK19,DB3,RFBU19)
  GIRD20  : LINE=(BFW20,DBWM,DB4,USTBK20,DB1,QBLK20,DB3,RFBU20)
  GIRD21  : LINE=(BFW21,DBWM,DB4,USTBK21,DB1,QBLK21,DB3,RFBU21)
  GIRD22  : LINE=(BFW22,DBWM,DB4,USTBK22,DB1,QBLK22,DB3,RFBU22)
  GIRD23  : LINE=(BFW23,DBWM,DB4,USTBK23,DB1,QBLK23,DB3,RFBU23)
  GIRD24  : LINE=(BFW24,DBWM,DB4,USTBK24,DB1,QBLK24,DB3,RFBU24)
  GIRD25  : LINE=(BFW25,DBWM,DB4,USTBK25,DB1,QBLK25,DB3,RFBU25)
  GIRD26  : LINE=(BFW26,DBWM,DB4,USTBK26,DB1,QBLK26,DB3,RFBU26)
  GIRD27  : LINE=(BFW27,DBWM,DB4,USTBK27,DB1,QBLK27,DB3,RFBU27)
  GIRD28  : LINE=(BFW28,DBWM,DB4,USTBK28,DB1,QBLK28,DB3,RFBU28)
  GIRD29  : LINE=(BFW29,DBWM,DB4,USTBK29,DB1,QBLK29,DB3,RFBU29)
  GIRD30  : LINE=(BFW30,DBWM,DB4,USTBK30,DB1,QBLK30,DB3,RFBU30)
  GIRD31  : LINE=(BFW31,DBWM,DB4,USTBK31,DB1,QBLK31,DB3,RFBU31)
  GIRD32  : LINE=(BFW32,DBWM,DB4,USTBK32,DB1,QBLK32,DB3,RFBU32)
  GIRD33  : LINE=(BFW33,DBWM,DB4,USTBK33,DB1,QBLK33,DB3,RFBU33)

  UNDCL   : LINE=(DBRS,  GIRD01,DBRS,GIRD02,DBRS,GIRD03, &
                  DBRL,  GIRD04,DBRS,GIRD05,DBRS,GIRD06, &
                  DBRL,  GIRD07,DBRS,GIRD08,DBRS,GIRD09, &
                  DBRL10,GIRD10,DBRS,GIRD11,DBRS,GIRD12, &
                  DBRL13,GIRD13,DBRS,GIRD14,DBRS,GIRD15, &
                  DBRL,  GIRD16,DBRS,GIRD17,DBRS,GIRD18, &
                  DBRL,  GIRD19,DBRS,GIRD20,DBRS,GIRD21, &
                  DBRL,  GIRD22,DBRS,GIRD23,DBRS,GIRD24, &
                  DBRL25,GIRD25,DBRS,GIRD26,DBRS,GIRD27, &
                  DBRL,  GIRD28,DBRS,GIRD29,DBRS,GIRD30, &
                  DBRL,  GIRD31,DBRS,GIRD32,DBRS,GIRD33)

  UND     : LINE=(UNDSTART,DF0,DB3,RFBU00,UNDCL,DB0a,RFBU34,DB0B,UNDTERM)

! Undulator exit section:
! ----------------------

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

  KQUE1 := -0.063065263603 !XTCAV optics
  KQUE2 :=  0.135705662403 !XTCAV optics

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

  DUE1a  : DRIF, L=1.790539
  DUE1b  : DRIF, L=9.34167
  DUE1c  : DRIF, L=0.818826
  DUE2a  : DRIF, L=1.0
  DUE2b  : DRIF, L=5.899673 !5.885373
  DUE2c  : DRIF, L=0.188    !0.1935
  DUE2d  : DRIF, L=3.9436   !3.937447
  DUE2e  : DRIF, L=0.4946   !0.4699
  DUE2f  : DRIF, L=0.460047 !0.4997
  DUE3a  : DRIF, L=5.5785535
  DUE3b  : DRIF, L=1.7968755
  DPCVV  : DRIF, L=0.397
  DVVXTC : DRIF, L=0.32
  DXTC12 : DRIF, L=0.373/2
  DXTCSP : DRIF, L=0.381
  DUE4   : DRIF, L=0.394
  DUE5a  : DRIF, L=0.367
  DUE5b  : DRIF, L=0.514
  DUE5c  : DRIF, L=0.198151 !0.846
  DUE5d  : DRIF, L=0.471
  DUE5e  : DRIF, L=0.137
  DSB0a  : DRIF, L=0.0
  DSB0b  : DRIF, L=0.163
  DSB0c  : DRIF, L=0.356
  DSB0d  : DRIF, L=0.202
  DSB0e  : DRIF, L=0.372634

  UEbeg  : MARK
  TRUE1  : INST !Be foil inserter (THz)
  PCXTC  : ECOL !XTCAV photon collimator (9 mm aperture)
  VVXTC  : MARK !XTCAV vacuum valve
  MXTC   : MARK !centerline between XTC01 and XTC02 (for matching)
  SPXTC  : INST !XTCAV spoiler
  UEend  : MARK

! Dump:
! ----
  KQDmp  := -0.135524516196 !XTCAV optics
  QDmp1  : QUAD,TYPE="3.25Q20",L=LQD/2,K1=KQDmp,APER=rQD
  QDmp2  : QUAD,TYPE="3.25Q20",L=LQD/2,K1=KQDmp,APER=rQD
  Ddmpv  := -0.73352263654
  LDS    := 0.300-0.026027*2
  LDSC   := 0.499225-0.026027+0.1124278-0.008032
  DDmp1  : DRIFT, L=0.30
  D2d    : DRIFT, L=0.75
  DDmp3  : DRIFT, L=0.75
  DS     : DRIFT, L=LDS
  DSc    : DRIFT, L=LDSC
  DD1a   : DRIFT, L=2.6512616
  DD1b   : DRIFT, L=6.8896877-LQD/2-Ddmpv+0.017094407653
  DD1f   : DRIFT, L=0.266645-0.017094407653
  DD1c   : DRIFT, L=0.4+0.2920945-0.266645-2*0.0381452
  DD1d   : DRIFT, L=0.25-0.0079372
  DD1e   : DRIFT, L=0.25+0.0079372
  DD2a   : DRIFT, L=0.4+0.0634916+0.0115084
  DD2b   : DRIFT, L=8.425460-LQD/2+Ddmpv-0.15-0.0634916-0.049684-0.0115084
  DD3a   : DRIFT, L=0.3+0.049684+0.001583
  DD3b   : DRIFT, L=0.3-0.001583-0.1447026
  DD3c   : DRIFT, L=2.580+0.1447026-0.2441932
  DD3d   : DRIFT, L=0.2441932
  DD3e   : DRIFT, L=0.2857474-0.2441932
  DPM1a  : DRIFT, L=6.851618-0.694995

 !DPM1b  : DRIFT, L=1.820699-LSTPR/2+0.163401-0.1174
 !DST0   : DRIFT, L=0.1112
 !DMUSPL : DRIFT, L=5.1031

  DXDCu  : DRIFT, L=1.106223
  XDCa   : DRIFT, L=0.312777
  XDCb   : DRIFT, L=0.693
  XDCc   : DRIFT, L=0.542
  XDCd   : DRIFT, L=0.255376
  DXDCd  : DRIFT, L=4.323924

  DSP0   : DRIFT, L=0.3667
  DST1   : DRIFT, L=0.1112
  DPM1c  : DRIFT, L=2.6165
  DPM1d  : DRIFT, L=0.50+0.112-0.296712+0.008013
  DPM1   : DRIFT, L=0.30/cos(ABpm)
  DPM2   : DRIFT, L=0.30/cos(2*ABpm)
  DSFT   : DRIFT, L=11.934976
  DPM2e  : DRIFT, L=0.076213

  DMPend : MARK
  OTRDMP : PROF, TYPE="OTR" !Dump screen
  LPCPM  : = 0.076
  PCPM1L : ECOL, L=LPCPM/cos(3*ABdm0),XSIZE=0.0250,YSIZE=0.0250
  BTM1L  : INST  ! Burn-Through-Monitor behind PCPM1L
  PCPM2L : ECOL, L=LPCPM/cos(3*ABdm0),XSIZE=0.0250,YSIZE=0.0250
  BTM2L  : INST  ! Burn-Through-Monitor behind PCPM2L

! Safety Dump:
! -----------
  SFTBEG : MARK ! start of safety dump (entrance of turned-off BYD1)
  PCPM0  : ECOL,  L=LPCPM,XSIZE=0.0168,YSIZE=0.0103  ! added Sep. 13, 2007 per J. Langton
  PCPM1  : ECOL,  L=LPCPM,XSIZE=0.0168,YSIZE=0.0103
  PCPM2  : ECOL,  L=LPCPM,XSIZE=0.0198,YSIZE=0.0121
  BTM0   : INST  ! Burn-Through-Monitor behind PCPM1L
  BTM1   : INST  ! Burn-Through-Monitor behind PCPM1L
  BTM2   : INST  ! Burn-Through-Monitor behind PCPM1L
  DYD1   : DRIFT, L=LBdm*cos(1*ABdm0/2)
  DYD2   : DRIFT, L=LBdm*cos(3*ABdm0/2)
  DYD3   : DRIFT, L=LBdm*cos(5*ABdm0/2)
  DSS1   : DRIFT, L=LDS*cos(1*ABdm0)
  DSS2   : DRIFT, L=LDS*cos(2*ABdm0)
  DScS1  : DRIFT, L=LDSC*cos(3*ABdm0)/2+0.188398+0.004
  DScS2  : DRIFT, L=LDSC*cos(3*ABdm0)/2-0.188398-0.004
  BTMSFT : INST  ! Burn-Through-Monitor behind saftey-dump

! ==============================================================================
! DRIFTs
! ------------------------------------------------------------------------------

! L1/2/3 FODO cells

  D9   : DRIF, L=DLWL9
  D10  : DRIF, L=DLWL10
  DAQ1 : DRIF, L=0.0342
  DAQ2 : DRIF, L=0.027

! injector geometry

  LGGUN   := 7.51*0.3048
  LGL0    := 2*3.0441+1.0
  LGBEND  := 0.95 + 2*0.3048     ! add 12" to either side of QB for more room (22JAN04 - PE)
  LGEMIT  := 9.000328707307
  LGMATCH := 1.5134597681

  DGGUN   : DRIF, L=LGGUN
  DGL0    : DRIF, L=LGL0

! L0

  LOADLOCK : DRIF, L=LGGUN-1.42
  DL00     : DRIF, L=-LOADLOCK[L] !from cathode back to u/s end of loadlock
  DL01a    : DRIF, L=0.19601-LSOL1/2
  DL01a1   : DRIF, L=0.07851
  DL01a2   : DRIF, L=0.11609
  DL01a3   : DRIF, L=0.10461
  DL01a4   : DRIF, L=0.0170+0.0014
  DL01a5   : DRIF, L=0.0132-0.00223
  DL01b    : DRIF, L=0.0825
  DL01c    : DRIF, L=0.1340-0.00353-0.003175
  DL01d    : DRIF, L=0.1008464-0.0155757
  DL01h    : DRIF, L=0.0581886
  DL01e    : DRIF, L=0.2286-DXG0[L]-0.00536+0.0155757
  DL01f    : DRIF, L=0.1353+0.00708
  DL01f2   : DRIF, L=0.0277+0.00167
  DL01g    : DRIF, L=0.0740-0.00341
  DL02a1   : DRIF, L=0.066356+0.0021436-0.008205
  DL02a2   : DRIF, L=0.104580+0.008205
  DL02a3   : DRIF, L=0.098776-LQx/2+0.028834
  DL02b1   : DRIF, L=0.169672-LQx/2-0.028834+0.007646
  DL02b2   : DRIF, L=0.185928-LQx/2-0.007646+0.001610
  DL02c    : DRIF, L=0.121498-LQx/2-0.001610

! Heater-Chicane:

! LSRHTR_ON := 1E-12          !set to 1E-12 for laser heater bends & undulator OFF and 1.0 for ON (nominal)
  LSRHTR_ON := 1              !set to 1E-12 for laser heater bends & undulator OFF and 1.0 for ON (nominal)
  Brhoh := Cb*Ei              !beam rigidity at heater (kG-m)
  BBh1  := -4.751481741801*LSRHTR_ON    !heater-chicane bend field for 35-mm etaX_pk (kG)
  RBh1  := Brhoh/BBh1         !heater-chicane bend radius (m)
  ABh1  := ASIN(LBh/RBh1)     !heater-chicane bend angle (rad)
  ABh1S := ASIN((LBh/2)/RBh1) !"short" half heater-chicane bend angle (rad)
  LBh1S := RBh1*ABh1S         !"short" half heater-chicane bend path length (m)
  ABh1L := ABh1-ABh1S         !"long" half heater-chicane bend angle (rad)
  LBh1L := RBh1*ABh1L         !"long" half heater-chicane bend path length (m)

  Dh00   : DRIF, L=0.13453045-dLBh/2
  Dh01   : DRIF, L=(0.155-dLBh)/COS(ABh1), TYPE="CSR"
  Dh02a  : DRIF, L=0.06717020-dLBh/2, TYPE="CSR"
  Dh03a  : DRIF, L=0.09290825, TYPE="CSR"
  Dh03b  : DRIF, L=0.08401830, TYPE="CSR"
  Dh02b  : DRIF, L=0.09503020-dLBh/2, TYPE="CSR"
  Dh06   : DRIF, L=0.13010070-dLBh/2, TYPE="CSR"
  HTRUND : INST

  BXh1A : SBEN, TYPE="5D3.9", L=LBh1S, ANGLE=+ABh1S, HGAP=GBh/2, &
                E1=0, FINT=0.400, FINTX=0
  BXh1B : SBEN, TYPE="5D3.9", L=LBh1L, ANGLE=+ABh1L, HGAP=GBh/2, &
                FINT=0, E2=+ABh1, FINTX=0.400
  BXh2A : SBEN, TYPE="5D3.9", L=LBh1L, ANGLE=-ABh1L, HGAP=GBh/2, &
                E1=-ABh1, FINT=0.400, FINTX=0
  BXh2B : SBEN, TYPE="5D3.9", L=LBh1S, ANGLE=-ABh1S, HGAP=GBh/2, &
                FINT=0, E2=0, FINTX=0.400
  BXh3A : SBEN, TYPE="5D3.9", L=LBh1S, ANGLE=-ABh1S, HGAP=GBh/2, &
                E1=0, FINT=0.400, FINTX=0
  BXh3B : SBEN, TYPE="5D3.9", L=LBh1L, ANGLE=-ABh1L, HGAP=GBh/2, &
                FINT=0, E2=-ABh1, FINTX=0.400
  BXh4A : SBEN, TYPE="5D3.9", L=LBh1L, ANGLE=+ABh1L, HGAP=GBh/2, &
                E1=+ABh1, FINT=0.400, FINTX=0
  BXh4B : SBEN, TYPE="5D3.9", L=LBh1S, ANGLE=+ABh1S, HGAP=GBh/2, &
                FINT=0, E2=0, FINTX=0.400

! Laser-Heater Undulator Model:

  lam   := 0.054                            ! laser-heater undulator period [m]
  lamr  := 758E-9                           ! heater laser wavelength [m]
  gami  := Ei/mc2                           ! Lorentz energy factor in laser-heater undulator [ ]
  K_und := LSRHTR_ON*sqrt(2*(lamr*2*gami^2/lam - 1))  ! undulator K for laser heater und.
  Lhun  := 0.506263                         ! length of laser-heater undulator
  kqlh  := (K_und*2*pi/lam/sqrt(2)/gami)^2  ! natural undulator focusing "k" in y-plane [m^-2]
  VALUE,gami,kqlh,K_und

  LHBEG  : MARK
  LHEND  : MARK

! laser-heater undulator modeled as R-matrix to include vertical natural focusing:
  LH_UND : MATRIX, L=Lhun/2,                    &
  RM(1,1) = 1.0,                                &
  RM(1,2) = Lhun/2,                             &
  RM(2,1) = 0.0,                                &
  RM(2,2) = 1.0,                                &
  RM(3,3) =  cos(Lhun/2*sqrt(kqlh)),            &
  RM(3,4) =  sin(Lhun/2*sqrt(kqlh))/sqrt(kqlh), &
  RM(4,3) = -sin(Lhun/2*sqrt(kqlh))*sqrt(kqlh), &
  RM(4,4) =  cos(Lhun/2*sqrt(kqlh))
! RM(5,6) =  Lhun/2/(gami^2)*(1+(K_und^2)/2)

  VALUE, LH_UND[RM(1,2)],Lhun/2
  VALUE, LH_UND[RM(3,3)],cos(Lhun/2*sqrt(kqlh))
  VALUE, LH_UND[RM(3,4)],sin(Lhun/2*sqrt(kqlh))/sqrt(kqlh)
  VALUE, LH_UND[RM(4,3)],-sin(Lhun/2*sqrt(kqlh))*sqrt(kqlh)
  VALUE, LH_UND[RM(4,4)],cos(Lhun/2*sqrt(kqlh))
! VALUE, LH_UND[RM(5,6)],Lhun/2/(gami^2)*(1+(K_und^2)/2)

! DL1

  LWS01_03 :=  3.827458            ! distance from WS01 to WS03 wire centers [m] (changed 06MAY05 -PE)
  BMIN0 := LWS01_03/SQRT(3)/2      ! betaX=betaY at WS02 where waist is located (12NOV03 -PE)
  VALUE, BMIN0
  MRK0 : MARK
  DE00 : DRIF, L=0.024994
  DE00a: DRIF, L=0.070613-LQx/2
  DE01a: DRIF, L=0.130373-LQx/2
  DE01b: DRIF, L=0.176359-LQx/2
  DE01c: DRIF, L=0.094781
  DE02 : DRIF, L=0.0897395-LQx/2
  DE03a: DRIF, L=0.16832-LQx/2
  DE03b: DRIF, L=0.047581
  DE03c: DRIF, L=0.190499-LQx/2
  DE04 : DRIF, L=0.197688-LQx/2
  DE05 : DRIF, L=0.151968
  DE05a: DRIF, L=DE05[L]/2
  DE05c: DRIF, L=0.104470
  DE06b: DRIF, L=0.2478024
  DE06a: DRIF, L=LWS01_03/2-DE05[L]-DE05c[L]-DE06b[L]
  DE06d: DRIF, L=0.1638307
  DE06e: DRIF, L=LWS01_03/2-DE05[L]-DE06d[L]
  DE07 : DRIF, L=0.2045007-LQx/2+0.305E-3
  DE08 : DRIF, L=0.2318721-LQx/2-0.03
  DE08a: DRIF, L=0.153330+0.03
  DE08b: DRIF, L=0.170620-LQx/2
  DE09 : DRIF, L=0.27745-LQx/2
  DB00a: DRIF, L=0.399700, TYPE="CSR"
  DB00b: DRIF, L=0.161, TYPE="CSR"
  DB00c: DRIF, L=0.219100-LQE/2, TYPE="CSR"
  DB00d: DRIF, L=0.342-LQE/2, TYPE="CSR"
  DB00e: DRIF, L=0.4378, TYPE="CSR"
  DM00 : DRIF, L=0.203400-ZOFFINJ+0.03, TYPE="CSR"      ! move entire injector ~12 mm dntr. (Nov. 17, 2004 - PE)
  DM00a: DRIF, L=0.224683-LQx/2-0.03, TYPE="CSR"
  DM01 : DRIF, L=0.142367-LQx/2, TYPE="CSR"
  DM01a: DRIF, L=0.262800-LQx/2, TYPE="CSR"
  DM02 : DRIF, L=0.194200-LQx/2
  DM02a: DRIF, L=0.157448

! L1

  DAQA1 : DRIF, L=0.033450+dz_QA11
  DAQA2 : DRIF, L=0.033450-dz_QA11
  DAQA3 : DRIF, L=0.033450
  DAQA4 : DRIF, L=0.033450

! BC1

  LWW1  := 1.656196                                     ! WS11-12 drift length and therefore ~ beam size
  BMIN1 := LWW1/SQRT(3)                                 ! betaX,Y at WS12

  DL1Xa : DRIF, L=0.093369
  DL1Xb : DRIF, L=0.2
  DM10a : DRIF, L=0.227400-0.022322
  DM10c : DRIF, L=0.122322+dz_Q21201
  DM10x : DRIF, L=0.083617-dz_Q21201
  DM11  : DRIF, L=0.272500+0.006383
  DM12  : DRIF, L=0.127801
  DBQ1  : DRIF, L=(0.400381-LB1/2-LQc/2)/COS(AB11), TYPE="CSR"
  D11o  : DRIF, L=LD11o-(DBQ1[L]+LQc)-2E-7, TYPE="CSR"
  D11oa : DRIF, L=LD11oa, TYPE="CSR"
  D11ob : DRIF, L=LD11ob-(DBQ1[L]+LQc)-2E-7, TYPE="CSR"
  DDG0  : DRIF, L=0.1698-0.084915+0.0508-0.0045, TYPE="CSR"    ! additional drift in BC2 center prior to diag. package
  DDGA  : DRIF, L=0.084915+0.0508-0.0045, TYPE="CSR"           ! additional drift in BC2 center prior to diag. package
  DDG1  : DRIF, L=0.2891-0.04046, TYPE="CSR"            ! BC1 and BC2 diag. package drifts (BX*2B to BPM)
  DDG2  : DRIF, L=0.1240+0.04046, TYPE="CSR"            ! BC1 and BC2 diag. package drifts (BPM to CE)
  DDG3  : DRIF, L=0.1460+0.036606, TYPE="CSR"           ! BC1 and BC2 diag. package drifts (CE to OTR)
  DDG4  : DRIF, L=0.2711-0.036606, TYPE="CSR"           ! BC1 and BC2 diag. package drifts (OTR to BX*3A)
  DM13a : DRIF, L=0.323450/2, TYPE="CSR"
  DM13b : DRIF, L=0.323450/2, TYPE="CSR"
  DM14a : DRIF, L=0.25-0.07615, TYPE="CSR"
  DM14b : DRIF, L=0.15638875-0.0254+0.07615, TYPE="CSR"
  DM14c : DRIF, L=0.15638875+0.0254, TYPE="CSR"
  DM15a : DRIF, L=0.252872-0.1524, TYPE="CSR"
  DM15b : DRIF, L=0.2836740-0.0826, TYPE="CSR"
  DM15c : DRIF, L=0.1524+0.0826, TYPE="CSR"
  DWW1a : DRIF, L=LWW1
  DWW1b : DRIF, L=0.295
  DWW1c1: DRIF, L=0.812030-0.295-0.1017
  DWW1c2: DRIF, L=LWW1-1.427096+0.1017-0.0142-0.014199
  DWW1d : DRIF, L=0.346099
  DWW1e : DRIF, L=0.297366
  DM16  : DRIF, L=0.25+dz_Q21301
  DM17a : DRIF, L=0.2658341-dz_Q21301
  DM16a : DRIF, L=0.0
  DM16b : DRIF, L=0.0
  DM17b : DRIF, L=0.4008829
  DM17c : DRIF, L=0.385417+dz_QM14
  DM18a : DRIF, L=0.228300-dz_QM14
  DM18b : DRIF, L=0.228200+dz_QM15
  DM19  : DRIF, L=0.099400-dz_QM15

! L2 and L3

  DAQ3  : DRIF, L=0.3533
  DAQ4  : DRIF, L=2.5527
  DAQ5  : DRIF, L=2.841-0.3048-1.2192
  DAQ6  : DRIF, L=0.2373
  DAQ6A : DRIF, L=0.2373+0.3048+1.2192
  DAQ7  : DRIF, L=0.2748
  DAQ8  : DRIF, L=2.6312
  DAQ8A : DRIF, L=0.5+0.003200
  DAQ8B : DRIF, L=2.1312-0.003200
  DAQ12 : DRIF, L=0.2286
  DAQ13 : DRIF, L=0.0231
  DAQ14 : DRIF, L=0.2130
  DAQ15 : DRIF, L=0.0087
  DAQ16 : DRIF, L=0.2274
  DAQ17 : DRIF, L=3.9709
  D255a : DRIF, L=0.06621-0.001510
  D255b : DRIF, L=0.11184+0.001510
  D255c : DRIF, L=0.17805-0.275500+0.25
  D255d : DRIF, L=0.03420+0.275500
  D256a : DRIF, L=2.350-1.1919-0.559100
  D256b : DRIF, L=0.559100
  D256e : DRIF, L=1.019800-0.540500
  D256c : DRIF, L=0.540500-0.40505
  D256d : DRIF, L=0.21115

! BC2

  DM21Z : DRIF, L=0.0828006-0.027
  DM21A : DRIF, L=0.3238194-0.022319
  DM21H : DRIF, L=0.18918+0.022319
  DM21B : DRIF, L=0.6340002
  DM21C : DRIF, L=0.3202404
  DM21D : DRIF, L=0.139536
  DM21E : DRIF, L=0.1996034-0.0045
  DM20  : DRIF, L=0.034200
  DBQ2a : DRIF, L=LDo1, TYPE="CSR"
  D21oa : DRIF, L=LDo2, TYPE="CSR"
  D21i  : DRIF, L=LD21i/2, TYPE="CSR"
  D21ob : DRIF, L=LDo3, TYPE="CSR"
  DBQ2b : DRIF, L=LDo4, TYPE="CSR"
  D21w  : DRIF, L=0.311000-0.0045, TYPE="CSR"
  D21x  : DRIF, L=0.208700, TYPE="CSR"
  D21y  : DRIF, L=0.114235, TYPE="CSR"
  DM23B : DRIF, L=0.050405, TYPE="CSR"
  DM24A : DRIF, L=0.129440, TYPE="CSR"
  DM24B : DRIF, L=0.178000, TYPE="CSR"
  DM24D : DRIF, L=0.070700, TYPE="CSR"
  DM24C : DRIF, L=0.106300, TYPE="CSR"
  DM25  : DRIF, L=0.160400

! BSY

  DBSY00   : DRIF, L=0.134786
  DBSY01   : DRIF, L=0.140208
  DBSY02a  : DRIF, L=1.605264
  DBSY02b  : DRIF, L=0.0184
  DBSY02c  : DRIF, L=2.688336
  DBSY03   : DRIF, L=0.35052
  DBSY04   : DRIF, L=2.93
  DBSY05   : DRIF, L=0.5411+2.0764+4.843132
  DBSY06   : DRIF, L=0.35052
  DBSY07   : DRIF, L=0.382923
  DBSY08   : DRIF, L=0.128016
  DBSY09   : DRIF, L=0.950976
  DBSY10   : DRIF, L=0.192024
  DBSY11   : DRIF, L=0.466344
  DBSY12   : DRIF, L=0.331248
  DBSY13   : DRIF, L=0.566
  DBSY14   : DRIF, L=0.247
  DBSY15   : DRIF, L=0.459
  DBSY16   : DRIF, L=0.35052
  DBSY17   : DRIF, L=0.487899
  DBSY18   : DRIF, L=0.204216
  DBSY19   : DRIF, L=0.204216+0.377343
  D50B1    : DRIF, L=1.132027 !50B1 half-length
  DBSY20   : DRIF, L=0.762
  DBSY21   : DRIF, L=2.329
  DBSY22a  : DRIF, L=5.402548
  DBSY22b  : DRIF, L=7.405675+3.2853-0.61397
  DBSY23   : DRIF, L=0.61397
  DBSY24   : DRIF, L=0.635
  DBSY25   : DRIF, L=0.787
  DBSY26   : DRIF, L=0.534
  DBSY27   : DRIF, L=0.813
  DBSY28   : DRIF, L=0.685
  DBSY29   : DRIF, L=0.61
  DBSY30   : DRIF, L=1.27
  DBSY31   : DRIF, L=1.778
  DBSY32   : DRIF, L=0.457
  DBSY33   : DRIF, L=0.153
  DBSY34   : DRIF, L=0.177
  DBSY35   : DRIF, L=0.483
  DBSY36   : DRIF, L=0.483
  DBSY37   : DRIF, L=0.587
  PMV      : DRIF, L=0.4 !vertical pulsed magnet ... not used
  DBSY38   : DRIF, L=0.589942
  D9501401 : DRIF, L=0.32399974 !B1 off
  D9501402 : DRIF, L=0.3239982 !B1 off
  DBSY39   : DRIF, L=1.06296
  DPM      : DRIF, L=0.425 !BSY pulsed magnet (PM) half-length
  DPMPM    : DRIF, L=0.6875/2 !PM-to-PM half-separation
  DBSY40   : DRIF, L=1.06296
  D9502001 : DRIF, L=0.32390799 !B2 off
  D9502002 : DRIF, L=0.32399047 !B2 off
  DBSY41   : DRIF, L=66.20934
  DBSY42   : DRIF, L=0.615959
  DBSY43   : DRIF, L=2.850589
  DBSY44   : DRIF, L=0.15875

  DMB01    : DRIF, L=3.741122599997 !3.687288
  DMB02    : DRIF, L=0.27604
  H1DL     : DRIF, L=0.08335
  DM03     : DRIF, L=0.110211
  V1DL     : DRIF, L=0.08335
  DM04     : DRIF, L=0.49955
  DM05     : DRIF, L=0.660502
  DM08     : DRIF, L=0.686013
  DM09     : DRIF, L=0.550794
  DM10B    : DRIF, L=0.470278 !0.423278
  DQSM1    : DRIF, L=0.28438  !0.43938
  DYC5     : DRIF, L=0.307342
  I4A      : DRIF, L=0.32385-0.205742
  I4B      : DRIF, L=0.32385
  I5       : DRIF, L=0.32385
  DM12A    : DRIF, L=0.044958
  I6       : DRIF, L=0.32385
  DM12B    : DRIF, L=0.459314
  DM12C    : DRIF, L=0.31
  DXC6     : DRIF, L=0.68
  DM2      : DRIF, L=0.561408
  D2L      : DRIF, L=0.6096
  DM3      : DRIF, L=0.1524
  ST60L    : DRIF, L=0.6096
  DM4      : DRIF, L=8.622041
  DXCA0    : DRIF, L=0.31
  DYCA0    : DRIF, L=0.356220-0.076799
  ST61L    : DRIF, L=0.6096
  DM5      : DRIF, L=0.561379
  DM6      : DRIF, L=0.567588
  DMONI    : DRIF, L=0.009525
  WALL     : DRIF, L=16.764

! LTU

  dz_adjust := 47.825
  D10cm  : DRIF, L=0.10
  D10cma : DRIF, L=0.127
  DC10cm : DRIF, L=0.10, TYPE="CSR"
  D21cm  : DRIF, L=0.21
  D25cm  : DRIF, L=0.25
  D29cma : DRIF, L=0.29+0.023878+0.1000244+0.1704396
  D30cm  : DRIF, L=0.30
  D32cm  : DRIF, L=0.32
  D32cma : DRIF, L=0.32+0.0253999+0.0750601
  D32cmb : DRIF, L=0.32-0.056221+0.4000244
  D32cmc : DRIF, L=0.32-0.0254+0.00586
  D32cmd : DRIF, L=0.32-0.056221+0.4000244+0.2404381
  D34cm  : DRIF, L=0.34
  D40cm  : DRIF, L=0.40
  D40cma : DRIF, L=0.40+1.407939
  D40cmb : DRIF, L=0.40+0.090013
  D40cmc : DRIF, L=0.40, TYPE="CSR"
  D40cmd : DRIF, L=0.40+0.090013-0.000473
  D40cme : DRIF, L=0.40+0.090013+0.010447
  D40cmf : DRIF, L=0.40+0.090013-0.065013
  D40cmh : DRIF, L=0.0317
  D40cmg : DRIF, L=D40cm[L]-D40cmh[L]
  D50cm  : DRIF, L=0.50
  D31A   : DRIF, L=0.40+dLQA2+0.090005
  D31B   : DRIF, L=0.40+dLQA2+0.4900025-0.4000244
  D32A   : DRIF, L=0.40+dLQA2
  D32B   : DRIF, L=0.40+dLQA2
  D33A   : DRIF, L=0.21+dLQA2+0.380004-0.1000244-0.1704396
  D33B   : DRIF, L=0.40+dLQA2+0.4900025-0.4000244-0.2404381
  D34A   : DRIF, L=0.40+dLQA2+0.09-0.00046
  D34B   : DRIF, L=0.25+dLQA2+0.2399776-0.2404376
  DEM1A  : DRIF, L=0.40+dLQA2-0.10046
  DEM1B  : DRIF, L=4.00+dLQA2*2
  DEM2B  : DRIF, L=0.40+dLQA2+0.02954
  DEM3A  : DRIF, L=0.40+dLQA2-0.10046
  DEM3B  : DRIF, L=0.30+dLQA2+0.402839
  DEM4A  : DRIF, L=0.40+dLQA2-0.402839+(0.402839)+0.02954
  DUM1A  : DRIF, L=0.40+dLQA2+0.0254-0.00586
  DUM1B  : DRIF, L=0.40+dLQA2
  DUM2A  : DRIF, L=0.40+dLQA2-0.0253999-0.0750601
  DUM2B  : DRIF, L=0.40+dLQA2
  DUM3A  : DRIF, L=0.40+dLQA2+0.125-0.21546
  DUM3B  : DRIF, L=0.40+dLQA2
  DUM4A  : DRIF, L=0.40+dLQA2+0.0254+0.00414
  DUM4B  : DRIF, L=0.40+dLQA2+0.127
  DYCVM1 : DRIF, L=0.40
  DQVM1  : DRIF, L=0.34
  DVB25cm: DRIF, L=0.5-0.25
  DVB25cmc: DRIF, L=0.5-0.25
  DQVM2  : DRIF, L=0.5
  DQVM2b : DRIF, L=0.48-LQF/2
  DQVM2a : DRIF, L=DQVM2[L]-DQVM2b[L]
  DXCVM2 : DRIF, L=0.25
  DWSVM2 : DRIF, L=DXCVM2[L]+DVB25cm[L]
  DWSVM2a : DRIF, L=0.48-LQF/2
  DWSVM2b : DRIF, L=DWSVM2[L]-DWSVM2a[L]
  DVB1   : DRIF, L=8.0-2*0.3125, TYPE="CSR"
  DVB1m40cm: DRIF, L=8.0-0.4-2*0.3125, TYPE="CSR"
  DVB2   : DRIF, L=4.0, TYPE="CSR"
  DVB2m80cm: DRIF, L=4.0-0.4-0.4, TYPE="CSR"
  DVBe   : DRIF, L=0.5, TYPE="CSR"
  DVBem25cm: DRIF, L=0.5-0.25, TYPE="CSR"
  DVBem15cm: DRIF, L=0.150+0.00381+0.018803, TYPE="CSR"
  D10cmb : DRIF, L=0.1064869
  D25cma : DRIF, L=0.25-0.00381-0.018803-0.0064869, TYPE="CSR"
  DQEA   : DRIF, L=0.40+(LQF-LQx)/2-0.15046
  DQEAa  : DRIF, L=0.40+(LQF-LQx)/2-0.14046
  DQEAb  : DRIF, L=0.40+(LQF-LQx)/2-0.12046
  DQEAc  : DRIF, L=0.40+(LQF-LQx)/2+0.02954
  DQEBx  : DRIF, L=0.32+(LQF-LQx)/2+0.33655-0.0768665+0.04
  DQEBy  : DRIF, L=0.32+(LQF-LQx)/2+0.33655-0.0768665+0.04
  DQEC   : DRIF, L=4.6+dz_adjust/12+(LQF-LQx)/2
  DQECa  : DRIF, L=7.950716
  DQECb  : DRIF, L=DQEC[L]-DQECa[L]
  DE3    : DRIF, L=4.6+dz_adjust/12+0.15046
  DE3a   : DRIF, L=4.6+dz_adjust/12+0.14046
  DE3m40cm: DRIF, L=4.6-0.4+dz_adjust/12+0.15046
  DE3m80cm: DRIF, L=4.6-0.4-0.4+dz_adjust/12-0.02954
  DE3m80cma: DRIF, L=4.6-0.4-0.4+dz_adjust/12+0.15046
  DE3m80cmb: DRIF, L=4.6-0.4-0.4+dz_adjust/12+0.12046
  DQEBx2  : DRIF, L=4.6-0.4-0.4+dz_adjust/12-0.33655+0.0768665-0.04
  DQEBy2  : DRIF, L=4.6-0.4+dz_adjust/12-0.33655+0.0768665-0.04
  DDL10  : DRIF, L=12.86072
  DDL10m70cm: DRIF, L=12.86072-0.4-0.3-0.09+0.00046
  DDL10u : DRIF, L=0.5
  DDL10um25cm: DRIF, L=0.5-0.25-0.2399776+0.2404376
  DDL10v : DRIF, L=12.86072-0.5
  DDL1a  : DRIF, L=5.820626-LKIK/2
  DDL1c  : DRIF, L=0.609226-LKIK/2
  DDL1b  : DRIF, L=5.421642-LKIK/2
  DSPLR  : DRIF, L=0.43036
  D30cma : DRIF, L=0.257426
  DPC1   : DRIF, L=0.266697
  DPC2   : DRIF, L=0.266697
  DPC3   : DRIF, L=0.266697
  DPC4   : DRIF, L=0.266697+0.339613-0.8128/2
  DDL1dm30cm  : DRIF, L=0.379160-0.262228    ! allow possible new spontaneous undulator here
  DDL1cm40cm: DRIF, L=6.03036-0.43036-0.6096/2
  LSPONT := 1.5                           ! length of possible spontaneous undulator (<=5 m now that TDKIK is also there)
  SPONTUA: DRIF, L=LSPONT/2
  SPONTUB: DRIF, L=LSPONT/2
  DDL20  : DRIF, L= 0.5
  DDL30  : DRIF, L= 1.0
  DDL30m40cm: DRIF, L= 1.0-0.4
  DDL10w : DRIF, L=12.86072-2*LDw1o-3*(LBxw)-1.1, TYPE="CSR"
  DDL10x : DRIF, L=0.250000-0.033681-0.090005, TYPE="CSR"
  DDL10e : DRIF, L=12.86072, TYPE="CSR"
  DDL10em50cm: DRIF, L=12.86072-0.25-0.25-0.090002-0.313878, TYPE="CSR"
  DDL10em80cm: DRIF, L=12.86072-0.4-0.4-0.433783, TYPE="CSR"
  DCQ31a: DRIF, L=6.037182, TYPE="CSR"
  DCQ31b: DRIF, L=5.811658, TYPE="CSR"
  DCQ32a: DRIF, L=5.4817585, TYPE="CSR"
  DCQ32b: DRIF, L=6.0371785, TYPE="CSR"
  DDL20e : DRIF, L= 0.5, TYPE="CSR"
  DDL30e : DRIF, L= 1.0, TYPE="CSR"
  DDL30em40cm: DRIF, L=1.0-0.4-0.090013, TYPE="CSR"
  DDL30em40cma: DRIF, L=1.0-0.4-0.090013+0.000473, TYPE="CSR"
  DDL30em40cmb: DRIF, L=1.0-0.4-0.090013-0.010447, TYPE="CSR"
  DDL30em40cmc: DRIF, L=1.0-0.4-0.090013+0.065013, TYPE="CSR"
  D25cmb   : DRIF, L=0.25+0.0127
  D25cmc   : DRIF, L=0.25-0.0127
  DMM1m90cm: DRIF, L=2.0-0.25-0.25-0.4+0.10046
  DMM3m80cm: DRIF, L=10.0-0.4-0.4+2.0+0.07092
  DMM4m90cm: DRIF, L=3.6-0.30-LQx-(0.402839)-0.02954
  DMM5     : DRIF, L= 2.0+dLQA2
  DU1m80cm : DRIF, L= 4.550
  DU1m80cma: DRIF, L= 0.16515
  DU1m80cmb: DRIF, L= DU1m80cm[L]-DU1m80cma[L]
  DU2m120cm: DRIF, L= 4.730
  DU3m80cm : DRIF, L= 8.0-0.4-0.4-0.125+0.21546
  DU4m120cm: DRIF, L= 2.800-1.407939-0.0254-0.00414
  DU5m80cm : DRIF, L= 0.5
  DMUON2   : DRIFT, L=1.164391 !1.406800
  DMUON1   : DRIFT, L=0.154859
  DMUON3   : DRIFT, L=0.310592

  DWSDL31a : DRIFT, L=0.096237 !0.096779-0.000542
  DWSDL31b : DRIFT, L=0.153763 !0.153221+0.000542
  DWSDUMPa : DRIFT, L=0.44156 !0.5-0.058217-0.000222-0.000001
  DWSDUMPb : DRIFT, L=2.038949 !1.980509+0.058217+0.000222+0.000001

  DUHW1   : DRIFT, L=0.391584
  UHWALL1 : DRIFT, L=9.875*in2m
  DUHW2   : DRIFT, L=0.403491
  UHWALL2 : DRIFT, L=9.875*in2m
  DUHW3   : DRIFT, L=0.397024
  UHWALL3 : DRIFT, L=9.875*in2m

! ==============================================================================
! MARKERs
! ------------------------------------------------------------------------------

! wire scanners

  WS01 : WIRE !DL1- emittance
  WS02 : WIRE !DL1- emittance
  WS03 : WIRE !DL1- emittance
  WS04 : WIRE !DL1- energy spread
  WS11 : WIRE !BC1+ emittance
  WS12 : WIRE !BC1+ emittance
  WS13 : WIRE !BC1+ emittance
!  WS21 : WIRE !LI24 emittance
!  WS22 : WIRE !LI24 emittance
!  WS23 : WIRE !LI24 emittance
  WS24 : WIRE !BC2- emittance
  DWS21 : MARK !someday will be a wire-scanner again?
  DWS22 : MARK !someday will be a wire-scanner again?
  DWS23 : MARK !someday will be a wire-scanner again?
  DWS24 : MARK !someday will be a wire-scanner again?
  WS27644: WIRE !LI27 emittance (existing; moved)
  WS28144: WIRE !LI28 emittance
  WS28444: WIRE !LI28 emittance
  WS28744: WIRE !LI28 emittance (existing; moved)
  WSVM2 : WIRE !LTU emittance
  WS31 : WIRE !LTU emittance
  WS32 : WIRE !LTU emittance
  WS33 : WIRE !LTU emittance
  WS34 : WIRE !LTU emittance
  WS35 : WIRE !LTU emittance
  WS36 : WIRE !LTU emittance
  WSDL31 : WIRE
  WSDUMP : WIRE

! profile monitors

  YAG01    : PROF, TYPE="YAG"      !gun (15.5 in from cathode, per J. Schmerge, June 17, 2003; -PE)
  YAG02    : PROF, TYPE="YAG"      !gun (need proper positions still - June 10, 2003)
  YAG03    : PROF, TYPE="YAG"      !after L0-a (~ 60 MeV) - center of device in MAD is defined as center of YAG crystal, not mirror
  YAG04    : PROF, TYPE="YAG"      !temporarily (Dec. '06 - July '07) placed in laser-heater region (135 MeV) - center of device in MAD is defined as center of YAG crystal, not mirror

  PH01     : INST                  !phase measurement RF cavity between L0-a and L0-b
  PH02     : INST                  !phase measurement RF cavity after BC1
  PH03     : INST                  !phase measurement RF cavity after BC2
  VV01     : MARK                  !vacuum valve near gun
  VV02     : MARK                  !vacuum valve in injector
  VV03     : MARK                  !vacuum valve in injector
  VV04     : MARK                  !vacuum valve in injector
  VVX1     : MARK, TYPE="MANUAL"   !vacuum valve before X-band structure
  VVX2     : MARK, TYPE="MANUAL"   !vacuum valve after X-band structure
  VV21     : MARK                  !vacuum valve in front of BC2
  VV22     : MARK                  !vacuum valve after BC2
  RST1     : INST                  !radiation stopper near WS02 in injector

  OTRH1    : PROF, TYPE="OTR"      !Laser-heater OTR screen just upbeam of heater-undulator (12NOV03 - PE)
  OTRH2    : PROF, TYPE="OTR"      !Laser-heater OTR screen just dnbeam of heater-undulator (12NOV03 - PE)
!  DOTRH1   : MARK                  !Laser-heater OTR screen PLACE-HOLDER just upbeam of heater-undulator (not installed until summer 2008)
!  DOTRH2   : MARK                  !Laser-heater OTR screen PLACE-HOLDER just dnbeam of heater-undulator (not installed until summer 2008)
  OTR1     : PROF, TYPE="OTR"      !DL1-emit
  OTR2     : PROF, TYPE="OTR"      !DL1-emit
  OTR3     : PROF, TYPE="OTR"      !DL1-emit
  OTR4     : PROF, TYPE="OTR"      !DL1 slice and proj. energy spread
  OTR11    : PROF, TYPE="OTR"      !BC1 energy spread
  OTR12    : PROF, TYPE="OTR"      !BC1 emittance
  OTR21    : PROF, TYPE="OTR"      !BC2 energy spread
  OTR22    : PROF, TYPE="OTR"      !post-BC2 beam size
  OTR_TCAV : PROF, TYPE="OTR"      !LI25 longitudinal diagnostics
  OTR30    : PROF, TYPE="OTR"      !LTU slice energy spread (90 deg from TCAV3)
  YAGPSI   : PROF, TYPE="YAG"
  OTR33    : PROF, TYPE="OTR"      !LTU slice emittance (~90 deg from TCAV3)
  XDCXRAY  : PROF                  !safety dump line Xray screen
  YAGXRAY  : PROF, TYPE="YAG"      !safety dump line Xray screen

! bunch length monitors

  BL11  : BLMO !BC1+ (CSR-based relative bunch length monitor)
  BL12  : BLMO !BC1+ (ceramic gap-based relative bunch length monitor)
  BL21  : BLMO !BC2+ (CSR-based relative bunch length monitor)
  BL22  : BLMO !BC2+ (ceramic gap-based relative bunch length monitor)

! bunch charge monitors (toroids)
  IM01   : IMON !L0
  IM02   : IMON !L0
  IMS1   : IMON !135-MeV spectrometer
  IM03   : IMON !DL1-
  IMBC1I : IMON !BC1 input toriod (comparator with IMBC1O)
  IMBC1O : IMON !BC1 output toroid (comparator with IMBC1I)
  IMBC2I : IMON !BC2 input toroid (comparator with IMBC2O)
  IMBC2O : IMON !BC2 output toroid (comparator with IMBC2I)
  IM31   : IMON !LTU: upstr. of BX31 (comparator with IM36)
  IM36   : IMON !LTU: dnstr. of BX36 (comparator with IM31)
  IMUNDI : IMON !FEL-undulator input toroid (comparator with IMUNDO)
  IMUNDO : IMON !FEL-undulator output toroid (comparator with IMUNDI)
  PH31   : INST !post-undulator phase measurement RF cavity
  PH32   : INST !post-undulator phase measurement RF cavity
  IMDUMP : IMON !in dump line after Y-bends and quad (comparator with IMUNDO)

! BCS toroids (from Saleski request)
  IMBCS1 : IMON !LTU: upstr. of BX31 (comparator with IMBCS2)
  IMBCS2 : IMON !LTU: dnstr. of BX36 (comparator with IMBCS1)
  IMBCS3 : IMON !pre-dump magnet toroid with >42-mm ID stay-clear (comparator with IMBCS4)
  IMBCS4 : IMON !in dump line, after Y-bends, with >48-mm ID stay-clear (comparator with IMBCS3)

! other diagnostics

  FC01  : INST !L0 Faraday cup w/screen
  AM00  : INST !gun laser normal incidence mirror
  AM01  : INST !alignment mirror
  CR01  : INST !Cerenkov radiator bunch length monitor

! collimators

  CE11  : RCOL        !adjustable energy (x) collimator in middle of BC1 chicane
  CE21  : RCOL        !adjustable energy (x) collimator in middle of BC2 chicane

! dumps

  TD11 : INST !BC1+ insertable block

! miscellany
  LSOL1    := 0.200
  L0beg    : MARK
  SOL1BK   : SOLENOID,L=1E-9,KS=0       !gun-bucking-solenoid (set to ~zero length and strength, with longitudinal unknown for now)
  CATHODE  : INST
  SOL1     : SOLENOID,L=LSOL1/2,KS=1E-9 !gun-solenoid (set to zero strength)
  SOL2     : SOLENOID,L=1E-9,KS=1E-9    !2nd-solenoid (set to ~zero length and strength, with longitudinal position as the actual solenoid's center)
  L0end    : MARK
  L0aWAKE  : MARK
  EMAT     : MARK ! for Elegant only to remove energy error in DL1 bends
  DL1beg   : MARK
  DLFDa    : MARK ! dual-feed input coupler location at start of L0-a RF structure
  L0aMID   : MARK
  OUTCPa   : MARK ! output coupler location at end of L0-a RF structure
  L0bBEG   : MARK
  DLFDb    : MARK ! dual-feed input coupler location at start of L0-b RF structure
  L0bMID   : MARK
  OUTCPb   : MARK ! output coupler location at end of L0-b RF structure
  CNT0     : MARK
  DL1end   : MARK
  L1beg    : MARK
  L1end    : MARK
  BC1mrk   : MARK
  XBEG     : MARK !before X-band RF, but after L1
  XEND     : MARK !after X-band RF, but before BC1
  BC1beg   : MARK
  CNT1     : MARK !ELEGANT will correct the orbit here for CSR-steering
  BC1end   : MARK
  BC1fin   : MARK
  L2beg    : MARK
  LI21beg  : MARK
  LI21end  : MARK
  LI22beg  : MARK
  LI22end  : MARK
  LI23beg  : MARK
  LI23end  : MARK
  LI24beg  : MARK
  LI24end  : MARK
  L2end    : MARK
  BC2mrk   : MARK
  BC2beg   : MARK
  CNT2     : MARK !ELEGANT will correct the orbit here for CSR-steering
  BC2end   : MARK
  BC2fin   : MARK
  L3beg    : MARK
  LI25beg  : MARK
  LI25end  : MARK
  LI26beg  : MARK
  LI26end  : MARK
  LI27beg  : MARK
  LI27end  : MARK
  LI28beg  : MARK
  LI28end  : MARK
  LI29beg  : MARK
  LI29end  : MARK
  LI30beg  : MARK
  RWWAKEss : MARK !will be resistive wall wake of stainless steel in ELEGANT
  LI30end  : MARK
  L3end    : MARK
  BSYbeg   : MARK
  CNTV     : MARK !ELEGANT will correct the orbit here for CSR-steering
  CNTw     : MARK !ELEGANT will correct the orbit here for CSR-steering
  CNT3a    : MARK !ELEGANT will correct the orbit here for CSR-steering
  CNT3b    : MARK !ELEGANT will correct the orbit here for CSR-steering
  EOBLM    : MARK !future electro-optic bunch length monitor?
  RWWAKEAl : MARK !will be resistive wall wake of aluminum in ELEGANT
  PFILT1   : MARK

! BSY stuff (exists)

  FFTBORGN : MARK
  S100     : MARK !station 100
  C50PC20  : MARK !50PC-20
  P460031T : MARK !50PRX-1 ... not used
  P460032T : MARK !50PRY-1 ... not used
  C50PC30  : MARK !50PC-30
  IMBSY34  : IMON !50I-1A
  PRBSY45  : PROF, TYPE="PHOSPHOR" !50PR-2
  C50PC45  : MARK !50PC-45
  I_1      : MARK !I-1 (BCS)
  I_2      : MARK !I-2 (BCS)
  A4V      : MARK !not used
  A4H      : MARK !not used
  M351010T : MARK !not used
  P950115T : MARK !PR115 ... not used
  IV3      : MARK
  P460118T : MARK !50PR-3 ... not used
  C50PC119 : MARK !PC-119
  ISP2     : MARK !ISP-2 ... not used
  ROLL1    : MARK !for A-line
  PM1      : MARK !new pulse-stealing kicker
  C50PC155 : MARK !PC-155
  PM2      : MARK !original pulsed-magnet ... removed
  C50PC165 : MARK !PC-165
  BE_TGT   : MARK !insertable Be target
  C50PC175 : MARK !PC-175
  PM4      : MARK !original pulsed-magnet ... removed
  C50PC185 : MARK !PC-185
  PM5      : MARK !original pulsed-magnet ... removed
  C50PC195 : MARK !PC-195
  D10J     : MARK !D10
  D19A     : MARK !D10
  D10H     : MARK !D10
  FLNG     : MARK !D10
  ROLL2    : MARK !for A-line

  PC90     : MARK
  I3       : MARK
  P950020T : MARK
  IV4      : MARK
  D2       : MARK
  ST60     : MARK
  ST61     : MARK

  SS1    : MARK
  SS3    : MARK
  MM1    : MARK
  MM2    : MARK
  MM3    : MARK

! Permanent reference points in the linac (and LTU: Z') Z-coordinate system (in meters)
! (NOTE: Z' is measured parallel to the undulator axis which is at an angle of
! 2*AVB [=4.668514 mrad on May 4, 2004] w.r.t. the linac axis):
! (Note Q20-901 is at 2029.4060 m in drawing ID-380-802-00 pg. 2 - this does not agree
!  with Woodley/Seeman database at 2029.3939 m.  We assume drawing is right -PE, June 11, 2004)
! ============================================================================================
  ZLIN00   : MARK  ! face of L0-a entrance flange : Z=2019.106625 (= 1.459000 m from cathode parallel to injector line, X = 9.612087)
! DBMARK98 : MARK  ! (135SPECT)135-MeV spect. dump: Z=2036.774471
  ZLIN01   : MARK  ! entrance to 21-1b            : Z=2035.035130 (= 20*101.600 m + 3.0441 m - 0.00897 m: 8/1/05)
  ZLIN02   : MARK  ! center of QUAD LI21 201      : (not used anymore since Q21201 is a few mm off) [was Z=2045.436400 pre 1/11/07]
  ZLIN03   : MARK  ! center of QUAD LI21 301      : (not used anymore since Q21301 is a few mm off) [was Z=2057.855466 pre 1/11/07]
  ZLIN04   : MARK  ! entrance to 21-3b            : Z=2059.732900
  ZLIN05   : MARK  ! start of LI22                : Z=2133.600000
  ZLIN06   : MARK  ! start of LI23                : Z=2235.200000
  ZLIN07   : MARK  ! start of LI24                : Z=2336.800000
  ZLIN08   : MARK  ! center of QUAD LI24 701 (A)  : Z=2410.786000 (not moved)
  ZLIN09   : MARK  ! start of LI25                : Z=2438.400000
  ZLIN10   : MARK  ! start of LI26                : Z=2540.000000
  ZLIN11   : MARK  ! start of LI27                : Z=2641.600000
  ZLIN12   : MARK  ! start of LI28                : Z=2743.200000
  ZLIN13   : MARK  ! start of LI29                : Z=2844.800000
  ZLIN14   : MARK  ! start of LI30                : Z=2946.400000
  ZLIN15   : MARK  ! station-100 (or "S100")      : Z=3048.000000  (Z' =   0.000000 m, X'= 0.000000 m, Y'= 0.000000 m)
  BSYEND   : MARK  ! FFTB side of muon plug wall  : Z=3224.022426  (Z' = 176.020508 m, X'= 0.000000 m, Y'=-0.821761 m)
  VBIN     : MARK  ! start of vert. bend system   : Z=3226.684266  (Z' = 178.682319 m, X'= 0.000000 m, Y'=-0.834188 m)
  VBOUT    : MARK  ! end of vert. bend system     : Z=3252.866954  (Z' = 204.865007 m, X'= 0.000000 m, Y'=-0.895305 m)
  UNDSTART : MARK  ! start of undulator system    : Z=3562.999159  (Z' = 515.000592 m, X'=-1.250000 m, Y'=-0.895305 m)
  UNDTERM  : MARK  ! ~end of undulator system     : Z=3695.441716  (Z' = 647.444592 m, X'=-1.250000 m, Y'=-0.895305 m)
  DLSTART  : MARK  ! start of dumpline            : Z=3734.383707  (Z' = 686.387007 m, X'=-1.250000 m, Y'=-0.895305 m)
  EOL      : MARK  ! near entrance face of dump   : Z=3763.781501  (Z' = 715.774454 m, X'=-1.250000 m, Y'=-3.180529 m)
  SFTDMP   : INST  ! safety dump when BYD's trip  : Z=NA           (Z' = 719.120100 m, X'=-1.517688 m, Y'=-0.895305 m)

  DUMPFACE : INST  ! entrance face of main e- dump (same as EOL)
  BTMDUMP  : INST  ! Burn-Through-Monitor of main e- dump

! ==============================================================================
! existing XCORs
! ------------------------------------------------------------------------------

!  XC460009T : HKIC
!  XC460026T : HKIC
!  XC460034T : HKIC !do not use to steer ... bad results in Elegant
!  XC460036T : HKIC !do not use to steer ... bad results in Elegant
!  XC920020T : HKIC
!  XC921010T : HKIC !do not use to steer ... bad results in Elegant
  XCBSY09  : HKIC ! names changed from above to these (Sep. 2008)
  XCBSY26  : HKIC
  XCBSY34  : HKIC !do not use to steer ... bad results in Elegant
  XCBSY36  : HKIC !do not use to steer ... bad results in Elegant
  XCBSY60  : HKIC
  XCBSY81  : HKIC !do not use to steer ... bad results in Elegant

! ==============================================================================
! new XCORs
! ------------------------------------------------------------------------------

  XC00   : HKIC,TYPE="class-S"
  XC01   : HKIC,TYPE="class-G"
  XC02   : HKIC,TYPE="c-1s-L0a"
  XC03   : HKIC,TYPE="class-1s"
  XC04   : HKIC,TYPE="class-1s"       ! fast-feedback (loop-1)
  XC05   : HKIC,TYPE="class-1s"       ! calibrated to <1%
  XC06   : HKIC,TYPE="class-1t"
  XC07   : HKIC,TYPE="class-1a"       ! fast-feedback (loop-1)
  XC08   : HKIC,TYPE="class-1a"
  XC09   : HKIC,TYPE="class-1a"
  XC10   : HKIC,TYPE="class-1a"
  XC11   : HKIC,TYPE="class-1s"

  XCA11  : HKIC,TYPE="class-1s"
  XCA12  : HKIC,TYPE="class-1s"       ! calibrated to <1%

  XC21202: HKIC,TYPE="type-4al"       ! pulled off structure and replaced on beamline?
  XC21302: HKIC,TYPE="type-4al"       ! pulled off structure and replaced on beamline?
  XCM11  : HKIC,TYPE="class-1x"
  XCM13  : HKIC,TYPE="class-1a"
  XCM14  : HKIC,TYPE="class-1a"

  XC6    : HKIC,TYPE="class-4"
  XCA0   : HKIC,TYPE="class-4"

 !XCVB2  : HKIC,TYPE="class-4"       ! removed from beamline
  XCVM2  : HKIC,TYPE="type-4"
  XCVM3  : HKIC,TYPE="type-4"
  XCDL1  : HKIC,TYPE="class-4"
  XCDL2  : HKIC,TYPE="class-4"
  XCDL3  : HKIC,TYPE="class-4"
  XCDL4  : HKIC,TYPE="class-4f"      ! fast-feedback (loop-4)
  XCQT12 : HKIC,TYPE="class-5"
  XCQT22 : HKIC,TYPE="class-5"
  XCQT32 : HKIC,TYPE="class-5f"      ! fast-feedback (loop-4)
  XCQT42 : HKIC,TYPE="class-5"
  XCEM2  : HKIC,TYPE="class-4"
  XCEM4  : HKIC,TYPE="class-4"
  XCE31  : HKIC,TYPE="class-4"
  XCE33  : HKIC,TYPE="class-4"
  XCE35  : HKIC,TYPE="class-4"
  XCUM1  : HKIC,TYPE="class-4f"      ! fast-feedback (loop-5)
  XCUM4  : HKIC,TYPE="class-4f"      ! fast-feedback (loop-5)
  XCUE1  : HKIC,TYPE="class-4"
  XCD3   : HKIC,TYPE="class-5"
  XCDD   : HKIC,TYPE="class-5"

! ==============================================================================
! existing YCORs
! ------------------------------------------------------------------------------

!  YC460010T : VKIC
!  YC460027T : VKIC !do not use to steer ... bad results in Elegant
!  YC460035T : VKIC !do not use to steer ... bad results in Elegant
!  YC460037T : VKIC
!  YC920020T : VKIC
!  YC921010T : VKIC !do not use to steer ... bad results in Elegant
  YCBSY10   : VKIC ! names changed from above to these (Sep. 2008)
  YCBSY27   : VKIC !do not use to steer ... bad results in Elegant
  YCBSY35   : VKIC !do not use to steer ... bad results in Elegant
  YCBSY37   : VKIC
  YCBSY62   : VKIC
  YCBSY82   : VKIC !do not use to steer ... bad results in Elegant

! ==============================================================================
! new YCORs
! ------------------------------------------------------------------------------

  YC00    : VKIC,TYPE="class-S"
  YC01    : VKIC,TYPE="class-G"
  YC02    : VKIC,TYPE="c-1s-L0a"
  YC03    : VKIC,TYPE="class-1s"
  YC04    : VKIC,TYPE="class-1s"       ! fast-feedback (loop-1)
  YC05    : VKIC,TYPE="class-1s"       ! calibrated to <1%
  YC06    : VKIC,TYPE="class-1t"
  YC07    : VKIC,TYPE="class-1a"       ! fast-feedback (loop-1)
  YC08    : VKIC,TYPE="class-1a"
  YC09    : VKIC,TYPE="class-1a"
  YC10    : VKIC,TYPE="class-1a"
  YC11    : VKIC,TYPE="class-1s"

  YCA11   : VKIC,TYPE="class-1s"       ! calibrated to <1%
  YCA12   : VKIC,TYPE="class-1s"

  YC21203 : VKIC,TYPE="type-4al"
  YC21303 : VKIC,TYPE="type-4al"       ! pulled off structure and replaced on beamline?
  YCM11   : VKIC,TYPE="class-1x"
  YCM12   : VKIC,TYPE="class-1a"
  YCM15   : VKIC,TYPE="class-1a"
  YC5     : VKIC,TYPE="class-4"
  YCA0    : VKIC,TYPE="class-4"       ! add new YCOR here, if easy (PE, Nov. 4, 2003)

  YCVB1  : VKIC,TYPE="class-4"
  YCVB3  : VKIC,TYPE="class-4"
  YCVM1  : VKIC,TYPE="class-5c"        ! calibrated to <1%
  YCVM4  : VKIC,TYPE="class-5"
  YCDL1  : VKIC,TYPE="class-4"
  YCDL2  : VKIC,TYPE="class-4"
  YCDL3  : VKIC,TYPE="class-4"
  YCDL4  : VKIC,TYPE="class-4"
  YCQT12 : VKIC,TYPE="class-5"
  YCQT22 : VKIC,TYPE="class-5"
  YCQT32 : VKIC,TYPE="class-5f"        ! fast-feedback (loop-4)
  YCQT42 : VKIC,TYPE="class-5f"        ! fast-feedback (loop-4)
  YCEM1  : VKIC,TYPE="class-4"
  YCEM3  : VKIC,TYPE="class-4"
  YCE32  : VKIC,TYPE="class-4"
  YCE34  : VKIC,TYPE="class-4"
  YCE36  : VKIC,TYPE="class-4"
  YCUM2  : VKIC,TYPE="class-4f"        ! fast-feedback (loop-5)
  YCUM3  : VKIC,TYPE="class-4f"        ! fast-feedback (loop-5)
  YCUE2  : VKIC,TYPE="class-4"
  YCD3   : VKIC,TYPE="class-5"
  YCDD   : VKIC,TYPE="class-5"

! ==============================================================================
! existing BPMs
! ------------------------------------------------------------------------------

  BPM21201 : MONI, TYPE="20_um_res"
  BPM21301 : MONI, TYPE="20_um_res"
  BPM21401 : MONI, TYPE="10_um_res"
  BPM21501 : MONI, TYPE="10_um_res"
  BPM21601 : MONI, TYPE="10_um_res"
  BPM21701 : MONI, TYPE="10_um_res"
  BPM21801 : MONI, TYPE="10_um_res"
  BPM21901 : MONI, TYPE="10_um_res"
  BPM22201 : MONI, TYPE="10_um_res"
  BPM22301 : MONI, TYPE="10_um_res"
  BPM22401 : MONI, TYPE="10_um_res"
  BPM22501 : MONI, TYPE="10_um_res"
  BPM22601 : MONI, TYPE="10_um_res"
  BPM22701 : MONI, TYPE="10_um_res"
  BPM22801 : MONI, TYPE="10_um_res"
  BPM22901 : MONI, TYPE="10_um_res"
  BPM23201 : MONI, TYPE="10_um_res"
  BPM23301 : MONI, TYPE="10_um_res"
  BPM23401 : MONI, TYPE="10_um_res"
  BPM23501 : MONI, TYPE="10_um_res"
  BPM23601 : MONI, TYPE="10_um_res"
  BPM23701 : MONI, TYPE="10_um_res"
  BPM23801 : MONI, TYPE="10_um_res"
  BPM23901 : MONI, TYPE="10_um_res"
  BPM24201 : MONI, TYPE="10_um_res"
  BPM24301 : MONI, TYPE="10_um_res"
  BPM24401 : MONI, TYPE="10_um_res"
  BPM24501 : MONI, TYPE="10_um_res"
  BPM24601 : MONI, TYPE="10_um_res"
  BPM24701 : MONI, TYPE="10_um_res"

  BPM24901 : MONI, TYPE="10_um_res"
  BPM25201 : MONI, TYPE="10_um_res"
  BPM25301 : MONI, TYPE="10_um_res"
  BPM25401 : MONI, TYPE="10_um_res"
  BPM25501 : MONI, TYPE="10_um_res"
  BPM25601 : MONI, TYPE="10_um_res"
  BPM25701 : MONI, TYPE="10_um_res"
  BPM25801 : MONI, TYPE="10_um_res"
  BPM25901 : MONI, TYPE="10_um_res"
  BPM26201 : MONI, TYPE="10_um_res"
  BPM26301 : MONI, TYPE="10_um_res"
  BPM26401 : MONI, TYPE="10_um_res"
  BPM26501 : MONI, TYPE="10_um_res"
  BPM26601 : MONI, TYPE="10_um_res"
  BPM26701 : MONI, TYPE="10_um_res"
  BPM26801 : MONI, TYPE="10_um_res"
  BPM26901 : MONI, TYPE="10_um_res"
  BPM27201 : MONI, TYPE="10_um_res"
  BPM27301 : MONI, TYPE="10_um_res"
  BPM27401 : MONI, TYPE="10_um_res"
  BPM27501 : MONI, TYPE="10_um_res"
  BPM27601 : MONI, TYPE="10_um_res"
  BPM27701 : MONI, TYPE="10_um_res"
  BPM27801 : MONI, TYPE="10_um_res"
  BPM27901 : MONI, TYPE="10_um_res"
  BPM28201 : MONI, TYPE="10_um_res"
  BPM28301 : MONI, TYPE="10_um_res"
  BPM28401 : MONI, TYPE="10_um_res"
  BPM28501 : MONI, TYPE="10_um_res"
  BPM28601 : MONI, TYPE="10_um_res"
  BPM28701 : MONI, TYPE="10_um_res"
  BPM28801 : MONI, TYPE="10_um_res"
  BPM28901 : MONI, TYPE="10_um_res"
  BPM29201 : MONI, TYPE="10_um_res"
  BPM29301 : MONI, TYPE="10_um_res"
  BPM29401 : MONI, TYPE="10_um_res"
  BPM29501 : MONI, TYPE="10_um_res"
  BPM29601 : MONI, TYPE="10_um_res"
  BPM29701 : MONI, TYPE="10_um_res"
  BPM29801 : MONI, TYPE="10_um_res"
  BPM29901 : MONI, TYPE="10_um_res"
  BPM30201 : MONI, TYPE="10_um_res"
  BPM30301 : MONI, TYPE="10_um_res"
  BPM30401 : MONI, TYPE="10_um_res"
  BPM30501 : MONI, TYPE="10_um_res"
  BPM30601 : MONI, TYPE="10_um_res"
  BPM30701 : MONI, TYPE="10_um_res"
  BPM30801 : MONI, TYPE="10_um_res"

!  BPM304001T : MONI, TYPE="10_um_res"
!  BPM460029T : MONI, TYPE="10_um_res"
!  BPM460039T : MONI, TYPE="10_um_res"
!  BPM460051T : MONI, TYPE="10_um_res"
!  BPM920020T : MONI, TYPE="10_um_res"
!  BPM920030T : MONI, TYPE="10_um_res"
!  BPM920050T : MONI, TYPE="10_um_res"
!  BPM921010T : MONI, TYPE="10_um_res"
!  BPM921020T : MONI, TYPE="10_um_res"
!  BPM921030T : MONI, TYPE="10_um_res"

  BPMBSY1  : MONI, TYPE="10_um_res"
  BPMBSY29 : MONI, TYPE="10_um_res"
  BPMBSY39 : MONI, TYPE="10_um_res"
  BPMBSY51 : MARK
  BPMBSY61 : MONI, TYPE="10_um_res"  ! rename these 6 BSY BPMs on Aug. 8, 2008
  BPMBSY63 : MONI, TYPE="10_um_res"
  BPMBSY83 : MONI, TYPE="10_um_res"
  BPMBSY85 : MONI, TYPE="10_um_res"
  BPMBSY88 : MONI, TYPE="10_um_res"
  BPMBSY92 : MONI, TYPE="10_um_res"

! ==============================================================================
! new BPMs
! ------------------------------------------------------------------------------

  BPM2    : MONI, TYPE="25_um_res"
  BPM3    : MONI, TYPE="25_um_res"
  BPM5    : MONI, TYPE="25_um_res"
  BPM6    : MONI, TYPE="10_um_res"
  BPM8    : MONI, TYPE="10_um_res"
  BPM9    : MONI, TYPE="25_um_res"
  BPM10   : MONI, TYPE="25_um_res"
  BPM11   : MONI, TYPE="25_um_res"
  BPM12   : MONI, TYPE="25_um_res"
  BPM13   : MONI, TYPE="25_um_res"
  BPM14   : MONI, TYPE="25_um_res"
  BPM15   : MONI, TYPE="25_um_res"

  BPMA11  : MONI, TYPE="20_um_res"
  BPMA12  : MONI, TYPE="20_um_res"

  BPMS11  : MONI, TYPE="20_um_res"
  BPMM12  : MONI, TYPE="20_um_res"
  BPMM14  : MONI, TYPE="20_um_res"

  BPMS21  : MONI, TYPE="40_um_res"

  BPMVM1 : MONI, TYPE="05_um_res"
  BPMVM2 : MONI, TYPE="05_um_res"
  BPMVB1 : MONI, TYPE="05_um_res"
  BPMVB2 : MONI, TYPE="05_um_res"
  BPMVB3 : MONI, TYPE="05_um_res"
  BPMVB4 : MONI, TYPE="05_um_res"
  BPMVM3 : MONI, TYPE="05_um_res"
  BPMVM4 : MONI, TYPE="05_um_res"
  BPMDL1 : MONI, TYPE="05_um_res"
  BPMDL2 : MONI, TYPE="05_um_res"
  BPMDL3 : MONI, TYPE="05_um_res"
  BPMDL4 : MONI, TYPE="05_um_res"
  BPMT12 : MONI, TYPE="05_um_res"
  BPMT22 : MONI, TYPE="05_um_res"
  BPMT32 : MONI, TYPE="05_um_res"
  BPMT42 : MONI, TYPE="05_um_res"
  BPME31 : MONI, TYPE="05_um_res"
  BPME32 : MONI, TYPE="05_um_res"
  BPME33 : MONI, TYPE="05_um_res"
  BPME34 : MONI, TYPE="05_um_res"
  BPME35 : MONI, TYPE="05_um_res"
  BPME36 : MONI, TYPE="05_um_res"
  BPMEM1 : MONI, TYPE="05_um_res"
  BPMEM2 : MONI, TYPE="05_um_res"
  BPMEM3 : MONI, TYPE="05_um_res"
  BPMEM4 : MONI, TYPE="05_um_res"
  BPMUM1 : MONI, TYPE="05_um_res"
  BPMUM2 : MONI, TYPE="05_um_res"
  BPMUM3 : MONI, TYPE="05_um_res"
  BPMUM4 : MONI, TYPE="05_um_res"
  RFB07  : MONI, TYPE="01_um_res"
  RFB08  : MONI, TYPE="01_um_res"
  BPMUE1 : MONI, TYPE="10_um_res"
  BPMUE2 : MONI, TYPE="10_um_res"
  BPMUE3 : MONI, TYPE="10_um_res"
  BPMQD  : MONI, TYPE="20_um_res"
  BPMDD  : MONI, TYPE="20_um_res"

! Collimators
! ===========

  CEDL1  : RCOL,L=0.08,XSIZE=2.5E-3,YSIZE=20E-3    ! XSIZE (or YSIZE) is the collimator half-gap (Tungsten body with Nitanium-Nitrite surface?)
  CEDL3  : RCOL,L=0.08,XSIZE=2.5E-3,YSIZE=20E-3
  CX31   : RCOL,L=0.08,XSIZE=2.2E-3,YSIZE=20E-3    ! 2.2 mm half-gap in X and Y here (beta_max=67 m) keeps worst case radius: r = sqrt(x^2+y^2) < 2 mm in undulator (beta_max=35 m)
  CY32   : RCOL,L=0.08,YSIZE=2.2E-3,XSIZE=20E-3
  CX35   : RCOL,L=0.08,XSIZE=2.2E-3,YSIZE=20E-3
  CY36   : RCOL,L=0.08,YSIZE=2.2E-3,XSIZE=20E-3
!  CX37   : RCOL,L=0.08,XSIZE=2.3E-3,YSIZE=20E-3
!  CY38   : RCOL,L=0.08,YSIZE=3.2E-3,XSIZE=20E-3
  DCX37  : DRIFT,L=0.08                            ! de-scoped in 2007 until ?
  DCY38  : DRIFT,L=0.08                            ! de-scoped in 2007 until ?

  TDUND  : INST !LTU insertable block at und. extension entrance (w/ screen)
  LSTPR  : = 0.3046
  SP0    : INST  ! MPS spoiler upstream of ST1
  ST1    : INST, L=LSTPR !X-ray insertable stopper (was "ST2" in ~2007)
  BTMST1 : INST  ! Burn-Through-Monitor behind ST1

! ==============================================================================
! external files
! ------------------------------------------------------------------------------

! load idealized (design) L1, L2, and L3 lattices ...

!  CALL, FILENAME="LCLS_L1e.xsif"
!  CALL, FILENAME="LCLS_L2e.xsif"
!  CALL, FILENAME="LCLS_L3e.xsif"

! ... or actual (as built) L1, L2, and L3 lattices

  CALL, FILENAME="LCLS_L1.xsif"
  CALL, FILENAME="LCLS_L2.xsif"
  CALL, FILENAME="LCLS_L3.xsif"

! ==============================================================================
! BEAMLINEs
! ------------------------------------------------------------------------------

  L1c   : LINE=(D9,DAQ1,QFL1,QFL1,DAQ1,&
                D9,DAQ1,QDL1,QDL1,DAQ1)
  L2c   : LINE=(4*D10,DAQ1,QFL2,QFL2,DAQ2,&
                4*D10,DAQ1,QDL2,QDL2,DAQ2)
  L3c   : LINE=(4*D10,DAQ1,QFL3,QFL3,DAQ2,&
                4*D10,DAQ1,QDL3,QDL3,DAQ2)

  SC0   : LINE=(XC00,YC00)
  SC1   : LINE=(XC01,YC01)
  SC2   : LINE=(XC02,YC02)
  SC3   : LINE=(XC03,YC03)
  SC4   : LINE=(XC04,YC04)
  SC5   : LINE=(XC05,YC05)
  SC6   : LINE=(XC06,YC06)
  SC7   : LINE=(XC07,YC07)
  SC8   : LINE=(XC08,YC08)
  SC9   : LINE=(XC09,YC09)
  SC10  : LINE=(XC10,YC10)
  SC11  : LINE=(XC11,YC11)
  SCA11 : LINE=(XCA11,YCA11)
  SCA12 : LINE=(XCA12,YCA12)
  SCM11 : LINE=(XCM11,YCM11)
  SCM13 : LINE=(XCM13,YCM12)
  SCM15 : LINE=(XCM14,YCM15)

  GUNBXG: LINE=(DL00,LOADLOCK,L0beg,SOL1BK,DBMARK80,CATHODE,DL01a,&
                SOL1,CQ01,CQ01,SC0,SQ01,SQ01,SOL1,&
                DL01a1,VV01,DL01a2,AM00,DL01a3,AM01,DL01a4,&
                YAG01,DL01a5,FC01,DL01b,IM01,DL01c,&
                SC1,DL01h,BPM2,DL01d,DBMARK81)

  BXGL0a: LINE=(DXG0,DXGA,DXGB,DL01e,BPM3,&
                DL01f,CR01,DL01f2,YAG02,DL01g,ZLIN00,FLNGa1,L0a___1,DLFDa,&
                L0a___2,SOL2,L0a___3,SC2,L0a___4,L0aMID,L0a___5,SC3,L0a___6,&
                OUTCPa,L0a___7,FLNGa2,L0aWAKE)

  GUNL0a: LINE=(GUNBXG,BXGL0a)

  L0b   : LINE=(L0bBEG,DL02a1,YAG03,DL02a2,DL02a3,QA01,QA01,DL02b1,&
                PH01,DL02b2,QA02,BPM5,QA02,DL02c,FLNGb1,L0b___1,DLFDb,&
                L0b___2,SC4,L0b___3,L0bMID,L0b___4,SC5,L0b___5,OUTCPb,&
                L0b___6,FLNGb2,L0end)

  LSRHTR: LINE=(LHBEG,BXh1A,BXh1B,Dh01,BXh2A,BXh2B,Dh02a,OTRH1,Dh03a,LH_UND,&
                HTRUND,LH_UND,Dh03b,OTRH2,Dh02b,BXh3A,BXh3B,Dh01,&
                BXh4A,BXh4B,LHEND)

  DL1A  : LINE=(EMAT,DL1beg,DE00,DE00a,&
                QE01,BPM6,QE01,DE01a,IM02,DE01b,VV02,DE01c,QE02,QE02,&
                Dh00,LSRHTR,Dh06,TCAV0,SC6,TCAV0,&
                DE02,QE03,BPM8,QE03,DE03a,DE03b,SC7,DE03c,&
                QE04,BPM9,QE04,DE04,&
                WS01,DE05,OTR1,DE05c,VV03,DE06a,RST1,DE06b,WS02,&
                DE05a,MRK0,DE05a,OTR2,DE06d,BPM10,DE06e,WS03,DE05,OTR3,DE07,&
                QM01,BPM11,QM01,DE08,SC8,DE08a,VV04,DE08b,&
                QM02,BPM12,QM02,DE09,DBMARK82)

  DL1B  : LINE=(BX01A,BX01B,DB00a,OTR4,DB00b,SC9,DB00c,&
                QB,BPM13,QB,DB00d,WS04,DB00e,BX02A,BX02B,CNT0,DBMARK83,&
                DM00,SC10,DM00a,QM03,BPM14,QM03,DM01,DM01a,&
                QM04,BPM15,QM04,DM02,IM03,DM02a,DL1end)

  DL1   : LINE=(DL1A,DL1B)           ! This is nominal LCLS DL1 layout with BX01/BX02 bends on

  DIAG1 : LINE=(DDG1,BPMS11,DDG2,CE11,DDG3,OTR11,DDG4)
  BC1c  : LINE=(BC1BEG,BX11A,BX11B,DBQ1,&
                CQ11,CQ11,D11o,&
                BX12A,BX12B,DIAG1,&
                BX13A,BX13B,D11oa,SQ13,SQ13,D11ob,&
                CQ12,CQ12,DBQ1,&
                BX14A,BX14B,CNT1,BC1END)
  BC1i  : LINE=(DL1Xa,VVX1,DL1Xb,XBEG,L1X___1,SCM11,L1X___2,XEND,DM10a,VVX2,&
                DM10c,Q21201,BPM21201,ZLIN02,Q21201,DM10x,IMBC1I,&
                DM11,QM11,QM11,DM12)
  BC1e  : LINE=(DM13a,BL11,DM13b,&
                QM12,QM12,DM14a,DM14b,IMBC1O,DM14c,&
                QM13,BPMM12,QM13,DM15a,BL12,DM15b,SCM13,DM15c,&
                WS11,DWW1a,WS12,DWW1b,OTR12,DWW1c1,PH02,DWW1c2,XC21302,&
                DWW1d,YC21303,DWW1e,WS13,DM16,Q21301,BPM21301,ZLIN03,&
                Q21301,DM17a,DM17b,TD11,DM17c,QM14,BPMM14,QM14,&
                DM18a,SCM15,DM18b,QM15,QM15,DBMARK28,DM19)
  BC1   : LINE=(BC1mrk,&
                BC1i,BC1c,BC1e,&
                BC1fin)
  L2    : LINE=(L2beg,&
                LI21,LI22,LI23,LI24,&
                L2end)
  DIAG2 : LINE=(DDG1,BPMS21,DDG2,CE21,DDG3,OTR21,DDG4)
  BC2C1 : LINE=(BC2BEG,BX21A,BX21B,DBQ2a,&
                CQ21,CQ21,D21oa,&
                BX22A,BX22B,DDG0,DIAG2,DDGA,&
                BX23A,BX23B,D21ob,&
                CQ22,CQ22,DBQ2b,&
                BX24A,BX24B,CNT2,BC2END)
  BC2   : LINE=(BC2mrk,&
                DM20,Q24701A,ZLIN08,Q24701A,D10cma,Q24701B,BPM24701,Q24701B,&
                DM21Z,DM21A,WS24,DM21H,IMBC2I,DM21B,VV21,DM21C,&
                QM21,QM21,DM21D,DM21E,BC2C1,D21w,D21x,BL21,D21y,DM23B,&
                QM22,QM22,DM24A,VV22,DM24B,DM24D,Q24901A,BPM24901,Q24901A,&
                DM24C,Q24901B,Q24901B,DM25,BC2fin)
  L3    : LINE=(L3beg,&
                LI25,LI26,LI27,LI28,LI29,LI30,&
                L3end,DBMARK29)

! merged LCLS/SLC/A-line BSY

  BSY : LINE=(BSYbeg,DBSY00,&
    Q50Q1,Q50Q1,DBSY01,BPMBSY1,DBSY02a,FFTBORGN,DBSY02b,S100,ZLIN15,&
      DBSY02c,XCBSY09,DBSY03,YCBSY10,DBSY04,C50PC20,DBSY05,XCBSY26,DBSY06,&
      YCBSY27,DBSY07,&
    Q50Q2,Q50Q2,DBSY08,BPMBSY29,DBSY09,P460031T,DBSY10,P460032T,DBSY11,&
      C50PC30,DBSY12,IMBSY34,DBSY13,XCBSY34,DBSY14,YCBSY35,DBSY15,XCBSY36,&
      DBSY16,YCBSY37,DBSY17,&
    Q50Q3,Q50Q3,DBSY18,BPMBSY39,DBSY19,DBMARK14)

  B12WAL : LINE=(&
    D50B1,D50B1,DBSY20,PRBSY45,DBSY21,C50PC45,DBSY22a,DBMARK33,DBSY22b,&
      BPMBSY51,DBSY23,I_1,DBSY24,I_2,DBSY25,A4V,DBSY26,A4H,DBSY27,M351010T,&
      DBSY28,P950115T,DBSY29,IV3,DBSY30,P460118T,DBSY31,C50PC119,DBSY32,&
      XCBSY60,DBSY33,BPMBSY61,DBSY34,YCBSY62,DBSY35,BPMBSY63,DBSY36,ISP2,&
      DBSY37,PMV,DBSY38,&
    ROLL1,D9501401,D9501402,DBSY39,&
      DPM,PM1,DPM,DPMPM,C50PC155,DPMPM,&
      DPM,PM2,DPM,DPMPM,C50PC165,DPMPM,&
      DPM,BE_TGT,DPM,DPMPM,C50PC175,DPMPM,&
      DPM,PM4,DPM,DPMPM,C50PC185,DPMPM,&
      DPM,PM5,DPM,&
      DBSY40,&
    D9502001,D9502002,DBSY41,D10J,DBSY42,D19A,DBSY43,D10H,DBSY44,FLNG,ROLL2,&
      DMB01,PC90,DMB02,H1DL,XCBSY81,H1DL,DM03,V1DL,YCBSY82,V1DL,DM04,I3,DM05,&
      P950020T,DM08,IV4,DM09,BPMBSY83,DM10B,QSM1,QSM1,DQSM1,&
    Q5,BPMBSY85,Q5,DYC5,I4A,I4B,I5,I5,DM12A,I6,I6,DM12B,YC5,DM12C,XC6,DXC6,&
    Q6,BPMBSY88,Q6,DM2,D2L,D2,D2L,DM3,ST60L,ST60,ST60L,DM4,XCA0,DXCA0,YCA0,&
      DYCA0,ST61L,ST61,ST61L,DM5,&
    QA0,BPMBSY92,QA0,DM6,DMONI,DMONI,WALL,BSYend)

  B52LIN: LINE=(B50B1A    ,B50B1B    ,DRI14001  ,PR45      ,DRI14002  ,&
                BPM52     ,DRI14003  ,B52AGFA   ,B52AGFB   ,DRI14004  ,&
                B52WIG1A  ,B52WIG1B  ,DRI14005  ,B52WIG2A  ,YC54T     ,&
                B52WIG2B  ,DRI14005  ,B52WIG3A  ,B52WIG3B  ,DRI14006  ,&
                PR55      ,DRI14007  ,BPM56     ,DRI14008  ,Q52Q2     ,&
                Q52Q2     ,DRI14009  ,PR60      ,DRI14010  ,IM61      ,&
                DRI14011  ,WS62      ,DRI14012  ,YC59      ,DRI14013  ,&
                SL1X      ,BPM64     ,DRI14014  ,SL1Y      ,DRI14015  ,&
                BPM68     ,DRI14016  ,XC69      ,DRI14017  ,SL2       ,&
                DBMARK99)

  ECELL : LINE=(QE31,DQEC,DQEC,QE32,QE32,DQEC,DQEC,QE31)
  VBEND : LINE=(VBin,&
                BY1A,BY1B,DVB1,QVB1,BPMVB1,QVB1,D40cmc,YCVB1, &
                DVB2m80cm,D40cmc,QVB2,BPMVB2,QVB2,DVB2, &
                QVB3,BPMVB3,QVB3,D40cmc,YCVB3,DVB1m40cm,BY2A,BY2B,CNTV, &
                VBout)
  VBSYS : LINE=(DYCVM1,&
                YCVM1,DQVM1,QVM1,BPMVM1,QVM1,DQVM2a,XCVM2,DQVM2b,&
                QVM2,BPMVM2,QVM2,DWSVM2a,WSVM2,DWSVM2b,&
                VBEND,DVB25cmc,&
                XCVM3,D25cm,QVM3,BPMVM3,QVM3,DVBem25cm,&
                YCVM4,D25cm,QVM4,BPMVM4,QVM4,DVBem15cm,IM31,D10cmb,IMBCS1,&
                D25cma)
  EWIG  : LINE=(DBYw1A,DBYw1B,Dw1o,DBYw2A,DBYw2B,Dw1o,DBYw3A,DBYw3B,&
                CNTw)
  DL21  : LINE=(DBMARK34,BX31A,BX31B,DDL10w,EWIG, &
                DWSDL31a,WSDL31,DWSDL31b,DDL10x, &
                XCDL1,D31A,QDL31,BPMDL1,QDL31,D31B,YCDL1,D32cmb,CEDL1, &
                DDL10em80cm,BX32A,BX32B,CNT3a)
  DL22  : LINE=(DX33A,DX33B,DDL1a,BYKIK1A,BYKIK1B,DDL1c,DDL1c,&
                BYKIK2A,BYKIK2B,DDL1b,XCDL2,D32A,QDL32,BPMDL2,&
                QDL32,D32B,YCDL2,DSPLR,SPOILER,DDL1cm40cm,TDKIK,D30cma,&
                PCTDKIK1,DPC1,PCTDKIK2,DPC2,PCTDKIK3,DPC3,PCTDKIK4,DPC4,&
                SPONTUA,SPONTUB,DDL1dm30cm,DX34A,DX34B)
  DL23  : LINE=(BX35A,BX35B,DCQ31a,CQ31,CQ31,DCQ31b,OTR30,D29cma,XCDL3, &
                D33A,QDL33,BPMDL3,QDL33,D33B,YCDL3,D32cmd,CEDL3, &
                DCQ32a,CQ32,CQ32,DCQ32b,BX36A,BX36B,CNT3b)
  DL24  : LINE=(DX37A,DX37B,D30cm,IMBCS2,DDL10m70cm,XCDL4,D34A,QDL34,&
                BPMDL4,QDL34,D34B,YCDL4,DDL10um25cm,DDL10v,DX38A,DX38B)
  TRIP1 : LINE=(DDL20e,QT11,QT11,DDL30em40cm,XCQT12,D40cmb,QT12, &
                BPMT12,QT12,D40cmb,YCQT12,DDL30em40cm,QT13,QT13,DDL20e)
  TRIP2 : LINE=(DDL20,QT21,QT21,DDL30em40cm,XCQT22,D40cmb,QT22, &
                BPMT22,QT22,D40cmb,YCQT22,DDL30em40cm,QT23,QT23,DDL20)
  TRIP3 : LINE=(DDL20e,QT31,QT31,DDL30em40cma,XCQT32,D40cmd,QT32, &
                BPMT32,QT32,D40cme,YCQT32,DDL30em40cmb,QT33,QT33,DDL20e)
  TRIP4 : LINE=(DDL20,QT41,QT41,DDL30em40cmc,XCQT42,D40cmf,QT42, &
                BPMT42,QT42,D40cmb,YCQT42,DDL30em40cm,QT43,QT43,DDL20)
  DOGLG2A:LINE=(DL21,TRIP1,SS1,DL22,TRIP2)
  DOGLG2B:LINE=(DL23,TRIP3,SS3,DL24,TRIP4)
  EDMCH : LINE=(D25cmb,IM36,D25cmc,DMM1m90cm,YCEM1, &
                DEM1A,QEM1,BPMEM1,QEM1,DEM1B,QEM2,BPMEM2,QEM2,DEM2B, &
                XCEM2,DMM3m80cm,YCEM3,DEM3A,QEM3,BPMEM3,QEM3, &
                DEM3B,QEM3V,QEM3V,DMM4m90cm,XCEM4,DEM4A,QEM4,BPMEM4,&
                QEM4,DMM5)
  EDSYS : LINE=(DBMARK36,WS31,D40cm,DE3m80cma, &
                XCE31,DQEA,QE31,BPME31,QE31,DQEBx,CX31,DQEBx2, &
                DE3a,YCE32,DQEAa,QE32,BPME32,QE32,DQEBy,CY32, &
                DQEBy2,WS32,D40cm,DE3m80cmb,XCE33,DQEAb, &
                QE33,BPME33,QE33,DQECa,YAGPSI,DQECb,OTR33,DE3m40cm, &
                YCE34,DQEA,QE34, &
                BPME34,QE34,DQEC,WS33,D40cm,DE3m80cm,XCE35, &
                DQEAc,QE35,BPME35,QE35,DQEBx,CX35,DQEBx2,DE3, &
                YCE36,DQEA,QE36,BPME36,QE36,DQEBy,CY36,DQEBy2, &
                WS34,D40cmg,WS35,D40cmh)
  UNMCH : LINE=(DU1m80cma,WS36,DU1m80cmb,DCX37,D32cmc,XCUM1,DUM1A,&
                QUM1,BPMUM1,QUM1,DUM1B, &
                D32cm,DU2m120cm,DCY38,D32cma,YCUM2,DUM2A,QUM2, &
                BPMUM2,QUM2,DUM2B,DU3m80cm,YCUM3,DUM3A, &
                QUM3,BPMUM3,QUM3,DUM3B,D40cma,EOBLM,DU4m120cm, &
                XCUM4,DUM4A,QUM4,BPMUM4,QUM4,DUM4B,RFB07,DU5m80cm, &
                IMUNDI,DUHW1,RWWAKEAl,UHWALL1,DMUON2,DVV35,RFB08,&
                DUHW2,UHWALL2,DTDUND1,&
                TDUND,DTDUND2,PCMUON,DMUON1,VV999,DMUON3,MM3,PFILT1,&
                DBMARK37)

! Undulator exit and Dumps:
! ========================
  UNDEXIT : LINE=(UEbeg,DUE1a,VV36,DUE1b,IMUNDO,DUE1c,&
                  DUE2a,XCUE1,DUE2b,PH31,DUE2c,PH32,DUE2d,YCUE2,DUE2e,&
                  BPMUE1,DUE2f,QUE1,QUE1,DUE3a,TRUE1,DUE3b,&
                  PCXTC,DPCVV,VVXTC,DVVXTC,XTC01,XTC01,DXTC12,MXTC,DXTC12,&
                  XTC02,XTC02,DXTCSP,SPXTC,DUE4,QUE2,QUE2,&
                  DUE5a,BPMUE2,DUE5b,BTM0,DUHW3,UHWALL3,DUE5c,YCD3,DUE5d,&
                  XCD3,DUE5e,UEend,&
                  DLstart,DSB0a,PCPM0,DSB0b,IMBCS3,DSB0c,VV37,&
                  DSB0d,BPMUE3,DSB0e)

  DUMPLINE: LINE=(BYD1A,BYD1B,DS,BYD2A,BYD2B,DS, &
                  BYD3A,BYD3B,DSc,PCPM1L,BTM1L,DD1a,IMDUMP,DD1b,YCDD,&
                  DD1f,PCPM2L,BTM2L,DD1c,QDmp1,QDmp1,DD1d,BPMQD,DD1e,&
                  QDmp2,QDmp2,DD2a,XCDD,DD2b,IMBCS4,DD3a,BPMDD,DD3b,&
                  OTRDMP,DWSDUMPa,WSDUMP,DWSDUMPb,&
                  DUMPFACE,DMPend,DD3d,EOL,DD3e,BTMDUMP,&
                  DBMARK38)

  PERMDUMP: LINE=(SFTBEG,DYD1,DSS1,DYD2,DSS2,DYD3,DScS1,VV38,DScS2,&
                  PCPM1,BTM1,DXDCu,XDCa,XDCXRAY,XDCb,XDCc,YAGXRAY,XDCd,&
                  DXDCd,SP0,DSP0,ST1,DST1,BTMST1,DPM1c,PCPM2,BTM2,DPM1d,&
                  BXPM1A,BXPM1B,DPM1,BXPM2A,BXPM2B,DPM2,BXPM3A,BXPM3B,&
                  DSFT,SFTDMP,DPM2e,BTMSFT,DMPend)

  LTU     : LINE=(MM1,DOGLG2A,DOGLG2B,MM2,EDMCH,EDSYS,UNMCH)
  BSYLTU  : LINE=(RWWAKEss,BSY,B12WAL,VBSYS,LTU,UND,UNDEXIT,DUMPLINE)

  LCLS  : LINE=(DL1,L1,BC1,L2,BC2,L3,BSYLTU)

! ------------------------------------------------------------------------------
! initial SURVEY coordinates
! ------------------------------------------------------------------------------

! set initial linac survey coordinates
! (NOTE: pitch is not included here for simplicity - for linac coordinates,
!        read in pitched plane of linac)

  XLL := 10.9474                   !X at loadlock start [m]
  ZLL := 2032.0-14.8125+ZOFFINJ    !Z at loadlock start (move injector ~12 mm dnstr. - Nov. 17, 2004, -PE) [m]
  Xi  := XLL+LOADLOCK[L]*SIN(ADL1) !subtract from upbeam side of loadlock to get to cathode [m]
  Zi  := ZLL+LOADLOCK[L]*COS(ADL1) !subtract from upbeam side of loadlock to get to cathode [m]

! set initial BSY survey coordinates

  Xf     :=  0        !hor. position is on linac axis, which is zero here [m]
  THETAf :=  0        !no yaw at S100
  PSIf   :=  0        !no roll at S100
  Yf     :=  0.009738 !Y near 50Q1 (~2 m upbeam S100) in undulator coordinates (for LTU engineers)
  Zf     := -2.085977 !Z near 50Q1 (~2 m upbeam S100) in undulator coordinates (for LTU engineers)
  PHIf   := 2*AVB     !S100 pitch in undulator coordinates (for LTU engineers)

 !VALUE, ADL1,Xi,Zi

! ==============================================================================
! SUBROUTINEs
! ------------------------------------------------------------------------------

  ML1c : SUBROUTINE

  ! match L1 phase advance per cell (coasting)

    VALUE, KQL1
    USE, L1c
    CELL
      VARY, KQL1, STEP=1.E-5, LOWER=0, UPPER=100
      CONSTR, #E, MUX=MU_L1, MUY=MU_L1
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 1.448192E-25   ! =expected penalty function with fitting OFF
    VALUE, KQL1
  ENDSUBROUTINE

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

  ML2c : SUBROUTINE

  ! match L2 phase advance per cell (coasting)

    VALUE, KQL2
    USE, L2c
    CELL
      VARY, KQL2, STEP=1.E-5, LOWER=0, UPPER=100
      CONSTR, #E, MUX=MU_L2, MUY=MU_L2
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 2.277840E-24   ! =expected penalty function with fitting OFF
    VALUE, KQL2
  ENDSUBROUTINE

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

  ML3c : SUBROUTINE

  ! match L3 phase advance per cell (coasting)

    VALUE, KQFL3,KQDL3
    USE, L3c
    CELL
      VARY, KQFL3, STEP=1.E-5, LOWER=0   , UPPER=100
      VARY, KQDL3, STEP=1.E-5, LOWER=-100, UPPER=0
      CONSTR, #E, MUX=MUX_L3, MUY=MUY_L3
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 1.809822E-13   ! =expected penalty function with fitting OFF
    VALUE, KQFL3,KQDL3
  ENDSUBROUTINE

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

  MTWSSC : SUBROUTINE

  ! find Twiss at cathode
  ! (NOTE: optics between cathode and DL1beg is meaningless ... used only to
  !        initialize sumL and show beamline layout)

    VALUE, CBETX,CALFX,CBETY,CALFY
    USE, GUNL0a
    MATCH, ENERGY=E00, BETX=CBETX, ALFX=CALFX, BETY=CBETY, ALFY=CALFY
      VARY, CBETX, STEP=1.E-4, LOWER=0.1, UPPER=100
      VARY, CALFX, STEP=1.E-4, LOWER=-10, UPPER=10
      VARY, CBETY, STEP=1.E-4, LOWER=0.1, UPPER=100
      VARY, CALFY, STEP=1.E-4, LOWER=-10, UPPER=10
      CONSTR, #E, BETX=TBETX, ALFX=TALFX, BETY=TBETY, ALFY=TALFY
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE,  1.434054E-15   ! =expected penalty function with fitting OFF
    VALUE, CBETX,CALFX,CBETY,CALFY
  ENDSUBROUTINE

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

  MGSPEC : SUBROUTINE

  ! match gun spectrometer

    VALUE, QG02[K1],QG03[K1]
    USE, (GUNBXG,GSPEC)
    MATCH, BETA0=TWSSC
      VARY, QG02[K1], STEP=1.E-4, LOWER=-100,  UPPER=+100
      VARY, QG03[K1], STEP=1.E-4, LOWER=-100,  UPPER=+100
      RMATRIX, YAG01/YAGG1, RM(1,2)=0, WEIGHT(1,2)=6, &
                            RM(3,4)=0, WEIGHT(3,4)=6
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 3.013681E-13   ! =expected penalty function with fitting OFF
    VALUE, QG02[K1],QG03[K1]
  ENDSUBROUTINE

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

  MBChETA : SUBROUTINE

  ! set Heater-chicane peak dispersion

    VALUE, BBh1,ABh1
    USE, (DL1)
    MATCH, ENERGY=Ei
      VARY, BBh1, STEP=1.E-5, LOWER=-8, UPPER=8
      CONSTR, HTRUND, DX=-0.035486*LSRHTR_ON    ! want 35 mm X-offset - need 35.486 mm of etaX to get it
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 1.088755E-20   ! =expected penalty function with fitting OFF
    VALUE, BBh1,ABh1
  ENDSUBROUTINE

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

  MBSYS : SUBROUTINE

  ! match DL1 bend system dispersion

    VALUE, KQB
    USE, (L0b,DL1)
    MATCH, BETA0=TWSS0
      VARY, KQB, STEP=1.E-5, LOWER=-39, UPPER=+39
      RMATRIX, DE09/BX02B, RM(1,6)=0
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 2.099758E-22   ! =expected penalty function with fitting OFF
    VALUE, KQB
  ENDSUBROUTINE

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

  MED0 : SUBROUTINE

  ! match from exit of L0 into ED0

    VALUE, KQA01,KQA02,KQE01,KQE02,KQE03,KQE04
    USE, (GUNL0a,L0b,DL1)
    MATCH, BETA0=TWSSC
      VARY, KQA01, STEP=1.E-5, LOWER=-39,  UPPER=+39
      VARY, KQA02, STEP=1.E-5, LOWER=-39,  UPPER=+39
      VARY, KQE01, STEP=1.E-5, LOWER=-39,  UPPER=+39
      VARY, KQE02, STEP=1.E-5, LOWER=-39,  UPPER=+39
      VARY, KQE03, STEP=1.E-5, LOWER=-39,  UPPER=+39
      VARY, KQE04, STEP=1.E-5, LOWER=-39,  UPPER=+39
      CONSTR, MRK0, BETX=BMIN0,ALFX=0.,BETY=BMIN0,ALFY=0.
      CONSTR, HTRUND, BETX<12,BETX>8,BETY<12,BETY>8
      !LMDIF
      !MIGRAD
      !SIMPLEX
    ENDMATCH
    VALUE, 1.900871E-09   ! =expected penalty function with fitting OFF (htr fully ON)
    VALUE, KQA01,KQA02,KQE01,KQE02,KQE03,KQE04
  ENDSUBROUTINE

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

  MED2L1 : SUBROUTINE

  ! match from ED0 through injection bend system to L1

    VALUE, KQM01,KQM02,KQM03,KQM04
    USE, (L0b,DL1,L1)
    MATCH, BETA0=TWSS0
      VARY, KQM01, STEP=1.E-5, LOWER=-39,UPPER=+39
      VARY, KQM02, STEP=1.E-5, LOWER=-39,UPPER=+39
      VARY, KQM03, STEP=1.E-5, LOWER=-39,UPPER=+39
      VARY, KQM04, STEP=1.E-5, LOWER=-39,UPPER=+39
      CONSTR, QA11[1], BETY=BET11, BETX=BET12
      CONSTR, QA12[1], BETY=BET12, BETX=BET11
      CONSTR, QM03[1], BETY<10
      CONSTR, OTR4, BETX<1.7, BETY>8.0
      !MIGRAD
      !SIMPLEX
    ENDMATCH
    VALUE,  8.576116E-02   ! =expected penalty function with fitting OFF
    VALUE, KQM01,KQM02,KQM03,KQM04
  ENDSUBROUTINE

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

  MSPEC : SUBROUTINE

  ! match 135-MeV spectrometer

    VALUE, KQS01,KQS02,KQM01,KQM02
    USE, (L0b,DL1A,SPECBL)
    MATCH, BETA0=TWSS0
      VARY, KQS01, STEP=1.E-5, LOWER=-40,  UPPER=+40   ! nominal fit at YAGS2
      VARY, KQS02, STEP=1.E-5, LOWER=-40,  UPPER=+40   ! nominal fit at YAGS2
!!    VARY, KQM01, STEP=1.E-5, LOWER=-40,UPPER=+40     ! only use when 3-keV resolution on OTR required
!!    VARY, KQM02, STEP=1.E-5, LOWER=-40,UPPER=+40     ! only use when 3-keV resolution on OTR required
      WEIGHT, BETX=10                                  ! all fits
      CONSTR, YAGS2, BETX<0.120,BETY>5,BETY<12         ! nominal fit at YAGS2
!!    CONSTR, OTRS1, BETX<0.07,BETY>5,BETY<12          ! only use when 3-keV resolution on OTR required
      CONSTR, YAGS2, DX<-0.9*E0i/Ei                    ! nominal fit at YAGS2
!!    CONSTR, OTRS1, DX=-1.0*E0i/Ei                    ! only use when 3-keV resolution on OTR required
!!    CONSTR, DS2, BETX<35                             ! only use when 3-keV resolution on OTR required
!!    CONSTR, BPM12, BETY<35                           ! only use when 3-keV resolution on OTR required
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE,  1.377848E-02   ! =expected penalty function with fitting OFF
    VALUE, KQS01,KQS02,KQM01,KQM02
  ENDSUBROUTINE

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

  MBC1R56 : SUBROUTINE

  ! match BC1 R56

    VALUE, BB11,AB11,AB11S,LB11S,AB11L,LB11L
    USE, BC1c
    MATCH, ENERGY=EBC1
      VARY, BB11, STEP=1.E-5, LOWER=-16, UPPER=0
      RMATRIX, #S/#E, RM(5,6)=0.03905
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 1.020712E-28   ! =expected penalty function with fitting OFF
    VALUE, BB11,AB11,AB11S,LB11S,AB11L,LB11L
  ENDSUBROUTINE

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

  MBC1e : SUBROUTINE

  ! match through BC1 chicane into emittance measurement system

    VALUE, KQA12,KQ21201,KQM11,KQM12,KQM13
    USE, (L0b,DL1,L1,BC1)
    MATCH, BETA0=TWSS0
      VARY, KQA12,   STEP=1.E-5, LOWER=-100, UPPER=+100
      VARY, KQ21201, STEP=1.E-5, LOWER=-100, UPPER=0
      VARY, KQM11,   STEP=1.E-5, LOWER=-100, UPPER=+100
      VARY, KQM12,   STEP=1.E-5, LOWER=-100, UPPER=+100
      VARY, KQM13,   STEP=1.E-5, LOWER=-100, UPPER=+100
      CONSTR, BX14B, BETX<4.0, ALFX<-0.0
      CONSTR, WS12, BETX=BMIN1, ALFX=0, BETY=BMIN1, ALFY=0
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 1.520512E-13  ! =expected penalty function with fitting OFF
    VALUE, KQA12,KQ21201,KQM11,KQM12,KQM13
  ENDSUBROUTINE

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

  MBC1L2 : SUBROUTINE

  ! match BC1 to L2

    VALUE, KQM14,KQM15,KQ21401,KQ21501
    USE, (L0b,DL1,L1,BC1,LI21)
    MATCH, BETA0=TWSS0
!!    VARY, KQ21301, STEP=1.E-5, LOWER=-10,UPPER=0  ! leave this quad OFF - unhook cables?
      VARY, KQM14,   STEP=1.E-5, LOWER=0  ,UPPER=10
      VARY, KQM15,   STEP=1.E-5, LOWER=-10,UPPER=0
      VARY, KQ21401, STEP=1.E-5, LOWER=0  ,UPPER=10
      VARY, KQ21501, STEP=1.E-5, LOWER=-10,UPPER=0
      CONSTR, QM15[1], BETY<BET21
      CONSTR, Q21401[1], BETX=BET21 !, BETY=BET22
      CONSTR, Q21501[1], BETY=BET21 !, BETX=BET22
      CONSTR, Q21601[1], BETX=BET21, BETY=BET22
      CONSTR, Q21701[1], BETY=BET21, BETX=BET22
      CONSTR, Q21801[1], BETX=BET21, BETY=BET22
      CONSTR, Q21901[1], BETY=BET21 !, BETX=BET22
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 9.653556E+00   ! =expected penalty function with fitting OFF
    VALUE, KQM14,KQM15,KQ21401,KQ21501
  ENDSUBROUTINE

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

  ML22 : SUBROUTINE

  ! match LI22 betas

    VALUE, KQ21801,KQ21901,KQ22201,KQ22301
    USE, (L0b,DL1,L1,BC1,L2)
    MATCH, BETA0=TWSS0
      VARY, KQ21801, STEP=1.E-5, LOWER=0   , UPPER=100
      VARY, KQ21901, STEP=1.E-5, LOWER=-100, UPPER=0
      VARY, KQ22201, STEP=1.E-5, LOWER=0   , UPPER=100
      VARY, KQ22301, STEP=1.E-5, LOWER=-100, UPPER=0
      CONSTR, Q22401[1], BETX=BET21, BETY=BET22
      CONSTR, Q22501[1], BETX=BET22, BETY=BET21
      CONSTR, Q22601[1], BETX=BET21, BETY=BET22
      CONSTR, Q22701[1], BETX=BET22, BETY=BET21
      CONSTR, Q22801[1], BETX=BET21, BETY=BET22
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 9.912298E-02    ! =expected penalty function with fitting OFF
    VALUE, KQ21801,KQ21901,KQ22201,KQ22301
  ENDSUBROUTINE

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

  ML23 : SUBROUTINE

  ! match LI23 betas

    VALUE, KQ22801,KQ22901,KQ23201,KQ23301
    USE, (L0b,DL1,L1,BC1,L2)
    MATCH, BETA0=TWSS0
      VARY, KQ22801, STEP=1.E-5, LOWER=0   , UPPER=100
      VARY, KQ22901, STEP=1.E-5, LOWER=-100, UPPER=0
      VARY, KQ23201, STEP=1.E-5, LOWER=0   , UPPER=100
      VARY, KQ23301, STEP=1.E-5, LOWER=-100, UPPER=0
      CONSTR, Q23401[1], BETX=BET21, BETY=BET22
      CONSTR, Q23501[1], BETX=BET22, BETY=BET21
      CONSTR, Q23601[1], BETX=BET21, BETY=BET22
      CONSTR, Q23701[1], BETX=BET22, BETY=BET21
      CONSTR, Q23801[1], BETX=BET21, BETY=BET22
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 1.349422E-02   ! =expected penalty function with fitting OFF
    VALUE, KQ22801,KQ22901,KQ23201,KQ23301
  ENDSUBROUTINE

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

  ML24 : SUBROUTINE

  ! match LI24 betas

    VALUE, KQ23801,KQ23901,KQ24201,KQ24301,KQ24401,KQ24501
    USE, (L0b,DL1,L1,BC1,L2)
    MATCH, BETA0=TWSS0
      VARY, KQ23801, STEP=1.E-5, LOWER=0   , UPPER=100
      VARY, KQ23901, STEP=1.E-5, LOWER=-100, UPPER=0
      VARY, KQ24201, STEP=1.E-5, LOWER=0   , UPPER=100
      VARY, KQ24301, STEP=1.E-5, LOWER=-100, UPPER=0
      VARY, KQ24401, STEP=1.E-5, LOWER=0   , UPPER=100
!      VARY, KQ24501, STEP=1.E-5, LOWER=-100, UPPER=0
      CONSTR, Q23901[1], BETY<50
      CONSTR, Q24201[1], BETX=BET21 ! , BETY=BET22
      CONSTR, Q24301[1], BETY=BET21 ! , BETX=BET22
      CONSTR, Q24401[1], BETX=BET21 ! , BETY=BET22
      CONSTR, Q24501[1], BETY=BET21 ! , BETX=BET22
      CONSTR, Q24601[1], BETX=BET21 ! , BETY=BET22
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 8.109371E-03   ! =expected penalty function with fitting OFF and when KQ24501 set to post MBC2i-fit value
    VALUE, KQ23801,KQ23901,KQ24201,KQ24301,KQ24401,KQ24501
  ENDSUBROUTINE

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

  MBC2R56 : SUBROUTINE

  ! match BC2 R56

    VALUE, BB21,AB21
    USE, BC2
    MATCH, ENERGY=EBC2
      VARY, BB21, STEP=1.E-6, LOWER=-18, UPPER=0
      RMATRIX, #S/#E, RM(5,6)=0.0247
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 1.337643E-18   ! =expected penalty function with fitting OFF
    VALUE, BB21,AB21
  ENDSUBROUTINE

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

  MBC2i : SUBROUTINE

  ! match into BC2

    VALUE, KQ24501,KQ24601,KQ24701,KQM21
    USE, (L0b,DL1,L1,BC1,L2,BC2)
    MATCH, BETA0=TWSS0
      VARY, KQ24501, STEP=1.E-5 !, LOWER=-100, UPPER=0
      VARY, KQ24601, STEP=1.E-5 !, LOWER=0   , UPPER=100
      VARY, KQ24701, STEP=1.E-5 !, LOWER=-100, UPPER=0
      VARY, KQM21,   STEP=1.E-5 !, LOWER=0   , UPPER=100
      WEIGHT, BETX=10
      CONSTR, BX24B, BETX=5.0, ALFX=-0.5
      WEIGHT, BETX=0.1  , BETY=0.1
      CONSTR, Q24601[1] , BETY>10
      CONSTR, Q24701A[2], BETY<50
      CONSTR, Q24701A[2], BETX<50
      CONSTR, Q24901A[2], BETY<75
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE,  6.532261E-03   ! =expected penalty function with fitting OFF
    VALUE, KQ24501,KQ24601,KQ24701,KQM21
  ENDSUBROUTINE

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

  MBC2L3 : SUBROUTINE

  ! match BC2 to L3

    VALUE, KQM22,KQ24901,KQ25201,KQ25301,KQ25401,KQ25501
    USE, (L0b,DL1,L1,BC1,L2,BC2,LI25)
    MATCH, BETA0=TWSS0
      VARY, KQM22,   STEP=1.E-5  , LOWER=-0.65, UPPER=0
      VARY, KQ24901, STEP=1.E-5 !, LOWER=-10 , UPPER=0
      VARY, KQ25201, STEP=1.E-5 !, LOWER=0   , UPPER=10
      VARY, KQ25301, STEP=1.E-5 !, LOWER=-10 , UPPER=0
      VARY, KQ25401, STEP=1.E-5 !, LOWER=0   , UPPER=10
      VARY, KQ25501, STEP=1.E-5 !, LOWER=-10 , UPPER=0
      CONSTR, Q25201[1], BETX<60
      CONSTR, Q25301[1], BETY<64
      CONSTR, Q25401[1], BETX=BET31, BETY=BET32
      CONSTR, Q25501[1], BETX=BET33, BETY=BET34
      CONSTR, Q25601[1], BETX=BET31, BETY=BET32
      CONSTR, Q25701[1], BETX=BET33, BETY=BET34
      CONSTR, Q25801[1], BETX=BET31, BETY=BET32
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 1.442784E-02   ! =expected penalty function with fitting OFF
    VALUE, KQM22,KQ24901,KQ25201,KQ25301,KQ25401,KQ25501
  ENDSUBROUTINE

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

  ML26 : SUBROUTINE

  ! match LI26 betas

    VALUE, KQ25801,KQ25901,KQ26201,KQ26301
    USE, (L0b,DL1,L1,BC1,L2,BC2,L3)
    MATCH, BETA0=TWSS0
      VARY, KQ25801, STEP=1.E-5 !, LOWER=0   , UPPER=100
      VARY, KQ25901, STEP=1.E-5 !, LOWER=-100, UPPER=0
      VARY, KQ26201, STEP=1.E-5 !, LOWER=0   , UPPER=100
      VARY, KQ26301, STEP=1.E-5 !, LOWER=-100, UPPER=0
      CONSTR, Q26301[1], BETX=BET33, BETY=BET34
      CONSTR, Q26401[1], BETX=BET31, BETY=BET32
      CONSTR, Q26501[1], BETX=BET33, BETY=BET34
      CONSTR, Q26601[1], BETX=BET31, BETY=BET32
      CONSTR, Q26701[1], BETX=BET33, BETY=BET34
      CONSTR, Q26801[1], BETX=BET31, BETY=BET32
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 1.522531E-02   ! =expected penalty function with fitting OFF
    VALUE, KQ25801,KQ25901,KQ26201,KQ26301
  ENDSUBROUTINE

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

  ML27 : SUBROUTINE

  ! match LI27 betas

    VALUE, KQ26801,KQ26901,KQ27201,KQ27301
    USE, (L0b,DL1,L1,BC1,L2,BC2,L3)
    MATCH, BETA0=TWSS0
      VARY, KQ26801, STEP=1.E-5 !, LOWER=0   , UPPER=100
      VARY, KQ26901, STEP=1.E-5 !, LOWER=-100, UPPER=0
      VARY, KQ27201, STEP=1.E-5 !, LOWER=0   , UPPER=100
      VARY, KQ27301, STEP=1.E-5 !, LOWER=-100, UPPER=0
      CONSTR, Q27301[1], BETX=BET33, BETY=BET34
      CONSTR, Q27401[1], BETX=BET31, BETY=BET32
      CONSTR, Q27501[1], BETX=BET33, BETY=BET34
      CONSTR, Q27601[1], BETX=BET31, BETY=BET32
      CONSTR, Q27701[1], BETX=BET33, BETY=BET34
      CONSTR, Q27801[1], BETX=BET31, BETY=BET32
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 5.351428E-03   ! =expected penalty function with fitting OFF
    VALUE, KQ26801,KQ26901,KQ27201,KQ27301
  ENDSUBROUTINE

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

  ML28 : SUBROUTINE

  ! match LI28 betas

    VALUE, KQ27801,KQ27901,KQ28201,KQ28301
    USE, (L0b,DL1,L1,BC1,L2,BC2,L3)
    MATCH, BETA0=TWSS0
      VARY, KQ27801, STEP=1.E-5 !, LOWER=0   , UPPER=100
      VARY, KQ27901, STEP=1.E-5 !, LOWER=-100, UPPER=0
      VARY, KQ28201, STEP=1.E-5 !, LOWER=0   , UPPER=100
      VARY, KQ28301, STEP=1.E-5 !, LOWER=-100, UPPER=0
      CONSTR, Q28301[1], BETX=BET33, BETY=BET34
      CONSTR, Q28401[1], BETX=BET31, BETY=BET32
      CONSTR, Q28501[1], BETX=BET33, BETY=BET34
      CONSTR, Q28601[1], BETX=BET31, BETY=BET32
      CONSTR, Q28701[1], BETX=BET33, BETY=BET34
      CONSTR, Q28801[1], BETX=BET31, BETY=BET32
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 2.676795E-03   ! =expected penalty function with fitting OFF
    VALUE, KQ27801,KQ27901,KQ28201,KQ28301
  ENDSUBROUTINE

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

  ML29 : SUBROUTINE

  ! match LI29 betas

    VALUE, KQ28801,KQ28901,KQ29201,KQ29301
    USE, (L0b,DL1,L1,BC1,L2,BC2,L3)
    MATCH, BETA0=TWSS0
      VARY, KQ28801, STEP=1.E-5 !, LOWER=0   , UPPER=100
      VARY, KQ28901, STEP=1.E-5 !, LOWER=-100, UPPER=0
      VARY, KQ29201, STEP=1.E-5 !, LOWER=0   , UPPER=100
      VARY, KQ29301, STEP=1.E-5 !, LOWER=-100, UPPER=0
      CONSTR, Q29301[1], BETX=BET33, BETY=BET34
      CONSTR, Q29401[1], BETX=BET31, BETY=BET32
      CONSTR, Q29501[1], BETX=BET33, BETY=BET34
      CONSTR, Q29601[1], BETX=BET31, BETY=BET32
      CONSTR, Q29701[1], BETX=BET33, BETY=BET34
      CONSTR, Q29801[1], BETX=BET31, BETY=BET32
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 1.515926E-03   ! =expected penalty function with fitting OFF
    VALUE, KQ28801,KQ28901,KQ29201,KQ29301
  ENDSUBROUTINE

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

  ML30 : SUBROUTINE

  ! match LI30 betas

    VALUE, KQ29801,KQ29901,KQ30201,KQ30301
    USE, (L0b,DL1,L1,BC1,L2,BC2,L3)
    MATCH, BETA0=TWSS0
      VARY, KQ29801, STEP=1.E-5 !, LOWER=0   , UPPER=100
      VARY, KQ29901, STEP=1.E-5 !, LOWER=-100, UPPER=0
      VARY, KQ30201, STEP=1.E-5 !, LOWER=0   , UPPER=100
      VARY, KQ30301, STEP=1.E-5 !, LOWER=-100, UPPER=0
      CONSTR, Q30301[1], BETX=BET33, BETY=BET34
      CONSTR, Q30401[1], BETX=BET31, BETY=BET32
      CONSTR, Q30501[1], BETX=BET33, BETY=BET34
      CONSTR, Q30601[1], BETX=BET31, BETY=BET32
      CONSTR, Q30701[1], BETX=BET33, BETY=BET34
      CONSTR, Q30801[1], BETX=BET31, BETY=BET32
      !LMDIF
      !MIGRAD
    ENDMATCH
    VALUE, 1.694700E-01   ! =expected penalty function with fitting OFF
    VALUE, KQ29801,KQ29901,KQ30201,KQ30301
  ENDSUBROUTINE

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

  MVBEND : SUBROUTINE

  ! Match dispersion in vertical bend module

  VALUE, KQVB
  USE, VBEND
  MATCH, ENERGY=Ef
    VARY, KQVB, STEP=1.E-5, LOWER=-1.65, UPPER=1.65
    RMATRIX, #S/#E, RM(3,6)=0, RM(4,6)=0
    TMATRIX, #S/#E, TM(5,6,6)=0, WEIGHT(5,6,6)=0
    !LMDIF
    !MIGRAD
  ENDMATCH
  VALUE, 2.632497E-28   ! =expected penalty function with fitting OFF
  VALUE, KQVB
  ENDSUBROUTINE

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

  MDL2M : SUBROUTINE

  ! find periodic beta's through bend cells

  USE, DL23
  VALUE, MBETX, MALFX, MBETY, MALFY
  MATCH, BETA0=TWSSM
    VARY, MBETX, STEP=1.E-5, UPPER=100, LOWER=0.01
    VARY, MALFX, STEP=1.E-5, UPPER=20 , LOWER=-20
    VARY, MBETY, STEP=1.E-5, UPPER=100, LOWER=0.01
    VARY, MALFY, STEP=1.E-5, UPPER=20 , LOWER=-20
    CONSTR, #E, BETX=MBETX, BETY=MBETY, ALFX=-MALFX, ALFY=-MALFY
    CONSTR, BPMDL3, BETX<5
    !LMDIF
    !MIGRAD
  ENDMATCH
  VALUE, 2.248941E-09   ! =expected penalty function with DL23 fitting OFF
  VALUE, MBETX, MALFX, MBETY, MALFY
  ENDSUBROUTINE

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

  ML3DL2 : SUBROUTINE

  ! match L3 to LTU

  USE, (L0b,LCLS)
  VALUE, K50Q,KQ5,KQ6,KQA0,KQVM1,KQVM2,KQVM3,KQVM4
  MATCH, BETA0=TWSS0
    VARY, K50Q,    STEP=1.E-5, LOWER= 0.  , UPPER=+1.65
    VARY, KQ5,     STEP=1.E-5, LOWER=-1.65, UPPER= 0.
    VARY, KQ6,     STEP=1.E-5, LOWER= 0.  , UPPER=+1.65
    VARY, KQA0,    STEP=1.E-5, LOWER=-1.65, UPPER=+1.65
    VARY, KQVM1,   STEP=1.E-5, LOWER=-1.65, UPPER=+1.65
    VARY, KQVM2,   STEP=1.E-5, LOWER=-1.65, UPPER=+1.65
    VARY, KQVM3,   STEP=1.E-5, LOWER=-1.65, UPPER=+1.65
    VARY, KQVM4,   STEP=1.E-5, LOWER=-1.65, UPPER=+1.65
    CONSTR, Q5[1], BETY<700.
    CONSTR, Q6[1], BETX<700.
    CONSTR, QVM1[1], BETY<100.
    CONSTR, QVM2[1], BETX<100.
    CONSTR, QVM3[1], BETX<100.
    CONSTR, QVM4[1], BETY<100.
    CONSTR, MM1, BETX=MBETX, ALFX=MALFX, BETY=MBETY, ALFY=MALFY
    !LMDIF, TOL=1.E-20
    !MIGRAD, TOL=1.E-20
    !SIMPLEX
  ENDMATCH
  VALUE, 5.576250E-15   ! =expected penalty function with fitting OFF
  VALUE, K50Q,KQ5,KQ6,KQA0,KQVM1,KQVM2,KQVM3,KQVM4
  ENDSUBROUTINE

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

  MDL2B : SUBROUTINE

  ! match DL2 dogleg dispersion

  USE, DL23
  VALUE, KQDL
  MATCH, BETA0=TWSSM
    VARY, KQDL, STEP=1.E-5, UPPER=1.04, LOWER=0
    RMATRIX, #S/#E, RM(1,6)=0, RM(2,6)=0
    TMATRIX, #S/#E, TM(5,6,6)=0, WEIGHT(5,6,6)=0
    !LMDIF
    !MIGRAD
  ENDMATCH
  VALUE, 6.275200E-17   ! =expected penalty function with DL23 fitting OFF
  VALUE, KQDL
  ENDSUBROUTINE

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

  MDL2T : SUBROUTINE

  ! Match with triplet between bend-cells

  USE, DOGLG2B
  VALUE, KQT1, KQT2
  MATCH, BETA0=TWSSM
    VARY, KQT1  , STEP=1.E-5, UPPER=1.65, LOWER=-1.65
    VARY, KQT2  , STEP=1.E-5, UPPER=1.65, LOWER=-1.65
    CONSTR,SS3,BETX=MBETX,BETY=MBETY,ALFX=MALFX,ALFY=MALFY
    !LMDIF
    !MIGRAD
    !SIMPLEX
  ENDMATCH
  VALUE, 2.154821E-09   ! =expected penalty function with DOGLG2B fitting OFF
  VALUE, KQT1, KQT2
  ENDSUBROUTINE

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

  MECELL : SUBROUTINE

  ! Match FODO quad strength for 45-deg wire-to-wire phase adv.

  USE, ECELL
  VALUE, KQED2
  CELL
    VARY, KQED2, STEP=1.E-5, LOWER=0, UPPER=100
    CONSTR, #E, MUX=45/360
    !LMDIF
    !MIGRAD
  ENDMATCH
  VALUE, 6.356059E-19   ! =expected penalty function with fitting OFF
  VALUE, KQED2
  ENDSUBROUTINE

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

  MED2P : SUBROUTINE

  ! Find periodic beta's through LTU emit-diag section

  USE, EDSYS
  VALUE, BX1, AX1, BY1, AY1
  MATCH, ENERGY=Ef, BETX=BX1, ALFX=AX1, BETY=BY1, ALFY=AY1
    VARY, BX1, STEP=1.E-5, UPPER=100, LOWER=0.01
    VARY, AX1, STEP=1.E-5, UPPER=20 , LOWER=-20
    VARY, BY1, STEP=1.E-5, UPPER=100, LOWER=0.01
    VARY, AY1, STEP=1.E-5, UPPER=20 , LOWER=-20
    CONSTR, WS31, BETX=BX1, BETY=BY1
    CONSTR, WS32, BETX=BX1, BETY=BY1
    CONSTR, WS33, BETX=BX1, BETY=BY1
    CONSTR, WS34, BETX=BX1, BETY=BY1
    !LMDIF
    !MIGRAD
  ENDMATCH
  VALUE, 1.334540E-14   ! =expected penalty function with fitting OFF
  VALUE, BX1, AX1, BY1, AY1
  ENDSUBROUTINE

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

  MED2DL2 : SUBROUTINE

  ! Match between bend cells and emit-diag section

  USE, LTU
  VALUE, KQEM1, KQEM2, KQEM3, KQEM4
  MATCH, ENERGY=Ef, BETX=MBETX, ALFX=MALFX, BETY=MBETY, ALFY=MALFY
    VARY, KQEM1  , STEP=1.E-5, UPPER=0.85, LOWER=-0.85
    VARY, KQEM2  , STEP=1.E-5, UPPER=0.85, LOWER=-0.85
    VARY, KQEM3  , STEP=1.E-5, UPPER=0.85, LOWER=-0.85
    VARY, KQEM4  , STEP=1.E-5, UPPER=0.85, LOWER=-0.85
    CONSTR,WS31,BETX=BX1,BETY=BY1,ALFX=AX1,ALFY=AY1
    !!CONSTR,OTR33,BETX=12*DE3[L]/5,BETY=12*DE3[L]/5,ALFX=0,ALFY=0   ! for slice-emit on OTR33 with KQED2=0
    !LMDIF
    !MIGRAD
  ENDMATCH
  VALUE,  1.711345E-12  ! =expected penalty function with fitting OFF
  VALUE, KQEM1, KQEM2, KQEM3, KQEM4
  ENDSUBROUTINE

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

  MUNDP : SUBROUTINE

  ! find proper periodic betas in undulator

  USE, UND
  VALUE, UBETX, UALFX, UBETY, UALFY
  MATCH, BETA0=TWSSU
    VARY, UBETX, STEP=1.E-5, LOWER=0.1
    VARY, UALFX, STEP=1.E-5
    VARY, UBETY, STEP=1.E-5, LOWER=0.1
    VARY, UALFY, STEP=1.E-5
    CONSTR,#S/#E,PATTERN="MUQ",BETX<35.1,BETY<30.7   ! <beta>=30 m
!!    CONSTR,#S/#E,PATTERN="MUQ",BETX<15.5,BETY<15.0  ! <beta>=10 m
    !LMDIF
    !MIGRAD
  ENDMATCH
  VALUE, 8.911117E-01   ! =expected penalty function with fitting OFF
  VALUE, UBETX, UALFX, UBETY, UALFY
  ENDSUBROUTINE

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

  MUNDM : SUBROUTINE

  ! match betas at entrance to undulator

  USE, LTU
  VALUE, KQUM1, KQUM2, KQUM3, KQUM4
  MATCH, ENERGY=Ef, BETX=MBETX, ALFX=MALFX, BETY=MBETY, ALFY=MALFY
    VARY, KQUM1  , STEP=1.E-5, UPPER=0.85, LOWER=-0.85
    VARY, KQUM2  , STEP=1.E-5, UPPER=0.85, LOWER=-0.85
    VARY, KQUM3  , STEP=1.E-5, UPPER=0.85, LOWER=-0.85
    VARY, KQUM4  , STEP=1.E-5, UPPER=0.85, LOWER=-0.85
    CONSTR, #E, BETX=UBETX, ALFX=UALFX, BETY=UBETY, ALFY=UALFY
    !LMDIF
    !MIGRAD
  ENDMATCH
  VALUE, 2.549013E-12   ! =expected penalty function with fitting OFF
  VALUE, KQUM1, KQUM2, KQUM3, KQUM4
  ENDSUBROUTINE

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

  MDUMP : SUBROUTINE

  ! match e- dump

  USE, (UND,UNDEXIT,DUMPLINE)
  VALUE, KQUE1,KQUE2,KQDMP
  MATCH, BETA0=TWSSU
    VARY, KQUE1, STEP=1.E-5, UPPER=1.65/2, LOWER=-1.65/2
    VARY, KQUE2, STEP=1.E-5, UPPER=1.65/2, LOWER=-1.65/2
    VARY, KQDMP, STEP=1.E-5, UPPER=1.65/2, LOWER=-1.65/2
!!    VARY, Ddmpv, STEP=1.E-4, UPPER=5, LOWER=-5
    CONSTR, DSB0a/#E, BETY<150, BETX<350
    CONSTR, OTRDMP, DY>0.58, BETY<0.6, BETX>100
    CONSTR, #E, DY<0.45
    !LMDIF
    !MIGRAD
  ENDMATCH
  VALUE, 9.306033E-01   ! =expected penalty function with fitting OFF
  VALUE, KQUE1,KQUE2,KQDMP
  ENDSUBROUTINE

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

  MHXRSS : SUBROUTINE

  ! match e- dump

    BEAM, ENERGY=Ef
    USE, CHICANE
    MATCH, BETX=1, BETY=1, SURVEY
      VARY BB4, STEP=1.E-6, LOWER=0
      RMATRIX, M1/M2, RM(5,6)=12.E-6
     !LMDIF, TOL=1.E-20
     !MIGRAD, TOL=1.E-20
    ENDMATCH
    VALUE, BB4
  ENDSUBROUTINE

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

  L2K1in : SUBROUTINE

  ! initialize L2 quad K1s to FODO cell values

    SET, KQ21401,  KQL2
    SET, KQ21501, -KQL2
    SET, KQ21601,  KQL2
    SET, KQ21701, -KQL2
    SET, KQ21801,  KQL2
    SET, KQ21901, -KQL2

    SET, KQ22201,  KQL2
    SET, KQ22301, -KQL2
    SET, KQ22401,  KQL2
    SET, KQ22501, -KQL2
    SET, KQ22601,  KQL2
    SET, KQ22701, -KQL2
    SET, KQ22801,  KQL2
    SET, KQ22901, -KQL2

    SET, KQ23201,  KQL2
    SET, KQ23301, -KQL2
    SET, KQ23401,  KQL2
    SET, KQ23501, -KQL2
    SET, KQ23601,  KQL2
    SET, KQ23701, -KQL2
    SET, KQ23801,  KQL2
    SET, KQ23901, -KQL2

    SET, KQ24201,  KQL2
    SET, KQ24301, -KQL2
    SET, KQ24401,  KQL2
    SET, KQ24501, -KQL2
    SET, KQ24601,  KQL2
  ENDSUBROUTINE

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

  L2K1out : SUBROUTINE

  ! output L2 quad K1s

    VALUE, KQ21401
    VALUE, KQ21501
    VALUE, KQ21601
    VALUE, KQ21701
    VALUE, KQ21801
    VALUE, KQ21901

    VALUE, KQ22201
    VALUE, KQ22301
    VALUE, KQ22401
    VALUE, KQ22501
    VALUE, KQ22601
    VALUE, KQ22701
    VALUE, KQ22801
    VALUE, KQ22901

    VALUE, KQ23201
    VALUE, KQ23301
    VALUE, KQ23401
    VALUE, KQ23501
    VALUE, KQ23601
    VALUE, KQ23701
    VALUE, KQ23801
    VALUE, KQ23901

    VALUE, KQ24201
    VALUE, KQ24301
    VALUE, KQ24401
    VALUE, KQ24501
    VALUE, KQ24601
  ENDSUBROUTINE

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

  L3K1in : SUBROUTINE

  ! initialize L3 quad K1s to FODO cell values

    SET, KQ25201, KQFL3
    SET, KQ25301, KQDL3
    SET, KQ25401, KQFL3
    SET, KQ25501, KQDL3
    SET, KQ25601, KQFL3
    SET, KQ25701, KQDL3
    SET, KQ25801, KQFL3
    SET, KQ25901, KQDL3

    SET, KQ26201, KQFL3
    SET, KQ26301, KQDL3
    SET, KQ26401, KQFL3
    SET, KQ26501, KQDL3
    SET, KQ26601, KQFL3
    SET, KQ26701, KQDL3
    SET, KQ26801, KQFL3
    SET, KQ26901, KQDL3

    SET, KQ27201, KQFL3
    SET, KQ27301, KQDL3
    SET, KQ27401, KQFL3
    SET, KQ27501, KQDL3
    SET, KQ27601, KQFL3
    SET, KQ27701, KQDL3
    SET, KQ27801, KQFL3
    SET, KQ27901, KQDL3

    SET, KQ28201, KQFL3
    SET, KQ28301, KQDL3
    SET, KQ28401, KQFL3
    SET, KQ28501, KQDL3
    SET, KQ28601, KQFL3
    SET, KQ28701, KQDL3
    SET, KQ28801, KQFL3
    SET, KQ28901, KQDL3

    SET, KQ29201, KQFL3
    SET, KQ29301, KQDL3
    SET, KQ29401, KQFL3
    SET, KQ29501, KQDL3
    SET, KQ29601, KQFL3
    SET, KQ29701, KQDL3
    SET, KQ29801, KQFL3
    SET, KQ29901, KQDL3

    SET, KQ30201, KQFL3
    SET, KQ30301, KQDL3
    SET, KQ30401, KQFL3
    SET, KQ30501, KQDL3
    SET, KQ30601, KQFL3
    SET, KQ30701, KQDL3
    SET, KQ30801, KQFL3
  ENDSUBROUTINE

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

  L3K1out : SUBROUTINE

  ! output L3 quad K1s

    VALUE, KQ25201
    VALUE, KQ25301
    VALUE, KQ25401
    VALUE, KQ25501
    VALUE, KQ25601
    VALUE, KQ25701
    VALUE, KQ25801
    VALUE, KQ25901

    VALUE, KQ26201
    VALUE, KQ26301
    VALUE, KQ26401
    VALUE, KQ26501
    VALUE, KQ26601
    VALUE, KQ26701
    VALUE, KQ26801
    VALUE, KQ26901

    VALUE, KQ27201
    VALUE, KQ27301
    VALUE, KQ27401
    VALUE, KQ27501
    VALUE, KQ27601
    VALUE, KQ27701
    VALUE, KQ27801
    VALUE, KQ27901

    VALUE, KQ28201
    VALUE, KQ28301
    VALUE, KQ28401
    VALUE, KQ28501
    VALUE, KQ28601
    VALUE, KQ28701
    VALUE, KQ28801
    VALUE, KQ28901

    VALUE, KQ29201
    VALUE, KQ29301
    VALUE, KQ29401
    VALUE, KQ29501
    VALUE, KQ29601
    VALUE, KQ29701
    VALUE, KQ29801
    VALUE, KQ29901

    VALUE, KQ30201
    VALUE, KQ30301
    VALUE, KQ30401
    VALUE, KQ30501
    VALUE, KQ30601
    VALUE, KQ30701
    VALUE, KQ30801
  ENDSUBROUTINE

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

  OTHERDL2 : SUBROUTINE

  ! load DL2 optics with DX=DPX=0 between bending units

    SET, K50Q,     0.354439262413
    SET, KQ5,     -0.210581118288
    SET, KQ6,      0.223866943041
    SET, KQA0,    -0.275265663783E-2
    SET, KDL21,   -1.389852338149
    SET, KDL22,    1.564149176723
    SET, KDL23,    1.564012934631
    SET, KDL24,   -1.492327023478
    SET, KQM31,    1.051236645382
    SET, KQM32,   -1.637469425492
    SET, KQM33,   -1.366792669428
    SET, KQM34,    0.585600683467
  ENDSUBROUTINE

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

  NewBSY : SUBROUTINE

  ! load "New BSY" optics (smaller, symmetric betas in BSY)
  ! (ML3DL2 penalty function:  2.557803E-26)

    SET, KQ30201,  0.431061251508
    SET, KQ30301, -0.469798912489
    SET, KQ30401,  0.389442551401
    SET, KQ30501, -0.582099319705
    SET, KQ30601,  0.32792543523
    SET, KQ30701, -0.368249399517
    SET, KQ30801,  0.38340496772
    SET, K50Q,     0.19306444469
    SET, KQ50Q1,  -K50Q
    SET, KQ50Q2,   K50Q
    SET, KQ50Q3,  -K50Q
    SET, KQSM1,    0
    SET, KQ5,     -0.176167766822
    SET, KQ6,      0.245795750992
    SET, KQA0,    -0.238695691511
    SET, KQVM1,   -0.684210904739 !-0.685292956771
    SET, KQVM2,    0.604947394697 ! 0.605930850174
    SET, KQVM3,    0.769413042703 ! 0.769308749867
    SET, KQVM4,   -0.774662020425 !-0.774280712935
  ENDSUBROUTINE

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

  NewBSY2 : SUBROUTINE

  ! load updated "New BSY" optics (smaller, symmetric betas in BSY, with low
  ! beta x at Q6 optimized for quad scan at WSVM2)
  ! (ML3DL2 penalty function:  3.392496E-26)

    SET, KQ30201,  0.431061251508
    SET, KQ30301, -0.469798912489
    SET, KQ30401,  0.389442551401
    SET, KQ30501, -0.582099319705
    SET, KQ30601,  0.32792543523
    SET, KQ30701, -0.368249399517
    SET, KQ30801,  0.38340496772
    SET, K50Q,     1.902546E-01
    SET, KQ50Q1,  -K50Q
    SET, KQ50Q2,   K50Q
    SET, KQ50Q3,  -K50Q
    SET, KQSM1,    0
    SET, KQ5,     -1.770000E-01
    SET, KQ6,      2.281423E-01
    SET, KQA0,    -3.272445E-02
    SET, KQVM1,   -0.031869475721 !-3.187063E-02
    SET, KQVM2,    0.273189578618 ! 2.731903E-01
    SET, KQVM3,    0.81831036317  ! 8.183102E-01
    SET, KQVM4,   -0.849449243488 !-8.494490E-01
  ENDSUBROUTINE

! ==============================================================================
! COMMANDs
! ------------------------------------------------------------------------------

  SETPLOT, XSIZE=25.4, YSIZE=20.32
  SETPLOT, LWIDTH=5, LSCALE=1.5, SSCALE=1.5, RSCALE=1.5
  OPTION, ECHO

 !NewBSY  !250 m symmetric betas in BSY
  NewBSY2 !250 m symmetric betas in BSY, optimized for quad-scans at WSVM2

! ------------------------------------------------------------------------------
! output files for RDB generation
! ------------------------------------------------------------------------------

 !CALL, FILENAME="misc/makeSymbols.mad8"

! ------------------------------------------------------------------------------
! Online Modelling Support.
! ** The lines below are selectively commented in by LCLS online model. **
! ** Please do not edit. **
! ------------------------------------------------------------------------------
! CALL, FILENAME="patch.mad8"
! ------------------------------------------------------------------------------


! ------------------------------------------------------------------------------
! matching
! ------------------------------------------------------------------------------

  BET11 := 10.090395936353
  BET12 := 2.470673595371
  BET21 := 43.876719659503
  BET22 := 16.019619746515
 !BET31 := 53.481287866029
 !BET32 := 35.468087644847
 !BET33 := 29.55797372867
 !BET34 := 63.601589300188
  BET31 := 61.868125327071
  BET32 := 36.40742728964
  BET33 := 36.353377790534
  BET34 := 61.956709274457
 !BET31 := 69.818359882868  ! for WS28 45 deg/wire
 !BET32 := 37.0062095289
 !BET33 := 42.5680425597
 !BET34 := 60.952049693321

  COMMENT
    ASSIGN, PRINT="LCLS.fit"

    COMMENT
      SET, MU_L1, 75/360
      ML1c
      USE, L1c
      SAVEBETA, TWSSL1, QFL1[1]
      TWISS
      SET, BET11, TWSSL1[BETX]
      SET, BET12, TWSSL1[BETY]
      VALUE, BET11,BET12
    ENDCOMMENT

    COMMENT
      SET, MU_L2, 55.500/360
      ML2c
      USE, L2c
      SAVEBETA, TWSSL2, QFL2[1]
      TWISS
      SET, BET21, TWSSL2[BETX]
      SET, BET22, TWSSL2[BETY]
      VALUE, BET21,BET22
    ENDCOMMENT

    COMMENT
     !SET, MUX_L3, 36.175/360  !July 13, 2005 - set for n*360 deg BX24A to BX31A (TCAV3 -> 25-2d)
      SET, MUX_L3, 30.175/360  !July 13, 2008 - set for best WS28 45-deg mux phase advances
      SET, MUY_L3, 30.130/360  !July 13, 2005 - set for 3*90 deg TCAV3[1] to OTR30 (TCAV3 -> 25-2d)
      ML3c
      USE, L3c
      SAVEBETA, TWSSFL3, QFL3[1]
      SAVEBETA, TWSSDL3, QDL3[1]
      TWISS
      SET, BET31, TWSSFL3[BETX]
      SET, BET32, TWSSFL3[BETY]
      SET, BET33, TWSSDL3[BETX]
      SET, BET34, TWSSDL3[BETY]
      VALUE, BET31,BET32,BET33,BET34
    ENDCOMMENT

    MTWSSC
    MGSPEC
    MBChETA
    MBSYS
    MED0
    MED2L1
    MSPEC
    MBC1R56
    MBC1e
!**!L2K1in  !use ONLY when you're changing L2 phase advance per cell
    MBC1L2
    ML22
    ML23
    ML24
   !L2K1out
    MBC2R56
    MBC2i
!**!L3K1in  !use ONLY when you're changing L3 phase advance per cell
    MBC2L3
    ML26
    ML27
    ML28
    ML29
    ML30
   !L3K1out
    MVBEND
    MDL2M
    ML3DL2
    MDL2B
    MDL2T
    MECELL
    MED2P
    MED2DL2
    MUNDP
    MUNDM
    MDUMP
    MHXRSS
  ENDCOMMENT

! ------------------------------------------------------------------------------
! Twiss plots, etc. (Full Machine)
! ------------------------------------------------------------------------------

  ASSIGN, PRINT="LCLS07JAN15.print"

 !COMMENT
    BEAM, ENERGY=E00
    USE, (GUNL0a,L0b,LCLS)
    TWISS, BETA0=TWSSC, SAVE, TAPE="LCLS_twiss.tape", RTAPE="LCLS_rmat.tape"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=DL1beg/#E, TITLE="Cathode to Main Dump"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
      STYLE=100, SPLINE=.F., FILE="LCLS", &
      RANGE=CATHODE/DL1beg, TITLE="L0-to-DL1 dog-leg"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=LHbeg/LHend, TITLE="Laser-Heater"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=L0bBEG/DL1end, TITLE="L0-to-DL1 dog-leg"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=L1beg/L1end, TITLE="L1-linac"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=BC1mrk/BC1fin, TITLE="BC1-chicane"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=L2beg/L2end, TITLE="L2-linac"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=BPM24301/BPM25501, TITLE="BC2-chicane"
     !RANGE=BC2mrk/BC2fin, TITLE="BC2-chicane"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=L3beg/L3end, TITLE="L3-linac"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=BSYbeg/BSYend, TITLE="BSY"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=MM1/MM2, TITLE="DL2-dogleg"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=MM2/MM3, TITLE="Undulator emittance diagnostics"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=BSYend/#E, TITLE="muon-plug-to-DUMP"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=BSYend/MM1, TITLE="Vertical Bend System"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS=BETX,BETY, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=UNDSTART/UNDTERM, TITLE="undulator"
    PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX,DY, &
      STYLE=100, SPLINE=.T., FILE="LCLS", &
      RANGE=UEbeg/DMPend, TITLE="undulator exit and e- dump"
 !ENDCOMMENT

  COMMENT
    BEAM, ENERGY=E00
    USE, (GUNL0a,L0b,LCLS)
    ENVELOPE, SIGMA0=SIGC, TAPE="LCLS_envelope.tape"
  ENDCOMMENT

  COMMENT
    BEAM, ENERGY=E00
    USE, (GUNL0a,L0b,LCLS)
    SAVELINE, NAME="LSFEL", FILENAME="LCLS.saveline"
  ENDCOMMENT

! ==============================================================================
! standard output files
! ------------------------------------------------------------------------------
! linac coordinates
! ------------------------------------------------------------------------------

! Full Machine: cathode to dump
! =============================
  ASSIGN, PRINT="LCLS.print"
  BEAM, ENERGY=E00
  USE, (GUNL0a,L0b,LCLS)
  PRINT, FULL
  SURVEY, THETA0=ADL1, X0=Xi, Z0=Zi, TAPE="LCLS_survey.tape"
  TWISS, BETA0=TWSSC

! Gun Spectrometer: cathode to 6 MeV spectrometer dump
! ====================================================
  ASSIGN, PRINT="GSPEC.print"
  BEAM, ENERGY=E00
  USE, (GUNBXG,GSPEC)
  PRINT, FULL
  SURVEY, THETA0=ADL1, X0=Xi, Z0=Zi, TAPE="GSPEC_survey.tape"
  TWISS, BETA0=TWSSC, SAVE, &
    TAPE="GSPEC_twiss.tape", RTAPE="GSPEC_rmat.tape"
  PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
    STYLE=100, SPLINE=.T., FILE="GSPEC", &
    RANGE=#S/#E, TITLE="Cathode through 6-MeV Gun Spectrometer"
 !PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
 !  STYLE=100, SPLINE=.T., FILE="GSPEC", &
 !  RANGE=GSPECBEG/#E, TITLE="Gun spectrometer"
 !SAVELINE, NAME="LSGUN", FILENAME="GSPEC.saveline"

! 135 MeV Spectrometer: cathode to 135 MeV spectrometer dump
! ==========================================================
  ASSIGN, PRINT="SPEC.print"
  BEAM, ENERGY=E00
  USE, (GUNL0a,L0b,DL1A,SPECBL)
  PRINT, FULL
  SURVEY, THETA0=ADL1, X0=Xi, Z0=Zi, TAPE="SPEC_survey.tape"
  TWISS, BETA0=TWSSC, SAVE, &
    TAPE="SPEC_twiss.tape", RTAPE="SPEC_rmat.tape"
  PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
    STYLE=100, SPLINE=.T., FILE="SPEC", &
    RANGE=DL1beg/#E, TITLE="Cathode through 135-MeV Spectrometer"
  PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
    STYLE=100, SPLINE=.T., FILE="SPEC", &
    RANGE=SPECBEG/#E, TITLE="BXS Entrance to 135-MeV Spectrometer"
 !SAVELINE, NAME="LSINJ", FILENAME="SPEC.saveline"

! ------------------------------------------------------------------------------
! special BSY survey coordinates including Y-pitch-down angle at Station-100
! (NOTE: map onto alignment reference at QSM1 center)
! ------------------------------------------------------------------------------

! get Twiss at beginning of BSY

  ASSIGN, PRINT="LCLSI.print"
  BEAM, ENERGY=E00
  USE, (GUNL0a,L0b,LCLS)
  SAVEBETA, TBSY, BSYBEG
  TWISS, BETA0=TWSSC
  SET, TBSY[DX], 0
  SET, TBSY[DPX], 0
  SET, TBSY[DY], 0
  SET, TBSY[DPY], 0

! BSY to dump
! ===========
  ASSIGN, PRINT="BSY-LCLS.print"
  BEAM, ENERGY=Ef
  USE, (BSY,B12WAL,VBSYS,LTU,UND,UNDEXIT,DUMPLINE)
  PRINT, FULL
  SURVEY, X0=Xf, Y0=Yf, Z0=Zf, THETA0=THETAf, PHI0=PHIf, PSI0=PSIf, &
    TAPE="BSY-LCLS_survey.tape"
 !TWISS, BETA0=TBSY

! BSY to 52-LINE
! ==============
  ASSIGN, PRINT="BSY-52LINE.print"
  BEAM, ENERGY=Ef
  USE, (BSY,B52LIN)
  PRINT, FULL
  SURVEY, X0=Xf, Y0=Yf, Z0=Zf, THETA0=THETAf, PHI0=PHIf, PSI0=PSIf, &
    TAPE="BSY-52LINE_survey.tape"
  TWISS, BETA0=TBSY, SAVE !, TAPE="BSY-52LINE_twiss.tape"
  PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
    STYLE=100, SPLINE=.T., FILE="BSY-52LINE", &
    RANGE=#S/#E, TITLE="50B1 to SL2"

! BSY to safety dump
! ==================
  ASSIGN, PRINT="BSY-SFTDMP.print"
  BEAM, ENERGY=Ef
  USE, (BSY,B12WAL,VBSYS,LTU,UND,UNDEXIT,PERMDUMP)
  PRINT, FULL
  SURVEY, X0=Xf, Y0=Yf, Z0=Zf, THETA0=THETAf, PHI0=PHIf, PSI0=PSIf, &
    TAPE="BSY-SFTDMP_survey.tape"
  TWISS, BETA0=TBSY, SAVE !, TAPE="BSY-SFTDMP_twiss.tape"
  PLOT, TABLE=TWISS, HAXIS=S, VAXIS1=BETX,BETY, VAXIS2=DX, &
    STYLE=100, SPLINE=.T., FILE="BSY-SFTDMP", &
    RANGE=SFTBEG/#E, TITLE="Turned-off BYD1 to Safety Dump"

! ==============================================================================
! special cross-checks
! ------------------------------------------------------------------------------

  COMMENT

  ! check horizontal phase advance between last bends of BC1 and BC2

    USE, (L0b,LCLS)
    SAVEBETA, TBC1, BX14A
    SAVEBETA, TBC2, BX24A
    TWISS, BETA0=TWSS0

  ! horizontal phase advance between BC1/BC2 CSR kicks (180 deg desired)

    VALUE, 360*(TBC2[MUX]-TBC1[MUX]-3)
  ENDCOMMENT

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

  COMMENT

  ! check phase advance between wire-scanners WS21 through WS24

    USE, (L0b,LCLS)
    SAVEBETA, TWS21, DWS21
    SAVEBETA, TWS22, DWS22
    SAVEBETA, TWS23, DWS23
    SAVEBETA, TWS24, WS24
    TWISS, BETA0=TWSS0

    VALUE, 360*(TWS22[MUX]-TWS21[MUX])
    VALUE, 360*(TWS23[MUX]-TWS22[MUX])
    VALUE, 360*(TWS24[MUX]-TWS23[MUX])
    VALUE, 360*(TWS22[MUY]-TWS21[MUY])
    VALUE, 360*(TWS23[MUY]-TWS22[MUY])
    VALUE, 360*(TWS24[MUY]-TWS23[MUY])
  ENDCOMMENT

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

  COMMENT

  ! check horizontal phase advance between last BC2 bend and center of first
  ! DL2 bend system and vertical phase advance between transverse deflecting
  ! cavity and OTR30

    USE, (L0b,LCLS)
    SAVEBETA, TBC2,  BX24A
    SAVEBETA, TTCAV, TCAV3[1]
    SAVEBETA, TDL2,  BX31A[1]
    SAVEBETA, TOTR30, OTR30
    TWISS, BETA0=TWSS0

  ! horizontal phase advance between last BC2 bend and first bend of DL2
  ! system (want 2N*pi, N=0,1,2,...)

    VALUE, 360*(TDL2[MUX]-TBC2[MUX]-3)

  ! vertical phase advance from transverse deflecting cavity to OTR30 (want
  ! (2N+1)*(pi/2), N=0,1,2,...)

    VALUE, 360*(TOTR30[MUY]-TTCAV[MUY]-3)

  ! twiss at OTR30, including horizontal eta/beta ratio

    VALUE, TOTR30[BETY],TOTR30[BETX],TOTR30[DX],TOTR30[DX]/TOTR30[BETX]

  ENDCOMMENT

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

  STOP
