Lattice 11.0.7 - Optimized Switchyard + Diagnostic Boxes (Phase Planned)
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 6s

This commit is contained in:
2026-01-22 15:21:35 +01:00
parent 67ac056265
commit b88f4e89d6

View File

@@ -331,10 +331,16 @@ import math
# 3) Instrument Switchyard with addition quadrupoles (sextupole, skew quadrupoles, QFM correctors)
# 4) Instument S20BC01 with diagnostics.
# Layout 11.0.7
# 1) Added a second sextupole in switchyard SATSY03
# 2) Added a screen in S30CB01 for emittance measurements
# 3) Add an additional QFM corrector
# 4) Add the Diagnostic test chambers in SARMA01 in phase planned.
class SwissFEL:
def __init__(self,alt=0):
self.alt=alt
self.Version='11.0.6'
self.Version='11.0.7'
def Types(self,TM):
# type definitions for the SwissFEL lattice
@@ -694,10 +700,13 @@ class SwissFEL:
indict={'Type':'Vacuum','Length':1.5,'Tag':'SLOS','Baugruppe': 'SHIELD-FE'}
TM.define('FE-Shielding',indict)
#Laser Acceleration
#Laser Acceleration and advance diagnostics/instrumentation
indict={'Type':'Diagnostic','Length':2.13,'Tag':'DLAC','Aperx':0,'Baugruppe':'LASER-ACC-BOX'}
TM.define('Laser-Acceleration',indict)
indict={'Type':'Diagnostic','Length':0.276,'Tag':'DCKR','Aperx':0,'Baugruppe':'CHERENKOV-Radiator'}
TM.define('Cherenkov',indict)
indict={'Type':'Diagnostic','Length':0.276,'Tag':'DWSS','Aperx':0,'Baugruppe':'DWSC-Spider'}
TM.define('WSSpider',indict)
# define branching point
indict={'Type':'Marker','Length':0.0,'Tag':'MKBR','Baugruppe': 'BRANCHING-POINT'}
@@ -1432,7 +1441,10 @@ class SwissFEL:
# Linac 3
CB01=TM.generate('CB-Lin3-Cell-incomplete',0,{'Name':'CB01'})
CB01.append(TM.generate('DWSC-C16',440),0.019,'relative')
if self.alt < 2:
CB01.append(TM.generate('DWSC-C16',440),0.019,'relative')
else:
CB01.append(TM.generate('DSCR-HR16',440),0.019,'relative')
CB02=TM.generate('CB-Lin3-Cell-incomplete',0,{'Name':'CB02'})
CB03=TM.generate('CB-Lin3-Cell-incomplete',0,{'Name':'CB03'})
CB04=TM.generate('CB-Lin3-Cell-incomplete',0,{'Name':'CB04'})
@@ -1567,7 +1579,12 @@ class SwissFEL:
MA01.append(TM.generate('DBPM-C16',40),0.25+0.7+0.1,'relative')
MA01.append(TM.generate('SFQFM',50),0.00,'relative')
MA01.append(TM.generate('QFM',60),0.0,'relative')
MA01.append(TM.generate('SFQFM',70),2.55,'relative')
if self.alt > 0:
MA01.append(TM.generate('Cherenkov',64),1,'relative')
MA01.append(TM.generate('WSSpider', 66), 0, 'relative')
MA01.append(TM.generate('SFQFM',70),2.55-1.552,'relative')
else:
MA01.append(TM.generate('SFQFM', 70), 2.55, 'relative')
MA01.append(TM.generate('QFM',80),0.0,'relative')
MA01.append(TM.generate('DICT-C16',90),1.95-0.075-0.09+0.1575-0.05,'relative')
MA01.append(TM.generate('DBPM-C16',100),0.2+0.175-0.1575+0.05,'relative')
@@ -1742,14 +1759,14 @@ class SwissFEL:
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('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('QFM-veryshort', 210), 0.15, 'relative') #+0.5
SY02.append(TM.generate('DBPM-C16', 220), 2.55-1, 'relative')#-0.5
SY02.append(TM.generate('QFD', 230), 0.1, '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('QFM-veryshort', 260), 0.1, 'relative')
SY02.append(TM.generate('SFQFM', 265), 0.1, 'relative') #
SY02.append(TM.generate('DBPM-C16', 270), 17-0.4, 'relative')
SY02.append(TM.generate('DBPM-C16', 280), 17, 'relative')
SY02.append(TM.generate('DSCR-HR16', 290), 0.1, 'relative')
SY02.append(TM.generate('QFD', 300), 0.063, 'relative')
@@ -1761,9 +1778,10 @@ class SwissFEL:
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')
SY03.append(TM.generate('QFM-veryshort', 120), 0.1, 'relative')
SY03.append(TM.generate('HFB', 130), 0.1, 'relative')
SY03.append(TM.generate('HFB', 110), 3.5-0.4, 'relative')
SY03.append(TM.generate('DBPM-C16', 120), 0.1, 'relative')
SY03.append(TM.generate('QFM-veryshort', 130), 0.1, 'relative')
SY03.append(TM.generate('HFB', 140), 0.1, 'relative')
SY03.append(TM.generate('AFBC3-noCor', 200,{'angle': 2.5, 'design_angle': 2.5, 'e1': 1, 'e2': 0., 'BC': 'Switch Yard 2'}), 3.5-0.2,'relative')
SY03.append(TM.generate('DBPM-C16', 210), 0.55-0.2, 'relative')
SY03.append(TM.generate('QFD', 220), 0.1, 'relative')
@@ -1774,7 +1792,7 @@ class SwissFEL:
SY03.append(TM.generate('DBPM-C16', 420), 0.1, 'relative')
SY03.append(TM.generate('QFD', 430), 0.1, 'relative')
BC01 = LineContainer('BC01',-0.3)
BC01 = LineContainer('BC01',-0.3748+0.1246)
angAT=0.5
varSYBC1 = VariableContainer(5, 2.1)
varSYBC2 = VariableContainer(5, 0)
@@ -1787,7 +1805,7 @@ class SwissFEL:
BC01.append(TM.generate('DBPM-C16', 420), 1.85+0.5-0.6 - 0.2, 'relative')
BC01.append(TM.generate('QFD', 430), 0.1, 'relative')
BC01.append(TM.generate('DCDR-BC2', 440), 1.85 + 0.5-0.6-0.237, 'relative')
BC01.append(TM.generate('QFD', 450), 0.1, 'relative')
BC01.append(TM.generate('QFM-veryshort', 450), 0.1, 'relative')
BC01.append(TM.generate('DBPM-C16', 460), 1.85+0.58699+4.5895e-3-0.6 - 0.2, 'relative')
BC01.append(TM.generate('QFD', 470), 0.1, 'relative')
else: