aboutsummaryrefslogtreecommitdiff
path: root/noao/digiphot/apphot/fitsky/aprefitsky.x
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /noao/digiphot/apphot/fitsky/aprefitsky.x
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'noao/digiphot/apphot/fitsky/aprefitsky.x')
-rw-r--r--noao/digiphot/apphot/fitsky/aprefitsky.x371
1 files changed, 371 insertions, 0 deletions
diff --git a/noao/digiphot/apphot/fitsky/aprefitsky.x b/noao/digiphot/apphot/fitsky/aprefitsky.x
new file mode 100644
index 00000000..bc4ed6c2
--- /dev/null
+++ b/noao/digiphot/apphot/fitsky/aprefitsky.x
@@ -0,0 +1,371 @@
+include "../lib/apphotdef.h"
+include "../lib/apphot.h"
+include "../lib/noisedef.h"
+include "../lib/fitskydef.h"
+include "../lib/fitsky.h"
+
+# APREFITSKY -- Procedure to fit the sky using the pixels currently stored in
+# the sky fitting buffers.
+
+int procedure aprefitsky (ap, im, gd)
+
+pointer ap # pointer to the apphot structure
+pointer im # the input image descriptor
+pointer gd # pointer to graphics stream
+
+int ier, nclip, nsky, ilo, ihi
+pointer sky, nse, gt
+int ap_mode(), ap_centroid(), ap_histplot(), ap_median()
+int ap_radplot(), ap_gauss(), ap_lgsky(), ap_crosscor()
+int ap_mean(), ap_clip()
+pointer ap_gtinit()
+
+begin
+ # Initialize.
+ sky = AP_PSKY(ap)
+ nse = AP_NOISE(ap)
+ AP_SKY_MODE(sky) = INDEFR
+ AP_SKY_SIG(sky) = INDEFR
+ AP_SKY_SKEW(sky) = INDEFR
+ AP_NSKY(sky) = 0
+ AP_NSKY_REJECT(sky) = 0
+ if (IS_INDEFR(AP_SXCUR(sky)) || IS_INDEFR(AP_SYCUR(sky))) {
+ AP_OSXCUR(sky) = AP_SXCUR(sky)
+ AP_OSYCUR(sky) = AP_SYCUR(sky)
+ } else {
+ switch (AP_WCSOUT(ap)) {
+ case WCS_WORLD, WCS_PHYSICAL:
+ call ap_ltoo (ap, AP_SXCUR(sky), AP_SYCUR(sky), AP_OSXCUR(sky),
+ AP_OSYCUR(sky), 1)
+ case WCS_TV:
+ call ap_ltov (im, AP_SXCUR(sky), AP_SYCUR(sky), AP_OSXCUR(sky),
+ AP_OSYCUR(sky), 1)
+ default:
+ AP_OSXCUR(sky) = AP_SXCUR(sky)
+ AP_OSYCUR(sky) = AP_SYCUR(sky)
+ }
+ }
+
+ if (IS_INDEFR(AP_SXCUR(sky)) || IS_INDEFR(AP_SYCUR(sky)))
+ return (AP_NOSKYAREA)
+
+ switch (AP_SKYFUNCTION(sky)) {
+
+ case AP_MEAN:
+
+ # Initialize the weights.
+ call amovkr (1.0, Memr[AP_SWGT(sky)], AP_NSKYPIX(sky))
+
+ # Clip the data.
+ if (AP_SLOCLIP(sky) > 0.0 || AP_SHICLIP(sky) > 0.0) {
+ nclip = ap_clip (Memr[AP_SKYPIX(sky)], Memi[AP_INDEX(sky)],
+ AP_NSKYPIX(sky), AP_SLOCLIP(sky), AP_SHICLIP(sky), ilo,
+ ihi)
+ if (nclip >= AP_NSKYPIX(sky))
+ return (AP_NSKY_TOO_SMALL)
+ nsky = AP_NSKYPIX(sky) - nclip
+ } else {
+ nclip = 0
+ call ap_index (Memi[AP_INDEX(sky)], AP_NSKYPIX(sky))
+ ilo = 1
+ nsky = AP_NSKYPIX(sky)
+ }
+
+ ier = ap_mean (Memr[AP_SKYPIX(sky)], Memi[AP_COORDS(sky)],
+ Memr[AP_SWGT(sky)], Memi[AP_INDEX(sky)+ilo-1], nsky,
+ AP_SNX(sky), AP_SNY(sky), AP_SLOREJECT(sky),
+ AP_SHIREJECT(sky), AP_RGROW(sky) * AP_SCALE(ap),
+ AP_SNREJECT(sky), AP_SKY_MODE(sky), AP_SKY_SIG(sky),
+ AP_SKY_SKEW(sky), AP_NSKY(sky), AP_NSKY_REJECT(sky))
+ AP_NSKY_REJECT(sky) = AP_NBADSKYPIX(sky) + nclip +
+ AP_NSKY_REJECT(sky)
+
+ return (ier)
+
+ case AP_MEDIAN:
+
+ # Initialize the weights.
+ call amovkr (1.0, Memr[AP_SWGT(sky)], AP_NSKYPIX(sky))
+
+ # Clip the data.
+ if (AP_SLOCLIP(sky) > 0.0 || AP_SHICLIP(sky) > 0.0) {
+ nclip = ap_clip (Memr[AP_SKYPIX(sky)], Memi[AP_INDEX(sky)],
+ AP_NSKYPIX(sky), AP_SLOCLIP(sky), AP_SHICLIP(sky), ilo,
+ ihi)
+ if (nclip >= AP_NSKYPIX(sky))
+ return (AP_NSKY_TOO_SMALL)
+ nsky = AP_NSKYPIX(sky) - nclip
+ } else {
+ nclip = 0
+ call apqsort (Memr[AP_SKYPIX(sky)], Memi[AP_INDEX(sky)],
+ Memi[AP_INDEX(sky)], AP_NSKYPIX(sky))
+ ilo = 1
+ nsky = AP_NSKYPIX(sky)
+ }
+
+ ier = ap_median (Memr[AP_SKYPIX(sky)], Memi[AP_COORDS(sky)],
+ Memr[AP_SWGT(sky)], Memi[AP_INDEX(sky)+ilo-1], nsky,
+ AP_SNX(sky), AP_SNY(sky), AP_SLOREJECT(sky),
+ AP_SHIREJECT(sky), AP_RGROW(sky) * AP_SCALE(ap),
+ AP_SNREJECT(sky), AP_SKY_MODE(sky), AP_SKY_SIG(sky),
+ AP_SKY_SKEW(sky), AP_NSKY(sky), AP_NSKY_REJECT(sky))
+ AP_NSKY_REJECT(sky) = AP_NBADSKYPIX(sky) + nclip +
+ AP_NSKY_REJECT(sky)
+ return (ier)
+
+ case AP_MODE:
+
+ # Initialize the weights.
+ call amovkr (1.0, Memr[AP_SWGT(sky)], AP_NSKYPIX(sky))
+
+ # Clip the data.
+ if (AP_SLOCLIP(sky) > 0.0 || AP_SHICLIP(sky) > 0.0) {
+ nclip = ap_clip (Memr[AP_SKYPIX(sky)], Memi[AP_INDEX(sky)],
+ AP_NSKYPIX(sky), AP_SLOCLIP(sky), AP_SHICLIP(sky), ilo,
+ ihi)
+ if (nclip >= AP_NSKYPIX(sky))
+ return (AP_NSKY_TOO_SMALL)
+ nsky = AP_NSKYPIX(sky) - nclip
+ } else {
+ nclip = 0
+ call apqsort (Memr[AP_SKYPIX(sky)], Memi[AP_INDEX(sky)],
+ Memi[AP_INDEX(sky)], AP_NSKYPIX(sky))
+ ilo = 1
+ nsky = AP_NSKYPIX(sky)
+ }
+
+ ier = ap_mode (Memr[AP_SKYPIX(sky)], Memi[AP_COORDS(sky)],
+ Memr[AP_SWGT(sky)], Memi[AP_INDEX(sky)+ilo-1], nsky,
+ AP_SNX(sky), AP_SNY(sky), AP_SLOREJECT(sky),
+ AP_SHIREJECT(sky), AP_RGROW(sky) * AP_SCALE(ap),
+ AP_SNREJECT(sky), AP_SKY_MODE(sky), AP_SKY_SIG(sky),
+ AP_SKY_SKEW(sky), AP_NSKY(sky), AP_NSKY_REJECT(sky))
+ AP_NSKY_REJECT(sky) = AP_NBADSKYPIX(sky) + nclip +
+ AP_NSKY_REJECT(sky)
+
+ return (ier)
+
+ case AP_CENTROID:
+
+ # Initialize the weights.
+ call amovkr (1.0, Memr[AP_SWGT(sky)], AP_NSKYPIX(sky))
+
+ # Clip the data.
+ if (AP_SLOCLIP(sky) > 0.0 || AP_SHICLIP(sky) > 0.0) {
+ nclip = ap_clip (Memr[AP_SKYPIX(sky)], Memi[AP_INDEX(sky)],
+ AP_NSKYPIX(sky), AP_SLOCLIP(sky), AP_SHICLIP(sky), ilo,
+ ihi)
+ if (nclip >= AP_NSKYPIX(sky))
+ return (AP_NSKY_TOO_SMALL)
+ nsky = AP_NSKYPIX(sky) - nclip
+ } else {
+ nclip = 0
+ call ap_index (Memi[AP_INDEX(sky)], AP_NSKYPIX(sky))
+ ilo = 1
+ nsky = AP_NSKYPIX(sky)
+ }
+
+ ier = ap_centroid (Memr[AP_SKYPIX(sky)], Memi[AP_COORDS(sky)],
+ Memr[AP_SWGT(sky)+ilo-1], Memi[AP_INDEX(sky)+ilo-1], nsky,
+ AP_SNX(sky), AP_SNY(sky), AP_K1(sky), INDEFR,
+ AP_BINSIZE(sky), AP_SMOOTH(sky), AP_SLOREJECT(sky),
+ AP_SHIREJECT(sky), AP_RGROW(sky) * AP_SCALE(ap),
+ AP_SMAXITER(sky), AP_SKY_MODE(sky), AP_SKY_SIG(sky),
+ AP_SKY_SKEW(sky), AP_NSKY(sky), AP_NSKY_REJECT(sky))
+ AP_NSKY_REJECT(sky) = AP_NBADSKYPIX(sky) + nclip +
+ AP_NSKY_REJECT(sky)
+
+ return (ier)
+
+ case AP_CONSTANT:
+
+ AP_SKY_MODE(sky) = AP_SKYBACKGROUND(sky)
+ AP_SKY_SIG(sky) = AP_SKYSIGMA(nse)
+ AP_SKY_SKEW(sky) = INDEFR
+ AP_NSKY(sky) = 0
+ AP_NSKY_REJECT(sky) = 0
+ return (AP_OK)
+
+ case AP_SKYFILE:
+
+ return (AP_OK)
+
+ case AP_RADPLOT:
+
+ # Check the status of the graphics stream.
+ if (gd == NULL)
+ return (AP_NOGRAPHICS)
+
+ # Clip the data.
+ if (AP_SLOCLIP(sky) > 0.0 || AP_SHICLIP(sky) > 0.0) {
+ nclip = ap_clip (Memr[AP_SKYPIX(sky)], Memi[AP_INDEX(sky)],
+ AP_NSKYPIX(sky), AP_SLOCLIP(sky), AP_SHICLIP(sky), ilo,
+ ihi)
+ if (nclip >= AP_NSKYPIX(sky))
+ return (AP_NSKY_TOO_SMALL)
+ nsky = AP_NSKYPIX(sky) - nclip
+ } else {
+ nclip = 0
+ call ap_index (Memi[AP_INDEX(sky)], AP_NSKYPIX(sky))
+ ilo = 1
+ nsky = AP_NSKYPIX(sky)
+ }
+
+ call gactivate (gd, 0)
+ gt = ap_gtinit (AP_IMROOT(ap), AP_SXCUR(sky), AP_SYCUR(sky))
+ ier = ap_radplot (gd, gt, Memr[AP_SKYPIX(sky)],
+ Memi[AP_COORDS(sky)], Memi[AP_INDEX(sky)+ilo-1], nsky,
+ AP_SXC(sky), AP_SYC(sky), AP_SNX(sky), AP_SNY(sky),
+ AP_SCALE(ap), AP_SKY_MODE(sky), AP_SKY_SIG(sky),
+ AP_SKY_SKEW(sky), AP_NSKY(sky), AP_NSKY_REJECT(sky))
+ AP_NSKY_REJECT(sky) = AP_NBADSKYPIX(sky) + nclip +
+ AP_NSKY_REJECT(sky)
+ call ap_gtfree (gt)
+ call gdeactivate (gd, 0)
+
+ return (ier)
+
+ case AP_HISTPLOT:
+
+ # Check the status of the graphics stream.
+ if (gd == NULL)
+ return (AP_NOGRAPHICS)
+
+ # Initialize the weights.
+ call amovkr (1.0, Memr[AP_SWGT(sky)], AP_NSKYPIX(sky))
+
+ # Clip the data.
+ if (AP_SLOCLIP(sky) > 0.0 || AP_SHICLIP(sky) > 0.0) {
+ nclip = ap_clip (Memr[AP_SKYPIX(sky)], Memi[AP_INDEX(sky)],
+ AP_NSKYPIX(sky), AP_SLOCLIP(sky), AP_SHICLIP(sky), ilo,
+ ihi)
+ if (nclip >= AP_NSKYPIX(sky))
+ return (AP_NSKY_TOO_SMALL)
+ nsky = AP_NSKYPIX(sky) - nclip
+ } else {
+ nclip = 0
+ call ap_index (Memi[AP_INDEX(sky)], AP_NSKYPIX(sky))
+ ilo = 1
+ nsky = AP_NSKYPIX(sky)
+ }
+
+ #call gactivate (gd, 0)
+ gt = ap_gtinit (AP_IMROOT(ap), AP_SXCUR(sky), AP_SYCUR(sky))
+ ier = ap_histplot (gd, gt, Memr[AP_SKYPIX(sky)],
+ Memr[AP_SWGT(sky)], Memi[AP_INDEX(sky)+ilo-1], nsky,
+ AP_K1(sky), INDEFR, AP_BINSIZE(sky), AP_SMOOTH(sky),
+ AP_SKY_MODE(sky), AP_SKY_SIG(sky), AP_SKY_SKEW(sky),
+ AP_NSKY(sky), AP_NSKY_REJECT(sky))
+ AP_NSKY_REJECT(sky) = AP_NBADSKYPIX(sky) + nclip +
+ AP_NSKY_REJECT(sky)
+ call ap_gtfree (gt)
+
+ return (ier)
+
+ case AP_OFILT:
+
+ # Initialize the weights.
+ call amovkr (1.0, Memr[AP_SWGT(sky)], AP_NSKYPIX(sky))
+
+ # Clip the data.
+ if (AP_SLOCLIP(sky) > 0.0 || AP_SHICLIP(sky) > 0.0) {
+ nclip = ap_clip (Memr[AP_SKYPIX(sky)], Memi[AP_INDEX(sky)],
+ AP_NSKYPIX(sky), AP_SLOCLIP(sky), AP_SHICLIP(sky), ilo,
+ ihi)
+ if (nclip >= AP_NSKYPIX(sky))
+ return (AP_NSKY_TOO_SMALL)
+ nsky = AP_NSKYPIX(sky) - nclip
+ } else {
+ nclip = 0
+ call ap_index (Memi[AP_INDEX(sky)], AP_NSKYPIX(sky))
+ ilo = 1
+ nsky = AP_NSKYPIX(sky)
+ }
+
+ ier = ap_lgsky (Memr[AP_SKYPIX(sky)], Memi[AP_COORDS(sky)],
+ Memr[AP_SWGT(sky)], Memi[AP_INDEX(sky)+ilo-1], nsky,
+ AP_SNX(sky), AP_SNY(sky), AP_K1(sky), INDEFR,
+ AP_BINSIZE(sky), AP_SMOOTH(sky), AP_SLOREJECT(sky),
+ AP_SHIREJECT(sky), AP_RGROW(sky) * AP_SCALE(ap),
+ AP_SMAXITER(sky), AP_SKY_MODE(sky), AP_SKY_SIG(sky),
+ AP_SKY_SKEW(sky), AP_NSKY(sky), AP_NSKY_REJECT(sky))
+ AP_NSKY_REJECT(sky) = AP_NBADSKYPIX(sky) + nclip +
+ AP_NSKY_REJECT(sky)
+
+ return (ier)
+
+ case AP_GAUSS:
+
+ # Initialize the weights.
+ call amovkr (1.0, Memr[AP_SWGT(sky)], AP_NSKYPIX(sky))
+
+ # Clip the data.
+ if (AP_SLOCLIP(sky) > 0.0 || AP_SHICLIP(sky) > 0.0) {
+ nclip = ap_clip (Memr[AP_SKYPIX(sky)], Memi[AP_INDEX(sky)],
+ AP_NSKYPIX(sky), AP_SLOCLIP(sky), AP_SHICLIP(sky), ilo,
+ ihi)
+ if (nclip >= AP_NSKYPIX(sky))
+ return (AP_NSKY_TOO_SMALL)
+ nsky = AP_NSKYPIX(sky) - nclip
+ } else {
+ nclip = 0
+ call ap_index (Memi[AP_INDEX(sky)], AP_NSKYPIX(sky))
+ ilo = 1
+ nsky = AP_NSKYPIX(sky)
+ }
+
+ ier = ap_gauss (Memr[AP_SKYPIX(sky)], Memi[AP_COORDS(sky)],
+ Memr[AP_SWGT(sky)], Memi[AP_INDEX(sky)+ilo-1], nsky,
+ AP_SNX(sky), AP_SNY(sky), AP_SMAXITER(sky),
+ AP_K1(sky), INDEFR, AP_BINSIZE(sky), AP_SMOOTH(sky),
+ AP_SLOREJECT(sky), AP_SHIREJECT(sky), AP_RGROW(sky) *
+ AP_SCALE(ap), AP_SNREJECT(sky), AP_SKY_MODE(sky),
+ AP_SKY_SIG(sky), AP_SKY_SKEW(sky), AP_NSKY(sky),
+ AP_NSKY_REJECT(sky))
+ AP_NSKY_REJECT(sky) = AP_NBADSKYPIX(sky) + nclip +
+ AP_NSKY_REJECT(sky)
+
+ return (ier)
+
+ case AP_CROSSCOR:
+
+ # Initialize the weights.
+ call amovkr (1.0, Memr[AP_SWGT(sky)], AP_NSKYPIX(sky))
+
+ # Clip the data.
+ if (AP_SLOCLIP(sky) > 0.0 || AP_SHICLIP(sky) > 0.0) {
+ nclip = ap_clip (Memr[AP_SKYPIX(sky)], Memi[AP_INDEX(sky)],
+ AP_NSKYPIX(sky), AP_SLOCLIP(sky), AP_SHICLIP(sky), ilo,
+ ihi)
+ if (nclip >= AP_NSKYPIX(sky))
+ return (AP_NSKY_TOO_SMALL)
+ nsky = AP_NSKYPIX(sky) - nclip
+ } else {
+ nclip = 0
+ call ap_index (Memi[AP_INDEX(sky)], AP_NSKYPIX(sky))
+ ilo = 1
+ nsky = AP_NSKYPIX(sky)
+ }
+
+ ier = ap_crosscor (Memr[AP_SKYPIX(sky)], Memi[AP_COORDS(sky)],
+ Memr[AP_SWGT(sky)], Memi[AP_INDEX(sky)+ilo-1], nsky,
+ AP_SNX(sky), AP_SNY(sky), AP_K1(sky), INDEFR,
+ AP_BINSIZE(sky), AP_SMOOTH(sky), AP_SLOREJECT(sky),
+ AP_SHIREJECT(sky), AP_RGROW(sky) * AP_SCALE(ap),
+ AP_SMAXITER(sky), AP_SKY_MODE(sky), AP_SKY_SIG(sky),
+ AP_SKY_SKEW(sky), AP_NSKY(sky), AP_NSKY_REJECT(sky))
+ AP_NSKY_REJECT(sky) = AP_NBADSKYPIX(sky) + nclip +
+ AP_NSKY_REJECT(sky)
+
+ return (ier)
+
+ default:
+
+ AP_SKY_MODE(sky) = INDEFR
+ AP_SKY_SIG(sky) = INDEFR
+ AP_SKY_SKEW(sky) = INDEFR
+ AP_NSKY(sky) = AP_NSKYPIX(sky)
+ AP_NSKY_REJECT(sky) = 0
+ return (AP_OK)
+ }
+end