aboutsummaryrefslogtreecommitdiff
path: root/noao/digiphot/apphot/aplib/apwres2.x
diff options
context:
space:
mode:
Diffstat (limited to 'noao/digiphot/apphot/aplib/apwres2.x')
-rw-r--r--noao/digiphot/apphot/aplib/apwres2.x347
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