Commit 97c023d0 authored by Thomas White's avatar Thomas White
Browse files

Banish find_projected_peaks()

parent 150c54e9
......@@ -41,7 +41,8 @@ src_pattern_sim_SOURCES = src/pattern_sim.c src/diffraction.c src/utils.c \
src/image.c src/cell.c src/hdf5-file.c \
src/detector.c src/peaks.c \
src/reflist-utils.c src/beam-parameters.c \
src/symmetry.c src/thread-pool.c src/reflist.c
src/symmetry.c src/thread-pool.c src/reflist.c \
src/geometry.c
if HAVE_OPENCL
src_pattern_sim_SOURCES += src/diffraction-gpu.c src/cl-utils.c
......
......@@ -193,14 +193,15 @@ am__src_pattern_sim_SOURCES_DIST = src/pattern_sim.c src/diffraction.c \
src/utils.c src/image.c src/cell.c src/hdf5-file.c \
src/detector.c src/peaks.c src/reflist-utils.c \
src/beam-parameters.c src/symmetry.c src/thread-pool.c \
src/reflist.c src/diffraction-gpu.c src/cl-utils.c
src/reflist.c src/geometry.c src/diffraction-gpu.c \
src/cl-utils.c
am_src_pattern_sim_OBJECTS = src/pattern_sim.$(OBJEXT) \
src/diffraction.$(OBJEXT) src/utils.$(OBJEXT) \
src/image.$(OBJEXT) src/cell.$(OBJEXT) src/hdf5-file.$(OBJEXT) \
src/detector.$(OBJEXT) src/peaks.$(OBJEXT) \
src/reflist-utils.$(OBJEXT) src/beam-parameters.$(OBJEXT) \
src/symmetry.$(OBJEXT) src/thread-pool.$(OBJEXT) \
src/reflist.$(OBJEXT) $(am__objects_1)
src/reflist.$(OBJEXT) src/geometry.$(OBJEXT) $(am__objects_1)
src_pattern_sim_OBJECTS = $(am_src_pattern_sim_OBJECTS)
src_pattern_sim_LDADD = $(LDADD)
src_pattern_sim_DEPENDENCIES = $(top_builddir)/lib/libgnu.a
......@@ -634,7 +635,7 @@ src_pattern_sim_SOURCES = src/pattern_sim.c src/diffraction.c \
src/utils.c src/image.c src/cell.c src/hdf5-file.c \
src/detector.c src/peaks.c src/reflist-utils.c \
src/beam-parameters.c src/symmetry.c src/thread-pool.c \
src/reflist.c $(am__append_3)
src/reflist.c src/geometry.c $(am__append_3)
@HAVE_OPENCL_TRUE@tests_gpu_sim_check_SOURCES = tests/gpu_sim_check.c src/utils.c \
@HAVE_OPENCL_TRUE@ src/diffraction.c src/diffraction-gpu.c \
@HAVE_OPENCL_TRUE@ src/thread-pool.c src/cell.c src/cl-utils.c \
......
......@@ -146,10 +146,6 @@ static void show_help(const char *s)
"\n\n"
"You can control what information is included in the output stream using\n"
"' --record=<flag1>,<flag2>,<flag3>' and so on. Possible flags are:\n\n"
" pixels Include a list of sums of pixel values within the\n"
" integration domain, correcting for individual pixel\n"
" solid angles.\n"
"\n"
" integrated Include a list of reflection intensities, produced by\n"
" integrating around predicted peak locations.\n"
"\n"
......@@ -160,8 +156,7 @@ static void show_help(const char *s)
"\n"
" peaksifnotindexed As 'peaks', but only if the pattern could NOT be indexed.\n"
"\n\n"
"The default is '--record=integrated'. The flags 'pixels' and 'integrated'\n"
"are mutually exclusive, as are the flags 'peaks' and 'peaksifindexed'.\n"
"The default is '--record=integrated'.\n"
"\n\n"
"For more control over the process, you might need:\n\n"
" --cell-reduction=<m> Use <m> as the cell reduction method. Choose from:\n"
......@@ -324,26 +319,19 @@ static void process_image(void *pp, int cookie)
/* Do EITHER: */
//image.div = beam->divergence;
//image.bw = beam->bandwidth;
//image.profile_radius = 0.0001e9;
//image.reflections = find_intersections(&image,
// image.indexed_cell, 0);
if ( image.indexed_cell != NULL ) {
image.reflections = find_projected_peaks(&image,
image.indexed_cell,
0, 0.1);
image.div = beam->divergence;
image.bw = beam->bandwidth;
image.profile_radius = 0.0001e9;
image.reflections = find_intersections(&image,
image.indexed_cell, 0);
integrate_reflections(&image, config_polar,
pargs->static_args.config_closer,
pargs->static_args.config_bgsub);
/* OR */
//image.reflections = integrate_pixels(&image, 0, 0.1,
// config_polar);
} else {
image.reflections = NULL;
......
......@@ -33,6 +33,7 @@
#include "symmetry.h"
#include "reflist.h"
#include "reflist-utils.h"
#include "geometry.h"
static void show_help(const char *s)
......@@ -547,24 +548,14 @@ int main(int argc, char *argv[])
if ( config_nearbragg ) {
/* Do EITHER: */
//image.div = beam->divergence;
//image.bw = beam->bandwidth;
//image.profile_radius = 0.0001e9;
//image.reflections = find_intersections(&image,
// image.indexed_cell, 0);
image.reflections = find_projected_peaks(&image,
image.indexed_cell, 0, 0.1);
image.div = image.beam->divergence;
image.bw = image.beam->bandwidth;
image.profile_radius = 0.0001e9;
image.reflections = find_intersections(&image,
image.indexed_cell, 0);
integrate_reflections(&image, 0, 0, 0);
/* OR */
//image.reflections = integrate_pixels(&image, 0, 0.1,
// config_polar);
}
if ( powder_fn != NULL ) {
......
......@@ -449,86 +449,6 @@ void search_peaks(struct image *image, float threshold, float min_gradient)
}
RefList *find_projected_peaks(struct image *image, UnitCell *cell,
int circular_domain, double domain_r)
{
int fs, ss;
double ax, ay, az;
double bx, by, bz;
double cx, cy, cz;
RefList *reflections;
double alen, blen, clen;
int n_reflections = 0;
reflections = reflist_new();
/* "Borrow" direction values to get reciprocal lengths */
cell_get_reciprocal(cell, &ax, &ay, &az, &bx, &by, &bz, &cx, &cy, &cz);
alen = modulus(ax, ay, az);
blen = modulus(bx, by, bz);
clen = modulus(cx, cy, cz);
cell_get_cartesian(cell, &ax, &ay, &az, &bx, &by, &bz, &cx, &cy, &cz);
fesetround(1); /* Round towards nearest */
for ( fs=0; fs<image->width; fs++ ) {
for ( ss=0; ss<image->height; ss++ ) {
double hd, kd, ld; /* Indices with decimal places */
double dh, dk, dl; /* Distances in h,k,l directions */
signed int h, k, l;
struct rvec q;
double dist;
Reflection *refl;
double cur_dist;
q = get_q(image, fs, ss, NULL, 1.0/image->lambda);
hd = q.u * ax + q.v * ay + q.w * az;
kd = q.u * bx + q.v * by + q.w * bz;
ld = q.u * cx + q.v * cy + q.w * cz;
h = lrint(hd);
k = lrint(kd);
l = lrint(ld);
dh = hd - h;
dk = kd - k;
dl = ld - l;
if ( circular_domain ) {
/* Circular integration domain */
dist = sqrt(pow(dh*alen, 2.0) + pow(dk*blen, 2.0)
+ pow(dl*clen, 2.0));
if ( dist > domain_r ) continue;
} else {
/* "Crystallographic" integration domain */
dist = sqrt(pow(dh, 2.0) + pow(dk, 2.0) + pow(dl, 2.0));
if ( dist > domain_r ) continue;
}
refl = find_refl(reflections, h, k, l);
if ( refl != NULL ) {
cur_dist = get_excitation_error(refl);
if ( dist < cur_dist ) {
set_detector_pos(refl, dist, fs, ss);
}
} else {
Reflection *new;
new = add_refl(reflections, h, k, l);
set_detector_pos(new, dist, fs, ss);
n_reflections++;
}
}
}
optimise_reflist(reflections);
return reflections;
}
int peak_sanity_check(struct image *image, UnitCell *cell,
int circular_domain, double domain_r)
{
......
......@@ -30,9 +30,6 @@ extern void integrate_reflections(struct image *image,
extern int peak_sanity_check(struct image *image, UnitCell *cell,
int circular_domain, double domain_r);
extern RefList *find_projected_peaks(struct image *image, UnitCell *cell,
int circular_domain, double domain_r);
/* Exported so it can be poked by integration_check */
extern int integrate_peak(struct image *image, int cfs, int css,
double *pfs, double *pss, double *intensity,
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment