This tutorial is for the calibration of an Xpad_flat on the Soleil Diffabs Diffractometer.
The calibration data is a scan on the delta motor with a CeO2 calibrant.
%matplotlib nbagg
# first the imports
import os
from math import pi
import pylab
# local import
from soleil import *
# temporary until the ruch is ON
ROOT = os.path.join("/home", "experiences", "instrumentation", "picca", "data", "99160066", "2016", "Run2")
PUBLISHED = os.path.join("/home", "experiences", "instrumentation", "picca", "data", "99160066", "published-data")
# do a calibration with a well centered sample.
# TODO recuperer le point de départ à partir des ponis de référence.
# TODO ajouter le diagramme complet à la fin.
# TODO ajout du mask pour la calibration
json = os.path.join(PUBLISHED, "calibration", "calibration.json")
distance = Length(3.606331e-01)
poni1 = Length(1.314012e-01)
poni2 = Length(3.613907e-02)
rot1 = Angle(0)
rot2_scale = pi / 180.0 # convert degree to radian
rot2_offset = Angle(0.328063469162) # radian
rot3 = Angle(7.19961198098e-07)
params = Calibration(os.path.join(PUBLISHED, "calibration", "XRD18keV_26.nxs"),
DatasetPathWithAttribute("interpretation", b"image"),
DatasetPathContains("scan_data/actuator_1_1"),
[0, 3, 6],
Calibrant("CeO2"),
Detector("Xpad_flat"),
Wavelength(6.8877e-11),
CalibrationParameters(Parameter[Length]("dist", distance, (distance, distance)),
Parameter[Length]("poni1", poni1, (poni1, poni1)),
Parameter[Length]("poni2", poni2, (poni2, poni2)),
Parameter[Angle]("rot1", rot1, (rot1, rot1)),
Parameter[float]("rot2_scale", rot2_scale, (rot2_scale, rot2_scale)),
Parameter[Angle]("rot2_offset", rot2_offset, (rot2_offset-0.5, rot2_offset+0.5)),
Parameter[Angle]("rot3", rot3, (rot3, rot3))
)
)
# save all the ref as images in order to do the calibration with
# pyFAI-calib[2].
# temporary until pyFAI-calib2 can read from NeXuS files.
save_as_edf(params, os.path.join(PUBLISHED, "calibration"))
/home/experiences/instrumentation/picca/data/99160066/published-data/calibration/XRD18keV_26.nxs_00.edf
/home/experiences/instrumentation/picca/data/99160066/published-data/calibration/XRD18keV_26.nxs_03.edf
/home/experiences/instrumentation/picca/data/99160066/published-data/calibration/XRD18keV_26.nxs_06.edf
# execute the calibration
#calibration(json, params)
pylab.show()