#if !defined(fuzzysphere_h)
#define fuzzysphere_h
#include "parameters.hh"
/**
* Structure definition for FuzzySphere parameters
*/
//[PYTHONCLASS] = FuzzySphereModel
//[DISP_PARAMS] = radius, fuzziness
//[DESCRIPTION] =
// scale: scale factor times volume fraction,
// or just volume fraction for absolute scale data
// radius: radius of the solid sphere
// fuzziness = the STD of the height of fuzzy interfacial
// thickness (ie., so-called interfacial roughness)
// sldSph: the SLD of the sphere
// sldSolv: the SLD of the solvent
// background: incoherent background
// Note: By definition, this function works only when fuzziness << radius.
//
//[FIXED]= radius.width; fuzziness.width
//[ORIENTATION_PARAMS]=
class FuzzySphereModel{
public:
// Model parameters
/// Radius of sphere [A]
// [DEFAULT]=radius=60.0 [A]
Parameter radius;
/// Scale factor
// [DEFAULT]=scale= 0.01
Parameter scale;
/// surface roughness [A]
// [DEFAULT]=fuzziness= 10.0 [A]
Parameter fuzziness;
/// sldSph [1/A^(2)]
// [DEFAULT]=sldSph= 1.0e-6 [1/A^(2)]
Parameter sldSph;
/// sldSolv [1/A^(2)]
// [DEFAULT]=sldSolv= 3.0e-6 [1/A^(2)]
Parameter sldSolv;
/// Incoherent Background [1/cm]
// [DEFAULT]=background=0.001 [1/cm]
Parameter background;
// Constructor
FuzzySphereModel();
// Operators to get I(Q)
double operator()(double q);
double operator()(double qx, double qy);
double calculate_ER();
double evaluate_rphi(double q, double phi);
};
#endif