From 3c1a8352443a5e7ad8dde70229cb0f52f41725f1 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Wed, 16 Mar 2011 10:58:21 +0100 Subject: partialator: Convert to new list format --- src/partialator.c | 71 +++++++++++++++++++++++-------------------------------- 1 file changed, 29 insertions(+), 42 deletions(-) (limited to 'src/partialator.c') diff --git a/src/partialator.c b/src/partialator.c index e99b2291..c2ea7eeb 100644 --- a/src/partialator.c +++ b/src/partialator.c @@ -276,99 +276,86 @@ int main(int argc, char *argv[]) obs = new_items(); for ( i=0; idivergence; images[i].bw = beam->bandwidth; images[i].det = det; + images[i].width = det->max_fs; + images[i].height = det->max_ss; images[i].osf = 1.0; images[i].profile_radius = 0.005e9; - images[i].reflections = reflist_new(); - images[i].lambda = ph_en_to_lambda(eV_to_J(ph_en)); /* Muppet proofing */ images[i].data = NULL; images[i].flags = NULL; images[i].beam = NULL; - /* Read integrated intensities from pattern */ - peaks = reflist_new(); - do { - - Reflection *refl; - signed int h, k, l; - float intensity; - int r; - - rval = fgets(line, 1023, fh); - chomp(line); - - if ( (strlen(line) == 0) || (rval == NULL) ) break; - - r = sscanf(line, "%i %i %i %f", &h, &k, &l, &intensity); - if ( r != 4 ) continue; - - refl = add_refl(peaks, h, k, l); - set_int(refl, intensity); - - } while ( (strlen(line) != 0) && (rval != NULL) ); - /* Calculate initial partialities and fill in intensities from * the stream */ - transfer = find_intersections(&images[i], cell, 0); + predicted = find_intersections(&images[i], + images[i].indexed_cell, 0); + + /* We start again with a new reflection list, this time with + * the asymmetric indices */ + measured = images[i].reflections; images[i].reflections = reflist_new(); - for ( refl = first_refl(transfer, &iter); + for ( refl = first_refl(predicted, &iter); refl != NULL; refl = next_refl(refl, iter) ) { - Reflection *peak; + Reflection *peak_in_pattern; Reflection *new; signed int h, k, l, ha, ka, la; double r1, r2, p, x, y; int clamp1, clamp2; + /* Get predicted indices and location */ get_indices(refl, &h, &k, &l); get_detector_pos(refl, &x, &y); n_expected++; - peak = find_refl(peaks, h, k, l); - if ( peak == NULL ) { + /* Look for this reflection in the pattern */ + peak_in_pattern = find_refl(measured, h, k, l); + if ( peak_in_pattern == NULL ) { n_notfound++; continue; } n_found++; + /* Put it into the asymmetric cell */ get_asymm(h, k, l, &ha, &ka, &la, sym); if ( find_item(obs, ha, ka, la) == 0 ) { add_item(obs, ha, ka, la); } + + /* Create new reflection and copy data across */ new = add_refl(images[i].reflections, ha, ka, la); get_partial(refl, &r1, &r2, &p, &clamp1, &clamp2); get_detector_pos(refl, &x, &y); - set_int(new, get_intensity(peak)); + set_int(new, get_intensity(peak_in_pattern)); set_partial(new, r1, r2, p, clamp1, clamp2); set_detector_pos(new, 0.0, x, y); } - reflist_free(peaks); - reflist_free(transfer); + reflist_free(measured); + reflist_free(predicted); + + /* Do magic on the reflection list to make things go faster */ optimise_reflist(images[i].reflections); progress_bar(i, n_total_patterns-1, "Loading pattern data"); -- cgit v1.2.3