/* TODO: Add 2D model */ #if !defined(csparallelepiped_h) #define csparallelepiped_h #include "parameters.hh" /** 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 **/ class CSParallelepipedModel{ public: // Model parameters /// Scale factor // [DEFAULT]=scale=1.0 Parameter scale; /// Length of short edge of the parallelepiped [A] // [DEFAULT]=shortA=35 [A] Parameter shortA; /// Length of mid edge of the parallelepiped [A] // [DEFAULT]=midB=75 [A] Parameter midB; /// Length of long edge of the parallelepiped [A] // [DEFAULT]=longC=400 [A] Parameter longC; /// Thickness of rimA [A] // [DEFAULT]=rimA=10 [A] Parameter rimA; /// Thickness of rimB [A] [A] // [DEFAULT]=rimB=10 [A] Parameter rimB; /// Thickness of rimC [A] [A] // [DEFAULT]=rimC=10 [A] Parameter rimC; /// SLD_rimA [1/A^(2)] // [DEFAULT]=sld_rimA=2e-6 [1/A^(2)] Parameter sld_rimA; /// SLD_rimB [1/A^(2)] // [DEFAULT]=sld_rimB=4e-6 [1/A^(2)] Parameter sld_rimB; /// SLD_rimC [1/A^(2)] // [DEFAULT]=sld_rimC=2e-6 [1/A^(2)] Parameter sld_rimC; /// SLD_pcore [1/A^(2)] // [DEFAULT]=sld_pcore=1e-6 [1/A^(2)] Parameter sld_pcore; /// sld_solv [1/A^(2)] // [DEFAULT]=sld_solv=6e-6 [1/A^(2)] Parameter sld_solv; /// Incoherent Background [1/cm] // [DEFAULT]=background=0.06 [1/cm] Parameter background; /// Orientation of the parallelepiped axis w/respect incoming beam [deg] // [DEFAULT]=parallel_theta=0.0 [deg] Parameter parallel_theta; /// Orientation of the longitudinal axis of the parallelepiped in the plane of the detector [deg] // [DEFAULT]=parallel_phi=0.0 [deg] Parameter 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] Parameter parallel_psi; // Constructor CSParallelepipedModel(); // 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