#if !defined(o_h) #define linearpearls_h #include "parameters.hh" /** * Structure definition for the parameters */ //[PYTHONCLASS] = LinearPearlsModel //[DISP_PARAMS] = radius, edge_separation //[DESCRIPTION] =Calculate form factor for Pearl Necklace Model // [Macromol. 1996, 29, 2974-2979] // Parameters: // background:background // scale: scale factor // sld_pearl: the SLD of the pearl spheres // sld_solv: the SLD of the solvent // num_pearls: number of the pearls // radius: the radius of a pearl // edge_separation: the length of string segment; surface to surface // //[FIXED]= radius.width; edge_separation.width //[NON_FITTABLE_PARAMS]= //[ORIENTATION_PARAMS]= typedef struct { /// Scale factor // [DEFAULT]=scale= 1.0 double scale; /// radius [A] // [DEFAULT]=radius=80.0 [A] double radius; /// edge_separation // [DEFAULT]=edge_separation= 350 [A] double edge_separation; /// num_pearls // [DEFAULT]=num_pearls= 3 double num_pearls; /// sld_pearl // [DEFAULT]=sld_pearl= 1.0e-06 [1/A^(2)] double sld_pearl; /// sld_solv // [DEFAULT]=sld_solv= 6.3e-06 [1/A^(2)] double sld_solv; /// Background // [DEFAULT]=background=0 double background; }LinearPearlsParameters; class LinearPearlsModel{ public: // Model parameters /// Scale factor // [DEFAULT]=scale= 1.0 Parameter scale; /// radius [A] // [DEFAULT]=radius=80.0 [A] Parameter radius; /// edge_separation // [DEFAULT]=edge_separation= 350 [A] Parameter edge_separation; /// num_pearls // [DEFAULT]=num_pearls= 3 Parameter num_pearls; /// sld_pearl // [DEFAULT]=sld_pearl= 1.0e-06 [1/A^(2)] Parameter sld_pearl; /// sld_solv // [DEFAULT]=sld_solv= 6.3e-06 [1/A^(2)] Parameter sld_solv; /// Background // [DEFAULT]=background=0 Parameter background; // Constructor LinearPearlsModel(); // Operators to get I(Q) double operator()(double q); double operator()(double qx, double qy); double calculate_ER(); double calculate_VR(); double evaluate_rphi(double q, double phi); }; #endif