aboutsummaryrefslogtreecommitdiff
path: root/libcrystfel/src/symmetry.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcrystfel/src/symmetry.c')
-rw-r--r--libcrystfel/src/symmetry.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/libcrystfel/src/symmetry.c b/libcrystfel/src/symmetry.c
index 4fdc13c6..81d87b25 100644
--- a/libcrystfel/src/symmetry.c
+++ b/libcrystfel/src/symmetry.c
@@ -1192,6 +1192,34 @@ static int any_negative(signed int h, signed int k, signed int l)
/**
+ * is_centric:
+ * @h: h index
+ * @k: k index
+ * @l: l index
+ * @ops: A %SymOpList
+ *
+ * A reflection is centric if it is related by symmetry to its Friedel partner.
+ *
+ * Returns: true if @h @k @l is centric in @ops.
+ *
+ **/
+int is_centric(signed int h, signed int k, signed int l, const SymOpList *ops)
+{
+ signed int ha, ka, la;
+ signed int hb, kb, lb;
+
+ get_asymm(ops, h, k, l, &ha, &ka, &la);
+ get_asymm(ops, -h, -k, -l, &hb, &kb, &lb);
+
+ if ( ha != hb ) return 0;
+ if ( ka != kb ) return 0;
+ if ( la != lb ) return 0;
+
+ return 1;
+}
+
+
+/**
* get_asymm:
* @ops: A %SymOpList, usually corresponding to a point group
* @h: index of a reflection