#if !defined(capcyl_h) #define capcyl_h #include "parameters.hh" /** * Structure definition for CappedCylinder parameters */ //[PYTHONCLASS] = CappedCylinderModel //[DISP_PARAMS] = rad_cyl,len_cyl,rad_cap,phi, theta //[DESCRIPTION] =Calculates the scattering from a cylinder with spherical section end-caps. // That is, a sphereocylinder // with end caps that have a radius larger than // that of the cylinder and the center of the // end cap radius lies within the cylinder. // Note: As the length of cylinder -->0, // it becomes a ConvexLens. // It must be that rad_cyl <(=) rad_cap. // [Parameters]; // scale: volume fraction of spheres, // background:incoherent background, // rad_cyl: radius of the cylinder, // len_cyl: length of the cylinder, // rad_cap: radius of the semi-spherical cap, // sld_capcyl: SLD of the capped cylinder, // sld_solv: SLD of the solvent. // //[FIXED]= rad_cyl.width;len_cyl;rad_cap;phi.width; theta.width //[ORIENTATION_PARAMS]= phi; theta; phi.width; theta.width class CappedCylinderModel{ public: // Model parameters /// Scale factor // [DEFAULT]=scale= 1.0 Parameter scale; /// rad_cyl [A] // [DEFAULT]=rad_cyl=20.0 [A] Parameter rad_cyl; /// length of the cylinder // [DEFAULT]=len_cyl=400.0 [A] Parameter len_cyl; /// Radius of sphere [A] // [DEFAULT]=rad_cap=40.0 [A] Parameter rad_cap; /// sld_capcyl [1/A^(2)] // [DEFAULT]=sld_capcyl= 1.0e-6 [1/A^(2)] Parameter sld_capcyl; /// sld_solv [1/A^(2)] // [DEFAULT]=sld_solv= 6.3e-6 [1/A^(2)] Parameter sld_solv; /// Incoherent Background [1/cm] // [DEFAULT]=background=0.0 [1/cm] Parameter background; /// Angle of the main axis against z-axis in detector plane [deg] // [DEFAULT]=theta=0.0 [deg] Parameter theta; /// Azimuthal angle around z-axis in detector plane [deg] // [DEFAULT]=phi=0.0 [deg] Parameter phi; // Constructor CappedCylinderModel(); // Operators to get I(Q) double operator()(double q); double operator()(double qx, double qy); double calculate_ER(); double evaluate_rphi(double q, double phi); }; #endif