Source code for blissoda.demo.processors.utils.pyfai_calib

import json
from pathlib import Path
from typing import Optional

import numpy

from ....bliss_globals import current_session
from ....utils import directories


[docs] def energy_wavelength(x): """keV to m and vice versa""" return 12.398419843320026 * 1e-10 / x
DEFAULT_CALIB = { "difflab6": { "dist": 5e-2, # 5 cm "poni1": 10e-2, # 10 cm "poni2": 10e-2, # 10 cm "rot1": numpy.radians(10), # 10 deg "rot2": 0, # 0 deg "rot3": 0, # 0 deg "energy": 12, # 12 keV "detector": "Pilatus1M", }, # TODO: produce different data or fix PONI "diffcam": { "version": 5, "poni": { "poni_version": 2.1, "dist": 5e-2, # 5 cm "poni1": 10e-2, # 10 cm "poni2": 10e-2, # 10 cm "rot1": numpy.radians(10), # 10 deg "rot2": 0, # 0 deg "rot3": 0, # 0 deg "detector": "detector", "detector_config": {"pixel1": 75e-6, "pixel2": 75e-6}, "wavelength": energy_wavelength(12), # 12 keV }, }, }
[docs] def ensure_pyfai_config(detector_name: str, filename: Optional[str] = None) -> str: """Create pyFAI config if not available yet and returns its filename""" if filename is not None: config_path = Path(filename) else: processed_dir = directories.get_processed_dir( current_session.scan_saving.filename ) config_path = Path(processed_dir, "config", f"pyfaicalib_{detector_name}.json") if not config_path.is_file(): config_path.parent.mkdir(parents=True, exist_ok=True) config_path.write_text(json.dumps(DEFAULT_CALIB[detector_name])) return str(config_path)