From be0efb272518e8c6f758ff6981365e29c7107185 Mon Sep 17 00:00:00 2001
From: jmcchesn <jmcchesn@aps.anl.gov>
Date: Wed, 13 Jul 2022 09:57:10 -0500
Subject: [PATCH] fixed circular imports

---
 build/lib/iexcode/init_Kapp.py                |  11 +++++
 build/lib/iexcode/init_staff.py               |   1 +
 build/lib/iexcode/init_xrays.py               |  12 +++++
 build/lib/iexcode/instruments/ARPES.py        |   9 ++--
 build/lib/iexcode/instruments/Kappa.py        |   4 +-
 build/lib/iexcode/instruments/Scienta.py      |   8 +++-
 build/lib/iexcode/instruments/__init__.py     |  42 ------------------
 .../iexcode/instruments/electron_analyzer.py  |  26 +++++++----
 build/lib/iexcode/instruments/xrays.py        |   2 +-
 build/lib/iexcode/macros/__init__.py          |  16 +++++++
 iexcode.egg-info/SOURCES.txt                  |   3 ++
 iexcode/init_ARPES                            |   7 +++
 iexcode/init_Kapp.py                          |  11 +++++
 iexcode/init_staff.py                         |   1 +
 iexcode/init_xrays.py                         |  12 +++++
 iexcode/instruments/ARPES.py                  |   9 ++--
 iexcode/instruments/Kappa.py                  |   4 +-
 iexcode/instruments/Scienta.py                |   8 +++-
 iexcode/instruments/__init__.py               |  42 ------------------
 .../__pycache__/ARPES.cpython-37.pyc          | Bin 22122 -> 22162 bytes
 .../__pycache__/Kappa.cpython-37.pyc          | Bin 30672 -> 30664 bytes
 .../__pycache__/Scienta.cpython-37.pyc        | Bin 16246 -> 16338 bytes
 .../__pycache__/bakeout.cpython-37.pyc        | Bin 4491 -> 4491 bytes
 .../electron_analyzer.cpython-37.pyc          | Bin 22988 -> 23226 bytes
 .../__pycache__/xrays.cpython-37.pyc          | Bin 18094 -> 18080 bytes
 iexcode/instruments/electron_analyzer.py      |  26 +++++++----
 iexcode/instruments/xrays.py                  |   2 +-
 iexcode/macros/__init__.py                    |  16 +++++++
 28 files changed, 152 insertions(+), 120 deletions(-)
 create mode 100644 build/lib/iexcode/init_Kapp.py
 create mode 100644 build/lib/iexcode/init_staff.py
 create mode 100644 build/lib/iexcode/init_xrays.py
 create mode 100644 iexcode/init_ARPES
 create mode 100644 iexcode/init_Kapp.py
 create mode 100644 iexcode/init_staff.py
 create mode 100644 iexcode/init_xrays.py

diff --git a/build/lib/iexcode/init_Kapp.py b/build/lib/iexcode/init_Kapp.py
new file mode 100644
index 0000000..d2e8127
--- /dev/null
+++ b/build/lib/iexcode/init_Kapp.py
@@ -0,0 +1,11 @@
+
+from iexcode.instruments.Kappa import * 
+from iexcode.instruments.Kappa_det import * 
+from iexcode.instruments.Kappa_Euler import * 
+
+from iexcode.instruments.current_amplifiers import * 
+from iexcode.instruments.MPA import * 
+from iexcode.instruments.vortexs29 import * 
+
+
+from iexcode.instruments.spec_stuff import * 
diff --git a/build/lib/iexcode/init_staff.py b/build/lib/iexcode/init_staff.py
new file mode 100644
index 0000000..7ea17bb
--- /dev/null
+++ b/build/lib/iexcode/init_staff.py
@@ -0,0 +1 @@
+from iexcode.instruments.staff import * 
diff --git a/build/lib/iexcode/init_xrays.py b/build/lib/iexcode/init_xrays.py
new file mode 100644
index 0000000..ed42729
--- /dev/null
+++ b/build/lib/iexcode/init_xrays.py
@@ -0,0 +1,12 @@
+from iexcode.instruments.beamline import * 
+from iexcode.instruments.diagnostics import * 
+from iexcode.instruments.FMB_mirrors import * 
+from iexcode.instruments.gate_valves import * 
+from iexcode.instruments.hxp_mirrors import * 
+from iexcode.instruments.IEX_VPU import * 
+from iexcode.instruments.m3r import * 
+from iexcode.instruments.slits import * 
+from iexcode.instruments.resolution import * 
+from iexcode.instruments.storage_ring import * 
+from iexcode.instruments.VLS_PGM import * 
+from iexcode.instruments.xrays import * 
\ No newline at end of file
diff --git a/build/lib/iexcode/instruments/ARPES.py b/build/lib/iexcode/instruments/ARPES.py
index a2337c0..68b161c 100644
--- a/build/lib/iexcode/instruments/ARPES.py
+++ b/build/lib/iexcode/instruments/ARPES.py
@@ -24,8 +24,11 @@ from iexcode.instruments.shutters import branch_shutter_close
 from iexcode.instruments.slits import slit3C_get
 
 from iexcode.instruments.Lakeshore_335 import Lakeshore_reset
-from iexcode.instruments.electron_analyzer import folders_EA,EA
+from iexcode.instruments.electron_analyzer import EA_init_Motors, folders_EA,EA
 
+global BL
+global tey,ca15
+global ARPES_Motors
 
 #############################################################################
 def ARPES_init(set_folders=True,reset=True,**kwargs):
@@ -47,18 +50,17 @@ def ARPES_init(set_folders=True,reset=True,**kwargs):
     ARPES_trigger_dictionary(),ARPES_scan_before_sequence(),ARPES_scan_after_sequence())
 
     #endstation
