
! *** OPTICS=AD_ACCEL_HE-28APR21 ***

! LCLS2sc injector diagnostic beamline

! ==============================================================================
! Modification History
! ------------------------------------------------------------------------------
! 02-APR-2021, Y. Nosochkov
!  * change spectrometer bending angle to 35 deg (Tor)
!  * adjust some distances
!  * add vertical bend before dump to remove the angle from spectrometer
!  * change the type of both bends to BXS (Tor)
!  * change from slow to fast wires (Tor)
!  * update locations of BYDGID bend and dump (A. Rosenstrom)
! 22-MAR-2021, Y. Nosochkov
!  * add four deferred RFBPMs -- one RFBPM 0.1 m upstream of each wire (Tor)
!  * change BYDGI type to 12D13.5 (SLC FF magnet -- AD 236-036-00-R0) (C. Adolphsen)
! 15-MAR-2021, Y. Nosochkov
!  * remove QDGI09, QDGI10
!  * increase length of 90 deg FODO cell for betax = 1.76 m at wires
!  * use class-6 corectors
! 13-MAR-2021, Y. Nosochkov
!  * add correctors at QDGI07
! 08-MAR-2021, Y. Nosochkov
!  * initial design
!  * 90 deg FODO with 4 wires for emittance measurement
!  * distance between 90 deg FODO quads is set to realistically
!    accommodate wires (per R. Coy)
! ------------------------------------------------------------------------------

! ==============================================================================
! SBEN
! ------------------------------------------------------------------------------

! spectrometer vertical bend

  ABYDGI := 35*RADDEG
  LBYDGI := 0.5435     !path length as measured at 35 deg
  GBYDGI := 0.034      !full gap
  EBYDGI := 7.2*RADDEG !as measured
  FBYDGI := 0.391      !as measured
  ZBYDGI := LBYDGI*SIN(ABYDGI/2)/(ABYDGI/2) !Z-length

  BYDGISa : SBEN, TYPE="BXS", HGAP=GBYDGI/2, L=LBYDGI/2, &
                  ANGLE=ABYDGI/2, E1=EBYDGI, FINT=FBYDGI, FINTX=0, &
                  TILT=90*RADDEG
  BYDGISb : SBEN, TYPE="BXS", HGAP=GBYDGI/2, L=LBYDGI/2, &
                  ANGLE=ABYDGI/2, E2=EBYDGI, FINT=0, FINTX=FBYDGI, &
                  TILT=90*RADDEG

! vertical bend to remove the angle from spectrometer

  BYDGIDa : SBEN, TYPE="BXS", HGAP=GBYDGI/2, L=LBYDGI/2, &
                  ANGLE=-ABYDGI/2, E1=-EBYDGI, FINT=FBYDGI, FINTX=0, &
                  TILT=90*RADDEG
  BYDGIDb : SBEN, TYPE="BXS", HGAP=GBYDGI/2, L=LBYDGI/2, &
                  ANGLE=-ABYDGI/2, E2=-EBYDGI, FINT=0, FINTX=FBYDGI, &
                  TILT=90*RADDEG

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

  BYDGIS  : SBEN, TYPE="BXS", HGAP=GBYDGI/2, L=LBYDGI, ANGLE=ABYDGI, &
                  E1=EBYDGI, FINT=FBYDGI, E2=EBYDGI, FINTX=FBYDGI, &
                  TILT=90*RADDEG
  BYDGID  : SBEN, TYPE="BXS", HGAP=GBYDGI/2, L=LBYDGI, ANGLE=-ABYDGI, &
                  E1=-EBYDGI, FINT=FBYDGI, E2=-EBYDGI, FINTX=FBYDGI, &
                  TILT=90*RADDEG

