aboutsummaryrefslogtreecommitdiff
path: root/src/scaling-report.c
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2011-07-28 14:39:52 +0200
committerThomas White <taw@physics.org>2012-02-22 15:27:35 +0100
commit02c21d56cb61f8c56117e21dc8540183a53395e3 (patch)
tree423a46c46fb667c868e845474a499e6405297302 /src/scaling-report.c
parente93c110d34e04000547e0611fb53c1d342418a13 (diff)
Improve partiality graph (sort of)
Diffstat (limited to 'src/scaling-report.c')
-rw-r--r--src/scaling-report.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/scaling-report.c b/src/scaling-report.c
index 441353b7..0f395229 100644
--- a/src/scaling-report.c
+++ b/src/scaling-report.c
@@ -170,6 +170,8 @@ static void partiality_graph(cairo_t *cr, const struct image *images, int n,
double totals[nbins];
int counts[nbins];
double prob;
+ double pcalcmin[nbins];
+ double pcalcmax[nbins];
show_text_simple(cr, "Observed partiality", -20.0, g_height/2.0,
NULL, -M_PI_2, J_CENTER);
@@ -186,7 +188,10 @@ static void partiality_graph(cairo_t *cr, const struct image *images, int n,
for ( i=0; i<nbins; i++ ) {
totals[i] = 0.0;
counts[i] = 0;
+ pcalcmin[i] = (double)i/nbins;
+ pcalcmax[i] = (double)(i+1)/nbins;
}
+ pcalcmax[nbins-1] += 0.001; /* Make sure it include pcalc = 1 */
cairo_set_source_rgb(cr, 0.0, 0.7, 0.0);
prob = 1.0 / n;
@@ -218,9 +223,19 @@ static void partiality_graph(cairo_t *cr, const struct image *images, int n,
pobs = Ipart/(images[i].osf*Ifull);
pcalc = get_partiality(refl);
+ //STATUS("%4i %4i %4i : %9.6f %9.6f %e %e %e\n", h, k, l,
+ // pobs, pcalc, Ipart, Ifull, images[i].osf);
+
+ for ( bin=0; bin<nbins; bin++ ) {
+ if ( (pcalc >= pcalcmin[bin])
+ && (pcalc < pcalcmax[bin]) )
+ {
+ totals[bin] += pobs;
+ counts[bin]++;
+ }
+ }
+
bin = nbins * pcalc;
- totals[bin] += pobs;
- counts[bin]++;
if ( random_flat(1.0) < prob ) {
plot_point(cr, g_width, g_height, pcalc, pobs);
@@ -236,8 +251,11 @@ static void partiality_graph(cairo_t *cr, const struct image *images, int n,
cairo_new_path(cr);
cairo_move_to(cr, 0.0, g_height);
for ( i=0; i<nbins; i++ ) {
+
+ double pos = pcalcmin[i] + (pcalcmax[i] - pcalcmin[i])/2.0;
+
if ( counts[i] == 0 ) continue;
- cairo_line_to(cr, g_width*((double)i+0.5)/nbins,
+ cairo_line_to(cr, g_width*pos,
g_height - g_height*(totals[i]/counts[i]));
}
cairo_set_source_rgb(cr, 0.0, 0.0, 0.0);