diff --git a/src/aarecommon/math/diffraction_geometry.py b/src/aarecommon/math/diffraction_geometry.py index 3bd8e42..2c86afd 100644 --- a/src/aarecommon/math/diffraction_geometry.py +++ b/src/aarecommon/math/diffraction_geometry.py @@ -1,11 +1,15 @@ import math from typing import Annotated -from pydantic import BaseModel, Field +from pydantic import AfterValidator, BaseModel, Field + + +def round_dp(ndigits: int, /) -> AfterValidator: + return AfterValidator(lambda v: round(v, ndigits)) class DiffractionGeometry(BaseModel): - energy_keV: Annotated[float, Field(gt=1.0, lt=100.0)] + energy_keV: Annotated[float, Field(gt=1.0, lt=100.0), round_dp(3)] dtz_mm: Annotated[float, Field(gt=10.0, lt=5000.0)] pixel_size_mm: Annotated[float, Field(ge=0.05, le=0.5)] beam_center_pxl: tuple[float, float]