#if !defined(masssurfacefractal_h)
#define masssurfacefractal_h
#include "parameters.hh"
/**
* Structure definition for sphere parameters
*/
//[PYTHONCLASS] = MassSurfaceFractal
//[DESCRIPTION] = The scattering intensity I(x) = scale*P(x) + background,
// p(x)= {[1+(x^2*a)]^(Dm/2) * [1+(x^2*b)]^(6-Ds-Dm)/2}^(-1)
// a = Rg^2/(3*Dm/2)
// b = rg^2/(3*(6-Ds-Dm)/2)
// scale = scale factor * N*Volume^2*contrast^2
// mass_dim = Dm (mass fractal dimension)
// surface_dim = Ds
// cluster_rg = Rg
// primary_rg = rg
// background = background
// Ref: Schmidt, J Appl Cryst, eq(19), (1991), 24, 414-435
// : Hurd, Schaefer, Martin, Phys Rev A, eq(2),(1987),35, 2361-2364
// Note that 0 < Ds< 6 and 0 < Dm < 6.
//
//[ORIENTATION_PARAMS]=
class MassSurfaceFractal{
public:
// Model parameters
/// Scale factor
// [DEFAULT]=scale= 1.0
Parameter scale;
/// Mass fractal dimension
// [DEFAULT]=mass_dim=1.8
Parameter mass_dim;
/// Surface fractal dimension
// [DEFAULT]=surface_dim=2.3
Parameter surface_dim;
/// cluster_rg [A]
// [DEFAULT]=cluster_rg=86.7 [A]
Parameter cluster_rg;
/// primary_rg [A]
// [DEFAULT]=primary_rg=4000.0 [A]
Parameter primary_rg;
/// Incoherent Background
// [DEFAULT]=background=0.0
Parameter background;
// Constructor
MassSurfaceFractal();
// 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