aboutsummaryrefslogtreecommitdiff
path: root/noao/imred/src/doslit/sdoarcs.cl
diff options
context:
space:
mode:
Diffstat (limited to 'noao/imred/src/doslit/sdoarcs.cl')
-rw-r--r--noao/imred/src/doslit/sdoarcs.cl101
1 files changed, 101 insertions, 0 deletions
diff --git a/noao/imred/src/doslit/sdoarcs.cl b/noao/imred/src/doslit/sdoarcs.cl
new file mode 100644
index 00000000..19b8f3af
--- /dev/null
+++ b/noao/imred/src/doslit/sdoarcs.cl
@@ -0,0 +1,101 @@
+# SDOARCS -- Determine dispersion relation for spectrum based on refernece arcs.
+
+procedure sdoarcs (spec, arcref1, reextract, logfile, batch)
+
+file spec
+file arcref1
+bool reextract
+file logfile
+bool batch
+
+struct *fd
+
+begin
+ file temp, arc1, arc2, str1
+ string imtype, mstype, reid
+ bool verbose1
+ int i, n
+
+ imtype = "." // envget ("imtype")
+ i = stridx (",", imtype)
+ if (i > 0)
+ imtype = substr (imtype, 1, i-1)
+ mstype = ".ms" // imtype
+ n = strlen (imtype)
+
+ temp = mktemp ("tmp$iraf")
+
+ for (j=1; j<=2; j+=1) {
+
+ # Setup interactive/batch parameters
+ if (batch) {
+ verbose1 = no
+ reid = "no"
+ } else {
+ verbose1 = verbose
+ reidentify.answer.p_mode = "h"
+ reid = reidentify.answer
+ reidentify.answer.p_mode = "q"
+ if (reid == "no")
+ reid = "yes"
+ }
+
+ # The reference spectra refer initially to the 2D image. At the
+ # end we will reset them to refer to the 1D spectra.
+
+ hselect (spec, "refspec"//j, yes, > temp)
+ fd = temp
+ i = fscan (fd, arc1, str1)
+ fd = ""; delete (temp, verify=no)
+ if (nscan() < 1)
+ break
+
+ # Strip possible image extension.
+ i = strlen (arc1)
+ if (i > n && substr (arc1, i-n+1, i) == imtype)
+ arc1 = substr (arc1, 1, i-n)
+
+ # Set extraction output and aperture reference depending on whether
+ # the arcs are to be rextracted using recentered or retraced object
+ # apertures.
+
+ arc2 = spec // arc1
+ if (access (arc2//mstype))
+ imdelete (arc2//mstype, verify=no)
+ delete (database//"/id"//arc2//".ms*", verify = no, >& "dev$null")
+
+ # Extract and determine dispersion function if necessary.
+ if (!access (arc2//mstype)) {
+ if (!batch)
+ print ("Extract and reidentify arc spectrum ", arc1)
+ print ("Extract and reidentify arc spectrum ", arc1, >> logfile)
+ apslitproc (arc1, output=arc2//".ms", references=spec,
+ background="none", clean=no, weights="none",
+ verbose=verbose1)
+ delete (database//"/id"//arc2//".ms*", verify = no,
+ >& "dev$null")
+ reidentify (arcref1//".ms", arc2//".ms", interactive=reid,
+ section="middle line", shift=0., step=1, nsum=1,
+ cradius=sparams.cradius, threshold=sparams.threshold,
+ nlost=100, refit=sparams.refit, trace=no, override=no,
+ newaps=yes, addfeatures=sparams.addfeatures,
+ coordlist=sparams.coordlist, match=sparams.match,
+ maxfeatures=50, minsep=2., database=database,
+ plotfile=plotfile, logfiles=logfile, verbose=verbose1)
+
+ # If not reextracting arcs based on object apertures
+ # then save the extracted arc to avoid doing it again.
+
+ if (arc1 != arc2)
+ imdelete (arc2//".ms", verify=no)
+ }
+
+ # Set the REFSPEC parameters for multispec spectrum.
+ if (nscan() == 1)
+ hedit (spec//".ms", "refspec"//j, arc2//".ms", add=yes,
+ verify=no, show=no, update=yes)
+ else
+ hedit (spec//".ms", "refspec"//j, arc2//".ms "//str1,
+ add=yes, verify=no, show=no, update=yes)
+ }
+end