/* TODO: Add 2D model */ #if !defined(csparallelepiped_h) #define csparallelepiped_h /** Structure definition for CSParallelepiped parameters * [PYTHONCLASS] = CSParallelepipedModel * [DISP_PARAMS] = shortA, midB, longC,parallel_phi,parallel_psi, parallel_theta [DESCRIPTION] = Form factor for a rectangular Shell. Below are the Parameters. scale: scale factor shortA: length of short edge [A] midB: length of another short edge [A] longC: length of long edge of the parallelepiped [A] rimA: length of short edge [A] rimB: length of another short edge [A] rimC: length of long edge of the parallelepiped [A] sld_rimA: sld of rimA [1/A^(2)] sld_rimB: sld of rimB [1/A^(2)] sld_rimC: sld of rimC [1/A^(2)] sld_core: Pipe_sld [1/A^(2)] sld_solv: solvent_sld [1/A^(2)] background: incoherent Background [1/cm] [FIXED]= shortA.width; midB.width; longC.width;parallel_phi.width;parallel_psi.width; parallel_theta.width [ORIENTATION_PARAMS]= parallel_phi;parallel_psi; parallel_theta; parallel_phi.width;parallel_psi.width; parallel_theta.width **/ typedef struct { /// Scale factor // [DEFAULT]=scale=1.0 double scale; /// Length of short edge of the parallelepiped [A] // [DEFAULT]=shortA=35 [A] double shortA; /// Length of mid edge of the parallelepiped [A] // [DEFAULT]=midB=75 [A] double midB; /// Length of long edge of the parallelepiped [A] // [DEFAULT]=longC=400 [A] double longC; /// Thickness of rimA [A] // [DEFAULT]=rimA=10 [A] double rimA; /// Thickness of rimB [A] [A] // [DEFAULT]=rimB=10 [A] double rimB; /// Thickness of rimC [A] [A] // [DEFAULT]=rimC=10 [A] double rimC; /// SLD_rimA [1/A^(2)] // [DEFAULT]=sld_rimA=2e-6 [1/A^(2)] double sld_rimA; /// SLD_rimB [1/A^(2)] // [DEFAULT]=sld_rimB=4e-6 [1/A^(2)] double sld_rimB; /// SLD_rimC [1/A^(2)] // [DEFAULT]=sld_rimC=2e-6 [1/A^(2)] double sld_rimC; /// SLD_pcore [1/A^(2)] // [DEFAULT]=sld_pcore=1e-6 [1/A^(2)] double sld_pcore; /// sld_solv [1/A^(2)] // [DEFAULT]=sld_solv=6e-6 [1/A^(2)] double sld_solv; /// Incoherent Background [1/cm] // [DEFAULT]=background=0.06 [1/cm] double background; /// Orientation of the parallelepiped axis w/respect incoming beam [deg] // [DEFAULT]=parallel_theta=0.0 [deg] double parallel_theta; /// Orientation of the longitudinal axis of the parallelepiped in the plane of the detector [deg] // [DEFAULT]=parallel_phi=0.0 [deg] double parallel_phi; /// Orientation of the cross-sectional minor axis of the parallelepiped in the plane of the detector [deg] // [DEFAULT]=parallel_psi=0.0 [deg] double parallel_psi; } CSParallelepipedParameters; /// 1D scattering function double csparallelepiped_analytical_1D(CSParallelepipedParameters *pars, double q); /// 2D scattering function double csparallelepiped_analytical_2D(CSParallelepipedParameters *pars, double q, double phi); double csparallelepiped_analytical_2DXY(CSParallelepipedParameters *pars, double qx, double qy); double csparallelepiped_analytical_2D_scaled(CSParallelepipedParameters *pars, double q, double q_x, double q_y); #endif