Changeset 318b5bbb in sasview for sansmodels/src/c_models/sc.cpp
- Timestamp:
- Dec 18, 2012 10:55:24 AM (12 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:
- 6550b64
- Parents:
- 0203ade
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sansmodels/src/c_models/sc.cpp
re08bd5b r318b5bbb 55 55 double a3_x, a3_y, a3_z, a2_x, a2_y, a1_x, a1_y; 56 56 double q_z; 57 double alpha,cos_val_a3, cos_val_a2, cos_val_a1;57 double cos_val_a3, cos_val_a2, cos_val_a1; 58 58 double a1_dot_q, a2_dot_q,a3_dot_q; 59 59 double answer; … … 80 80 /// Angles here are respect to detector coordinate instead of against q coordinate(PRB 36, 3, 1754) 81 81 // a3 axis orientation 82 a3_x = sin(theta) * cos(phi);//negative sign here??? 83 a3_y = sin(theta) * sin(phi); 84 a3_z = cos(theta); 85 82 a3_x = cos(theta) * cos(phi); 83 a3_y = sin(theta); 84 //a3_z = -cos(theta) * sin(phi); 86 85 // q vector 87 86 q_z = 0.0; 88 87 89 88 // Compute the angle btw vector q and the a3 axis 90 cos_val_a3 = a3_x*q_x + a3_y*q_y + a3_z*q_z; 91 alpha = acos(cos_val_a3); 92 //alpha = acos(cos_val_a3); 93 a3_dot_q = aa*q*cos_val_a3; 89 cos_val_a3 = a3_x*q_x + a3_y*q_y;// + a3_z*q_z; 90 94 91 // a1 axis orientation 95 a1_x = sin(psi);96 a1_y = cos(psi);92 a1_x = -cos(phi)*sin(psi) * sin(theta)+sin(phi)*cos(psi); 93 a1_y = sin(psi)*cos(theta); 97 94 98 95 cos_val_a1 = a1_x*q_x + a1_y*q_y; 99 a1_dot_q = aa*q*cos_val_a1*sin(alpha);100 96 101 97 // a2 axis orientation 102 a2_x = sqrt(1.0-sin(theta)*cos(phi))*cos(psi);103 a2_y = sqrt(1.0-sin(theta)*cos(phi))*sin(psi);98 a2_x = -sin(theta)*cos(psi)*cos(phi)-sin(psi)*sin(phi); 99 a2_y = cos(theta)*cos(psi); 104 100 // a2 axis 105 cos_val_a2 = sin(acos(cos_val_a1));//a2_x*q_x + a2_y*q_y; 106 a2_dot_q = aa*q*cos_val_a2*sin(alpha); 101 cos_val_a2 = a2_x*q_x + a2_y*q_y; 107 102 108 103 // The following test should always pass 109 104 if (fabs(cos_val_a3)>1.0) { 110 printf("parallel_ana_2D: Unexpected error: cos(alpha)>1\n"); 111 return 0; 112 } 105 //printf("parallel_ana_2D: Unexpected error: cos(alpha)>1\n"); 106 cos_val_a3 = 1.0; 107 } 108 if (fabs(cos_val_a1)>1.0) { 109 //printf("parallel_ana_2D: Unexpected error: cos(alpha)>1\n"); 110 cos_val_a1 = 1.0; 111 } 112 if (fabs(cos_val_a2)>1.0) { 113 //printf("parallel_ana_2D: Unexpected error: cos(alpha)>1\n"); 114 cos_val_a3 = 1.0; 115 } 116 a3_dot_q = aa*q*cos_val_a3; 117 a1_dot_q = aa*q*cos_val_a1;//*sin(alpha); 118 a2_dot_q = aa*q*cos_val_a2; 119 113 120 // Call Zq=Z1*Z2*Z3 114 121 Zq = (1.0-exp(-qDa_2))/(1.0-2.0*exp(-0.5*qDa_2)*cos(a1_dot_q)+exp(-qDa_2)); 115 Zq = Zq *(1.0-exp(-qDa_2))/(1.0-2.0*exp(-0.5*qDa_2)*cos(a2_dot_q)+exp(-qDa_2));116 Zq = Zq *(1.0-exp(-qDa_2))/(1.0-2.0*exp(-0.5*qDa_2)*cos(a3_dot_q)+exp(-qDa_2));122 Zq *= (1.0-exp(-qDa_2))/(1.0-2.0*exp(-0.5*qDa_2)*cos(a2_dot_q)+exp(-qDa_2)); 123 Zq *= (1.0-exp(-qDa_2))/(1.0-2.0*exp(-0.5*qDa_2)*cos(a3_dot_q)+exp(-qDa_2)); 117 124 118 125 // Use SphereForm directly from libigor … … 278 285 } 279 286 if (weights_theta.size()>1) { 280 _ptvalue *= fabs( sin(weights_theta[j].value*pi/180.0));287 _ptvalue *= fabs(cos(weights_theta[j].value*pi/180.0)); 281 288 } 282 289 sum += _ptvalue;
Note: See TracChangeset
for help on using the changeset viewer.