! ==============================================================================
! QUAD
! ------------------------------------------------------------------------------

  KQDGI01 :=  21.743929620173
  KQDGI02 := -23.24101422568
  KQDGI03 :=  25.952426088622
  KQDGI04 := -25.798039654506
  KQDGI05 :=  11.62599785155
  KQDGI06 := -KQDGI05
  KQDGI07 :=  KQDGI05
  KQDGI08 := -11.15034467456

  COMMENT !for mux=1.75 from MTCXDGI to OTRDGI1
    KQDGI01 :=  20.936799065219
    KQDGI02 := -23.405324163275
    KQDGI03 :=  27.616809154239
    KQDGI04 := -26.000130823947
    KQDGI05 :=  13.856890734561
    KQDGI08 := -12.613656066984
  ENDCOMMENT

  QDGI01 : QUAD, TYPE="1.26Q3.5", L=LQx/2, APER=rQx, K1=KQDGI01
  QDGI02 : QUAD, TYPE="1.26Q3.5", L=LQx/2, APER=rQx, K1=KQDGI02
  QDGI03 : QUAD, TYPE="1.26Q3.5", L=LQx/2, APER=rQx, K1=KQDGI03
  QDGI04 : QUAD, TYPE="1.26Q3.5", L=LQx/2, APER=rQx, K1=KQDGI04
  QDGI05 : QUAD, TYPE="1.26Q3.5", L=LQx/2, APER=rQx, K1=KQDGI05
  QDGI06 : QUAD, TYPE="1.26Q3.5", L=LQx/2, APER=rQx, K1=KQDGI06
  QDGI07 : QUAD, TYPE="1.26Q3.5", L=LQx/2, APER=rQx, K1=KQDGI07
  QDGI08 : QUAD, TYPE="1.26Q3.5", L=LQx/2, APER=rQx, K1=KQDGI08

