towards cta

This commit is contained in:
2024-01-22 16:01:55 +01:00
parent d1c3c08642
commit c270467e44
4 changed files with 59 additions and 28 deletions

View File

@@ -26,6 +26,8 @@ import shapepath
try:
from slic.core.acquisition import SFAcquisition
from slic.devices.timing.events import CTASequencer
from ctadaq import CTAAcquisition
except ImportError as e:
_log.warning(e)
@@ -91,7 +93,7 @@ class Jungfrau:
#rsync -vai gac-cristall@saresc-cons-03:/sf/jungfrau/applications/daq_client/daq_client.py .
# setup slic parameters
if sim:
self._daq=None
self._sim=True
return
app=QApplication.instance()
cfg=app._cfg
@@ -100,18 +102,40 @@ class Jungfrau:
pv_channels = cfg.value(AppCfg.DAQ_PV_CH)
loc=cfg.value(AppCfg.DAQ_LOC)
try:
self._daq=SFAcquisition(
loc['end_station'], loc['p_group'],
default_detectors=detectors, default_channels=bs_channels, default_pvs=pv_channels,
rate_multiplicator=1, append_user_tag_to_data_dir=True
)
self._pv_pulse_id=epics.PV('SAR-EXPMX-EVR0:RX-PULSEID')
self._pv_pulse_id.connect()
except NameError as e:
_log.critical(f'Jungfrau not connected: {e}')
def config(self,**kwargs):
if getattr(self,'_sim',False):
_log.info(f'simulated')
code_gen=kwargs['code_gen']
if code_gen==3:
grid_cnt=kwargs['grid']['count']
kwargs['grid']['count']
self._cta=cta=CTASequencer("SAR-CCTA-ESC")
repetitions=grid_cnt[0]
cta_multiplier=grid_cnt[1]-1
#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
cta.seq[215]=[1]*cta_multiplier*2 # laser_shutter
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,
default_channels=bs_channels,
default_pvs=pv_channels, rate_multiplicator=1, append_user_tag_to_data_dir=True)
else:
self._daq=SFAcquisition(
loc['end_station'], loc['p_group'],
default_detectors=detectors, default_channels=bs_channels, default_pvs=pv_channels,
rate_multiplicator=1, append_user_tag_to_data_dir=True)
def acquire(self, n_pulses, wait=False):
if self._daq is None:
try:
daq=self._daq
except AttributeError:
_log.info(f'simulated')
return
app=QApplication.instance()
@@ -121,16 +145,15 @@ class Jungfrau:
self._pulse_id_start=int(self._pv_pulse_id.value)
except TypeError as e:
_log.warning(f'failed to get _pulse_id_start: {e}')
if self._daq is not None:
n_pulses_run = n_pulses + run['padding']
self._daq.acquire(run['prefix'], n_pulses=min(n_pulses_run, 800), n_repeat=ceil(n_pulses_run/800), wait=False, cell_name=run['cell_name'])
#self._daq.acquire(run['prefix'], n_pulses=n_pulses, wait=False, cell_name=run['cell_name'])
pass
#run['id']+=1
n_pulses_run = n_pulses + run['padding']
block_size = run['block_size']
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'])
cfg.setValue(AppCfg.DAQ_RUN,run)
def gather_upload(self):
if self._daq is None:
try:
daq=self._daq
except AttributeError:
_log.info(f'simulated')
return
try: