1. GenX - neutron and x-ray reflectometry and grazing-incidence small-angle scattering
GenX is a versatile program using the differential evolution algorithm for fitting, primarily, X-ray and neutron reflectivity data, lately also surface x-ray diffraction data . The differential evolution algorithm is a robust optimization method which avoids local minima but at same is a highly effective. GenX is written in python and uses the wxpython package for the Graphical User Interface (GUI) Screenshot. A model to fit is defined either through a GUI plug-in or via a python script. The possibility to script everything makes it easy to develop completely new fitting model. Clearly, GenX is extremely modular, making it possible to extend the program with models and plug-ins for most fitting problems. At the present GenX is shipped with models for x-ray and neutron specular reflectivity, off-specular x-ray reflectivity and surface x-ray diffraction. A detailed description, of a older version, has been published in . The program can be downloaded by clicking on the link on the left hand side.
 GenX- Home
 Bjorck, M. & Andersson, G.; GenX: an extensible X-ray reflectivity refinement program utilizing differential evolution, (2007). J. Appl. Cryst. 40, 1174-1178. https://doi.org/10.1107/S0021889807045086
2. BornAgain - neutron and x-ray reflectometry and grazing-incidence small-angle scattering
BornAgain - open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering. Its name, BornAgain, alludes to the central role of the distorted-wave Born approximation in the physical description of the scattering process. The software provides a generic framework for modeling multilayer samples with smooth or rough interfaces and with various types of embedded nanoparticles.
BornAgain is supported under Windows, Mac OS X and Linux operating systems. For Windows and MacOS we provide binary installer packages, both for Python2 and Python3. For Unix-like operating systems (including Linux and Mac OS X) we support installation from source.
 BornAgain - Home
 BornAgain: software for simulating and fitting grazing-incidence small-angle scattering, J. Appl. Cryst. (2020). 53, 262-276, https://doi.org/10.1107/S1600576719016789
3. REFLEX - a program for X-rays and Neutron reflectivity data analysis
A program entitled REFLEX, which is a user-friendly freeware program working under Windows and Linux platforms. The program should be of great interest to the scientific community dealing with the calculation of absolute neutron and X-ray reflectivity curves. In the case of X-rays, s and p polarized waves are included, with the objective of providing reliable calculation of X-ray reflectivity curves in the soft region of the X-ray spectrum. For hard X-rays, the default calculation is made in s polarization. In addition, REFLEX can take into account any type of fluid in contact with the top surface of the film. This option is likely to be of particular interest to researchers whose work involves complex environments such as fluids under pressure. Fitting routines are implemented to provide the electron-density profile or scattering-length-density profile of the studied material. [1.]
Reflex is a standalone software dedicated to the simulation and analysis of X-rays and neutron reflectiity from multilayers (implemented under Matlab but it does not need Matlab to work). The frequent use of X-rays measurements by our group has motivated the development of such a tool. Reflex is not distributed with a profit-making objective but in order to share our experience in X-rays data analysis.
 Vignaud, G. & Gibaud, A.; REFLEX: a program for the analysis of specular X-ray and neutron reflectivity data, (2019). J. Appl. Cryst. 52, 201-213. https://doi.org/10.1107/S1600576718018186
 REFLEX - Home
4. refnx - neutron and X-ray reflectometry analysis in Python
refnx is a model-based neutron and X-ray reflectometry data analysis package written in Python. It is cross platform and has been tested on Linux, macOS and Windows. Its graphical user interface is browser based, through a Jupyter notebook. Model construction is modular, being composed from a series of components that each describe a subset of the interface, parameterized in terms of physically relevant parameters (volume fraction of a polymer, lipid area per molecule etc.). The model and data are used to create an objective, which is used to calculate the residuals, log-likelihood and log-prior probabilities of the system. Objectives are combined to perform co-refinement of multiple data sets and mixed-area models. Prior knowledge of parameter values is encoded as probability distribution functions or bounds on all parameters in the system. Additional prior probability terms can be defined for sets of components, over and above those available from the parameters alone. Algebraic parameter constraints are available. The software offers a choice of fitting approaches, including least-squares (global and gradient-based optimizers) and a Bayesian approach using a Markov-chain Monte Carlo algorithm to investigate the posterior distribution of the model parameters. The Bayesian approach is useful for examining parameter covariances, model selection and variability in the resulting scattering length density profiles. The package is designed to facilitate reproducible research; its use in Jupyter notebooks, and subsequent distribution of those notebooks as supporting information, permits straightforward reproduction of analyses.
 Nelson, A. R. J. & Prescott, S. W., refnx: neutron and X-ray reflectometry analysis in Python, (2019). J. Appl. Cryst. 52, 193-200. http://journals.iucr.org/j/issues/2019/01/00/index.html
5. GIDVis - a modular MATLAB program to analyze grazing incidence diffraction images
GIDVis is a software package based on MATLAB specialized for, but not limited to, the visualization and analysis of grazing-incidence thin-film X-ray diffraction data obtained during sample rotation around the surface normal. GIDVis allows the user to perform detector calibration, data stitching, intensity corrections, standard data evaluation (e.g. cuts and integrations along specific reciprocal-space directions), crystal phase analysis etc. To take full advantage of the measured data in the case of sample rotation, pole figures can easily be calculated from the experimental data for any value of the scattering angle covered. 
GIDVis is based on MATLAB and released under the terms of the GNU General Public Licence, either version 3 of the licence or any later version. It can be obtained at  free of charge. Two download options are provided. (i) For users without MATLAB, executable files for Windows and Linux are provided. To run, they require the MATLAB runtime, which can be downloaded from The Mathworks Inc.  free of charge. (ii) The GIDVis source code is also provided in our online repository, allowing users to adapt the program to their needs (requires MATLAB).
 Schrode, B., Pachmajer, S., Dohr, M., Rothel, C., Domke, J., Fritz, T., Resel, R. & Werzer, O., GIDVis: a comprehensive software tool for geometry-independent grazing-incidence X-ray diffraction data analysis and pole-figure calculations, (2019). J. Appl. Cryst. 52, 683-689. https://doi.org/10.1107/S1600576719004485
 GIDVis - Home
Azimutal cut in GIXSGUI: