Fine Tuning Switchyard elements for best optics
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 6s

This commit is contained in:
2026-01-20 15:45:33 +01:00
parent ec67f693c5
commit bd777b14e7

View File

@@ -853,6 +853,7 @@ class SwissFEL:
a4={'Element':'TW Cav C-Band','sRef':0.049387,'Ref':'relative','index':400}
a5={'Element':'DBPM-C16','sRef':0.081839,'Ref':'relative','index':420}
a6={'Element':'QFD','sRef':0.049,'Ref':'relative','index':430}
a6a={'Element':'QFM-veryshort','sRef':0.049,'Ref':'relative','index':430}
a7={'Element':'DWSC-C16','sRef':0.019,'Ref':'relative','index':440}
@@ -865,6 +866,8 @@ class SwissFEL:
seq=[a0,a1,a2,a3,a4,a5,a6]
TM.define('CB-Lin3-Cell-incomplete',seq)
seq=[a0,a1,a2,a3,a4,a5,a6a]
TM.define('CB-Lin3-Cell-incomplete-QFM',seq)
#s-Band
a0={'Length': 11.0}
@@ -1017,7 +1020,7 @@ class SwissFEL:
varC=VariableContainer(0.16,0)
LH02.append(TM.generate('AFL',100,{'angle':-4.1,'design_angle':-4.1,'e1':0,'e2':1,'BC':'Laser Heater'}),0.142,'relative')
LH02.append(TM.generate('AFL',200,{'angle':4.1,'design_angle':4.1,'e1':1,'e2':0,'BC':'Laser Heater'}),2,varC)
LH02.append(TM.generate('DBPM-C16',210),0.19,'relative')
LH02.append(TM.generate('DBPM-C16',210),0.190,'relative')
LH02.append(TM.generate('DSCR-LH16',220),0.08,'relative')
LH02.append(TM.generate('U50',230),0.14-0.007,'relative')
LH02.append(TM.generate('DBPM-C16',240),0.21-0.058,'relative')
@@ -1067,7 +1070,7 @@ class SwissFEL:
LH01.append(TM.generate('QFDM', 70), 0.2-0.12, 'relative')
LH02=LineContainer('LH02',-0.1)
varC=VariableContainer(0.16,0)
varC=VariableContainer(0.1602,0)
LH02.append(TM.generate('LH-Laserport', 15), 0.0, 'relative')
LH02.append(TM.generate('AFL',100,{'angle':-3.0,'design_angle':-3.0,'e1':0,'e2':1,'BC':'Laser Heater'}),0.142,'relative')
LH02.append(TM.generate('AFL',200,{'angle':3.0,'design_angle':3.0,'e1':1,'e2':0,'BC':'Laser Heater'}),2,varC)
@@ -1463,7 +1466,7 @@ class SwissFEL:
CB15.append(TM.generate('DBPM-C16',420),4.465+0.465,'relative')
CB15.append(TM.generate('QFD',430),0.049,'relative')
else:
CB14 = TM.generate('CB-Lin3-Cell-incomplete', 0, {'Name': 'CB14'})
CB14 = TM.generate('CB-Lin3-Cell-incomplete-QFM', 0, {'Name': 'CB14'})
CB15 = LineContainer('CB15', 9.1)
CB15.append(TM.generate('QFM',10),0.6-0.45,'relative')
CB15.append(TM.generate('DBPM-C16', 15), 0.75-0.45-0.2, 'relative')
@@ -1496,9 +1499,8 @@ class SwissFEL:
dx=8.435-1.3
CL01=LineContainer('CL01', 13.54)
CL01.append(TM.generate('DBPM-C16',10),0.03,'relative')
CL01.append(TM.generate('QFD',20),0.049,'relative')
CL01.append(TM.generate('COL-TR-16',30),0.019,'relative')
CL01.append(TM.generate('SFQFM',40),0.855,'relative')
CL01.append(TM.generate('QFM-veryshort',20),0.049,'relative')
CL01.append(TM.generate('SFQFM',40),0.855+0.156,'relative')
CL01.append(TM.generate('QFM',50),0,'relative')
CL01.append(TM.generate('DBPM-C16',60),1.95,'relative')
CL01.append(TM.generate('SFQFM',70),0.0,'relative')
@@ -1719,31 +1721,34 @@ class SwissFEL:
if self.alt == 2:
SY01 = LineContainer('SY01', 0)
SY01.append(Alignment({'dy': 0.01, 'Tag': 'ALIG', 'index': 1}))
dx=0.5
dy=-0.5
SY01.append(TM.generate('DBPM-C16',10),4+dx-0.1-0.1,'relative')
dx1 = 1.5
dx2 = 1.
dx3 = 0.5
dx4 = 0.1
SY01.append(TM.generate('DBPM-C16',10),4+dx1-0.2,'relative')
SY01.append(TM.generate('QFM-veryshort', 20), 0.1, 'relative')
SY01.append(TM.generate('HFB', 30), 0.1, 'relative')
SY01.append(TM.generate('QFBS', 40), 0.1, 'relative')
SY01.append(TM.generate('QFM-veryshort', 50), 4-dx-0.4, 'relative')
SY01.append(TM.generate('QFM-veryshort', 50), 4-dx1+dx2-0.4, 'relative')
SY01.append(TM.generate('SFQFM', 60), 0.1, 'relative')# before BPM, after cor
SY01.append(TM.generate('DBPM-C16', 70), 2.5+dy - 0.1 - 0.1-0.4, 'relative')
SY01.append(TM.generate('DBPM-C16', 70), 2.5+dx3-dx2 -0.6, 'relative')
SY01.append(TM.generate('QFM-veryshort', 80), 0.1, 'relative') # before BPM, after Sex,Qsk,cor
SY01.append(TM.generate('HFB', 90), 0.1, 'relative')
SY01.append(TM.generate('QFBS', 100), 0.1, 'relative')
SY01.append(TM.generate('QFD', 110), 2.5-dy+0.05-0.4, 'relative') # before BPM, magnet is QFD.
SY01.append(TM.generate('AFBC3-noCor', 200, {'angle': -2, 'design_angle': -2, 'e1': 1, 'e2': 0., 'BC': 'Switch Yard 1'}), 0.3,'relative')
SY01.append(TM.generate('QFD', 110), 2.5-dx3+dx4-0.4, 'relative') # before BPM, magnet is QFD.
SY01.append(TM.generate('AFBC3-noCor', 200, {'angle': -2, 'design_angle': -2, 'e1': 1, 'e2': 0., 'BC': 'Switch Yard 1'}), 0.35-dx4,'relative')
SY02 = LineContainer('SY02', 66-1.7555-6.3852-9.8+6.25)
SY02.append(TM.generate('QFM-veryshort', 10), 0.3, 'relative')
SY02.append(TM.generate('AFL', 100,{'angle': 0.57, 'design_angle': 0.57, 'e1': 0, 'e2': 1., 'Tilt': math.asin(1)}),0.3, 'relative')
SY02.append(TM.generate('AFL', 200,{'angle': -0.57, 'design_angle': -0.57, 'e1': 1, 'e2': 0., 'Tilt': math.asin(1)}),0.8, 'relative')
SY02.append(TM.generate('QFD', 210), 0.35, 'relative')
SY02.append(TM.generate('DBPM-C16', 220), 1.55-.2, 'relative')
SY02.append(TM.generate('QFM-veryshort', 210), 0.15+0.5, 'relative')
SY02.append(TM.generate('DBPM-C16', 220), 2.55-1-0.5, 'relative')
SY02.append(TM.generate('QFD', 230), 0.1, 'relative')
SY02.append(TM.generate('QFD', 240), 4.55, 'relative')
SY02.append(TM.generate('DBPM-C16', 250), 1.55 - .2, 'relative')
SY02.append(TM.generate('QFD', 240), 2.55+0.5+0.5, 'relative')
SY02.append(TM.generate('DBPM-C16', 250), 2.55 - .2+0.5-0.5, 'relative')
SY02.append(TM.generate('QFD', 260), 0.1, 'relative')
SY02.append(TM.generate('DBPM-C16', 270), 17, 'relative')
SY02.append(TM.generate('DBPM-C16', 280), 17, 'relative')
SY02.append(TM.generate('DSCR-HR16', 290), 0.1, 'relative')
@@ -1753,6 +1758,7 @@ class SwissFEL:
SY02.append(TM.generate('QFD', 330), 0.1, 'relative')
SY02.append(TM.generate('QFD', 340), 1.55+1., 'relative')
SY03 = LineContainer('SY03', -0.1)
SY03.append(TM.generate('AFBC3-noCor', 100,{'angle': 2.5, 'design_angle': 2.5, 'e1': 1, 'e2': 0., 'BC': 'Switch Yard 2'}), 0.3,'relative')
SY03.append(TM.generate('DBPM-C16', 110), 3.5-0.2, 'relative')
@@ -2577,47 +2583,47 @@ class SwissFEL:
if idx!=8:
Parameters[ele]={'K':1.2}
Parameters['SINEG01.MBND300']={'angle':30}
Parameters['SINLH02.UIND230']={'K':2.34}
Parameters['SINLH02.MBND100']={'angle':-4.1}
Parameters['SINLH02.MBND200']={'angle':4.1}
Parameters['SINLH02.MBND300']={'angle':4.1}
Parameters['SINLH02.MBND400']={'angle':-4.1}
Parameters['SINBC02.MBND100']={'angle':-3.82}
Parameters['SINBC02.MBND200']={'angle':3.82}
Parameters['SINBC02.MBND300']={'angle':3.82}
Parameters['SINBC02.MBND400']={'angle':-3.82}
Parameters['S10DI01.MBND100']={'angle':-20}
Parameters['S10BC02.MBND100']={'angle':-2.15}
Parameters['S10BC02.MBND200']={'angle':2.15}
Parameters['S10BC02.MBND300']={'angle':2.15}
Parameters['S10BC02.MBND400']={'angle':-2.15}
Parameters['S10MA01.MBND100']={'angle':0}
Parameters['S20SY02.MBND200']={'angle':2} ##
Parameters['SARCL02.MBND100']={'angle':-1}
Parameters['SARCL02.MBND200']={'angle':1}
Parameters['SARCL02.MBND400']={'angle':1}
Parameters['SARCL02.MBND500']={'angle':-1}
Parameters['SARMA02.MBND100']={'angle':0}
Parameters['SARUN08.MBND100']={'angle':-0.22}
Parameters['SARUN08.MBND200']={'angle':0.22}
Parameters['SARUN08.MBND300']={'angle':0.22}
Parameters['SARUN08.MBND400']={'angle':-0.22}
Parameters['SARBD01.MBND100']={'angle':8}
Parameters['SARBD01.MBND200']={'angle':0}
Parameters['SATSY01.MBND200']={'angle':1}
Parameters['SATSY01.MBND400']={'angle':2}
Parameters['SATSY02.MBND100']={'angle':0.108}
Parameters['SATSY02.MBND200']={'angle':-0.108}
Parameters['SATCL01.MBND100']={'angle':-2.5}
Parameters['SATCL01.MBND300']={'angle':-2.5}
Parameters['SATUN10.MBND100']={'angle':0.0}
Parameters['SATUN10.MBND200']={'angle':0.0}
Parameters['SATUN10.MBND300']={'angle':0.0}
Parameters['SATUN10.MBND400']={'angle':0.0}
Parameters['SATBD01.MBND100']={'angle':8.0}
Parameters['SATBD01.MBND200']={'angle':0}
Parameters['SATMA01.MBND100']={'angle':0} # Missing?
# Parameters['SINEG01.MBND300']={'angle':30}
# Parameters['SINLH02.UIND230']={'K':2.34}
# Parameters['SINLH02.MBND100']={'angle':-4.1}
# Parameters['SINLH02.MBND200']={'angle':4.1}
# Parameters['SINLH02.MBND300']={'angle':4.1}
# Parameters['SINLH02.MBND400']={'angle':-4.1}
# Parameters['SINBC02.MBND100']={'angle':-3.82}
# Parameters['SINBC02.MBND200']={'angle':3.82}
# Parameters['SINBC02.MBND300']={'angle':3.82}
# Parameters['SINBC02.MBND400']={'angle':-3.82}
# Parameters['S10DI01.MBND100']={'angle':-20}
# Parameters['S10BC02.MBND100']={'angle':-2.15}
# Parameters['S10BC02.MBND200']={'angle':2.15}
# Parameters['S10BC02.MBND300']={'angle':2.15}
# Parameters['S10BC02.MBND400']={'angle':-2.15}
# Parameters['S10MA01.MBND100']={'angle':0}
# Parameters['S20SY02.MBND200']={'angle':2} ##
# Parameters['SARCL02.MBND100']={'angle':-1}
# Parameters['SARCL02.MBND200']={'angle':1}
# Parameters['SARCL02.MBND400']={'angle':1}
# Parameters['SARCL02.MBND500']={'angle':-1}
# Parameters['SARMA02.MBND100']={'angle':0}
# Parameters['SARUN08.MBND100']={'angle':-0.22}
# Parameters['SARUN08.MBND200']={'angle':0.22}
# Parameters['SARUN08.MBND300']={'angle':0.22}
# Parameters['SARUN08.MBND400']={'angle':-0.22}
# Parameters['SARBD01.MBND100']={'angle':8}
# Parameters['SARBD01.MBND200']={'angle':0}
# Parameters['SATSY01.MBND200']={'angle':1}
# Parameters['SATSY01.MBND400']={'angle':2}
# Parameters['SATSY02.MBND100']={'angle':0.108}
# Parameters['SATSY02.MBND200']={'angle':-0.108}
# Parameters['SATCL01.MBND100']={'angle':-2.5}
# Parameters['SATCL01.MBND300']={'angle':-2.5}
# Parameters['SATUN10.MBND100']={'angle':0.0}
# Parameters['SATUN10.MBND200']={'angle':0.0}
# Parameters['SATUN10.MBND300']={'angle':0.0}
# Parameters['SATUN10.MBND400']={'angle':0.0}
# Parameters['SATBD01.MBND100']={'angle':8.0}
# Parameters['SATBD01.MBND200']={'angle':0}
# Parameters['SATMA01.MBND100']={'angle':0} # Missing?
# standard RF