#if !defined(fractal_h)
#define fractal_h
/**
* Structure definition for sphere parameters
*/
//[PYTHONCLASS] = FractalModel
//[DISP_PARAMS] = radius
//[DESCRIPTION] = The scattering intensity I(x) = P(|x|)*S(|x|) + background, where
// p(x)= scale * V * delta^(2)* F(x*radius)^(2)
// F(x) = 3*[sin(x)-x cos(x)]/x**3
// where delta = sldBlock -sldSolv.
// scale = scale factor * Volume fraction
// radius = Block radius
// fractal_dim = Fractal dimension
// cor_length = Correlation Length
// sldBlock = SDL block
// sldSolv = SDL solvent
// background = background
//
//[FIXED]= radius.width
//[ORIENTATION_PARAMS]=
typedef struct {
/// Scale factor
// [DEFAULT]=scale= 0.05
double scale;
/// Radius of gyration [A]
// [DEFAULT]=radius=5.0 [A]
double radius;
/// Fractal dimension
// [DEFAULT]=fractal_dim=2.0
double fractal_dim;
/// Correlation Length [A]
// [DEFAULT]=cor_length=100.0 [A]
double cor_length;
/// SDL block [1/A^(2)]
// [DEFAULT]=sldBlock=2.0e-6 [1/A^(2)]
double sldBlock;
/// SDL solvent [1/A^(2)]
// [DEFAULT]=sldSolv= 6.35e-6 [1/A^(2)]
double sldSolv;
/// Incoherent Background [1/cm]
// [DEFAULT]=background=0.0 [1/cm]
double background;
} FractalParameters;
/// 1D scattering function
double fractal_analytical_1D(FractalParameters *pars, double q);
/// 2D scattering function
double fractal_analytical_2D(FractalParameters *pars, double q, double phi);
double fractal_analytical_2DXY(FractalParameters *pars, double qx, double qy);
#endif