#if !defined(ell_cylinder_h) #define ell_cylinder_h #include "parameters.hh" /** Structure definition for cylinder parameters * [PYTHONCLASS] = EllipticalCylinderModel * [DISP_PARAMS] = r_minor, r_ratio, length, cyl_theta, cyl_phi, cyl_psi * [DESCRIPTION] = Model parameters: r_minor = the radius of minor axis of the cross section r_ratio = the ratio of (r_major /r_minor >= 1) length = the length of the cylinder sldCyl = SLD of the cylinder sldSolv = SLD of solvent - background = incoherent background * * [FIXED]= cyl_phi.width; * cyl_theta.width; cyl_psi.width; length.width; r_minor.width; r_ratio.width * * [ORIENTATION_PARAMS]= cyl_phi; cyl_theta; cyl_psi; cyl_phi.width; cyl_theta.width; cyl_psi.width * */ class EllipticalCylinderModel{ public: // Model parameters /// Minor radius [A] // [DEFAULT]=r_minor=20.0 [A] Parameter r_minor; /// Scale factor // [DEFAULT]=scale=1.0 Parameter scale; /// Ratio of major/minor radii // [DEFAULT]=r_ratio=1.5 Parameter r_ratio; /// Length of the cylinder [A] // [DEFAULT]=length=400.0 [A] Parameter length; /// SLD of cylinder [1/A^(2)] // [DEFAULT]=sldCyl=4.0e-6 [1/A^(2)] Parameter sldCyl; /// SLD of solvent [1/A^(2)] // [DEFAULT]=sldSolv=1.0e-6 [1/A^(2)] Parameter sldSolv; /// Incoherent Background [1/cm] 0.000 // [DEFAULT]=background=0 [1/cm] Parameter background; /// Orientation of the cylinder axis w/respect incoming beam [deg] // [DEFAULT]=cyl_theta=90.0 [deg] Parameter cyl_theta; /// Orientation of the cylinder in the plane of the detector [deg] // [DEFAULT]=cyl_phi=0.0 [deg] Parameter cyl_phi; /// Orientation of major radius of the cross-section w/respect vector q [deg] // [DEFAULT]=cyl_psi=0.0 [deg] Parameter cyl_psi; // Constructor EllipticalCylinderModel(); // 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