46 lines
2.9 KiB
Markdown
46 lines
2.9 KiB
Markdown
# 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](https://onlinelibrary.wiley.com/iucr/itc/Ac/ch3o1v0001/table3o1o3o1/) 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. |