-    global BL
     BL=Endstation('ARPES',kwargs['scan_ioc'],kwargs['xrays'],kwargs['BL_mode'],mda_scanRecord,
     ARPES_log_header,ARPES_log_entries,ARPES_motor_dictionary)
 
     #EA
     try: 
         EA.get()
+        EA_init_Motors(ARPES_Motors)
     except:
         print("\n\n NOTE: Scienta IOC is not running - start IOC and %run Macros_29id/ScanFunctions_EA.py\n\n")
     
     #global detectors
-    global tey,ca15
     tey = Keithley('c',1)
     ca15 = Keithley('b',15)
 
@@ -75,7 +77,6 @@ def ARPES_init(set_folders=True,reset=True,**kwargs):
         ARPES_reset()
 
     #motors
-    global ARPES_Motors
     physical_motors = ['x','y','z','th','chi','phi']
     psuedo_motors = ['focus']
     ARPES_Motors = Motors('ARPES',ARPES_motor_dictionary(),physical_motors,psuedo_motors)
diff --git a/build/lib/iexcode/instruments/Kappa.py b/build/lib/iexcode/instruments/Kappa.py
index f819d12..dda262f 100644
--- a/build/lib/iexcode/instruments/Kappa.py
+++ b/build/lib/iexcode/instruments/Kappa.py
@@ -282,7 +282,7 @@ def Kappa_reset():
     
     #resetting mono and anyother beamline stuff
     if BL.xrays:
-        JLM="xrays_reset()"
+        xrays_reset()
 
     #reseting the Kappa Lakeshore
 
@@ -324,7 +324,7 @@ def Kappa_get_all(verbose=True):
 
     #beamline info
     if BL.xray:
-        JLM="beamline_info = xrays_get_all()"
+        beamline_info = xrays_get_all()
         #vals.update(beamline_info) 
 
     mesh.get()
diff --git a/build/lib/iexcode/instruments/Scienta.py b/build/lib/iexcode/instruments/Scienta.py
index f493664..e49856e 100644
--- a/build/lib/iexcode/instruments/Scienta.py
+++ b/build/lib/iexcode/instruments/Scienta.py
@@ -80,7 +80,11 @@ class Scienta:
         #Camera Settings
         self.Frames = None
         
-        self.get()
+        pv = PV(self.PHV+"WorkFunction")
+        if pv.connect():
+            self.get()
+        else:
+            print("Scienta is not connected")
         return  
 
     def get(self,q=1):
@@ -88,6 +92,7 @@ class Scienta:
         Gets the current Scienta parameters
         returns the dictionary for q!=1
         """
+
         for key in vars(self):
             if key not in ["PHV","_Pcam","_savePlugin","_statsPlugin","wk","Frames","dtype"]:
                 vars(self)[key]=caget(self.PHV+key+".VAL")
@@ -100,7 +105,6 @@ class Scienta:
         if q !=1:
             for key in vars(self):
                 print(key+" = "+str(vars(self)[key]))
-
         return vars(self)
 
     def counts(self):
diff --git a/build/lib/iexcode/instruments/__init__.py b/build/lib/iexcode/instruments/__init__.py
index e244a3c..e69de29 100644
--- a/build/lib/iexcode/instruments/__init__.py
+++ b/build/lib/iexcode/instruments/__init__.py
@@ -1,42 +0,0 @@
-
-""" from iexcode.instruments.AD_utilites import *
-from iexcode.instruments.ARPES import *
-from iexcode.instruments.bakeout import * 
-from iexcode.instruments.beamline import * 
-from iexcode.instruments.cameras import * 
-from iexcode.instruments.conversions_constants import * 
-from iexcode.instruments.current_amplifiers import * 
-from iexcode.instruments.diagnostics import * 
-from iexcode.instruments.electron_analyzer import * 
-from iexcode.instruments.encoders import * 
-from iexcode.instruments.files_and_folders import * 
-from iexcode.instruments.FMB_mirrors import * 
-from iexcode.instruments.gate_valves import * 
-from iexcode.instruments.hxp_mirrors import * 
-from iexcode.instruments.IEX_endstations import * 
-from iexcode.instruments.IEX_VPU import * 
-from iexcode.instruments.Kappa import * 
-from iexcode.instruments.Kappa_det import * 
-from iexcode.instruments.Kappa_Euler import * 
-from iexcode.instruments.Lakeshore_335 import * 
-from iexcode.instruments.logfile import * 
-from iexcode.instruments.m3r import * 
-from iexcode.instruments.Motors import * 
-from iexcode.instruments.mpa import * 
-from iexcode.instruments.remote_controlers import * 
-from iexcode.instruments.resolution import * 
-from iexcode.instruments.s29_temp_cntl import * 
-from iexcode.instruments.scalers import * 
-from iexcode.instruments.Scienta import * 
-from iexcode.instruments.shutters import * 
-from iexcode.instruments.slits import * 
-from iexcode.instruments.spec_stuff import * 
-from iexcode.instruments.staff import * 
-from iexcode.instruments.storage_ring import * 
-from iexcode.instruments.userCalcs import * 
-from iexcode.instruments.utilities import * 
-from iexcode.instruments.VLS_PGM import * 
-from iexcode.instruments.vortexs29 import * 
-from iexcode.instruments.xrays import * 
-
- """
diff --git a/build/lib/iexcode/instruments/electron_analyzer.py b/build/lib/iexcode/instruments/electron_analyzer.py
index 119d758..3c208d0 100644
--- a/build/lib/iexcode/instruments/electron_analyzer.py
+++ b/build/lib/iexcode/instruments/electron_analyzer.py
@@ -22,13 +22,21 @@ from iexcode.instruments.shutters import branch_shutter_close
 from iexcode.instruments.VLS_PGM import mono_energy_get
 from iexcode.instruments.files_and_folders import get_next_fileNumber
 from iexcode.instruments.logfile import *
-from iexcode.instruments.ARPES import ARPES_Motors
 from iexcode.instruments.Scienta import *
 
 global EA
-EA = Scienta()
+try:
+    print('connecting to Scienta')
+    EA = Scienta()
+except:
+    print("EA is not connected")
 
 ###########################################################################
+def EA_init_Motors(Motors):
+    """
+    Adds Motors to EA object to be used in scanning
+    """
+    EA.Motors = Motors
 
 def EA_ioc_init(**kwargs):
     """
