diff --git a/Python_Code/onlinemodel/layout/layout.py b/Python_Code/onlinemodel/layout/layout.py index bdd7bed..8588390 100644 --- a/Python_Code/onlinemodel/layout/layout.py +++ b/Python_Code/onlinemodel/layout/layout.py @@ -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: