Single crystal experiments (diffraction and inelastic) require a special norm to compute a proper cross section. It is implemented by Mantid's MDNorm algorithm and described in https://doi.org/10.1107/S1600576722009645. See equations 11, 12 for the mathematical expression.
We need to implement this in a way that it can be used by as many instruments as possible. This normalisation is part of a user's interactive exploration of the data and needs to be recomputed whenever they change their Q-dE (or hkl-dE) binning. So it should be fairly fast which may require some statically compiled code. But I am not sure about that yet. (Numba may not be enough if we want to parallelise because the different threads would have to write to the same array which requires synchronisation; probably atomics for efficiency.)
Single crystal experiments (diffraction and inelastic) require a special norm to compute a proper cross section. It is implemented by Mantid's MDNorm algorithm and described in https://doi.org/10.1107/S1600576722009645. See equations 11, 12 for the mathematical expression.
We need to implement this in a way that it can be used by as many instruments as possible. This normalisation is part of a user's interactive exploration of the data and needs to be recomputed whenever they change their Q-dE (or hkl-dE) binning. So it should be fairly fast which may require some statically compiled code. But I am not sure about that yet. (Numba may not be enough if we want to parallelise because the different threads would have to write to the same array which requires synchronisation; probably atomics for efficiency.)