#if !defined(triaxial_ellipsoid_h) #define triaxial_ellipsoid_h /** Structure definition for cylinder parameters * [PYTHONCLASS] = TriaxialEllipsoidModel * [DISP_PARAMS] = axis_theta, axis_phi [DESCRIPTION] = Note: Constraints must be applied during fitting to ensure that the inequality a [FIXED]= axis_phi.width; axis_theta.width; semi_axisA.width; semi_axisB.width; semi_axisC.width [ORIENTATION_PARAMS]= axis_phi; axis_theta; axis_phi.width; axis_theta.width **/ typedef struct { /// Scale factor // [DEFAULT]=scale=1.0 double scale; /// semi -axis B of the triaxial_ellipsoid [A] // [DEFAULT]=semi_axisB= 35.0 [A] double semi_axisA; /// semi -axis B of the triaxial_ellipsoid [A] // [DEFAULT]=semi_axisA=100.0 [A] double semi_axisB; /// semi -axis C of the triaxial_ellipsoid [A] // [DEFAULT]=semi_axisC=400.0 [A] double semi_axisC; /// Contrast [1/AČ] // [DEFAULT]=contrast=5.3e-6 [1/AČ] double contrast; /// Incoherent Background [1/cm] 0.00 // [DEFAULT]=background=0.0 [1/cm] double background; /// Orientation of the triaxial_ellipsoid axis w/respect incoming beam [rad] // [DEFAULT]=axis_theta=1.0 [rad] double axis_theta; /// Orientation of the triaxial_ellipsoid in the plane of the detector [rad] // [DEFAULT]=axis_phi=1.0 [rad] double axis_phi; } TriaxialEllipsoidParameters; /// 1D scattering function double triaxial_ellipsoid_analytical_1D(TriaxialEllipsoidParameters *pars, double q); /// 2D scattering function double triaxial_ellipsoid_analytical_2D(TriaxialEllipsoidParameters *pars, double q, double phi); double triaxial_ellipsoid_analytical_2DXY(TriaxialEllipsoidParameters *pars, double qx, double qy); double triaxial_ellipsoid_analytical_2D_scaled(TriaxialEllipsoidParameters *pars, double q, double q_x, double q_y); #endif