diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /noao/digiphot/apphot/aplib/apwres2.x | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'noao/digiphot/apphot/aplib/apwres2.x')
-rw-r--r-- | noao/digiphot/apphot/aplib/apwres2.x | 347 |
1 files changed, 347 insertions, 0 deletions
diff --git a/noao/digiphot/apphot/aplib/apwres2.x b/noao/digiphot/apphot/aplib/apwres2.x new file mode 100644 index 00000000..1c5d38a5 --- /dev/null +++ b/noao/digiphot/apphot/aplib/apwres2.x @@ -0,0 +1,347 @@ +include "../lib/apphotdef.h" +include "../lib/photdef.h" + +include "../lib/apphot.h" +include "../lib/fitsky.h" +include "../lib/phot.h" +include "../lib/polyphot.h" + +# define the #N, #U and #K phot/wphot strings + +define MAG1_NSTR "#N%4tITIME%19tXAIRMASS%34tIFILTER%57tOTIME%80t\\\n" +define MAG1_USTR "#U%4ttimeunit%19tnumber%34tname%57ttimeunit%80t\\\n" +define MAG1_FSTR "#F%4t%%-18.7g%19t%%-15.7g%34t%%-23s%57t%%-23s%80t \n" +define MAG1_WSTR "%4t%-15.7g%-15.7g%-23.23s%-23.23s%80t\\\n" + +define MAG2_NSTR "#N%4tRAPERT%13tSUM%27tAREA%38tFLUX%52tMAG%59tMERR%66t\ +PIER%71tPERROR%80t\\\n" +define MAG2_USTR "#U%4tscale%13tcounts%27tpixels%38tcounts%52tmag%59t\ +mag%66t##%71tperrors%80t\\\n" +define MAG2_FSTR "#F%4t%%-12.2f%13t%%-14.7g%27t%%-11.7g%38t%%-14.7g%52t\ +%%-7.3f%59t%%-6.3f%66t%%-5d%71t%%-9s%80t \n" +define MAG2_WSTR "%4t%-9.2f%-14.7g%-11.7g%-14.7g%-7.3f%-6.3f%-5d%-9.9s\ +%79t%2s\n" + + +# AP_MHDR -- Print the phot/wphot/qphot column header strings. + +procedure ap_mhdr (ap, fd) + +pointer ap # apphot descriptor (unused) +int fd # output file descriptor + +begin + if (fd == NULL) + return + + call fprintf (fd, MAG1_NSTR) + call fprintf (fd, MAG1_USTR) + call fprintf (fd, MAG1_FSTR) + call fprintf (fd, "#\n") + + call fprintf (fd, MAG2_NSTR) + call fprintf (fd, MAG2_USTR) + call fprintf (fd, MAG2_FSTR) + call fprintf (fd, "#\n") +end + + +# AP_WMRES -- Write the results of the phot/qphot/wphot tasks to the output +# file. + +procedure ap_wmres (ap, fd, i, pier, endstr) + +pointer ap # pointer to apphot structure +int fd # output text file +int i # index of variable length field +int pier # photometric error +char endstr[ARB] # termination string + +int ier +pointer sp, str, phot +real sky_val +real apstatr() + +begin + # Initialize. + if (fd == NULL) + return + + phot = AP_PPHOT(ap) + call smark (sp) + call salloc (str, SZ_LINE, TY_CHAR) + + # Write out the exposure time, airmass and filter information. + if (i <= 1) { + call fprintf (fd, MAG1_WSTR) + call pargr (apstatr (ap, ITIME)) + call pargr (apstatr (ap, XAIRMASS)) + call apstats (ap, FILTERID, Memc[str], SZ_FNAME) + call pargstr (Memc[str]) + call apstats (ap, OTIME, Memc[str], SZ_FNAME) + call pargstr (Memc[str]) + } + + # Write out the error code. + if (IS_INDEFR(Memr[AP_MAGS(phot)+i-1])) { + if (pier != AP_APERT_OUTOFBOUNDS) + ier = pier + else if (i > AP_NMAXAP(phot)) + ier = AP_APERT_OUTOFBOUNDS + else + ier = AP_OK + } else if (i >= AP_NMINAP(phot)) { + ier = AP_APERT_BADDATA + } else { + ier = AP_OK + } + call ap_pserrors (ier, Memc[str], SZ_LINE) + + # Write out the photometry results. + call fprintf (fd, MAG2_WSTR) + if (i == 0) { + call pargr (0.0) + call pargr (0.0) + call pargr (0.0) + call pargr (INDEFR) + call pargr (INDEFR) + call pargi (ier) + call pargstr (Memc[str]) + call pargstr (endstr) + } else { + call pargr (Memr[AP_APERTS(phot)+i-1]) + call pargd (Memd[AP_SUMS(phot)+i-1]) + call pargd (Memd[AP_AREA(phot)+i-1]) + sky_val = apstatr (ap, SKY_MODE) + if (IS_INDEFR(sky_val)) + call pargr (0.0) + else + call pargr (real (Memd[AP_SUMS(phot)+i-1] - sky_val * + Memd[AP_AREA(phot)+i-1])) + call pargr (Memr[AP_MAGS(phot)+i-1]) + if (Memr[AP_MAGERRS(phot)+i-1] > 99.999) + call pargr (INDEFR) + else + call pargr (Memr[AP_MAGERRS(phot)+i-1]) + call pargi (ier) + call pargstr (Memc[str]) + call pargstr (endstr) + } + + call sfree (sp) +end + + +# AP_PSERRORS -- Encode the photometric errors string. + +procedure ap_pserrors (ier, str, maxch) + +int ier # photometry error code +char str[ARB] # output string +int maxch # maximum length of string + +begin + switch (ier) { + case AP_APERT_NOAPERT: + call strcpy ("OffImage", str, maxch) + case AP_APERT_OUTOFBOUNDS: + call strcpy ("EdgeImage", str, maxch) + case AP_APERT_NOSKYMODE: + call strcpy ("NoSky", str, maxch) + case AP_APERT_NEGMAG: + call strcpy ("NoFlux", str, maxch) + case AP_APERT_BADDATA: + call strcpy ("BadPixels", str, maxch) + default: + call strcpy ("NoError", str, maxch) + } +end + + +# define the #N, #U and #K polyphot strings + +define PY_NSTR1 "#N%4tITIME%19tXAIRMASS%34tIFILTER%57tOTIME%80t\\\n" +define PY_USTR1 "#U%4ttimeunit%19tnumber%34tname%57ttimeunit%80t\\\n" +define PY_FSTR1 "#F%4t%%-18.7g%19t%%-15.7g%34t%%-23s%57t%%-23s%80t \n" +define PY_WSTR1 "%4t%-15.7g%-15.7g%-23.23s%-23.23s%80t\\\n" + +define PY_NSTR2 "#N%4tSUM%19tAREA%34tFLUX%49tMAG%58tMERR%66tPIER%71t\ +PERROR%80t\\\n" +define PY_USTR2 "#U%4tcounts%19tpixels%34tcounts%49tmag%58tmag%66t##%71t\ +perrors%80t\\\n" +define PY_FSTR2 "#F%4t%%-18.7g%19t%%-15.7g%34t%%-15.7g%49t%%-9.3f%58t\ +%%-7.3f%66t%%-5d%71t%%-9s%80t \n" +define PY_WSTR2 "%4t%-15.7g%-15.7g%-15.7g%-9.3f%-7.3f%-5d%-9.9s%80t\\\n" + +define PY_NSTR3 "#N%4tPOLYGONS%24tPID%29tOLDXMEAN%38tOLDYMEAN%47t\ +XMEAN%56tYMEAN%65tMINRAD%74tNVER%80t\\\n" +define PY_USTR3 "#U%4tfilename%24t##%29tpixels%38tpixels%47t\ +pixels%56tpixels%65tpixels%74t##%80t\\\n" +define PY_FSTR3 "#F%4t%%-23s%24t%%-5d%29t%%-9.2f%38t%%-9.2f%47t\ +%%-9.2f%56t%%-9.2f%65t%%-9.2f%74t%%-5d%80t \n" +define PY_WSTR3 "%4t%-20.20s%-5d%-9.2f%-9.2f%-9.2f%-9.2f%-9.2f%-5d%80t\\\n" + +define PY_NSTR4 "#N%4tXVERTEX%13tYVERTEX%80t\\\n" +define PY_USTR4 "#U%4tpixels%13tpixels%80t\\\n" +define PY_FSTR4 "#F%4t%%-12.2f%13t%%-9.2f%80t \n" +define PY_WSTR4 "%4t%-9.2f%-9.2f%79t%2s\n" + + +# AP_PLHDR -- Print the polyphot column header strings. + +procedure ap_plhdr (ap, fd) + +pointer ap # apphot descriptor (unused) +int fd # output file descriptor + +begin + if (fd == NULL) + return + + call fprintf (fd, PY_NSTR1) + call fprintf (fd, PY_USTR1) + call fprintf (fd, PY_FSTR1) + call fprintf (fd, "#\n") + + call fprintf (fd, PY_NSTR2) + call fprintf (fd, PY_USTR2) + call fprintf (fd, PY_FSTR2) + call fprintf (fd, "#\n") + + call fprintf (fd, PY_NSTR3) + call fprintf (fd, PY_USTR3) + call fprintf (fd, PY_FSTR3) + call fprintf (fd, "#\n") + + call fprintf (fd, PY_NSTR4) + call fprintf (fd, PY_USTR4) + call fprintf (fd, PY_FSTR4) + call fprintf (fd, "#\n") +end + + +# AP_WLRES -- Write the results of the polyphot task to the output file. + +procedure ap_wlres (py, fd, xver, yver, nver, pid, pier) + +pointer py # pointer to apphot structure +int fd # output file descriptor +real xver[ARB] # coords of x vertices +real yver[ARB] # coords of y vertices +int nver # number of vertices +int pid # polygon number +int pier # photometric error + +int i +pointer sp, str, pyname +real sky_val +int apstati() +double apstatd() +real apstatr() + +begin + if (fd == NULL) + return + + # Allocate space. + call smark (sp) + call salloc (pyname, SZ_FNAME, TY_CHAR) + call salloc (str, SZ_LINE, TY_CHAR) + + # Write out the exposure time, airmass and filter id. + call fprintf (fd, PY_WSTR1) + call pargr (apstatr (py, ITIME)) + call pargr (apstatr (py, XAIRMASS)) + call apstats (py, FILTERID, Memc[str], SZ_FNAME) + call pargstr (Memc[str]) + call apstats (py, OTIME, Memc[str], SZ_FNAME) + call pargstr (Memc[str]) + + # Write the photometry results. + call ap_spyerrors (pier, Memc[str], SZ_LINE) + sky_val = apstatr (py, SKY_MODE) + call fprintf (fd, PY_WSTR2) + call pargd (apstatd (py, PYFLUX)) + call pargd (apstatd (py, PYNPIX)) + if (IS_INDEFR(sky_val)) + call pargr (0.0) + else + call pargr (real (apstatd (py, PYFLUX) - sky_val * + apstatd (py, PYNPIX))) + call pargr (apstatr (py, PYMAG)) + if (apstatr (py, PYMAGERR) > 99.999) + call pargr (INDEFR) + else + call pargr (apstatr (py, PYMAGERR)) + call pargi (pier) + call pargstr (Memc[str]) + + # Write the polygon characteristics + #call apstats (py, PYNAME, Memc[pyname], SZ_FNAME) + call apstats (py, PYROOT, Memc[pyname], SZ_FNAME) + call fprintf (fd, PY_WSTR3) + if (Memc[pyname] == EOS) + call pargstr ("nullfile") + else + call pargstr (Memc[pyname]) + call pargi (pid) + call pargr (apstatr (py, OPYXMEAN)) + call pargr (apstatr (py, OPYYMEAN)) + call pargr (apstatr (py, OPYCX)) + call pargr (apstatr (py, OPYCY)) + call pargr (apstatr (py, PYMINRAD)) + call pargi (apstati (py, PYNVER)) + + # Write out the vertices of the polygon. + if (nver == 0) { + call fprintf (fd, PY_WSTR4) + call pargr (INDEFR) + call pargr (INDEFR) + call pargstr (" ") + } else { + do i = 1, nver { + call fprintf (fd, PY_WSTR4) + if (nver == 1) { + call pargr (xver[i]) + call pargr (yver[i]) + call pargstr (" ") + } else if (i == nver) { + call pargr (xver[i]) + call pargr (yver[i]) + call pargstr ("* ") + } else { + call pargr (xver[i]) + call pargr (yver[i]) + call pargstr ( "*\\") + } + } + } + + call sfree (sp) +end + + +# AP_SPYERRORS -- Encode the polygon fitting error in a string. + +procedure ap_spyerrors (ier, str, maxch) + +int ier # error code +char str[ARB] # output string +int maxch # maximum number of characters + +begin + switch (ier) { + case PY_NOPOLYGON: + call strcpy ("NoPolygon", str, maxch) + case PY_OUTOFBOUNDS: + call strcpy ("EdgeImage", str, maxch) + case PY_NOPIX: + call strcpy ("NoPixels", str, maxch) + case PY_NOSKYMODE: + call strcpy ("NoSky", str, maxch) + case PY_BADDATA: + call strcpy ("BadPixels", str, maxch) + default: + call strcpy ("NoError", str, maxch) + } +end |