DAQ: Deconvolute beam mark / beam center
This commit is contained in:
@@ -9,7 +9,7 @@ import redis_lock
|
||||
from aaredaqlib.coordinate import Coordinate
|
||||
from aaredaqlib.models import (
|
||||
BeamlineSettingsModel,
|
||||
BeamCenterCoeffModel,
|
||||
BeamMarkCoeffModel,
|
||||
LoopCenteringZoomModel,
|
||||
def_loop_centering_zoom,
|
||||
SampleShortInfo,
|
||||
@@ -241,16 +241,16 @@ class BeamlineConfig:
|
||||
self.__client.set(f"{self.__bl}:current_sample", sample.model_dump_json())
|
||||
|
||||
@property
|
||||
def beam_center_coeff(self) -> BeamCenterCoeffModel:
|
||||
def beam_mark_coeff(self) -> BeamMarkCoeffModel:
|
||||
tmp = self.__client.get(f"{self.__bl}:beam_center_camera")
|
||||
if tmp is None:
|
||||
return BeamCenterCoeffModel()
|
||||
return BeamMarkCoeffModel()
|
||||
|
||||
data_dict = json.loads(tmp)
|
||||
return BeamCenterCoeffModel(**data_dict)
|
||||
return BeamMarkCoeffModel(**data_dict)
|
||||
|
||||
@beam_center_coeff.setter
|
||||
def beam_center_coeff(self, data: BeamCenterCoeffModel):
|
||||
@beam_mark_coeff.setter
|
||||
def beam_mark_coeff(self, data: BeamMarkCoeffModel):
|
||||
self.__client.set(f"{self.__bl}:beam_center_camera", data.model_dump_json())
|
||||
|
||||
@property
|
||||
@@ -343,14 +343,14 @@ class BeamlineConfig:
|
||||
x_pxls.append(float(json.loads(v)["x"]))
|
||||
y_pxls.append(float(json.loads(v)["y"]))
|
||||
|
||||
model = BeamCenterCoeffModel(
|
||||
model = BeamMarkCoeffModel(
|
||||
coeff_x=tuple(np.polyfit(zooms, x_pxls, deg=2)),
|
||||
coeff_y=tuple(np.polyfit(zooms, y_pxls, deg=2)),
|
||||
)
|
||||
self.beam_center_coeff = model
|
||||
self.beam_mark_coeff = model
|
||||
|
||||
def get_beam_mark(self, zoom: float) -> tuple[float, float]:
|
||||
model = self.beam_center_coeff
|
||||
model = self.beam_mark_coeff
|
||||
x_pxl = np.polyval(model.coeff_x, zoom)
|
||||
y_pxl = np.polyval(model.coeff_y, zoom)
|
||||
return float(x_pxl), float(y_pxl)
|
||||
|
||||
+15
-8
@@ -389,7 +389,7 @@ class AareDAQ:
|
||||
zoom = self.__devs.zoom
|
||||
abr_pos = self.__cfg.abr_meas_pos
|
||||
return SampleGeometryModel(
|
||||
beam_location_pxl=self.__cfg.beam_center_coeff.apply(zoom),
|
||||
beam_location_pxl=self.__cfg.beam_mark_coeff.apply(zoom),
|
||||
pixel_in_mm=self.__cfg.pixel_to_mm(zoom),
|
||||
omega_deg=self.__devs.aerotech.omega,
|
||||
smargon=self.__devs.smargon.readback,
|
||||
@@ -399,11 +399,18 @@ class AareDAQ:
|
||||
y=self.__devs.gmy.value - abr_pos.y,
|
||||
z=self.__devs.gmz.value - abr_pos.z,
|
||||
),
|
||||
aerotech_meas=self.__devs.abr_pos,
|
||||
detector_radius_mm = 115.0 # PILATUS4 2M / JUNGFRAU 9M
|
||||
aerotech_meas=self.__devs.abr_pos
|
||||
)
|
||||
|
||||
def get_beam_center(self):
|
||||
@property
|
||||
def beam_center(self) -> Tuple[float, float]:
|
||||
return self.__cfg.beam_center
|
||||
|
||||
@beam_center.setter
|
||||
def beam_center(self, val: Tuple[float, float]):
|
||||
self.__cfg.beam_center = val
|
||||
|
||||
def get_beam_mark(self):
|
||||
return self.__cfg.get_beam_mark(self.__devs.zoom)
|
||||
|
||||
def listen_changes(self) -> redis.client.PubSub:
|
||||
@@ -603,10 +610,10 @@ class AareDAQ:
|
||||
)
|
||||
)
|
||||
|
||||
self.__rotation(
|
||||
RotationScanRequest(total_omega_deg=360,
|
||||
start_omega_deg=0,
|
||||
total_time_sec=18))
|
||||
#self.__rotation(
|
||||
# RotationScanRequest(total_omega_deg=360,
|
||||
# start_omega_deg=0,
|
||||
# total_time_sec=18))
|
||||
|
||||
self.save_screenshot_db(sample.db_id, "after_dc.jpeg")
|
||||
|
||||
|
||||
@@ -98,19 +98,25 @@ async def save_abr_meas_pos(token: str = Depends(oauth2_scheme)):
|
||||
return "OK"
|
||||
|
||||
|
||||
@app.post("/beam_center/mark")
|
||||
@app.post("/beam_mark/add")
|
||||
async def mark_beam_center(x: float, y: float, token: str = Depends(oauth2_scheme)):
|
||||
auth.check_jwt_staff(auth.parse_token(token))
|
||||
daq.mark_beam(x, y)
|
||||
return "OK"
|
||||
|
||||
|
||||
@app.post("/beam_center/clear")
|
||||
async def clear_beam_center(token: str = Depends(oauth2_scheme)):
|
||||
@app.post("/beam_mark/clear")
|
||||
async def clear_beam_mark(token: str = Depends(oauth2_scheme)):
|
||||
auth.check_jwt_staff(auth.parse_token(token))
|
||||
daq.clear_mark_beam()
|
||||
return "OK"
|
||||
|
||||
@app.post("/beamline/beam_center")
|
||||
async def beam_center(x: float, y: float, token: str = Depends(oauth2_scheme)):
|
||||
auth.check_jwt_staff(auth.parse_token(token))
|
||||
daq.beam_center = (x, y)
|
||||
return "OK"
|
||||
|
||||
@app.put("/beamline/samcam")
|
||||
async def samcam_settings(s: SampleCameraSettings, token: str = Depends(oauth2_scheme)):
|
||||
auth.check_jwt_rw(cfg, auth.parse_token(token))
|
||||
|
||||
Reference in New Issue
Block a user