diff options
author | Thomas White <taw@bitwiz.org.uk> | 2011-02-12 14:40:16 -0800 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2012-02-22 15:27:14 +0100 |
commit | 9a2773d90137c51149c254f376237ba18386ee8e (patch) | |
tree | 43ed1bc5a5bd8dc54d92163a9be61300ebe476c5 | |
parent | 54ff7acab385a0c524b8f2194e95621e92843db1 (diff) |
More stream handling and reflection counting
-rw-r--r-- | src/partialator.c | 13 | ||||
-rw-r--r-- | src/stream.c | 14 |
2 files changed, 20 insertions, 7 deletions
diff --git a/src/partialator.c b/src/partialator.c index 31b2b7e9..50f37fd8 100644 --- a/src/partialator.c +++ b/src/partialator.c @@ -155,6 +155,9 @@ int main(int argc, char *argv[]) int n_iter = 10; struct beam_params *beam = NULL; double *I_full; + int n_found = 0; + int n_expected = 0; + int n_notfound = 0; /* Long options */ const struct option longopts[] = { @@ -339,14 +342,15 @@ int main(int argc, char *argv[]) int clamp1, clamp2; get_indices(refl, &h, &k, &l); - STATUS("%3i %3i %3i\n", h, k, l); + get_detector_pos(refl, &x, &y); + n_expected++; peak = find_refl(peaks, h, k, l); if ( peak == NULL ) { - if ( (h==0) && (k==0) && (l==0) ) continue; - STATUS("%3i %3i %3i not found\n", h, k, l); + n_notfound++; continue; } + n_found++; get_asymm(h, k, l, &ha, &ka, &la, sym); add_item(obs, ha, ka, la); @@ -364,6 +368,9 @@ int main(int argc, char *argv[]) } fclose(fh); + STATUS("Found %5.2f%% of the expected peaks (%i %i %i).\n", + 100.0 * (double)n_found / n_expected, + n_found, n_notfound, n_expected); cts = new_list_count(); diff --git a/src/stream.c b/src/stream.c index 69d64bae..ffee4a6c 100644 --- a/src/stream.c +++ b/src/stream.c @@ -79,10 +79,12 @@ int find_chunk(FILE *fh, UnitCell **cell, char **filename, double *ev) char *rval = NULL; int have_ev = 0; int have_cell = 0; + int have_filename = 0; + long start_of_chunk = 0; do { - long pos = ftell(fh); + const long start_of_line = ftell(fh); rval = fgets(line, 1023, fh); if ( rval == NULL ) continue; @@ -96,11 +98,15 @@ int find_chunk(FILE *fh, UnitCell **cell, char **filename, double *ev) *ev = 0.0; have_cell = 0; have_ev = 0; + have_filename = 1; + start_of_chunk = ftell(fh); } + if ( !have_filename ) continue; + if ( strncmp(line, "astar = ", 8) == 0 ) { - fseek(fh, pos, 0); + fseek(fh, start_of_line, 0); *cell = read_orientation_matrix(fh); have_cell = 1; } @@ -111,8 +117,8 @@ int find_chunk(FILE *fh, UnitCell **cell, char **filename, double *ev) } if ( strlen(line) == 0 ) { - if ( have_cell && have_ev ) { - fseek(fh, pos, 0); + if ( have_filename && have_cell && have_ev ) { + fseek(fh, start_of_chunk, 0); return 0; } } |