453 lines
21 KiB
Python
Executable File
453 lines
21 KiB
Python
Executable File
import os
|
|
from math import *
|
|
import numpy as np
|
|
import sys
|
|
|
|
|
|
Energy = 2.7e9
|
|
HarmNumber = 480
|
|
RFVoltage = 1.44e6
|
|
RFVoltage_3HC = 0.375e6
|
|
DriftPass = "'DriftPass'"
|
|
BendPass = "'BndMPoleSymplectic4Pass'"
|
|
QuadPass = "'StrMPoleSymplectic4Pass'"
|
|
SextPass = "'StrMPoleSymplectic4Pass'"
|
|
# OctPass = "'StrMPoleSymplectic4Pass'"
|
|
OctPass = "'ThinMPolePass'"
|
|
MultipolePass = "'ThinMPolePass'"
|
|
RcavPass = "'RFCavityPass'"
|
|
R3HCPass = "'DriftPass'"
|
|
|
|
class AcceleratorToolbox():
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
def openFile(self,name='SLS2.m'):
|
|
self.fout=open(name,'w')
|
|
|
|
def closeFile(self):
|
|
self.fout.close()
|
|
|
|
def write(self,line):
|
|
line=line+'\n'
|
|
self.fout.write(line)
|
|
|
|
def appendMisalignments(self,transErrors,name,dx,dy,tilt):
|
|
transErrors['name'].append(name)
|
|
transErrors['dx'].append(str(dx))
|
|
transErrors['dy'].append(str(dy))
|
|
transErrors['tilt'].append(str(tilt))
|
|
|
|
|
|
def defineSequence(self,S2,Radiation=0,Aperture=0,RF=0):
|
|
# Input is an instance of OMFacility.Facility
|
|
if Aperture:
|
|
cnow=Aperture['Nominal']
|
|
RingA=[cnow]
|
|
for c in S2.Ring:
|
|
if type(c)==str:
|
|
pass
|
|
elif c.SN[0]=='E':
|
|
RingA.append(c)
|
|
elif cnow!=c.APERTURE:
|
|
cnow=c.APERTURE
|
|
RingA.append(cnow)
|
|
RingA.append(c)
|
|
else:
|
|
RingA.append(c)
|
|
else:
|
|
RingA=S2.Ring
|
|
|
|
d2r=pi/180.0
|
|
|
|
|
|
|
|
Drift={}
|
|
seq=[]
|
|
transErrors = {'name': [], 'dx': [], 'dy': [], 'tilt': []}
|
|
|
|
cir=0
|
|
Iap=1
|
|
|
|
|
|
self.write("function RING = SLS2")
|
|
self.write("RING = {...")
|
|
for index,c in enumerate(RingA):
|
|
|
|
if type(c)==str:
|
|
pass
|
|
elif type(c)==list:
|
|
Name='APERTURE'+str(Iap)
|
|
seq.append(Name)
|
|
Iap=Iap+1
|
|
if c[0]==None:
|
|
xm=0.05
|
|
else:
|
|
xm=c[0]
|
|
if c[1]==None:
|
|
ym=0.05
|
|
else:
|
|
ym=c[1]
|
|
if c[2]=='E' or c[2]=='e':
|
|
ell='1'
|
|
else:
|
|
ell='0'
|
|
if len(c)==4:
|
|
wline=Name.replace('-','_')+' : MAXAMP, X_MAX= '+str(xm) \
|
|
+', Y_MAX= '+str(ym)+', ELLIPTICAL= '+str(ell)+', OPEN_SIDE= '+str(c[3])
|
|
else:
|
|
wline=Name.replace('-','_')+' : MAXAMP, X_MAX= '+str(xm) \
|
|
+', Y_MAX= '+str(ym)+', ELLIPTICAL= '+str(ell)
|
|
self.write(wline)
|
|
elif c.SN=='EMALIGN':
|
|
wline=c.NAME+"atmarker('malign');"
|
|
self.write(wline)
|
|
seq.append(c.NAME)
|
|
elif c.SN=='EWATCH':
|
|
wline="atmarker('WATCH');"
|
|
self.write(wline)
|
|
seq.append(c.NAME)
|
|
elif c.SN=='DSCR' or c.SN=='GMRK' or c.SN=='GSRC' or c.SN=='DICT':
|
|
elemName = c.NAME.replace('-','_')
|
|
typeName = c.TYPE.replace('-','_')
|
|
|
|
wline="atmarker('"+elemName+"','Type','"+typeName+"','SN','"+c.SN+"');..."
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
elif c.SN=='DRIF':
|
|
if c.NAME in Drift.keys():
|
|
Name=c.NAME+'_'+str(Drift[c.NAME])
|
|
Drift[c.NAME]=Drift[c.NAME]+1
|
|
else:
|
|
Name=c.NAME
|
|
Drift[c.NAME]=1
|
|
elemName = Name.replace('-','_')
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline="atdrift('"+elemName+"',"+str(round(c.L,6))+",'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
cir=cir+c.L
|
|
elif c.SN=='RCAV':
|
|
elemName = c.NAME.replace('-','_')
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline="atrfcavity('"+elemName+"',"+str(round(c.L,6))+","+str(RFVoltage)+",500e6,480,"+str(Energy)+",'TimeLag',0,'Type','"+typeName+"','SN','"+c.SN+"'"+");..."
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
cir=cir+c.L
|
|
|
|
elif c.SN=='R3HC':
|
|
elemName = c.NAME.replace('-','_')
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline="atdrift('"+elemName+"',"+str(round(c.L,6))+",'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
cir=cir+c.L
|
|
elif c.SN=='MBEN' or c.SN=='MBCF':
|
|
if c.SN=='MBCF':
|
|
k1=c.K1*(1+c.RGE)
|
|
else:
|
|
k1=0
|
|
|
|
if c.TYPE=='SVBI':
|
|
print(c.K1)
|
|
print(c.NAME)
|
|
print(index)
|
|
|
|
if c.TYPE=='DCSYIN1' or c.TYPE=='DCSYIN2':
|
|
c.NAME = c.NAME.replace('MBEN','MSEP')
|
|
|
|
elemName_E = c.NAME.replace('-','_')+"_E"
|
|
typeName = c.TYPE.replace('-','_')+"_E"
|
|
|
|
wline = "atcorrector('"+elemName_E+"',0,["+str(d2r*c.ANGLE*c.RFE/2)+" 0],'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemName_E)
|
|
|
|
|
|
|
|
if c.NAME in S2.OverlapC:
|
|
elemName = c.NAME.replace('-','_')+"_1" #name of the element
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline="atsbend('"+elemName+"',"+str(round(c.L/2,6))+','+str(d2r*c.ANGLE/2)+","+str(k1)+", 'EntranceAngle',"+str(d2r*c.E1)+", 'ExitAngle',0,'PolynomB',[0 "+str(k1)+" 0 0], 'MaxOrder',4,'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
self.appendMisalignments(transErrors,elemName,c.MAX,c.MAY,-c.MAR)
|
|
seq.append(elemName)
|
|
|
|
oe = S2.OverlapC[c.NAME][0]
|
|
elemNameOE = oe.NAME.replace('-','_')
|
|
typeNameOE = oe.TYPE.replace('-','_')
|
|
wline="atmarker('"+elemNameOE+"','Type','"+typeNameOE+"','SN','"+oe.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemNameOE)
|
|
|
|
|
|
elemName = c.NAME.replace('-','_')+"_2" #name of the element
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline="atsbend('"+elemName+"',"+str(round(c.L/2,6))+','+str(d2r*c.ANGLE/2)+","+str(k1)+", 'EntranceAngle',0, 'ExitAngle',"+str(d2r*c.E2)+",'PolynomB',[0 "+str(k1)+" 0 0], 'MaxOrder',4,'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
self.appendMisalignments(transErrors,elemName,c.MAX,c.MAY,-c.MAR)
|
|
seq.append(elemName)
|
|
|
|
|
|
|
|
else:
|
|
elemName = c.NAME.replace('-','_') #name of the element
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline="atsbend('"+elemName+"',"+str(c.L)+','+str(d2r*c.ANGLE)+","+str(k1)+",'EntranceAngle',"+str(d2r*c.E1)+", 'ExitAngle',"+str(d2r*c.E2)+",'PolynomB',[0 "+str(k1)+" 0 0], 'MaxOrder',4,'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
self.appendMisalignments(transErrors,elemName,c.MAX,c.MAY,-c.MAR)
|
|
seq.append(elemName)
|
|
|
|
|
|
"""
|
|
# Minus sign for c.MAR is to be consistent with
|
|
elemName = c.NAME.replace('-','_') #name of the element
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline=elemName+" = atsbend('"+elemName+"','Length',"+str(round(c.L,6))+',... \n' \
|
|
+" 'BendingAngle'," +str(d2r*c.ANGLE)+", 'EntranceAngle',"+str(d2r*c.E1)+", 'ExitAngle',"+str(d2r*c.E2)+',... \n' \
|
|
+" 'PolynomB',[0,"+str(k1)+",0,0], 'MaxOrder',4,'PassMethod',"+BendPass+",'Type','"+typeName+"','SN','"+c.SN+"');"
|
|
self.write(wline)
|
|
self.appendMisalignments(transErrors,elemName,c.MAX,c.MAY,-c.MAR)
|
|
seq.append(elemName)
|
|
"""
|
|
|
|
|
|
seq.append(elemName_E)
|
|
|
|
cir=cir+c.L
|
|
elif c.SN=='MBSC':
|
|
if hasattr(c,'k1'):
|
|
k1 = c.k1;
|
|
else:
|
|
k1 = 0
|
|
elemName_E = c.NAME.replace('-','_')+"_E"
|
|
typeName = c.TYPE.replace('-','_')+"_E"
|
|
wline = "atcorrector('"+elemName_E+"',0,["+str(d2r*c.TANGLE*c.RFE/2)+" 0],'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(c.NAME.replace('-','_')+'_E')
|
|
|
|
for i in range(0,floor(len(c.L)/2)):
|
|
elemName = c.NAME.replace('-','_')+'_'+str(i) #name of the element
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline="atsbend('"+elemName+"',"+str(c.L[i])+"," +str(d2r*c.ANGLE[i])+","+str(k1)+",'EntranceAngle',"+str(d2r*c.E1[i])+", 'ExitAngle',"+str(d2r*c.E2[i])+",'PolynomB',[0 "+str(k1)+" 0 0], 'MaxOrder',4,'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
self.appendMisalignments(transErrors,elemName,c.MAX[i],c.MAY[i],-c.MAR)
|
|
seq.append(elemName)
|
|
|
|
|
|
oe = S2.OverlapC[c.NAME][0]
|
|
elemNameOE = oe.NAME.replace('-','_')
|
|
typeNameOE = oe.TYPE.replace('-','_')
|
|
wline="atmarker('"+elemNameOE+"','Type','"+typeNameOE+"','SN','"+oe.SN+"'"+",'Energy',"+str(Energy)+");"
|
|
self.write(wline)
|
|
seq.append(elemNameOE)
|
|
|
|
for i in range(floor(len(c.L)/2),len(c.L)):
|
|
elemName = c.NAME.replace('-','_')+'_'+str(i) #name of the element
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline="atsbend('"+elemName+"',"+str(c.L[i])+','+str(d2r*c.ANGLE[i])+","+str(k1)+",'EntranceAngle',"+str(d2r*c.E1[i])+", 'ExitAngle',"+str(d2r*c.E2[i])+",'PolynomB',[0 "+str(k1)+" 0 0], 'MaxOrder',4,'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
self.appendMisalignments(transErrors,elemName,c.MAX[i],c.MAY[i],-c.MAR)
|
|
seq.append(elemName)
|
|
|
|
seq.append(elemName_E)
|
|
cir=cir+c.TL
|
|
elif c.SN=='UIND':
|
|
|
|
elemName = c.NAME.replace('-','_').replace('DRIF','UIND')
|
|
typeName = c.TYPE.replace('-','_')
|
|
|
|
if c.NAME in S2.OverlapC:
|
|
wline1="atdrift('"+elemName+"',"+str(round(c.L/2,6))+",'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline1)
|
|
seq.append(elemName)
|
|
oe = S2.OverlapC[c.NAME][0]
|
|
elemNameOE = oe.NAME.replace('-','_')
|
|
typeNameOE = oe.TYPE.replace('-','_')
|
|
wline="atmarker('"+elemNameOE+"','Type','"+typeNameOE+"','SN','"+oe.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
wline="atdrift('"+elemName+"',"+str(round(c.L/2,6))+",'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemNameOE)
|
|
seq.append(elemName)
|
|
else:
|
|
wline="atdrift('"+elemName+"',"+str(round(c.L,6))+",'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
|
|
cir=cir+c.L
|
|
elif c.SN=='MQUA':
|
|
k1 = c.K1*(1+c.RFE)
|
|
elemName = c.NAME.replace('-','_') #name of the element
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline="atquadrupole('"+elemName+"',"+str(round(c.L,6))+","+str(k1)+",'MaxOrder',4,'PolynomB',[0 "+str(k1)+" 0 0],'Type','"+typeName+"','SN','"+c.SN+"','BDN','"+c.BDN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(c.NAME.replace('-','_'))
|
|
self.appendMisalignments(transErrors,elemName,c.MAX,c.MAY,-c.MAR)
|
|
cir=cir+c.L
|
|
elif c.SN=='MQCO':
|
|
k1 = c.K1*(1+c.RFE)
|
|
elemName = c.NAME.replace('-','_')+'_1'
|
|
typeName = c.TYPE.replace('-','_')+'_1'
|
|
wline="atquadrupole('"+elemName+"',"+str(round(c.L/2,6))+","+str(k1)+",'MaxOrder',4,'PolynomB',[0 "+str(k1)+" 0 0],'Type','"+typeName+"','SN','"+c.SN+"','BDN','"+c.BDN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
self.appendMisalignments(transErrors,elemName,str(c.MAX),str(c.MAY),str(-c.MAR))
|
|
|
|
for oe in S2.OverlapC[c.NAME]:
|
|
elemName = oe.NAME.replace('-','_')
|
|
typeName = oe.TYPE.replace('-','_')
|
|
|
|
if oe.SN=='MQSK':
|
|
tl=-0.78539816339744828-c.MAR
|
|
# Need to check the sign of tilt
|
|
wline = "atmultipole('"+elemName+"',0,[0 0 0 0 0],[0 "+str(oe.K1*(1+oe.RFE))+" 0 0],'PassMethod',"+MultipolePass+",'Type','"+typeName+"','SN','"+oe.SN+"','BDN','"+oe.BDN+"'"+",'Energy',"+str(Energy)+");..."
|
|
elif oe.SN=='MOCT':
|
|
wline = "atmultipole('"+elemName+"',0,[0 0 0 0 0],[0 0 0 "+str(oe.K3L*(1+oe.RFE))+"],'PassMethod',"+MultipolePass+",'MaxOrder',5,'Type','"+typeName+"','SN','"+oe.SN+"','BDN','"+oe.BDN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
self.appendMisalignments(transErrors,elemName,str(c.MAX),str(c.MAY),str(-c.MAR))
|
|
|
|
elemName = c.NAME.replace('-','_')+'_2'
|
|
typeName = c.TYPE.replace('-','_')+'_2'
|
|
wline="atquadrupole('"+elemName+"',"+str(round(c.L/2,6))+","+str(k1)+",'MaxOrder',4,'PolynomB',[0 "+str(k1)+" 0 0],'Type','"+typeName+"','SN','"+c.SN+"','BDN','"+c.BDN+"'"+",'Energy',"+str(Energy)+");..."
|
|
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
self.appendMisalignments(transErrors,elemName,str(c.MAX),str(c.MAY),str(-c.MAR))
|
|
cir=cir+c.L
|
|
elif c.SN=='MSXT':
|
|
elemName = c.NAME.replace('-','_')
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline="atsextupole('"+elemName+"',"+str(round(c.L,6))+","+str(c.K2*(1+c.RFE))+",'MaxOrder',4,'PolynomB',[0 0 "+str(c.K2*(1+c.RFE))+" 0],'Type','"+typeName+"','SN','"+c.SN+"','BDN','"+c.BDN+"'"+",'PSFamily','"+c.FAMILY+"','Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
self.appendMisalignments(transErrors,elemName,str(c.MAX),str(c.MAY),str(-c.MAR))
|
|
cir=cir+c.L
|
|
elif c.SN=='MCOX':
|
|
elemName = c.NAME.replace('-','_')
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline = "atcorrector('"+elemName+"',"+str(round(c.L,6))+",["+str(c.HKICK)+" 0],'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
cir=cir+c.L
|
|
elif c.SN=='MCOY':
|
|
elemName = c.NAME.replace('-','_')
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline = "atcorrector('"+elemName+"',"+str(round(c.L,6))+",[0 "+str(c.VKICK)+"],'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
cir=cir+c.L
|
|
elif c.SN=='MKIK' or c.SN=='MSEP':
|
|
elemName = c.NAME.replace('-','_')
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline = "atcorrector('"+elemName+"',"+str(round(c.L,6))+",[0 0],'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
cir=cir+c.L
|
|
elif c.SN=='DBPM':
|
|
elemName = c.NAME.replace('-','_')
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline = "atdrift('"+elemName+"',"+str(round(c.L,6))+",'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
|
|
cir=cir+c.L
|
|
elif c.SN=='VCOL':
|
|
elemName = c.NAME.replace('-','_')
|
|
typeName = c.TYPE.replace('-','_')
|
|
wline = "atdrift('"+elemName+"',"+str(round(c.L,6))+",'EApertures',[1 1],'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
cir=cir+c.L
|
|
elif c.SN=='NONE':
|
|
if c.NAME == 'ARS03-NONE-0380':
|
|
print(c.NAME)
|
|
print(c.TYPE)
|
|
print(c.L)
|
|
print(c.SN)
|
|
|
|
if c.L:
|
|
if c.NAME in Drift.keys():
|
|
Name=c.NAME+'_'+str(Drift[c.NAME])
|
|
typeName = c.TYPE.replace('-','_')+'_'+str(Drift[c.NAME])
|
|
Drift[c.NAME]=Drift[c.NAME]+1
|
|
else:
|
|
Name=c.NAME
|
|
Drift[c.NAME]=1
|
|
typeName = c.TYPE.replace('-','_')
|
|
|
|
elemName = Name.replace('-','_')
|
|
wline="atdrift('"+elemName+"',"+str(round(c.L,6))+",'Type','"+typeName+"','SN','"+c.SN+"'"+",'Energy',"+str(Energy)+");..."
|
|
self.write(wline)
|
|
seq.append(elemName)
|
|
cir=cir+c.L
|
|
else:
|
|
print ('Element unknown:',c.NAME,c.SN,c.L)
|
|
|
|
|
|
# wline='MAL: malign, on_pass=0, force_modify_matrix=0\n'
|
|
# self.write(wline)
|
|
# wline='W1: WATCH,MODE=parameter,FILENAME=monitor.w1\n'
|
|
# self.write(wline)
|
|
# wline='W2: WATCH,MODE=coordinate,FILENAME=monitor.w2, interval=1\n'
|
|
# self.write(wline)
|
|
|
|
# wline='RF1 : RFCA, L=0.0, FREQ=500e6, VOLT=1.44e6, PHASE=151, T_REFERENCE=0.0\n'
|
|
# self.write(wline)
|
|
# wline='RF3 : RFCA, L=0.0, FREQ=1500e6, VOLT=0.375e6, PHASE=0.0, T_REFERENCE=0.0\n'
|
|
# self.write(wline)
|
|
|
|
# wline = "RF1 = atrfcavity('RF1','Length',0,'Frequency',500e6,'Voltage',"+str(RFVoltage)+",'TimeLag',0.251492);"
|
|
# self.write(wline)
|
|
# seq.append('RF1')
|
|
# wline = "RF3 = atrfcavity('RF3','Length',0,'Frequency',1500e6,'Voltage',"+str(RFVoltage_3HC)+",'TimeLag',0.0);"
|
|
# self.write(wline)
|
|
# seq.append('RF3')
|
|
|
|
# wline = '\n %%%% Setting shifts %%%% \n'
|
|
#for i in range(0,len(transErrors['name'])):
|
|
#wline=wline+transErrors['name'][i]+'=atshiftelem('+transErrors['name'][i]+","+transErrors['dx'][i]+","+transErrors['dy'][i]+");\n"
|
|
#wline = '\n %%%% Setting tilts %%%% \n'
|
|
#for i in range(0,len(transErrors['name'])):
|
|
# wline=wline+transErrors['name'][i]+'=attiltelem('+transErrors['name'][i]+","+transErrors['tilt'][i]+");\n"
|
|
#self.write(wline)
|
|
|
|
#wline = 'RING = {...\n '
|
|
#for i in range(0,len(seq)):
|
|
#wline=wline+seq[i]+", "
|
|
#if i%5==0 and i!=len(seq)-1:
|
|
#wline=wline+'... \n '
|
|
|
|
#wline=wline[0:len(wline)-1]+"}';\n"
|
|
wline = '};\n'
|
|
#wline=wline+'RING = atsetenergy(RING,'+str(Energy)+');\n'
|
|
wline=wline+'RING = atsetRFCavity(RING,'+str(RFVoltage)+",1,"+str(HarmNumber)+",0);\n"
|
|
wline=wline+'RING = atSetRingProperties(RING);'
|
|
self.write(wline)
|
|
|
|
print ('cccccccccccc',cir)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EMALIGN:
|
|
def __init__(self, prop):
|
|
self.SN='EMALIGN'
|
|
self.NAME=prop['Name']
|
|
|
|
class EWATCH:
|
|
def __init__(self, prop):
|
|
self.SN='EWATCH'
|
|
self.NAME=prop['Name']
|
|
self.MODE=prop['Mode']
|
|
self.FILENAME=prop['Filename']
|
|
self.INTERVAL=prop['Interval']
|
|
|
|
|
|
|
|
|