1 | #if !defined(invertor_h) |
---|
2 | #define invertor_h |
---|
3 | |
---|
4 | /** |
---|
5 | * Internal data structure for P(r) inversion |
---|
6 | */ |
---|
7 | typedef struct { |
---|
8 | /// Maximum distance between any two points in the system |
---|
9 | double d_max; |
---|
10 | /// q data |
---|
11 | double *x; |
---|
12 | /// I(q) data |
---|
13 | double *y; |
---|
14 | /// dI(q) data |
---|
15 | double *err; |
---|
16 | /// Number of q points |
---|
17 | int npoints; |
---|
18 | /// Number of I(q) points |
---|
19 | int ny; |
---|
20 | /// Number of dI(q) points |
---|
21 | int nerr; |
---|
22 | /// Alpha value |
---|
23 | double alpha; |
---|
24 | /// Minimum q to include in inversion |
---|
25 | double q_min; |
---|
26 | /// Maximum q to include in inversion |
---|
27 | double q_max; |
---|
28 | /// Flag for whether or not to evalute a constant background while inverting |
---|
29 | int has_bck; |
---|
30 | /// Slit height in units of q [A-1] |
---|
31 | double slit_height; |
---|
32 | /// Slit width in units of q [A-1] |
---|
33 | double slit_width; |
---|
34 | } Invertor_params; |
---|
35 | |
---|
36 | void invertor_dealloc(Invertor_params *pars); |
---|
37 | |
---|
38 | void invertor_init(Invertor_params *pars); |
---|
39 | |
---|
40 | double pr_sphere(double R, double r); |
---|
41 | double ortho(double d_max, int n, double r); |
---|
42 | double ortho_transformed(double d_max, int n, double q); |
---|
43 | double ortho_derived(double d_max, int n, double r); |
---|
44 | double iq(double *c, double d_max, int n_c, double q); |
---|
45 | double pr(double *c, double d_max, int n_c, double r); |
---|
46 | double dprdr(double *pars, double d_max, int n_c, double r); |
---|
47 | double reg_term(double *pars, double d_max, int n_c, int nslice); |
---|
48 | double int_p2(double *pars, double d_max, int n_c, int nslice); |
---|
49 | void pr_err(double *pars, double *err, double d_max, int n_c, |
---|
50 | double r, double *pr_value, double *pr_value_err); |
---|
51 | int npeaks(double *pars, double d_max, int n_c, int nslice); |
---|
52 | double positive_integral(double *pars, double d_max, int n_c, int nslice); |
---|
53 | double positive_errors(double *pars, double *err, double d_max, int n_c, int nslice); |
---|
54 | double rg(double *pars, double d_max, int n_c, int nslice); |
---|
55 | double int_pr(double *pars, double d_max, int n_c, int nslice); |
---|
56 | double ortho_transformed_smeared(double d_max, int n, double heigth, double width, double q, int npts); |
---|
57 | double iq_smeared(double *pars, double d_max, int n_c, double height, double width, double q, int npts); |
---|
58 | |
---|
59 | #endif |
---|