raster/rotation: wait until running jfjoch added, order in which events occur changes so detector intiailisation starts while beamline is being configured

This commit is contained in:
2026-04-29 17:22:22 +02:00
parent 715b8ba417
commit 2c2221ce31
+45 -15
View File
@@ -458,6 +458,15 @@ class AareDAQ:
),
)
else:
if not self.__cfg.simulated_detector:
logger.info(f"initialise detector for raster")
status = self.status
self.__jfjoch.measure_raster(grid_request, status)
logger.info("detector initialised")
else:
logger.info("Simulated detector mode enabled; using fake raster result.")
self.__setup_datacollection(request=grid_request)
self.__set_state(BeamlineStateEnum.DataCollection)
raster_result = self.__raster(grid_request)
@@ -523,9 +532,16 @@ class AareDAQ:
CompletedRotationScan result or None if failed
"""
try:
status= self.status
if self.__cfg.simulated_detector:
logger.info("Simulated detector mode enabled; skipping JFJoch start.")
else:
self.__jfjoch.measure_rotation(rotation_request, status, self.__cfg.xrf)
self.__setup_datacollection(request=rotation_request)
if self.sample is not None and self.sample.db_id is not None:
self.__aare.send_sample_event(self.sample, SampleEventType.COLLECTING)
self.__set_state(BeamlineStateEnum.DataCollection)
result = self.__rotation(rotation_request)
self.__set_state(BeamlineStateEnum.SampleAlignment)
@@ -1091,6 +1107,7 @@ class AareDAQ:
def __auto_center(self, request: RasterGridRequest) -> CompletedRasterGrid | None:
# TODO do we need to handle the two grid scans differently?
sample = self.sample
if sample is None:
@@ -1148,7 +1165,7 @@ class AareDAQ:
},
),
)
self.__set_state(BeamlineStateEnum.DataCollection)
geom = self.sample_geometry
grid = copy.deepcopy(request)
grid.smargon_top_left = r.smargon_top_left
@@ -1158,6 +1175,17 @@ class AareDAQ:
grid.file_prefix = f"{old_prefix}_{grid.omega_deg}deg"
grid.omega_deg = geom.omega_deg
status = self.status
if not self.__cfg.simulated_detector:
logger.info("initialise detector")
self.__jfjoch.measure_raster(grid, status)
logger.info("detector initialised")
else:
logger.info("Simulated detector mode enabled; using fake raster result.")
self.__set_state(BeamlineStateEnum.DataCollection)
logger.info(
"Running first auto-center raster",
extra=merge_log_context(
@@ -1173,8 +1201,8 @@ class AareDAQ:
res1 = self.__raster(grid)
grid.omega_deg += 90
self.__devs.aerotech_omega = grid.omega_deg
self.__set_state(BeamlineStateEnum.DataCollection)
grid.n_x = 1
grid.file_prefix = f"{old_prefix}_{grid.omega_deg}deg"
@@ -1204,6 +1232,15 @@ class AareDAQ:
},
),
)
status = self.status
if not self.__cfg.simulated_detector:
logger.info(f"initialise detector for raster at {grid.omega_deg}")
self.__jfjoch.measure_raster(grid, status)
logger.info("detector initialised")
else:
logger.info("Simulated detector mode enabled; using fake raster result.")
self.__set_state(BeamlineStateEnum.DataCollection)
logger.info(
"Running second auto-center raster",
@@ -1407,6 +1444,9 @@ class AareDAQ:
)
def __raster(self, request: RasterGridRequest, wait_for_screenshot: float | None = 0.3) -> CompletedRasterGridElem:
status = self.status
smargon_top_left =request.smargon_top_left
self.__devs.set_smargon_pos(
SmargonCoordinate(
@@ -1415,7 +1455,7 @@ class AareDAQ:
chi_deg=smargon_top_left.chi_deg,
)
)
status = self.status
logger.info(
"Starting raster acquisition",
extra=merge_log_context(
@@ -1433,12 +1473,7 @@ class AareDAQ:
comment=f"Raster at {request.omega_deg:.1f} deg")
self.__aare.create_gridscan_run(self.sample, request, status)
if not self.__cfg.simulated_detector:
logger.info("initialise detector")
self.__jfjoch.measure_raster(request, status)
logger.info("detector initialised")
else:
logger.info("Simulated detector mode enabled; using fake raster result.")
self.__jfjoch.wait_till_running(timeout=60.0)
self.__devs.aerotech.grid_scan(
grid_elem_size_y_um=request.grid_size_mm.y * 1000,
@@ -1638,12 +1673,7 @@ class AareDAQ:
if self.sample is not None and self.sample.db_id is not None:
self.__aare.create_rotation_run(self.sample, request, status)
try:
if self.__cfg.simulated_detector:
logger.info("Simulated detector mode enabled; skipping JFJoch start.")
else:
self.__jfjoch.measure_rotation(request, status, self.__cfg.xrf)
self.__jfjoch.wait_till_running(timeout=60.0)
if request.screening:
self.__devs.aerotech.screening_scan(
rotation_deg=request.steps*request.incr_omega_deg,