From 6302f0ec6618bc69dee69e765b47942e8ebcd50a Mon Sep 17 00:00:00 2001 From: gac-x05la Date: Mon, 21 Oct 2024 17:07:32 +0200 Subject: [PATCH] GF in freerun mode --- .../devices/gigafrost/gigafrostcamera.py | 4 ++ tomcat_bec/scans/__init__.py | 2 + tomcat_bec/scans/tutorial_fly_scan.py | 9 +++- tomcat_bec/scripts/tutorialscans.py | 43 +++++++++++++++++++ 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 tomcat_bec/scripts/tutorialscans.py diff --git a/tomcat_bec/devices/gigafrost/gigafrostcamera.py b/tomcat_bec/devices/gigafrost/gigafrostcamera.py index 909f539..c652bde 100644 --- a/tomcat_bec/devices/gigafrost/gigafrostcamera.py +++ b/tomcat_bec/devices/gigafrost/gigafrostcamera.py @@ -239,6 +239,7 @@ class GigaFrostCamera(PSIDetectorBase): cmdSyncHw = Component(EpicsSignal, "SYNC_SWHW.PROC", put_complete=True, kind=Kind.omitted) cmdStartCamera = Component(EpicsSignal, "START_CAM", put_complete=True, kind=Kind.omitted) cmdSetParam = Component(EpicsSignal, "SET_PARAM.PROC", put_complete=True, kind=Kind.omitted) + cfgAcqMode = Component(EpicsSignal, "ACQMODE", put_complete=True, kind=Kind.config) # UDP header cfgUdpNumPorts = Component(EpicsSignal, "PORTS", put_complete=True, kind=Kind.config) @@ -268,6 +269,9 @@ class GigaFrostCamera(PSIDetectorBase): EpicsSignal, "SOFT_TRIG.PROC", put_complete=True, kind=Kind.omitted) cmdSoftExposure = Component(EpicsSignal, "SOFT_EXP", put_complete=True) + cfgAcqMode = Component(EpicsSignal, "ACQMODE", put_complete=True, kind=Kind.config) + + ############################################################################################### # Enable schemes diff --git a/tomcat_bec/scans/__init__.py b/tomcat_bec/scans/__init__.py index db28dae..b507b87 100644 --- a/tomcat_bec/scans/__init__.py +++ b/tomcat_bec/scans/__init__.py @@ -1,2 +1,4 @@ from .gigafrost_test import GigaFrostStepScan from .tomcat_scanbase import SnapAndStepScanBase, GigaStepScanBase, SequenceScanBase, SimpleFlyer +# from .tutorial_fly_scan import AcquireDark, AcquireFlat, TutorialFlyScanContLine +from .tutorial_fly_scan import AcquireDark \ No newline at end of file diff --git a/tomcat_bec/scans/tutorial_fly_scan.py b/tomcat_bec/scans/tutorial_fly_scan.py index ead9ae4..eef64f3 100644 --- a/tomcat_bec/scans/tutorial_fly_scan.py +++ b/tomcat_bec/scans/tutorial_fly_scan.py @@ -7,8 +7,13 @@ from bec_server.scan_server.scans import Acquire, AsyncFlyScanBase class AcquireDark(Acquire): scan_name = "acquire_dark" + required_kwargs = ["exp_time", "num"] + gui_config = { + "Acquisition parameters" : ["exp_time", "num"] + } - def __init__(self, num: int, **kwargs): + + def __init__(self, num: int, exp_time: float, **kwargs): """ Acquire a dark image. This scan is used to acquire a dark image. The dark image is an image taken with the shutter closed and no beam on the sample. The dark image is used to correct the data images for dark current. @@ -25,7 +30,7 @@ class AcquireDark(Acquire): """ super().__init__(**kwargs) self.burst_at_each_point = num - self.shutter = "hx" # change to the correct shutter device + self.shutter = "eyex" # change to the correct shutter device def scan_core(self): # close the shutter diff --git a/tomcat_bec/scripts/tutorialscans.py b/tomcat_bec/scripts/tutorialscans.py new file mode 100644 index 0000000..5ba697d --- /dev/null +++ b/tomcat_bec/scripts/tutorialscans.py @@ -0,0 +1,43 @@ + + +def tutorialdarks(num, exp_time=5, roix=2016, roiy=2016): + """ Dutorial dark scan + + This is a small BEC user-space scan that sets up the gigafrost and calls + the low-level dark collection scan. + + Example: + -------- + tutorialdarks(num=100, exp_time=5) + """ + # Configure gigafrost + cfg = { + "ntotal": num, "nimages": 1, + "exposure": exp_time, "period": 2*exp_time, + "pixel_width": roix, "pixel_height": roiy + } + dev.gfclient.configure(d=cfg) + + dev.gfclient.cam.cfgAcqMode.set(1).wait() + dev.gfclient.cam.cfgEnableExt.set(0).wait() + dev.gfclient.cam.cfgEnableSoft.set(0).wait() + dev.gfclient.cam.cfgEnableAlways.set(1).wait() + + dev.gfclient.cam.cfgTrigExt.set(0).wait() + dev.gfclient.cam.cfgTrigSoft.set(0).wait() + dev.gfclient.cam.cfgTrigTimer.set(0).wait() + dev.gfclient.cam.cfgTrigAuto.set(1).wait() + + dev.gfclient.cam.cfgExpExt.set(0).wait() + dev.gfclient.cam.cfgExpSoft.set(0).wait() + dev.gfclient.cam.cfgExpTimer.set(1).wait() + + dev.gfclient.cam.cfgCntStartBit.set(0).wait() + + # Commit changes to GF + dev.gfclient.cam.cmdSetParam.set(1).wait() + + + print("Handing over to 'scans.acquire_dark") + scans.acquire_dark(num, exp_time) +