From 69f9a5646f12f6055328e28c03ced984e9d6cbd5 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sun, 29 Mar 2015 08:11:21 -0700 Subject: Add GPARAM_DETX, GPARAM_DETY and GPARAM_CLEN --- src/predict-refine.c | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/predict-refine.c b/src/predict-refine.c index ff5fa862..28c9fdc7 100644 --- a/src/predict-refine.c +++ b/src/predict-refine.c @@ -235,7 +235,7 @@ static double x_gradient(int param, struct reflpeak *rp, struct detector *det, tt = asin(lambda * resolution(cell, h, k, l)); clen = rp->panel->clen; azi = atan2(yh, xh); - azf = 2.0*cos(azi); /* FIXME: Why factor of 2? */ + azf = cos(azi); switch ( param ) { @@ -258,13 +258,22 @@ static double x_gradient(int param, struct reflpeak *rp, struct detector *det, return 0.0; case GPARAM_ASZ : - return -h * lambda * clen * azf * sin(tt) / (cos(tt)*cos(tt)); + return -h * lambda * clen * 2*azf * sin(tt) / (cos(tt)*cos(tt)); case GPARAM_BSZ : - return -k * lambda * clen * azf * sin(tt) / (cos(tt)*cos(tt)); + return -k * lambda * clen * 2*azf * sin(tt) / (cos(tt)*cos(tt)); case GPARAM_CSZ : - return -l * lambda * clen * azf * sin(tt) / (cos(tt)*cos(tt)); + return -l * lambda * clen * 2*azf * sin(tt) / (cos(tt)*cos(tt)); + + case GPARAM_DETX : + return -1; + + case GPARAM_DETY : + return 0; + + case GPARAM_CLEN : + return azf * cos(tt); } @@ -290,7 +299,7 @@ static double y_gradient(int param, struct reflpeak *rp, struct detector *det, tt = asin(lambda * resolution(cell, h, k, l)); clen = rp->panel->clen; azi = atan2(yh, xh); - azf = 2.0*sin(azi); /* FIXME: Why factor of 2? */ + azf = sin(azi); switch ( param ) { @@ -313,14 +322,22 @@ static double y_gradient(int param, struct reflpeak *rp, struct detector *det, return l * lambda * clen / cos(tt); case GPARAM_ASZ : - return -h * lambda * clen * azf * sin(tt) / (cos(tt)*cos(tt)); + return -h * lambda * clen * 2*azf * sin(tt) / (cos(tt)*cos(tt)); case GPARAM_BSZ : - return -k * lambda * clen * azf * sin(tt) / (cos(tt)*cos(tt)); + return -k * lambda * clen * 2*azf * sin(tt) / (cos(tt)*cos(tt)); case GPARAM_CSZ : - return -l * lambda * clen * azf * sin(tt) / (cos(tt)*cos(tt)); + return -l * lambda * clen * 2*azf * sin(tt) / (cos(tt)*cos(tt)); + + case GPARAM_DETX : + return 0; + + case GPARAM_DETY : + return -1; + case GPARAM_CLEN : + return azf * cos(tt); } ERROR("Positional gradient requested for parameter %i?\n", param); -- cgit v1.2.3