Ignore:
Timestamp:
Jul 1, 2008 2:56:32 PM (16 years ago)
Author:
Mathieu Doucet <doucetm@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
2a92852
Parents:
a17ffdf
Message:

Added slit smearing (still slow)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pr_inversion/c_extensions/Cinvertor.c

    rbd30f4a5 rf168d02  
    624624 
    625625        iq_value = iq(pars, self->params.d_max, npars, q); 
     626        return Py_BuildValue("f", iq_value); 
     627} 
     628 
     629const char get_iq_smeared_doc[] = 
     630        "Function to call to evaluate the scattering intensity.\n" 
     631        "The scattering intensity is slit-smeared." 
     632        " @param args: c-parameters, and q\n" 
     633        " @return: I(q)"; 
     634 
     635/** 
     636 * Function to call to evaluate the scattering intensity 
     637 * The scattering intensity is slit-smeared. 
     638 * @param args: c-parameters, and q 
     639 * @return: I(q) 
     640 */ 
     641static PyObject * get_iq_smeared(Cinvertor *self, PyObject *args) { 
     642        double *pars; 
     643        double q, iq_value; 
     644        PyObject *data_obj; 
     645        Py_ssize_t npars; 
     646 
     647        if (!PyArg_ParseTuple(args, "Od", &data_obj, &q)) return NULL; 
     648        OUTVECTOR(data_obj,pars,npars); 
     649 
     650        iq_value = iq_smeared(pars, self->params.d_max, npars, 
     651                                                        self->params.slit_height, self->params.slit_width, 
     652                                                        q, 21); 
    626653        return Py_BuildValue("f", iq_value); 
    627654} 
     
    875902                    a[i*nfunc+j] = 1.0/self->params.err[i]; 
    876903                } else { 
    877                         a[i*nfunc+j] = ortho_transformed(self->params.d_max, j+offset, self->params.x[i])/self->params.err[i]; 
     904                        if (self->params.slit_width>0 || self->params.slit_height>0) { 
     905                                a[i*nfunc+j] = ortho_transformed_smeared(self->params.d_max, 
     906                                                j+offset, self->params.slit_height, self->params.slit_width, 
     907                                                self->params.x[i], 21)/self->params.err[i]; 
     908                        } else { 
     909                                a[i*nfunc+j] = ortho_transformed(self->params.d_max, j+offset, self->params.x[i])/self->params.err[i]; 
     910                        } 
    878911                } 
    879912            } 
     
    10091042                   {"get_nerr", (PyCFunction)get_nerr, METH_VARARGS, get_nerr_doc}, 
    10101043                   {"iq", (PyCFunction)get_iq, METH_VARARGS, get_iq_doc}, 
     1044                   {"iq_smeared", (PyCFunction)get_iq_smeared, METH_VARARGS, get_iq_smeared_doc}, 
    10111045                   {"pr", (PyCFunction)get_pr, METH_VARARGS, get_pr_doc}, 
    10121046                   {"get_pr_err", (PyCFunction)get_pr_err, METH_VARARGS, get_pr_err_doc}, 
Note: See TracChangeset for help on using the changeset viewer.