/* MX LIBRARY FUNCTION: mxqdphot0_qdpsap_vf11 * * PURPOSE: peaker "square" aperture photometry * * AUTHOR: Kenneth J. Mighell (mighell@noao.edu) * * LANGUAGE: ANSI C * * DOCUMENTATION: http://www.noao.edu/staff/mighell/mx * * DATE: 20000316 * * MOD: 2 * * Copyleft (L) 2000 Kenneth J. Mighell */ #include #include "mxqdphot.h" void mxqdphot0_qdpsap_vf11 ( double **buff1, double **buff2, int nx, int ny, int dx, int dy, double peakmin, double peakmax, double *outv, int szoutv, int *nstr_ ){ char mxfunc[] = "mxqdphot0_qdpsap_vf11"; int status; int nstr; int x; int y; int xx; int yy; double pixel; double neighbor; int bingo; int count; int ok; double sgnl1; int sgnl1_n; double esgnl1; double bkg1; int bkg1_n; double ebkg1; double area1; double flux1; double mg1; double emg1; double cmg1; double sgnl2; int sgnl2_n; double esgnl2; double bkg2; int bkg2_n; double ebkg2; double area2; double flux2; double mg2; double emg2; double cmg2; double xd; double yd; int fltrnm; int index; int y0; int x0; int yy0; int xx0; int true = MX_TRUE; int false = MX_FALSE; int mxnstr; nstr = 0; mxnstr = szoutv/(2*11); for (y=6; y<=(ny-5); ++y) { y0 = y - 1; for (x=6; x<=(nx-5); ++x) { x0 = x - 1; pixel = buff1[y0][x0]; if ( (pixel>=peakmin) && (pixelpixel) { bingo = false; } else { if (neighbor==pixel) { if ((xx!=x)||(yy!=y)) { if (((xx<=x)&&(yy<=y))||((xx>x)&&(yy 0) { mg1 = -2.5*log10(flux1); emg1 = 1.0857*(esgnl1/sgnl1); } /* check magnitude */ flux1 = area1*(bkg1+ebkg1); cmg1 = 99.999; if (flux1 > 0) cmg1 = -2.5*log10(flux1); /* 2nd aperture ============================================================ */ /* signal */ mxqdphot0_qds2_vf5 (buff2, x, y, &sgnl2, &sgnl2_n); /* qds2 (buff2, nx, ny, x, y, sgnl2, sgnl2_n); */ if (sgnl2 < 0 ) { sgnl2 = 0; esgnl2 = 0; } else { esgnl2 = sqrt(sgnl2); /* assumes *only* photon noise */ } /* background */ mxqdphot0_qdb5_vf5 (buff2, x, y, &bkg2, &bkg2_n); /* qdb5 (buff2, nx, ny, x, y, bkg2, bkg2_n); */ if (bkg2 < 0 ) { bkg2 = 0; ebkg2 = 0; } else { ebkg2 = sqrt(bkg2); /* assumes *only* photon noise */ } /* magnitude */ area2 = sgnl2_n; flux2 = sgnl2 - (bkg2*area2); mg2 = 99.999; emg2 = 99.999; if (flux2 > 0) { mg2 = -2.5*log10(flux2); emg2 = 1.0857*(esgnl2/sgnl2); } /* check magnitude */ flux2 = area2*(bkg2+ebkg2); cmg2 = 99.999; if (flux2 > 0) cmg2 = -2.5*log10(flux2); /* results ================================================================= */ /* accept star only if OK in both observations *and* nstr<=mxnstr */ ok = (mg1