From 080d3edfa398a71e413af22a0b6cba09b185ca37 Mon Sep 17 00:00:00 2001 From: "FR@29iduser" <rodolakis@anl.gov> Date: Fri, 16 Sep 2022 15:16:33 -0500 Subject: [PATCH] Octupole reset working --- build/lib/iexcode/instruments/ARPES.py | 2 +- build/lib/iexcode/instruments/Motors.py | 9 ++++ iexcode/instruments/ARPES.py | 2 +- iexcode/instruments/Octupole.py | 60 ++++++++++++++++--------- 4 files changed, 49 insertions(+), 24 deletions(-) diff --git a/build/lib/iexcode/instruments/ARPES.py b/build/lib/iexcode/instruments/ARPES.py index a01087d..1457595 100644 --- a/build/lib/iexcode/instruments/ARPES.py +++ b/build/lib/iexcode/instruments/ARPES.py @@ -202,7 +202,7 @@ def folders_ARPES(user_name,**kwargs): print("run,folder,user_name,ioc,ftp: ",run,iex.BL.folder,user_name,kwargs['scan_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"]: diff --git a/build/lib/iexcode/instruments/Motors.py b/build/lib/iexcode/instruments/Motors.py index 6007ef8..b59469b 100644 --- a/build/lib/iexcode/instruments/Motors.py +++ b/build/lib/iexcode/instruments/Motors.py @@ -426,6 +426,15 @@ def dscanphi(start,stop,step): iex.BL.motors.scan("phi",start,stop,step,relative=True) +def scan_motors_2D(inner_loop_list,outer_loop_list,**kwargs): + """ + 2D motor scans + + usage: + scan_motors_2D(["x",-5,5,.25],["z",141.5-5,141.5+5,.25]) + """ + iex.BL.motors.scan_2D(inner_loop_list,outer_loop_list,**kwargs) + ######## mprint and mvsample ################### def mprint(name=''): """ diff --git a/iexcode/instruments/ARPES.py b/iexcode/instruments/ARPES.py index a01087d..1457595 100644 --- a/iexcode/instruments/ARPES.py +++ b/iexcode/instruments/ARPES.py @@ -202,7 +202,7 @@ def folders_ARPES(user_name,**kwargs): print("run,folder,user_name,ioc,ftp: ",run,iex.BL.folder,user_name,kwargs['scan_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"]: diff --git a/iexcode/instruments/Octupole.py b/iexcode/instruments/Octupole.py index 5f6644a..b0f4733 100644 --- a/iexcode/instruments/Octupole.py +++ b/iexcode/instruments/Octupole.py @@ -32,7 +32,7 @@ from iexcode.instruments.scalers import scaler_cts,Scaler from iexcode.instruments.spec_stuff import folders_spec default_ioc = '29ide:' -global tey,tfy,pd,mesh,diag,kbh,kbv, Octupole_scaler_pv +global tey,tfy,pd,mesh,diag,kbh,kbv ############################################################################# def Octupole_init(*userName,**kwargs): @@ -86,7 +86,7 @@ def Octupole_init(*userName,**kwargs): tey = SRS("29ide:scaler1.S3", '29ide:SR570_4:') tfy = Scaler("29ide:scaler1.S4") pd = SRS("29idMZ0:scaler1.S5", '29ide:SR570_5:') - Octupole_scaler_pv = '29ide:scaler1.CNT' + #resetting everything if kwargs['reset']: @@ -94,10 +94,14 @@ def Octupole_init(*userName,**kwargs): print ('Octupole initalized') #return any detectors or other parameters that you want access to from jupyter - return tey,tfy,pd,mesh,diag,kbh,kbv, Octupole_scaler_pv + return tey,tfy,pd,mesh,diag,kbh,kbv ############################################################################################################## ############################## detectors and motors ############################## ############################################################################################################## +def Octupole_scaler_pv(): + scaler_pv = '29ide:scaler1.CNT' + return scaler_pv + def _Octupole_ca_list(): """ list of detectors to trigger @@ -218,6 +222,7 @@ def folders_Octupole(user_name,**kwargs): kwargs.setdefault('run',check_run()) kwargs.setdefault('ftp',False) kwargs.setdefault('debug',False) + kwargs.setdefault('vortex',False) run = kwargs['run'] @@ -234,9 +239,9 @@ def folders_Octupole(user_name,**kwargs): #resetting if 'reset': - Octupole_reset() + Octupole_reset(**kwargs) -def Octupole_reset(): +def Octupole_reset(**kwargs): """ resets scanRecord, current amplifiers, mono limits and lakeshore """ @@ -244,7 +249,7 @@ def Octupole_reset(): if iex.BL.mode=='staff': iex.BL.mda.detector_dictionary = staff_detector_dictionary() else: - iex.BL.mda.detector_dictionary = _Octupole_detector_dictionary() + iex.BL.mda.detector_dictionary = _Octupole_detector_dictionary(**kwargs) 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() @@ -254,7 +259,7 @@ def Octupole_reset(): iex.BL.mda.reset_all() #resetting the current amplifiers - if iex.BL.xray: + if iex.BL.xrays: ca_reset_all() #resetting mono and anyother beamline stuff @@ -344,7 +349,7 @@ def _Octupole_log_entries(): ############################################################################################################## ############################## Octupole scanRecord ############################## ############################################################################################################## -def _Octupole_scan_before_sequence(scan_ioc,scan_dim,**kwargs): +def _Octupole_scan_before_sequence(**kwargs): """ writes the user string sequence to happen at the beginning of a scan returns before_scan_pv = pv for userStringSeq for before scan @@ -357,6 +362,8 @@ def _Octupole_scan_before_sequence(scan_ioc,scan_dim,**kwargs): kwargs.setdefault('seq_num',9) seq_num=kwargs['seq_num'] + scan_ioc = iex.BL.ioc + before_scan_pv,before_scan_proc = userStringSeq_pvs(scan_ioc, seq_num) #clear and write the before scan user sequence @@ -371,7 +378,7 @@ def _Octupole_scan_before_sequence(scan_ioc,scan_dim,**kwargs): return before_scan_proc -def _Octupole_scan_after_sequence(scan_ioc,scan_dim,**kwargs): +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 @@ -384,7 +391,12 @@ def _Octupole_scan_after_sequence(scan_ioc,scan_dim,**kwargs): """ kwargs.setdefault('seq_num',10) kwargs.setdefault('snake',False) - seq_num=kwargs['seq_num'] + 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'] @@ -421,40 +433,44 @@ def _Octupole_scan_after_sequence(scan_ioc,scan_dim,**kwargs): return after_scan_proc -def _Octupole_detector_triggers_sequence(scan_ioc,scan_dim,**kwargs): # do we need to add 29idb:ca5 ??? +def _Octupole_detector_triggers_sequence(**kwargs): # do we need to add 29idb:ca5 ??? """ """ - kwargs.setdefault(seq_num,8) + kwargs.setdefault('seq_num',8) seq_num=kwargs['seq_num'] + scan_ioc = iex.BL.ioc + detector_triggers_pv,detector_triggers_proc = userStringSeq_pvs(iex.BL.ioc, seq_num) #clear the userStringSeq userStringSeq_clear(scan_ioc,seq_num=kwargs['seq_num']) caput(detector_triggers_pv+".DESC","Octupole_Trigger1") + + ca_list = _Octupole_ca_list() + last = len(ca_list) + if last !=0: + for i,ca in enumerate(ca_list): + ca_pv = Keithley_pv(ca[0], ca[1])+':read.PROC CA NMS' + caput(detector_triggers_pv+".LNK" +str(i+2),ca_pv) + caput(detector_triggers_pv+".WAIT"+str(i+2),"After"+str(last)) - scaler_pv = Octupole_scaler_pv + last+=1 + scaler_pv = Octupole_scaler_pv() caput(detector_triggers_pv+".LNK" +str(1),scaler_pv) caput(detector_triggers_pv+".WAIT"+str(1),"After"+str(last)) - - ca_list = _Octupole_ca_list() - last = len(ca_list) - for i,ca in enumerate(ca_list): - ca_pv = Keithley_pv(ca[0], ca[1])+':read.PROC CA NMS' - caput(detector_triggers_pv+".LNK" +str(i+2),ca_pv) - caput(detector_triggers_pv+".WAIT"+str(i+2),"After"+str(last)) return detector_triggers_proc -def _Octupole_trigger_dictionary(scan_ioc,scan_dim,**kwargs): +def _Octupole_trigger_dictionary(**kwargs): """ need to do something """ trigger_dictionary = { - 1:_Octupole_detector_triggers_sequence(scan_ioc,scan_dim,**kwargs), + 1:_Octupole_detector_triggers_sequence(**kwargs), } return trigger_dictionary -- GitLab