changes by the martin and John
This commit is contained in:
@@ -28,6 +28,7 @@ try:
|
||||
from slic.core.acquisition import SFAcquisition
|
||||
from slic.devices.timing.events import CTASequencer
|
||||
from ctadaq import CTAAcquisition
|
||||
from jfjoch_device import JFJ
|
||||
except ImportError as e:
|
||||
_log.warning(e)
|
||||
|
||||
@@ -35,6 +36,10 @@ class Shutter:
|
||||
|
||||
def __init__(self,mode=1):
|
||||
self._mode=mode
|
||||
app=QApplication.instance() #apologies! Wasn't sure how best to do this, could maybe feed sync_flag as a variable to open and close from swissmx.py
|
||||
cfg=app._cfg
|
||||
dt_misc = cfg.value(AppCfg.DT_MISC)
|
||||
self.sync_flag=dt_misc['sync_flag']
|
||||
|
||||
def open(self):
|
||||
mode=self._mode
|
||||
@@ -43,8 +48,12 @@ class Shutter:
|
||||
elif mode==1:
|
||||
# open laser shutter
|
||||
epics.caput("SLAAR31-LPSYS-ESC:LHX1_SHUT_OPEN", 1)
|
||||
|
||||
if self.sync_flag==0: #if using cta, sets pulse_picker output to follow pulser 3
|
||||
# open fast shutter
|
||||
epics.caput("SARES30-LTIM01-EVR0:RearUniv0_SNUMPD", 3)
|
||||
epics.caput("SARES30-LTIM01-EVR0:RearUniv0_SNUMPD2", 3)
|
||||
epics.caput("SARES30-LTIM01-EVR0:RearUniv0_SOURCE", 0)
|
||||
epics.caput("SARES30-LTIM01-EVR0:RearUniv0_SOURCE2", 0)
|
||||
epics.caput("SARES30-LTIM01-EVR0:RearUniv0-Ena-SP", 1)
|
||||
_log.info('shutter opened')
|
||||
|
||||
@@ -53,13 +62,19 @@ class Shutter:
|
||||
if mode==0:
|
||||
_log.info('close simulated shutter')
|
||||
elif mode==1:
|
||||
# close fast shutter
|
||||
epics.caput("SARES30-LTIM01-EVR0:RearUniv0-Ena-SP", 0)
|
||||
|
||||
# close laser shutter
|
||||
epics.caput("SLAAR31-LPSYS-ESC:LHX1_SHUT_CLOSE", 1)
|
||||
_log.info('shutter closed')
|
||||
|
||||
# close fast shutter
|
||||
epics.caput("SARES30-LTIM01-EVR0:RearUniv0-Ena-SP", 0)
|
||||
if self.sync_flag==0: #if using cta, sets pulse_picker output back to high low, could do this every time?
|
||||
epics.caput("SARES30-LTIM01-EVR0:RearUniv0_SNUMPD", 1)
|
||||
epics.caput("SARES30-LTIM01-EVR0:RearUniv0_SNUMPD2", 1)
|
||||
epics.caput("SARES30-LTIM01-EVR0:RearUniv0_SOURCE", 3)
|
||||
epics.caput("SARES30-LTIM01-EVR0:RearUniv0_SOURCE2", 4)
|
||||
|
||||
class Deltatau:
|
||||
def __init__(self,sim=False):
|
||||
app=QApplication.instance()
|
||||
@@ -106,22 +121,66 @@ class Jungfrau:
|
||||
_log.info(f'simulated')
|
||||
app=QApplication.instance() #temproary fix, couldnt access these in function, maybe the bt above needs to be self.detectors ... etc
|
||||
cfg=app._cfg
|
||||
detectors = [ cfg.value(AppCfg.DAQ_DET) ]
|
||||
det = cfg.value(AppCfg.DAQ_DET)
|
||||
print("det", repr(det))
|
||||
detectors = [det] if det.get("name") else None
|
||||
bs_channels = cfg.value(AppCfg.DAQ_BS_CH)
|
||||
pv_channels = cfg.value(AppCfg.DAQ_PV_CH)
|
||||
loc=cfg.value(AppCfg.DAQ_LOC)
|
||||
dt_misc = cfg.value(AppCfg.DT_MISC)
|
||||
code_gen=kwargs.get('code_gen',0)
|
||||
if code_gen==3:
|
||||
sync_mode=dt_misc['sync_mode']
|
||||
sync_flag=dt_misc['sync_flag']
|
||||
if loc['jungfraujoch']:
|
||||
try:
|
||||
self.jfj = JFJ("http://sf-daq-2:5232")
|
||||
self.detectors=None
|
||||
except:
|
||||
self.jfj = None
|
||||
else:
|
||||
self.jfj = None
|
||||
if sync_flag==0:
|
||||
grid_cnt=kwargs['grid']['count']
|
||||
kwargs['grid']['count']
|
||||
self._cta=cta=CTASequencer("SAR-CCTA-ESC")
|
||||
repetitions=grid_cnt[0] #'x' or number of columns
|
||||
cta_multiplier=grid_cnt[1]-1 #'y' or number of appertures in a column/number of rows
|
||||
#kwargs['tmove'] kwargs['twait']
|
||||
xray_seq=[0,]*(kwargs['twait']//kwargs['tmove'])+[1] # multiplier is proportional to wait_time i.e. 10 ms = 1, 20 ms =2, 30 ms =3.
|
||||
cta.seq[200]=xray_seq*cta_multiplier # x-ray_shutter
|
||||
laser_seq=[1,]*(kwargs['twait']//kwargs['tmove'])+[1]
|
||||
cta.seq[215]=laser_seq*cta_multiplier # laser_shutter
|
||||
cta_multiplier=grid_cnt[1] #'y' or number of appertures in a column/number of rows
|
||||
cta=CTASequencer("SAR-CCTA-ESC")
|
||||
if code_gen==3:
|
||||
wait_pulses=kwargs['twait']//kwargs['tmove']
|
||||
#xray_seq=[0,]*wait_pulses+[1] # multiplier is proportional to wait_time i.e. 10 ms = 1, 20 ms =2, 30 ms =3.
|
||||
xray_seq=[1,]+[0,]*wait_pulses
|
||||
cta.seq[200]=xray_seq*cta_multiplier # x-ray_shutter
|
||||
laser_seq=[1,]*wait_pulses+[1]
|
||||
cta.seq[215]=laser_seq*cta_multiplier # laser_shutter
|
||||
droplet_sequence=[0, 1, 0, 0] # sub 8 ms delay = [0, 0, 1, 0]
|
||||
cta.seq[216]=droplet_sequence*(cta_multiplier//2)
|
||||
cta.seq[214]=[1,]+[0,]*(len(laser_seq*cta_multiplier)-1)
|
||||
else:
|
||||
print('not code gen 3')
|
||||
#cta_multiplier-=14
|
||||
#cta.seq[200]=[0,0,0,0,0,0,0]+[1,]*cta_multiplier + [0,0,0,0,0,0,0] # for +7 row chip x-ray
|
||||
#cta.seq[215]=[0,0,0,0,0,0,0]+[1,]*cta_multiplier + [0,0,0,0,0,0,0] # for +7 row chip laser
|
||||
#cta.seq[214]=[1,0,0,0,0,0,0]+[0,]*cta_multiplier + [0,0,0,0,0,0,0] # for +7 row chip start
|
||||
|
||||
# no extra rows
|
||||
cta.seq[214]=[1,]+[0,]*(cta_multiplier-1)
|
||||
cta.seq[200]=[1,]*cta_multiplier # x-ray_shutter
|
||||
#cta.seq[215]=[1,]*cta_multiplier # laser_shutter
|
||||
#cta.seq[216]=[1,]*cta_multiplier # droplet_ejector all
|
||||
cta.seq[216]=[1,0,]*(cta_multiplier//2) # droplet_ejector 1:1
|
||||
#cta.seq[216]=[1,0,0,]*(cta_multiplier//3) # droplet_ejector 1:2
|
||||
#cta.seq[216]=[1,0,0,0,0,0,]*(cta_multiplier//6) # droplet_ejector 1:5
|
||||
#cta.seq[216]=[1,0,0,0,0,0,0,0,0,]*(cta_multiplier//9) # droplet_ejector 1:8
|
||||
#cta.seq[216]=[1,0,0,0,0,0,0,0,0,0,0,0,]*(cta_multiplier//12) # droplet_ejector 1:11
|
||||
|
||||
# skip 6 rows add 6 on end -- first 2 and 1 216
|
||||
#cta.seq[214]=[1,0,0,0,0,0,]+[0,]*(cta_multiplier-12)+[0,0,0,0,0,0,]
|
||||
#cta.seq[200]=[0,0,0,0,0,0,]+[1,]*(cta_multiplier-12)+[0,0,0,0,0,0,] # x-ray_shutter
|
||||
#cta.seq[216]=[0,0,0,0,0,0,]+[1,]*(cta_multiplier-12)+[0,0,0,0,0,0,] # droplet_ejector all
|
||||
#cta.seq[216]=[0,0,0,0,0,0,]+[1,0,]*((cta_multiplier-12)//2)+[0,0,0,0,0,0,] # droplet_ejector 1:1
|
||||
#cta.seq[216]=[0,0,0,0,0,0,]+[1,0,0,]*((cta_multiplier-12)//3)+[0,0,0,0,0,0] # droplet_ejector 1:2
|
||||
#cta.seq[216]=[0,0,0,0,0,0,]+[1,0,0,0]*((cta_multiplier-12)//4)+[0,0,0,0,0,0] # droplet_ejector 1:3
|
||||
#cta.seq[216]=[0,0,0,0,0,0,]+[1,0,0,0,0,0,]*((cta_multiplier-12)//6)+[0,0,0,0,0,0]# droplet_ejector 1:5
|
||||
#cta.seq[216]=[0,0,0,0,0,0,]+[1,0,0,0,0,0,0,0,0,0,0,0,]*((cta_multiplier-12)//12)+[0,0,0,0,0,0] # droplet_ejector 1:11
|
||||
cta.cfg.repetitions=repetitions # self._cta.cfg.repetitions = n_pulses_run/cta_multiplier
|
||||
cta.seq.upload()
|
||||
self._daq=CTAAcquisition(cta, loc['end_station'], loc['p_group'], default_detectors=detectors,
|
||||
@@ -147,11 +206,15 @@ class Jungfrau:
|
||||
except TypeError as e:
|
||||
_log.warning(f'failed to get _pulse_id_start: {e}')
|
||||
n_pulses_run = n_pulses + run['padding']
|
||||
n_pulses_run*=2 # comment me out please when not using 10 ms wait (for stop and go)
|
||||
print('number of triggers ', n_pulses_run, ' is greater than the number of appertures', n_pulses)
|
||||
block_size = run['block_size']
|
||||
if self.jfj:
|
||||
self.jfj.acquire(beam_x_pxl = 1613, beam_y_pxl = 1666, detector_distance_mm = 151, photon_energy_keV = 12, sample_name = run['cell_name'], file_prefix = run['prefix'], ntrigger = n_pulses_run)
|
||||
if type(self._daq) is CTAAcquisition:
|
||||
self._daq.acquire(run['prefix'], n_pulses=min(n_pulses_run, block_size), n_block_size=block_size, wait=False, cell_name=run['cell_name'])
|
||||
self._daq.acquire(run['prefix'], n_pulses=max(n_pulses_run, block_size), n_block_size=block_size, wait=False, cell_name=run['cell_name'])
|
||||
else:
|
||||
self._daq.acquire(run['prefix'], n_pulses=min(n_pulses_run, block_size), n_repeat=ceil(n_pulses_run/block_size), wait=False, cell_name=run['cell_name'])
|
||||
self._daq.acquire(run['prefix'], n_pulses=max(n_pulses_run, block_size), n_repeat=ceil(n_pulses_run/block_size), wait=False, cell_name=run['cell_name'])
|
||||
cfg.setValue(AppCfg.DAQ_RUN,run)
|
||||
|
||||
def gather_upload(self):
|
||||
|
||||
Reference in New Issue
Block a user