! ==============================================================================
! DRIF
! ------------------------------------------------------------------------------

  DBXDLI1a : DRIF, L=ZBDLI/2                        !parameters defined in DLI.xsif
  DBXDLI1b : DRIF, L=ZBDLI*COS(ABDLI/2)-DBXDLI1a[L] !parameters defined in DLI.xsif

  DBYDGISa : DRIF, L=ZBYDGI/2
  DBYDGISb : DRIF, L=ZBYDGI*COS(ABYDGI/2)-DBYDGISa[L]

  DBYDGIDb : DRIF, L=ZBYDGI/2
  DBYDGIDa : DRIF, L=ZBYDGI*COS(ABYDGI/2)-DBYDGIDb[L]

  DDGI00 : DRIF, L=1.4 !1.428
  DDGI01 : DRIF, L=0.5 !0.6835
  DDGI02 : DRIF, L=0.5
  DDGI03 : DRIF, L=0.5
  DDGI04 : DRIF, L=1.055
  DDGI05 : DRIF, L=DDGI04[L]
  DDGI06 : DRIF, L=DDGI04[L]
  DDGI07 : DRIF, L=DDGI04[L]
  DDGI08 : DRIF, L=0.6
  DDGI09 : DRIF, L=1.87976922505 !0.935
  DDGI10 : DRIF, L=2.332455 !2.85 !0.3
  DDGI11 : DRIF, L=1.53981681 !0.765907
  DDGI12 : DRIF, L=2.332455 !2.85 !0.3
  DDUMPI : DRIF, L=0.4309

  DDGI01a : DRIF, L=0.2
  DDGI01b : DRIF, L=DDGI01[L]-DDGI01a[L]
  DDGI02a : DRIF, L=0.2
  DDGI02b : DRIF, L=DDGI02[L]-DDGI02a[L]
  DDGI03a : DRIF, L=0.2
  DDGI03b : DRIF, L=DDGI03[L]-DDGI03a[L]
  DDGI04a : DRIF, L=0.2
  DDGI04c : DRIF, L=0.1
  DDGI04b : DRIF, L=DDGI04[L]/2-DDGI04a[L]-DDGI04c[L]
  DDGI04d : DRIF, L=DDGI04[L]-DDGI04a[L]-DDGI04b[L]-DDGI04c[L]
  DDGI05a : DRIF, L=0.2
  DDGI05c : DRIF, L=0.1
  DDGI05b : DRIF, L=DDGI05[L]/2-DDGI05a[L]-DDGI05c[L]
  DDGI05d : DRIF, L=DDGI05[L]-DDGI05a[L]-DDGI05b[L]-DDGI05c[L]
  DDGI06a : DRIF, L=0.2
  DDGI06c : DRIF, L=0.1
  DDGI06b : DRIF, L=DDGI06[L]/2-DDGI06a[L]-DDGI06c[L]
  DDGI06d : DRIF, L=DDGI06[L]-DDGI06a[L]-DDGI06b[L]-DDGI06c[L]
  DDGI07a : DRIF, L=0.2
  DDGI07c : DRIF, L=0.1
  DDGI07b : DRIF, L=DDGI07[L]/2-DDGI07a[L]-DDGI07c[L]
  DDGI07e : DRIF, L=0.2
  DDGI07d : DRIF, L=DDGI07[L]-DDGI07a[L]-DDGI07b[L]-DDGI07c[L]-DDGI07e[L]
  DDGI08a : DRIF, L=0.3
  DDGI08b : DRIF, L=DDGI08[L]-DDGI08a[L]
  DDGI09a : DRIF, L=0.395
  DDGI09b : DRIF, L=0.24
  DDGI09c : DRIF, L=DDGI09[L]-(DDGI09a[L]+DDGI09b[L])

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

  BPMDGI01 : MONI, TYPE="Stripline-1"
  BPMDGI02 : MONI, TYPE="Stripline-1"
  BPMDGI03 : MONI, TYPE="Stripline-1"
  BPMDGI04 : MONI, TYPE="Stripline-1"
  BPMDGI05 : MONI, TYPE="Stripline-1"
  BPMDGI06 : MONI, TYPE="Stripline-1"
  BPMDGI07 : MONI, TYPE="Stripline-1"
  BPMDGI08 : MONI, TYPE="Stripline-1"

  RFBDGI01 : MONI, TYPE="@2,CavityS-1"
  BPMDGI09 : MONI, TYPE="Stripline-11" !RFBDGI02 : MONI, TYPE="@2,CavityL-1"

  RFBDGIW1 : MONI, TYPE="@2,CavityS-1"
  RFBDGIW2 : MONI, TYPE="@2,CavityS-1"
  RFBDGIW3 : MONI, TYPE="@2,CavityS-1"
  RFBDGIW4 : MONI, TYPE="@2,CavityS-1"

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

  XCDGI01 : HKIC, TYPE="class-6"
  XCDGI03 : HKIC, TYPE="class-6"
  XCDGI05 : HKIC, TYPE="class-6"
  XCDGI07 : HKIC, TYPE="class-6"

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

  YCDGI02 : VKIC, TYPE="class-6"
  YCDGI04 : VKIC, TYPE="class-6"
  YCDGI06 : VKIC, TYPE="class-6"
  YCDGI08 : VKIC, TYPE="class-6"

! ==============================================================================
! diagnostics, etc.
! ------------------------------------------------------------------------------

! profile monitors

  OTRDGI1 : PROF, TYPE="OTR INJ"

! wire scanners

  WSDGI1 : WIRE, TYPE="fast"
  WSDGI2 : WIRE, TYPE="fast"
  WSDGI3 : WIRE, TYPE="fast"
  WSDGI4 : WIRE, TYPE="fast"

! Faraday cup (dump)

  FCDGIDUa : IMON, TYPE="Faraday cup"
  FCDGIDUb : IMON, TYPE="Faraday cup"

