diff options
author | Onderwaater <onderwaa@esrf.fr> | 2016-04-08 16:56:34 +0200 |
---|---|---|
committer | Onderwaater <onderwaa@esrf.fr> | 2016-04-08 16:56:34 +0200 |
commit | 6e6db38d4f28bd8ef81459ce7f946619d24255b6 (patch) | |
tree | 618605f703370a15c6ed27a5e560a36f5b3cf7d4 | |
parent | b78cac8298f0599e588ab517a8af08af3c526d0c (diff) | |
parent | a6c4d417e5ed28d3ec648625865ccb4a0cd8da21 (diff) |
Merge pull request #16 from picca/master
sixs add an option to rotate the detector around x (1, 0, 0)
-rw-r--r-- | binoculars/backends/sixs.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/binoculars/backends/sixs.py b/binoculars/backends/sixs.py index 452b137..1a414a4 100644 --- a/binoculars/backends/sixs.py +++ b/binoculars/backends/sixs.py @@ -88,8 +88,6 @@ class HKLProjection(backend.ProjectionBase): ki = [1, 0, 0] RUB_1 = inv(numpy.dot(R, UB)) RUB_1P = numpy.dot(RUB_1, P) - # rotate the detector around x of 90 degrees - RUB_1P = numpy.dot(RUB_1P, M(math.pi/2., [1, 0, 0])) kf = normalized(pixels, axis=0) hkl_f = numpy.tensordot(RUB_1P, kf, axes=1) hkl_i = numpy.dot(RUB_1, ki) @@ -132,8 +130,6 @@ class QxQyQzProjection(backend.ProjectionBase): ki = [1, 0, 0] RUB_1 = inv(numpy.dot(R, UB)) RUB_1P = numpy.dot(RUB_1, P) - # rotate the detector around x of 90 degrees - #RUB_1P = numpy.dot(RUB_1P, M(math.pi/2., [1, 0, 0])) kf = normalized(pixels, axis=0) hkl_f = numpy.tensordot(RUB_1P, kf, axes=1) hkl_i = numpy.dot(RUB_1, ki) @@ -419,6 +415,12 @@ class SIXS(backend.InputBase): self.config.sdd = float(config.pop('sdd')) # sample to detector distance (mm) self.config.centralpixel = util.parse_tuple(config.pop('centralpixel'), length=2, type=int) # x,y self.config.maskmatrix = config.pop('maskmatrix', None) # Optional, if supplied pixels where the mask is 0 will be removed + self.config.detrot = config.pop('detrot', None) # detector rotation around x (1, 0, 0) + if self.config.detrot is not None: + try: + self.config.detrot = float(self.config.detrot) + except ValueError: + self.config.detrot = None def get_destination_options(self, command): if not command: @@ -484,14 +486,17 @@ class FlyScanUHV(SIXS): k = 2 * math.pi / dataframe.source.wavelength - # compute R and P + # sample s_axes = rotation_axes(dataframe.diffractometer.axes.graph, dataframe.diffractometer.axes.sample) + R = reduce(numpy.dot, (zip_with(M, numpy.radians(s_values), s_axes))) + + # detector d_axes = rotation_axes(dataframe.diffractometer.axes.graph, dataframe.diffractometer.axes.detector) - - R = reduce(numpy.dot, (zip_with(M, numpy.radians(s_values), s_axes))) P = reduce(numpy.dot, (zip_with(M, numpy.radians(d_values), d_axes))) + if self.config.detrot is not None: + P = numpy.dot(P, M(math.radians(self.config.detrot), [1, 0, 0])) pdataframe = PDataFrame(pixels, k, dataframe.diffractometer.ub, R, P) |