RIXS data extraction workflow#

This is an example of RIXS data extraction at BM16.

[ ]:
%load_ext autoreload
%autoreload 2

from pathlib import Path
from larch.io.specfile_reader import DataSourceSpecH5
from larch.io.rixsdata import RixsData
from larch.plot.plot_rixsdata import plot_rixs, plot_rixs_cuts
from larch.io.rixs_esrf_fame import get_rixs_bm16, save_rixs, search_samples, get_rixs_filenames
from larch.io.rixs_esrf_fame import __version__ as bm16_rixs_reader_version
from larch.io.rixs_esrf_fame import _logger

#_logger.setLevel("DEBUG")  #: uncomment if you want to see debug messages
_logger.debug(f"BM16 RIXS reader version: {bm16_rixs_reader_version} (INFO: this notebook has been tested/developed with 25.1.2)")

datadir = Path("/data/visitor/ch7267/bm16/20250218")
datadir = Path("/data/bm16/inhouse/Archives_data/2025/2025-03_Bertrand_ls3510_Au/bm16/20250305")
rawdir = Path(datadir, "RAW_DATA")
procdir = Path(datadir, "PROCESSED_DATA")

Search the RIXS planes files and save XYZ data to disk#

[ ]:
samples = search_samples(datadir)
[ ]:
selected_sample = 23
fnames = get_rixs_filenames(samples[selected_sample])

Read all the scans and create XYZ data, saved to disk.

[ ]:
selected_rixs_file = fnames[0]
#detector_name = "xpad_roi1"
detector_name = "mercury4_det2_roi1"
r = get_rixs_bm16(selected_rixs_file, mode="rixs", counter_signal=detector_name, out_dir=procdir, save=False)

[ ]:
# create a RixsData object, which is a container for RIXS data
rd = RixsData()
rd.load_from_dict(r)

Plot data#

Plot the RIXS plane, crop, take cuts

[ ]:
fig = plot_rixs(rd)
[ ]:
fig = plot_rixs(rd, et=False)
[ ]:
#select a region
rd.reset()
rd.crop((10200, 1805, 10230, 1825))
[ ]:
fig = plot_rixs(rd, fig_title=rd.sample_name)
[ ]:
rd.cut(1812.5, "CET", label="1st_white_line")
rd.cut(1817.5, "CET", label="2nd_white_line")
#rd.cut(5886.49, "CEE", label="Ka2_pre1max")
#rd.cut(5887.71, "CEE", label="Ka2_pre2max")
#
rd.cut(10210, "CIE", label="1st_max")
rd.cut(10215, "CIE", label="2nd_max")
[ ]:
fig = plot_rixs_cuts(rd)