/* * crystfelindexingopts.h * * A GTK widget to set indexing options * * Copyright © 2020-2021 Deutsches Elektronen-Synchrotron DESY, * a research centre of the Helmholtz Association. * * Authors: * 2020 Thomas White * * This file is part of CrystFEL. * * CrystFEL is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * CrystFEL is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with CrystFEL. If not, see . * */ #ifndef CRYSTFELINDEXINGOPTS_H #define CRYSTFELINDEXINGOPTS_H #include #include #define CRYSTFEL_TYPE_INDEXING_OPTS (crystfel_indexing_opts_get_type()) #define CRYSTFEL_INDEXING_OPTS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \ CRYSTFEL_TYPE_INDEXING_OPTS, CrystFELIndexingOpts)) #define CRYSTFEL_IS_INDEXING_OPTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ CRYSTFEL_TYPE_INDEXING_OPTS)) #define CRYSTFEL_INDEXING_OPTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((obj), \ CRYSTFEL_TYPE_INDEXING_OPTS, CrystFELIndexingOpts)) #define CRYSTFEL_IS_INDEXING_OPTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((obj), \ CRYSTFEL_TYPE_INDEXING_OPTS)) #define CRYSTFEL_INDEXING_OPTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), \ CRYSTFEL_TYPE_INDEXING_OPTS, CrystFELIndexingOpts)) struct _crystfelindexingopts { GtkNotebook parent_instance; /*< private >*/ int show_stream_opts; GtkWidget *stream_params; /* Stream output page */ char *cell_file; GtkWidget *cell_chooser; GtkWidget *auto_indm; GtkWidget *indm_chooser; GtkListStore *indm_store; GtkWidget *multi; GtkWidget *refine; GtkWidget *retry; GtkWidget *check_peaks; GtkWidget *check_cell; GtkWidget *tols[6]; /* frac (not %) and radians */ GtkWidget *enable_hitfind; GtkWidget *ignore_fewer_peaks; GtkWidget *integration_combo; GtkWidget *centering; GtkWidget *overpredict; GtkWidget *limit_res; GtkWidget *push_res; GtkWidget *ir_inn; GtkWidget *ir_mid; GtkWidget *ir_out; GtkWidget *fix_profile_radius_p; GtkWidget *fix_profile_radius; GtkWidget *fix_divergence; GtkWidget *pinkindexer_cpeaks; GtkWidget *pinkindexer_use_max_res; GtkWidget *pinkindexer_max_res; GtkWidget *pinkindexer_angle_density; GtkWidget *pinkindexer_refinement_type; GtkWidget *pinkindexer_tolerance; GtkWidget *pinkindexer_use_refl_radius; GtkWidget *pinkindexer_refl_radius; GtkWidget *pinkindexer_max_imbalance; GtkWidget *exclude_nonhits; GtkWidget *no_peaks_in_stream; GtkWidget *no_refls_in_stream; GtkWidget *millepede; GtkWidget *max_mille; GtkListStore *copy_metadata_store; }; struct _crystfelindexingoptsclass { GtkNotebookClass parent_class; }; typedef struct _crystfelindexingopts CrystFELIndexingOpts; typedef struct _crystfelindexingoptsclass CrystFELIndexingOptsClass; extern GType crystfel_indexing_opts_get_type(void); extern GtkWidget *crystfel_indexing_opts_new(void); extern char *crystfel_indexing_opts_get_cell_file(CrystFELIndexingOpts *opts); extern char *crystfel_indexing_opts_get_indexing_method_string(CrystFELIndexingOpts *opts); extern int crystfel_indexing_opts_get_multi_lattice(CrystFELIndexingOpts *opts); extern int crystfel_indexing_opts_get_refine(CrystFELIndexingOpts *opts); extern int crystfel_indexing_opts_get_retry(CrystFELIndexingOpts *opts); extern int crystfel_indexing_opts_get_peak_check(CrystFELIndexingOpts *opts); extern int crystfel_indexing_opts_get_cell_check(CrystFELIndexingOpts *opts); extern void crystfel_indexing_opts_get_tolerances(CrystFELIndexingOpts *opts, float *tols); /* frac (not %) and rad */ extern int crystfel_indexing_opts_get_min_peaks(CrystFELIndexingOpts *opts); extern char *crystfel_indexing_opts_get_integration_method_string(CrystFELIndexingOpts *opts); extern int crystfel_indexing_opts_get_overpredict(CrystFELIndexingOpts *opts); extern float crystfel_indexing_opts_get_push_res(CrystFELIndexingOpts *opts); extern void crystfel_indexing_opts_get_integration_radii(CrystFELIndexingOpts *opts, float *ir_inn, float *ir_mid, float *ir_out); extern int crystfel_indexing_opts_get_exclude_blanks(CrystFELIndexingOpts *opts); extern int crystfel_indexing_opts_get_exclude_peaks(CrystFELIndexingOpts *opts); extern int crystfel_indexing_opts_get_exclude_reflections(CrystFELIndexingOpts *opts); extern char **crystfel_indexing_opts_get_metadata_to_copy(CrystFELIndexingOpts *opts, int *n); extern int crystfel_indexing_opts_get_millepede(CrystFELIndexingOpts *opts, int *pmax_level); extern double crystfel_indexing_opts_get_fixed_profile_radius(CrystFELIndexingOpts *opts, int *active); extern double crystfel_indexing_opts_get_fixed_divergence(CrystFELIndexingOpts *opts); extern int crystfel_indexing_opts_get_pinkindexer_cpeaks(CrystFELIndexingOpts *opts); extern int crystfel_indexing_opts_get_pinkindexer_use_max_res(CrystFELIndexingOpts *opts); extern double crystfel_indexing_opts_get_pinkindexer_max_res(CrystFELIndexingOpts *opts); extern int crystfel_indexing_opts_get_pinkindexer_angle_density(CrystFELIndexingOpts *opts); extern int crystfel_indexing_opts_get_pinkindexer_refinement_type(CrystFELIndexingOpts *opts); extern double crystfel_indexing_opts_get_pinkindexer_tolerance(CrystFELIndexingOpts *opts); extern int crystfel_indexing_opts_get_pinkindexer_use_refl_radius(CrystFELIndexingOpts *opts); extern double crystfel_indexing_opts_get_pinkindexer_refl_radius(CrystFELIndexingOpts *opts); extern double crystfel_indexing_opts_get_pinkindexer_max_imbalance(CrystFELIndexingOpts *opts); extern void crystfel_indexing_opts_set_show_stream_opts(CrystFELIndexingOpts *opts, int val); extern void crystfel_indexing_opts_set_cell_file(CrystFELIndexingOpts *opts, const char *cell_file); extern void crystfel_indexing_opts_set_indexing_method_string(CrystFELIndexingOpts *opts, const char *indm_str); extern void crystfel_indexing_opts_set_multi_lattice(CrystFELIndexingOpts *opts, int multi); extern void crystfel_indexing_opts_set_refine(CrystFELIndexingOpts *opts, int refine); extern void crystfel_indexing_opts_set_retry(CrystFELIndexingOpts *opts, int retry); extern void crystfel_indexing_opts_set_peak_check(CrystFELIndexingOpts *opts, int peak_check); extern void crystfel_indexing_opts_set_cell_check(CrystFELIndexingOpts *opts, int cell_check); extern void crystfel_indexing_opts_set_tolerances(CrystFELIndexingOpts *opts, float *tols); /* frac (not %) and rad */ extern void crystfel_indexing_opts_set_min_peaks(CrystFELIndexingOpts *opts, int min_peaks); extern void crystfel_indexing_opts_set_integration_method_string(CrystFELIndexingOpts *opts, const char *integr_str); extern void crystfel_indexing_opts_set_overpredict(CrystFELIndexingOpts *opts, int overpredict); extern void crystfel_indexing_opts_set_push_res(CrystFELIndexingOpts *opts, float push_res); extern void crystfel_indexing_opts_set_integration_radii(CrystFELIndexingOpts *opts, float ir_inn, float ir_mid, float ir_out); extern void crystfel_indexing_opts_set_metadata_to_copy(CrystFELIndexingOpts *opts, char *const *headers, int n_headers); extern void crystfel_indexing_opts_set_exclude_blanks(CrystFELIndexingOpts *opts, int flag); extern void crystfel_indexing_opts_set_exclude_peaks(CrystFELIndexingOpts *opts, int flag); extern void crystfel_indexing_opts_set_exclude_reflections(CrystFELIndexingOpts *opts, int flag); extern void crystfel_indexing_opts_set_millepede(CrystFELIndexingOpts *opts, int enable, int max_level); extern void crystfel_indexing_opts_set_fixed_profile_radius(CrystFELIndexingOpts *opts, int active, double val); extern void crystfel_indexing_opts_set_fixed_divergence(CrystFELIndexingOpts *opts, double val); extern void crystfel_indexing_opts_set_pinkindexer_cpeaks(CrystFELIndexingOpts *opts, int val); extern void crystfel_indexing_opts_set_pinkindexer_use_max_res(CrystFELIndexingOpts *opts, int val); extern void crystfel_indexing_opts_set_pinkindexer_max_res(CrystFELIndexingOpts *opts, double val); extern void crystfel_indexing_opts_set_pinkindexer_angle_density(CrystFELIndexingOpts *opts, int val); extern void crystfel_indexing_opts_set_pinkindexer_refinement_type(CrystFELIndexingOpts *opts, int val); extern void crystfel_indexing_opts_set_pinkindexer_tolerance(CrystFELIndexingOpts *opts, double val); extern void crystfel_indexing_opts_set_pinkindexer_use_refl_radius(CrystFELIndexingOpts *opts, int val); extern void crystfel_indexing_opts_set_pinkindexer_refl_radius(CrystFELIndexingOpts *opts, double val); extern void crystfel_indexing_opts_set_pinkindexer_max_imbalance(CrystFELIndexingOpts *opts, double val); #endif /* CRYSTFELINDEXINGOPTS_H */