aboutsummaryrefslogtreecommitdiff
path: root/noao/imred/src/fibers/mkfibers.cl
diff options
context:
space:
mode:
Diffstat (limited to 'noao/imred/src/fibers/mkfibers.cl')
-rw-r--r--noao/imred/src/fibers/mkfibers.cl167
1 files changed, 167 insertions, 0 deletions
diff --git a/noao/imred/src/fibers/mkfibers.cl b/noao/imred/src/fibers/mkfibers.cl
new file mode 100644
index 00000000..b7ffdac2
--- /dev/null
+++ b/noao/imred/src/fibers/mkfibers.cl
@@ -0,0 +1,167 @@
+# MKFIBERS - Make multifiber examples
+
+procedure mkfibers (image)
+
+file image {prompt="Image name"}
+string type="object" {prompt="Object type",
+ enum="object|objnosky|sky|flat|henear|ehenear|ohenear|mercury"}
+file fibers="" {prompt="Fiber data file"}
+string title="Multifiber artificial image" {prompt="Title"}
+file header="artdata$stdhdr.dat" {prompt="Header keyword file"}
+int ncols=400 {prompt="Number of columns"}
+int nlines=512 {prompt="Number of lines"}
+real wstart=4210. {prompt="Starting wavelength"}
+real wend=7362. {prompt="Ending wavelength"}
+int seed=1 {prompt="Noise seed"}
+
+begin
+ int i, ap, beam
+ real ar
+ file out, obj, sky, arc, dat
+ string htype, imtype
+
+ out = image
+ imtype = "." // envget ("imtype")
+ i = stridx (",", imtype)
+ if (i > 0)
+ imtype = substr (imtype, 1, i-1)
+ if (access (out) || access (out//imtype))
+ return
+
+ print ("Creating image ", out, " ...")
+
+ obj = mktemp ("art")
+ sky = mktemp ("art")
+ arc = mktemp ("art")
+ dat = mktemp ("art")
+
+ list = fibers
+ if (type == "object") { # Object spectrum + sky
+ htype = "object"
+ mk1dspec (obj, output="", ap=1, rv=0., z=no, ncols=nlines, naps=1,
+ wstart=wstart, wend=wend, continuum=1000., slope=0.,
+ temperature=7000., lines="", nlines=50, peak=-0.5,
+ profile="gaussian", gfwhm=24, seed=2, comments=no, header="")
+ mk1dspec (sky, output="", ap=1, rv=0., z=no, ncols=nlines, naps=1,
+ wstart=wstart, wend=wend, continuum=1000., slope=0.,
+ temperature=5800., lines="", nlines=20, peak=1.,
+ profile="gaussian", gfwhm=12, seed=1, comments=no, header="")
+ imarith (obj, "+", sky, obj, verbose=no, noact=no)
+ mk1dspec (arc, output="", ap=1, rv=0., z=no, ncols=nlines, naps=1,
+ wstart=wstart, wend=wend, continuum=0.8, slope=0.,
+ temperature=0., lines="mkexamples$henear2.dat",
+ profile="gaussian", gfwhm=14, comments=no, header="")
+ mk1dspec (arc, output="", ap=1, rv=0., z=no, continuum=20,
+ slope=0., temperature=0., lines="", nlines=0,
+ comments=no, header="")
+ while (fscan (list, ap, beam, line) != EOF) {
+ if (beam == 0)
+ print (sky, " ", line, >> dat)
+ else if (beam == 1)
+ print (obj, " ", line, >> dat)
+ else if (beam == 2)
+ print (arc, " ", line, >> dat)
+ }
+ } else if (type == "objnosky") { # Object spectrum
+ htype = "object"
+ mk1dspec (obj, output="", ap=1, rv=0., z=no, ncols=nlines, naps=1,
+ wstart=wstart, wend=wend, continuum=1000., slope=0.,
+ temperature=7000., lines="", nlines=50, peak=-0.5,
+ profile="gaussian", gfwhm=24, seed=2, comments=no, header="")
+ mk1dspec (arc, output="", ap=1, rv=0., z=no, ncols=nlines, naps=1,
+ wstart=wstart, wend=wend, continuum=0.8, slope=0.,
+ temperature=0., lines="mkexamples$henear2.dat",
+ profile="gaussian", gfwhm=14, comments=no, header="")
+ mk1dspec (arc, output="", ap=1, rv=0., z=no, continuum=20,
+ slope=0., temperature=0., lines="", nlines=0,
+ comments=no, header="")
+ while (fscan (list, ap, beam, line) != EOF) {
+ if (beam == 1)
+ print (obj, " ", line, >> dat)
+ else if (beam == 2)
+ print (arc, " ", line, >> dat)
+ }
+ } else if (type == "sky") { # Sky only
+ htype = "object"
+ mk1dspec (sky, output="", ap=1, rv=0., z=no, ncols=nlines, naps=1,
+ wstart=wstart, wend=wend, continuum=1000., slope=0.,
+ temperature=5800., lines="", nlines=20, peak=1.,
+ profile="gaussian", gfwhm=12, seed=1, comments=no, header="")
+ while (fscan (list, ap, beam, line) != EOF)
+ print (sky, " ", line, >> dat)
+ } else if (type == "flat") { # Flat field
+ htype = "flat"
+ mk1dspec (obj, output="", ap=1, rv=0., z=no, ncols=nlines, naps=1,
+ wstart=wstart, wend=wend, continuum=10000., slope=0.,
+ temperature=8000., lines="", nlines=0, comments=no, header="")
+ while (fscan (list, ap, beam, line) != EOF)
+ print (obj, " ", line, >> dat)
+ } else if (type == "henear") { # HE-NE-AR
+ htype = "comp"
+ mk1dspec (arc, output="", ap=1, rv=0., z=no, ncols=nlines, naps=1,
+ wstart=wstart, wend=wend, continuum=0.8, slope=0.,
+ temperature=0., lines="mkexamples$henear2.dat",
+ profile="gaussian", gfwhm=14, comments=no, header="")
+ mk1dspec (arc, output="", ap=1, rv=0., z=no, continuum=20,
+ slope=0., temperature=0., lines="", nlines=0,
+ comments=no, header="")
+ while (fscan (list, ap, beam, line) != EOF)
+ print (arc, " ", line, >> dat)
+ } else if (type == "ehenear") { # HE-NE-AR Even fibers
+ htype = "comp"
+ mk1dspec (arc, output="", ap=1, rv=0., z=no, ncols=nlines, naps=1,
+ wstart=wstart, wend=wend, continuum=0.8, slope=0.,
+ temperature=0., lines="mkexamples$henear2.dat",
+ profile="gaussian", gfwhm=14, comments=no, header="")
+ mk1dspec (arc, output="", ap=1, rv=0., z=no, continuum=20,
+ slope=0., temperature=0., lines="", nlines=0,
+ comments=no, header="")
+ while (fscan (list, ap, beam, line) != EOF) {
+ if (mod (ap, 2) == 0) {
+ print (arc, " ", line, >> dat)
+ }
+ }
+ } else if (type == "ohenear") { # HE-NE-AR Odd fibers
+ htype = "comp"
+ mk1dspec (arc, output="", ap=1, rv=0., z=no, ncols=nlines, naps=1,
+ wstart=wstart, wend=wend, continuum=0.8, slope=0.,
+ temperature=0., lines="mkexamples$henear2.dat",
+ profile="gaussian", gfwhm=14, comments=no, header="")
+ mk1dspec (arc, output="", ap=1, rv=0., z=no, continuum=20,
+ slope=0., temperature=0., lines="", nlines=0,
+ comments=no, header="")
+ while (fscan (list, ap, beam, line) != EOF) {
+ if (mod (ap, 2) == 1) {
+ print (arc, " ", line, >> dat)
+ }
+ }
+ } else if (type == "mercury") { # Emission lines
+ htype = "comp"
+ mk1dspec (arc, output="", ap=1, rv=0., z=no, ncols=nlines, naps=1,
+ wstart=wstart, wend=wend, continuum=0., slope=0.,
+ temperature=0., lines="", nlines=30, peak=10000.,
+ profile="gaussian", gfwhm=7, seed=i, comments=no, header="")
+ mk1dspec (arc, output="", ap=1, rv=0., z=no, continuum=20,
+ slope=0., temperature=0., lines="", nlines=0,
+ comments=no, header="")
+ while (fscan (list, ap, beam, line) != EOF) {
+ print (arc, " ", line, >> dat)
+ }
+ }
+ list = ""
+
+ mk2dspec (out, output="", model=dat, ncols=ncols, nlines=nlines,
+ title=title, header=header, comments=no)
+ hedit (out, "imagetyp", htype, update=yes, add=no, delete=no,
+ show=no, verify=no)
+
+
+ mknoise (out, output="", background=0., gain=1., rdnoise=3.,
+ poisson=yes, seed=seed, cosrays="", ncosrays=0, energy=30000.,
+ radius=0.5, ar=1., pa=0., comments=no)
+
+ imdelete (obj, verify=no, >& "dev$null")
+ imdelete (sky, verify=no, >& "dev$null")
+ imdelete (arc, verify=no, >& "dev$null")
+ delete (dat, verify=no, >& "dev$null")
+end