diff options
Diffstat (limited to 'noao/imred/src/fibers/mkfibers.cl')
-rw-r--r-- | noao/imred/src/fibers/mkfibers.cl | 167 |
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 |