! ==============================================================================
! BEAMLINE
! ------------------------------------------------------------------------------

  FODODGI : LINE=(QDGI05,DDGI05,QDGI06,QDGI06,DDGI06,QDGI07) !90 deg FODO
  
  BYDGIS_full  : LINE=(BYDGISa,BYDGISb)
  BYDGID_full  : LINE=(BYDGIDa,BYDGIDb)

  QDGI01_full : LINE=(QDGI01,BPMDGI01,QDGI01)
  QDGI02_full : LINE=(QDGI02,BPMDGI02,QDGI02)
  QDGI03_full : LINE=(QDGI03,BPMDGI03,QDGI03)
  QDGI04_full : LINE=(QDGI04,BPMDGI04,QDGI04)
  QDGI05_full : LINE=(QDGI05,BPMDGI05,QDGI05)
  QDGI06_full : LINE=(QDGI06,BPMDGI06,QDGI06)
  QDGI07_full : LINE=(QDGI07,BPMDGI07,QDGI07)
  QDGI08_full : LINE=(QDGI08,BPMDGI08,QDGI08)

  COMMENT !simplified
    DIAGI_1 : LINE=(BEGDIAGI_1,DBXDLI1a,DBXDLI1b,DDGI00,&
      QDGI01,QDGI01,DDGI01,&
      QDGI02,QDGI02,DDGI02,&
      QDGI03,QDGI03,DDGI03,&
      QDGI04,QDGI04,DDGI04,&
      QDGI05,QDGI05,DDGI05,&
      QDGI06,QDGI06,DDGI06,&
      QDGI07,QDGI07,DDGI07,&
      QDGI08,QDGI08,DDGI08,&
      ENDDIAGI_1)
    DIAGI_2 : LINE=(BEGDIAGI_2,&
      BYDGISa,BYDGISb,DDGI09,&
      BYDGIDa,BYDGIDb,DDGI10,DDUMPI,&
      ENDDIAGI_2)
    DIAGI_3 : LINE=(BEGDIAGI_3,&
      DBYDGISa,DBYDGISb,DDGI11,&
      DBYDGIDa,DBYDGIDb,DDGI12,DDUMPI,&
      ENDDIAGI_3)
  ENDCOMMENT

 !COMMENT !complete
    DIAGI_1 : LINE=(BEGDIAGI_1,DBXDLI1a,DBXDLI1b,DDGI00,&
      QDGI01_full,DDGI01a,XCDGI01,DDGI01b,&
      QDGI02_full,DDGI02a,YCDGI02,DDGI02b,&
      QDGI03_full,DDGI03a,XCDGI03,DDGI03b,&
      QDGI04_full,DDGI04a,YCDGI04,DDGI04b,RFBDGIW1,DDGI04c,WSDGI1,DDGI04d,&
      QDGI05_full,DDGI05a,XCDGI05,DDGI05b,RFBDGIW2,DDGI05c,WSDGI2,DDGI05d,&
      QDGI06_full,DDGI06a,YCDGI06,DDGI06b,RFBDGIW3,DDGI06c,WSDGI3,DDGI06d,&
      QDGI07_full,DDGI07a,XCDGI07,DDGI07b,RFBDGIW4,DDGI07c,WSDGI4,DDGI07d,&
        YCDGI08,DDGI07e,&
      QDGI08_full,DDGI08a,RFBDGI01,DDGI08b,&
      ENDDIAGI_1)
    DIAGI_2 : LINE=(BEGDIAGI_2,&
      BYDGIS_full,DDGI09a,BPMDGI09,DDGI09b,OTRDGI1,DDGI09c,&
      BYDGID_full,DDGI10,FCDGIDUb,DDUMPI,&
      ENDDIAGI_2)
    DIAGI_3 : LINE=(BEGDIAGI_3,&
      DBYDGISa,DBYDGISb,DDGI11,&
      DBYDGIDa,DBYDGIDb,DDGI12,FCDGIDUa,DDUMPI,&
      ENDDIAGI_3)
 !ENDCOMMENT

  DIAGIS : LINE=(DIAGI_1,DIAGI_2) !to spectrometer
  DIAGID : LINE=(DIAGI_1,DIAGI_3) !to straight-ahead dump
  
! ------------------------------------------------------------------------------

  RETURN
