From a162a01f988a86f38d10a1b507d524637670566e Mon Sep 17 00:00:00 2001 From: Thomas White Date: Thu, 4 Feb 2010 19:04:20 +0100 Subject: Improved framework for detector geometry --- src/ewald.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'src/ewald.c') diff --git a/src/ewald.c b/src/ewald.c index 19ce301e..94fb4ed6 100644 --- a/src/ewald.c +++ b/src/ewald.c @@ -68,20 +68,25 @@ void get_ewald(struct image *image) for ( x=0; xwidth; x++ ) { for ( y=0; yheight; y++ ) { - double rx, ry, r; + double rx = 0.0; + double ry = 0.0; + double r; double twothetax, twothetay, twotheta; double qx, qy, qz; struct rvec q; + int p; /* Calculate q vectors for Ewald sphere */ - if ( y >= 512 ) { - /* Top CCD */ - rx = ((double)x - UPPER_CX) / image->resolution; - ry = ((double)y - UPPER_CY) / image->resolution; - } else { - /* Bottom CCD */ - rx = ((double)x - LOWER_CX) / image->resolution; - ry = ((double)y - LOWER_CY) / image->resolution; + for ( p=0; pdet.n_panels; p++ ) { + if ( (x >= image->det.panels[p].min_x) + && (x <= image->det.panels[p].max_x) + && (y >= image->det.panels[p].min_y) + && (y <= image->det.panels[p].max_y) ) { + rx = ((double)x - image->det.panels[p].cx) + / image->resolution; + ry = ((double)y - image->det.panels[p].cy) + / image->resolution; + } } r = sqrt(pow(rx, 2.0) + pow(ry, 2.0)); -- cgit v1.2.3