aboutsummaryrefslogtreecommitdiff
path: root/noao/imred/src/dofoe/response.cl
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/imred/src/dofoe/response.cl
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'noao/imred/src/dofoe/response.cl')
-rw-r--r--noao/imred/src/dofoe/response.cl99
1 files changed, 99 insertions, 0 deletions
diff --git a/noao/imred/src/dofoe/response.cl b/noao/imred/src/dofoe/response.cl
new file mode 100644
index 00000000..a59c5ea3
--- /dev/null
+++ b/noao/imred/src/dofoe/response.cl
@@ -0,0 +1,99 @@
+# RESPONSE -- Make a fiber response spectrum using a flat field and sky flat.
+
+procedure response (flat, apreference, response)
+
+string flat {prompt="Flat field spectrum"}
+string apreference {prompt="Aperture reference spectrum"}
+string response {prompt="Response spectrum"}
+
+bool recenter = no {prompt="Recenter sky apertures?"}
+bool edit = no {prompt="Edit/review sky apertures?"}
+bool trace = no {prompt="Trace sky spectra?"}
+bool clean = no {prompt="Detect and replace bad pixels?"}
+bool fitflat = no {prompt="Fit and ratio flat field spectrum?"}
+bool interactive = yes {prompt="Fit flat field interactively?"}
+string function = "spline3" {prompt="Fitting function",
+ enum="spline3|legendre|chebyshev|spline1"}
+int order = 20 {prompt="Fitting function order", min=1}
+
+begin
+ string imtype
+ file log1, log2, flat2d, flatec, resp
+ int i, n
+ struct err
+
+ imtype = "." // envget ("imtype")
+ i = stridx (",", imtype)
+ if (i > 0)
+ imtype = substr (imtype, 1, i-1)
+ n = strlen (imtype)
+
+ flat2d = flat
+ resp = response
+
+ if (flat2d == "")
+ error (1, "No flat field defined")
+ if (flat2d != "") {
+ i = strlen (flat2d)
+ if (i > n && substr (flat2d, i-n+1, i) == imtype)
+ flat2d = substr (flat2d, 1, i-n)
+ flatec = flat2d // ".ec"
+ if (!access (flat2d // imtype)) {
+ printf ("Flat field spectrum not found - %s%s\n",
+ flat2d, imtype) | scan (err)
+ error (1, err // "\nCheck setting of imtype")
+ }
+ }
+
+ tee.append = yes
+ if (logfile == "")
+ log1 = "dev$null"
+ else
+ log1 = logfile
+ if (verbose)
+ log2 = "STDOUT"
+ else
+ log2 = "dev$null"
+
+ # Initialize APALL
+ apscript.references = apreference
+ if (recenter)
+ apscript.ansrecenter = "YES"
+ else
+ apscript.ansrecenter = "NO"
+ apscript.ansresize = "NO"
+ if (edit)
+ apscript.ansedit = "yes"
+ else
+ apscript.ansedit = "NO"
+ if (trace)
+ apscript.anstrace = "YES"
+ else
+ apscript.anstrace = "NO"
+ apscript.ansextract = "YES"
+
+ print ("Extract flat field ", flat2d) | tee (log1)
+ if (flat2d == apscript.references)
+ apscript (flat2d, ansrecenter="NO", ansedit="NO", anstrace="NO",
+ background="none", clean=clean, extras=no)
+ else
+ apscript (flat2d, clean=clean, extras=no)
+
+ if (fitflat) {
+ print ("Fit and ratio flat field ", flat2d) | tee (log1)
+ fit1d (flatec, resp, "fit", axis=1, interactive=interactive,
+ sample="*", naverage=1, function=function, order=order,
+ low_reject=0., high_reject=0., niterate=1, grow=0.,
+ graphics="stdgraph")
+ sarith (flatec, "/", resp, resp, w1=INDEF, w2=INDEF, apertures="",
+ bands="", beams="", apmodulus=0, reverse=no, ignoreaps=yes,
+ format="multispec", renumber=no, offset=0, clobber=yes,
+ merge=no, errval=0, verbose=no)
+ imdelete (flatec, verify=no)
+ } else
+ imrename (flatec, resp, verbose=no)
+
+ print ("Create the normalized response ", resp) | tee (log1)
+ bscale (resp, resp, bzero="0.", bscale="mean", section="",
+ step=1, upper=INDEF, lower=INDEF, verbose=yes) | tee (log1, >log2)
+end