Files
Jungfraujoch/image_analysis/bragg_integration/SystematicAbsence.h

24 lines
777 B
C

// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
// SPDX-License-Identifier: GPL-3.0-only
#pragma once
inline bool odd_int(int v) { return (v & 1) != 0; }
inline bool systematic_absence(int h, int k, int l, char centering) {
if (h == 0 && k == 0 && l == 0) return true;
switch (centering) {
case 'I': return odd_int(h + k + l);
case 'A': return odd_int(k + l);
case 'B': return odd_int(h + l);
case 'C': return odd_int(h + k);
case 'F': return (odd_int(h + k) || odd_int(h + l) || odd_int(k + l));
case 'R': {
int mod = (-h + k + l) % 3;
if (mod < 0) mod += 3;
return mod != 0;
}
default: return false; // P
}
}