!==============
!= PARAMETERS =
!==============

! ORIGINAL VALUES: 
! ORS_angle=0.0085
! HHG_angle=0.0085
! UNDK=2.83
! KORS=7.7
! BINS=600
!==================

% 0.0085 sto ORS_angle
% ORS_angle -1 * sto -ORS_angle
% 0.0085 sto HHG_angle
% ORS_angle -1 * sto -HHG_angle

% 7.7 sto KORS
% 2.83 sto UNDK


% 600 sto BINS
% 1 sto SGHW_VALUE

% 1 sto CRSState
% 1 sto IRSState

! Lengths of TQA
% 0.25 sto lpo_tqa
% 0.2768 sto lef_tqa
% lef_tqa sto len_tqa

! Lengths of TQG
% 0.110 sto lpo_tqg
% 0.12716 sto lef_tqg
% lef_tqg sto len_tqg

!=============
! = OPT.MARK =
!=============

! OTR1SFUND1 = Fitpoint und alle anderen

! UM = SFLash Undulator MARK 
! UM#1 => U1SFUND1
! UM#2 => U1SFUND2
! UM#3 => U1SFUND3
! UM#4 => U1SFUND4
	UM: MARK, FITPOINT=1   

! OM = ORS Undulator MARK
! OM#1 => U2ORS
! OM#2 => U7ORS
	
	OM: MARK, FITPOINT=1


!===========
! = CHARGE =
!===========

Q: CHARGE,TOTAL=0.8e-9

!===============
!= QUADRUPOLES =
!===============

Q1ORS : 	QUAD , L = "len_tqa", K1 = -3.072339 
Q2ORS : 	QUAD , L = "len_tqa", K1 =  3.723889 	
Q4ORS : 	QUAD , L = "len_tqa", K1 = -1.284246 
Q7ORS :		QUAD , L = "len_tqa", K1 =  1.348810 	
Q9ORS : 	QUAD , L = "len_tqa", K1 = -1.316407 
Q12ORS : 	QUAD , L = "len_tqa", K1 =  1.038838 	
Q1SFUND1 :QUAD , L = "len_tqa", K1 = -0.4177991
Q1SFUND2 :QUAD , L = "len_tqg", K1 =  3.351880
Q1SFUND3 :QUAD , L = "len_tqg", K1 = -3.812003
Q1SFUND4 :QUAD , L = "len_tqg", K1 =  2.022660
Q1SFELC : QUAD , L = "len_tqa", K1 = -2.186202
Q2SFELC: 	QUAD , L = "len_tqa", K1 =  2.185893

!DRIFTS with special length (dep. on QUAD)
!like TQA
D0100a: 	EDRIFT, L = "0.100 len_tqa lpo_tqa - 0.5 * -"

!like TQG
D0022g:		EDRIFT, L = "0.022 len_tqg lpo_tqg - 0.5 * -"
D0018g:		EDRIFT, L = "0.018 len_tqg lpo_tqg - 0.5 * -"

!==========
!= DRIFTS =
!==========

D00095: 	EDRIFT, L = 0.0095	
D00210:		EDRIFT, L = 0.021
D0022: 		EDRIFT, L = 0.022
D00275:		EDRIFT, L = 0.0275
D0029:		EDRIFT, L = 0.029
D0030: 		EDRIFT, L = 0.03
D0035: 		EDRIFT, L = 0.035
D0045: 		EDRIFT, L = 0.045
D0050: 		EDRIFT, L = 0.050
D00515:		EDRIFT, L = 0.0515
D0058: 		EDRIFT, L = 0.058
D00595: 	EDRIFT, L = 0.0595	
D0061:		EDRIFT, L = 0.061
D00695: 	EDRIFT, L = 0.0695	
D0070:  	EDRIFT, L = 0.0700	
D0074: 		EDRIFT, L = 0.074
D0075 : 	EDRIFT, L = 0.0750	
D0080 : 	EDRIFT, L = 0.0800	
D0085:  	EDRIFT, L = 0.0850	
D0086: 		EDRIFT, L = 0.086
D0104: 		EDRIFT, L = 0.104
D0110:		EDRIFT, L = 0.110
D01224:		EDRIFT, L = 0.1224
D01365: 	EDRIFT, L = 0.1365	
D0150: 		EDRIFT, L = 0.150
D01624:		EDRIFT, L = 0.1624
D0165: 		EDRIFT, L = 0.165
D01675: 	EDRIFT, L = 0.1675	
D0175: 		EDRIFT, L = 0.175
D0176: 		EDRIFT, L = 0.176
D0200: 		EDRIFT, L = 0.200
D0245:  	EDRIFT, L = 0.2450	
D0353: 		EDRIFT, L = 0.353
D0470: 		EDRIFT, L = 0.470
D0480: 		EDRIFT, L = 0.480
D0745:  	EDRIFT, L = 0.7450	


