From 0897221e282cdfb66f79b9a9539be504574c2a14 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Thu, 2 May 2013 17:45:20 +0200 Subject: compare_hkl: Calculate CCano only from acentric reflections --- libcrystfel/src/symmetry.c | 28 ++++++++++++++++++++++++++++ libcrystfel/src/symmetry.h | 3 +++ 2 files changed, 31 insertions(+) (limited to 'libcrystfel/src') 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 @@ -1191,6 +1191,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 diff --git a/libcrystfel/src/symmetry.h b/libcrystfel/src/symmetry.h index 68f17991..6bb6210e 100644 --- a/libcrystfel/src/symmetry.h +++ b/libcrystfel/src/symmetry.h @@ -80,6 +80,9 @@ extern const char *symmetry_name(const SymOpList *ops); extern void set_symmetry_name(SymOpList *ops, const char *name); extern void describe_symmetry(const SymOpList *s); +extern int is_centric(signed int h, signed int k, signed int l, + const SymOpList *ops); + extern void add_symop(SymOpList *ops, IntegerMatrix *m); #endif /* SYMMETRY_H */ -- cgit v1.2.3