@@ -443,10 +451,10 @@ def scanFM(RoughPositions,thList,EAlist,**kwargs):
     if kwargs['debug']:
         print(x,y,z,th,chi,phi)
     
-    BL.mda.fillin_table(ARPES_Motors._motor_dictionary("th")[1],ARPES_Motors._motor_dictionary("th")[0],th,positioner_num=1)
-    BL.mda.fillin_table(ARPES_Motors._motor_dictionary("x")[1],ARPES_Motors._motor_dictionary("x")[0],x,positioner_num=2)
-    BL.mda.fillin_table(ARPES_Motors._motor_dictionary("y")[1],ARPES_Motors._motor_dictionary("y")[0],y,positioner_num=3)
-    BL.mda.fillin_table(ARPES_Motors._motor_dictionary("z")[1],ARPES_Motors._motor_dictionary("z")[0],z,positioner_num=4)
+    BL.mda.fillin_table(EA.Motors._motor_dictionary("th")[1],EA.Motors._motor_dictionary("th")[0],th,positioner_num=1)
+    BL.mda.fillin_table(EA.Motors._motor_dictionary("x")[1],EA.Motors._motor_dictionary("x")[0],x,positioner_num=2)
+    BL.mda.fillin_table(EA.Motors._motor_dictionary("y")[1],EA.Motors._motor_dictionary("y")[0],y,positioner_num=3)
+    BL.mda.fillin_table(EA.Motors._motor_dictionary("z")[1],EA.Motors._motor_dictionary("z")[0],z,positioner_num=4)
 
     #setting up EA
     EAkwargs={
@@ -518,7 +526,7 @@ def mvth_interp(RoughPositions, thVal,**kwargs):
     x,y,z,th,chi,phi=interpRoughPositions(RoughPositions,thVal,thVal-.1,1,**kwargs)
     Pos=[x[0],y[0],z[0],th[0],chi[0],phi[0]]
     #print("Pos = ",Pos)
-    ARPES_Motors.mvsample(Pos)
+    EA.Motors.mvsample(Pos)
 
 def scanEA_hv(hv_start_stop_step_lists,EAlist=[],**kwargs):    
     """
@@ -615,7 +623,7 @@ def scanEA_motor(EAlist, motor,start,stop,step,mode='absolute',**kwargs):
     scan_dim=2 #hard coded
     kwargs.update({'scan_dim':scan_dim})
 
-    ARPES_Motors.scan(motor,start,stop,step,**kwargs)
+    EA.Motors.scan(motor,start,stop,step,**kwargs)
     
     if kwargs['debug']:
         print("ScanGo scan_dim = ",scan_dim)
@@ -662,7 +670,7 @@ def scanEA_Mesh(EAlist,y_start_stop_step,z_start_stop_step,**kwargs):
     outer_scan_dim=3 #hard coded 
     inner_loop_list = y_start_stop_step.insert(0,"y")
     outer_loop_list = z_start_stop_step.insert(0,"z")
-    ARPES_Motors.scan_2D(inner_loop_list,outer_loop_list,outer_scan_dim,**kwargs)
+    EA.Motors.scan_2D(inner_loop_list,outer_loop_list,outer_scan_dim,**kwargs)
     
     if kwargs['debug']:
         print("ScanGo scan_dim = ",outer_scan_dim)
diff --git a/build/lib/iexcode/instruments/xrays.py b/build/lib/iexcode/instruments/xrays.py
index b4a4c18..23b2ddc 100644
--- a/build/lib/iexcode/instruments/xrays.py
+++ b/build/lib/iexcode/instruments/xrays.py
@@ -20,7 +20,7 @@ from iexcode.instruments.utilities import print_warning_message,make_table, take
 from iexcode.instruments.current_amplifiers import ca_average
 from iexcode.instruments.beamline import endstation_cams_enable
 
-from iexcode.instruments.MPA import mpa_HV_on,mpa_HV_off
+from iexcode.instruments.MPA import MPA
 
 
 ##############################################################################################################
diff --git a/build/lib/iexcode/macros/__init__.py b/build/lib/iexcode/macros/__init__.py
index 8b13789..d2a66a1 100644
--- a/build/lib/iexcode/macros/__init__.py
+++ b/build/lib/iexcode/macros/__init__.py
@@ -1 +1,17 @@
 
+from iexcode.instruments.AD_utilities import *
+from iexcode.instruments.bakeout import * 
+from iexcode.instruments.cameras import * 
+from iexcode.instruments.conversions_constants import * 
+from iexcode.instruments.encoders import * 
+from iexcode.instruments.files_and_folders import * 
+from iexcode.instruments.IEX_endstations import * 
+from iexcode.instruments.logfile import * 
+from iexcode.instruments.Motors import * 
+from iexcode.instruments.remote_controlers import * 
+from iexcode.instruments.s29_temp_cntl import * 
+from iexcode.instruments.scalers import * 
+from iexcode.instruments.userCalcs import * 
+from iexcode.instruments.utilities import * 
+
+
diff --git a/iexcode.egg-info/SOURCES.txt b/iexcode.egg-info/SOURCES.txt
index 4b38e09..ace7681 100644
--- a/iexcode.egg-info/SOURCES.txt
+++ b/iexcode.egg-info/SOURCES.txt
@@ -1,6 +1,9 @@
 README.md
 setup.py
 iexcode/__init__.py
+iexcode/init_Kapp.py
+iexcode/init_staff.py
+iexcode/init_xrays.py
 iexcode.egg-info/PKG-INFO
 iexcode.egg-info/SOURCES.txt
 iexcode.egg-info/dependency_links.txt
diff --git a/iexcode/init_ARPES b/iexcode/init_ARPES
new file mode 100644
index 0000000..060e724
--- /dev/null
+++ b/iexcode/init_ARPES
@@ -0,0 +1,7 @@
+from iexcode.instruments.ARPES import *
+from iexcode.instruments.electron_analyzer import * 
+#from iexcode.instruments.Scienta import * 
+
+
+from iexcode.instruments.current_amplifiers import * 
+from iexcode.instruments.Lakeshore_335 import * 
diff --git a/iexcode/init_Kapp.py b/iexcode/init_Kapp.py
new file mode 100644
index 0000000..d2e8127
--- /dev/null
+++ b/iexcode/init_Kapp.py
@@ -0,0 +1,11 @@
+
+from iexcode.instruments.Kappa import * 
+from iexcode.instruments.Kappa_det import * 
+from iexcode.instruments.Kappa_Euler import * 
+
+from iexcode.instruments.current_amplifiers import * 
+from iexcode.instruments.MPA import * 
+from iexcode.instruments.vortexs29 import * 
+
+
+from iexcode.instruments.spec_stuff import * 
diff --git a/iexcode/init_staff.py b/iexcode/init_staff.py
new file mode 100644
index 0000000..7ea17bb
--- /dev/null
+++ b/iexcode/init_staff.py
@@ -0,0 +1 @@
+from iexcode.instruments.staff import * 
diff --git a/iexcode/init_xrays.py b/iexcode/init_xrays.py
new file mode 100644
index 0000000..ed42729
--- /dev/null
+++ b/iexcode/init_xrays.py
@@ -0,0 +1,12 @@
+from iexcode.instruments.beamline import * 
+from iexcode.instruments.diagnostics import * 
+from iexcode.instruments.FMB_mirrors import * 
+from iexcode.instruments.gate_valves import * 
+from iexcode.instruments.hxp_mirrors import * 
+from iexcode.instruments.IEX_VPU import * 
+from iexcode.instruments.m3r import * 
+from iexcode.instruments.slits import * 
+from iexcode.instruments.resolution import * 
+from iexcode.instruments.storage_ring import * 
+from iexcode.instruments.VLS_PGM import * 
+from iexcode.instruments.xrays import * 
\ No newline at end of file
diff --git a/iexcode/instruments/ARPES.py b/iexcode/instruments/ARPES.py
index a2337c0..68b161c 100644
--- a/iexcode/instruments/ARPES.py
+++ b/iexcode/instruments/ARPES.py
@@ -24,8 +24,11 @@ from iexcode.instruments.shutters import branch_shutter_close
 from iexcode.instruments.slits import slit3C_get
 
 from iexcode.instruments.Lakeshore_335 import Lakeshore_reset
-from iexcode.instruments.electron_analyzer import folders_EA,EA
+from iexcode.instruments.electron_analyzer import EA_init_Motors, folders_EA,EA
 
+global BL
+global tey,ca15
+global ARPES_Motors
 
 #############################################################################
 def ARPES_init(set_folders=True,reset=True,**kwargs):
@@ -47,18 +50,17 @@ def ARPES_init(set_folders=True,reset=True,**kwargs):
     ARPES_trigger_dictionary(),ARPES_scan_before_sequence(),ARPES_scan_after_sequence())
 
     #endstation
-    global BL
     BL=Endstation('ARPES',kwargs['scan_ioc'],kwargs['xrays'],kwargs['BL_mode'],mda_scanRecord,
     ARPES_log_header,ARPES_log_entries,ARPES_motor_dictionary)
 
     #EA
     try: 
         EA.get()
+        EA_init_Motors(ARPES_Motors)
     except:
         print("\n\n NOTE: Scienta IOC is not running - start IOC and %run Macros_29id/ScanFunctions_EA.py\n\n")
     
     #global detectors
-    global tey,ca15
     tey = Keithley('c',1)
     ca15 = Keithley('b',15)
 
@@ -75,7 +77,6 @@ def ARPES_init(set_folders=True,reset=True,**kwargs):
         ARPES_reset()
 
     #motors
-    global ARPES_Motors
     physical_motors = ['x','y','z','th','chi','phi']
     psuedo_motors = ['focus']
     ARPES_Motors = Motors('ARPES',ARPES_motor_dictionary(),physical_motors,psuedo_motors)
diff --git a/iexcode/instruments/Kappa.py b/iexcode/instruments/Kappa.py
index f819d12..dda262f 100644
--- a/iexcode/instruments/Kappa.py
+++ b/iexcode/instruments/Kappa.py
@@ -282,7 +282,7 @@ def Kappa_reset():
     
     #resetting mono and anyother beamline stuff
     if BL.xrays:
-        JLM="xrays_reset()"
+        xrays_reset()
 
     #reseting the Kappa Lakeshore
 
@@ -324,7 +324,7 @@ def Kappa_get_all(verbose=True):
 
     #beamline info
     if BL.xray:
-        JLM="beamline_info = xrays_get_all()"
+        beamline_info = xrays_get_all()
         #vals.update(beamline_info) 
 
     mesh.get()
diff --git a/iexcode/instruments/Scienta.py b/iexcode/instruments/Scienta.py
index f493664..e49856e 100644
--- a/iexcode/instruments/Scienta.py
+++ b/iexcode/instruments/Scienta.py
@@ -80,7 +80,11 @@ class Scienta:
         #Camera Settings
         self.Frames = None
         
-        self.get()
+        pv = PV(self.PHV+"WorkFunction")
+        if pv.connect():
+            self.get()
+        else:
+            print("Scienta is not connected")
         return  
 
     def get(self,q=1):
@@ -88,6 +92,7 @@ class Scienta:
         Gets the current Scienta parameters
         returns the dictionary for q!=1
         """
+
         for key in vars(self):
             if key not in ["PHV","_Pcam","_savePlugin","_statsPlugin","wk","Frames","dtype"]:
                 vars(self)[key]=caget(self.PHV+key+".VAL")
@@ -100,7 +105,6 @@ class Scienta:
         if q !=1:
             for key in vars(self):
                 print(key+" = "+str(vars(self)[key]))
-
         return vars(self)
 
     def counts(self):
diff --git a/iexcode/instruments/__init__.py b/iexcode/instruments/__init__.py
index e244a3c..e69de29 100644
--- a/iexcode/instruments/__init__.py
+++ b/iexcode/instruments/__init__.py
@@ -1,42 +0,0 @@
-
-""" from iexcode.instruments.AD_utilites import *
-from iexcode.instruments.ARPES import *
-from iexcode.instruments.bakeout import * 
-from iexcode.instruments.beamline import * 
-from iexcode.instruments.cameras import * 
-from iexcode.instruments.conversions_constants import * 
-from iexcode.instruments.current_amplifiers import * 
-from iexcode.instruments.diagnostics import * 
-from iexcode.instruments.electron_analyzer import * 
-from iexcode.instruments.encoders import * 
-from iexcode.instruments.files_and_folders import * 
-from iexcode.instruments.FMB_mirrors import * 
-from iexcode.instruments.gate_valves import * 
-from iexcode.instruments.hxp_mirrors import * 
-from iexcode.instruments.IEX_endstations import * 
-from iexcode.instruments.IEX_VPU import * 
-from iexcode.instruments.Kappa import * 
-from iexcode.instruments.Kappa_det import * 
-from iexcode.instruments.Kappa_Euler import * 
-from iexcode.instruments.Lakeshore_335 import * 
-from iexcode.instruments.logfile import * 
-from iexcode.instruments.m3r import * 
-from iexcode.instruments.Motors import * 
-from iexcode.instruments.mpa import * 
-from iexcode.instruments.remote_controlers import * 
-from iexcode.instruments.resolution import * 
-from iexcode.instruments.s29_temp_cntl import * 
-from iexcode.instruments.scalers import * 
-from iexcode.instruments.Scienta import * 
-from iexcode.instruments.shutters import * 
-from iexcode.instruments.slits import * 
-from iexcode.instruments.spec_stuff import * 
-from iexcode.instruments.staff import * 
-from iexcode.instruments.storage_ring import * 
-from iexcode.instruments.userCalcs import * 
-from iexcode.instruments.utilities import * 
-from iexcode.instruments.VLS_PGM import * 
-from iexcode.instruments.vortexs29 import * 
-from iexcode.instruments.xrays import * 
-
- """
diff --git a/iexcode/instruments/__pycache__/ARPES.cpython-37.pyc b/iexcode/instruments/__pycache__/ARPES.cpython-37.pyc
index 638823899b8a5742d22cc711aa7fbd24ab3aa5c6..75597a47c882b71d008e0bc4b04a61212dbc3b03 100644
GIT binary patch
delta 5802
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

delta 5705
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
Iy<^{h0k^aiYXATM

diff --git a/iexcode/instruments/__pycache__/Kappa.cpython-37.pyc b/iexcode/instruments/__pycache__/Kappa.cpython-37.pyc
index 6a49022d4993b64ef4ab43a6b7172ca1fad232be..4cdb02de5338be6e406d459d6ab54bc1ffec6a31 100644
GIT binary patch
delta 8009
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

delta 8149
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
X2oedB2*`DXtLY|y=GgH1<U9Wlwewub

diff --git a/iexcode/instruments/__pycache__/Scienta.cpython-37.pyc b/iexcode/instruments/__pycache__/Scienta.cpython-37.pyc
index 9008e02435a9fc2c2c5df84e805f720754feb2a6..3749ba4d74f6697e31add388485ca2ac10d6c38c 100644
GIT binary patch
delta 3616
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

delta 3684
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
H@t*$xc{UC9

diff --git a/iexcode/instruments/__pycache__/bakeout.cpython-37.pyc b/iexcode/instruments/__pycache__/bakeout.cpython-37.pyc
index ed7fa33afb66085ab5615af80990bfae05fdd2fe..f66bfe8286efa29bc098861333f411d46e5eddd0 100644
GIT binary patch
delta 251
zcmeBH?pEe<;^pOH0D@h&H*zJgFy7jn&7#D}cx!SW>jg%g$?<H{8TB@QXFJQpD6sh`
zCnGbX<mTf%N{mtwKrKa)AR-DxM1zPJ5D`0>nJ-=dU3zj6pShj@NM0XA7=Q>v5FrdA
zj6j4jh%f;WrXa#>@^!w`98y50CTEe{<W>9zO7S4^1Q3x3ByKUL6zPCCU_uwflAipB
Y|0tvM<U<18QhHzkxIB`|$?1YB0C4m)1ONa4

delta 238
zcmeBH?pEe<;^pOH0D|ZB8@Uo#7^604vnVk#MosQxy}+n7Ii77gqt52<Y-gDm`8OZs
zWMpQP*nFHviIFo5sHG?zNK8)T6Pe7$7b5@{DT)BeMNTf_GuPt>F?B(N9*EEf5kers
z07Mvq2qO?-3?fV>U*|i`Aqiw^au&%<Ud3;q6bllM0}=5+;ud2{krs#pCbU5;smXu%
Yk1|S4J|xgBr2`g#%Ok0roGz#W0OX4>WB>pF

diff --git a/iexcode/instruments/__pycache__/electron_analyzer.cpython-37.pyc b/iexcode/instruments/__pycache__/electron_analyzer.cpython-37.pyc
index 3ebdc4fd88753351e22ad01cdee9eb50dd7c3314..f9ca29030ddab11737767a189ff852583fe69d2c 100644
GIT binary patch
delta 5333
zcma)Adu$ZP8Q<A^`0i|<jj@f-Hs*j}vw#g4+dOQr&v3@z2L!udmL`|=&HC=_du4WQ
zuyd(tp;bZ>5;AG?B7sC{BBZEMbV}N$RhvJes*#dZYSpUR{LxpU2(?10R8^6xsQtcK
z<Hv<Iz0>_>b{^k+^ZOn%dmrS<J8zMu-qKQ^1RwWrKN^2}N|OG954S&VsPw?k_{Wtd
zYu=mOG%C$j=#A8Wfe=Y=x*%zrPf6)YBH<U>%dq{ll$OUNT25D8lvIUQ(A7|Gp_Q}>
z%B}P$T|;Xw5_KC5&{}9|rggL)$`-noHpJu!Lf6qC^lzu@=>}-uK{wL7pxil6H_=9@
zw9+QJ8OmK$p<AGAqg&}VDBEc>ZGp0bZl^n-+#QoZ*iPCC!uHSs+D6-<wwDgl4!Rp^
z`{)qeL-#_hlkTIPFr$lh(fv^Frw3>^lm}=J4MEvWd+EW8>m{{^9-?7r2+=-z7|LGS
zPme%(kUB>sWthwIU+3qlqM3ABkD7^eENEteBhiGOHnq9c;ZQJP1k)KaxG+GcQL?}^
zmNNVfBH3t<oMcK7LJ5eK=l1%7@Ci|B1cx$ah8ZXq#AU`OVI6!J*MrlBPJ@Z`=AaSP
z(rH*+Od3{XOAd!Dw>?oIYz;`iA+Z|%spr%>e>fCLq!VVu?%s&YqaKoz)dJ?fkf&TO
zRt;62^rSYaa(2d&2g0ldT5JeF%_>GQnWzw@@FU)*TM7pFV!AmJ9x;-z6ihIj021*K
zwgXC5o%j1n9i)NRmp<UWOSJG8O4kyF|D?3NZwoZ2p3tFeayphsvkrWe>4fE)$ZBR>
z^-Uy_`tWpWTxW%9`6e<+sxu=J4n=u~e}wGKU-ElM#|9MPP3mbQlFCrs@*-uT%9^3e
zavNuLJ!`1$38tlVgQ0a;1OH{&f%Qm*<vXq!MmVjr*epZJSSP}6gl67U-q5M~lbIOm
z6`9Ub&D1TqcaUwveg!~rsU=1hEXOopY$Bujz(Lq-B$+Twm7g!KYbao^6zBzk3&Nh^
zKQ7-&4)RaSZ;kH<ah3#DJ%n-{YU%BDvn&BJd!SXUtH^90){)CXmP$}`T-Si9aOh1K
zU|`rw#EJIl%ePn5$Y7e`$`+#X2P<pKaSP0kfMl@E{I$xd;$<51wN(M~Hs4*PkdeGr
z^{QOf0OQmms+*%M5o7(lx~8F0%-snceQW@5PHq`hd4El7R~Vi~6=HccBVw4ajo2{k
zZwy+MVrDxB)P)-??awA(;cwTpR1QJ6S~9LrWSAb&CQR^)E&TJEee0I#2tzD?1kD}}
zp;9rO{hHq$*hM1wZwKn-;v={OYQo0&>vg+f=bzN|Y!s`D?e~Z-gsli-GaXP<`Qdt{
zVH37B0w`|Pl{IIxx=s8^Y~RB#*H>4r)P<dao`3Nl)wh!~{8s%J#cOfo34~$(&$W-k
z`rm12TEB9VRUYXLw+@6OhHg%04{FKi2L4gQIzsuahO_gdI2nm&rvZi)m(3kUpG_Mw
zYOTs<jD(rUfG-=7Xj0c0aD7K7vAK#c9ah@~0bx6dqeS)-HUXj*QyF@ON6LS)?n$@X
zR)Xgm18xi~7Uj=3HjsM$PGb{U$N${eO2WLV=@RMZ*PG(x6!&g!gRLIeyl?&h4qp#o
zx%)&Af(MIG%RpP~xo7cnqnq6aPoOdO3@f$v7JJ}fDcEe!7{@k>fa+OJ3^hwmXI1CK
zbTTQt%PN6@O(xP2QyWj#>P#@D!)QnYqQkcG*ZC@?D$s<Y7R_wQu?#ziO%uFZ2^6CT
z+AMbQsM1`bI!=ZLRmX|mlk6UTRjJ){FAT7X!lA6jQbu7sx^1dE`Nzuhbu%zB>Hxq`
z3H*xShXG?e#IJ10R7@6K_fYRkgn9y!>BcAS-&%V>G#4*#rubA8kaA8cQ{Q7wBAJd!
z=cLP?L`#;B<@au_Jt0K+mp4;<LJ@9SW{aRs>Y?RV<p+JHHwQ;|&UcwSSe$cES3sif
zDftP)E}C+#7_SAUJO7KV8|6mf6aBCQW=DS<s-p`j7OIwP#uadavX<)kqxekb7)B%5
zA4f7VJ&m<R7h&iV%l%_m@e5b5Dj^B#EPEm|9g81d@N`4u;H4N~426jZ#-mYP1qT6~
zu@Rc!*IK;uXaFY6ZD7r|GSrk3%fC{t>Newp;8$$P{O54WEW#YZSpdrsjVCNe7Qhn@
zO`X+P%wW^lTM*sC4f^DvH+jqU>e_8Ye4R4!$R!Rxq~=EACvL*d=kMMAqyq^1d+TaH
z5(eSW3&k+2=M}rowc(nmStOcCs;(3k!Zj^2VUbkfq7V-0=okEFyY{FecL+O)WH^bU
z?F0<xV}_YJW$26Seq6w%F{aH5W>vSwv~*0j94YM_8-!lVp^Y1GTqiS{sg$rBKi;;s
zOC%Xoj$J?~VCq3^`v$^FR@ej3_A$TF)?A0RsJN>@#RtE|$N(<djyWgg>ki)AeraB8
z1ds4x#VO`5Gqxu+V`!;tQdfK|2SZes89%An3>E4mlwDLzb$~+^XlE6tW`Jqi>AavD
zCP}X(xi*l^GJ7b0tm9kGd9_HJ(U}(0hlN9r+F>vU&VWg2Ur;3N72Yn4ApBljME<+q
zE2VY@6i1YB+zQweTZK@L0A60d;LSbwJcc0r8dEqkd9pKDzU031*f`Cvc5bL$X$Jeo
z1h<m-%xeDo&h6x3?&%t6Ku@=vc%_2#yJX?S5YeQ#*$}_KYt8mYP^7SZfke;3@YzA+
zP1u#NC-@J$LMKJ+;6!lkN3j55DCRMQ%LtDne5L5QW6MNe;luj_<Xs-$e^{P$@i+Fb
z3B*k|_2#@6WP&M<KnjzmWcE|jk^jT~$K{Q7qOy|~`qUk4#IN+!EFE26%1bN;(}r(b
z2@Pbq?F-_PON!f&ouWk6>48zp?6j1Be1ZfBY0Os3xR@^>!!{yH5iYcncERTe(t<mZ
zR+W&Fg%sl?ez{uq5T9HkH<AkCmc`h`vk2T;a=}lWMejl-=eRCWLS_D1sBhb(D_4~B
z<lGaEoZ~Vie>f5x0f}XS;o_WIFzi5v1-ol{KbM>TC%Z>MzI{a4$@D9D20y{Q7BHPi
z8#*(Wm{yC><sz+z{vWozHruOa;ZCYC6OjKVTz8M~<VA*6e`Xra8*#6M^CP8}CE!hv
z!QDNRwQu)j_JGBPFC~zLC>YX>_&guzt1Yh-Ht>KAAl*CIQ~Bw>TLdmlw11}$!WquX
zvs3JTeyzU>UYFkL@2y^GV9OPsX`PzO^U@;$axLF<<Qyr(d=k4@dhCs-^gnjPd(97y
zc8{Yd_FV+b=j>^OXAnd#*$p+t!=A;4=Kw5{W>@jyMT8d+o(E7N_S2cdJ-MdlTH`bC
z@nZvZ<YhiJ@R?gAv<5ylc<9I-*0o&X{3u+$c-iuDdMDi8T9@hY6905CxUXRErN{9t
zC~{a!rL;);cj)Gr5G6P_{iK>yk{T%eaFViD^W8(={4z7Y8tyxD2MyWxaL0n4VyrE4
zWI6G&Z@J(;p48c^(5I9ysjWKVGdmG(E6%gW+LTvN!uJshwD&L9K0fm&{^7B9a)UdL
zKQe^DI_C^hJqA`;G8n3*IyEDaR*RTMTcLkRH=(amWUGVLvWRApaaPAaK3>~gu(o^Z
z9M1k6DZ^W*M0`LLWCMIBd_BM6?mjXvtat?a*c8A`9LBzewIG1vwO>BOAQ8S|<RlKl
z;VcPo(}T4Xz`~8*)nm6Kt2Z|wbl?b_75nf5{8aad@i+Yv|LnvXc!~J;i6Ii?LnA*A
zqZQzU$7!lZ{L=vcIH+EL$S7Rtb+#R46>PK=UT8AOX?z8Oe+eW9zk9Tiyq`Ze`Zsc)
zT4W|tIz%kKfR>_kVmW5uc2FS0gG=Co6>w3vkFGNIffz5c4a~k|KP@i~sr<c@?K|-$
zLiOOE1h^POMj(vfj}7L9D)S*A9jYrmoyyKasBbw{w_0`S*+kS3T8UR0bt6ANR>_m6
z%4D@cRIi+RMOHV7>cChvUp-b`wD9Kue{pQ>yl@P)XyM-}J1f@WVl4<e5cVR71E&vb
zBM9QH=nU4x+myIA%;4jB1iX{6hY%h{cmm-H!lMXJAzVXvS?UJF_+U2>UPpKz0cl&t
quV6X=ZI-7C?iJHX{Qw?1#yHQM-sJZ<;5rOG3E}MUxcPIZTmJ(n*}$0q

delta 5155
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

diff --git a/iexcode/instruments/__pycache__/xrays.cpython-37.pyc b/iexcode/instruments/__pycache__/xrays.cpython-37.pyc
index 914a5f624aecb4e6115c86b8777ed70d57dd766e..39194f37bc4eab31c1f8b35004e0612b2b371888 100644
GIT binary patch
delta 3525
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

delta 3562
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
LVG<PT+{FI@9cV+v

diff --git a/iexcode/instruments/electron_analyzer.py b/iexcode/instruments/electron_analyzer.py
index 119d758..3c208d0 100644
--- a/iexcode/instruments/electron_analyzer.py
+++ b/iexcode/instruments/electron_analyzer.py
@@ -22,13 +22,21 @@ from iexcode.instruments.shutters import branch_shutter_close
 from iexcode.instruments.VLS_PGM import mono_energy_get
 from iexcode.instruments.files_and_folders import get_next_fileNumber
 from iexcode.instruments.logfile import *
-from iexcode.instruments.ARPES import ARPES_Motors
 from iexcode.instruments.Scienta import *
 
 global EA
-EA = Scienta()
+try:
+    print('connecting to Scienta')
+    EA = Scienta()
+except:
+    print("EA is not connected")
 
 ###########################################################################
+def EA_init_Motors(Motors):
+    """
+    Adds Motors to EA object to be used in scanning
+    """
+    EA.Motors = Motors
 
 def EA_ioc_init(**kwargs):
     """
@@ -443,10 +451,10 @@ def scanFM(RoughPositions,thList,EAlist,**kwargs):
     if kwargs['debug']:
         print(x,y,z,th,chi,phi)
     
-    BL.mda.fillin_table(ARPES_Motors._motor_dictionary("th")[1],ARPES_Motors._motor_dictionary("th")[0],th,positioner_num=1)
-    BL.mda.fillin_table(ARPES_Motors._motor_dictionary("x")[1],ARPES_Motors._motor_dictionary("x")[0],x,positioner_num=2)
-    BL.mda.fillin_table(ARPES_Motors._motor_dictionary("y")[1],ARPES_Motors._motor_dictionary("y")[0],y,positioner_num=3)
-    BL.mda.fillin_table(ARPES_Motors._motor_dictionary("z")[1],ARPES_Motors._motor_dictionary("z")[0],z,positioner_num=4)
+    BL.mda.fillin_table(EA.Motors._motor_dictionary("th")[1],EA.Motors._motor_dictionary("th")[0],th,positioner_num=1)
+    BL.mda.fillin_table(EA.Motors._motor_dictionary("x")[1],EA.Motors._motor_dictionary("x")[0],x,positioner_num=2)
+    BL.mda.fillin_table(EA.Motors._motor_dictionary("y")[1],EA.Motors._motor_dictionary("y")[0],y,positioner_num=3)
+    BL.mda.fillin_table(EA.Motors._motor_dictionary("z")[1],EA.Motors._motor_dictionary("z")[0],z,positioner_num=4)
 
     #setting up EA
     EAkwargs={
@@ -518,7 +526,7 @@ def mvth_interp(RoughPositions, thVal,**kwargs):
     x,y,z,th,chi,phi=interpRoughPositions(RoughPositions,thVal,thVal-.1,1,**kwargs)
     Pos=[x[0],y[0],z[0],th[0],chi[0],phi[0]]
     #print("Pos = ",Pos)
-    ARPES_Motors.mvsample(Pos)
+    EA.Motors.mvsample(Pos)
 
 def scanEA_hv(hv_start_stop_step_lists,EAlist=[],**kwargs):    
     """
@@ -615,7 +623,7 @@ def scanEA_motor(EAlist, motor,start,stop,step,mode='absolute',**kwargs):
     scan_dim=2 #hard coded
     kwargs.update({'scan_dim':scan_dim})
 
-    ARPES_Motors.scan(motor,start,stop,step,**kwargs)
+    EA.Motors.scan(motor,start,stop,step,**kwargs)
     
     if kwargs['debug']:
         print("ScanGo scan_dim = ",scan_dim)
@@ -662,7 +670,7 @@ def scanEA_Mesh(EAlist,y_start_stop_step,z_start_stop_step,**kwargs):
     outer_scan_dim=3 #hard coded 
     inner_loop_list = y_start_stop_step.insert(0,"y")
     outer_loop_list = z_start_stop_step.insert(0,"z")
-    ARPES_Motors.scan_2D(inner_loop_list,outer_loop_list,outer_scan_dim,**kwargs)
+    EA.Motors.scan_2D(inner_loop_list,outer_loop_list,outer_scan_dim,**kwargs)
     
     if kwargs['debug']:
         print("ScanGo scan_dim = ",outer_scan_dim)
diff --git a/iexcode/instruments/xrays.py b/iexcode/instruments/xrays.py
index b4a4c18..23b2ddc 100644
--- a/iexcode/instruments/xrays.py
+++ b/iexcode/instruments/xrays.py
@@ -20,7 +20,7 @@ from iexcode.instruments.utilities import print_warning_message,make_table, take
 from iexcode.instruments.current_amplifiers import ca_average
 from iexcode.instruments.beamline import endstation_cams_enable
 
-from iexcode.instruments.MPA import mpa_HV_on,mpa_HV_off
+from iexcode.instruments.MPA import MPA
 
 
 ##############################################################################################################
diff --git a/iexcode/macros/__init__.py b/iexcode/macros/__init__.py
index 8b13789..d2a66a1 100644
--- a/iexcode/macros/__init__.py
+++ b/iexcode/macros/__init__.py
@@ -1 +1,17 @@
 
+from iexcode.instruments.AD_utilities import *
+from iexcode.instruments.bakeout import * 
+from iexcode.instruments.cameras import * 
+from iexcode.instruments.conversions_constants import * 
+from iexcode.instruments.encoders import * 
+from iexcode.instruments.files_and_folders import * 
+from iexcode.instruments.IEX_endstations import * 
+from iexcode.instruments.logfile import * 
+from iexcode.instruments.Motors import * 
+from iexcode.instruments.remote_controlers import * 
+from iexcode.instruments.s29_temp_cntl import * 
+from iexcode.instruments.scalers import * 
+from iexcode.instruments.userCalcs import * 
+from iexcode.instruments.utilities import * 
+
+
-- 
GitLab