!===============
!= ORS-SECTION =
!===============
!
!
! OTR monitors (2 and 4 are also wirescanners)
OTR2ORSi: 	EDRIFT, L = 0.115
OTR2ORS: 		MARK	
OTR2ORS00:  LINE = (OTR2ORSi, OTR2ORS, OTR2ORSi)
!
OTR4ORSi: 	EDRIFT, L=0.115
OTR4ORS: 		MARK
OTR4ORS00:  LINE = (OTR4ORSi, OTR4ORS, OTR4ORSi)
!
OTR6ORSi: 	EDRIFT, L=0.115
OTR6ORS: 		MARK
OTR6ORS00:  LINE = (OTR6ORSi, OTR6ORS, OTR6ORSi)
!
OTR10ORSi: 	EDRIFT, L=0.115
OTR10ORS: 	MARK
OTR10ORS00: LINE = (OTR10ORSi, OTR10ORS, OTR10ORSi)
!
! BPMs
BPM2ORS: 		MONI
BPM4ORS:		MONI
BPM7ORS: 		MONI
BPM9ORS: 		MONI
BPM12ORS: 	MONI
!
!
!ORS undulators
U2ORS:		WIGGLER	, L = 1.45, K = "KORS" , POLES=14, TILT = "pi 2 /" 	!VERONICA - the vertical one
U7ORS:		WIGGLER	, L = 1.45, K = "KORS" , POLES=14, TILT = 0.0 		!HILDA - the horizontal one
!U2ORS:		EDRIFT	, L = 1.45
!U7ORS:		EDRIFT	, L = 1.45
!
!
!First ORS chicane
V5ORS: 		CSRCSBEND, angle= "ORS_angle" , L=0.1, e1=0.0, e2="ORS_angle",  tilt="pi 2 /", CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"
V6ORS: 		CSRCSBEND, angle="-ORS_angle", L=0.1,  e1="-ORS_angle", e2=0.0, tilt="pi 2 /", CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"
V6_4ORS: 	CSRCSBEND, angle="-ORS_angle", L=0.1, e1=0.0, e2="-ORS_angle",  tilt="pi 2 /", CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"
V7ORS: 		CSRCSBEND, angle="ORS_angle", L=0.1,   e1="ORS_angle", e2=0.0,  tilt="pi 2 /", CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"
H5ORS: 		CSRCSBEND, angle= 0.0 , L=0.1, e1=0.0, e2=0.0, tilt="pi 1 *", CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"
!
!second ORS chicane 
V9ORS: 		CSRCSBEND, angle= "ORS_angle" , L=0.1, e1=0.0, e2="ORS_angle",  tilt="pi 2 /", CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"
V10ORS: 	CSRCSBEND, angle="-ORS_angle", L=0.1,  e1="-ORS_angle", e2=0.0, tilt="pi 2 /", CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"
V11ORS: 	CSRCSBEND, angle="-ORS_angle", L=0.1,  e1=0.0, e2="-ORS_angle", tilt="pi 2 /", CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"
V12ORS: 	CSRCSBEND, angle="ORS_angle", L=0.1,   e1="ORS_angle", e2=0.0,  tilt="pi 2 /", CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"
H10ORS: 	CSRCSBEND, angle= 0.0 , L=0.1,  e1=0.0, e2=0.0, tilt="pi 1 *", CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"
!
V1ORS:	 	VKICK, L=0.1

!
! Toroid
TOR7ORS: 	EDRIFT, L = 0.158
!
StartORS: 	MARK
EndORS:   	MARK
!
ORS:	LINE =	(StartORS, D0200, D0070, V1ORS, D0245, D0175, D0100a, &
			Q1ORS, D0100a, OTR2ORS00, D0100a, Q2ORS, BPM2ORS, &
			D0100a, D0045, OM, U2ORS, D0045, OTR4ORS00, D0100a, Q4ORS, BPM4ORS, & 
			D0100a, D0035, V5ORS, D0165, H5ORS, D0480, V6ORS, D0035, &
			OTR6ORS00, D0035, V6_4ORS, D0353, D0058, TOR7ORS, D0176, &
			V7ORS, D0035, D0100a, Q7ORS, BPM7ORS, D0100a, D0045, OM, U7ORS, D0045, D0100a, &
			Q9ORS, BPM9ORS, D0100a, D0035, V9ORS, D0175, H10ORS, D0470, V10ORS, D0035, &
			OTR10ORS00, D0035, V11ORS, D0745, V12ORS, D0035, D0100a, Q12ORS, BPM12ORS, &
			D0100a, D0075, D0050, D00095, EndORS)


