2.9 KiB
Algorithms for data analysis
Azimuthal integration
2D azimuthal integration is implemented with a histogram-based algorithm, without split pixels. Solid angle and polarization corrections are available.
Spot finding
Spot finding is implemented with multiple thresholds, rejecting spots based on:
- signal-to-noise ration of 31x31 pixel rectangle around the spot,
- pixel intensity,
- spot resolution,
- number of pixels.
Finding strong pixels is currently implemented on CPU and FPGA. Combining strong pixels into spots is done with a Connected-component labeling (CCL) algorithm by Arthur Hennequin and coworkers, developed for CERN high-energy physics applications.
Indexing
Two indexing algorithms are implemented:
- Fast feedback indexer: Algorithm developed by Hans-Christian Stadler (PSI), based on TORO method; requires providing approximate unit cell; implemented on GPUs
- FFT indexing: implementation on classical M. Rossmann's FFT algorithm; doesn't require known unit cell; implemented on both GPUs (with CuFFT) and CPUs (with FFTW)
Both algorithms share the same refinement routine with the least trimmed squares procedure, see TORO papers for details.
Lattice search
If the user provides the space group number in the measurement start call, lattice symmetry is taken for granted for the further refinement.
Otherwise, Jungfraujoch will search for an optimal Bravais lattice. First it performs Niggli reduction and calculates G6 metric tensor, using the routine implemented in the Gemmi library. Next, it goes through Niggli classes and selects the highest symmetry one, according to Table 3.1.3.1 by P. M. de Wolff in the International Tables for Crystallography (2016). Vol. A. It is assumed that the lattice is matching Niggli class if distance is within 3% difference and angles are within three deg. tolerance. Niggli class 43 (mI) is not implemented.
Note: In case of special cases, where no lattice search is expected, it is necessary to set the space group number as 1 (P1).
Geometry refinement
Geometry refinement is done with the non-linear least squares procedure. Refinement optimizes crystal lattice and beam center in a single run. Solution is implemented with Google Ceres solver, running on CPU. For higher symmetry space groups, refinement imposes constraints on the equality of cell lengths and 90/120 deg. angles.
Bragg integration
Integration is implemented with pure summation (no profile fitting), using a 3-circle method from CrystFEL. Bragg spot predictions are calculated based on a distance from the Ewald sphere, with no explicit use of bandwidth or mosaicity. Maximum distance is estimated as twice of the profile radius. Profile radius is calculated as a mean of distance from the Ewald sphere of indexed spots. Systematic absences are implemented for all systems excluding R-centering.