X-ray spectrometer simulation code with a detailed support of mosaic crystals,☆☆

https://doi.org/10.1016/j.cpc.2020.107811Get rights and content

Abstract

We present a newly developed ray tracing code called mmpxrt, dedicated to study and design X-ray crystal optics, with a special focus on mosaic crystal spectrometers. Its main advantage over other currently available ray tracing codes is that it includes a detailed and benchmarked algorithm to treat mosaic crystals, especially HOPG and HAPG (Highly Oriented/Annealed Pyrolitic Graphite). The code is primarily designed to study crystal spectrometers, therefore their implementation is very straightforward and includes the automated evaluation of their performance. It can, however, be used universally to study other Bragg crystal based instruments, such as monochromators, mirrors, and analyzers. The code is publicly available, written in Python3 and is distributed as a Python library with test cases and user manual included.

Program summary

Program title: mmpxrt

CPC Library link to program files: https://dx.doi.org/10.17632/dkpbzvtz3b.1

Developer’s repository link: https://gitlab.hzdr.de/smid55/mmpxrt

Licensing provisions: MIT

Programming language: Python 3

Nature of problem: Mosaic crystals are commonly used for X-ray spectroscopy and similar applications. However, the complicated structure of such crystals makes their function non-trivial and often counter-intuitive, therefore a proper simulation tool is needed to design and understand such instruments.

Solution method: We have developed a Monte-Carlo X-ray ray tracing code which simulates the setup of given spectrometer, analyzes the results and provides the performance of the spectrometer.

Introduction

Mosaic crystals have been used in X-ray spectroscopy for decades [1], [2], in recent years, they found many new applications in high-intensity laser–plasma studies where a limited number of photons are detected in each shot and single shot measurement is desirable. Then high crystal reflectivity is required to obtain measurable signal. This concerns especially applications for X-ray Thomson scattering (XRTS) [3] or laser-driven betatron radiation used for absorption spectroscopy [4].

The first ray tracing model calculating with mosaic crystals was written already in 1991 [5] as a part of the SHADOW code [6]. Novel code was presented in 2012 [7], but this code is not available for general public use. This situation led us to develop a novel code within modern language Python3, optimized to easily model various X-ray spectrometers and similar devices and simple enough to allow users with basic knowledge of the language to run their own cases, allowing the code to be publicly available.

Apart from the focus on mosaic crystals, the strength of the code is that it comes with a built-in evaluation tool to assess the most basic spectrometer parameters and which produces useful graphical output. Its open structure in Python3 language also allows, e.g., batch simulations or parameter scans.

Section snippets

Code workflow

The code is designed to provide powerful and an easy-to-use characterization of X-ray spectrometers. The random nature of mosaic crystals implies that a Monte Carlo simulational approach is very suitable. The randomness is used in two places. First, the properties of each ray are randomly calculated based on the given probability distribution of their initial direction, source position, and energy. Second, the interaction with a mosaic crystal is governed by random spread of the crystallites

Mosaicity algorithm

The mosaic crystals are composed of many small crystallites (typically tens to hundreds nanometers in size) with partially random orientation [2]. Their orientation is described by the mosaic distribution function, i.e. the distribution of their surface deviation from the crystal surface. It was shown that this distribution can be well described by a double Lorentzian profile, where one Lorentzian curve with FWHM equal to the mosaicity m models the peak, and a second one, significantly broader,

Evaluation

The strength of the code lies in the evaluation tool, which calculates the most important performance parameters. Most of those are easy to understand and are therefore only briefly described in the user manual, however the spectral resolution, efficiency and source size broadening deserve a closer attention and are discussed here.

Test cases

This section presents five spectrometer cases and highlights interesting results, showing the modes of operation and benefits of using this code for the purpose of design and evaluation of experiments. The cases described in this section are also provided as examples within the distribution package.

The first three cases present different features of similar HOPG spectrometers. The first case refers to a study of PSF and shows how the penetration depth can be experimentally inferred. The second

Conclusions

We have presented a new ray tracing code mmpxrt whose primary aim is to help in design and evaluation of X-ray crystal spectrometers, both with monocrystals and mosaic crystals. The code is supplied as a Python3 library, which provides a huge flexibility and possibility to scan any input parameters, but requires (minimal) programming skills to operate it. It is provided with a set of running examples based on cases presented in this article, and with a user manual. The output of the code

Declaration of Competing Interest

The authors declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper.

Acknowledgment

This research was supported by the Helmholtz Association, Germany under the grant no. VH-NG-1338.

References (10)

  • IceG. et al.

    Nucl. Instrum. Methods Phys. Res. A

    (1990)
  • LaiB. et al.

    Nucl. Instrum. Methods Phys. Res. A

    (1986)
  • LegallH. et al.

    J. Appl. Crystallogr.

    (2009)
  • GamboaE.J. et al.

    J. Instrum.

    (2011)
  • ŠmídM. et al.

    Rev. Sci. Instrum.

    (2017)
There are more references available in the full text version of this article.

The review of this paper was arranged by Prof. Stephan Fritzsche.

☆☆

This paper and its associated computer program are available via the Computer Physics Communication homepage on ScienceDirect (http://www.sciencedirect.com/science/journal/00104655)

View full text