From bd777b14e75ef1242800a4d45a69711e7a5ebb77 Mon Sep 17 00:00:00 2001 From: Sven Date: Tue, 20 Jan 2026 15:45:33 +0100 Subject: [PATCH] Fine Tuning Switchyard elements for best optics --- Python_Code/onlinemodel/layout/layout.py | 122 ++++++++++++----------- 1 file changed, 64 insertions(+), 58 deletions(-) diff --git a/Python_Code/onlinemodel/layout/layout.py b/Python_Code/onlinemodel/layout/layout.py index d6dc2e9..bdd7bed 100644 --- a/Python_Code/onlinemodel/layout/layout.py +++ b/Python_Code/onlinemodel/layout/layout.py @@ -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