diff --git a/iexcode/instruments/Scienta.py b/iexcode/instruments/Scienta.py index 66ebb4e92b9938b4dd98348afcd250ff28df690c..5234bdfa775adff2586971591372b8ccd74f25cb 100644 --- a/iexcode/instruments/Scienta.py +++ b/iexcode/instruments/Scienta.py @@ -35,12 +35,10 @@ def AllowedEnergyRange(*args): return Table if len(args)==2: - try: - PassEnergy,LensMode=args - KEmin,KEmax=Table[LensMode][PassEnergy] - return KEmin,KEmax - except: - return None + PassEnergy,LensMode=args + KEmin,KEmax=Table[LensMode][PassEnergy] + return KEmin,KEmax + else: print('Not a valid argument') diff --git a/iexcode/instruments/electron_analyzer.py b/iexcode/instruments/electron_analyzer.py index cc3e24923881b84449328ab4380905f12ac16827..4e42e3694a629ff517fe81346876f4082cf9e1c8 100644 --- a/iexcode/instruments/electron_analyzer.py +++ b/iexcode/instruments/electron_analyzer.py @@ -18,7 +18,7 @@ from iexcode.instruments.IEX_BL_config import * from iexcode.instruments.AD_utilities import AD_filepath,AD_prefix from iexcode.instruments.scanRecord import * from iexcode.instruments.conversions_constants import * -from iexcode.instruments.xrays import energy, scanXAS, BL_energy_tables +from iexcode.instruments.xrays import energy, scanXAS, BL_energy_tables,energy_get 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 @@ -362,6 +362,7 @@ def scanEA(EAlist,**kwargs): pass else: print("need to specify BE or KE") + return if EAlist[-1]=='BS': sweeps=EAlist[-2] @@ -370,6 +371,20 @@ def scanEA(EAlist,**kwargs): if kwargs['debug']: print("sweeps: "+str(sweeps)) + + #check KEs within limit + if EAlist[0]=="KE": + KElist = np.array(EAlist[1:-3]) + elif EAlist[0]=="BE": + KElist = energy_get() - np.array(EAlist[1:-3]) + if KElist[0] > KElist[1]: + print_warning_message('EA scans from low to high in kinetic energy') + return + KEmin,KEmax = AllowedEnergyRange(EAlist[-3],'Angular') + if KElist[0] < KEmin: + print_warning_message('kinetic energy belowed minimum allowed energy') + print(AllowedEnergyRange()) + return if EAlist[0]=="BE": if len(EAlist)==5: #Fixed @@ -377,6 +392,7 @@ def scanEA(EAlist,**kwargs): EAlist[1]=caget(pvCalcOut1+'.VAL') arrayP1=list(np.full(sweeps, EAlist[1])) scan_fillin_table(pvCalcOut1+'.PROC',"",kwargs["scanIOC"],kwargs["scan_dim"],arrayP1,1) + scan_positioner_after_set(positioner_after_scan="STAY") EAlist[1]=arrayP1[0] if kwargs['debug']: print('\npvCalcOut1: ',pvCalcOut1) @@ -386,6 +402,7 @@ def scanEA(EAlist,**kwargs): EAlist[1]=caget(pvCalcOut1+'.VAL') arrayP1=list(np.full(sweeps, EAlist[1])) scan_fillin_table(pvCalcOut1+'PROC',"",kwargs["scanIOC"],kwargs["scan_dim"],arrayP1,1) + scan_positioner_after_set(positioner_after_scan="STAY") print('\npvCalcOut1: ',pvCalcOut1) print('Pos1 table:',arrayP1) elif len(EAlist)==7: #Sweep @@ -397,6 +414,7 @@ def scanEA(EAlist,**kwargs): arrayP2=list(np.full(sweeps, EAlist[2])) scan_fillin_table(pvCalcOut1+'.PROC',"",kwargs["scanIOC"],kwargs["scan_dim"],arrayP1,1) scan_fillin_table(pvCalcOut2+'.PROC',"",kwargs["scanIOC"],kwargs["scan_dim"],arrayP2,2) + scan_positioner_after_set(positioner_after_scan="STAY") if kwargs['debug']: print("\npvCalcOut1",pvCalcOut1) print("\npvCalcOut2",pvCalcOut2) @@ -442,6 +460,7 @@ def scanEA(EAlist,**kwargs): EAlog_update() scanEA_reset(**kwargs) scan_after_table_reset(**kwargs) + scan_positioner_after_set(positioner_after_scan="PRIOR") else: return EAparms