From 95204c839c6f5841bb564ba626b8261b4d2d1a20 Mon Sep 17 00:00:00 2001
From: Claudio Scafuri <claudio.scafuri@elettra.eu>
Date: Tue, 28 Jan 2025 17:42:51 +0100
Subject: [PATCH] pyat 0.6.1, new tests

---
 elettra2test.py      |  4 +++-
 kickandpoly.py       | 34 ++++++++++++++++++++++++++++++++++
 lattgetinfo.py       |  4 ++--
 list_ele_elettra2.py |  1 +
 list_lattice.py      |  6 +++---
 shiftrotate.py       | 21 ++++++++++++++-------
 6 files changed, 57 insertions(+), 13 deletions(-)
 create mode 100755 kickandpoly.py

diff --git a/elettra2test.py b/elettra2test.py
index e273be7..7d64ab0 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 0000000..753d9a6
--- /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 71a6e75..9849fda 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 4696af3..8355f26 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 acaf083..c1eefe7 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 4bb6551..fc8ac72 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)
 
 
 
-- 
GitLab