!=================
!= SFUND-SECTION =
!=================

! Blocks of OTR, wirescanner, BPMs and Phase Shifters
OTR1SFUND1: 	MARK, FITPOINT=1
WIRE1SFUND1:	MARK
BPM1SFUND1: 	MONI
1SFUND1:  		LINE = (D00695, OTR1SFUND1, WIRE1SFUND1, BPM1SFUND1, D01365)
!
OTR1SFUND2: 	MARK, FITPOINT=1
WIRE1SFUND2:	MARK
BPM1SFUND2: 	MONI
P1SFUND2: 		EDRIFT, L = 0.135
1SFUND2:			LINE = (D0074, OTR1SFUND2, WIRE1SFUND2, BPM1SFUND2, D01675, P1SFUND2)
!
OTR1SFUND3: 	MARK, FITPOINT=1
WIRE1SFUND3:	MARK
BPM1SFUND3: 	MONI
P1SFUND3: 		EDRIFT, L = 0.135
1SFUND3:			LINE = (D0074, OTR1SFUND3, WIRE1SFUND3, BPM1SFUND3, D01675, P1SFUND3)
!
OTR1SFUND4: 	MARK, FITPOINT=1
WIRE1SFUND4:	MARK
BPM1SFUND4: 	MONI
P1SFUND4: 		EDRIFT, L = 0.135
1SFUND4:			LINE = (D0074, OTR1SFUND4, WIRE1SFUND4, BPM1SFUND4, D01675, P1SFUND4)

! SFLASH UNDULATORS

U1SFUND1:	WIGGLER	, L = 2.0, K = "UNDK", POLES=127
U1SFUND2:	WIGGLER	, L = 2.0, K = "UNDK", POLES=127
U1SFUND3:	WIGGLER	, L = 2.0, K = "UNDK", POLES=127
U1SFUND4:	WIGGLER	, L = 4.0, K = "UNDK", POLES=242

!
StartSFUND: 	MARK
EndSFUND:   	MARK
!
SFUND:		LINE=		(StartSFUND, 1SFUND1, D00595, D0100a, Q1SFUND1, D0100a, D00210, D0061, UM, U1SFUND1, D0061, &
			D0018g, Q1SFUND2, D0022g,1SFUND2, D00515, D0061, UM, U1SFUND2, D0061, &
			D0018g, Q1SFUND3, D0022g,1SFUND3, D00515, D0061, UM, U1SFUND3, D0061, &
			D0018g, Q1SFUND4, D0022g,1SFUND4, D00515, D0061, UM, U1SFUND4, D0061, EndSFUND)

!=================
!= SFELC-SECTION =
!=================
!
BPM1SFELC: 	MONI
!
! Intrabunch kickers: KICK2SFELC: DESY type, horizontal / KICK4SFELC: PSI type, vertical
!
KICK2SFELC: 	HKICK, L = 1
KICK4SFELC: 	VKICK, L = 1
!
V2SFELC: 	CSRCSBEND, angle= "HHG_angle" , L=0.1,e1=0.0, e2="ORS_angle",  tilt="pi 2 /", CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"
V3SFELC: 	CSRCSBEND, angle="-HHG_angle", L=0.1, e1="-ORS_angle", e2=0.0, tilt="pi 2 /", CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"
V4SFELC: 	CSRCSBEND, angle="-HHG_angle", L=0.1,e1=0.0, e2="-ORS_angle",  tilt="pi 2 /", CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"
V6SFELC: 	CSRCSBEND, angle="HHG_angle", L=0.1, e1="ORS_angle", e2=0.0,   tilt="pi 2 /", CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"

H3SFELC:	CSRCSBEND, angle= 0.0 , L=0.1, e1=0.0, e2=0.0, tilt=0.0, CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"
H4SFELC:	CSRCSBEND, angle= 0.0 , L=0.1, e1=0.0, e2=0.0, tilt=0.0, CSR="CRSState", ISR="IRSState", BINS="BINS", SG_HALFWIDTH="SGHW_VALUE"


! Phase monitor (BAM) 
PHA1SFELC: 	EDRIFT, L = 0.040

