diff --git a/src/aare/daq/daq.py b/src/aare/daq/daq.py index ab244875..62f6b596 100644 --- a/src/aare/daq/daq.py +++ b/src/aare/daq/daq.py @@ -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,