/* FILE: fdel.c * PURPOSE: FDEL function for a 2-d Gaussian on a Tilted background * AUTHOR: Kenneth J. Mighell (mighell@noao.edu) * LANGUAGE: ANSI C * DATE: 2001SEP10 * COPYRIGHT: (C) 2001 Assoc. of Universities for Research in Astronomy Inc. * * COMMENT: * * MXNPARL=7 * * and * * ad[0] is BE (=B_0 constant value of background ) * ad[1] is BX (=B_X X slope value of background ) * ad[2] is BY (=B_Y Y slope value of background ) * ad[3] is SE (=I_0 intensity of 2-d Gaussian ) * ad[4] is SX (=X_0 X coordinate of 2-d Gaussian ) * ad[5] is SY (=Y_0 Y coordiante of 2-d Gaussian ) * ad[6] is SS (=SIGMA_0 standard deviation of 2-d Gaussian ) * * where * * Z = B_0 + + (X*B_X) + (Y*B_Y) + I_0*Gaussian( X, Y; X_0, Y_0, SIGMA_0) * * is a Gaussian centered at (X_0,Y_0) on a tilted background * */ #include "mx.h" #include "inc.h" #define DEBUG (MX_FALSE) void fdel_v6( double xd, /* X coordinate */ double yd, /* Y coordinate */ double *md_p, /* Z model */ double ad[], /* parameter vector */ double delad[], /* partial derivative vector */ long nparl /* number of parameters */ ) { char funcnamec[] = "fdel_v6 (TiltedGaussian)"; double md, dzdi, dzdx, dzdy, dzds; const int res=5; if (7 != MXNPARL) { sprintf( MX.tmpmsg, "*** FATAL ERROR *** : (MXNPARL=%ld) != 5\n", MXNPARL); goto error; } if (nparl > MXNPARL) { sprintf( MX.tmpmsg, "*** FATAL ERROR *** : (nparl=%ld) != 4\n", nparl); goto error; } if (DEBUG) printf("[1]\n"); if (DEBUG) fflush(stdout); Gaussian2d_v12( ad[3], ad[4], ad[5], ad[6], res, xd, yd, &md, &dzdi, &dzdx, &dzdy, &dzds ); if (DEBUG) printf("[2]\n"); if (DEBUG) fflush(stdout); /* model value */ md += ad[0] + (xd*ad[1]) + (yd*ad[2]); /* del(model)/del(B_0) */ delad[0] = 1.0; /* del(model)/del(B_X) */ delad[1] = xd; /* del(model)/del(B_Y) */ delad[2] = yd; /* del(model)/del(I_0) */ delad[3] = dzdi; /* del(model)/del(X_0) */ delad[4] = dzdx; /* del(model)/del(Y_0) */ delad[5] = dzdy; /* del(model)/del(SIMGA_0) */ delad[6] = dzds; if (DEBUG) printf("[3]\n"); if (DEBUG) fflush(stdout); ok: goto bye; error: fprintf (stderr, "# %s: %s", funcnamec, MX.tmpmsg); exit(1); bye: *md_p = md; return; } #undef DEBUG /* end-of-file */