#if !defined(ell_cylinder_h) #define ell_cylinder_h /** 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 contrast = SLD of solvent - SLD of the cylinder 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 * */ typedef struct { /// Scale factor // [DEFAULT]=scale=1.0 double scale; /// Minor radius [A] // [DEFAULT]=r_minor=20.0 [A] double r_minor; /// Ratio of major/minor radii // [DEFAULT]=r_ratio=1.5 double r_ratio; /// Length of the cylinder [A] // [DEFAULT]=length=400.0 [A] double length; /// Contrast [1/A^(2)] // [DEFAULT]=contrast=3.0e-6 [1/A^(2)] double contrast; /// Incoherent Background [1/cm] 0.000 // [DEFAULT]=background=0 [1/cm] double background; /// Orientation of the cylinder axis w/respect incoming beam [rad] // [DEFAULT]=cyl_theta=1.57 [rad] double cyl_theta; /// Orientation of the cylinder in the plane of the detector [rad] // [DEFAULT]=cyl_phi=0.0 [rad] double cyl_phi; /// Orientation of major radius of the cross-section w/respect vector q [rad] // [DEFAULT]=cyl_psi=0.0 [rad] double cyl_psi; } EllipticalCylinderParameters; /// 1D scattering function double elliptical_cylinder_analytical_1D(EllipticalCylinderParameters *pars, double q); /// 2D scattering function double elliptical_cylinder_analytical_2D(EllipticalCylinderParameters *pars, double q, double phi); double elliptical_cylinder_analytical_2DXY(EllipticalCylinderParameters *pars, double qx, double qy); double elliptical_cylinder_analytical_2D_scaled(EllipticalCylinderParameters *pars, double q, double q_x, double q_y); #endif