From b22b9de18152c917d4e9f733c41402d9935ae93d Mon Sep 17 00:00:00 2001 From: Thomas White Date: Fri, 14 Dec 2012 11:51:57 +0100 Subject: Beam and detector geometry don't need to be copied The did when this was all done with threads, but with separate processes each worker has its own copy of the structure already. It can be updated after every image and freed at the end. --- libcrystfel/src/beam-parameters.c | 14 ++++++++++---- libcrystfel/src/beam-parameters.h | 6 +++--- libcrystfel/src/detector.c | 2 -- 3 files changed, 13 insertions(+), 9 deletions(-) (limited to 'libcrystfel/src') diff --git a/libcrystfel/src/beam-parameters.c b/libcrystfel/src/beam-parameters.c index 2236fddb..617f9061 100644 --- a/libcrystfel/src/beam-parameters.c +++ b/libcrystfel/src/beam-parameters.c @@ -149,11 +149,17 @@ struct beam_params *get_beam_parameters(const char *filename) return b; } -void fill_in_beamParam(struct beam_params *beam, struct hdfile *f) + +void free_beam_parameters(struct beam_params *beam) +{ + free(beam->photon_energy_from); + free(beam); +} + + +void fill_in_beam_parameters(struct beam_params *beam, struct hdfile *f) { if ( beam->photon_energy_from != NULL ) { - beam->photon_energy = get_value(f, beam->photon_energy_from ); - free(beam->photon_energy_from); - beam->photon_energy_from = NULL; + beam->photon_energy = get_value(f, beam->photon_energy_from); } } diff --git a/libcrystfel/src/beam-parameters.h b/libcrystfel/src/beam-parameters.h index e0b16895..8212811b 100644 --- a/libcrystfel/src/beam-parameters.h +++ b/libcrystfel/src/beam-parameters.h @@ -41,6 +41,7 @@ struct beam_params double fluence; /* photons per pulse */ double beam_radius; /* metres */ double photon_energy; /* eV per photon */ + char *photon_energy_from; /* HDF5 dataset name */ double bandwidth; /* FWHM(wavelength) over wavelength. * Note: current simulation code just uses * a rectangular distribution with this as @@ -48,13 +49,12 @@ struct beam_params double divergence; /* divergence (radians) */ double profile_radius; /* Reciprocal space size of a reflection */ - - char *photon_energy_from; /* hdf5 group name */ }; extern struct beam_params *get_beam_parameters(const char *filename); +extern void free_beam_parameters(struct beam_params *beam); -extern void fill_in_beamParam(struct beam_params *beam, struct hdfile *f); +extern void fill_in_beam_parameters(struct beam_params *beam, struct hdfile *f); #endif /* BEAM_PARAMETERS_H */ diff --git a/libcrystfel/src/detector.c b/libcrystfel/src/detector.c index 4216838d..41ebcc9a 100644 --- a/libcrystfel/src/detector.c +++ b/libcrystfel/src/detector.c @@ -462,8 +462,6 @@ void fill_in_values(struct detector *det, struct hdfile *f) if ( p->clen_from != NULL ) { p->clen = get_value(f, p->clen_from) * 1.0e-3; - free(p->clen_from); - p->clen_from = NULL; } p->clen += p->coffset; -- cgit v1.2.3