aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libcrystfel/src/peaks.c12
-rw-r--r--tests/integration_check.c10
2 files changed, 12 insertions, 10 deletions
diff --git a/libcrystfel/src/peaks.c b/libcrystfel/src/peaks.c
index 477d9345..670e02bb 100644
--- a/libcrystfel/src/peaks.c
+++ b/libcrystfel/src/peaks.c
@@ -151,7 +151,8 @@ static int cull_peaks(struct image *image)
static int integrate_peak(struct image *image, int cfs, int css,
double *pfs, double *pss,
double *intensity, double *sigma,
- double ir_inn, double ir_mid, double ir_out)
+ double ir_inn, double ir_mid, double ir_out,
+ int use_max_adu)
{
signed int fs, ss;
double lim_sq, out_lim_sq, mid_lim_sq;
@@ -212,7 +213,7 @@ static int integrate_peak(struct image *image, int cfs, int css,
val = image->data[idx];
/* Veto peak if it contains saturation in bg region */
- if ( val > p->max_adu ) return 1;
+ if ( use_max_adu && (val > p->max_adu) ) return 1;
bg_tot += val;
bg_tot_sq += pow(val, 2.0);
@@ -263,7 +264,7 @@ static int integrate_peak(struct image *image, int cfs, int css,
val = image->data[idx] - bg_mean;
/* Veto peak if it contains saturation */
- if ( image->data[idx] > p->max_adu ) return 1;
+ if ( use_max_adu && (image->data[idx] > p->max_adu) ) return 1;
pk_counts++;
pk_total += val;
@@ -398,7 +399,7 @@ static void search_peaks_in_panel(struct image *image, float threshold,
/* Centroid peak and get better coordinates. */
r = integrate_peak(image, mask_fs, mask_ss,
&f_fs, &f_ss, &intensity, &sigma,
- ir_inn, ir_mid, ir_out);
+ ir_inn, ir_mid, ir_out, 0);
if ( r ) {
/* Bad region - don't detect peak */
@@ -656,7 +657,8 @@ void integrate_reflections(struct image *image, int use_closer, int bgsub,
}
r = integrate_peak(image, pfs, pss, &fs, &ss,
- &intensity, &sigma, ir_inn, ir_mid, ir_out);
+ &intensity, &sigma, ir_inn, ir_mid, ir_out,
+ 1);
/* Record intensity and set redundancy to 1 on success */
if ( r == 0 ) {
diff --git a/tests/integration_check.c b/tests/integration_check.c
index 2d18ac5a..21c10f79 100644
--- a/tests/integration_check.c
+++ b/tests/integration_check.c
@@ -64,7 +64,7 @@ static void third_integration_check(struct image *image, int n_trials,
}
r = integrate_peak(image, 64, 64, &fsp, &ssp,
- &intensity, &sigma, 10.0, 15.0, 17.0);
+ &intensity, &sigma, 10.0, 15.0, 17.0, 0);
if ( r == 0 ) {
mean_intensity += intensity;
@@ -125,7 +125,7 @@ static void fourth_integration_check(struct image *image, int n_trials,
}
r = integrate_peak(image, 64, 64, &fsp, &ssp,
- &intensity, &sigma, 10.0, 15.0, 17.0);
+ &intensity, &sigma, 10.0, 15.0, 17.0, 0);
if ( r == 0 ) {
mean_intensity += intensity;
@@ -205,7 +205,7 @@ int main(int argc, char *argv[])
/* First check: no intensity -> no peak, or very low intensity */
r = integrate_peak(&image, 64, 64, &fsp, &ssp, &intensity, &sigma,
- 10.0, 15.0, 17.0);
+ 10.0, 15.0, 17.0, 0);
STATUS(" First check: integrate_peak() returned %i", r);
if ( r == 0 ) {
@@ -231,7 +231,7 @@ int main(int argc, char *argv[])
}
r = integrate_peak(&image, 64, 64, &fsp, &ssp, &intensity, &sigma,
- 10.0, 15.0, 17.0);
+ 10.0, 15.0, 17.0, 0);
if ( r ) {
ERROR(" Second check: integrate_peak() returned %i (wrong).\n",
r);
@@ -273,7 +273,7 @@ int main(int argc, char *argv[])
}
r = integrate_peak(&image, 64, 64, &fsp, &ssp, &intensity, &sigma,
- 10.0, 15.0, 17.0);
+ 10.0, 15.0, 17.0, 0);
if ( r ) {
ERROR(" Fifth check: integrate_peak() returned %i (wrong).\n",
r);