From d004d970fc2f83e0bfd81af810fdcea35e47a4ac Mon Sep 17 00:00:00 2001 From: Thomas White Date: Mon, 14 Mar 2011 15:10:16 +0100 Subject: New stream writing --- src/stream.c | 152 +++++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 123 insertions(+), 29 deletions(-) (limited to 'src/stream.c') diff --git a/src/stream.c b/src/stream.c index fbe0abad..4e34a48c 100644 --- a/src/stream.c +++ b/src/stream.c @@ -21,6 +21,63 @@ #include "cell.h" #include "utils.h" #include "image.h" +#include "stream.h" + + +static void exclusive(const char *a, const char *b) +{ + ERROR("The stream options '%s' and '%s' are mutually exclusive.\n", + a, b); +} + + +int parse_stream_flags(const char *a) +{ + int n, i; + int ret = STREAM_NONE; + char **flags; + + n = assplode(a, ",", &flags, ASSPLODE_NONE); + + for ( i=0; ireflections, &iter); + refl != NULL; + refl = next_refl(refl, iter) ) { + + signed int h, k, l; + double intensity, esd_i, s; + + get_indices(refl, &h, &k, &l); + intensity = get_intensity(refl); + esd_i = 0.0; /* FIXME! */ + s = 0.0; /* FIXME! */ + + /* h, k, l, I, sigma(I), s */ + fprintf(ofh, "%3i %3i %3i %10.2f %s %10.2f %10.2f %7i\n", + h, k, l, intensity, " -", esd_i, s/1.0e9, 1); + + } } @@ -83,7 +165,7 @@ static void write_peaks(struct image *image, FILE *ofh) { int i; - fprintf(ofh, "Peaks from peak search in %s\n", image->filename); + fprintf(ofh, "Peaks from peak search\n"); fprintf(ofh, " x/px y/px (1/d)/nm^-1 Intensity\n"); for ( i=0; ifeatures); i++ ) { @@ -102,13 +184,10 @@ static void write_peaks(struct image *image, FILE *ofh) f->x, f->y, q/1.0e9, f->intensity); } - - fprintf(ofh, "\n"); } - -void write_chunk(FILE *ofh, struct image *image, int flags) +void write_chunk(FILE *ofh, struct image *i, int f) { double asx, asy, asz; double bsx, bsy, bsz; @@ -117,36 +196,51 @@ void write_chunk(FILE *ofh, struct image *image, int flags) fprintf(ofh, "----- Begin chunk -----\n"); - fprintf(ofh, "Image filename: %s\n", image->filename); - - cell_get_parameters(image->indexed_cell, &a, &b, &c, &al, &be, &ga); - fprintf(ofh, "Cell parameters %7.5f %7.5f %7.5f nm," - " %7.5f %7.5f %7.5f deg\n", - a*1.0e9, b*1.0e9, c*1.0e9, - rad2deg(al), rad2deg(be), rad2deg(ga)); - - cell_get_reciprocal(image->indexed_cell, &asx, &asy, &asz, - &bsx, &bsy, &bsz, - &csx, &csy, &csz); - fprintf(ofh, "astar = %+9.7f %+9.7f %+9.7f nm^-1\n", - asx/1e9, asy/1e9, asz/1e9); - fprintf(ofh, "bstar = %+9.7f %+9.7f %+9.7f nm^-1\n", - bsx/1e9, bsy/1e9, bsz/1e9); - fprintf(ofh, "cstar = %+9.7f %+9.7f %+9.7f nm^-1\n", - csx/1e9, csy/1e9, csz/1e9); - - if ( image->f0_available ) { - fprintf(ofh, "I0 = %7.5f (arbitrary gas detector units)\n", - image->f0); + fprintf(ofh, "Image filename: %s\n", i->filename); + + if ( i->indexed_cell != NULL ) { + cell_get_parameters(i->indexed_cell, &a, &b, &c, + &al, &be, &ga); + fprintf(ofh, "Cell parameters %7.5f %7.5f %7.5f nm," + " %7.5f %7.5f %7.5f deg\n", + a*1.0e9, b*1.0e9, c*1.0e9, + rad2deg(al), rad2deg(be), rad2deg(ga)); + + cell_get_reciprocal(i->indexed_cell, &asx, &asy, &asz, + &bsx, &bsy, &bsz, + &csx, &csy, &csz); + fprintf(ofh, "astar = %+9.7f %+9.7f %+9.7f nm^-1\n", + asx/1e9, asy/1e9, asz/1e9); + fprintf(ofh, "bstar = %+9.7f %+9.7f %+9.7f nm^-1\n", + bsx/1e9, bsy/1e9, bsz/1e9); + fprintf(ofh, "cstar = %+9.7f %+9.7f %+9.7f nm^-1\n", + csx/1e9, csy/1e9, csz/1e9); + + } else { + + fprintf(ofh, "No unit cell from indexing.\n"); + + } + + if ( i->i0_available ) { + fprintf(ofh, "I0 = %7.5f (arbitrary units)\n", i->i0); } else { fprintf(ofh, "I0 = invalid\n"); } fprintf(ofh, "photon_energy_eV = %f\n", - J_to_eV(ph_lambda_to_en(image->lambda))); + J_to_eV(ph_lambda_to_en(i->lambda))); + + if ( (f & STREAM_PEAKS) + || ((f & STREAM_PEAKS_IF_INDEXED) && (i->indexed_cell != NULL)) ) { + fprintf(ofh, "\n"); + write_peaks(i, ofh); + } - write_peaks(image, ofh); - write_reflections(image, ofh); + if ( (f & STREAM_PIXELS) || (f & STREAM_INTEGRATED) ) { + fprintf(ofh, "\n"); + write_reflections(i, ofh); + } fprintf(ofh, "----- End chunk -----\n\n"); } -- cgit v1.2.3