From ed28f41ee7abbbd08558e14bab1e199fb0558b06 Mon Sep 17 00:00:00 2001 From: appleb_m Date: Thu, 2 Apr 2026 14:42:10 +0200 Subject: [PATCH] DAQ: add back jfjoch calls. --- src/aare/daq/daq.py | 81 +++++++++++++++++++++++++-------------------- 1 file changed, 46 insertions(+), 35 deletions(-) diff --git a/src/aare/daq/daq.py b/src/aare/daq/daq.py index 39b0b4a5..7c447456 100644 --- a/src/aare/daq/daq.py +++ b/src/aare/daq/daq.py @@ -899,13 +899,12 @@ class AareDAQ: total_time = request.exp_time_s*request.n_x*request.n_y+request.n_y*0.3 result = None if not self.__cfg.simulated_detector: - pass - # try: - # logger.info('initialise detector') - # self.__jfjoch.measure_raster(request, status) - # logger.info('detector initialised') - # except JFJochCommunicationError as e: - # logger.warning(f"Failed to communicate with jfjoch: {e}") + try: + logger.info('initialise detector') + self.__jfjoch.measure_raster(request, status) + logger.info('detector initialised') + except JFJochCommunicationError as e: + logger.warning(f"Failed to communicate with jfjoch: {e}") else: logger.info("Simulated detector mode enabled; returning fake zero raster result.") @@ -928,15 +927,43 @@ class AareDAQ: else: coord = self.__cfg.abr_meas_pos.at_mm self.__devs.aerotech_pos = AerotechCoordinate(at_mm=coord, omega_deg=self.__devs.aerotech_omega) + self.__devs.aerotech.wait_till_done(timeout=int(360)) - self.__devs.smargon_pos = previous_smargon_pos + if request.n_x == 1: + x= ((request.n_y - 1) * request.grid_size_mm.y) / 2.0 + y = request.grid_size_mm.x / 2.0 + grid_centre_offset = self.sample_geometry.smargon_nudge( + Coordinate(x=x, y=y)) + else: + x = ((request.n_x - 1) * request.grid_size_mm.x) / 2.0 + y = ((request.n_y - 1) * request.grid_size_mm.y) / 2.0 + grid_centre_offset = self.sample_geometry.smargon_nudge( + Coordinate(x=x, y=y)) + + logger.info(f"new delta mm {grid_centre_offset}") + + logger.debug(f'moving SMARGON to target new delta mm {request.smargon_top_left.sh_mm+ grid_centre_offset} mm') + smargon_nudge_mm = self.sample_geometry.smargon_nudge(grid_centre_offset) + grid_centre_smargon = SmargonCoordinate( + sh_mm=request.smargon_top_left.sh_mm + smargon_nudge_mm, + phi_deg=request.smargon_top_left.phi_deg, + chi_deg=request.smargon_top_left.chi_deg + ) + self.__devs.smargon_pos = grid_centre_smargon + # self.__devs.smargon_pos = previous_smargon_pos self.__devs.smargon_wait(timeout=180) - result = self._build_fake_raster_result(request) + try: + result = self.__jfjoch.wait_till_done(60) + except JFJochCommunicationError as e: + logger.warning(f"Failed to communicate with jfjoch: {e}") + self.__set_state(BeamlineStateEnum.SampleAlignment) + return self._build_fake_raster_result(request) try: sample_id = self.sample.db_id if self.sample is not None and self.sample.db_id is not None else None if sample_id: + self.__set_state(BeamlineStateEnum.SampleAlignment) self.save_screenshot_db(sample_id, f"{sample_id}_post_raster_{request.omega_deg}deg") self.__aare.ingest_gridscan(sample = self.sample, raster_result = result.result, raster_request = request, geom = self.sample_geometry, @@ -944,17 +971,13 @@ class AareDAQ: except Exception as e: logger.error(f"Exception ingesting grid scan: {e}") - # try: - # result = self.__jfjoch.wait_till_done(60) - # except JFJochCommunicationError as e: - # logger.warning(f"Failed to communicate with jfjoch: {e}") - # return self._build_fake_raster_result(request) if result is None: logger.warning("JFJoch returned no ScanResult; using fake result for raster scan.") - return result - #return CompletedRasterGridElem(request=copy.deepcopy(request), result=result, centre_of_mass=None) + return CompletedRasterGridElem(request=copy.deepcopy(request), result=result, centre_of_mass=None) + + except JFJochCommunicationError: raise @@ -999,8 +1022,8 @@ class AareDAQ: if self.__cfg.simulated_detector: logger.info("Simulated detector mode enabled; skipping JFJoch start.") - # else: - # self.__jfjoch.measure_rotation(request, status, self.__cfg.xrf) + else: + self.__jfjoch.measure_rotation(request, status, self.__cfg.xrf) if request.screening: self.__devs.aerotech.screening_scan( @@ -1036,21 +1059,11 @@ class AareDAQ: if self.__cfg.simulated_detector: logger.warning("Detector in simulation mode, returning fake zero rotation result.") - result = self._build_fake_rotation_result(request) + result = self._build_fake_rotation_result(request) + else: + # Let JFJochCommunicationError propagate + result = self.__jfjoch.wait_till_done(60) - # else: - # # Let JFJochCommunicationError propagate - # result = self.__jfjoch.wait_till_done(60) - self.__set_state(BeamlineStateEnum.SampleAlignment) - if self.sample is not None and self.sample.db_id is not None: - self.save_screenshot_db(self.sample.db_id, "scan_preview") - try: - self.__aare.sample_collected(self.sample) - self.__aare.ingest_scan(sample=self.sample, result=result.result, - geom=self.sample_geometry, beam_mark_pxl=self.__cfg.get_beam_mark(self.zoom)) - - except Exception as e: - logger.error(f"Exception ingesting scan: {e}") except JFJochCommunicationError: raise except Exception as e: @@ -1834,9 +1847,7 @@ class AareDAQ: self._emit_face_detection_progress(result) logger.info(f"face_detection done at {time.perf_counter() - start}") - hex_string = secrets.token_hex(3) # 3 bytes = 6 hex characters - print(hex_string.upper()) - + # Step 4: Auto-center and raster hex_string = secrets.token_hex(3) raster_params = self.get_auto_raster_params() geom = self.sample_geometry