aboutsummaryrefslogtreecommitdiff
path: root/libcrystfel/src/predict-refine.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcrystfel/src/predict-refine.c')
-rw-r--r--libcrystfel/src/predict-refine.c57
1 files changed, 12 insertions, 45 deletions
diff --git a/libcrystfel/src/predict-refine.c b/libcrystfel/src/predict-refine.c
index d8dbbca0..b87173b7 100644
--- a/libcrystfel/src/predict-refine.c
+++ b/libcrystfel/src/predict-refine.c
@@ -148,76 +148,49 @@ int fs_ss_gradient_physics(int param, Reflection *refl, UnitCell *cell,
float *fsg, float *ssg)
{
signed int h, k, l;
- double xl, yl, zl, kpred;
- double asx, asy, asz, bsx, bsy, bsz, csx, csy, csz;
gsl_vector *dRdp;
gsl_vector *v;
get_indices(refl, &h, &k, &l);
- kpred = get_kpred(refl);
- cell_get_reciprocal(cell, &asx, &asy, &asz,
- &bsx, &bsy, &bsz,
- &csx, &csy, &csz);
- xl = h*asx + k*bsx + l*csx;
- yl = h*asy + k*bsy + l*csy;
- zl = h*asz + k*bsz + l*csz;
dRdp = gsl_vector_calloc(3);
switch ( param ) {
case GPARAM_ASX :
- gsl_vector_set(dRdp, 0, 0.0);
- gsl_vector_set(dRdp, 1, 0.0);
- gsl_vector_set(dRdp, 2, 0.0);
+ gsl_vector_set(dRdp, 0, h);
break;
case GPARAM_BSX :
- gsl_vector_set(dRdp, 0, 0.0);
- gsl_vector_set(dRdp, 1, 0.0);
- gsl_vector_set(dRdp, 2, 0.0);
+ gsl_vector_set(dRdp, 0, k);
break;
case GPARAM_CSX :
- gsl_vector_set(dRdp, 0, 0.0);
- gsl_vector_set(dRdp, 1, 0.0);
- gsl_vector_set(dRdp, 2, 0.0);
+ gsl_vector_set(dRdp, 0, l);
break;
case GPARAM_ASY :
- gsl_vector_set(dRdp, 0, 0.0);
- gsl_vector_set(dRdp, 1, 0.0);
- gsl_vector_set(dRdp, 2, 0.0);
+ gsl_vector_set(dRdp, 1, h);
break;
case GPARAM_BSY :
- gsl_vector_set(dRdp, 0, 0.0);
- gsl_vector_set(dRdp, 1, 0.0);
- gsl_vector_set(dRdp, 2, 0.0);
+ gsl_vector_set(dRdp, 1, k);
break;
case GPARAM_CSY :
- gsl_vector_set(dRdp, 0, 0.0);
- gsl_vector_set(dRdp, 1, 0.0);
- gsl_vector_set(dRdp, 2, 0.0);
+ gsl_vector_set(dRdp, 1, l);
break;
case GPARAM_ASZ :
- gsl_vector_set(dRdp, 0, 0.0);
- gsl_vector_set(dRdp, 1, 0.0);
- gsl_vector_set(dRdp, 2, 0.0);
+ gsl_vector_set(dRdp, 2, h);
break;
case GPARAM_BSZ :
- gsl_vector_set(dRdp, 0, 0.0);
- gsl_vector_set(dRdp, 1, 0.0);
- gsl_vector_set(dRdp, 2, 0.0);
+ gsl_vector_set(dRdp, 2, k);
break;
case GPARAM_CSZ :
- gsl_vector_set(dRdp, 0, 0.0);
- gsl_vector_set(dRdp, 1, 0.0);
- gsl_vector_set(dRdp, 2, 0.0);
+ gsl_vector_set(dRdp, 2, l);
break;
default :
@@ -321,7 +294,6 @@ int fs_ss_gradient(int param, Reflection *refl, UnitCell *cell,
signed int h, k, l;
double xl, yl, zl, kpred;
double asx, asy, asz, bsx, bsy, bsz, csx, csy, csz;
- double tta, ctt, phi;
gsl_vector *t;
gsl_vector *v;
gsl_matrix *M;
@@ -337,11 +309,6 @@ int fs_ss_gradient(int param, Reflection *refl, UnitCell *cell,
yl = h*asy + k*bsy + l*csy;
zl = h*asz + k*bsz + l*csz;
- /* Calculate 2theta (scattering angle) and azimuth (phi) */
- tta = atan2(sqrt(xl*xl+yl*yl), kpred+zl);
- ctt = cos(tta);
- phi = atan2(yl, xl);
-
/* Set up matrix equation */
M = gsl_matrix_alloc(3, 3);
v = gsl_vector_alloc(3);
@@ -351,9 +318,9 @@ int fs_ss_gradient(int param, Reflection *refl, UnitCell *cell,
return 1;
}
- gsl_vector_set(t, 0, sin(tta)*cos(phi));
- gsl_vector_set(t, 1, sin(tta)*sin(phi));
- gsl_vector_set(t, 2, ctt);
+ gsl_vector_set(t, 0, xl);
+ gsl_vector_set(t, 1, yl);
+ gsl_vector_set(t, 2, kpred+zl);
gsl_matrix_set(M, 0, 0, p->cnx);
gsl_matrix_set(M, 0, 1, p->fsx);