Changeset 975ec8e in sasview for sansmodels/src/sans/models/c_extensions
- Timestamp:
- Aug 14, 2009 3:58:58 PM (16 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- d5bd424
- Parents:
- cad821b
- Location:
- sansmodels/src/sans/models/c_extensions
- Files:
-
- 2 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
sansmodels/src/sans/models/c_extensions/binaryHs.h
r3d25331f r975ec8e 7 7 [PYTHONCLASS] = BinaryHSModel 8 8 [DISP_PARAMS] = l_radius,s_radius 9 [DESCRIPTION] =<text> 10 Model parameters: 11 12 l_radius : large radius of the binary hard sphere 13 s_radius : small radius of the binary hard sphere 14 vol_frac_ls : volume fraction of large spheres 15 vol_frac_ss : volume fraction of small spheres 16 ls_sld: large sphere scattering length density 17 ss_sld: small sphere scattering length density 18 solvent_sld: solvent scattering length density 19 background: incoherent background 9 [DESCRIPTION] =<text> Model parameters: l_radius : large radius of binary hard sphere 10 s_radius : small radius of binary hard sphere 11 vol_frac_ls : volume fraction of large spheres 12 vol_frac_ss : volume fraction of small spheres 13 ls_sld: large sphere scattering length density 14 ss_sld: small sphere scattering length density 15 solvent_sld: solvent scattering length density 16 background: incoherent background 20 17 </text> 21 18 [FIXED]= l_radius.width;s_radius.width … … 23 20 */ 24 21 typedef struct { 25 22 26 23 /// large radius of the binary hard sphere [A] 27 // [DEFAULT]=l_radius= 1 60.0 [A]24 // [DEFAULT]=l_radius= 100.0 [A] 28 25 double l_radius; 29 26 … … 32 29 double s_radius; 33 30 34 /// volume fraction of large spheres 35 // [DEFAULT]=vol_frac_ls= 0. 231 /// volume fraction of large spheres 32 // [DEFAULT]=vol_frac_ls= 0.1 36 33 double vol_frac_ls; 37 34 38 /// volume fraction of small spheres 39 // [DEFAULT]=vol_frac_ss= 0.2 35 /// volume fraction of small spheres 36 // [DEFAULT]=vol_frac_ss= 0.2 40 37 double vol_frac_ss; 41 38 -
sansmodels/src/sans/models/c_extensions/elliptical_cylinder.c
r3fe701a r975ec8e 31 31 } 32 32 33 double elliptical_cylinder_kernel(EllipticalCylinderParameters *pars, double q, double alpha, double psi, doublenu) {33 double elliptical_cylinder_kernel(EllipticalCylinderParameters *pars, double q, double alpha, double nu) { 34 34 double qr; 35 35 double qL; 36 double Be,Si; 36 37 double r_major; 37 38 double kernel; … … 42 43 qL = q*pars->length*cos(alpha)/2.0; 43 44 44 kernel = 2.0*NR_BessJ1(qr)/qr * sin(qL)/qL; 45 if (qr==0){ 46 Be = 0.5; 47 }else{ 48 Be = NR_BessJ1(qr)/qr; 49 } 50 if (qL==0){ 51 Si = 1.0; 52 }else{ 53 Si = sin(qL)/qL; 54 } 55 56 57 kernel = 2.0*Be * Si; 45 58 return kernel*kernel; 46 59 } … … 129 142 } 130 143 131 answer = elliptical_cylinder_kernel(pars, q, alpha, pars->cyl_psi,nu);144 answer = elliptical_cylinder_kernel(pars, q, alpha,nu); 132 145 133 146 // Multiply by contrast^2 -
sansmodels/src/sans/models/c_extensions/lamellar.c
r42f193a r975ec8e 22 22 // Fill paramater array 23 23 dp[0] = pars->scale; 24 dp[1] = pars-> delta;25 dp[2] = pars->s igma;26 dp[3] = pars-> contrast;24 dp[1] = pars->bi_thick; 25 dp[2] = pars->sld_bi; 26 dp[3] = pars->sld_sol; 27 27 dp[4] = pars->background; 28 28 29 29 30 30 // Call library function to evaluate model 31 return LamellarFF(dp, q);31 return lamellar_kernel(dp, q); 32 32 } 33 34 33 35 /** 34 36 * Function to evaluate 2D scattering function -
sansmodels/src/sans/models/c_extensions/lamellar.h
r42f193a r975ec8e 3 3 /** Structure definition for lamellar parameters 4 4 * [PYTHONCLASS] = LamellarModel 5 * [DISP_PARAMS] = bi_thick 5 6 [DESCRIPTION] = <text>[Dilute Lamellar Form Factor](from a lyotropic lamellar phase) 6 7 P(q)=2*(contrast/q)^(2)*(1-cos(q*delta) 8 *e^(1/2*(q*sigma)^(2)).9 delta = bilayer thickness10 s igma = variation in bilayer thickness11 = delta*polydispersity12 contrast = SLD_solvent - SLD_bilayer13 Note: the polydispersity in delta is included. 7 I(q)= 2*pi*P(q)/(delta *q^(2)), where 8 P(q)=2*(contrast/q)^(2)*(1-cos(q*delta))^(2)) 9 bi_thick = bilayer thickness 10 sld_bi = SLD of bilayer 11 sld_sol = SLD of solvent 12 background = Incoherent background 13 scale = scale factor 14 14 15 </text> 16 [FIXED]= <text>bi_thick.width</text> 15 17 **/ 16 18 typedef struct { … … 19 21 double scale; 20 22 /// delta bilayer thickness [A] 21 // [DEFAULT]= delta=50.0 [A]22 double delta;23 /// variation in bilayer thickness24 // [DEFAULT]=s igma=0.1525 double s igma;26 /// Contrast [1/A²]27 // [DEFAULT]= contrast=5.3e-6 [1/A²]28 double contrast;23 // [DEFAULT]=bi_thick=50.0 [A] 24 double bi_thick; 25 /// SLD of bilayer [1/A²] 26 // [DEFAULT]=sld_bi=1.0e-6 [1/A²] 27 double sld_bi; 28 /// SLD of solvent [1/A²] 29 // [DEFAULT]=sld_sol=6.3e-6 [1/A²] 30 double sld_sol; 29 31 /// Incoherent Background [1/cm] 0.00 30 32 // [DEFAULT]=background=0.0 [1/cm] -
sansmodels/src/sans/models/c_extensions/oblate.c
r96b59384 r975ec8e 66 66 * @return: function value 67 67 */ 68 /* 68 69 69 double oblate_analytical_2D_scaled(OblateParameters *pars, double q, double q_x, double q_y) { 70 70 71 71 return 1.0; 72 72 } 73 */ 73 -
sansmodels/src/sans/models/c_extensions/oblate.h
r96b59384 r975ec8e 24 24 25 25 [FIXED] = <text>major_core.width;minor_core.width; major_shell.width; minor_shell.width</text> 26 [ORIENTATION_PARAMS] =26 [ORIENTATION_PARAMS]= <text>axis_phi; axis_theta; axis_phi.width; axis_theta.width</text> 27 27 28 28 **/ … … 52 52 // [DEFAULT]=background=0.001 [1/cm] 53 53 double background; 54 / *//Disable for now54 //Disable for now 55 55 /// Orientation of the oblate axis w/respect incoming beam [rad] 56 56 // [DEFAULT]=axis_theta=1.0 [rad] … … 59 59 // [DEFAULT]=axis_phi=1.0 [rad] 60 60 double axis_phi; 61 */ 61 62 62 } OblateParameters; 63 63 -
sansmodels/src/sans/models/c_extensions/parallelepiped.c
r5068697 r975ec8e 19 19 double parallelepiped_analytical_1D(ParallelepipedParameters *pars, double q) { 20 20 double dp[6]; 21 21 22 22 // Fill paramater array 23 23 dp[0] = pars->scale; … … 29 29 30 30 // Call library function to evaluate model 31 return Parallelepiped(dp, q); 31 return Parallelepiped(dp, q); 32 32 } 33 34 35 double pkernel(double a, double b,double c, double ala, double alb, double alc){ 36 // mu passed in is really mu*sqrt(1-sig^2) 37 double argA,argB,argC,tmp1,tmp2,tmp3; //local variables 38 39 //handle arg=0 separately, as sin(t)/t -> 1 as t->0 40 argA = a*ala; 41 argB = b*alb; 42 argC = c*alc; 43 if(argA==0.0) { 44 tmp1 = 1.0; 45 } else { 46 tmp1 = sin(argA)*sin(argA)/argA/argA; 47 } 48 if (argB==0.0) { 49 tmp2 = 1.0; 50 } else { 51 tmp2 = sin(argB)*sin(argB)/argB/argB; 52 } 53 54 if (argC==0.0) { 55 tmp3 = 1.0; 56 } else { 57 tmp3 = sin(argC)*sin(argC)/argC/argC; 58 } 59 60 return (tmp1*tmp2*tmp3); 61 62 }//Function pkernel() 63 64 65 66 33 67 /** 34 68 * Function to evaluate 2D scattering function … … 41 75 q = sqrt(qx*qx+qy*qy); 42 76 return parallelepiped_analytical_2D_scaled(pars, q, qx/q, qy/q); 43 } 77 } 44 78 45 79 … … 53 87 double parallelepiped_analytical_2D(ParallelepipedParameters *pars, double q, double phi) { 54 88 return parallelepiped_analytical_2D_scaled(pars, q, cos(phi), sin(phi)); 55 } 56 89 } 90 57 91 /** 58 92 * Function to evaluate 2D scattering function … … 64 98 */ 65 99 double parallelepiped_analytical_2D_scaled(ParallelepipedParameters *pars, double q, double q_x, double q_y) { 66 double parallel_x, parallel_y, parallel_z;100 double cparallel_x, cparallel_y, cparallel_z, bparallel_x, bparallel_y, parallel_x, parallel_y, parallel_z; 67 101 double q_z; 68 double alpha, vol, cos_val ;69 double aa, mu, uu; 102 double alpha, vol, cos_val_c, cos_val_b, cos_val_a, edgeA, edgeB, edgeC; 103 70 104 double answer; 71 72 105 double pi = 4.0*atan(1.0); 73 106 74 // parallelepiped orientation 75 parallel_x = sin(pars->parallel_theta) * cos(pars->parallel_phi); 76 parallel_y = sin(pars->parallel_theta) * sin(pars->parallel_phi); 77 parallel_z = cos(pars->parallel_theta); 78 107 edgeA = pars->short_edgeA; 108 edgeB = pars->longer_edgeB; 109 edgeC = pars->longuest_edgeC; 110 111 112 // parallelepiped c axis orientation 113 cparallel_x = sin(pars->parallel_theta) * cos(pars->parallel_phi); 114 cparallel_y = sin(pars->parallel_theta) * sin(pars->parallel_phi); 115 cparallel_z = cos(pars->parallel_theta); 116 79 117 // q vector 80 118 q_z = 0; 81 119 82 120 // Compute the angle btw vector q and the 83 121 // axis of the parallelepiped 84 cos_val = parallel_x*q_x + parallel_y*q_y + parallel_z*q_z; 85 122 cos_val_c = cparallel_x*q_x + cparallel_y*q_y + cparallel_z*q_z; 123 alpha = acos(cos_val_c); 124 125 // parallelepiped a axis orientation 126 parallel_x = (1-sin(pars->parallel_theta)*sin(pars->parallel_phi))*sin(pars->parallel_psi);//cos(pars->parallel_theta) * sin(pars->parallel_phi)*sin(pars->parallel_psi); 127 parallel_y = (1-sin(pars->parallel_theta)*sin(pars->parallel_phi))*cos(pars->parallel_psi);//cos(pars->parallel_theta) * cos(pars->parallel_phi)*cos(pars->parallel_psi); 128 cos_val_a = (parallel_x*q_x + parallel_y*q_y); 129 130 131 132 // parallelepiped b axis orientation 133 bparallel_x = (1-sin(pars->parallel_theta)*cos(pars->parallel_phi))*cos(pars->parallel_psi);//cos(pars->parallel_theta) * cos(pars->parallel_phi)* cos(pars->parallel_psi); 134 bparallel_y = (1-sin(pars->parallel_theta)*cos(pars->parallel_phi))*sin(pars->parallel_psi);//cos(pars->parallel_theta) * sin(pars->parallel_phi)* sin(pars->parallel_psi); 135 // axis of the parallelepiped 136 cos_val_b = (bparallel_x*q_x + bparallel_y*q_y) ; 137 138 139 86 140 // The following test should always pass 87 if (fabs(cos_val )>1.0) {141 if (fabs(cos_val_c)>1.0) { 88 142 printf("parallel_ana_2D: Unexpected error: cos(alpha)>1\n"); 89 143 return 0; 90 144 } 91 92 // Note: cos(alpha) = 0 and 1 will get an93 // undefined value from PPKernel94 alpha = acos( cos_val );95 145 96 aa = pars->short_edgeA/pars->longer_edgeB;97 mu = 1.0;98 uu = 1.0;99 100 146 // Call the IGOR library function to get the kernel 101 answer = PPKernel( aa, mu, uu);102 147 answer = pkernel( q*edgeA, q*edgeB, q*edgeC, cos_val_a,cos_val_b,cos_val_c); 148 103 149 // Multiply by contrast^2 104 150 answer *= pars->contrast*pars->contrast; 105 151 106 152 //normalize by cylinder volume 107 153 //NOTE that for this (Fournet) definition of the integral, one must MULTIPLY by Vparallel 108 vol = pars->short_edgeA* pars->longer_edgeB * pars->longuest_edgeC;154 vol = 8*edgeA* edgeB * edgeC; 109 155 answer *= vol; 110 156 111 157 //convert to [cm-1] 112 158 answer *= 1.0e8; 113 159 114 160 //Scale 115 161 answer *= pars->scale; 116 162 117 163 // add in the background 118 164 answer += pars->background; 119 165 120 166 return answer; 121 167 } 122 123 168 -
sansmodels/src/sans/models/c_extensions/parallelepiped.h
r5068697 r975ec8e 7 7 /** Structure definition for Parallelepiped parameters 8 8 * [PYTHONCLASS] = ParallelepipedModel 9 * [DISP_PARAMS] = short_edgeA, longer_edgeB, longuest_edgeC,parallel_phi, parallel_theta9 * [DISP_PARAMS] = short_edgeA, longer_edgeB, longuest_edgeC,parallel_phi,parallel_psi, parallel_theta 10 10 [DESCRIPTION] = <text> Calculates the form factor for a rectangular solid with uniform scattering length density. 11 11 12 12 scale:Scale factor 13 13 short_edgeA: Shortest edge of the parallelepiped [A] … … 15 15 longuest_edgeC: Longuest edge of the parallelepiped [A] 16 16 constrast: particle_sld - solvent_sld 17 background:Incoherent Background [1/cm] 17 background:Incoherent Background [1/cm] 18 18 </text> 19 [FIXED]= <text>short_edgeA.width; longer_edgeB.width; longuest_edgeC.width;parallel_phi.width; parallel_theta.width</text>20 [ORIENTATION_PARAMS]= <text>parallel_phi; parallel_theta; parallel_phi.width; parallel_theta.width</text>19 [FIXED]= <text>short_edgeA.width; longer_edgeB.width; longuest_edgeC.width;parallel_phi.width;parallel_psi.width; parallel_theta.width</text> 20 [ORIENTATION_PARAMS]= <text>parallel_phi;parallel_psi; parallel_theta; parallel_phi.width;parallel_psi.width; parallel_theta.width</text> 21 21 22 22 … … 38 38 // [DEFAULT]=contrast=5.3e-6 [1/A²] 39 39 double contrast; 40 /// Incoherent Background [1/cm] 40 /// Incoherent Background [1/cm] 41 41 // [DEFAULT]=background=0.0 [1/cm] 42 42 double background; 43 43 /// Orientation of the parallelepiped axis w/respect incoming beam [rad] 44 // [DEFAULT]=parallel_theta= 1.0 [rad]44 // [DEFAULT]=parallel_theta=0.0 [rad] 45 45 double parallel_theta; 46 /// Orientation of the parallelepiped in the plane of the detector [rad]47 // [DEFAULT]=parallel_phi= 1.0 [rad]46 /// Orientation of the longitudinal axis of the parallelepiped in the plane of the detector [rad] 47 // [DEFAULT]=parallel_phi=0.0 [rad] 48 48 double parallel_phi; 49 /// Orientation of the cross-sectional minor axis of the parallelepiped in the plane of the detector [rad] 50 // [DEFAULT]=parallel_psi=0.0 [rad] 51 double parallel_psi; 49 52 50 53 … … 60 63 double parallelepiped_analytical_2DXY(ParallelepipedParameters *pars, double qx, double qy); 61 64 double parallelepiped_analytical_2D_scaled(ParallelepipedParameters *pars, double q, double q_x, double q_y); 62 63 65 #endif -
sansmodels/src/sans/models/c_extensions/stacked_disks.h
r5068697 r975ec8e 7 7 /** Structure definition for stacked disks parameters 8 8 * [PYTHONCLASS] = StackedDisksModel 9 * [DISP_PARAMS] = length, radius, axis_theta, axis_phi9 * [DISP_PARAMS] = core_thick, layer_thick, radius, axis_theta, axis_phi 10 10 [DESCRIPTION] = <text> 11 11 </text> 12 [FIXED]= <text> length.width; radius.width; axis_theta.width; axis_phi.width</text>12 [FIXED]= <text>core_thick.width;layer_thick.width; radius.width; axis_theta.width; axis_phi.width</text> 13 13 [ORIENTATION_PARAMS]= <text>axis_phi; axis_theta; axis_phi.width; axis_theta.width</text> 14 14 … … 22 22 // [DEFAULT]=radius=3000 [A] 23 23 double radius; 24 /// Length of the stakeddisk [A]25 // [DEFAULT]= length=10.0 [A]26 double length;24 /// Thickness of the core disk [A] 25 // [DEFAULT]=core_thick=10.0 [A] 26 double core_thick; 27 27 /// Thickness of the staked disk [A] 28 // [DEFAULT]= thickness=15.0 [A]29 double thickness;28 // [DEFAULT]=layer_thick=15.0 [A] 29 double layer_thick; 30 30 /// Core scattering length density[1/A²] 31 31 // [DEFAULT]=core_sld=4e-6 [1/A²] … … 37 37 // [DEFAULT]=solvent_sld=5.0e-6 [1/A²] 38 38 double solvent_sld; 39 /// number of layers40 // [DEFAULT]=n layers=141 double n layers;42 /// GSD of disks s pacing43 // [DEFAULT]=s pacing=044 double s pacing;45 /// Incoherent Background [1/cm] 39 /// number of stacking 40 // [DEFAULT]=n_stacking=1 41 double n_stacking; 42 /// GSD of disks sigma_d 43 // [DEFAULT]=sigma_d=0 44 double sigma_d; 45 /// Incoherent Background [1/cm] 46 46 // [DEFAULT]=background=0.001 [1/cm] 47 47 double background; 48 48 /// Orientation of the staked disk axis w/respect incoming beam [rad] 49 // [DEFAULT]=axis_theta= 1.0 [rad]49 // [DEFAULT]=axis_theta=0.0 [rad] 50 50 double axis_theta; 51 51 /// Orientation of the staked disk in the plane of the detector [rad] 52 // [DEFAULT]=axis_phi= 1.0 [rad]52 // [DEFAULT]=axis_phi=0.0 [rad] 53 53 double axis_phi; 54 54 -
sansmodels/src/sans/models/c_extensions/triaxial_ellipsoid.c
r34c3020 r975ec8e 19 19 double triaxial_ellipsoid_analytical_1D(TriaxialEllipsoidParameters *pars, double q) { 20 20 double dp[6]; 21 21 22 22 // Fill paramater array 23 23 dp[0] = pars->scale; … … 27 27 dp[4] = pars->contrast; 28 28 dp[5] = pars->background; 29 29 30 30 // Call library function to evaluate model 31 return TriaxialEllipsoid(dp, q); 31 return TriaxialEllipsoid(dp, q); 32 32 } 33 34 double triaxial_ellipsoid_kernel(TriaxialEllipsoidParameters *pars, double q, double alpha, double nu) { 35 double t,a,b,c; 36 double kernel; 37 double pi = acos(-1.0); 38 39 a = pars->semi_axisA ; 40 b = pars->semi_axisB ; 41 c = pars->semi_axisC ; 42 43 t = q * sqrt(a*a*cos(nu)*cos(nu)+b*b*sin(nu)*sin(nu)*sin(alpha)*sin(alpha)+c*c*cos(alpha)*cos(alpha)); 44 if (t==0){ 45 kernel = 1.0; 46 }else{ 47 kernel = 3*(sin(t)-t*cos(t))/(t*t*t); 48 } 49 return kernel*kernel; 50 } 51 33 52 34 53 /** … … 42 61 q = sqrt(qx*qx+qy*qy); 43 62 return triaxial_ellipsoid_analytical_2D_scaled(pars, q, qx/q, qy/q); 44 } 63 } 45 64 46 65 … … 54 73 double triaxial_ellipsoid_analytical_2D(TriaxialEllipsoidParameters *pars, double q, double phi) { 55 74 return triaxial_ellipsoid_analytical_2D_scaled(pars, q, cos(phi), sin(phi)); 56 } 57 75 } 76 58 77 /** 59 78 * Function to evaluate 2D scattering function … … 65 84 */ 66 85 double triaxial_ellipsoid_analytical_2D_scaled(TriaxialEllipsoidParameters *pars, double q, double q_x, double q_y) { 67 double cyl_x, cyl_y, cyl_z ;86 double cyl_x, cyl_y, cyl_z, ell_x, ell_y; 68 87 double q_z; 69 double dx, dy;88 double cos_nu,nu; 70 89 double alpha, vol, cos_val; 71 90 double answer; … … 75 94 cyl_y = sin(pars->axis_theta) * sin(pars->axis_phi); 76 95 cyl_z = cos(pars->axis_theta); 77 96 78 97 // q vector 79 98 q_z = 0; 80 81 dx = 1.0;82 dy = 1.0;99 100 //dx = 1.0; 101 //dy = 1.0; 83 102 // Compute the angle btw vector q and the 84 103 // axis of the cylinder 85 104 cos_val = cyl_x*q_x + cyl_y*q_y + cyl_z*q_z; 86 105 87 106 // The following test should always pass 88 107 if (fabs(cos_val)>1.0) { … … 90 109 return 0; 91 110 } 92 111 93 112 // Note: cos(alpha) = 0 and 1 will get an 94 113 // undefined value from CylKernel 95 114 alpha = acos( cos_val ); 96 115 116 //ellipse orientation: 117 // the elliptical corss section was transformed and projected 118 // into the detector plane already through sin(alpha)and furthermore psi remains as same 119 // on the detector plane. 120 // So, all we need is to calculate the angle (nu) of the minor axis of the ellipse wrt 121 // the wave vector q. 122 123 //x- y- component on the detector plane. 124 ell_x = cos(pars->axis_psi); 125 ell_y = sin(pars->axis_psi); 126 127 // calculate the axis of the ellipse wrt q-coord. 128 cos_nu = ell_x*q_x + ell_y*q_y; 129 nu = acos(cos_nu); 130 97 131 // Call the IGOR library function to get the kernel 98 answer = TriaxialKernel(q,pars->semi_axisA, pars->semi_axisB, pars->semi_axisC, dx, dy);99 132 answer = triaxial_ellipsoid_kernel(pars, q, alpha, nu); 133 100 134 // Multiply by contrast^2 101 135 answer *= pars->contrast*pars->contrast; 102 136 103 137 //normalize by cylinder volume 104 138 //NOTE that for this (Fournet) definition of the integral, one must MULTIPLY by Vcyl 105 139 vol = 4/3 * pi * pars->semi_axisA * pars->semi_axisB * pars->semi_axisC; 106 140 answer *= vol; 107 141 108 142 //convert to [cm-1] 109 143 answer *= 1.0e8; 110 144 111 145 //Scale 112 146 answer *= pars->scale; 113 147 114 148 // add in the background 115 149 answer += pars->background; 116 150 117 151 return answer; 118 152 } 119 -
sansmodels/src/sans/models/c_extensions/triaxial_ellipsoid.h
r5068697 r975ec8e 3 3 /** Structure definition for cylinder parameters 4 4 * [PYTHONCLASS] = TriaxialEllipsoidModel 5 * [DISP_PARAMS] = axis_theta, axis_phi 5 * [DISP_PARAMS] = axis_theta, axis_phi, axis_psi 6 6 [DESCRIPTION] = <text> Note: 7 7 Constraints must be applied during fitting to ensure that the inequality a<b<c is not 8 8 violated. The calculation will not report an error, but the results will not be correct. 9 9 </text> 10 [FIXED]= <text>axis_p hi.width; axis_theta.width; semi_axisA.width; semi_axisB.width; semi_axisC.width </text>11 [ORIENTATION_PARAMS]= <text>axis_p hi; axis_theta; axis_phi.width; axis_theta.width</text>10 [FIXED]= <text>axis_psi.width; axis_phi.width; axis_theta.width; semi_axisA.width; semi_axisB.width; semi_axisC.width </text> 11 [ORIENTATION_PARAMS]= <text>axis_psi; axis_phi; axis_theta; axis_psi.width; axis_phi.width; axis_theta.width</text> 12 12 13 13 … … 33 33 double background; 34 34 /// Orientation of the triaxial_ellipsoid axis w/respect incoming beam [rad] 35 // [DEFAULT]=axis_theta= 1.0 [rad]35 // [DEFAULT]=axis_theta=0.0 [rad] 36 36 double axis_theta; 37 37 /// Orientation of the triaxial_ellipsoid in the plane of the detector [rad] 38 // [DEFAULT]=axis_phi= 1.0 [rad]38 // [DEFAULT]=axis_phi=0.0 [rad] 39 39 double axis_phi; 40 /// Orientation of the cross section of the triaxial_ellipsoid in the plane of the detector [rad] 41 // [DEFAULT]=axis_psi=0.0 [rad] 42 double axis_psi; 40 43 41 44 } TriaxialEllipsoidParameters;
Note: See TracChangeset
for help on using the changeset viewer.