aboutsummaryrefslogtreecommitdiff
path: root/noao/digiphot/apphot/fitsky/apbsky.x
diff options
context:
space:
mode:
Diffstat (limited to 'noao/digiphot/apphot/fitsky/apbsky.x')
-rw-r--r--noao/digiphot/apphot/fitsky/apbsky.x98
1 files changed, 98 insertions, 0 deletions
diff --git a/noao/digiphot/apphot/fitsky/apbsky.x b/noao/digiphot/apphot/fitsky/apbsky.x
new file mode 100644
index 00000000..28e96288
--- /dev/null
+++ b/noao/digiphot/apphot/fitsky/apbsky.x
@@ -0,0 +1,98 @@
+include <fset.h>
+include "../lib/apphot.h"
+include "../lib/display.h"
+
+# APBSKY -- Procedure to determine the sky statistics for a list of objects
+# in batch mode using a simple coordinate list.
+
+procedure apbsky (ap, im, cl, sd, out, id, ld, gd, mgd, gid, interactive)
+
+pointer ap # pointer to apphot structure
+pointer im # pointer to IRAF image
+int cl # starlist file descriptor
+int sd # sky file descriptor
+int out # output file descriptor
+int id, ld # sequence and list numbers
+int gd # pointer to stdgraph stream
+pointer mgd # pointer to graphics metacode file
+pointer gid # pointer to image display stream
+int interactive # interactive mode
+
+int stdin, ier, ild
+pointer sp, str
+real wx, wy
+int apfitsky(), fscan(), nscan(), strncmp(), apstati()
+
+begin
+ call smark (sp)
+ call salloc (str, SZ_FNAME, TY_CHAR)
+ call fstats (cl, F_FILENAME, Memc[str], SZ_FNAME)
+
+ # Initialize.
+ ild = ld
+
+ # Print the query.
+ if (strncmp ("STDIN", Memc[str], 5) == 0) {
+ stdin = YES
+ call printf ("Type object x and y coordinates (^D or ^Z to end): ")
+ call flush (STDOUT)
+ } else
+ stdin = NO
+
+ # Loop over the coordinate file.
+ while (fscan (cl) != EOF) {
+
+ # Fetch and store the coordinates.
+ call gargr (wx)
+ call gargr (wy)
+ if (nscan () != 2) {
+ if (stdin == YES) {
+ call printf (
+ "Type object x and y coordinates (^D or ^Z to end): ")
+ call flush (STDOUT)
+ }
+ next
+ }
+
+ # Transform the input coordinates.
+ switch (apstati(ap,WCSIN)) {
+ case WCS_WORLD, WCS_PHYSICAL:
+ call ap_itol (ap, wx, wy, wx, wy, 1)
+ case WCS_TV:
+ call ap_vtol (im, wx, wy, wx, wy, 1)
+ default:
+ ;
+ }
+ call apsetr (ap, CWX, wx)
+ call apsetr (ap, CWY, wy)
+
+ # Fit the sky value.
+ ier = apfitsky (ap, im, wx, wy, sd, gd)
+
+ # Print the sky values.
+ if (interactive == YES) {
+ call ap_qspsky (ap, ier)
+ if (gid != NULL)
+ call apmark (ap, gid, NO, apstati (ap, MKSKY), NO)
+ }
+ call ap_splot(ap, id, mgd, YES)
+ if (id == 1)
+ call ap_param (ap, out, "fitsky")
+ call ap_pssky (ap, out, id, ild, ier)
+
+ # Set up for the next object.
+ id = id + 1
+ ild = ild + 1
+ call apsetr (ap, WX, wx)
+ call apsetr (ap, WY, wy)
+
+ # print query
+ if (stdin == YES) {
+ call printf (
+ "Type object x and y coordinates (^D or ^Z to end): ")
+ call flush (STDOUT)
+ }
+ }
+
+ call sfree (sp)
+end