Skip to content

Commit

Permalink
Merge pull request #2002 from kif/1992_saxs_mode
Browse files Browse the repository at this point in the history
Set the PONI to the beam-stop and not the opposite in SAXS mode.
  • Loading branch information
kif authored Nov 22, 2023
2 parents 0067621 + 9a30cf2 commit 17a9342
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 4 deletions.
18 changes: 17 additions & 1 deletion src/pyFAI/gui/tasks/GeometryTask.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

__authors__ = ["V. Valls"]
__license__ = "MIT"
__date__ = "05/09/2023"
__date__ = "22/11/2023"

import logging
import numpy
Expand All @@ -51,6 +51,9 @@
from ..helper import model_transform
from ..utils import unitutils
from ... import units as core_units
from ...geometry import fit2d
from ...io.ponifile import PoniFile

from silx.image import marchingsquares

_logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -666,6 +669,19 @@ def __setSaxsConstraints(self):
constraintsModel.unlockSignals()
geometry = calibrationModel.fittedGeometry()
geometry.lockSignals()

try:
poni_tilted = PoniFile(geometry)
poni_tilted._detector = self.model().experimentSettingsModel().detector()
f2d = fit2d.convert_to_Fit2d(poni_tilted)._asdict()
f2d["tilt"] = 0
poni_notilt = fit2d.convert_from_Fit2d(f2d)
except Exception as err:
_logger.error("%s: %s", type(err), err)
else:
geometry.poni1().setValue(poni_notilt.poni1)
geometry.poni2().setValue(poni_notilt.poni2)

geometry.rotation1().setValue(0)
geometry.rotation2().setValue(0)
geometry.rotation3().setValue(0)
Expand Down
26 changes: 23 additions & 3 deletions src/pyFAI/io/ponifile.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Project: Azimuthal integration
# https://github.com/silx-kit/pyFAI
#
# Copyright (C) 2015-2021 European Synchrotron Radiation Facility, Grenoble, France
# Copyright (C) 2015-2023 European Synchrotron Radiation Facility, Grenoble, France
#
# Principal author: Jérôme Kieffer (Jerome.Kieffer@ESRF.eu)
#
Expand All @@ -28,10 +28,10 @@
"""Module function to manage poni files.
"""

__author__ = "Jerome Kieffer"
__author__ = "Jérôme Kieffer"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
__date__ = "29/06/2023"
__date__ = "22/11/2023"
__docformat__ = 'restructuredtext'

import collections
Expand All @@ -41,6 +41,11 @@
_logger = logging.getLogger(__name__)
import numpy
from .. import detectors
try:
from ..gui.model.GeometryModel import GeometryModel
except ImportError:
GeometryModel = None



class PoniFile(object):
Expand All @@ -60,6 +65,8 @@ def __init__(self, data=None):
self.read_from_dict(data)
elif isinstance(data, (str,)):
self.read_from_file(data)
elif GeometryModel and isinstance(data, GeometryModel):
self.read_from_geometryModel(data)
else:
self.read_from_duck(data)

Expand Down Expand Up @@ -174,6 +181,19 @@ def read_from_duck(self, duck):
self._wavelength = duck.wavelength
self._detector = duck.detector

def read_from_geometryModel(self, model: GeometryModel, detector=None):
"""Initialize the object from a GeometryModel
pyFAI.gui.model.GeometryModel.GeometryModel"""
self._dist = model.distance().value()
self._poni1 = model.poni1().value()
self._poni2 = model.poni2().value()
self._rot1 = model.rotation1().value()
self._rot2 = model.rotation2().value()
self._rot3 = model.rotation3().value()
self._wavelength = model.wavelength().value()
self._detector = detector

def write(self, fd):
"""Write this object to an open stream.
"""
Expand Down

0 comments on commit 17a9342

Please sign in to comment.