diff --git a/build/lib/iexcode/instruments/ARPES.py b/build/lib/iexcode/instruments/ARPES.py index 3b3c5afcd63f47961aea6795c35331a6d3b48962..70b4ea4ae1947e9492d476b0fa5cb6ea64b9bae5 100644 --- a/build/lib/iexcode/instruments/ARPES.py +++ b/build/lib/iexcode/instruments/ARPES.py @@ -512,7 +512,6 @@ def _ARPES_snake_userCalc(**kwargs): return snake_userCalc_pv+'.VAL' - def ARPES_snake_set(snake,**kwargs): """ used for snake scanning @@ -521,16 +520,14 @@ def ARPES_snake_set(snake,**kwargs): scan_ioc = iex.BL.mda.ioc after_scan_pv,after_scan_proc = _ARPES_scan_after_pvs() - snake_val = _ARPES_snake_userCalc() scan_step_pv = scan_ioc+'scan'+str(kwargs['scan_dim'])+'.P1SI NP NMS' if snake: caput(after_scan_pv+".LNKA",scan_step_pv) - caput(after_scan_pv+"DOA",snake_val) + caput(after_scan_pv+".DOLA",_ARPES_snake_userCalc()+" NP") else: caput(after_scan_pv+".LNKA","") - caput(after_scan_pv+"DOA",0) - + caput(after_scan_pv+".DOA","") ############################################################################################################## ############################## ARPES Motor Endcoders ############################## ############################################################################################################## diff --git a/iexcode/instruments/ARPES.py b/iexcode/instruments/ARPES.py index 70b4ea4ae1947e9492d476b0fa5cb6ea64b9bae5..5e6ad6c6e6cf46e00234fe2aad89fe83aa258563 100644 --- a/iexcode/instruments/ARPES.py +++ b/iexcode/instruments/ARPES.py @@ -402,7 +402,6 @@ def _ARPES_ca_live_sequence(**kwargs): def _ARPES_scan_after_pvs(clear=False,**kwargs): """ _ARPES_scan_after_sequence pv - """ kwargs.setdefault('seq_num',10) seq_num = kwargs['seq_num'] @@ -421,8 +420,7 @@ def _ARPES_scan_after_sequence(**kwargs): returns after_scan_pv = pv for userStringSeq for after scan **kwargs - seq_num: userStringSeq number in ioc => 10 (default) - snake: for snake scanning => False (default) + Previously: AfterScan_StrSeq """ @@ -440,6 +438,7 @@ def _ARPES_scan_after_sequence(**kwargs): caput(after_scan_pv+".DO1",1) scan_pv = iex.BL.ioc+"scan"+str(scan_dim) + ## Put scan record back in absolute mode caput(after_scan_pv+".LNK2",scan_pv+".P1AR") caput(after_scan_pv+".STR2","ABSOLUTE") diff --git a/iexcode/instruments/Octupole.py b/iexcode/instruments/Octupole.py index 0025b61f7654a46fe349b89d3f63857db1a73368..a3abb5a71ed63bbf802ee180b3b7fecf7794f364 100644 --- a/iexcode/instruments/Octupole.py +++ b/iexcode/instruments/Octupole.py @@ -16,7 +16,7 @@ from iexcode.instruments.xrays import _xrays_detector_dictionary, _xrays_reset, from iexcode.instruments.conversions_constants import * from iexcode.instruments.utilities import * -from iexcode.instruments.userCalcs import userStringSeq_clear, userStringSeq_pvs +from iexcode.instruments.userCalcs import * from iexcode.instruments.Motors import Motors from iexcode.instruments.current_amplifiers import Keithley, _Keithley_pv, ca_reset_all, _ca_live_sequence,SRS @@ -56,7 +56,7 @@ def Octupole_init(*userName,**kwargs): kwargs.setdefault('xrays',True) kwargs.setdefault('mode','user') kwargs.setdefault('set_folders',True) - kwargs.setdefault('reset',True) + kwargs.setdefault('reset',False) #motors physical_motors = ['x','y','z','th','tth'] @@ -96,7 +96,9 @@ def Octupole_init(*userName,**kwargs): tfy = Scaler("29ide:scaler1.S4") pd = SRS("29ide:scaler1.S5", '29ide:SR570_5:') - + #default scan settings + Octupole_default_scan_setting() + #resetting everything if kwargs['reset']: Octupole_reset() @@ -251,7 +253,7 @@ def folders_Octupole(user_name,**kwargs): print("run,folder,user_name,ioc,ftp: ",run,iex.BL.folder,user_name,iex.BL.ioc,kwargs['ftp']) # Create User Folder: - make_user_folders(run,iex.BL.folder,user_name,iex.BL.endstation,ftp=kwargs['ftp']) + make_user_folders(run,iex.BL.folder,user_name,iex.BL.endstation_name,ftp=kwargs['ftp']) sleep(5) if kwargs["set_folders"]: @@ -262,20 +264,29 @@ def folders_Octupole(user_name,**kwargs): if 'reset': Octupole_reset(**kwargs) -def Octupole_reset(**kwargs): +def Octupole_default_scan_setting(**kwargs): """ - resets scanRecord, current amplifiers, mono limits and lakeshore + default setting for scan record + Note: only get set if ARPES_reset is run """ #writing default parameters to iex.BL.mda + iex.BL.mda.detector_dictionary = _Octupole_detector_dictionary(**kwargs) if iex.BL.mode=='staff': - iex.BL.mda.detector_dictionary = staff_detector_dictionary() - else: - iex.BL.mda.detector_dictionary = _Octupole_detector_dictionary(**kwargs) + iex.BL.mda.detector_dictionary.update(staff_detector_dictionary()) + iex.BL.mda.trigger_dictionary = _Octupole_trigger_dictionary() iex.BL.mda.scan_before_sequence = _Octupole_scan_before_sequence() iex.BL.mda.scan_after_sequence = _Octupole_scan_after_sequence() - - #resetting the scanRecord + iex.BL.mda.snake_set = Octupole_snake_set #sending the function, no parenthesis + + #set the logfile name + iex.BL.mda.log.name_set() + +def Octupole_reset(**kwargs): + """ + resets scanRecord, current amplifiers, mono limits and lakeshore + """ + #resetting the scanRecord print("resetting the scanRecord - "+iex.BL.ioc) iex.BL.mda.reset_all() @@ -392,42 +403,41 @@ def _Octupole_scan_before_sequence(**kwargs): return before_scan_proc +def _Octupole_scan_after_pvs(clear=False,**kwargs): + """ + _Octupole_scan_after_sequence pv + """ + kwargs.setdefault('seq_num',10) + seq_num = kwargs['seq_num'] + + scan_ioc = iex.BL.ioc + + after_scan_pv,after_scan_proc = userStringSeq_pvs(scan_ioc, seq_num) + + if clear: + userStringSeq_clear(scan_ioc,seq_num) + return after_scan_pv,after_scan_proc + + def _Octupole_scan_after_sequence(**kwargs): """ writes the user string sequence to happen at the end of a scan returns after_scan_pv = pv for userStringSeq for after scan **kwargs - seq_num: userStringSeq number in ioc => 10 (default) - snake: for snake scanning => False (default) Previously: AfterScan_StrSeq """ - kwargs.setdefault('seq_num',10) - kwargs.setdefault('snake',False) kwargs.setdefault('scan_dim',1) - - seq_num = kwargs['seq_num'] scan_dim = kwargs['scan_dim'] - scan_ioc = iex.BL.ioc - - if 'scan_ioc' in kwargs: - scan_ioc = kwargs['scan_ioc'] - try: - iex.BL.ioc = kwargs['scan_ioc'] - except: - error = 'undefined' - else: - scan_ioc = iex.BL.ioc - - after_scan_pv,after_scan_proc = userStringSeq_pvs(scan_ioc, seq_num) - #clear and write the after scan user sequence - userStringSeq_clear(scan_ioc,seq_num) + after_scan_pv,after_scan_proc = _Octupole_scan_after_pvs(clear=True,**kwargs) + caput(after_scan_pv+".DESC","After Scan") scan_pv = iex.BL.ioc+"scan"+str(scan_dim) + ## Put scan record back in absolute mode caput(after_scan_pv+".LNK2",scan_pv+".P1AR") caput(after_scan_pv+".STR2","ABSOLUTE") @@ -436,14 +446,10 @@ def _Octupole_scan_after_sequence(**kwargs): caput(after_scan_pv+".LNK3",scan_pv+".PDLY NPP NMS") caput(after_scan_pv+".DO3",0.1) - ## Clear DetTriggers 2 to 4: + ## Clear DetTriggers 2: caput(after_scan_pv+".LNK4",scan_pv+".T2PV NPP NMS") #remove trigger 2 (used for EA) after scan - if kwargs['snake']: - snake_dim = scan_dim - 1 - #snake_proc= Octupole_snake_pv(snake_dim,enable=True) - #caput(after_scan_pv+".LNK10",Kappa_snake_pv()+"PP NMS") - #caput(after_scan_pv+".D10",1) + ##Snake goes in LNKA (10) return after_scan_proc @@ -451,7 +457,6 @@ def _Octupole_detector_triggers_sequence(**kwargs): # do we need to add 29idb """ """ - kwargs.setdefault('seq_num',8) seq_num=kwargs['seq_num'] @@ -489,6 +494,46 @@ def _Octupole_trigger_dictionary(**kwargs): return trigger_dictionary +def _Octupole_snake_userCalc(**kwargs): + """ + used to flip the sign of the step after a scan + snake scans as opposed to typewriter scans + """ + kwargs.setdefault('seq_num',10) + kwargs.setdefault('scan_dim',1) + + seq_num=kwargs['seq_num'] + scan_ioc = iex.BL.ioc + + userCalc_clear(scan_ioc,seq_num) + snake_userCalc_pv,snake_userCalc_proc = userCalcs_pvs(scan_ioc, seq_num) + + scan_step_pv = scan_ioc+'scan'+str(kwargs['scan_dim'])+'.P1SI NP NMS' + + caput(snake_userCalc_pv+'.DESC','snake_calc'), + caput(snake_userCalc_pv+'.SCAN','I/O Intr'), + caput(snake_userCalc_pv+'.INAN',scan_step_pv) + caput(snake_userCalc_pv+'.B',"-1") + caput(snake_userCalc_pv+'.CALC$',"A*B") + + return snake_userCalc_pv+'.VAL' + +def Octupole_snake_set(snake,**kwargs): + """ + used for snake scanning + """ + kwargs.setdefault('scan_dim',1) + scan_ioc = iex.BL.mda.ioc + after_scan_pv,after_scan_proc = _Octupole_scan_after_pvs() + + scan_step_pv = scan_ioc+'scan'+str(kwargs['scan_dim'])+'.P1SI NP NMS' + + if snake: + caput(after_scan_pv+".LNKA",scan_step_pv) + caput(after_scan_pv+".DOLA",_Octupole_snake_userCalc()+" NP") + else: + caput(after_scan_pv+".LNKA","") + caput(after_scan_pv+".DOA","") ##############################################################################################################