aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/im-sandbox.c59
-rw-r--r--src/pattern_sim.c10
2 files changed, 22 insertions, 47 deletions
diff --git a/src/im-sandbox.c b/src/im-sandbox.c
index d1696969..32bcba15 100644
--- a/src/im-sandbox.c
+++ b/src/im-sandbox.c
@@ -174,7 +174,6 @@ static void process_image(const struct index_args *iargs,
int config_noisefilter = iargs->config_noisefilter;
int config_verbose = iargs->config_verbose;
IndexingMethod *indm = iargs->indm;
- struct beam_params *beam = iargs->beam;
int check;
struct hdfile *hdfile;
struct image image;
@@ -183,13 +182,13 @@ static void process_image(const struct index_args *iargs,
image.data = NULL;
image.flags = NULL;
image.indexed_cell = NULL;
- image.det = copy_geom(iargs->det);
image.copyme = iargs->copyme;
image.reflections = NULL;
image.n_saturated = 0;
image.id = cookie;
image.filename = pargs->filename;
- image.beam = beam;
+ image.beam = iargs->beam;
+ image.det = iargs->det;
hdfile = hdfile_open(image.filename);
if ( hdfile == NULL ) return;
@@ -231,48 +230,23 @@ static void process_image(const struct index_args *iargs,
image.width, image.height,
image.det->max_fs + 1, image.det->max_ss + 1);
hdfile_close(hdfile);
- free_detector_geometry(image.det);
return;
}
- if (beam->photon_energy == 0) { // read from existing hdf5
- fill_in_beamParam(beam, hdfile);
- }
- image.lambda = ph_en_to_lambda(eV_to_J(beam->photon_energy));
+ fill_in_values(image.det, hdfile);
+ fill_in_beam_parameters(image.beam, hdfile);
- if ( image.lambda < 0.0 ) {
- if ( beam != NULL ) {
- ERROR("Using nominal photon energy of %.2f eV\n",
- beam->photon_energy);
- image.lambda = ph_en_to_lambda(
- eV_to_J(beam->photon_energy));
- } else {
- ERROR("No wavelength in file, so you need to give "
- "a beam parameters file with -b.\n");
- hdfile_close(hdfile);
- free_detector_geometry(image.det);
- return;
- }
- }
+ image.lambda = ph_en_to_lambda(eV_to_J(image.beam->photon_energy));
- if ( image.lambda > 1000 ) {
- if ( beam != NULL ) {
- ERROR("Nonsensical wavelength in HDF5."
- "Using nominal photon energy of %.2f eV\n",
- beam->photon_energy);
- image.lambda = ph_en_to_lambda(
- eV_to_J(beam->photon_energy));
- } else {
- ERROR("Nonsensical wavelength in file, so you need to "
- "give a beam parameters file with -b.\n");
- hdfile_close(hdfile);
- free_detector_geometry(image.det);
- return;
- }
+ if ( (image.beam->photon_energy < 0.0) || (image.lambda > 1000) ) {
+ /* Error message covers a silly value in the beam file or in
+ * the HDF5 file. */
+ ERROR("Nonsensical wavelength (%e m or %e eV) value for %s.\n",
+ image.lambda, image.beam->photon_energy, image.filename);
+ hdfile_close(hdfile);
+ return;
}
- fill_in_values(image.det, hdfile);
-
if ( config_cmfilter ) {
filter_cm(&image);
}
@@ -318,9 +292,9 @@ static void process_image(const struct index_args *iargs,
image.data = data_for_measurement;
/* Calculate orientation matrix (by magic) */
- image.div = beam->divergence;
- image.bw = beam->bandwidth;
- image.profile_radius = beam->profile_radius;
+ image.div = image.beam->divergence;
+ image.bw = image.beam->bandwidth;
+ image.profile_radius = image.beam->profile_radius;
index_pattern(&image, cell, indm, iargs->cellr,
config_verbose, iargs->ipriv,
@@ -356,7 +330,6 @@ static void process_image(const struct index_args *iargs,
if ( image.flags != NULL ) free(image.flags);
image_feature_list_free(image.features);
hdfile_close(hdfile);
- free_detector_geometry(image.det);
}
@@ -428,7 +401,7 @@ static void run_work(const struct index_args *iargs,
free(iargs->indm);
free(iargs->ipriv);
free_detector_geometry(iargs->det);
- free(iargs->beam);
+ free_beam_parameters(iargs->beam);
free(iargs->element);
free(iargs->hdf5_peak_path);
free_copy_hdf5_field_list(iargs->copyme);
diff --git a/src/pattern_sim.c b/src/pattern_sim.c
index 17aa8030..89413a07 100644
--- a/src/pattern_sim.c
+++ b/src/pattern_sim.c
@@ -493,19 +493,21 @@ int main(int argc, char *argv[])
ERROR("Failed to read beam parameters from '%s'\n", beamfile);
return 1;
}
- free(beamfile);
/* Define image parameters */
image.width = image.det->max_fs + 1;
image.height = image.det->max_ss + 1;
- if (image.beam->photon_energy == 0) {
- ERROR("Invalid photon_energy format in beam file\n")
+ if ( image.beam->photon_energy_from != NULL ) {
+ ERROR("Photon energy must be specified, not taken from the"
+ " HDF5 file. Please alter %s accordingly.\n", beamfile)
return 1;
} else {
- image.lambda = ph_en_to_lambda(eV_to_J(image.beam->photon_energy));
+ double wl = ph_en_to_lambda(eV_to_J(image.beam->photon_energy));
+ image.lambda = wl;
}
image.bw = image.beam->bandwidth;
image.div = image.beam->divergence;
+ free(beamfile);
/* Load unit cell */
input_cell = load_cell_from_pdb(filename);