
! *** OPTICS=LCLS2sc31MAR14 ***

! LCLS2sc injector: gun to start of L1 linac

! ==============================================================================
! Modification History
! ------------------------------------------------------------------------------
! 19-MAR-2014, M. Woodley
!  * matching around extraction to DIAG0 changed
!  * element names changed to conform to nomenclature PRD
! ------------------------------------------------------------------------------
! 13-JAN-2014, M. Woodley
!  * parameters of buncher and solenoids per C. Papadopoulos
!    (Parameters_GUN2013_10_08v3.docx) ...
! ------------------------------------------------------------------------------
! 07-JAN-2014, M. Woodley
!  * devices between CATHODE and CM01 per H. Alvarez
! ------------------------------------------------------------------------------

! ==============================================================================
! LCAV
! ------------------------------------------------------------------------------

! buncher cavity

  Lbun := 0.12 !m
  Gbun := 3.67 !MV/m
  Pbun := -84.5 !deg

  BUN01 : LCAV, FREQ=1300, L=Lbun, DELTAE=Gbun*Lbun, PHI0=Pbun/360

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

! laser heater chicane
! - approximate on-axis effective length per R. Carr (01-AUG-05 PE)
! - use series approximation for sinc(x)=sin(x)/x to allow BCXH=0

! Brhoh : beam rigidity at chicane (kG-m)
! GBh   : 5D3.9 gap height (m)
! ZBh   : 5D3.9 "Z" length (m)
! BBh   : heater-chicane bend field for R56=0.005 (kG)
! ABh   : chicane bend angle (rad)
! LBh   : chicane bend path length (m)
! ABhS  : "short" half chicane bend angle (rad)
! LBhS  : "short" half chicane bend path length (m)
! ABhL  : "long" half chicane bend angle (rad)
! LBhL  : "long" half chicane bend path length (m)

  Brhoh    := Cb*Ei
  GBh      := 0.03
  ZBh      := 0.1244
  BBh      := -2.681792891116
  ARGh     := ZBh*BBh/Brhoh
  ABh      := ASIN(ARGh)
  ABh_2    := ABh*ABh
  ABh_4    := ABh_2*ABh_2
  ABh_6    := ABh_4*ABh_2
  SINCABh  := 1-ABh_2/6+ABh_4/120-ABh_6/5040 !~sinc(ABh)=sin(ABh)/ABh
  LBh      := ZBh/SINCABh
  ABhS     := ASIN(ARGh/2)
  ABhS_2   := ABhS*ABhS
  ABhS_4   := ABhS_2*ABhS_2
  ABhS_6   := ABhS_4*ABhS_2
  SINCABhS := 1-ABhS_2/6+ABhS_4/120-ABhS_6/5040 !~sinc(ABhS)=sin(ABhS)/ABhS
  LBhS     := ZBh/(2*SINCABhS)
  ABhL     := ABh-ABhS
  LBhL     := LBh-LBhS

  BCXH1A : SBEN, TYPE="5D3.9", L=LBhS, ANGLE=+ABhS, HGAP=GBh/2, &
                 E1=0, FINT=0.4, FINTX=0
  BCXH1B : SBEN, TYPE="5D3.9", L=LBhL, ANGLE=+ABhL, HGAP=GBh/2, &
                 FINT=0, E2=+ABh, FINTX=0.4
  BCXH2A : SBEN, TYPE="5D3.9", L=LBhL, ANGLE=-ABhL, HGAP=GBh/2, &
                 E1=-ABh, FINT=0.4, FINTX=0
  BCXH2B : SBEN, TYPE="5D3.9", L=LBhS, ANGLE=-ABhS, HGAP=GBh/2, &
                 FINT=0, E2=0, FINTX=0.4
  BCXH3A : SBEN, TYPE="5D3.9", L=LBhS, ANGLE=-ABhS, HGAP=GBh/2, &
                 E1=0, FINT=0.4, FINTX=0
  BCXH3B : SBEN, TYPE="5D3.9", L=LBhL, ANGLE=-ABhL, HGAP=GBh/2, &
                 FINT=0, E2=-ABh, FINTX=0.4
  BCXH4A : SBEN, TYPE="5D3.9", L=LBhL, ANGLE=+ABhL, HGAP=GBh/2, &
                 E1=+ABh, FINT=0.4, FINTX=0
  BCXH4B : SBEN, TYPE="5D3.9", L=LBhS, ANGLE=+ABhS, HGAP=GBh/2, &
                 FINT=0, E2=0, FINTX=0.4

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

! L0 to laser heater

!                100 pC              20 pC             300 pC
!           ----------------   ----------------   ----------------
  KQ0H01 := -10.321061374813 ! -10.922798751344 !  -8.341195854187 !
  KQ0H02 :=   9.44272500322  !  10.545873315073 !   8.527040641117 !
  KQ0H03 :=   1.259896057787 !   0.0            !   1.27169198247  !
  KQ0H04 :=  -2.811471277995 !  -8.074978129053 !  -4.1824021047   !
  KQ0H05 :=  -6.470541247919 !  -4.313292202064 !  -8.915329422547 !
  KQ0H06 :=   4.536429949929 !   5.184837745085 !   5.497779512615 !

  Q0H01 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQ0H01
  Q0H02 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQ0H02
  Q0H03 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQ0H03
  Q0H04 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQ0H04
  Q0H05 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQ0H05
  Q0H06 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQ0H06

! laser heater to diagnostic line

  KQHD01 :=  7.762819923872
  KQHD02 := -6.167252164857
  KQHD03 :=  9.325709630625
  KQHD04 := -6.560162308256

  QHD01 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQHD01
  QHD02 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQHD02
  QHD03 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQHD03
  QHD04 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQHD04

! collimation FODO

  KQColl0 := 1.091737916476

  QFColl0 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1= KQColl0
  QDColl0 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=-KQColl0

! diagnostic line to collimation

  KQDC01 := -1.577859649109 !"Collins" quadrupole
  KQDC02 := -8.897799510442
  KQDC03 :=  6.300300389683
  KQC001 := -2.275927479705 !-KQColl0
  KQC002 :=  KQColl0
  KQC003 := -KQColl0
  KQC004 :=  0.848881263768 ! KQColl0

  QDC01 : QUAD, TYPE="1.0Q3.1",   L=LQs/2, APER=rQs, K1=KQDC01
  QDC02 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQDC02
  QDC03 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQDC03
  QC001 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQC001
  QC002 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQC002
  QC003 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQC003
  QC004 : QUAD, TYPE="1.259Q3.5", L=LQx/2, APER=rQx, K1=KQC004

! ==============================================================================
! SOLE
! ------------------------------------------------------------------------------

! solenoids between gun and L0

  Lsol    := 0.184 !m
  KLSOL01 := 0.007784 !T-m
  KLSOL02 := 0.005393 !T-m
  KSOL01  := 0.1*KLSOL01/(Cb*E0)/Lsol !1/m
  KSOL02  := 0.1*KLSOL02/(Cb*E0)/Lsol !1/m

  SOL01 : SOLE, L=Lsol/2, KS=KSOL01
  SOL02 : SOLE, L=Lsol/2, KS=KSOL02

! ==============================================================================
! MATR
! ------------------------------------------------------------------------------

! laser heater undulator
! - modeled as R-matrix to include vertical natural focusing
! - parameters from M. Venturini presentation (23-OCT-13)

! lam   : laser-heater undulator period [m]
! lamr  : heater laser wavelength [m]
! gami  : Lorentz energy factor in laser-heater undulator [1]
! K_und : undulator K for laser heater undulator
! Lhun  : length of laser-heater undulator (10 periods) [m]
! kqlh  : natural undulator focusing "k" in y-plane [1/m2]

  lam   := 0.0471204
  lamr  := 1030E-9
  gami  := Ei/EMASS
  K_und := sqrt(2*(lamr*2*gami^2/lam-1))
  Lhun  := 10*lam
  kqlh  := (K_und*2*pi/lam/sqrt(2)/gami)^2

  UMHTR : MATRIX, TYPE="LHund", 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)

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

! gun to L0

  Lgun := 0.040 !APEX gun

  DGUN  : DRIF, L=Lgun
  DG000 : DRIF, L=0.306-Lgun-Lsol/2
  DG001 : DRIF, L=0.175-Lsol/2
  DG002 : DRIF, L=0.148
  DG003 : DRIF, L=0.269-Lbun/2
  DG004 : DRIF, L=0.329-Lbun/2
  DG005 : DRIF, L=0.097
  DG006 : DRIF, L=0.144
  DG007 : DRIF, L=0.221-Lsol/2
  DG008 : DRIF, L=0.242-Lsol/2
  DG009 : DRIF, L=0.149
  DG010 : DRIF, L=0.1178

! L0 to laser heater

  D0H00 : DRIF, L=0.3
  D0H01 : DRIF, L=0.3
  D0H02 : DRIF, L=0.9
  D0H03 : DRIF, L=0.3
  D0H04 : DRIF, L=1.5
  D0H05 : DRIF, L=0.3
  D0H06 : DRIF, L=0.25

  D0H00a : DRIF, L=0.15
  D0H00b : DRIF, L=D0H00[L]-D0H00a[L]
  D0H01a : DRIF, L=0.15
  D0H01b : DRIF, L=D0H01[L]-D0H01a[L]
  D0H03a : DRIF, L=0.15
  D0H03b : DRIF, L=D0H03[L]-D0H03a[L]
  D0H05a : DRIF, L=0.15
  D0H05b : DRIF, L=D0H05[L]-D0H05a[L]

! laser heater

  ZhBBo := 0.6 !0.1406
  dLhun := (0.506263-Lhun)/2 !difference between LCLS and Venturini

  Dh01   : DRIF, L=ZhBBo/COS(ABh), TYPE="CSR"
  Dh02a  : DRIF, L=0.0599702, TYPE="CSR"
  Dh02b  : DRIF, L=0.09290825+dLhun, TYPE="CSR"
  Dh02c  : DRIF, L=0.0840183+dLhun, TYPE="CSR"
  Dh02d  : DRIF, L=0.0878302, TYPE="CSR"
  Dh02e  : DRIF, L=0.084505, TYPE="CSR"
  Dh02f  : DRIF, L=0.5-Dh02e[L], TYPE="CSR"
  Dh02g  : DRIF, L=0.5, TYPE="CSR"
  Dh03   : DRIF, L=ZhBBo/COS(ABh), TYPE="CSR"

! laser heater to diagnostic line

  DHD00 : DRIF, L=0.25
  DHD01 : DRIF, L=0.8
  DHD02 : DRIF, L=2.5
  DHD03 : DRIF, L=0.5
  DHD04 : DRIF, L=0.25

  DHD01a : DRIF, L=0.15
  DHD01b : DRIF, L=DHD01[L]-DHD01a[L]
  DHD03b : DRIF, L=0.15
  DHD03a : DRIF, L=DHD03[L]-DHD03b[L]
  DHD04a : DRIF, L=DHD04[L]/2
  DHD04b : DRIF, L=DHD04[L]/2

! collimation FODO

  DColl0a : DRIF, L=0.2
  DColl0c : DRIF, L=0.5
  DColl0b : DRIF, L=11.922307903077-DColl0a[L]-DColl0c[L]

! laser heater to collimation

  DKD0a : DRIF, L=0.2499990844           !kicker (OFF)
  DKD0b : DRIF, L=0.4999926756-DKD0a[L]  !kicker (OFF)
  DDC00 : DRIF, L=4.15-DKD0a[L]-DKD0b[L]
  DDC01 : DRIF, L=0.8
  DDC02 : DRIF, L=0.9
  DDC03 : DRIF, L=5.478
  DDC04 : DRIF, L=0.3

  DDC00b : DRIF, L=0.15
  DDC00a : DRIF, L=DDC00[L]-DDC00b[L]
  DDC03a : DRIF, L=0.15
  DDC03b : DRIF, L=DDC03[L]-DDC03a[L]-DColl0c[L]
  DDC04a : DRIF, L=0.15
  DDC04b : DRIF, L=DDC04[L]-DDC04a[L]

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

  BPM01   : MONI, TYPE="unknown"
  BPM02   : MONI, TYPE="unknown"
  BPM0H01 : MONI, TYPE="10_um_res_R45"
  BPM0H02 : MONI, TYPE="10_um_res_R45"
  BPM0H03 : MONI, TYPE="10_um_res_R45"
  BPM0H04 : MONI, TYPE="10_um_res_R45"
  BPM0H05 : MONI, TYPE="10_um_res_R45"
  BPM0H06 : MONI, TYPE="10_um_res_R45"
  BPMHD01 : MONI, TYPE="10_um_res_R45"
  BPMHD02 : MONI, TYPE="10_um_res_R45"
  BPMHD03 : MONI, TYPE="10_um_res_R45"
  BPMHD04 : MONI, TYPE="10_um_res_R45"
  BPMDC01 : MONI, TYPE="10_um_res_R45"
  BPMDC02 : MONI, TYPE="10_um_res_R45"
  BPMDC03 : MONI, TYPE="10_um_res_R45"
  BPMC001 : MONI, TYPE="10_um_res_R45"
  BPMC002 : MONI, TYPE="10_um_res_R45"
  BPMC003 : MONI, TYPE="10_um_res_R45"
  BPMC004 : MONI, TYPE="10_um_res_R45"

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

  XC0H00 : HKIC, TYPE="class-1a"
  XC0H01 : HKIC, TYPE="class-1a"
  XC0H03 : HKIC, TYPE="class-1a"
  XC0H05 : HKIC, TYPE="class-1a"
  XCHD01 : HKIC, TYPE="class-1a"
  XCHD03 : HKIC, TYPE="class-1a"
  XCDC00 : HKIC, TYPE="class-1a"
  XCDC03 : HKIC, TYPE="class-1a"
  XC002  : HKIC, TYPE="class-6"
  XC004  : HKIC, TYPE="class-1a"

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

  YC0H00 : VKIC, TYPE="class-1a"
  YC0H01 : VKIC, TYPE="class-1a"
  YC0H03 : VKIC, TYPE="class-1a"
  YC0H05 : VKIC, TYPE="class-1a"
  YCHD01 : VKIC, TYPE="class-1a"
  YCHD03 : VKIC, TYPE="class-1a"
  YCDC00 : VKIC, TYPE="class-1a"
  YCDC03 : VKIC, TYPE="class-1a"
  YC001  : VKIC, TYPE="class-6"
  YC003  : VKIC, TYPE="class-6"
  YC004  : VKIC, TYPE="class-1a"

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