! mirror chamber
MIRRCH:		EDRIFT, L = 0.2752
!
StartSFELC: 	MARK
EndSFELC:   	MARK
!
SFELC: 		LINE = 	(StartSFELC, D0022, D0100a, Q1SFELC, BPM1SFELC, D0100a, PHA1SFELC, &
			D0100a, Q2SFELC, D0100a, D0035, V2SFELC, D0050, & 
			KICK2SFELC, D0086, D0104, H3SFELC, D0085, V3SFELC, &
			D01224, D0110, MIRRCH, D0150, D01624, V4SFELC, D0050, &
			D0080, D0030, H4SFELC, D0029, D0086, &
			KICK4SFELC, D0050, V6SFELC, D00275, EndSFELC)


!===============
!= FLASH IS... =
!===============

"SFLASH": LINE=(Q,ORS,SFUND,SFELC)

"FLASH_Q": LINE=(Q)

"FLASH_OTR2ORS":    LINE=(Q,StartORS, D0200, D0070, V1ORS, D0245, D0175, D0100a, &
												Q1ORS, D0100a,OTR2ORSi, OTR2ORS),
												
"FLASH_OTR4ORS":    LINE=(Q,StartORS, D0200, D0070, V1ORS, D0245, D0175, D0100a, &
												Q1ORS, D0100a, OTR2ORS00, D0100a, Q2ORS, BPM2ORS, &
												D0100a, D0045, OM, U2ORS, D0045, OTR4ORSi,OTR4ORS),
												
"FLASH_OTR6ORS":    LINE=(Q,StartORS, D0200, D0070, V1ORS, D0245, D0175, D0100a, &
												Q1ORS, D0100a, OTR2ORS00, D0100a, Q2ORS, BPM2ORS, &
												D0100a, D0045, OM, U2ORS, D0045, OTR4ORS00, D0100a, Q4ORS, BPM4ORS, & 
												D0100a, D0035, V5ORS, D0165, H5ORS, D0480, V6ORS, D0035, &
												OTR6ORSi, OTR6ORS),
												
"FLASH_OTR10ORS":   LINE=(Q,StartORS, D0200, D0070, V1ORS, D0245, D0175, D0100a, &
												Q1ORS, D0100a, OTR2ORS00, D0100a, Q2ORS, BPM2ORS, &
												D0100a, D0045, OM, U2ORS, D0045, OTR4ORS00, D0100a, Q4ORS, BPM4ORS, & 
												D0100a, D0035, V5ORS, D0165, H5ORS, D0480, V6ORS, D0035, &
												OTR6ORS00, D0035, V6_4ORS, D0353, D0058, TOR7ORS, D0176, &
												V7ORS, D0035, D0100a, Q7ORS, BPM7ORS, D0100a, D0045, OM, U7ORS, D0045, D0100a, &
												Q9ORS, BPM9ORS, D0100a, D0035, V9ORS, D0175, H10ORS, D0470, V10ORS, D0035, &
												OTR10ORSi,OTR10ORS),

"FLASH_OTR1SFUND1": LINE=(Q,ORS,StartSFUND,D00695, OTR1SFUND1, WIRE1SFUND1, BPM1SFUND1),


"FLASH_OTR1SFUND2": LINE=(Q,ORS,StartSFUND, 1SFUND1, D00595, D0100a, Q1SFUND1, D0100a, D00210, D0061, UM, U1SFUND1, D0061, &
												D0018g, Q1SFUND2, D0022g,D0074, OTR1SFUND2, WIRE1SFUND2, BPM1SFUND2),

"FLASH_OTR1SFUND3": LINE=(Q,ORS,StartSFUND, 1SFUND1, D00595, D0100a, Q1SFUND1, D0100a, D00210, D0061, UM, U1SFUND1, D0061, &
												D0018g, Q1SFUND2, D0022g,1SFUND2, D00515, D0061, UM, U1SFUND2, D0061, &
												D0018g, Q1SFUND3, D0022g,D0074, OTR1SFUND3, WIRE1SFUND3, BPM1SFUND3),


"FLASH_OTR1SFUND4": LINE=(Q,ORS,StartSFUND, 1SFUND1, D00595, D0100a, Q1SFUND1, D0100a, D00210, D0061, UM, U1SFUND1, D0061, &
												D0018g, Q1SFUND2, D0022g,1SFUND2, D00515, D0061, UM, U1SFUND2, D0061, &
												D0018g, Q1SFUND3, D0022g,1SFUND3, D00515, D0061, UM, U1SFUND3, D0061, &
												D0018g, Q1SFUND4, D0022g,D0074, OTR1SFUND4, WIRE1SFUND4, BPM1SFUND4),												
												