#if !defined(flexcyl_ellipX_h)
#define flexcyl_ellipX_h
#include "parameters.hh"
/** Structure definition for Flexible cylinder w/ EllipX parameters
* [PYTHONCLASS] = FlexCylEllipXModel
* [DISP_PARAMS] = length, kuhn_length, radius, axis_ratio
[DESCRIPTION] = Note : scale and contrast=sldCyl-sldSolv are both multiplicative factors in the
model and are perfectly correlated. One or
both of these parameters must be held fixed
during model fitting.
[FIXED]= length.width; kuhn_length.width; radius.width; axis_ratio.width
[ORIENTATION_PARAMS]=
**/
class FlexCylEllipXModel{
public:
// Model parameters
/// Scale factor
// [DEFAULT]=scale=1.0
Parameter scale;
/// Length of the flexible cylinder [A]
// [DEFAULT]=length=1000 [A]
Parameter length;
/// Kuhn length of the flexible cylinder [A]
// [DEFAULT]=kuhn_length=100 [A]
Parameter kuhn_length;
/// Radius of the flexible cylinder [A]
// [DEFAULT]=radius=20.0 [A]
Parameter radius;
/// axis_ratio (major_radius/radius
// [DEFAULT]=axis_ratio=1.5
Parameter axis_ratio;
/// SLD of cylinder [1/A^(2)]
// [DEFAULT]=sldCyl=1.0e-6 [1/A^(2)]
Parameter sldCyl;
/// SLD of solvent [1/A^(2)]
// [DEFAULT]=sldSolv=6.3e-6 [1/A^(2)]
Parameter sldSolv;
/// Incoherent Background [1/cm]
// [DEFAULT]=background=0.0001 [1/cm]
Parameter background;
// Constructor
FlexCylEllipXModel();
// 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