! collimators

  CEHTR : RCOL, L=0 !X momentum collimator
  CY01  : RCOL, L=0 !Y betatron collimator
  CX01  : RCOL, L=0 !X betatron collimator
  CY02  : RCOL, L=0 !Y betatron collimator
  CX02  : RCOL, L=0 !X betatron collimator

! instruments

  CATHODE : INST
  IM01    : IMON, TYPE="ICT"
  YAG01   : PROF, TYPE="YAG"
  OTRH1   : PROF, TYPE="OTR"
  OTRH2   : PROF, TYPE="OTR"
  IMHD04  : IMON, TYPE="toroid"

! marker points

  VV01   : MARK
  MIR01  : MARK
  VV02   : MARK
  LHBEG  : MARK
  HTRUND : MARK
  LHMID  : MARK
  LHEND  : MARK

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

  SC0H00 : LINE=(XC0H00,YC0H00)
  SC0H01 : LINE=(XC0H01,YC0H01)
  SC0H03 : LINE=(XC0H03,YC0H03)
  SC0H05 : LINE=(XC0H05,YC0H05)
  SCHD01 : LINE=(XCHD01,YCHD01)
  SCHD03 : LINE=(XCHD03,YCHD03)
  SCDC00 : LINE=(XCDC00,YCDC00)
  SCDC03 : LINE=(XCDC03,YCDC03)
  SC004  : LINE=(XC004,YC004)

  GUN : LINE=(&
    SEQ01BEG,&
    BEGGUNB,&
    CATHODE,DGUN,DG000,&
    2*SOL01,DG001,VV01,DG002,BPM01,DG003,&
    BUN01,DG004,MIR01,DG005,IM01,DG006,YAG01,DG007,&
    2*SOL02,DG008,BPM02,DG009,VV02,DG010,&
    ENDGUNB)

  LSRHTR : LINE=(LHBEG,&
    BCXH1A,BCXH1B,Dh01,BCXH2A,BCXH2B,&
    Dh02a,OTRH1,Dh02b,UMHTR,HTRUND,UMHTR,&
    Dh02c,OTRH2,Dh02d,Dh02e,LHMID,Dh02f,CEHTR,Dh02g,&
    BCXH3A,BCXH3B,Dh03,BCXH4A,BCXH4B,&
    LHEND)

  HTR : LINE=(&
    BEGHTR,&
    D0H00a,SC0H00,D0H00b,&
    Q0H01,BPM0H01,Q0H01,D0H01a,SC0H01,D0H01b,&
    Q0H02,BPM0H02,Q0H02,D0H02,&
    Q0H03,BPM0H03,Q0H03,D0H03a,SC0H03,D0H03b,&
    Q0H04,BPM0H04,Q0H04,D0H04,&
    Q0H05,BPM0H05,Q0H05,D0H05a,SC0H05,D0H05b,&
    Q0H06,BPM0H06,Q0H06,D0H06,&
    LSRHTR,DHD00,&
    QHD01,BPMHD01,QHD01,DHD01a,SCHD01,DHD01b,&
    QHD02,BPMHD02,QHD02,DHD02,&
    QHD03,BPMHD03,QHD03,DHD03a,SCHD03,DHD03a,&
    QHD04,BPMHD04,QHD04,DHD04a,IMHD04,DHD04b,&
    ENDHTR,&
    SEQ01END)

  COL0 : LINE=(&
    SEQ02BEG,&
    BEGCOL0,&
    DKD0a,DKD0b,DDC00a,SCDC00,DDC00b,&
    QDC01,BPMDC01,QDC01,DDC01,&
    QDC02,BPMDC02,QDC02,DDC02,&
    QDC03,BPMDC03,QDC03,DDC03a,SCDC03,DDC03b,CY01,DColl0c,&
    QC001,BPMC001,QC001,DColl0a,YC001,DColl0b,CX01,DColl0c,&
    QC002,BPMC002,QC002,DColl0a,XC002,DColl0b,CY02,DColl0c,&
    QC003,BPMC003,QC003,DColl0a,YC003,DColl0b,CX02,DColl0c,&
    QC004,BPMC004,QC004,DDC04a,SC004,DDC04b,&
    ENDCOL0)

  C0fodo : LINE=(&
    QDColl0,DColl0a,DColl0b,CX01,DColl0c,QFColl0,&
    QFColl0,DColl0a,DColl0b,CY01,DColl0c,QDColl0)

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

  RETURN
