diff --git a/elettra2test.py b/elettra2test.py index e273be7203ab47bb2ed0b79d2f8a9efc861aa52a..7d64ab0e9666c3685496fa25782f66fe64b5ee3b 100755 --- a/elettra2test.py +++ b/elettra2test.py @@ -2,7 +2,9 @@ import os import at import matplotlib.pylab as mp -lattfile = "~/src/gitlab/dt/machine/lattice/elettra2/srElettra2_9_4_beta.mat" +#import matplotlib.pyplot as mp +#lattfile = "~/src/gitlab/dt/machine/lattice/elettra2/srElettra2_9_4_beta.mat" +lattfile = "~/src/gitlab/dt/machine/lattice/elettra2/srElettra2_9_4_beta_test_digital_twins.mat" #lattfile = "~/esrf_visit/last.mat" lattfile = os.path.expanduser(lattfile) ring=at.load_lattice(lattfile, energy=2.4e9) diff --git a/kickandpoly.py b/kickandpoly.py new file mode 100755 index 0000000000000000000000000000000000000000..753d9a62df54a7db864844962ec5bb26e919ff3a --- /dev/null +++ b/kickandpoly.py @@ -0,0 +1,34 @@ +#!/usr/bin/python3 + +import at + + +#--------- test PolynomA ,PolynomB and kicks of at multipoles --------------- + +QF = at.Quadrupole('QF:', 0.24, 5.518) #create a Quadrupole +print("QF B[i]",QF.PolynomB) +print("QF A[i]",QF.PolynomA) + +SD = at.Sextupole('SD:', 2.0, 0.2) #create a Sextupole +print("SD B[i]",SD.PolynomB) +print("SD A[i]",SD.PolynomA) +SD.PolynomB[1]=0.6 #add quad component - equivalen to settin K +print("SD B[i]",SD.PolynomB,"K=",SD.K, "H=",SD.H) +SD.PolynomB[1]=0.0 +SD.PolynomA[1]=0.6 #add skew quad component , K is not modified!!!! +print("SD A[i]",SD.PolynomA,"K=",SD.K, "H=",SD.H) + +OC = at.Octupole('OC', 0.12, poly_a=[0,0,0],poly_b=[0, 0, 0, 264.232] )#create an Octupole +print("OC B[i]",OC.PolynomB) +print("OC A[i]",OC.PolynomA) +print("OC max order",OC.MaxOrder) +OC.PolynomB[0]=0.5 +print("OC B[i]",OC.PolynomB) + + + + + + + + diff --git a/lattgetinfo.py b/lattgetinfo.py index 71a6e75a777bf8437fdebc893cd88132d96dc111..9849fda8a30a4c6d0868a91440047dc40eef6d10 100755 --- a/lattgetinfo.py +++ b/lattgetinfo.py @@ -3,8 +3,8 @@ import os import LatticeInfo homedir=os.path.expanduser('~') -#lattname = "srElettra2_9_4_beta.mat" -lattname = "srElettra2_high_betax_long_straights_ring.m" +lattname = "srElettra2_9_4_beta.mat" +#lattname = "srElettra2_high_betax_long_straights_ring.m" latticefile = homedir + "/src/gitlab/dt/machine/lattice/elettra2/" + lattname diff --git a/list_ele_elettra2.py b/list_ele_elettra2.py index 4696af303671c4757c143f71b70c9967bf57c87c..8355f265203b0717ef5c042a25100c0b366bcae0 100755 --- a/list_ele_elettra2.py +++ b/list_ele_elettra2.py @@ -7,6 +7,7 @@ import os homedir=os.path.expanduser('~') #lattname = "srElettra2_9_4_beta.mat" lattname = "srElettra2_high_betax_long_straights_ring.m" +#lattname = "srElettra2_9_4_beta_test_digital_twins.mat" latticefile = homedir + "/src/gitlab/dt/machine/lattice/elettra2/" + lattname ring=at.load_lattice(latticefile, energy=2.4e9) refpts = range(len(ring) + 1) diff --git a/list_lattice.py b/list_lattice.py index acaf083c4f140925810524280e8b3b671b7010c9..c1eefe7d6aa44c3998ca4c8a751329bcad0700ac 100755 --- a/list_lattice.py +++ b/list_lattice.py @@ -28,8 +28,8 @@ def lattlister(ring,geo,selector): #return i,ename,length,spos,iscorr,isskew homedir=os.path.expanduser('~') -#lattname = "srElettra2_9_4_beta.mat" -lattname = "srElettra2_high_betax_long_straights_ring.m" +lattname = "srElettra2_9_4_beta.mat" +#lattname = "srElettra2_high_betax_long_straights_ring.m" latticefile = homedir + "/src/gitlab/dt/machine/lattice/elettra2/" + lattname ring=at.load_lattice(latticefile, energy=2.4e9) """ @@ -38,7 +38,7 @@ magnet strenghts ring=at.load_lattice("../../machine/lattice/elettra2/srElettra2_low_beta.mat",energy=2.4e9) """ #ring geometry -geo,radius=ring.get_geometry((0,0,0),True) +geo,radius=ring.get_geometry(centered=True) print('i','\t','ename','\t','length','\t','spos','\t','iscorr','\t','isskew','\t','x','\t','y','\t','angle') diff --git a/shiftrotate.py b/shiftrotate.py index 4bb655188f8a448641b389cc2250d5602b4192dd..fc8ac724d961d2e7416730f312464fff0330dec5 100755 --- a/shiftrotate.py +++ b/shiftrotate.py @@ -17,8 +17,8 @@ def get_elem_shift(elem): dy1=elem.T1[2] #check coherency - if dx1+dx2 != 0.0 or dy1+dy2 !=0.0: - print(elem.FamName,"incoherent T1 and T2 vectors") + #if dx1+dx2 != 0.0 or dy1+dy2 !=0.0: + # print(elem.FamName,"incoherent T1 and T2 vectors") return dx2,dy2 @@ -55,13 +55,20 @@ print("rotations") SD = at.Sextupole('SD', 1.0, 0.2) #create a Quadrupole at.shift_elem(SD,0,0) a,b=get_elem_shift(SD) -#print("dx",a,"dy",b) -tilt = math.asin(0.01) # rotation around s-axis -pitch = math.asin(0.02) # rotation around x-axis +print("initial dx",a,"initial dy",b) +tilt = math.asin(0.00) # rotation around s-axis +pitch = math.asin(0.00) # rotation around x-axis yaw = math.asin(0.03) # rotation around y-axis -at.rotate_elem(SD,tilt,pitch,yaw,relative=False) +at.rotate_elem(SD,tilt,pitch,yaw,relative=True) + a2,b2=get_elem_shift(SD) -print("dx",a2,"dy",b2) +print("rot only dx",a2,"dy",b2) + + + +at.shift_elem(SD,0.3,0.0,relative=True) +a3,b3=get_elem_shift(SD) +print("dx",a3,"dy",b3)