diff --git a/iexcode/instruments/electron_analyzer.py b/iexcode/instruments/electron_analyzer.py index 1573d45ef5f3090cd334db684d14024215bd200f..4fd043c958f328731e0ad0638b79f85bbc8610ac 100644 --- a/iexcode/instruments/electron_analyzer.py +++ b/iexcode/instruments/electron_analyzer.py @@ -359,74 +359,54 @@ def scanEA(EAlist,**kwargs): kwargs.setdefault('execute',True) kwargs.setdefault("debug",False) - if EAlist[0]=="KE" or EAlist[0]=="BE": + #checking parameters - BE/KE + if EAlist[0].upper()=="KE" or EAlist[0].upper()=="BE": pass else: print("need to specify BE or KE") return - if EAlist[-1]=='BS': - sweeps=EAlist[-2] + #getting number of sweeps + if type(EAlist[-1])==str: + if EAlist[-1].upper() == 'BS': + sweeps=EAlist[-2] + EAlist[-1]='BS' else: - sweeps=EAlist[-1] - + sweeps=EAlist[-1] if kwargs['debug']: print("sweeps: "+str(sweeps)) - #check KEs within limit + #convert BE to KE and check KEs within limits if EAlist[0]=="KE": KElist = np.array(EAlist[1:-3]) elif EAlist[0]=="BE": KElist = energy_get() - np.array(EAlist[1:-3]) + if type(EAlist[-1]) == str: + KElist = KElist[0:-1] + if kwargs['debug']: + print("KElist: "+str(KElist)) + #swept mode range check if len(KElist)>2: - if KElist[0] > KElist[1]: - print_warning_message('EA scans from low to high in kinetic energy') - return - KEmin,KEmax = AllowedEnergyRange(EAlist[-3],'Angular') + KE_0,KE_1,KE_step = tuple(KElist) + if KE_0 > KE_1: + print_warning_message('EA scans from low to high in kinetic energy, fixing order') + KElist = [min(KE_0,KE_1),max(KE_0,KE_1),KE_step] + #check if KEs are within range + try: + if type(EAlist[-1]) == str: + KEmin,KEmax = AllowedEnergyRange(EAlist[-4],'Angular') + else: + KEmin,KEmax = AllowedEnergyRange(EAlist[-3],'Angular') + except: + print_warning_message("Not a valid pass Energy - LensMode combination") + print(AllowedEnergyRange()) 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 - pvCalcOut1=_BE2KE_setupCalc(EAlist[1],"BE_center",10,"29idcScienta:HV:fixedEnergy.VAL") - EAlist[1]=caget(pvCalcOut1+'.VAL') - arrayP1=list(np.full(sweeps, EAlist[1])) - scan_fillin_table(pvCalcOut1+'.PROC',"",arrayP1) - scan_positioner_after_set(positioner_after_scan="STAY") - EAlist[1]=arrayP1[0] - if kwargs['debug']: - print('\npvCalcOut1: ',pvCalcOut1) - print('Pos1 table:',arrayP1) - elif len(EAlist)==6: #Baby-Swept - pvCalcOut1=_BE2KE_setupCalc(EAlist[1],"BE_center",10,"29idcScienta:HV:babySweepCenter.VAL") - EAlist[1]=caget(pvCalcOut1+'.VAL') - arrayP1=list(np.full(sweeps, EAlist[1])) - scan_fillin_table(pvCalcOut1+'PROC',"",arrayP1) - scan_positioner_after_set(positioner_after_scan="STAY") - print('\npvCalcOut1: ',pvCalcOut1) - print('Pos1 table:',arrayP1) - elif len(EAlist)==7: #Sweep - pvCalcOut1=_BE2KE_setupCalc(EAlist[1],"BE_start",9,"29idcScienta:HV:sweepStartEnergy.VAL") - pvCalcOut2=_BE2KE_setupCalc(EAlist[2],"BE_stop",10,"29idcScienta:HV:sweepStopEnergy.VAL") - EAlist[1]=caget(pvCalcOut1+'.VAL') - EAlist[2]=caget(pvCalcOut2+'.VAL') - arrayP1=list(np.full(sweeps, EAlist[1])) - arrayP2=list(np.full(sweeps, EAlist[2])) - scan_fillin_table(pvCalcOut1+'.PROC',"",arrayP1) - scan_fillin_table(pvCalcOut2+'.PROC',"",arrayP2) - scan_positioner_after_set(positioner_after_scan="STAY") - if kwargs['debug']: - print("\npvCalcOut1",pvCalcOut1) - print("\npvCalcOut2",pvCalcOut2) - print('Pos1 table:',arrayP1) - print('Pos2 table:',arrayP2) - EAlist[0]=='KE' - else: - _BE2KE_setupCalc(0,"",9,"") - _BE2KE_setupCalc(0,"",10,"") - + #everything checks out convert to KE + for i,KE in enumerate(KElist): + EAlist[1+i] = KElist[i] if kwargs['debug']: print('/n EAlist => ',EAlist) @@ -566,6 +546,46 @@ def mvth_interp(RoughPositions, thVal,**kwargs): #print("Pos = ",Pos) EA.Motors.mvsample(Pos) +""" def _removed_from_scanEA(): + if EAlist[0]=="BE": + if len(EAlist)==5: #Fixed + pvCalcOut1=_BE2KE_setupCalc(EAlist[1],"BE_center",10,"29idcScienta:HV:fixedEnergy.VAL") + EAlist[1]=caget(pvCalcOut1+'.VAL') + arrayP1=list(np.full(sweeps, EAlist[1])) + scan_fillin_table(pvCalcOut1+'.PROC',"",arrayP1) + scan_positioner_after_set(positioner_after_scan="STAY") + EAlist[1]=arrayP1[0] + if kwargs['debug']: + print('\npvCalcOut1: ',pvCalcOut1) + print('Pos1 table:',arrayP1) + elif len(EAlist)==6: #Baby-Swept + pvCalcOut1=_BE2KE_setupCalc(EAlist[1],"BE_center",10,"29idcScienta:HV:babySweepCenter.VAL") + EAlist[1]=caget(pvCalcOut1+'.VAL') + arrayP1=list(np.full(sweeps, EAlist[1])) + scan_fillin_table(pvCalcOut1+'PROC',"",arrayP1) + scan_positioner_after_set(positioner_after_scan="STAY") + print('\npvCalcOut1: ',pvCalcOut1) + print('Pos1 table:',arrayP1) + elif len(EAlist)==7: #Sweep + pvCalcOut1=_BE2KE_setupCalc(EAlist[1],"BE_start",9,"29idcScienta:HV:sweepStartEnergy.VAL") + pvCalcOut2=_BE2KE_setupCalc(EAlist[2],"BE_stop",10,"29idcScienta:HV:sweepStopEnergy.VAL") + EAlist[1]=caget(pvCalcOut1+'.VAL') + EAlist[2]=caget(pvCalcOut2+'.VAL') + arrayP1=list(np.full(sweeps, EAlist[1])) + arrayP2=list(np.full(sweeps, EAlist[2])) + scan_fillin_table(pvCalcOut1+'.PROC',"",arrayP1) + scan_fillin_table(pvCalcOut2+'.PROC',"",arrayP2) + scan_positioner_after_set(positioner_after_scan="STAY") + if kwargs['debug']: + print("\npvCalcOut1",pvCalcOut1) + print("\npvCalcOut2",pvCalcOut2) + print('Pos1 table:',arrayP1) + print('Pos2 table:',arrayP2) + EAlist[0]=='KE' + else: + _BE2KE_setupCalc(0,"",9,"") + _BE2KE_setupCalc(0,"",10,"") """ + def scanEA_hv(EAlist,hv_lists,**kwargs): """ triggers and EAscan for each photon energy in *hvs