diff options
author | Thomas White <taw@physics.org> | 2018-05-03 15:04:58 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2018-05-07 10:08:02 +0200 |
commit | 734840568fd3cad8fc1a915f182247b75c7117fb (patch) | |
tree | 25f124c66f0cf95c582e3dcf951fbbac62fb94c8 | |
parent | dbf546c4d511ce96f5eab4558442b932931e5e9f (diff) |
Implement scale_one_crystal(.., SCALE_NO_B)
-rw-r--r-- | src/scaling.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/scaling.c b/src/scaling.c index c708e7d3..94d885ea 100644 --- a/src/scaling.c +++ b/src/scaling.c @@ -39,6 +39,7 @@ #include <gsl/gsl_eigen.h> #include <gsl/gsl_blas.h> #include <gsl/gsl_fit.h> +#include <gsl/gsl_statistics_double.h> #include "merge.h" #include "post-refinement.h" @@ -304,7 +305,13 @@ int scale_one_crystal(Crystal *cr, const RefList *listR, int flags) return 1; } - r = gsl_fit_wlinear(x, 1, w, 1, y, 1, n, &G, &B, &cov00, &cov01, &cov11, &chisq); + if ( flags & SCALE_NO_B ) { + G = gsl_stats_wmean(w, 1, y, 1, n); + B = 0.0; + r = 0; + } else { + r = gsl_fit_wlinear(x, 1, w, 1, y, 1, n, &G, &B, &cov00, &cov01, &cov11, &chisq); + } if ( r ) { ERROR("Scaling failed.\n"); |