Changeset 41e8114 in sasview for realSpaceModeling/pointsmodelpy
- Timestamp:
- Nov 2, 2007 11:04:05 AM (17 years ago)
- 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:
- 5a2070e
- Parents:
- 7e845ea
- Location:
- realSpaceModeling/pointsmodelpy
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
realSpaceModeling/pointsmodelpy/libpointsmodelpy/points_model.cc
r2bb0b26 r41e8114 412 412 } 413 413 414 double PointsModel::CalculateIQ_2D_Error(const vector<Point3D>&points, double qx, double qy){ 415 416 int size = points.size(); 417 418 double delta_x, delta_y; 419 double q_t2 = qx*qx + qy*qy; 420 double cos_term = 0; 421 double sin_term = 0; 422 double cos_err = 0; 423 double sin_err = 0; 424 425 // Estimate the error on the position of each point 426 // in x or y as V^(1/3)/N 427 428 for (int i = 0; i < size; i++) { 429 430 431 //the sld for the pair of points 432 433 double phase = qx*points[i].getX() + qy*points[i].getY(); 434 double sld_fac = points[i].getSLD() * points[i].getSLD(); 435 436 cos_term += cos(phase) * points[i].getSLD(); 437 sin_term += sin(phase) * points[i].getSLD(); 438 439 sin_err += cos(phase) * cos(phase) * sld_fac; 440 cos_err += sin(phase) * sin(phase) * sld_fac; 441 442 } 443 444 // P(q) = 1/V I(q) = (V/N)^2 (1/V) (cos_term^2 + sin_term^2) 445 // We divide by N here and we will multiply by the density later. 446 447 // We will need to multiply this error by V^(1/3)/N. 448 // We don't have access to V from within this class. 449 return 2*sqrt(cos_term*cos_term*cos_err*cos_err + sin_term*sin_term*sin_err*sin_err)/size; 450 } 451 -
realSpaceModeling/pointsmodelpy/libpointsmodelpy/points_model.h
r2bb0b26 r41e8114 28 28 // Fast 2D simulation 29 29 double CalculateIQ_2D(const vector<Point3D>&, double qx, double qy); 30 double CalculateIQ_2D_Error(const vector<Point3D>&, double qx, double qy); 30 31 31 32 //given a set of points, calculate distance correlation -
realSpaceModeling/pointsmodelpy/pointsmodelpymodule/bindings.cc
r2bb0b26 r41e8114 121 121 METH_VARARGS, pypointsmodelpy_get_complex_Iqxy__doc__}, 122 122 123 //ComplexModel calculateIQ_2D_Error(pts,Qx,Qy) 124 {pypointsmodelpy_get_complex_Iqxy_err__name__, pypointsmodelpy_get_complex_Iqxy_err, 125 METH_VARARGS, pypointsmodelpy_get_complex_Iqxy_err__doc__}, 126 123 127 //ComplexModel calculateIQ 124 128 {pypointsmodelpy_get_complex_iq__name__, pypointsmodelpy_get_complex_iq, -
realSpaceModeling/pointsmodelpy/pointsmodelpymodule/misc.cc
r2bb0b26 r41e8114 554 554 } 555 555 556 //LORESModel method CalculateIQ_2D_Error(points,qx,qy) 557 char pypointsmodelpy_get_complex_Iqxy_err__name__[] = "get_complex_iq_2D_err"; 558 char pypointsmodelpy_get_complex_Iqxy_err__doc__[] = "calculate averaged scattering intensity from a single q"; 559 560 PyObject * pypointsmodelpy_get_complex_Iqxy_err(PyObject *, PyObject *args) 561 { 562 PyObject *pylores = 0, *pypoint3dvec = 0; 563 double qx = 0, qy = 0; 564 int ok = PyArg_ParseTuple(args, "OOdd", &pylores, &pypoint3dvec, &qx, &qy); 565 if(!ok) return NULL; 566 567 void *temp = PyCObject_AsVoidPtr(pylores); 568 ComplexModel * thiscomplex = static_cast<ComplexModel *>(temp); 569 void *temp2 = PyCObject_AsVoidPtr(pypoint3dvec); 570 vector<Point3D> * thisvec = static_cast<vector<Point3D> *>(temp2); 571 572 double I = thiscomplex->CalculateIQ_2D_Error(*thisvec,qx,qy); 573 574 return Py_BuildValue("d",I); 575 } 576 556 577 //LORESModel method CalculateIQ(q) 557 578 char pypointsmodelpy_get_complex_i__name__[] = "get_complex_i"; -
realSpaceModeling/pointsmodelpy/pointsmodelpymodule/misc.h
r2bb0b26 r41e8114 182 182 PyObject * pypointsmodelpy_get_complex_Iqxy(PyObject *, PyObject *); 183 183 184 // ComplexModel method calculateIQ_2D_Error(pts,qx,qy) 185 extern char pypointsmodelpy_get_complex_Iqxy_err__name__[]; 186 extern char pypointsmodelpy_get_complex_Iqxy_err__doc__[]; 187 extern "C" 188 PyObject * pypointsmodelpy_get_complex_Iqxy_err(PyObject *, PyObject *); 189 184 190 // ComplexModel method calculateIQ(iq) 185 191 extern char pypointsmodelpy_get_complex_iq__name__[];
Note: See TracChangeset
for help on using the changeset viewer.