From 9cdca7b1b9edc7103e41d6805ad009f9cac272fd Mon Sep 17 00:00:00 2001 From: Thomas White Date: Mon, 20 Aug 2018 17:49:57 +0200 Subject: RefList: add contribution list --- libcrystfel/src/reflist.c | 34 ++++++++++++++++++++++++++++++++-- libcrystfel/src/reflist.h | 19 +++++++++++++++++-- 2 files changed, 49 insertions(+), 4 deletions(-) (limited to 'libcrystfel') diff --git a/libcrystfel/src/reflist.c b/libcrystfel/src/reflist.c index a35aa575..8b5dee3e 100644 --- a/libcrystfel/src/reflist.c +++ b/libcrystfel/src/reflist.c @@ -3,11 +3,11 @@ * * Fast reflection/peak list * - * Copyright © 2012-2016 Deutsches Elektronen-Synchrotron DESY, + * Copyright © 2012-2018 Deutsches Elektronen-Synchrotron DESY, * a research centre of the Helmholtz Association. * * Authors: - * 2011-2016 Thomas White + * 2011-2018 Thomas White * * This file is part of CrystFEL. * @@ -100,6 +100,9 @@ struct _refldata { double peak; double mean_bg; + /* Contributions */ + struct reflection_contributions *contribs; + /* User-specified temporary values */ double temp1; double temp2; @@ -587,6 +590,18 @@ int get_flag(const Reflection *refl) } +/** + * get_contributions: + * @refl: A %Reflection + * + * Returns: the reflection's contribution list + * + **/ +struct reflection_contributions *get_contributions(const Reflection *refl) +{ + return refl->data.contribs; +} + /********************************** Setters ***********************************/ /** @@ -848,6 +863,21 @@ void set_flag(Reflection *refl, int flag) } +/** + * set_contributions: + * @refl: A %Reflection + * @contribs: Pointer to the contribution list + * + * Note that the pointer will be stored, not the contents of the structure. + * + **/ +void set_contributions(Reflection *refl, + struct reflection_contributions *contribs) +{ + refl->data.contribs = contribs; +} + + /********************************* Insertion **********************************/ static Reflection *rotate_once(Reflection *refl, int dir) diff --git a/libcrystfel/src/reflist.h b/libcrystfel/src/reflist.h index 9f494474..f2fadb8b 100644 --- a/libcrystfel/src/reflist.h +++ b/libcrystfel/src/reflist.h @@ -3,11 +3,11 @@ * * Fast reflection/peak list * - * Copyright © 2012-2017 Deutsches Elektronen-Synchrotron DESY, + * Copyright © 2012-2018 Deutsches Elektronen-Synchrotron DESY, * a research centre of the Helmholtz Association. * * Authors: - * 2011-2017 Thomas White + * 2011-2018 Thomas White * * This file is part of CrystFEL. * @@ -38,6 +38,7 @@ #define GET_K(serial) ((((serial) & 0x000ffc00)>>10)-512) #define GET_L(serial) (((serial) & 0x000003ff)-512) + /** * RefList: * @@ -73,6 +74,17 @@ typedef struct _reflistiterator RefListIterator; extern "C" { #endif +typedef struct _crystal Crystal; + +/* Structure representing the contributions to a merged reflection */ +struct reflection_contributions +{ + int n_contrib; + int max_contrib; + Reflection **contribs; + Crystal **contrib_crystals; +}; + /* Creation/deletion */ extern RefList *reflist_new(void); extern void reflist_free(RefList *list); @@ -105,6 +117,7 @@ extern double get_phase(const Reflection *refl, int *have_phase); extern double get_peak(const Reflection *refl); extern double get_mean_bg(const Reflection *refl); extern int get_flag(const Reflection *refl); +extern struct reflection_contributions *get_contributions(const Reflection *refl); /* Set */ extern void copy_data(Reflection *to, const Reflection *from); @@ -126,6 +139,8 @@ extern void set_mean_bg(Reflection *refl, double mean_bg); extern void set_symmetric_indices(Reflection *refl, signed int hs, signed int ks, signed int ls); extern void set_flag(Reflection *refl, int flag); +extern void set_contributions(Reflection *refl, + struct reflection_contributions *contribs); /* Insertion */ extern Reflection *add_refl(RefList *list, -- cgit v1.2.3