aboutsummaryrefslogtreecommitdiff
path: root/noao/imred/hydra
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /noao/imred/hydra
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'noao/imred/hydra')
-rw-r--r--noao/imred/hydra/Revisions61
-rw-r--r--noao/imred/hydra/demos/big.cl13
-rw-r--r--noao/imred/hydra/demos/demos.cl18
-rw-r--r--noao/imred/hydra/demos/demos.men13
-rw-r--r--noao/imred/hydra/demos/demos.par2
-rw-r--r--noao/imred/hydra/demos/dohydra.cl12
-rw-r--r--noao/imred/hydra/demos/dohydra1.cl12
-rw-r--r--noao/imred/hydra/demos/dohydral.cl13
-rw-r--r--noao/imred/hydra/demos/dohydranl.cl14
-rw-r--r--noao/imred/hydra/demos/donessie.cl12
-rw-r--r--noao/imred/hydra/demos/fibers.dat44
-rw-r--r--noao/imred/hydra/demos/header.dat36
-rw-r--r--noao/imred/hydra/demos/mkbig.cl29
-rw-r--r--noao/imred/hydra/demos/mkbig.dat300
-rw-r--r--noao/imred/hydra/demos/mkdohydra.cl41
-rw-r--r--noao/imred/hydra/demos/mkdohydra1.dat12
-rw-r--r--noao/imred/hydra/demos/mkdohydra2.dat12
-rw-r--r--noao/imred/hydra/demos/mkdonessie.cl36
-rw-r--r--noao/imred/hydra/demos/mkdonessie.dat12
-rw-r--r--noao/imred/hydra/demos/mklist.cl27
-rw-r--r--noao/imred/hydra/demos/xgbig.dat81
-rw-r--r--noao/imred/hydra/demos/xgdohydra.dat93
-rw-r--r--noao/imred/hydra/demos/xgdohydra1.dat89
-rw-r--r--noao/imred/hydra/demos/xgdohydranl.dat91
-rw-r--r--noao/imred/hydra/demos/xgdonessie.dat94
-rw-r--r--noao/imred/hydra/doc/dohydra.hlp1588
-rw-r--r--noao/imred/hydra/doc/dohydra.ms1853
-rw-r--r--noao/imred/hydra/dohydra.cl75
-rw-r--r--noao/imred/hydra/dohydra.par43
-rw-r--r--noao/imred/hydra/hydra.cl82
-rw-r--r--noao/imred/hydra/hydra.hd7
-rw-r--r--noao/imred/hydra/hydra.men32
-rw-r--r--noao/imred/hydra/hydra.par13
-rw-r--r--noao/imred/hydra/params.par67
34 files changed, 4927 insertions, 0 deletions
diff --git a/noao/imred/hydra/Revisions b/noao/imred/hydra/Revisions
new file mode 100644
index 00000000..b8318135
--- /dev/null
+++ b/noao/imred/hydra/Revisions
@@ -0,0 +1,61 @@
+.help revisions Jul91 noao.imred.hydra
+.nf
+imred$hydra/doc/dohydra.hlp
+ Fixed minor formating problem. (4/22/99, Valdes)
+
+=======
+V2.11.1
+=======
+
+imred$hydra/doc/dohdydra.hlp
+imred$hydra/doc/dohdydra.ms
+ Updated for change where if both crval and cdelt are INDEF then the
+ automatic identification is not done. (5/2/96, Valdes)
+
+imred$hydra/doc/dohydra.hlp
+ Fixed typo. (4/22/97, Valdes)
+
+imred$hydra/demos/mkbig.cl
+imred$hydra/demos/mkdohydra.cl
+imred$hydra/demos/mkdonessie.cl
+ Made the ARTDATA package parameters explicit (4/15/97, Valdes)
+
+imred$hydra/hydra.cl
+ Increased the minimum min_lenuserarea from 40000 to 100000.
+ (7/31/96, Valdes)
+
+imred$hydra/dohydra.cl
+imred$hydra/dohydra.par
+imred$hydra/params.par
+imred$hydra/doc/dohydra.hlp
+imred$hydra/doc/dohydra.ms
+ Added crval/cdelt parameters used in new version with automatic arc
+ line identification. (4/5/96, Valdes)
+
+imred$hydra/doc/dohydra.hlp
+imred$hydra/doc/dohydra.ms
+ Describes the new header option for the aperture identification table.
+ (7/25/95, Valdes)
+
+imred$hydra/hydra.cl
+imred$hydra/dohydra.cl
+imred$hydra/dohydra.par
+imred$hydra/doc/dohydra.hlp
+imred$hydra/doc/dohydra.ms
+imred$hydra/demos/xgdohydra.dat
+imred$hydra/demos/xgbig.dat
+imred$hydra/demos/xgdohydra1.dat
+imred$hydra/demos/xgdohydranl.dat
+imred$hydra/demos/xgdonessie.dat
+ Added sky alignment option. (7/19/95, Valdes)
+
+=======
+V2.10.4
+=======
+
+imred$hydra/hydra.cl
+ Renamed "response" to "fibresponse". (12/31/94, Valdes)
+
+imred/hydra/*
+ Installed (7/24/91, Valdes)
+.endhelp
diff --git a/noao/imred/hydra/demos/big.cl b/noao/imred/hydra/demos/big.cl
new file mode 100644
index 00000000..7596599f
--- /dev/null
+++ b/noao/imred/hydra/demos/big.cl
@@ -0,0 +1,13 @@
+# Create demo data if needed.
+
+cl (< "demos$mkbig.cl")
+
+unlearn dohydra params
+params.order = "increasing"
+delete ("demologfile,demoplotfile", verify=no, >& "dev$null")
+
+# Execute playback.
+if (substr (envget("stdgraph"), 1, 6) == "xgterm")
+ stty (playback="demos$xgbig.dat", nlines=24, verify=no, delay=0)
+else
+ error (1, "Playback for current terminal type not available")
diff --git a/noao/imred/hydra/demos/demos.cl b/noao/imred/hydra/demos/demos.cl
new file mode 100644
index 00000000..5b065c51
--- /dev/null
+++ b/noao/imred/hydra/demos/demos.cl
@@ -0,0 +1,18 @@
+# DEMOS -- Run specified demo provided a demo file exists.
+
+procedure demos (demoname)
+
+file demoname {prompt="Demo name"}
+
+begin
+ file demo, demofile
+
+ if ($nargs == 0 && mode != "h")
+ type ("demos$demos.men")
+ demo = demoname
+ demofile = "demos$" // demo // ".cl"
+ if (access (demofile))
+ cl (< demofile)
+ else
+ error (1, "Unknown demo " // demo)
+end
diff --git a/noao/imred/hydra/demos/demos.men b/noao/imred/hydra/demos/demos.men
new file mode 100644
index 00000000..8c81d0f6
--- /dev/null
+++ b/noao/imred/hydra/demos/demos.men
@@ -0,0 +1,13 @@
+ MENU of HYDRA Demonstrations
+
+ mkdohdyra - Make Hydra test data (12 fibers, 100x256)
+ dohydra - Quick Hydra test with linear resampling
+ dohydra1 - Quick Hydra test with single standard star
+ dohydral - Quick Hydra test with logarithmic resampling
+ dohydranl - Quick Hydra test with nonlinear dispersion
+
+ mkdonessie - Make Nessie test data (12 fibers, 100x256)
+ donessie - Quick Nessie test (small images, no comments, no delays)
+
+ mkbig - Make large number of fiber test data (300 fibers, 1500x256)
+ big - Test with a large number of fibers
diff --git a/noao/imred/hydra/demos/demos.par b/noao/imred/hydra/demos/demos.par
new file mode 100644
index 00000000..4181ed59
--- /dev/null
+++ b/noao/imred/hydra/demos/demos.par
@@ -0,0 +1,2 @@
+demoname,f,a,"",,,"Demo name"
+mode,s,h,"ql",,,
diff --git a/noao/imred/hydra/demos/dohydra.cl b/noao/imred/hydra/demos/dohydra.cl
new file mode 100644
index 00000000..7a81d37e
--- /dev/null
+++ b/noao/imred/hydra/demos/dohydra.cl
@@ -0,0 +1,12 @@
+# Create demo data if needed.
+
+cl (< "demos$mkdohydra.cl")
+
+unlearn dohydra params
+delete ("demologfile,demoplotfile", verify=no, >& "dev$null")
+
+# Execute playback.
+if (substr (envget("stdgraph"), 1, 6) == "xgterm")
+ stty (playback="demos$xgdohydra.dat", nlines=24, verify=no, delay=0)
+else
+ error (1, "Playback for current terminal type not available")
diff --git a/noao/imred/hydra/demos/dohydra1.cl b/noao/imred/hydra/demos/dohydra1.cl
new file mode 100644
index 00000000..d18ac1bb
--- /dev/null
+++ b/noao/imred/hydra/demos/dohydra1.cl
@@ -0,0 +1,12 @@
+# Create demo data if needed.
+
+cl (< "demos$mkdohydra.cl")
+
+unlearn dohydra params
+delete ("demologfile,demoplotfile", verify=no, >& "dev$null")
+
+# Execute playback.
+if (substr (envget("stdgraph"), 1, 6) == "xgterm")
+ stty (playback="demos$xgdohydra1.dat", nlines=24, verify=no, delay=0)
+else
+ error (1, "Playback for current terminal type not available")
diff --git a/noao/imred/hydra/demos/dohydral.cl b/noao/imred/hydra/demos/dohydral.cl
new file mode 100644
index 00000000..b0b99f4f
--- /dev/null
+++ b/noao/imred/hydra/demos/dohydral.cl
@@ -0,0 +1,13 @@
+# Create demo data if needed.
+
+cl (< "demos$mkdohydra.cl")
+
+unlearn dohydra params
+params.log = yes
+delete ("demologfile,demoplotfile", verify=no, >& "dev$null")
+
+# Execute playback.
+if (substr (envget("stdgraph"), 1, 6) == "xgterm")
+ stty (playback="demos$xgdohydra.dat", nlines=24, verify=no, delay=0)
+else
+ error (1, "Playback for current terminal type not available")
diff --git a/noao/imred/hydra/demos/dohydranl.cl b/noao/imred/hydra/demos/dohydranl.cl
new file mode 100644
index 00000000..8b90cd54
--- /dev/null
+++ b/noao/imred/hydra/demos/dohydranl.cl
@@ -0,0 +1,14 @@
+
+# Create demo data if needed.
+
+cl (< "demos$mkdohydra.cl")
+
+unlearn dohydra params
+params.linearize = no
+delete ("demologfile,demoplotfile", verify=no, >& "dev$null")
+
+# Execute playback.
+if (substr (envget("stdgraph"), 1, 6) == "xgterm")
+ stty (playback="demos$xgdohydranl.dat", nlines=24, verify=no, delay=0)
+else
+ error (1, "Playback for current terminal type not available")
diff --git a/noao/imred/hydra/demos/donessie.cl b/noao/imred/hydra/demos/donessie.cl
new file mode 100644
index 00000000..154992f2
--- /dev/null
+++ b/noao/imred/hydra/demos/donessie.cl
@@ -0,0 +1,12 @@
+# Create demo data if needed.
+
+cl (< "demos$mkdonessie.cl")
+
+unlearn dohydra params
+delete ("demologfile,demoplotfile", verify=no, >& "dev$null")
+
+# Execute playback.
+if (substr (envget("stdgraph"), 1, 6) == "xgterm")
+ stty (playback="demos$xgdonessie.dat", nlines=24, verify=no, delay=0)
+else
+ error (1, "Playback for current terminal type not available")
diff --git a/noao/imred/hydra/demos/fibers.dat b/noao/imred/hydra/demos/fibers.dat
new file mode 100644
index 00000000..fcfa74b5
--- /dev/null
+++ b/noao/imred/hydra/demos/fibers.dat
@@ -0,0 +1,44 @@
+ 1 2 0.804985 gauss 2.7 0 355.825 0.002
+ 2 0 0.642824 gauss 2.7 0 349.692 0.002
+ 3 1 0.901402 gauss 2.7 0 343.900 0.002
+ 4 0 0.795503 gauss 2.7 0 337.464 0.002
+ 5 1 0.989898 gauss 2.7 0 331.099 0.002
+ 6 1 0.934496 gauss 2.7 0 324.886 0.002
+ 7 1 0.888073 gauss 2.7 0 318.907 0.002
+ 8 0 0.860567 gauss 2.7 0 312.805 0.002
+ 9 1 0.677534 gauss 2.7 0 306.601 0.002
+11 1 1.086792 gauss 2.7 0 294.340 0.002
+12 1 1.000867 gauss 2.7 0 288.223 0.002
+13 1 1.011535 gauss 2.7 0 282.295 0.002
+14 1 1.059941 gauss 2.7 0 276.397 0.002
+15 1 1.070633 gauss 2.7 0 270.036 0.002
+16 1 1.014929 gauss 2.7 0 263.795 0.002
+17 0 1.056154 gauss 2.7 0 257.857 0.002
+19 1 1.010262 gauss 2.7 0 245.340 0.002
+20 1 1.329210 gauss 2.7 0 239.071 0.002
+21 1 1.012730 gauss 2.7 0 232.936 0.002
+22 2 1.053946 gauss 2.7 0 226.763 0.002
+23 1 1.376721 gauss 2.7 0 220.742 0.002
+24 1 1.396739 gauss 2.7 0 214.579 0.002
+25 1 1.301325 gauss 2.7 0 208.787 0.002
+26 1 0.810463 gauss 2.7 0 202.392 0.002
+27 1 1.219917 gauss 2.7 0 196.406 0.002
+28 1 0.729413 gauss 2.7 0 189.815 0.002
+30 1 1.257244 gauss 2.7 0 177.277 0.002
+31 1 1.077903 gauss 2.7 0 171.462 0.002
+32 1 1.085670 gauss 2.7 0 165.604 0.002
+33 1 0.800563 gauss 2.7 0 159.134 0.002
+34 1 1.147771 gauss 2.7 0 152.901 0.002
+35 0 1.096679 gauss 2.7 0 146.801 0.002
+36 1 1.164292 gauss 2.7 0 141.093 0.002
+37 1 0.457727 gauss 2.7 0 134.824 0.002
+38 1 1.269284 gauss 2.7 0 128.719 0.002
+39 1 1.309297 gauss 2.7 0 122.536 0.002
+41 1 1.283618 gauss 2.7 0 110.218 0.002
+42 1 0.687173 gauss 2.7 0 103.963 0.002
+43 1 1.175850 gauss 2.7 0 98.0091 0.002
+44 1 0.757532 gauss 2.7 0 91.9606 0.002
+45 1 1.015546 gauss 2.7 0 79.5097 0.002
+46 1 0.372036 gauss 2.7 0 73.5889 0.002
+47 0 1.065080 gauss 2.7 0 67.4535 0.002
+48 2 0.939866 gauss 2.7 0 60.9762 0.002
diff --git a/noao/imred/hydra/demos/header.dat b/noao/imred/hydra/demos/header.dat
new file mode 100644
index 00000000..b9891d07
--- /dev/null
+++ b/noao/imred/hydra/demos/header.dat
@@ -0,0 +1,36 @@
+OBJECT = 'V640Mon 4500 ' / object name
+OBSERVAT= 'KPNO ' / observatory
+OBSERVER= 'Massey ' / observers
+COMMENTS= 'Final New Ice ' / comments
+EXPTIME = 1200. / actual integration time
+DARKTIME= 1200. / total elapsed time
+IMAGETYP= 'object ' / object, dark, bias, etc.
+DATE-OBS= '26/11/91 ' / date (dd/mm/yy) of obs.
+UT = '12:19:55.00 ' / universal time
+ST = '09:13:15.00 ' / sidereal time
+RA = '06:37:02.00 ' / right ascension
+DEC = '06:08:52.00 ' / declination
+EPOCH = 1991.9 / epoch of ra and dec
+ZD = '44.580 ' / zenith distance
+TELESCOP= 'kpcdf ' / telescope name
+DETECTOR= 'te1k ' / detector
+PREFLASH= 0 / preflash time, seconds
+GAIN = 5.4 / gain, electrons per adu
+DWELL = 5 / sample integration time
+RDNOISE = 3.5 / read noise, electrons per adu
+DELAY0 = 0 / time delay after each pixel
+DELAY1 = 0 / time delay after each row
+CAMTEMP = -111 / camera temperature
+DEWTEMP = -183 / dewar temperature
+CCDSEC = '[97:134,2:1023]' / orientation to full frame
+ORIGSEC = '[1:1024,1:1024] ' / original size full frame
+CCDSUM = '1 1 ' / on chip summation
+INSTRUME= 'IRAF/ARTDATA ' / instrument
+APERTURE= '250micron slit ' / aperture
+TVFILT = '4-96 ' / tv filter
+DISPAXIS= '2 ' / dispersion axis
+GRATPOS = 4624.3 / grating position
+TRIM = 'Nov 26 5:44 Trim data section is [23:60,2:1023]'
+OVERSCAN= 'Nov 26 5:44 Overscan section is [103:133,2:1023] with mean=611.1
+ZEROCOR = 'Nov 26 5:44 Zero level correction image is Zerof'
+CCDPROC = 'Nov 26 5:44 CCD processing done'
diff --git a/noao/imred/hydra/demos/mkbig.cl b/noao/imred/hydra/demos/mkbig.cl
new file mode 100644
index 00000000..80b88572
--- /dev/null
+++ b/noao/imred/hydra/demos/mkbig.cl
@@ -0,0 +1,29 @@
+# Create demo data if needed.
+
+artdata
+artdata.nxc = 5
+artdata.nyc = 5
+artdata.nxsub = 10
+artdata.nysub = 10
+artdata.nxgsub = 5
+artdata.nygsub = 5
+artdata.dynrange = 100000.
+artdata.psfrange = 10.
+artdata.ranbuf = 0
+
+mkfibers ("demoobj", type="object", fibers="demos$mkbig.dat",
+ title="Hydra artificial image", header="demos$header.dat",
+ ncols=1500, nlines=256, wstart=5786., wend=7362., seed=1)
+mkfibers ("demoflat", type="flat", fibers="demos$mkbig.dat",
+ title="Hydra artificial image", header="demos$header.dat",
+ ncols=1500, nlines=256, wstart=5786., wend=7362., seed=2)
+mkfibers ("demoarc", type="henear", fibers="demos$mkbig.dat",
+ title="Hydra artificial image", header="demos$header.dat",
+ ncols=1500, nlines=256, wstart=5786., wend=7362., seed=3)
+
+# Create the setup files.
+delete ("demoapid", verify=no, >& "dev$null")
+list = "demos$mkbig.dat"
+while (fscan (list, i, j) != EOF)
+ print (i, j, >> "demoapid")
+list = ""
diff --git a/noao/imred/hydra/demos/mkbig.dat b/noao/imred/hydra/demos/mkbig.dat
new file mode 100644
index 00000000..c2260523
--- /dev/null
+++ b/noao/imred/hydra/demos/mkbig.dat
@@ -0,0 +1,300 @@
+1 1 1.104 gauss 2.0 0 9.8 .002
+2 0 0.963 gauss 2.0 0 14.7 .002
+3 1 1.245 gauss 2.0 0 19.6 .002
+4 0 1.007 gauss 2.0 0 24.5 .002
+5 1 0.961 gauss 2.0 0 29.4 .002
+6 0 1.074 gauss 2.0 0 34.3 .002
+7 1 1.104 gauss 2.0 0 39.2 .002
+8 0 1.167 gauss 2.0 0 44.1 .002
+9 1 1.152 gauss 2.0 0 49.0 .002
+10 0 1.035 gauss 2.0 0 53.9 .002
+11 1 1.089 gauss 2.0 0 58.8 .002
+12 0 0.901 gauss 2.0 0 63.7 .002
+13 1 1.054 gauss 2.0 0 68.6 .002
+14 0 0.999 gauss 2.0 0 73.5 .002
+15 1 1.017 gauss 2.0 0 78.4 .002
+16 0 0.930 gauss 2.0 0 83.3 .002
+17 1 0.821 gauss 2.0 0 88.2 .002
+18 0 0.903 gauss 2.0 0 93.1 .002
+19 1 0.957 gauss 2.0 0 98.0 .002
+20 0 1.004 gauss 2.0 0 102.9 .002
+21 1 0.777 gauss 2.0 0 107.8 .002
+22 0 0.978 gauss 2.0 0 112.7 .002
+23 1 0.820 gauss 2.0 0 117.6 .002
+24 0 0.902 gauss 2.0 0 122.5 .002
+25 1 0.825 gauss 2.0 0 127.4 .002
+26 0 0.975 gauss 2.0 0 132.3 .002
+27 1 1.121 gauss 2.0 0 137.2 .002
+28 0 1.158 gauss 2.0 0 142.1 .002
+29 1 0.782 gauss 2.0 0 147.0 .002
+30 0 0.956 gauss 2.0 0 151.9 .002
+31 1 0.994 gauss 2.0 0 156.8 .002
+32 0 1.020 gauss 2.0 0 161.7 .002
+33 1 0.817 gauss 2.0 0 166.6 .002
+34 0 0.786 gauss 2.0 0 171.5 .002
+35 1 1.227 gauss 2.0 0 176.4 .002
+36 0 0.863 gauss 2.0 0 181.3 .002
+37 1 0.914 gauss 2.0 0 186.2 .002
+38 0 1.154 gauss 2.0 0 191.1 .002
+39 1 0.878 gauss 2.0 0 196.0 .002
+40 0 1.044 gauss 2.0 0 200.9 .002
+41 1 1.034 gauss 2.0 0 205.8 .002
+42 0 0.756 gauss 2.0 0 210.7 .002
+43 1 0.773 gauss 2.0 0 215.6 .002
+44 0 0.933 gauss 2.0 0 220.5 .002
+45 1 0.888 gauss 2.0 0 225.4 .002
+46 0 0.990 gauss 2.0 0 230.3 .002
+47 1 0.920 gauss 2.0 0 235.2 .002
+48 0 1.113 gauss 2.0 0 240.1 .002
+49 1 1.010 gauss 2.0 0 245.0 .002
+50 0 0.767 gauss 2.0 0 249.9 .002
+51 1 1.146 gauss 2.0 0 254.8 .002
+52 0 0.962 gauss 2.0 0 259.7 .002
+53 1 1.030 gauss 2.0 0 264.6 .002
+54 0 0.812 gauss 2.0 0 269.5 .002
+55 1 1.001 gauss 2.0 0 274.4 .002
+56 0 1.126 gauss 2.0 0 279.3 .002
+57 1 0.845 gauss 2.0 0 284.2 .002
+58 0 1.050 gauss 2.0 0 289.1 .002
+59 1 1.221 gauss 2.0 0 294.0 .002
+60 0 1.103 gauss 2.0 0 298.9 .002
+61 1 1.079 gauss 2.0 0 303.8 .002
+62 0 0.944 gauss 2.0 0 308.7 .002
+63 1 0.810 gauss 2.0 0 313.6 .002
+64 0 0.922 gauss 2.0 0 318.5 .002
+65 1 1.039 gauss 2.0 0 323.4 .002
+66 0 0.892 gauss 2.0 0 328.3 .002
+67 1 1.021 gauss 2.0 0 333.2 .002
+68 0 1.160 gauss 2.0 0 338.1 .002
+69 1 1.053 gauss 2.0 0 343.0 .002
+70 0 1.043 gauss 2.0 0 347.9 .002
+71 1 0.794 gauss 2.0 0 352.8 .002
+72 0 0.777 gauss 2.0 0 357.7 .002
+73 1 0.890 gauss 2.0 0 362.6 .002
+74 0 1.143 gauss 2.0 0 367.5 .002
+75 1 0.945 gauss 2.0 0 372.4 .002
+76 0 0.994 gauss 2.0 0 377.3 .002
+77 1 1.174 gauss 2.0 0 382.2 .002
+78 0 0.766 gauss 2.0 0 387.1 .002
+79 1 1.157 gauss 2.0 0 392.0 .002
+80 0 1.219 gauss 2.0 0 396.9 .002
+81 1 0.951 gauss 2.0 0 401.8 .002
+82 0 1.044 gauss 2.0 0 406.7 .002
+83 1 1.054 gauss 2.0 0 411.6 .002
+84 0 1.236 gauss 2.0 0 416.5 .002
+85 1 0.862 gauss 2.0 0 421.4 .002
+86 0 0.755 gauss 2.0 0 426.3 .002
+87 1 0.933 gauss 2.0 0 431.2 .002
+88 0 1.149 gauss 2.0 0 436.1 .002
+89 1 1.053 gauss 2.0 0 441.0 .002
+90 0 0.870 gauss 2.0 0 445.9 .002
+91 1 0.920 gauss 2.0 0 450.8 .002
+92 0 0.820 gauss 2.0 0 455.7 .002
+93 1 0.786 gauss 2.0 0 460.6 .002
+94 0 0.934 gauss 2.0 0 465.5 .002
+95 1 1.117 gauss 2.0 0 470.4 .002
+96 0 0.776 gauss 2.0 0 475.3 .002
+97 1 0.887 gauss 2.0 0 480.2 .002
+98 0 0.876 gauss 2.0 0 485.1 .002
+99 1 1.037 gauss 2.0 0 490.0 .002
+100 0 0.824 gauss 2.0 0 494.9 .002
+101 1 0.979 gauss 2.0 0 499.8 .002
+102 0 1.112 gauss 2.0 0 504.7 .002
+103 1 0.856 gauss 2.0 0 509.6 .002
+104 0 0.864 gauss 2.0 0 514.5 .002
+105 1 1.154 gauss 2.0 0 519.4 .002
+106 0 1.060 gauss 2.0 0 524.3 .002
+107 1 0.800 gauss 2.0 0 529.2 .002
+108 0 1.121 gauss 2.0 0 534.1 .002
+109 1 1.017 gauss 2.0 0 539.0 .002
+110 0 0.905 gauss 2.0 0 543.9 .002
+111 1 1.203 gauss 2.0 0 548.8 .002
+112 0 0.795 gauss 2.0 0 553.7 .002
+113 1 0.770 gauss 2.0 0 558.6 .002
+114 0 1.246 gauss 2.0 0 563.5 .002
+115 1 1.035 gauss 2.0 0 568.4 .002
+116 0 0.852 gauss 2.0 0 573.3 .002
+117 1 0.757 gauss 2.0 0 578.2 .002
+118 0 0.969 gauss 2.0 0 583.1 .002
+119 1 0.943 gauss 2.0 0 588.0 .002
+120 0 0.943 gauss 2.0 0 592.9 .002
+121 1 1.141 gauss 2.0 0 597.8 .002
+122 0 0.965 gauss 2.0 0 602.7 .002
+123 1 1.107 gauss 2.0 0 607.6 .002
+124 0 1.199 gauss 2.0 0 612.5 .002
+125 1 1.141 gauss 2.0 0 617.4 .002
+126 0 1.043 gauss 2.0 0 622.3 .002
+127 1 0.964 gauss 2.0 0 627.2 .002
+128 0 0.856 gauss 2.0 0 632.1 .002
+129 1 0.993 gauss 2.0 0 637.0 .002
+130 0 1.160 gauss 2.0 0 641.9 .002
+131 1 1.076 gauss 2.0 0 646.8 .002
+132 0 0.981 gauss 2.0 0 651.7 .002
+133 1 1.061 gauss 2.0 0 656.6 .002
+134 0 0.811 gauss 2.0 0 661.5 .002
+135 1 1.210 gauss 2.0 0 666.4 .002
+136 0 0.753 gauss 2.0 0 671.3 .002
+137 1 0.773 gauss 2.0 0 676.2 .002
+138 0 1.202 gauss 2.0 0 681.1 .002
+139 1 0.922 gauss 2.0 0 686.0 .002
+140 0 1.055 gauss 2.0 0 690.9 .002
+141 1 0.790 gauss 2.0 0 695.8 .002
+142 0 1.064 gauss 2.0 0 700.7 .002
+143 1 1.179 gauss 2.0 0 705.6 .002
+144 0 0.843 gauss 2.0 0 710.5 .002
+145 1 1.105 gauss 2.0 0 715.4 .002
+146 0 1.208 gauss 2.0 0 720.3 .002
+147 1 0.835 gauss 2.0 0 725.2 .002
+148 0 1.039 gauss 2.0 0 730.1 .002
+149 1 0.966 gauss 2.0 0 735.0 .002
+150 0 1.191 gauss 2.0 0 739.9 .002
+151 1 0.995 gauss 2.0 0 744.8 .002
+152 0 0.936 gauss 2.0 0 749.7 .002
+153 1 0.813 gauss 2.0 0 754.6 .002
+154 0 1.190 gauss 2.0 0 759.5 .002
+155 1 1.064 gauss 2.0 0 764.4 .002
+156 0 0.832 gauss 2.0 0 769.3 .002
+157 1 1.147 gauss 2.0 0 774.2 .002
+158 0 0.967 gauss 2.0 0 779.1 .002
+159 1 1.040 gauss 2.0 0 784.0 .002
+160 0 0.890 gauss 2.0 0 788.9 .002
+161 1 1.002 gauss 2.0 0 793.8 .002
+162 0 0.999 gauss 2.0 0 798.7 .002
+163 1 0.828 gauss 2.0 0 803.6 .002
+164 0 0.962 gauss 2.0 0 808.5 .002
+165 1 0.932 gauss 2.0 0 813.4 .002
+166 0 1.166 gauss 2.0 0 818.3 .002
+167 1 1.144 gauss 2.0 0 823.2 .002
+168 0 0.850 gauss 2.0 0 828.1 .002
+169 1 1.209 gauss 2.0 0 833.0 .002
+170 0 1.089 gauss 2.0 0 837.9 .002
+171 1 0.788 gauss 2.0 0 842.8 .002
+172 0 1.242 gauss 2.0 0 847.7 .002
+173 1 1.130 gauss 2.0 0 852.6 .002
+174 0 0.977 gauss 2.0 0 857.5 .002
+175 1 0.843 gauss 2.0 0 862.4 .002
+176 0 0.815 gauss 2.0 0 867.3 .002
+177 1 1.110 gauss 2.0 0 872.2 .002
+178 0 1.098 gauss 2.0 0 877.1 .002
+179 1 1.090 gauss 2.0 0 882.0 .002
+180 0 1.230 gauss 2.0 0 886.9 .002
+181 1 1.004 gauss 2.0 0 891.8 .002
+182 0 1.237 gauss 2.0 0 896.7 .002
+183 1 1.197 gauss 2.0 0 901.6 .002
+184 0 1.007 gauss 2.0 0 906.5 .002
+185 1 0.790 gauss 2.0 0 911.4 .002
+186 0 1.233 gauss 2.0 0 916.3 .002
+187 1 0.962 gauss 2.0 0 921.2 .002
+188 0 1.014 gauss 2.0 0 926.1 .002
+189 1 1.076 gauss 2.0 0 931.0 .002
+190 0 0.978 gauss 2.0 0 935.9 .002
+191 1 1.173 gauss 2.0 0 940.8 .002
+192 0 1.058 gauss 2.0 0 945.7 .002
+193 1 1.077 gauss 2.0 0 950.6 .002
+194 0 0.970 gauss 2.0 0 955.5 .002
+195 1 0.874 gauss 2.0 0 960.4 .002
+196 0 0.803 gauss 2.0 0 965.3 .002
+197 1 0.990 gauss 2.0 0 970.2 .002
+198 0 0.783 gauss 2.0 0 975.1 .002
+199 1 1.083 gauss 2.0 0 980.0 .002
+200 0 1.009 gauss 2.0 0 984.9 .002
+201 1 0.943 gauss 2.0 0 989.8 .002
+202 0 1.071 gauss 2.0 0 994.7 .002
+203 1 0.764 gauss 2.0 0 999.6 .002
+204 0 0.827 gauss 2.0 0 1004.5 .002
+205 1 0.938 gauss 2.0 0 1009.4 .002
+206 0 0.956 gauss 2.0 0 1014.3 .002
+207 1 1.094 gauss 2.0 0 1019.2 .002
+208 0 1.119 gauss 2.0 0 1024.1 .002
+209 1 0.957 gauss 2.0 0 1029.0 .002
+210 0 0.910 gauss 2.0 0 1033.9 .002
+211 1 0.827 gauss 2.0 0 1038.8 .002
+212 0 1.060 gauss 2.0 0 1043.7 .002
+213 1 1.154 gauss 2.0 0 1048.6 .002
+214 0 1.002 gauss 2.0 0 1053.5 .002
+215 1 0.797 gauss 2.0 0 1058.4 .002
+216 0 0.989 gauss 2.0 0 1063.3 .002
+217 1 0.810 gauss 2.0 0 1068.2 .002
+218 0 1.106 gauss 2.0 0 1073.1 .002
+219 1 0.863 gauss 2.0 0 1078.0 .002
+220 0 1.246 gauss 2.0 0 1082.9 .002
+221 1 0.963 gauss 2.0 0 1087.8 .002
+222 0 0.929 gauss 2.0 0 1092.7 .002
+223 1 0.835 gauss 2.0 0 1097.6 .002
+224 0 0.995 gauss 2.0 0 1102.5 .002
+225 1 0.897 gauss 2.0 0 1107.4 .002
+226 0 0.983 gauss 2.0 0 1112.3 .002
+227 1 1.187 gauss 2.0 0 1117.2 .002
+228 0 1.239 gauss 2.0 0 1122.1 .002
+229 1 0.900 gauss 2.0 0 1127.0 .002
+230 0 0.846 gauss 2.0 0 1131.9 .002
+231 1 1.096 gauss 2.0 0 1136.8 .002
+232 0 1.041 gauss 2.0 0 1141.7 .002
+233 1 0.968 gauss 2.0 0 1146.6 .002
+234 0 0.827 gauss 2.0 0 1151.5 .002
+235 1 1.108 gauss 2.0 0 1156.4 .002
+236 0 1.162 gauss 2.0 0 1161.3 .002
+237 1 0.884 gauss 2.0 0 1166.2 .002
+238 0 0.891 gauss 2.0 0 1171.1 .002
+239 1 0.974 gauss 2.0 0 1176.0 .002
+240 0 1.116 gauss 2.0 0 1180.9 .002
+241 1 0.830 gauss 2.0 0 1185.8 .002
+242 0 0.964 gauss 2.0 0 1190.7 .002
+243 1 0.963 gauss 2.0 0 1195.6 .002
+244 0 0.869 gauss 2.0 0 1200.5 .002
+245 1 0.962 gauss 2.0 0 1205.4 .002
+246 0 0.959 gauss 2.0 0 1210.3 .002
+247 1 1.182 gauss 2.0 0 1215.2 .002
+248 0 1.167 gauss 2.0 0 1220.1 .002
+249 1 1.124 gauss 2.0 0 1225.0 .002
+250 0 1.151 gauss 2.0 0 1229.9 .002
+251 1 1.218 gauss 2.0 0 1234.8 .002
+252 0 1.229 gauss 2.0 0 1239.7 .002
+253 1 1.108 gauss 2.0 0 1244.6 .002
+254 0 1.248 gauss 2.0 0 1249.5 .002
+255 1 1.135 gauss 2.0 0 1254.4 .002
+256 0 0.787 gauss 2.0 0 1259.3 .002
+257 1 1.156 gauss 2.0 0 1264.2 .002
+258 0 0.773 gauss 2.0 0 1269.1 .002
+259 1 1.129 gauss 2.0 0 1274.0 .002
+260 0 1.212 gauss 2.0 0 1278.9 .002
+261 1 1.092 gauss 2.0 0 1283.8 .002
+262 0 1.116 gauss 2.0 0 1288.7 .002
+263 1 0.892 gauss 2.0 0 1293.6 .002
+264 0 1.208 gauss 2.0 0 1298.5 .002
+265 1 0.795 gauss 2.0 0 1303.4 .002
+266 0 0.860 gauss 2.0 0 1308.3 .002
+267 1 0.967 gauss 2.0 0 1313.2 .002
+268 0 0.800 gauss 2.0 0 1318.1 .002
+269 1 0.902 gauss 2.0 0 1323.0 .002
+270 0 0.752 gauss 2.0 0 1327.9 .002
+271 1 1.164 gauss 2.0 0 1332.8 .002
+272 0 1.119 gauss 2.0 0 1337.7 .002
+273 1 0.932 gauss 2.0 0 1342.6 .002
+274 0 0.912 gauss 2.0 0 1347.5 .002
+275 1 0.806 gauss 2.0 0 1352.4 .002
+276 0 1.198 gauss 2.0 0 1357.3 .002
+277 1 1.242 gauss 2.0 0 1362.2 .002
+278 0 1.158 gauss 2.0 0 1367.1 .002
+279 1 0.881 gauss 2.0 0 1372.0 .002
+280 0 0.782 gauss 2.0 0 1376.9 .002
+281 1 1.000 gauss 2.0 0 1381.8 .002
+282 0 1.038 gauss 2.0 0 1386.7 .002
+283 1 0.872 gauss 2.0 0 1391.6 .002
+284 0 0.868 gauss 2.0 0 1396.5 .002
+285 1 1.079 gauss 2.0 0 1401.4 .002
+286 0 0.943 gauss 2.0 0 1406.3 .002
+287 1 0.825 gauss 2.0 0 1411.2 .002
+288 0 0.973 gauss 2.0 0 1416.1 .002
+289 1 1.061 gauss 2.0 0 1421.0 .002
+290 0 0.905 gauss 2.0 0 1425.9 .002
+291 1 0.954 gauss 2.0 0 1430.8 .002
+292 0 0.865 gauss 2.0 0 1435.7 .002
+293 1 0.761 gauss 2.0 0 1440.6 .002
+294 0 0.932 gauss 2.0 0 1445.5 .002
+295 1 0.818 gauss 2.0 0 1450.4 .002
+296 0 1.225 gauss 2.0 0 1455.3 .002
+297 1 0.949 gauss 2.0 0 1460.2 .002
+298 0 1.006 gauss 2.0 0 1465.1 .002
+299 1 0.880 gauss 2.0 0 1470.0 .002
+300 0 0.998 gauss 2.0 0 1474.9 .002
diff --git a/noao/imred/hydra/demos/mkdohydra.cl b/noao/imred/hydra/demos/mkdohydra.cl
new file mode 100644
index 00000000..543dadb5
--- /dev/null
+++ b/noao/imred/hydra/demos/mkdohydra.cl
@@ -0,0 +1,41 @@
+# Create demo data if needed.
+
+artdata
+artdata.nxc = 5
+artdata.nyc = 5
+artdata.nxsub = 10
+artdata.nysub = 10
+artdata.nxgsub = 5
+artdata.nygsub = 5
+artdata.dynrange = 100000.
+artdata.psfrange = 10.
+artdata.ranbuf = 0
+
+mkfibers ("demoobj", type="object", fibers="demos$mkdohydra1.dat",
+ title="Hydra artificial image", header="demos$header.dat",
+ ncols=100, nlines=256, wstart=5786., wend=7362., seed=1)
+mkfibers ("demoflat", type="flat", fibers="demos$mkdohydra1.dat",
+ title="Hydra artificial image", header="demos$header.dat",
+ ncols=100, nlines=256, wstart=5786., wend=7362., seed=2)
+mkfibers ("demoarc", type="henear", fibers="demos$mkdohydra1.dat",
+ title="Hydra artificial image", header="demos$header.dat",
+ ncols=100, nlines=256, wstart=5786., wend=7362., seed=3)
+mkfibers ("demostd", type="object", fibers="demos$mkdohydra2.dat",
+ title="Hydra artificial image", header="demos$header.dat",
+ ncols=100, nlines=256, wstart=5786., wend=7362., seed=1)
+
+# Create the setup files.
+delete ("demoapid1", verify=no, >& "dev$null")
+list = "demos$mkdohydra1.dat"
+while (fscan (list, i, j) != EOF) {
+ print (i, j, "Title", >> "demoapid1")
+ s1 = i // " " // j // " 01:23:45.67 +01:23:45.67 Title"
+ hedit ("demoobj,demoflat,demoarc,demostd", "slfib"//i, s1,
+ add=yes, verify=no, show=no, update=yes)
+}
+list = ""
+delete ("demoapid2", verify=no, >& "dev$null")
+list = "demos$mkdohydra2.dat"
+while (fscan (list, i, j) != EOF)
+ print (i, j, >> "demoapid2")
+list = ""
diff --git a/noao/imred/hydra/demos/mkdohydra1.dat b/noao/imred/hydra/demos/mkdohydra1.dat
new file mode 100644
index 00000000..87640612
--- /dev/null
+++ b/noao/imred/hydra/demos/mkdohydra1.dat
@@ -0,0 +1,12 @@
+36 1 1.164292 gauss 2.7 0 91.093 0.002
+37 0 0.457727 gauss 2.7 0 84.824 0.002
+38 1 1.269284 gauss 2.7 0 78.719 0.002
+39 1 1.309297 gauss 2.7 0 72.536 0.002
+41 0 1.283618 gauss 2.7 0 60.218 0.002
+42 1 0.687173 gauss 2.7 0 53.963 0.002
+43 1 1.175850 gauss 2.7 0 48.0091 0.002
+44 0 0.757532 gauss 2.7 0 41.9606 0.002
+45 1 1.015546 gauss 2.7 0 29.5097 0.002
+46 -1 0.372036 gauss 2.7 0 23.5889 0.002
+47 0 1.065080 gauss 2.7 0 17.4535 0.002
+48 1 0.939866 gauss 2.7 0 10.9762 0.002
diff --git a/noao/imred/hydra/demos/mkdohydra2.dat b/noao/imred/hydra/demos/mkdohydra2.dat
new file mode 100644
index 00000000..4b848596
--- /dev/null
+++ b/noao/imred/hydra/demos/mkdohydra2.dat
@@ -0,0 +1,12 @@
+36 0 1.164292 gauss 2.7 0 91.093 0.002
+37 0 0.457727 gauss 2.7 0 84.824 0.002
+38 0 1.269284 gauss 2.7 0 78.719 0.002
+39 0 1.309297 gauss 2.7 0 72.536 0.002
+41 0 1.283618 gauss 2.7 0 60.218 0.002
+42 0 0.687173 gauss 2.7 0 53.963 0.002
+43 1 1.175850 gauss 2.7 0 48.0091 0.002
+44 0 0.757532 gauss 2.7 0 41.9606 0.002
+45 0 1.015546 gauss 2.7 0 29.5097 0.002
+46 -1 0.372036 gauss 2.7 0 23.5889 0.002
+47 0 1.065080 gauss 2.7 0 17.4535 0.002
+48 0 0.939866 gauss 2.7 0 10.9762 0.002
diff --git a/noao/imred/hydra/demos/mkdonessie.cl b/noao/imred/hydra/demos/mkdonessie.cl
new file mode 100644
index 00000000..e67a90e1
--- /dev/null
+++ b/noao/imred/hydra/demos/mkdonessie.cl
@@ -0,0 +1,36 @@
+# Create demo data if needed.
+
+artdata
+artdata.nxc = 5
+artdata.nyc = 5
+artdata.nxsub = 10
+artdata.nysub = 10
+artdata.nxgsub = 5
+artdata.nygsub = 5
+artdata.dynrange = 100000.
+artdata.psfrange = 10.
+artdata.ranbuf = 0
+
+mkfibers ("demoobj", type="object", fibers="demos$mkdonessie.dat",
+ title="Hydra artificial image", header="demos$header.dat",
+ ncols=100, nlines=256, wstart=5786., wend=7362., seed=1)
+mkfibers ("demoflat", type="flat", fibers="demos$mkdonessie.dat",
+ title="Hydra artificial image", header="demos$header.dat",
+ ncols=100, nlines=256, wstart=5786., wend=7362., seed=2)
+mkfibers ("demoarc1", type="ehenear", fibers="demos$mkdonessie.dat",
+ title="Hydra artificial image", header="demos$header.dat",
+ ncols=100, nlines=256, wstart=5786., wend=7362., seed=3)
+mkfibers ("demoarc2", type="ohenear", fibers="demos$mkdonessie.dat",
+ title="Hydra artificial image", header="demos$header.dat",
+ ncols=100, nlines=256, wstart=5786., wend=7362., seed=4)
+#mkfibers ("demoarc3", type="mercury", fibers="demos$mkdonessie.dat",
+# title="Hydra artificial image", header="demos$header.dat",
+# ncols=100, nlines=256, wstart=5786., wend=7362., seed=4)
+
+# Create the setup files.
+delete ("demoapid,demoarcrep", verify=no, >& "dev$null")
+list = "demos$mkdonessie.dat"
+while (fscan (list, i, j) != EOF)
+ print (i, j, >> "demoapid")
+list = ""
+print ("demoarc1 demoarc2 1x2", > "demoarcrep")
diff --git a/noao/imred/hydra/demos/mkdonessie.dat b/noao/imred/hydra/demos/mkdonessie.dat
new file mode 100644
index 00000000..1113aae6
--- /dev/null
+++ b/noao/imred/hydra/demos/mkdonessie.dat
@@ -0,0 +1,12 @@
+36 2 1.164292 gauss 2.7 0 91.093 0.002
+37 0 0.457727 gauss 2.7 0 84.824 0.002
+38 1 1.269284 gauss 2.7 0 78.719 0.002
+39 1 1.309297 gauss 2.7 0 72.536 0.002
+41 0 1.283618 gauss 2.7 0 60.218 0.002
+42 1 0.687173 gauss 2.7 0 53.963 0.002
+43 1 1.175850 gauss 2.7 0 48.0091 0.002
+44 0 0.757532 gauss 2.7 0 41.9606 0.002
+45 1 1.015546 gauss 2.7 0 29.5097 0.002
+46 1 0.372036 gauss 2.7 0 23.5889 0.002
+47 0 1.065080 gauss 2.7 0 17.4535 0.002
+48 2 0.939866 gauss 2.7 0 10.9762 0.002
diff --git a/noao/imred/hydra/demos/mklist.cl b/noao/imred/hydra/demos/mklist.cl
new file mode 100644
index 00000000..b36b3a3e
--- /dev/null
+++ b/noao/imred/hydra/demos/mklist.cl
@@ -0,0 +1,27 @@
+# MKLIST - Make a fiber list.
+
+int nfibers
+real width, sep, flux
+file temp
+
+#nfibers = 300
+#width = 2.0
+#sep = 4.9
+nfibers = j
+width = x
+sep = y
+
+temp = mktemp ("tmp")
+urand (nfibers, 1, ndigits=4, seed=1, scale_factor=0.5, > temp)
+list = temp
+
+for (i=1; i<=nfibers; i+=1) {
+ if (fscan (list, flux) == EOF)
+ break
+ flux = 0.75 + flux
+ printf ("%d %d %5.3f gauss %4.1f 0 %6.1f .002\n", i, mod(i,2),
+ flux, width, sep*(i+1))
+}
+
+list = ""
+delete (temp, verify=no)
diff --git a/noao/imred/hydra/demos/xgbig.dat b/noao/imred/hydra/demos/xgbig.dat
new file mode 100644
index 00000000..074d8db5
--- /dev/null
+++ b/noao/imred/hydra/demos/xgbig.dat
@@ -0,0 +1,81 @@
+\O=NOAO/IRAF IRAFX valdes@puppis Mon 14:58:37 15-Nov-93
+\T=xgterm
+\G=xgterm
+epar\shydra\n
+\r
+\r
+\r
+\r
+\r
+y\r
+demologfile\r
+""\r
+^Z
+epar\sdohydra\n
+demoobj\r
+demoflat\r
+demoflat\r
+\r
+demoarc\r
+\r
+\r
+\r
+rdnoise\r
+gain\r
+\r
+300\r
+3\r
+4\r
+6\r
+demoapid\r
+6600\r
+6.1\r
+\r
+\r
+\r
+\r
+\r
+\r
+n\r
+\r
+n\r
+\r
+\r
+\r
+\r
+\r
+\r
+y\r
+^Z
+dohydra\sredo+\n
+\n
+\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+\r
+\r
+q/<-5\s\s\s\s/=(.\s=\r
+N\r
+j/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+f/<-5\s\s\s\s/=(.\s=\r
+l/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+n\n
+y\n
+f/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+N\n
+n\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+\n
+\n
+41\n
+#/<-5\s\s\s\s/=(.\s=\r 37\r
+#/<-5\s\s\s\s/=(.\s=\r 45\r
+q/<-5\s\s\s\s/=(.\s=\r
+imdelete\sdemoobj.ms\n
+dohydra\sdemoobj\sskyedit-\ssplot-\sbatch+\n
diff --git a/noao/imred/hydra/demos/xgdohydra.dat b/noao/imred/hydra/demos/xgdohydra.dat
new file mode 100644
index 00000000..be94c8b0
--- /dev/null
+++ b/noao/imred/hydra/demos/xgdohydra.dat
@@ -0,0 +1,93 @@
+\O=NOAO/IRAF V2.10EXPORT valdes@puppis Tue 14:30:46 09-Feb-93
+\T=xgterm
+\G=xgterm
+epar\shydra\n
+\r
+\r
+\r
+\r
+\r
+y\r
+demologfile\r
+demoplotfile\r
+^Z
+epar\sdohydra\n
+demoobj\r
+demoflat\r
+demoflat\r
+\r
+demoarc\r
+\r
+\r
+\r
+rdnoise\r
+gain\r
+\r
+12\r
+4\r
+5\r
+7\r
+demoflat\r
+6600\r
+6.1\r
+\r
+\r
+\r
+\r
+\r
+\r
+y\r
+\r
+n\r
+\r
+\r
+\r
+\r
+\r
+\r
+y\r
+^Z
+dohydra\sredo+\n
+\n
+\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+\r
+\r
+q/<-5\s\s\s\s/=(.\s=\r
+N\r
+\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+j/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+f/<-5\s\s\s\s/=(.\s=\r
+l/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+n\n
+y\n
+f/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+N\n
+n\n
+\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+\n
+\n
+41\n
+#/<-5\s\s\s\s/=(.\s=\r 37\r
+#/<-5\s\s\s\s/=(.\s=\r 45\r
+q/<-5\s\s\s\s/=(.\s=\r
+imdelete\sdemoobj.ms\n
+dohydra\sdemoobj\sskyedit-\ssplot-\sbatch+\n
diff --git a/noao/imred/hydra/demos/xgdohydra1.dat b/noao/imred/hydra/demos/xgdohydra1.dat
new file mode 100644
index 00000000..ce9cebb7
--- /dev/null
+++ b/noao/imred/hydra/demos/xgdohydra1.dat
@@ -0,0 +1,89 @@
+\O=NOAO/IRAF IRAFX valdes@puppis Mon 14:58:37 15-Nov-93
+\T=xgterm
+\G=xgterm
+epar\shydra\n
+\r
+\r
+\r
+\r
+\r
+y\r
+demologfile\r
+demoplotfile\r
+^Z
+epar\sdohydra\n
+demostd\r
+demoflat\r
+demoflat\r
+\r
+demoarc\r
+\r
+\r
+\r
+rdnoise\r
+gain\r
+\r
+12\r
+4\r
+5\r
+7\r
+demoapid2\r
+6600\r
+6.1\r
+\r
+\r
+\r
+1\r
+\r
+\r
+y\r
+\r
+n\r
+\r
+\r
+\r
+\r
+\r
+\r
+y\r
+^Z
+type\sdemoapid2\n
+dohydra\sredo+\n
+\n
+\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+\r
+\r
+q/<-5\s\s\s\s/=(.\s=\r
+N\r
+\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+j/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+f/<-5\s\s\s\s/=(.\s=\r
+l/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+n\n
+y\n
+f/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+N\n
+n\n
+\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
diff --git a/noao/imred/hydra/demos/xgdohydranl.dat b/noao/imred/hydra/demos/xgdohydranl.dat
new file mode 100644
index 00000000..9efdb764
--- /dev/null
+++ b/noao/imred/hydra/demos/xgdohydranl.dat
@@ -0,0 +1,91 @@
+\O=NOAO/IRAF IRAFX valdes@puppis Mon 14:58:37 15-Nov-93
+\T=xgterm
+\G=xgterm
+epar\shydra\n
+\r
+\r
+\r
+\r
+\r
+y\r
+demologfile\r
+demoplotfile\r
+^Z
+epar\sdohydra\n
+demoobj\r
+demoflat\r
+demoflat\r
+\r
+demoarc\r
+\r
+\r
+\r
+rdnoise\r
+gain\r
+\r
+12\r
+4\r
+5\r
+7\r
+demoapid1\r
+6600\r
+6.1\r
+\r
+\r
+\r
+\r
+\r
+\r
+y\r
+\r
+n\r
+\r
+\r
+\r
+\r
+\r
+\r
+y\r
+^Z
+type\sdemoapid1\n
+dohydra\sredo+\n
+\n
+\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+\r
+\r
+q/<-5\s\s\s\s/=(.\s=\r
+N\r
+\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+j/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+f/<-5\s\s\s\s/=(.\s=\r
+l/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+n\n
+y\n
+f/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+N\n
+\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+\n
+\n
+41\n
+#/<-5\s\s\s\s/=(.\s=\r 37\r
+#/<-5\s\s\s\s/=(.\s=\r 45\r
+q/<-5\s\s\s\s/=(.\s=\r
diff --git a/noao/imred/hydra/demos/xgdonessie.dat b/noao/imred/hydra/demos/xgdonessie.dat
new file mode 100644
index 00000000..49e57ff0
--- /dev/null
+++ b/noao/imred/hydra/demos/xgdonessie.dat
@@ -0,0 +1,94 @@
+\O=NOAO/IRAF IRAFX valdes@puppis Mon 14:58:37 15-Nov-93
+\T=xgterm
+\G=xgterm
+epar\shydra\n
+\r
+\r
+\r
+\r
+\r
+y\r
+demologfile\r
+demoplotfile\r
+^Z
+epar\sdohydra\n
+demoobj\r
+demoflat\r
+demoflat\r
+\r
+demoarc1\r
+\r
+demoarcrep\r
+\r
+rdnoise\r
+gain\r
+\r
+12\r
+4\r
+5\r
+7\r
+demoapid\r
+6600\r
+6.1\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+n\r
+\r
+\r
+\r
+\r
+\r
+\r
+y\r
+^Z
+type\sdemoapid,demoarcrep\n
+dohydra\sredo+\n
+\n
+\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+\r
+\r
+q/<-5\s\s\s\s/=(.\s=\r
+N\r
+\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+k/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+f/<-5\s\s\s\s/=(.\s=\r
+l/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+n\n
+y\n
+f/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+q/<-5\s\s\s\s/=(.\s=\r
+N\n
+n\n
+\n
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+q/<-5\s\s\s\s/=(.\s=\r
+q\r
+\n
+q/<-5\s\s\s\s/=(.\s=\r
+\n
+\n
+41\n
+#/<-5\s\s\s\s/=(.\s=\r 37\r
+#/<-5\s\s\s\s/=(.\s=\r 45\r
+q/<-5\s\s\s\s/=(.\s=\r
+imdelete\sdemoobj.ms\n
+dohydra\sdemoobj\sskyedit-\ssplot-\sbatch+\n
diff --git a/noao/imred/hydra/doc/dohydra.hlp b/noao/imred/hydra/doc/dohydra.hlp
new file mode 100644
index 00000000..7c762d3b
--- /dev/null
+++ b/noao/imred/hydra/doc/dohydra.hlp
@@ -0,0 +1,1588 @@
+.help dohydra Jul95 noao.imred.hydra
+.ih
+NAME
+dohydra -- Hydra and Nessie data reduction task
+.ih
+USAGE
+dohydra objects
+.ih
+SUMMARY
+The \fBdohydra\fR reduction task is specialized for scattered light
+subtraction, extraction, flat
+fielding, fiber throughput correction, wavelength calibration, and sky
+subtraction of \fIHydra\fR and \fINessie\fR fiber spectra. It is a
+command language script which collects and combines the functions and
+parameters of many general purpose tasks to provide a single complete data
+reduction path. The task provides a degree of guidance, automation, and
+record keeping necessary when dealing with the large amount of data
+generated by these multifiber instruments.
+.ih
+PARAMETERS
+.ls objects
+List of object spectra to be processed. Previously processed spectra are
+ignored unless the \fIredo\fR flag is set or the \fIupdate\fR flag is set and
+dependent calibration data has changed. Extracted spectra are ignored.
+.le
+.ls apref = ""
+Aperture reference spectrum. This spectrum is used to define the basic
+extraction apertures and is typically a flat field spectrum.
+.le
+.ls flat = "" (optional)
+Flat field spectrum. If specified the one dimensional flat field spectra
+are extracted and used to make flat field calibrations. If a separate
+throughput file or image is not specified the flat field is also used
+for computing a fiber throughput correction.
+.le
+.ls throughput = "" (optional)
+Throughput file or image. If an image is specified, typically a blank
+sky observation, the total flux through
+each fiber is used to correct for fiber throughput. If a file consisting
+of lines with the aperture number and relative throughput is specified
+then the fiber throughput will be corrected by those values. If neither
+is specified but a flat field image is given it is used to compute the
+throughput.
+.le
+.ls arcs1 = "" (at least one if dispersion correcting)
+List of primary arc spectra. These spectra are used to define the dispersion
+functions for each fiber apart from a possible zero point correction made
+with secondary shift spectra or arc calibration fibers in the object spectra.
+One fiber from the first spectrum is used to mark lines and set the dispersion
+function interactively and dispersion functions for all other fibers and
+arc spectra are derived from it.
+.le
+.ls arcs2 = "" (optional for Nessie)
+List of optional shift arc spectra. Features in these secondary observations
+are used to supply a wavelength zero point shift through the observing
+sequence. One type of observation is dome lamps containing characteristic
+emission lines.
+.le
+.ls arcreplace = "" (optional for Nessie)
+Special aperture replacement file. A characteristic of Nessie (though not
+Hydra) spectra is that it requires two exposures to illuminate all fibers
+with an arc calibration. The aperture replacement file assigns fibers from
+the second exposure to replace those in the first exposure. Only the first
+exposures are specified in the \fIarcs1\fR list. The file contains lines
+with the first exposure image name, the second exposure image name, and a
+list of apertures from the second exposure to be used instead of those in
+the first exposure.
+.le
+.ls arctable = "" (optional) (refspectra)
+Table defining arc spectra to be assigned to object
+spectra (see \fBrefspectra\fR). If not specified an assignment based
+on a header parameter, \fIparams.sort\fR, such as the observation time is made.
+.le
+
+.ls readnoise = "RDNOISE" (apsum)
+Read out noise in photons. This parameter defines the minimum noise
+sigma. It is defined in terms of photons (or electrons) and scales
+to the data values through the gain parameter. A image header keyword
+(case insensitive) may be specified to get the value from the image.
+.le
+.ls gain = "GAIN" (apsum)
+Detector gain or conversion factor between photons/electrons and
+data values. It is specified as the number of photons per data value.
+A image header keyword (case insensitive) may be specified to get the value
+from the image.
+.le
+.ls datamax = INDEF (apsum.saturation)
+The maximum data value which is not a cosmic ray.
+When cleaning cosmic rays and/or using variance weighted extraction
+very strong cosmic rays (pixel values much larger than the data) can
+cause these operations to behave poorly. If a value other than INDEF
+is specified then all data pixels in excess of this value will be
+excluded and the algorithms will yield improved results.
+This applies only to the object spectra and not the flat field or
+arc spectra. For more
+on this see the discussion of the saturation parameter in the
+\fBapextract\fR package.
+.le
+.ls fibers = 97 (apfind)
+Number of fibers. This number is used during the automatic definition of
+the apertures from the aperture reference spectrum. It is best if this
+reflects the actual number of fibers which may be found in the aperture
+reference image.
+The interactive
+review of the aperture assignments allows verification and adjustments
+to the automatic aperture definitions.
+.le
+.ls width = 12. (apedit)
+Approximate base full width of the fiber profiles. This parameter is used
+for the profile centering algorithm.
+.le
+.ls minsep = 8. (apfind)
+Minimum separation between fibers. Weaker spectra or noise within this
+distance of a stronger spectrum are rejected.
+.le
+.ls maxsep = 15. (apfind)
+Maximum separation between adjacent fibers. This parameter
+is used to identify missing fibers. If two adjacent spectra exceed this
+separation then it is assumed that a fiber is missing and the aperture
+identification assignments will be adjusted accordingly.
+.le
+.ls apidtable = "" (apfind)
+Aperture identification table. This may be either a text file or an
+image. A text file contains the fiber number, beam number defining object
+(1), sky (0), and arc (2) fibers, and a object title. An image contains
+the keywords SLFIBnnn with string value consisting of the fiber number,
+beam number, optional right ascension and declination, and an object
+title. For Nessie the user had to prepare the file for each plugboard, for
+Hydra at the 4meter the file was generated for the user, and for Hydra at
+the WIYN the image header contains the information. Unassigned and broken
+fibers (beam of -1) should be included in the identification information
+since they will automatically be excluded.
+.le
+.ls crval = INDEF, cdelt = INDEF (autoidentify)
+These parameters specify an approximate central wavelength and dispersion.
+They may be specified as numerical values, INDEF, or image header keyword
+names whose values are to be used.
+If both these parameters are INDEF then the automatic identification will
+not be done.
+.le
+.ls objaps = "", skyaps = "", arcaps = ""
+List of object, sky, and arc aperture numbers. These are used to
+identify arc apertures for wavelength calibration and object and sky
+apertures for sky subtraction. Note sky apertures may be identified as
+both object and sky if one wants to subtract the mean sky from the
+individual sky spectra. Typically the different spectrum types are
+identified by their beam numbers and the default, null string,
+lists select all apertures.
+.le
+.ls objbeams = "0,1", skybeams = "0", arcbeams = 2
+List of object, sky, and arc beam numbers. The convention is that sky
+fibers are given a beam number of 0, object fibers a beam number of 1, and
+arc fibers a beam number of 2. The beam numbers are typically set in the
+\fIapidtable\fR. Unassigned or broken fibers may be given a beam number of
+-1 in the aperture identification table since apertures with negative beam
+numbers are not extracted. Note it is valid to identify sky fibers as both
+object and sky.
+.le
+
+.ls scattered = no (apscatter)
+Smooth and subtracted scattered light from the object and flat field
+images. This operation consists of fitting independent smooth functions
+across the dispersion using data outside the fiber apertures and then
+smoothing the individual fits along the dispersion. The initial
+flat field, or if none is given the aperture reference image, are
+done interactively to allow setting the fitting parameters. All
+subsequent subtractions use the same fitting parameters.
+.le
+.ls fitflat = yes (flat1d)
+Fit the composite flat field spectrum by a smooth function and divide each
+flat field spectrum by this function? This operation removes the average
+spectral signature of the flat field lamp from the sensitivity correction to
+avoid modifying the object fluxes.
+.le
+.ls clean = yes (apsum)
+Detect and correct for bad pixels during extraction? This is the same
+as the clean option in the \fBapextract\fR package. If yes this also
+implies variance weighted extraction and requires reasonably good values
+for the readout noise and gain. In addition the datamax parameters
+can be useful.
+.le
+.ls dispcor = yes
+Dispersion correct spectra? Depending on the \fIparams.linearize\fR
+parameter this may either resample the spectra or insert a dispersion
+function in the image header.
+.le
+.ls savearcs = yes
+Save any simultaneous arc apertures? If no then the arc apertures will
+be deleted after use.
+.le
+.ls skyalign = no
+Align sky lines? If yes then for the first object spectrum you are asked
+to mark one or more sky lines to use for alignment. Then these lines will
+be found in all spectra and an average zeropoint shift computed and applied
+to the dispersion solution to align these lines. Note that this assumes
+the sky lines are seen in all fibers.
+.le
+.ls skysubtract = yes
+Subtract sky from the object spectra? If yes the sky spectra are combined
+and subtracted from the object spectra as defined by the object and sky
+aperture/beam parameters.
+.le
+.ls skyedit = yes
+Overplot all the sky spectra and allow contaminated sky spectra to be
+deleted?
+.le
+.ls saveskys = yes
+Save the combined sky spectrum? If no then the sky spectrum will be
+deleted after sky subtraction is completed.
+.le
+.ls splot = no
+Plot the final spectra with the task \fBsplot\fR?
+.le
+.ls redo = no
+Redo operations previously done? If no then previously processed spectra
+in the objects list will not be processed (unless they need to be updated).
+.le
+.ls update = yes
+Update processing of previously processed spectra if aperture, flat
+field, or dispersion reference definitions are changed?
+.le
+.ls batch = no
+Process spectra as a background or batch job provided there are no interactive
+options (\fIskyedit\fR and \fIsplot\fR) selected.
+.le
+.ls listonly = no
+List processing steps but don't process?
+.le
+
+.ls params = "" (pset)
+Name of parameter set containing additional processing parameters. The
+default is parameter set \fBparams\fR. The parameter set may be examined
+and modified in the usual ways (typically with "epar params" or ":e params"
+from the parameter editor). Note that using a different parameter file
+is not allowed. The parameters are described below.
+.le
+
+.ce
+-- PACKAGE PARAMETERS
+
+Package parameters are those which generally apply to all task in the
+package. This is also true of \fBdohydra\fR.
+.ls dispaxis = 2
+Default dispersion axis. The dispersion axis is 1 for dispersion
+running along image lines and 2 for dispersion running along image
+columns. If the image header parameter DISPAXIS is defined it has
+precedence over this parameter. The default value defers to the
+package parameter of the same name.
+.le
+.ls observatory = "observatory"
+Observatory at which the spectra were obtained if not specified in the
+image header by the keyword OBSERVAT. For Hydra data the image headers
+identify the observatory as "kpno" so this parameter is not used.
+For data from other observatories this parameter may be used
+as describe in \fBobservatory\fR.
+.le
+.ls interp = "poly5" (nearest|linear|poly3|poly5|spline3|sinc)
+Spectrum interpolation type used when spectra are resampled. The choices are:
+
+.nf
+ nearest - nearest neighbor
+ linear - linear
+ poly3 - 3rd order polynomial
+ poly5 - 5th order polynomial
+ spline3 - cubic spline
+ sinc - sinc function
+.fi
+.le
+.ls database = "database"
+Database (directory) used for storing aperture and dispersion information.
+.le
+.ls verbose = no
+Print verbose information available with various tasks.
+.le
+.ls logfile = "logfile", plotfile = ""
+Text and plot log files. If a filename is not specified then no log is
+kept. The plot file contains IRAF graphics metacode which may be examined
+in various ways such as with \fBgkimosaic\fR.
+.le
+.ls records = ""
+Dummy parameter to be ignored.
+.le
+.ls version = "HYDRA: ..."
+Version of the package.
+.le
+
+.ce
+PARAMS PARAMETERS
+
+The following parameters are part of the \fBparams\fR parameter set and
+define various algorithm parameters for \fBdohydra\fR.
+
+.ce
+-- GENERAL PARAMETERS --
+.ls line = INDEF, nsum = 10
+The dispersion line (line or column perpendicular to the dispersion
+axis) and number of adjacent lines (half before and half after unless
+at the end of the image) used in finding, recentering, resizing,
+editing, and tracing operations. A line of INDEF selects the middle of the
+image along the dispersion axis.
+.le
+.ls order = "decreasing" (apfind)
+When assigning aperture identifications order the spectra "increasing"
+or "decreasing" with increasing pixel position (left-to-right or
+right-to-left in a cross-section plot of the image).
+.le
+.ls extras = no (apsum)
+Include extra information in the output spectra? When cleaning or using
+variance weighting the cleaned and weighted spectra are recorded in the
+first 2D plane of a 3D image, the raw, simple sum spectra are recorded in
+the second plane, and the estimated sigmas are recorded in the third plane.
+.le
+
+.ce
+-- DEFAULT APERTURE LIMITS --
+.ls lower = -5., upper = 5. (apdefault)
+Default lower and upper aperture limits relative to the aperture center.
+These limits are used when the apertures are first found and may be
+resized automatically or interactively.
+.le
+
+.ce
+-- AUTOMATIC APERTURE RESIZING PARAMETERS --
+.ls ylevel = 0.05 (apresize)
+Data level at which to set aperture limits during automatic resizing.
+It is a fraction of the peak relative to a local background.
+.le
+
+.ce
+-- TRACE PARAMETERS --
+.ls t_step = 10 (aptrace)
+Step along the dispersion axis between determination of the spectrum
+positions. Note the \fInsum\fR parameter is also used to enhance the
+signal-to-noise at each step.
+.le
+.ls t_function = "spline3", t_order = 3 (aptrace)
+Default trace fitting function and order. The fitting function types are
+"chebyshev" polynomial, "legendre" polynomial, "spline1" linear spline, and
+"spline3" cubic spline. The order refers to the number of
+terms in the polynomial functions or the number of spline pieces in the spline
+functions.
+.le
+.ls t_niterate = 1, t_low = 3., t_high = 3. (aptrace)
+Default number of rejection iterations and rejection sigma thresholds.
+.le
+
+.ce
+-- SCATTERED LIGHT PARAMETERS --
+.ls buffer = 1. (apscatter)
+Buffer distance from the aperture edges to be excluded in selecting the
+scattered light pixels to be used.
+.le
+.ls apscat1 = "" (apscatter)
+Fitting parameters across the dispersion. This references an additional
+set of parameters for the ICFIT package. The default is the "apscat1"
+parameter set.
+.le
+.ls apscat2 = "" (apscatter)
+Fitting parameters along the dispersion. This references an additional
+set of parameters for the ICFIT package. The default is the "apscat2"
+parameter set.
+.le
+
+.ce
+
+-- APERTURE EXTRACTION PARAMETERS --
+.ls weights = "none" (apsum)
+Type of extraction weighting. Note that if the \fIclean\fR parameter is
+set then the weights used are "variance" regardless of the weights
+specified by this parameter. The choices are:
+.ls "none"
+The pixels are summed without weights except for partial pixels at the
+ends.
+.le
+.ls "variance"
+The extraction is weighted by the variance based on the data values
+and a poisson/ccd model using the \fIgain\fR and \fIreadnoise\fR
+parameters.
+.le
+.le
+.ls pfit = "fit1d" (apsum) (fit1d|fit2d)
+Profile fitting algorithm for cleaning and variance weighted extractions.
+The default is generally appropriate for Hydra/Nessie data but users
+may try the other algorithm. See \fBapprofiles\fR for further information.
+.le
+.ls lsigma = 3., usigma = 3. (apsum)
+Lower and upper rejection thresholds, given as a number of times the
+estimated sigma of a pixel, for cleaning.
+.le
+.ls nsubaps = 1 (apsum)
+During extraction it is possible to equally divide the apertures into
+this number of subapertures.
+.le
+
+.ce
+-- FLAT FIELD FUNCTION FITTING PARAMETERS --
+.ls f_interactive = yes (fit1d)
+Fit the composite one dimensional flat field spectrum interactively?
+This is used if \fIfitflat\fR is set and a two dimensional flat field
+spectrum is specified.
+.le
+.ls f_function = "spline3", f_order = 10 (fit1d)
+Function and order used to fit the composite one dimensional flat field
+spectrum. The functions are "legendre", "chebyshev", "spline1", and
+"spline3". The spline functions are linear and cubic splines with the
+order specifying the number of pieces.
+.le
+
+.ce
+-- ARC DISPERSION FUNCTION PARAMETERS --
+.ls threshold = 10. (autoidentify/identify/reidentify)
+In order for a feature center to be determined the range of pixel intensities
+around the feature must exceed this threshold.
+.le
+.ls coordlist = "linelists$idhenear.dat" (autoidentify/identify)
+Arc line list consisting of an ordered list of wavelengths.
+Some standard line lists are available in the directory "linelists$".
+.le
+.ls match = -3. (autoidentify/identify)
+The maximum difference for a match between the dispersion function prediction
+value and a wavelength in the coordinate list.
+.le
+.ls fwidth = 4. (autoidentify/identify)
+Approximate full base width (in pixels) of arc lines.
+.le
+.ls cradius = 10. (reidentify)
+Radius from previous position to reidentify arc line.
+.le
+.ls i_function = "spline3", i_order = 3 (autoidentify/identify)
+The default function and order to be fit to the arc wavelengths as a
+function of the pixel coordinate. The functions choices are "chebyshev",
+"legendre", "spline1", or "spline3".
+.le
+.ls i_niterate = 2, i_low = 3.0, i_high = 3.0 (autoidentify/identify)
+Number of rejection iterations and sigma thresholds for rejecting arc
+lines from the dispersion function fits.
+.le
+.ls refit = yes (reidentify)
+Refit the dispersion function? If yes and there is more than 1 line
+and a dispersion function was defined in the arc reference then a new
+dispersion function of the same type as in the reference image is fit
+using the new pixel positions. Otherwise only a zero point shift is
+determined for the revised fitted coordinates without changing the
+form of the dispersion function.
+.le
+.ls addfeatures = no (reidentify)
+Add new features from a line list during each reidentification?
+This option can be used to compensate for lost features from the
+reference solution. Care should be exercised that misidentified features
+are not introduced.
+.le
+
+.ce
+-- AUTOMATIC ARC ASSIGNMENT PARAMETERS --
+.ls select = "interp" (refspectra)
+Selection method for assigning wavelength calibration spectra.
+Note that an arc assignment table may be used to override the selection
+method and explicitly assign arc spectra to object spectra.
+The automatic selection methods are:
+.ls average
+Average two reference spectra without regard to any sort parameter.
+If only one reference spectrum is specified then it is assigned with a
+warning. If more than two reference spectra are specified then only the
+first two are used and a warning is given.
+This option is used to assign two reference spectra, with equal weights,
+independent of any sorting parameter.
+.le
+.ls following
+Select the nearest following spectrum in the reference list based on the
+sorting parameter. If there is no following spectrum use the nearest preceding
+spectrum.
+.le
+.ls interp
+Interpolate between the preceding and following spectra in the reference
+list based on the sorting parameter. If there is no preceding and following
+spectrum use the nearest spectrum. The interpolation is weighted by the
+relative distances of the sorting parameter.
+.le
+.ls match
+Match each input spectrum with the reference spectrum list in order.
+This overrides the reference aperture check.
+.le
+.ls nearest
+Select the nearest spectrum in the reference list based on the sorting
+parameter.
+.le
+.ls preceding
+Select the nearest preceding spectrum in the reference list based on the
+sorting parameter. If there is no preceding spectrum use the nearest following
+spectrum.
+.le
+.le
+.ls sort = "jd", group = "ljd" (refspectra)
+Image header keywords to be used as the sorting parameter for selection
+based on order and to group spectra.
+A null string, "", or the word "none" may be use to disable the sorting
+or grouping parameters.
+The sorting parameter
+must be numeric but otherwise may be anything. The grouping parameter
+may be a string or number and must simply be the same for all spectra within
+the same group (say a single night).
+Common sorting parameters are times or positions.
+In \fBdohydra\fR the Julian date (JD) and the local Julian day number (LJD)
+at the middle of the exposure are automatically computed from the universal
+time at the beginning of the exposure and the exposure time. Also the
+parameter UTMIDDLE is computed.
+.le
+.ls time = no, timewrap = 17. (refspectra)
+Is the sorting parameter a 24 hour time? If so then the time origin
+for the sorting is specified by the timewrap parameter. This time
+should precede the first observation and follow the last observation
+in a 24 hour cycle.
+.le
+
+.ce
+-- DISPERSION CORRECTION PARAMETERS --
+.ls linearize = yes (dispcor)
+Interpolate the spectra to a linear dispersion sampling? If yes the
+spectra will be interpolated to a linear or log linear sampling
+If no the nonlinear dispersion function(s) from the dispersion function
+database are assigned to the input image world coordinate system
+and the spectral data are not interpolated.
+.le
+.ls log = no (dispcor)
+Use linear logarithmic wavelength coordinates? Linear logarithmic
+wavelength coordinates have wavelength intervals which are constant
+in the logarithm of the wavelength.
+.le
+.ls flux = yes (dispcor)
+Conserve the total flux during interpolation? If \fIno\fR the output
+spectrum is interpolated from the input spectrum at each output
+wavelength coordinate. If \fIyes\fR the input spectrum is integrated
+over the extent of each output pixel. This is slower than
+simple interpolation.
+.le
+
+.ce
+-- SKY SUBTRACTION PARAMETERS --
+.ls combine = "average" (scombine) (average|median)
+Option for combining sky pixels at the same dispersion coordinate after any
+rejection operation. The options are to compute the "average" or "median"
+of the pixels. The median uses the average of the two central
+values when the number of pixels is even.
+.le
+.ls reject = "none" (scombine) (none|minmax|avsigclip)
+Type of rejection operation performed on the pixels which overlap at each
+dispersion coordinate. The algorithms are discussed in the
+help for \fBscombine\fR. The rejection choices are:
+
+.nf
+ none - No rejection
+ minmax - Reject the low and high pixels
+ avsigclip - Reject pixels using an averaged sigma clipping algorithm
+.fi
+
+.le
+.ls scale = "none" (none|mode|median|mean)
+Multiplicative scaling to be applied to each spectrum. The choices are none
+or scale by the mode, median, or mean. This should not be necessary if the
+flat field and throughput corrections have been properly made.
+.le
+.ih
+ENVIRONMENT PARAMETERS
+The environment parameter \fIimtype\fR is used to determine the extension
+of the images to be processed and created. This allows use with any
+supported image extension. For STF images the extension has to be exact;
+for example "d1h".
+.ih
+DESCRIPTION
+The \fBdohydra\fR reduction task is specialized for the extraction, flat
+fielding, fiber throughput correction, wavelength calibration, and sky
+subtraction of \fIHydra\fR and \fINessie\fR fiber spectra. It is a
+command language script which collects and combines the functions and
+parameters of many general purpose tasks to provide a single, complete data
+reduction path. The task provides a degree of guidance, automation, and
+record keeping necessary when dealing with the large amount of data
+generated by these multifiber instruments.
+
+The general organization of the task is to do the interactive setup steps
+first using representative calibration data and then perform the majority
+of the reductions automatically, and possibly as a background process, with
+reference to the setup data. In addition, the task determines which setup
+and processing operations have been completed in previous executions of the
+task and, contingent on the \fIredo\fR and \fIupdate\fR options, skip or
+repeat some or all the steps.
+
+The following description is oriented specifically to Hydra data but
+applies equally well to Nessie data except for a few minor differences
+which are discussed in a separate section. Since \fBdohydra\fR combines many
+separate, general purpose tasks the description given here refers to these
+tasks and leaves some of the details to their help documentation.
+
+The description is divided into a quick usage outline followed by details
+of the parameters and algorithms. The usage outline is provided as a
+checklist and a refresher for those familiar with this task and the
+component tasks. It presents only the default or recommended usage for
+Hydra since there are many variations possible.
+
+\fBUsage Outline\fR
+
+.ls 6 [1]
+The images are first processed with \fBccdproc\fR for overscan,
+bias, and dark corrections.
+The \fBdofiber\fR task will abort if the image header keyword CCDRPOC,
+which is added by \fBccdproc\fR, is missing. If the data is processed outside
+of the IRAF \fBccdred\fR package then a dummy CCDPROC keyword should be
+added to the image headers; say with \fBhedit\fR.
+.le
+.ls [2]
+Set the \fBdohydra\fR parameters with \fBeparam\fR. Specify the object
+images to be processed, the flat field image as the aperture reference and
+the flat field, and one or more arc images. A throughput file or image,
+such as a blank sky observation, may also be specified. If there are many
+object or arc spectra per setup you might want to prepare "@ files".
+Specify the aperture identification table (a file for 4meter data or an image
+for WIYN data) which is provided for each Hydra
+configuration. You might wish to verify the geometry parameters,
+separations, dispersion direction, etc., which may
+change with different detector setups. The processing parameters are set
+for complete reductions but for quicklook you might not use the clean
+option or dispersion calibration and sky subtraction.
+
+The parameters are set for a particular Hydra configuration and different
+configurations may use different flat fields, arcs, and aperture
+identification tables.
+.le
+.ls [3]
+Run the task. This may be repeated multiple times with different
+observations and the task will generally only do the setup steps
+once and only process new images. Queries presented during the
+execution for various interactive operations may be answered with
+"yes", "no", "YES", or "NO". The lower case responses apply just
+to that query while the upper case responses apply to all further
+such queries during the execution and no further queries of that
+type will be made.
+.le
+.ls [4]
+The apertures are defined using the specified aperture reference image.
+The spectra are found automatically and apertures assigned based on
+task parameters and the aperture identification table. Unassigned
+fibers will have a negative beam number and will be ignored in subsequent
+processing. The resize option sets the aperture size to the widths of
+the profiles at a fixed fraction of the peak height. The interactive
+review of the apertures is recommended. If the identifications are off
+by a shift the 'o' key is used. To exit the aperture review type 'q'.
+.le
+.ls [5]
+The fiber positions at a series of points along the dispersion are measured
+and a function is fit to these positions. This may be done interactively to
+adjust the fitting parameters. Not all fibers need be examined and the "NO"
+response will quit the interactive fitting. To exit the interactive
+fitting type 'q'.
+.le
+.ls [6]
+If scattered light subtraction is to be done the flat field image is
+used to define the scattered light fitting parameters interactively.
+If one is not specified then the aperture reference image is used for
+this purpose.
+
+There are two queries for the interactive fitting. A graph of the
+data between the defined reference apertures separated by a specified
+buffer distance is first shown. The function order and type may be
+adjusted. After quiting with 'q' the user has the option of changing
+the buffer value and returning to the fitting, changing the image line
+or column to check if the fit parameters are satisfactory at other points,
+or to quit and accept the fit parameters. After fitting all points
+across the dispersion another graph showing the scattered light from
+the individual fits is shown and the smoothing parameters along the
+dispersion may be adjusted. Upon quiting with 'q' you have the option
+of checking other cuts parallel to the dispersion or quiting and finishing
+the scattered light function smoothing and subtraction.
+
+If there is a throughput image then this is corrected for scattered light
+noninteractively using the previous fitting parameters.
+.le
+.ls [7]
+If flat fielding is to be done the flat field spectra are extracted. The
+average spectrum over all fibers is determined and a function is fit
+interactively (exit with 'q'). This function is generally of sufficiently
+high order that the overall shape is well fit. This function is then used
+to normalize the individual flat field spectra. If a throughput image, a
+sky flat, is specified then the total sky counts through each fiber are
+used to correct the total flat field counts. Alternatively, a separately
+derived throughput file can be used for specifying throughput corrections.
+If neither type of throughput is used the flat field also provides the
+throughput correction. The final response spectra are normalized to a unit
+mean over all fibers. The relative average throughput for each fiber is
+recorded in the log and possibly printed to the terminal.
+.le
+.ls [8]
+If dispersion correction is selected the first arc in the arc list is
+extracted. The middle fiber is used to identify the arc lines and define
+the dispersion function using the task \fBautoidentify\fR. The
+\fIcrval\fR and \fIcdelt\fR parameters are used in the automatic
+identification. Whether or not the automatic identification is
+successful you will be shown the result of the arc line identification.
+If the automatic identification is not successful identify a few arc
+lines with 'm' and use the 'l' line list identification command to
+automatically add additional lines and fit the dispersion function. Check
+the quality of the dispersion function fit with 'f'. When satisfied exit
+with 'q'.
+.le
+.ls [9]
+The remaining fibers are automatically reidentified. You have the option
+to review the line identifications and dispersion function for each fiber
+and interactively add or delete arc lines and change fitting parameters.
+This can be done selectively, such as when the reported RMS increases
+significantly.
+.le
+.ls [10]
+If the spectra are to be resampled to a linear dispersion system
+(which will be the same for all spectra) default dispersion parameters
+are printed and you are allowed to adjust these as desired.
+.le
+.ls [11]
+If the sky line alignment option is selected and the sky lines have not
+been identified for a particular aperture identification table then you are
+asked to mark one or more sky lines. You may simply accept the wavelengths
+of these lines as defined by the dispersion solution for this spectrum and
+fiber or you may specify knowns wavelengths for the lines. These lines will
+be reidentified in all object spectra extracted and a mean zeropoint shift
+will be added to the dispersion solution. This has the effect of aligning
+these lines to optimize sky subtraction.
+.le
+.ls [12]
+The object spectra are now automatically scattered light subtracted,
+extracted, flat fielded, and dispersion corrected.
+.le
+.ls [13]
+When sky subtracting, the individual sky spectra may be reviewed and some
+spectra eliminated using the 'd' key. The last deleted spectrum may be
+recovered with the 'e' key. After exiting the review with 'q' you are
+asked for the combining option. The type of combining is dictated by the
+number of sky fibers.
+.le
+.ls [14]
+The option to examine the final spectra with \fBsplot\fR may be given.
+To exit type 'q'.
+.le
+.ls [15]
+If scattered light is subtracted from the input data a copy of the
+original image is made by appending "noscat" to the image name.
+If the data are reprocessed with the \fIredo\fR flag the original
+image will be used again to allow modification of the scattered
+light parameters.
+
+The final spectra will have the same name as the original 2D images
+with a ".ms" extension added. The flat field and arc spectra will
+also have part of the aperture identification table name added to
+allow different configurations to use the same 2D flat field and arcs
+but with different aperture definitions. If using the sky alignment
+option an image "align" with the aperture identification table name
+applied will also be created.
+.le
+
+\fBSpectra and Data Files\fR
+
+The basic input consists of Hydra or Nessie object and
+calibration spectra stored as IRAF images.
+The type of image format is defined by the
+environment parameter \fIimtype\fR. Only images with that extension will
+be processed and created.
+The raw CCD images must
+be processed to remove overscan, bias, and dark count effects.
+This is generally done using the \fBccdred\fR package.
+The \fBdohydra\fR task will abort if the image header keyword CCDPROC,
+which is added by \fBccdproc\fR, is missing. If the data processed outside
+of the IRAF \fBccdred\fR package then a dummy CCDPROC keyword should be
+added to the image headers; say with \fBhedit\fR.
+Flat fielding is
+generally not done at this stage but as part of \fBdohydra\fR.
+If flat fielding is done as part of the basic CCD processing then
+a flattened flat field, blank sky observation, or throughput file
+should still be created for applying fiber throughput corrections.
+
+The task \fBdohydra\fR uses several types of calibration spectra. These
+are flat fields, blank sky flat fields, comparison lamp spectra, auxiliary
+mercury line (from the dome lights) or sky line spectra, and simultaneous
+arc spectra taken during the object observation. The flat field,
+throughput image or file, auxiliary emission line spectra, and simultaneous
+comparison fibers are optional. If a flat field is used then the sky flat
+or throughput file is optional assuming the flat field has the same fiber
+iillumination. It is legal to specify only a throughput image or file and
+leave the flat field blank in order to simply apply a throughput
+correction. Because only the total counts through each fiber are used from
+a throughput image, sky flat exposures need not be of high signal per
+pixel.
+
+There are three types of arc calibration methods. One is to take arc
+calibration exposures through all fibers periodically and apply the
+dispersion function derived from one or interpolated between pairs to the
+object fibers. This is the usual method with Hydra. Another method is to
+use only one or two all-fiber arcs to define the shape of the dispersion
+function and track zero point wavelength shifts with \fIsimultaneous arc\fR
+fibers taken during the object exposure. The simultaneous arcs may or may
+not be available at the instrument but \fBdohydra\fR can use this type of
+observation. The arc fibers are identified by their beam or aperture
+numbers. A related and mutually exclusive method is to use \fIauxiliary
+line spectra\fR such as lines in the dome lights or sky lines to monitor
+shifts relative to a few actual arc exposures. The main reason to do this
+is if taking arc exposures through all fibers is inconvenient as is the
+case with the manual Nessie plugboards.
+
+The assignment of arc or auxiliary line calibration exposures to object
+exposures is generally done by selecting the nearest in time and
+interpolating. There are other options possible which are described under
+the task \fBrefspectra\fR. The most general option is to define a table
+giving the object image name and the one or two arc spectra to be assigned
+to that object. That file is called an \fIarc assignment table\fR and it
+is one of the optional setup files which can used with \fBdohydra\fR.
+
+The first step in the processing is identifying the spectra in the images.
+The \fIaperture identification table\fR, which may be a text file or
+an image, contains information about the fiber
+assignments. This table is created for you when using Hydra but must be
+prepared by the user when using Nessie. A description of a file is
+given in the section concerning Nessie.
+
+The final reduced spectra are recorded in two or three dimensional IRAF
+images. The images have the same name as the original images with an added
+".ms" extension. Each line in the reduced image is a one dimensional
+spectrum with associated aperture, wavelength, and identification
+information. When the \fIextras\fR parameter is set the lines in the
+third dimension contain additional information (see
+\fBapsum\fR for further details). These spectral formats are accepted by the
+one dimensional spectroscopy tools such as the plotting tasks \fBsplot\fR
+and \fBspecplot\fR. The special task \fBscopy\fR may be used to extract
+specific apertures or to change format to individual one dimensional
+images.
+
+\fBPackage Parameters\fR
+
+The \fBhydra\fR package parameters set parameters affecting all the
+tasks in the package.
+The dispersion axis parameter defines the image axis along which the
+dispersion runs. This is used if the image header doesn't define the
+dispersion axis with the DISPAXIS keyword.
+The observatory parameter is only required
+for data taken with fiber instruments other than Hydra or Nessie.
+The spectrum interpolation type might be changed to "sinc" but
+with the cautions given in \fBonedspec.package\fR.
+The other parameters define the standard I/O functions.
+The verbose parameter selects whether to print everything which goes
+into the log file on the terminal. It is useful for monitoring
+what the \fBdohydra\fR task does. The log and plot files are useful for
+keeping a record of the processing. A log file is highly recommended.
+A plot file provides a record of apertures, traces, and extracted spectra
+but can become quite large.
+The plotfile is most conveniently viewed and printed with \fBgkimosaic\fR.
+
+\fBProcessing Parameters\fR
+
+The list of objects and arcs can be @ files if desired. The aperture
+reference spectrum is usually the same as the flat field spectrum though it
+could be any exposure with enough signal to accurately define the positions
+and trace the spectra. The first list of arcs are the standard Th-Ar or
+HeNeAr comparison arc spectra (they must all be of the same type). The
+second list of arcs are the auxiliary emission line exposures mentioned
+previously and in the Nessie section.
+
+The arc replacement file is described in the Nessie section and the arc
+assignment table was described in the data file section. Note that even if
+an arc assignment table is specified, \fIall arcs to be used must also
+appear in the arc lists\fR in order for the task to know the type of arc
+spectrum.
+
+The detector read out noise and gain are used for cleaning and variance
+(optimal) extraction. The default will determine the values from the image
+itself. The dispersion axis defines the wavelength direction of spectra in
+the image if not defined in the image header by the keyword DISPAXIS. The
+width and separation parameters define the dimensions (in pixels) of the
+spectra (fiber profile) across the dispersion. The width parameter
+primarily affects the centering. The maximum separation parameter is
+important if missing spectra from the aperture identification table are to
+be correctly skipped. The number of fibers can be left at the default
+(for Hydra) and the task will try to account for unassigned or missing fibers.
+
+The approximate central wavelength and dispersion are used for the
+automatic identification of the arc reference. They may be specified
+as image header keywords or values. The INDEF values search the
+entire range of the coordinate reference file but the automatic
+line identification algorithm works much better and faster if
+approximate values are given.
+
+The task needs to know which fibers are object, sky if sky subtraction is
+to be done, and simultaneous arcs if used. One could explicitly give the
+aperture numbers but the recommended way, provided an aperture
+identification file or image is used, is to select the apertures based on
+the beam numbers. The default values are those appropriate for the
+identification files generated for Hydra configurations. Sky subtracted
+sky spectra are useful for evaluating the sky subtraction. Since only the
+spectra identified as objects are sky subtracted one can exclude fibers
+from the sky subtraction. For example, if the \fIobjbeams\fR parameter is
+set to 1 then only those fibers with a beam of 1 will be sky subtracted.
+All other fibers will remain in the extracted spectra but will not be sky
+subtracted.
+
+The next set of parameters select the processing steps and options. The
+scattered light option allows fitting and subtracting a scattered light
+surface from the input object and flat field. If there is significant
+scattered light which is not subtracted the fiber throughput correction
+will not be accurate. The
+flat fitting option allows fitting and removing the overall shape of the
+flat field spectra while preserving the pixel-to-pixel response
+corrections. This is useful for maintaining the approximate object count
+levels and not introducing the reciprocal of the flat field spectrum into
+the object spectra. The \fIclean\fR option invokes a profile fitting and
+deviant point rejection algorithm as well as a variance weighting of points
+in the aperture. These options require knowing the effective (i.e.
+accounting for any image combining) read out noise and gain. For a
+discussion of cleaning and variance weighted extraction see
+\fBapvariance\fR and \fBapprofiles\fR.
+
+The dispersion correction option selects whether to extract arc spectra,
+determine a dispersion function, assign them to the object spectra, and,
+possibly, resample the spectra to a linear (or log-linear) wavelength
+scale. If simultaneous arc fibers are defined there is an option to delete
+them from the final spectra when they are no longer needed.
+
+The sky alignment option allows applying a zeropoint dispersion shift
+to all fibers based on one or more sky lines. This requires all fibers
+to have the sky lines visible. When there are sky lines this will
+improve the sky subtraction if there is a systematic error in the
+fiber iillumination between the sky and the arc calibration.
+
+The sky subtraction option selects whether to combine the sky fiber spectra
+and subtract this sky from the object fiber spectra. \fIDispersion
+correction and sky subtraction are independent operations.\fR This means
+that if dispersion correction is not done then the sky subtraction will be
+done with respect to pixel coordinates. This might be desirable in some
+quick look cases though it is incorrect for final reductions.
+
+The sky subtraction option has two additional options. The individual sky
+spectra may be examined and contaminated spectra deleted interactively
+before combining. This can be a useful feature in crowded regions. The
+final combined sky spectrum may be saved for later inspection in an image
+with the spectrum name prefixed by \fBsky\fR.
+
+After a spectrum has been processed it is possible to examine the results
+interactively using the \fBsplot\fR tasks. This option has a query which
+may be turned off with "YES" or "NO" if there are multiple spectra to be
+processed.
+
+Generally once a spectrum has been processed it will not be reprocessed if
+specified as an input spectrum. However, changes to the underlying
+calibration data can cause such spectra to be reprocessed if the
+\fIupdate\fR flag is set. The changes which will cause an update are new
+aperture identification table, new reference image, new flat fields, and a
+new arc reference. If all input spectra are to be processed regardless of
+previous processing the \fIredo\fR flag may be used. Note that
+reprocessing clobbers the previously processed output spectra.
+
+The \fIbatch\fR processing option allows object spectra to be processed as
+a background or batch job. This will only occur if sky spectra editing and
+\fBsplot\fR review (interactive operations) are turned off, either when the
+task is run or by responding with "NO" to the queries during processing.
+
+The \fIlistonly\fR option prints a summary of the processing steps which
+will be performed on the input spectra without actually doing anything.
+This is useful for verifying which spectra will be affected if the input
+list contains previously processed spectra. The listing does not include
+any arc spectra which may be extracted to dispersion calibrate an object
+spectrum.
+
+The last parameter (excluding the task mode parameter) points to another
+parameter set for the algorithm parameters. The way \fBdohydra\fR works
+this may not have any value and the parameter set \fBparams\fR is always
+used. The algorithm parameters are discussed further in the next section.
+
+\fBAlgorithms and Algorithm Parameters\fR
+
+This section summarizes the various algorithms used by the \fBdohydra\fR
+task and the parameters which control and modify the algorithms. The
+algorithm parameters available to the user are collected in the parameter
+set \fBparams\fR. These parameters are taken from the various general
+purpose tasks used by the \fBdohydra\fR processing task. Additional
+information about these parameters and algorithms may be found in the help
+for the actual task executed. These tasks are identified in the parameter
+section listing in parenthesis. The aim of this parameter set organization
+is to collect all the algorithm parameters in one place separate from the
+processing parameters and include only those which are relevant for
+Hydra or Nessie data. The parameter values can be changed from the
+defaults by using the parameter editor,
+.nf
+
+ cl> epar params
+
+.fi
+or simple typing \fIparams\fR. The parameter editor can also be
+entered when editing the \fBdohydra\fR parameters by typing \fI:e
+params\fR or simply \fI:e\fR if positioned at the \fIparams\fR
+parameter.
+
+\fBExtraction\fR
+
+The identification of the spectra in the two dimensional images and their
+scattered light subtraction and extraction to one dimensional spectra
+in multispec format is accomplished
+using the tasks from the \fBapextract\fR package. The first parameters
+through \fInsubaps\fR control the extractions.
+
+The dispersion line is that used for finding the spectra, for plotting in
+the aperture editor, and as the starting point for tracing. The default
+value of \fBINDEF\fR selects the middle of the image. The aperture
+finding, adjusting, editing, and tracing operations also allow summing a
+number of dispersion lines to improve the signal. The number of lines is
+set by the \fInsum\fR parameter.
+
+The \fIorder\fR parameter defines whether the order of the aperture
+identifications in the aperture identification table (or the default
+sequential numbers if no file is used) is in the same sense as the image
+coordinates (increasing) or the opposite sense (decreasing). If the
+aperture identifications turn out to be opposite to what is desired when
+viewed in the aperture editing graph then simply change this parameter.
+
+The basic data output by the spectral extraction routines are the one
+dimensional spectra. Additional information may be output when the
+\fIextras\fR option is selected and the cleaning or variance weighting
+options are also selected. In this case a three dimensional image is
+produced with the first element of the third dimension being the cleaned
+and/or weighted spectra, the second element being the uncleaned and
+unweighted spectra, and the third element being an estimate of the sigma
+of each pixel in the extracted spectrum. Currently the sigma data is not
+used by any other tasks and is only for reference.
+
+The initial step of finding the fiber spectra in the aperture reference
+image consists of identifying the peaks in a cut across the dispersion,
+eliminating those which are closer to each other than the \fIminsep\fR
+distance, and then keeping the specified \fInfibers\fR highest peaks. The
+centers of the profiles are determined using the \fBcenter1d\fR algorithm
+which uses the \fIwidth\fR parameter.
+
+Apertures are then assigned to each spectrum. The initial edges of the
+aperture relative to the center are defined by the \fIlower\fR and
+\fIupper\fR parameters. The trickiest part of assigning the apertures is
+relating the aperture identification from the aperture identification table
+to automatically selected fiber profiles. The first aperture id in the
+file is assigned to the first spectrum found using the \fIorder\fR parameter to
+select the assignment direction. The numbering proceeds in this way except
+that if a gap greater than a multiple of the \fImaxsep\fR parameter is
+encountered then assignments in the file are skipped under the assumption
+that a fiber is missing (broken). In Hydra data it is expected that all
+fibers will be found in flat fields including the unassigned fibers and the
+assignment file will then identify the unassigned fibers. The unassigned
+fibers will later be excluded from extraction. For more on the finding and
+assignment algorithms see \fBapfind\fR.
+
+The initial apertures are the same for all spectra but they can each be
+automatically resized. The automatic resizing sets the aperture limits
+at a fraction of the peak relative to the interfiber minimum.
+The default \fIylevel\fR is to resize the apertures to 5% of the peak.
+See the description for the task \fBapresize\fR for further details.
+
+The user is given the opportunity to graphically review and adjust the
+aperture definitions. This is recommended. As mentioned previously, the
+correct identification of the fibers is tricky and it is fundamentally
+important that this be done correctly; otherwise the spectrum
+identifications will not be for the objects they say. An important command in
+this regard is the 'o' key which allows reordering the identifications
+based on the aperture identification table. This is required if the first
+fiber is actually missing since the initial assignment begins assigning the
+first spectrum found with the first entry in the aperture file. The
+aperture editor is a very powerful tool and is described in detail as
+\fBapedit\fR.
+
+The next set of parameters control the tracing and function fitting of the
+aperture reference positions along the dispersion direction. The position
+of a spectrum across the dispersion is determined by the centering
+algorithm (see \fBcenter1d\fR) at a series of evenly spaced steps, given by
+the parameter \fIt_step\fR, along the dispersion. The step size should be
+fine enough to follow position changes but it is not necessary to measure
+every point. The fitted points may jump around a little bit due to noise
+and cosmic rays even when summing a number of lines. Thus, a smooth
+function is fit. The function type, order, and iterative rejection of
+deviant points is controlled by the other trace parameters. For more
+discussion consult the help pages for \fBaptrace\fR and \fBicfit\fR. The
+default is to fit a cubic spline of three pieces with a single iteration of
+3 sigma rejection.
+
+The actual extraction of the spectra by summing across the aperture at each
+point along the dispersion is controlled by the next set of parameters.
+The default extraction simply sums the pixels using partial pixels at the
+ends. The options allow selection of a weighted sum based on a Poisson
+variance model using the \fIreadnoise\fR and \fIgain\fR detector
+parameters. Note that if the \fIclean\fR option is selected the variance
+weighted extraction is used regardless of the \fIweights\fR parameter. The
+sigma thresholds for cleaning are also set in the \fBparams\fR parameters.
+For more on the variance weighted extraction and cleaning see
+\fBapvariance\fR and \fBapprofiles\fR as well as \fBapsum\fR.
+
+The last parameter, \fInsubaps\fR, is used only in special cases when it is
+desired to subdivide the fiber profiles into subapertures prior to
+dispersion correction. After dispersion correction the subapertures are
+then added together. The purpose of this is to correct for wavelength
+shifts across a fiber.
+
+\fBScattered Light Subtraction\fR
+
+Scattered light may be subtracted from the input two dimensional image as
+the first step. This is done using the algorithm described in
+\fBapscatter\fR. This can be important if there is significant scattered
+light since the flat field/throughput correction will otherwise be
+incorrect. The algorithm consists of fitting a function to the data
+outside the defined apertures by a specified \fIbuffer\fR at each line or
+column across the dispersion. The function fitting parameters are the same
+at each line. Because the fitted functions are independent at each line or
+column a second set of one dimensional functions are fit parallel to the
+dispersion using the evaluated fit values from the cross-dispersion step.
+This produces a smooth scattered light surface which is finally subtracted
+from the input image. Again the function fitting parameters are the
+same at each line or column though they may be different than the parameters
+used to fit across the dispersion.
+
+The first time the task is run with a particular flat field (or aperture
+reference image if no flat field is used) the scattered light fitting
+parameters are set interactively using that image. The interactive step
+selects a particular line or column upon which the fitting is done
+interactively with the \fBicfit\fR commands. A query is first issued
+which allows skipping this interactive stage. Note that the interactive
+fitting is only for defining the fitting functions and orders. When
+the graphical \fBicfit\fR fitting is exited (with 'q') there is a second prompt
+allowing you to change the buffer distance (in the first cross-dispersion
+stage) from the apertures, change the line/column, or finally quit.
+
+The initial fitting parameters and the final set parameters are recorded
+in the \fBapscat1\fR and \fBapscat2\fR hidden parameter sets. These
+parameters are then used automatically for every subsequent image
+which is scattered light corrected.
+
+The scattered light subtraction modifies the input 2D images. To preserve
+the original data a copy of the original image is made with the same
+root name and the word "noscat" appended. The scattered light subtracted
+images will have the header keyword "APSCATTE" which is how the task
+avoids repeating the scattered light subtraction during any reprocessing.
+However if the \fIredo\fR option is selected the scattered light subtraction
+will also be redone by first restoring the "noscat" images to the original
+input names.
+
+\fBFlat Field and Fiber Throughput Corrections\fR
+
+Flat field corrections may be made during the basic CCD processing; i.e.
+direct division by the two dimensional flat field observation. In that
+case do not specify a flat field spectrum; use the null string "". The
+\fBdohydra\fR task provides an alternative flat field response correction
+based on division of the extracted object spectra by the extracted flat field
+spectra. A discussion of the theory and merits of flat fielding directly
+verses using the extracted spectra will not be made here. The
+\fBdohydra\fR flat fielding algorithm is the \fIrecommended\fR method for
+flat fielding since it works well and is not subject to the many problems
+involved in two dimensional flat fielding.
+
+In addition to correcting for pixel-to-pixel response the flat field step
+also corrects for differences in the fiber throughput. Thus, even if the
+pixel-to-pixel flat field corrections have been made in some other way it
+is desirable to use a sky or dome flat observation for determining a fiber
+throughput correction. Alternatively, a separately derived throughput
+file may be specified. This file consists of the aperture numbers
+(the same as used for the aperture reference) and relative throughput
+numbers.
+
+The first step is extraction of the flat field spectrum, if specified,
+using the reference apertures. Only one flat field is allowed so if
+multiple flat fields are required the data must be reduced in groups.
+After extraction one or more corrections are applied. If the \fIfitflat\fR
+option is selected (the default) the extracted flat field spectra are
+averaged together and a smooth function is fit. The default fitting
+function and order are given by the parameters \fIf_function\fR and
+\fIf_order\fR. If the parameter \fIf_interactive\fR is "yes" then the
+fitting is done interactively using the \fBfit1d\fR task which uses the
+\fBicfit\fR interactive fitting commands.
+
+The fitted function is divided into the individual flat field spectra to
+remove the basic shape of the spectrum while maintaining the relative
+individual pixel responses and any fiber to fiber differences. This step
+avoids introducing the flat field spectrum shape into the object spectra
+and closely preserves the object counts.
+
+If a throughput image is available (an observation of blank sky
+usually at twilight) it is extracted. If no flat field is used the average
+signal through each fiber is computed and this becomes the response
+normalization function. Note that a dome flat may be used in place of a
+sky in the sky flat field parameter for producing throughput only
+corrections. If a flat field is specified then each sky spectrum is
+divided by the appropriate flat field spectrum. The total counts through
+each fiber are multiplied into the flat field spectrum thus making the sky
+throughput of each fiber the same. This correction is important if the
+iillumination of the fibers differs between the flat field source and the
+sky. Since only the total counts are required the sky or dome flat field
+spectra need not be particularly strong though care must be taken to avoid
+objects.
+
+Instead of a sky flat or other throughput image a separately derived
+throughput file may be used. It may be used with or without a
+flat field.
+
+The final step is to normalize the flat field spectra by the mean counts of
+all the fibers. This normalization step is simply to preserve the average
+counts of the extracted object and arc spectra after division by the
+response spectra. The final relative throughput values are recorded in the
+log and possibly printed on the terminal.
+
+These flat field response steps and algorithm are available as a separate
+task called \fBmsresp1d\fR.
+
+\fBDispersion Correction\fR
+
+Dispersion corrections are applied to the extracted spectra if the
+\fBdispcor\fR parameter is set. This can be a complicated process which
+the \fBdohydra\fR task tries to simplify for you. There are three basic
+steps involved; determining the dispersion functions relating pixel
+position to wavelength, assigning the appropriate dispersion function to a
+particular observation, and resampling the spectra to evenly spaced pixels
+in wavelength.
+
+The comparison arc spectra are used to define dispersion functions for the
+fibers using the tasks \fBautoidentify\fR and \fBreidentify\fR. The
+interactive \fBautoidentify\fR task is only used on the central fiber of the
+first arc spectrum to define the basic reference dispersion solution from
+which all other fibers and arc spectra are automatically derived using
+\fBreidentify\fR. \fBAutoidentify\fR attempts to automatically identify
+the arc lines using the \fIcrval\fR and \fIcdelt\fR parameters. Whether
+or not it is successful the user is presented with the interactive
+identification graph. The automatic identifications can be reviewed and a
+new solution or corrections to the automatic solution may be performed.
+
+The set of arc dispersion function parameters are from \fBautoidentify\fR and
+\fBreidentify\fR. The parameters define a line list for use in
+automatically assigning wavelengths to arc lines, a parameter controlling
+the width of the centering window (which should match the base line
+widths), the dispersion function type and order, parameters to exclude bad
+lines from function fits, and parameters defining whether to refit the
+dispersion function, as opposed to simply determining a zero point shift,
+and the addition of new lines from the line list when reidentifying
+additional arc spectra. The defaults should generally be adequate and the
+dispersion function fitting parameters may be altered interactively. One
+should consult the help for the two tasks for additional details of these
+parameters and the operation of \fBautoidentify\fR.
+
+Generally, taking a number of comparison arc lamp exposures interspersed
+with the program spectra is sufficient to accurately dispersion calibrate
+Hydra spectra. However, there are some other calibration options
+which may be of interest. These options apply additional calibration data
+consisting either of auxiliary line spectra, such as from dome lights or
+night sky lines, or simultaneous arc lamp spectra taken through a few
+fibers during the object exposure. These options add complexity to the
+dispersion calibration process and were provided primarily for Nessie
+data. Therefore they are described later in the Nessie section.
+
+When only arc comparison lamp spectra are used, dispersion functions are
+determined independently for each fiber of each arc image and then assigned
+to the matching fibers in the program object observations. The assignment
+consists of selecting one or two arc images to calibrate each object
+image. When two bracketing arc spectra are used the dispersion functions
+are linearly interpolated (usually based on the time of the observations).
+
+The arc assignments may be done either explicitly with an arc assignment
+table (parameter \fIarctable\fR) or based on a header parameter. The task
+used is \fBrefspectra\fR and the user should consult this task if the
+default behavior is not what is desired. The default is to interpolate
+linearly between the nearest arcs based on the Julian date (corrected to
+the middle of the exposure). The Julian date and a local Julian day number
+(the day number at local noon) are computed automatically by the task
+\fBsetjd\fR and recorded in the image headers under the keywords JD and
+LJD. In addition the universal time at the middle of the exposure, keyword
+UTMIDDLE, is computed by the task \fBsetairmass\fR and this may also be used
+for ordering the arc and object observations.
+
+An optional step is to use sky lines in the spectra to compute a zeropoint
+dispersion shift that will align the sky lines. This may improve sky
+subtraction if the iillumination is not the same between the arc calibration
+and the sky. When selected the object spectrum is dispersion corrected
+using a non-linear dispersion function to avoid resampling the spectrum.
+The sky lines are then reidentified in wavelength space from a template
+list of sky lines. The mean shift in the lines for each fiber relative to
+the template in that fiber is computed to give the zeropoint shift. The
+database file is created when the first object is extracted. You are asked
+to mark the sky lines in one fiber and then the lines are automatically
+reidentified in all other fibers. Note that this technique requires the
+sky lines be found in all fibers.
+
+The last step of dispersion correction (resampling the spectrum to evenly
+spaced pixels in wavelength) is optional and relatively straightforward.
+If the \fIlinearize\fR parameter is no then the spectra are not resampled
+and the nonlinear dispersion information is recorded in the image header.
+Other IRAF tasks (the coordinate description is specific to IRAF) will use
+this information whenever wavelengths are needed. If linearizing is
+selected a linear dispersion relation, either linear in the wavelength or
+the log of the wavelength, is defined once and applied to every extracted
+spectrum. The resampling algorithm parameters allow selecting the
+interpolation function type, whether to conserve flux per pixel by
+integrating across the extent of the final pixel, and whether to linearize
+to equal linear or logarithmic intervals. The latter may be appropriate
+for radial velocity studies. The default is to use a fifth order
+polynomial for interpolation, to conserve flux, and to not use logarithmic
+wavelength bins. These parameters are described fully in the help for the
+task \fBdispcor\fR which performs the correction. The interpolation
+function options and the nonlinear dispersion coordinate system is
+described in the help topic \fBonedspec.package\fR.
+
+\fBSky Subtraction\fR
+
+Sky subtraction is selected with the \fIskysubtract\fR processing option.
+The sky spectra are selected by their aperture and beam numbers and
+combined into a single master sky spectrum
+which is then subtracted from each object spectrum. If the \fIskyedit\fR
+option is selected the sky spectra are plotted using the task
+\fBspecplot\fR. By default they are superposed to allow identifying
+spectra with unusually high signal due to object contamination. To
+eliminate a sky spectrum from consideration point at it with the cursor and
+type 'd'. The last deleted spectrum may be undeleted with 'e'. This
+allows recovery of incorrect or accidental deletions.
+
+The sky combining algorithm parameters define how the individual sky fiber
+spectra, after interactive editing, are combined before subtraction from
+the object fibers. The goals of combining are to reduce noise, eliminate
+cosmic-rays, and eliminate fibers with inadvertent objects. The common
+methods for doing this to use a median and/or a special sigma clipping
+algorithm (see \fBscombine\fR for details). The scale
+parameter determines whether the individual skys are first scaled to a
+common mode. The scaling should be used if the throughput is uncertain,
+but in that case you probably did the wrong thing in the throughput
+correction. If the sky subtraction is done interactively, i.e. with the
+\fIskyedit\fR option selected, then after selecting the spectra to be
+combined a query is made for the combining algorithm. This allows
+modifying the default algorithm based on the number of sky spectra
+selected since the "avsigclip" rejection algorithm requires at least
+three spectra.
+
+The combined sky spectrum is subtracted from only those spectra specified
+by the object aperture and beam numbers. Other spectra, such as comparison
+arc spectra, are retained unchanged. One may include the sky spectra as
+object spectra to produce residual sky spectra for analysis. The combined
+master sky spectra may be saved if the \fIsaveskys\fR parameter is set.
+The saved sky is given the name of the object spectrum with the prefix
+"sky".
+
+\fBNessie Data\fR
+
+Reducing Nessie data with \fBdohydra\fR is very similar. The differences
+are that additional setup and calibration are required since this
+instrument was a precursor to the more developed Hydra instrument.
+The discussion in this section also describes some features which may
+be applicable to other fiber instruments outside of the NOAO instruments.
+
+The Nessie comparison lamp exposures suffer from vignetting resulting in
+some fibers being poorly illuminated. By rearranging the fibers in the
+calibration plugboard and taking additional exposures one can obtain good
+arc spectra through all fibers. The task will merge the well exposed
+fibers from the multiple exposures into a single final extracted
+arc calibration image. One of the exposures of a set is selected as
+the primary exposure. This is the one specified in list of arcs,
+\fIarc1\fR. The other exposures of the set are referenced only in
+a a setup file, called an \fIarc replacement file\fR.
+
+The format of the arc replacement file is lines containing the primary
+arc image, a secondary arc image,
+and the apertures from the secondary arc to be merged into the
+final arc spectra. There can be more than one secondary
+exposure though it is unlikely. Figure 1 gives an example of this
+setup file.
+.nf
+
+ Figure 1: Example Arc Aperture Replacement File
+
+ cl> type arcreplace
+ nesjun042c nesjun049c 1,7,9,13,17,19,28,34
+
+.fi
+The primary arc exposure is "nesjun042c", the secondary arc is
+"nesjun049c", and the secondary apertures are 1, 7, etc. The syntax for
+the list of apertures also includes hyphen delimited ranges such as
+"8-10".
+
+With Hydra the aperture identification file (4meter) or image header
+keywords (WIYN) are produced for the user. With
+Nessie this is not the case, hence, the user must prepare a file
+manually. The aperture identification file is not mandatory, sequential
+numbering will be used, but it is highly recommended for keeping track of
+the objects assigned to the fibers. The aperture identification table
+contains lines consisting of an aperture number, a beam number, and an
+object identification. These must be in the same order as the fibers in
+the image. The aperture number may be any unique number but it is
+recommended that the fiber number be used. The beam number is used to flag
+object, sky, arc, or other types of spectra. The default beam numbers used
+by the task are 0 for sky, 1 for object, and 2 for arc. The object
+identifications are optional but it is good practice to include them so
+that the data will contain the object information independent of other
+records. Figure 2 shows an example for the \fIblue\fR fibers from a board
+called M33Sch2.
+.nf
+
+ Figure 2: Example Aperture Identification File
+
+ cl> type m33sch2
+ 1 1 143
+ 2 1 254
+ 3 0 sky
+ 4 1 121
+ 5 2 arc
+ .
+ .
+ .
+ 44 1 s92
+ 49 -1 Broken
+ 45 1 156
+ 46 2 arc
+ 47 0 sky
+ 48 1 phil2
+
+.fi
+Note the identification of the sky fibers with beam number 0, the object
+fibers with 1, and the arc fibers with 2. Also note that broken fiber 49
+is actually between fibers 44 and 45. The broken fiber entries, given beam
+number -1, are optional but recommended to give the automatic spectrum
+finding operation the best chance to make the correct identifications. The
+identification file will vary for each plugboard setup. Additional
+information about the aperture identification table may be found in the
+description of the task \fBapfind\fR.
+
+An alternative to using an aperture identification table is to give no
+name, the "" empty string, and to explicitly give a range of
+aperture numbers for the skys and possibly for the sky subtraction
+object list in the parameters \fIobjaps, skyaps, arcaps, objbeams,
+skybeams,\fR and \fIarcbeams\fR.
+
+Because taking comparison exposures with Nessie requires replugging the
+fibers, possibly in more than one configuration, and the good stability of
+the instrument, there are two mutually exclusive methods for monitoring
+shifts in the dispersion zero point from the basic arc lamp spectra other
+than taking many arc lamp exposures. One is to use some fibers to take a
+simultaneous arc spectrum while observing the program objects. The fibers
+are identified by aperture or beam numbers. The second method is to use
+\fIauxiliary line spectra\fR, such as mercury lines from the dome lights.
+These spectra are specified with an auxiliary shift arc list, \fIarc2\fR.
+
+When using auxiliary line spectra for monitoring zero point shifts one of
+these spectra is plotted interactively by \fBidentify\fR with the
+reference dispersion function from the reference arc spectrum. The user
+marks one or more lines which will be used to compute zero point wavelength
+shifts in the dispersion functions automatically. The actual wavelengths
+of the lines need not be known. In this case accept the wavelength based
+on the reference dispersion function. As other observations of the same
+features are made the changes in the positions of the features will be
+tracked as zero point wavelength changes such that wavelengths of the
+features remain constant.
+
+When using auxiliary line spectra the only arc lamp spectrum used is the
+initial arc reference spectrum (the first image in the \fIarcs1\fR list).
+The master dispersion functions are then shifted based on the spectra in
+the \fIarcs2\fR list (which must all be of the same type). The dispersion
+function assignments made by \fBrefspectra\fR using either the arc
+assignment file or based on header keywords is done in the same way as
+described for the arc lamp images except using the auxiliary spectra.
+
+If simultaneous arcs are used the arc lines are reidentified to determine a
+zero point shift relative to the comparison lamp spectra selected, by
+\fBrefspectra\fR, of the same fiber. A linear function of aperture
+position on the image across the dispersion verses the zero point shifts
+from the arc fibers is determined and applied to the dispersion functions
+from the assigned calibration arcs for the non-arc fibers. Note that if
+there are two comparison lamp spectra (before and after the object
+exposure) then there will be two shifts applied to two dispersion functions
+which are then combined using the weights based on the header parameters
+(usually the observation time).
+.ih
+EXAMPLES
+1. The following example uses artificial data and may be executed
+at the terminal (with IRAF V2.10). This is also the sequence performed
+by the test procedure "demos dohydra".
+
+.nf
+hy> demos mkhydra
+Creating image demoobj ...
+Creating image demoflat ...
+Creating image demoarc ...
+hy> type demoapid
+===> demoapid <===
+36 1
+37 0
+38 1
+39 1
+41 0
+42 1
+43 1
+44 0
+45 1
+46 -1
+47 0
+48 1
+hy> hydra.verbose = yes
+hy> dohydra demoobj apref=demoflat flat=demoflat arcs1=demoarc \
+>>> fib=12 apid=demoapid width=4. minsep=5. maxsep=7. clean- splot+
+Set reference apertures for demoflat
+Resize apertures for demoflat? (yes):
+Edit apertures for demoflat? (yes):
+<Exit with 'q'>
+Fit curve to aperture 36 of demoflat interactively (yes):
+<Exit with 'q'>
+Fit curve to aperture 37 of demoflat interactively (yes): N
+Create response function demoflatdemoad.ms
+Extract flat field demoflat
+Fit and ratio flat field demoflat
+<Exit with 'q'>
+Create the normalized response demoflatdemoad.ms
+demoflatdemoad.ms -> demoflatdemoad.ms using bzero: 0.
+ and bscale: 1.000001
+ mean: 1.000001 median: 1.052665 mode: 1.273547
+ upper: INDEF lower: INDEF
+Average fiber response:
+1. 1.151023
+2. 0.4519709
+3. 1.250614
+4. 1.287281
+5. 1.271358
+6. 0.6815334
+7. 1.164336
+8. 0.7499605
+9. 1.008654
+10. 1.053296
+11. 0.929967
+Extract arc reference image demoarc
+Determine dispersion solution for demoarc
+<A dispersion solution is found automatically.>
+<Type 'f' to look at fit. Type 'q' to exit fit.>
+<Exit with 'q'>
+
+REIDENTIFY: NOAO/IRAF V2.10BETA valdes@puppis Tue 16:01:07 11-Feb-92
+ Reference image = d....ms.imh, New image = d....ms, Refit = yes
+ Image Data Found Fit Pix Shift User Shift Z Shift RMS
+d....ms - Ap 41 16/20 16/16 0.00796 0.0682 8.09E-6 3.86
+Fit dispersion function interactively? (no|yes|NO|YES) (NO): y
+<Exit with 'q'>
+d....ms - Ap 41 16/20 16/16 0.00796 0.0682 8.09E-6 3.86
+d....ms - Ap 39 19/20 19/19 0.152 1.3 1.95E-4 3.89
+Fit dispersion function interactively? (no|yes|NO|YES) (yes): N
+d....ms - Ap 39 19/20 19/19 0.152 1.3 1.95E-4 3.89
+d....ms - Ap 38 18/20 18/18 0.082 0.697 9.66E-5 3.64
+d....ms - Ap 37 19/20 19/19 0.0632 0.553 1.09E-4 6.05
+d....ms - Ap 36 18/20 18/18 0.0112 0.0954 1.35E-5 4.12
+d....ms - Ap 43 17/20 17/17 0.0259 0.221 3.00E-5 3.69
+d....ms - Ap 44 19/20 19/19 0.168 1.44 2.22E-4 4.04
+d....ms - Ap 45 20/20 20/20 0.18 1.54 2.35E-4 3.95
+d....ms - Ap 47 18/20 18/18 -2.02E-4 0.00544 9.86E-6 4.4
+d....ms - Ap 48 16/20 16/16 0.00192 0.0183 1.44E-6 3.82
+
+Dispersion correct demoarc
+d....ms.imh: w1 = 5748.07..., w2 = 7924.62..., dw = 8.50..., nw = 257
+ Change wavelength coordinate assignments? (yes|no|NO): n
+Extract object spectrum demoobj
+Assign arc spectra for demoobj
+[demoobj] refspec1='demoarc'
+Dispersion correct demoobj
+demoobj.ms.imh: w1 = 5748.078, w2 = 7924.622, dw = 8.502127, nw = 257
+Sky subtract demoobj: skybeams=0
+Edit the sky spectra? (yes):
+<Exit with 'q'>
+Sky rejection option (none|minmax|avsigclip) (avsigclip):
+demoobj.ms.imh:
+Splot spectrum? (no|yes|NO|YES) (yes):
+Image line/aperture to plot (1:) (1):
+<Look at spectra and change apertures with # key>
+<Exit with 'q'>
+.fi
+.ih
+REVISIONS
+.ls DOHYDRA V2.11
+A sky alignment option was added.
+
+The aperture identification can now be taken from image header keywords.
+
+The initial arc line identifications is done with the automatic line
+identification algorithm.
+.le
+.ls DOHYDRA V2.10.3
+The usual output WCS format is "equispec". The image format type to be
+processed is selected with the \fIimtype\fR environment parameter. The
+dispersion axis parameter is now a package parameter. Images will only
+be processed if the have the CCDPROC keyword. A \fIdatamax\fR parameter
+has been added to help improve cosmic ray rejection. A scattered
+light subtraction processing option has been added.
+.le
+.ih
+SEE ALSO
+apedit, apfind, approfiles, aprecenter, apresize, apsum, aptrace, apvariance,
+ccdred, center1d, dispcor, fit1d, icfit, identify, msresp1d, observatory,
+onedspec.package, refspectra, reidentify, scombine, setairmass, setjd,
+specplot, splot
+.endhelp
diff --git a/noao/imred/hydra/doc/dohydra.ms b/noao/imred/hydra/doc/dohydra.ms
new file mode 100644
index 00000000..4b505ee3
--- /dev/null
+++ b/noao/imred/hydra/doc/dohydra.ms
@@ -0,0 +1,1853 @@
+.nr PS 9
+.nr VS 11
+.de V1
+.ft CW
+.nf
+..
+.de V2
+.fi
+.ft R
+..
+.de LS
+.br
+.in +2
+..
+.de LE
+.br
+.sp .5v
+.in -2
+..
+.ND July 1995
+.TL
+Guide to the HYDRA Reduction Task DOHYDRA
+.AU
+Francisco Valdes
+.AI
+IRAF Group - Central Computer Services
+.K2
+.DY
+
+.AB
+The \fBdohydra\fR reduction task is specialized for scattered light
+subtraction, extraction, flat
+fielding, fiber throughput correction, wavelength calibration, and sky
+subtraction of \fIHydra\fR and \fINessie\fR fiber spectra. It is a
+command language script which collects and combines the functions and
+parameters of many general purpose tasks to provide a single complete data
+reduction path. The task provides a degree of guidance, automation, and
+record keeping necessary when dealing with the large amount of data
+generated by these multifiber instruments. This guide describes what
+this task does, it's usage, and parameters.
+.AE
+.NH
+Introduction
+.LP
+The \fBdohydra\fR reduction task is specialized for scattered light
+subtraction, extraction, flat
+fielding, fiber throughput correction, wavelength calibration, and sky
+subtraction of \fIHydra\fR and \fINessie\fR fiber spectra. It is a
+command language script which collects and combines the functions and
+parameters of many general purpose tasks to provide a single, complete data
+reduction path. The task provides a degree of guidance, automation, and
+record keeping necessary when dealing with the large amount of data
+generated by these multifiber instruments.
+.LP
+The general organization of the task is to do the interactive setup steps
+first using representative calibration data and then perform the majority
+of the reductions automatically, and possibly as a background process, with
+reference to the setup data. In addition, the task determines which setup
+and processing operations have been completed in previous executions of the
+task and, contingent on the \f(CWredo\fR and \f(CWupdate\fR options, skip or
+repeat some or all the steps.
+.LP
+The following description is oriented specifically to Hydra data but
+applies equally well to Nessie data except for a few minor differences
+which are discussed in a separate section. Since \fBdohydra\fR combines many
+separate, general purpose tasks the description given here refers to these
+tasks and leaves some of the details to their help documentation.
+.LP
+The description is divided into a quick usage outline followed by details
+of the parameters and algorithms. The usage outline is provided as a
+checklist and a refresher for those familiar with this task and the
+component tasks. It presents only the default or recommended usage for
+Hydra since there are many variations possible.
+.NH
+Usage Outline
+.LP
+.IP [1] 6
+The images are first processed with \fBccdproc\fR for overscan,
+bias, and dark corrections.
+The \fBdohydra\fR task will abort if the image header keyword CCDPROC,
+which is added by \fBccdproc\fR, is missing. If the data processed outside
+of the IRAF \fBccdred\fR package then a dummy CCDPROC keyword should be
+added to the image headers; say with \fBhedit\fR.
+.IP [2]
+Set the \fBdohydra\fR parameters with \fBeparam\fR. Specify the object
+images to be processed, the flat field image as the aperture reference and
+the flat field, and one or more arc images. A throughput file or image,
+such as a blank sky observation, may also be specified. If there are many
+object or arc spectra per setup you might want to prepare "@ files".
+Specify the aperture identification table (a file for 4meter data or an
+image for WIYN data) which is provided for each Hydra
+configuration. You might wish to verify the geometry parameters,
+separations, dispersion direction, etc., which may
+change with different detector setups. The processing parameters are set
+for complete reductions but for quicklook you might not use the clean
+option or dispersion calibration and sky subtraction.
+.IP
+The parameters are set for a particular Hydra configuration and different
+configurations may use different flat fields, arcs, and aperture
+identification tables.
+.IP [3]
+Run the task. This may be repeated multiple times with different
+observations and the task will generally only do the setup steps
+once and only process new images. Queries presented during the
+execution for various interactive operations may be answered with
+"yes", "no", "YES", or "NO". The lower case responses apply just
+to that query while the upper case responses apply to all further
+such queries during the execution and no further queries of that
+type will be made.
+.IP [4]
+The apertures are defined using the specified aperture reference image.
+The spectra are found automatically and apertures assigned based on
+task parameters and the aperture identification table. Unassigned
+fibers will have a negative beam number and will be ignored in subsequent
+processing. The resize option sets the aperture size to the widths of
+the profiles at a fixed fraction of the peak height. The interactive
+review of the apertures is recommended. If the identifications are off
+by a shift the 'o' key is used. To exit the aperture review type 'q'.
+.IP [5]
+The fiber positions at a series of points along the dispersion are measured
+and a function is fit to these positions. This may be done interactively to
+adjust the fitting parameters. Not all fibers need be examined and the "NO"
+response will quit the interactive fitting. To exit the interactive
+fitting type 'q'.
+.IP [6]
+If scattered light subtraction is to be done the flat field image is
+used to define the scattered light fitting parameters interactively.
+If one is not specified then the aperture reference image is used for
+this purpose.
+
+There are two queries for the interactive fitting. A graph of the
+data between the defined reference apertures separated by a specified
+buffer distance is first shown. The function order and type may be
+adjusted. After quiting with 'q' the user has the option of changing
+the buffer value and returning to the fitting, changing the image line
+or column to check if the fit parameters are satisfactory at other points,
+or to quit and accept the fit parameters. After fitting all points
+across the dispersion another graph showing the scattered light from
+the individual fits is shown and the smoothing parameters along the
+dispersion may be adjusted. Upon quiting with 'q' you have the option
+of checking other cuts parallel to the dispersion or quiting and finishing
+the scattered light function smoothing and subtraction.
+
+If there is a throughput image then this is corrected for scattered light
+noninteractively using the previous fitting parameters.
+.IP [7]
+If flat fielding is to be done the flat field spectra are extracted. The
+average spectrum over all fibers is determined and a function is fit
+interactively (exit with 'q'). This function is generally of sufficiently
+high order that the overall shape is well fit. This function is then used
+to normalize the individual flat field spectra. If a throughput image, a
+sky flat, is specified then the total sky counts through each fiber are
+used to correct the total flat field counts. Alternatively, a separately
+derived throughput file can be used for specifying throughput corrections.
+If neither type of throughput is used the flat field also provides the
+throughput correction. The final response spectra are normalized to a unit
+mean over all fibers. The relative average throughput for each fiber is
+recorded in the log and possibly printed to the terminal.
+.IP [8]
+If dispersion correction is selected the first arc in the arc list is
+extracted. The middle fiber is used to identify the arc lines and define
+the dispersion function using the task \fBautoidentify\fR. The
+\fIcrval\fR and \fIcdelt\fR parameters are used in the automatic
+identification. Whether or not the automatic identification is
+successful you will be shown the result of the arc line identification.
+If the automatic identification is not successful identify a few arc
+lines with 'm' and use the 'l' line list identification command to
+automatically add additional lines and fit the dispersion function. Check
+the quality of the dispersion function fit with 'f'. When satisfied exit
+with 'q'.
+.IP [9]
+The remaining fibers are automatically reidentified. You have the option
+to review the line identifications and dispersion function for each fiber
+and interactively add or delete arc lines and change fitting parameters.
+This can be done selectively, such as when the reported RMS increases
+significantly.
+.IP [10]
+If the spectra are to be resampled to a linear dispersion system
+(which will be the same for all spectra) default dispersion parameters
+are printed and you are allowed to adjust these as desired.
+.IP [11]
+If the sky line alignment option is selected and the sky lines have not
+been identified for a particular aperture identification table then you are
+asked to mark one or more sky lines. You may simply accept the wavelengths
+of these lines as defined by the dispersion solution for this spectrum and
+fiber or you may specify knowns wavelengths for the lines. These lines will
+be reidentified in all object spectra extracted and a mean zeropoint shift
+will be added to the dispersion solution. This has the effect of aligning
+these lines to optimize sky subtraction.
+.IP [12]
+The object spectra are now automatically scatteredl ight subtracted,
+ extracted, flat fielded, and dispersion corrected.
+.IP [13]
+When sky subtracting, the individual sky spectra may be reviewed and some
+spectra eliminated using the 'd' key. The last deleted spectrum may be
+recovered with the 'e' key. After exiting the review with 'q' you are
+asked for the combining option. The type of combining is dictated by the
+number of sky fibers.
+.IP [14]
+The option to examine the final spectra with \fBsplot\fR may be given.
+To exit type 'q'.
+.IP [15]
+If scattered light is subtracted from the input data a copy of the
+original image is made by appending "noscat" to the image name.
+If the data are reprocessed with the \fIredo\fR flag the original
+image will be used again to allow modification of the scattered
+light parameters.
+
+The final spectra will have the same name as the original 2D images
+with a ".ms" extension added. The flat field and arc spectra will
+also have part of the aperture identification table name added to
+allow different configurations to use the same 2D flat field and arcs
+but with different aperture definitions. If using the sky alignment
+option an image "align" with the aperture identification table name
+applied will also be created.
+
+.NH
+Spectra and Data Files
+.LP
+The basic input consists of Hydra or Nessie object and
+calibration spectra stored as IRAF images.
+The type of image format is defined by the
+environment parameter \fIimtype\fR. Only images with that extension will
+be processed and created.
+The raw CCD images must
+be processed to remove overscan, bias, and dark count effects. This
+is generally done using the \fBccdred\fR package.
+The \fBdoargus\fR task will abort if the image header keyword CCDPROC,
+which is added by \fBccdproc\fR, is missing. If the data processed outside
+of the IRAF \fBccdred\fR package then a dummy CCDPROC keyword should be
+added to the image headers; say with \fBhedit\fR.
+Flat fielding is
+generally not done at this stage but as part of \fBdohydra\fR.
+If flat fielding is done as part of the basic CCD processing then
+a flattened flat field, blank sky observation, or throughput file
+should still be created for applying fiber throughput corrections.
+.LP
+The task \fBdohydra\fR uses several types of calibration spectra. These
+are flat fields, blank sky flat fields, comparison lamp spectra, auxiliary
+mercury line (from the dome lights) or sky line spectra, and simultaneous
+arc spectra taken during the object observation. The flat field,
+throughput image or file, auxiliary emission line spectra, and simultaneous
+comparison fibers are optional. If a flat field is used then the sky flat
+or throughput file is optional assuming the flat field has the same fiber
+illumination. It is legal to specify only a throughput image or file and
+leave the flat field blank in order to simply apply a throughput
+correction. Because only the total counts through each fiber are used from
+a throughput image, sky flat exposures need not be of high signal per
+pixel.
+.LP
+There are three types of arc calibration methods. One is to take arc
+calibration exposures through all fibers periodically and apply the
+dispersion function derived from one or interpolated between pairs to the
+object fibers. This is the usual method with Hydra. Another method is to
+use only one or two all-fiber arcs to define the shape of the dispersion
+function and track zero point wavelength shifts with \fIsimultaneous arc\fR
+fibers taken during the object exposure. The simultaneous arcs may or may
+not be available at the instrument but \fBdohydra\fR can use this type of
+observation. The arc fibers are identified by their beam or aperture
+numbers. A related and mutually exclusive method is to use \fIauxiliary
+line spectra\fR such as lines in the dome lights or sky lines to monitor
+shifts relative to a few actual arc exposures. The main reason to do this
+is if taking arc exposures through all fibers is inconvenient as is the
+case with the manual Nessie plugboards.
+.LP
+The assignment of arc or auxiliary line calibration exposures to object
+exposures is generally done by selecting the nearest in time and
+interpolating. There are other options possible which are described under
+the task \fBrefspectra\fR. The most general option is to define a table
+giving the object image name and the one or two arc spectra to be assigned
+to that object. That file is called an \fIarc assignment table\fR and it
+is one of the optional setup files which can used with \fBdohydra\fR.
+.LP
+The first step in the processing is identifying the spectra in the images.
+The \fIaperture identification table\fR (which may be a file or an image)
+contains information about the fiber assignments. This table is created
+for you when using Hydra but must be prepared by the user when using
+Nessie. A description of this table as a text file is given in the section
+concerning Nessie.
+.LP
+The final reduced spectra are recorded in two or three dimensional IRAF
+images. The images have the same name as the original images with an added
+".ms" extension. Each line in the reduced image is a one dimensional
+spectrum with associated aperture, wavelength, and identification
+information. When the \f(CWextras\fR parameter is set the lines in the
+third dimension contain additional information (see
+\fBapsum\fR for further details). These spectral formats are accepted by the
+one dimensional spectroscopy tools such as the plotting tasks \fBsplot\fR
+and \fBspecplot\fR. The special task \fBscopy\fR may be used to extract
+specific apertures or to change format to individual one dimensional
+images.
+.NH
+Package Parameters
+.LP
+The \fBhydra\fR package parameters, shown in Figure 1, set parameters
+affecting all the tasks in the package.
+.KS
+.V1
+
+.ce
+Figure 1: Package Parameter Set for HYDRA
+
+ I R A F
+ Image Reduction and Analysis Facility
+PACKAGE = imred
+ TASK = hydra
+
+(dispaxi= 2) Image axis for 2D images
+(observa= observatory) Observatory of data
+(interp = poly5) Interpolation type
+
+(databas= database) Database
+(verbose= no) Verbose output?
+(logfile= logfile) Log file
+(plotfil= ) Plot file
+
+(records= )
+(version= HYDRA V1: January 1992)
+
+.KE
+.V2
+The dispersion axis parameter defines the image axis along which the
+dispersion runs. This is used if the image header doesn't define the
+dispersion axis with the DISPAXIS keyword.
+The observatory parameter is only required
+for data taken with fiber instruments other than Hydra or Nessie.
+The spectrum interpolation type might be changed to "sinc" but
+with the cautions given in \fBonedspec.package\fR.
+The other parameters define the standard I/O functions.
+The verbose parameter selects whether to print everything which goes
+into the log file on the terminal. It is useful for monitoring
+what the \fBdohydra\fR task does. The log and plot files are useful for
+keeping a record of the processing. A log file is highly recommended.
+A plot file provides a record of apertures, traces, and extracted spectra
+but can become quite large.
+The plotfile is most conveniently viewed and printed with \fBgkimosaic\fR.
+.NH
+Processing Parameters
+.LP
+The \fBdohydra\fR parameters are shown in Figure 2.
+.KS
+.V1
+
+.ce
+Figure 2: Parameter Set for DOHYDRA
+
+ I R A F
+ Image Reduction and Analysis Facility
+PACKAGE = hydra
+ TASK = dohydra
+
+objects = List of object spectra
+(apref = ) Aperture reference spectrum
+(flat = ) Flat field spectrum
+(through= ) Throughput file or image (optional)
+(arcs1 = ) List of arc spectra
+(arcs2 = ) List of shift arc spectra
+(arcrepl= ) Special aperture replacements
+(arctabl= ) Arc assignment table (optional)
+
+.KE
+.V1
+(readnoi= RDNOISE) Read out noise sigma (photons)
+(gain = GAIN) Photon gain (photons/data number)
+(datamax= INDEF) Max data value / cosmic ray threshold
+(fibers = 97) Number of fibers
+(width = 12.) Width of profiles (pixels)
+(minsep = 8.) Minimum separation between fibers (pixels)
+(maxsep = 15.) Maximum separation between fibers (pixels)
+(apidtab= ) Aperture identifications
+(crval = INDEF) Approximate wavelength
+(cdelt = INDEF) Approximate dispersion
+(objaps = ) Object apertures
+(skyaps = ) Sky apertures
+(arcaps = ) Arc apertures
+(objbeam= 0,1) Object beam numbers
+(skybeam= 0) Sky beam numbers
+(arcbeam= ) Arc beam numbers
+
+(scatter= no) Subtract scattered light?
+(fitflat= yes) Fit and ratio flat field spectrum?
+(clean = yes) Detect and replace bad pixels?
+(dispcor= yes) Dispersion correct spectra?
+(savearc= yes) Save simultaneous arc apertures?
+(skysubt= yes) Subtract sky?
+(skyedit= yes) Edit the sky spectra?
+(savesky= yes) Save sky spectra?
+(splot = no) Plot the final spectrum?
+(redo = no) Redo operations if previously done?
+(update = yes) Update spectra if cal data changes?
+(batch = no) Extract objects in batch?
+(listonl= no) List steps but don't process?
+
+(params = ) Algorithm parameters
+
+.V2
+The list of objects and arcs can be @ files if desired. The aperture
+reference spectrum is usually the same as the flat field spectrum though it
+could be any exposure with enough signal to accurately define the positions
+and trace the spectra. The first list of arcs are the standard Th-Ar or
+HeNeAr comparison arc spectra (they must all be of the same type). The
+second list of arcs are the auxiliary emission line exposures mentioned
+previously and in the Nessie section.
+.LP
+The arc replacement file is described in the Nessie section and the arc
+assignment table was described in the data file section. Note that even if
+an arc assignment table is specified, \fIall arcs to be used must also
+appear in the arc lists\fR in order for the task to know the type of arc
+spectrum.
+.LP
+The detector read out noise and gain are used for cleaning and variance
+(optimal) extraction. The default will determine the values from the image
+itself.
+The variance
+weighting and cosmic-ray cleanning are sensitive to extremely strong
+cosmic-rays; ones which are hundreds of times brighter than the
+spectrum. The \fIdatamax\fR is used to set an upper limit for any
+real data. Any pixels above this value will be flagged as cosmic-rays
+and will not affect the extractions.
+The dispersion axis defines the wavelength direction of spectra in
+the image if not defined in the image header by the keyword DISPAXIS. The
+width and separation parameters define the dimensions (in pixels) of the
+spectra (fiber profile) across the dispersion. The width parameter
+primarily affects the centering. The maximum separation parameter is
+important if missing spectra from the aperture identification table are to
+be correctly skipped. The number of fibers can be left at the default
+(for Hydra) and the task will try to account for unassigned or missing fibers.
+.LP
+The approximate central wavelength and dispersion are used for the
+automatic identification of the arc reference. They may be specified
+as image header keywords or values. The INDEF values search the
+entire range of the coordinate reference file but the automatic
+line identification algorithm works much better and faster if
+approximate values are given.
+.LP
+The task needs to know which fibers are object, sky if sky subtraction is
+to be done, and simultaneous arcs if used. One could explicitly give the
+aperture numbers but the recommended way, provided an aperture
+identification table is used, is to select the apertures based on
+the beam numbers. The default values are those appropriate for the
+identification files generated for Hydra configurations. Sky subtracted
+sky spectra are useful for evaluating the sky subtraction. Since only the
+spectra identified as objects are sky subtracted one can exclude fibers
+from the sky subtraction. For example, if the \fIobjbeams\fR parameter is
+set to 1 then only those fibers with a beam of 1 will be sky subtracted.
+All other fibers will remain in the extracted spectra but will not be sky
+subtracted.
+.LP
+The next set of parameters select the processing steps and options. The
+scattered light option allows fitting and subtracting a scattered light
+surface from the input object and flat field. If there is significant
+scattered light which is not subtracted the fiber throughput correction
+will not be accurate. The
+flat fitting option allows fitting and removing the overall shape of the
+flat field spectra while preserving the pixel-to-pixel response
+corrections. This is useful for maintaining the approximate object count
+levels and not introducing the reciprocal of the flat field spectrum into
+the object spectra. The \f(CWclean\fR option invokes a profile fitting and
+deviant point rejection algorithm as well as a variance weighting of points
+in the aperture. These options require knowing the effective (i.e.
+accounting for any image combining) read out noise and gain. For a
+discussion of cleaning and variance weighted extraction see
+\fBapvariance\fR and \fBapprofiles\fR.
+.LP
+The dispersion correction option selects whether to extract arc spectra,
+determine a dispersion function, assign them to the object spectra, and,
+possibly, resample the spectra to a linear (or log-linear) wavelength
+scale. If simultaneous arc fibers are defined there is an option to delete
+them from the final spectra when they are no longer needed.
+.LP
+The sky alignment option allows applying a zeropoint dispersion shift
+to all fibers based on one or more sky lines. This requires all fibers
+to have the sky lines visible. When there are sky lines this will
+improve the sky subtraction if there is a systematic error in the
+fiber illumination between the sky and the arc calibration.
+.LP
+The sky subtraction option selects whether to combine the sky fiber spectra
+and subtract this sky from the object fiber spectra. \fIDispersion
+correction and sky subtraction are independent operations.\fR This means
+that if dispersion correction is not done then the sky subtraction will be
+done with respect to pixel coordinates. This might be desirable in some
+quick look cases though it is incorrect for final reductions.
+.LP
+The sky subtraction option has two additional options. The individual sky
+spectra may be examined and contaminated spectra deleted interactively
+before combining. This can be a useful feature in crowded regions. The
+final combined sky spectrum may be saved for later inspection in an image
+with the spectrum name prefixed by \fBsky\fR.
+.LP
+After a spectrum has been processed it is possible to examine the results
+interactively using the \fBsplot\fR tasks. This option has a query which
+may be turned off with "YES" or "NO" if there are multiple spectra to be
+processed.
+.LP
+Generally once a spectrum has been processed it will not be reprocessed if
+specified as an input spectrum. However, changes to the underlying
+calibration data can cause such spectra to be reprocessed if the
+\f(CWupdate\fR flag is set. The changes which will cause an update are a new
+aperture identification table, a new reference image, new flat fields, and a
+new arc reference. If all input spectra are to be processed regardless of
+previous processing the \f(CWredo\fR flag may be used. Note that
+reprocessing clobbers the previously processed output spectra.
+.LP
+The \f(CWbatch\fR processing option allows object spectra to be processed as
+a background or batch job. This will only occur if sky spectra editing and
+\fBsplot\fR review (interactive operations) are turned off, either when the
+task is run or by responding with "NO" to the queries during processing.
+.LP
+The \f(CWlistonly\fR option prints a summary of the processing steps which
+will be performed on the input spectra without actually doing anything.
+This is useful for verifying which spectra will be affected if the input
+list contains previously processed spectra. The listing does not include
+any arc spectra which may be extracted to dispersion calibrate an object
+spectrum.
+.LP
+The last parameter (excluding the task mode parameter) points to another
+parameter set for the algorithm parameters. The way \fBdohydra\fR works
+this may not have any value and the parameter set \fBparams\fR is always
+used. The algorithm parameters are discussed further in the next section.
+.NH
+Algorithms and Algorithm Parameters
+.LP
+This section summarizes the various algorithms used by the \fBdohydra\fR
+task and the parameters which control and modify the algorithms. The
+algorithm parameters available to the user are collected in the parameter
+set \fBparams\fR. These parameters are taken from the various general
+purpose tasks used by the \fBdohydra\fR processing task. Additional
+information about these parameters and algorithms may be found in the help
+for the actual task executed. These tasks are identified in the parameter
+section listing in parenthesis. The aim of this parameter set organization
+is to collect all the algorithm parameters in one place separate from the
+processing parameters and include only those which are relevant for
+Hydra or Nessie data. The parameter values can be changed from the
+defaults by using the parameter editor,
+.V1
+
+ cl> epar params
+
+.V2
+or simple typing \f(CWparams\fR. The parameter editor can also be
+entered when editing the \fBdohydra\fR parameters by typing \f(CW:e
+params\fR or simply \f(CW:e\fR if positioned at the \f(CWparams\fR
+parameter. Figure 3 shows the parameter set.
+.KS
+.V1
+
+.ce
+Figure 3: Algorithm Parameter Set
+
+ I R A F
+ Image Reduction and Analysis Facility
+PACKAGE = hydra
+ TASK = params
+
+(line = INDEF) Default dispersion line
+(nsum = 10) Number of dispersion lines to sum
+(order = decreasing) Order of apertures
+(extras = no) Extract sky, sigma, etc.?
+
+ -- DEFAULT APERTURE LIMITS --
+(lower = -5.) Lower aperture limit relative to center
+(upper = 5.) Upper aperture limit relative to center
+
+ -- AUTOMATIC APERTURE RESIZING PARAMETERS --
+(ylevel = 0.05) Fraction of peak or intensity for resizing
+
+.KE
+.KS
+.V1
+ -- TRACE PARAMETERS --
+(t_step = 10) Tracing step
+(t_funct= spline3) Trace fitting function
+(t_order= 3) Trace fitting function order
+(t_niter= 1) Trace rejection iterations
+(t_low = 3.) Trace lower rejection sigma
+(t_high = 3.) Trace upper rejection sigma
+
+.KE
+.KS
+.V1
+ -- SCATTERED LIGHT PARAMETERS --
+(buffer = 1.) Buffer distance from apertures
+(apscat1= ) Fitting parameters across the dispersion
+(apscat2= ) Fitting parameters along the dispersion
+
+.KE
+.KS
+.V1
+ -- APERTURE EXTRACTION PARAMETERS --
+(weights= none) Extraction weights (none|variance)
+(pfit = fit1d) Profile fitting algorithm (fit1d|fit2d)
+(lsigma = 3.) Lower rejection threshold
+(usigma = 3.) Upper rejection threshold
+(nsubaps= 1) Number of subapertures
+
+.KE
+.KS
+.V1
+ -- FLAT FIELD FUNCTION FITTING PARAMETERS --
+(f_inter= yes) Fit flat field interactively?
+(f_funct= spline3) Fitting function
+(f_order= 10) Fitting function order
+
+.KE
+.KS
+.V1
+ -- ARC DISPERSION FUNCTION PARAMETERS --
+(coordli=linelists$idhenear.dat) Line list
+(match = 10.) Line list matching limit in Angstroms
+(fwidth = 4.) Arc line widths in pixels
+(cradius= 10.) Centering radius in pixels
+(i_funct= spline3) Coordinate function
+(i_order= 3) Order of dispersion function
+(i_niter= 2) Rejection iterations
+(i_low = 3.) Lower rejection sigma
+(i_high = 3.) Upper rejection sigma
+(refit = yes) Refit coordinate function when reidentifying?
+(addfeat= no) Add features when reidentifying?
+
+.KE
+.KS
+.V1
+ -- AUTOMATIC ARC ASSIGNMENT PARAMETERS --
+(select = interp) Selection method for reference spectra
+(sort = jd) Sort key
+(group = ljd) Group key
+(time = no) Is sort key a time?
+(timewra= 17.) Time wrap point for time sorting
+
+.KE
+.KS
+.V1
+ -- DISPERSION CORRECTION PARAMETERS --
+(lineari= yes) Linearize (interpolate) spectra?
+(log = no) Logarithmic wavelength scale?
+(flux = yes) Conserve flux?
+
+.KE
+.KS
+.V1
+ -- SKY SUBTRACTION PARAMETERS --
+(combine= average) Type of combine operation
+(reject = avsigclip) Sky rejection option
+(scale = none) Sky scaling option
+
+.KE
+.V2
+.NH 2
+Extraction
+.LP
+The identification of the spectra in the two dimensional images and their
+scattered light subtraction and extraction to one dimensional spectra
+in multispec format is accomplished
+using the tasks from the \fBapextract\fR package. The first parameters
+through \f(CWnsubaps\fR control the extractions.
+.LP
+The dispersion line is that used for finding the spectra, for plotting in
+the aperture editor, and as the starting point for tracing. The default
+value of \fBINDEF\fR selects the middle of the image. The aperture
+finding, adjusting, editing, and tracing operations also allow summing a
+number of dispersion lines to improve the signal. The number of lines is
+set by the \f(CWnsum\fR parameter.
+.LP
+The \f(CWorder\fR parameter defines whether the order of the aperture
+identifications in the aperture identification table (or the default
+sequential numbers if no file is used) is in the same sense as the image
+coordinates (increasing) or the opposite sense (decreasing). If the
+aperture identifications turn out to be opposite to what is desired when
+viewed in the aperture editing graph then simply change this parameter.
+.LP
+The basic data output by the spectral extraction routines are the one
+dimensional spectra. Additional information may be output when the
+\f(CWextras\fR option is selected and the cleaning or variance weighting
+options are also selected. In this case a three dimensional image is
+produced with the first element of the third dimension being the cleaned
+and/or weighted spectra, the second element being the uncleaned and
+unweighted spectra, and the third element being an estimate of the sigma
+of each pixel in the extracted spectrum. Currently the sigma data is not
+used by any other tasks and is only for reference.
+.LP
+The initial step of finding the fiber spectra in the aperture reference
+image consists of identifying the peaks in a cut across the dispersion,
+eliminating those which are closer to each other than the \f(CWminsep\fR
+distance, and then keeping the specified \f(CWnfibers\fR highest peaks. The
+centers of the profiles are determined using the \fBcenter1d\fR algorithm
+which uses the \f(CWwidth\fR parameter.
+.LP
+Apertures are then assigned to each spectrum. The initial edges of the
+aperture relative to the center are defined by the \f(CWlower\fR and
+\f(CWupper\fR parameters. The trickiest part of assigning the apertures is
+relating the aperture identification from the aperture identification table
+to automatically selected fiber profiles. The first aperture id in the
+file is assigned to the first spectrum found using the \f(CWorder\fR
+parameter to select the assignment direction. The numbering proceeds in
+this way except that if a gap greater than a multiple of the \f(CWmaxsep\fR
+parameter is encountered then assignments in the file are skipped under the
+assumption that a fiber is missing (broken). In Hydra data it is expected
+that all fibers will be found in flat fields including the unassigned
+fibers and the assignment file will then identify the unassigned fibers.
+The unassigned fibers will later be excluded from extraction. For more on
+the finding and assignment algorithms see \fBapfind\fR.
+.LP
+The initial apertures are the same for all spectra but they can each be
+automatically resized. The automatic resizing sets the aperture limits
+at a fraction of the peak relative to the interfiber minimum.
+The default \fIylevel\fR is to resize the apertures to 5% of the peak.
+See the description for the task \fBapresize\fR for further details.
+.LP
+The user is given the opportunity to graphically review and adjust the
+aperture definitions. This is recommended. As mentioned previously, the
+correct identification of the fibers is tricky and it is fundamentally
+important that this be done correctly; otherwise the spectrum
+identifications will not be for the objects they say. An important command in
+this regard is the 'o' key which allows reordering the identifications
+based on the aperture identification table. This is required if the first
+fiber is actually missing since the initial assignment begins assigning the
+first spectrum found with the first entry in the aperture file. The
+aperture editor is a very powerful tool and is described in detail as
+\fBapedit\fR.
+.LP
+The next set of parameters control the tracing and function fitting of the
+aperture reference positions along the dispersion direction. The position
+of a spectrum across the dispersion is determined by the centering
+algorithm (see \fBcenter1d\fR) at a series of evenly spaced steps, given by
+the parameter \f(CWt_step\fR, along the dispersion. The step size should be
+fine enough to follow position changes but it is not necessary to measure
+every point. The fitted points may jump around a little bit due to noise
+and cosmic rays even when summing a number of lines. Thus, a smooth
+function is fit. The function type, order, and iterative rejection of
+deviant points is controlled by the other trace parameters. For more
+discussion consult the help pages for \fBaptrace\fR and \fBicfit\fR. The
+default is to fit a cubic spline of three pieces with a single iteration of
+3 sigma rejection.
+.LP
+The actual extraction of the spectra by summing across the aperture at each
+point along the dispersion is controlled by the next set of parameters.
+The default extraction simply sums the pixels using partial pixels at the
+ends. The options allow selection of a weighted sum based on a Poisson
+variance model using the \f(CWreadnoise\fR and \f(CWgain\fR detector
+parameters. Note that if the \f(CWclean\fR option is selected the variance
+weighted extraction is used regardless of the \f(CWweights\fR parameter. The
+sigma thresholds for cleaning are also set in the \fBparams\fR parameters.
+For more on the variance weighted extraction and cleaning see
+\fBapvariance\fR and \fBapprofiles\fR as well as \fBapsum\fR.
+.LP
+The last parameter, \f(CWnsubaps\fR, is used only in special cases when it is
+desired to subdivide the fiber profiles into subapertures prior to
+dispersion correction. After dispersion correction the subapertures are
+then added together. The purpose of this is to correct for wavelength
+shifts across a fiber.
+.NH 2
+Scattered Light Subtraction
+.LP
+Scattered light may be subtracted from the input two dimensional image as
+the first step. This is done using the algorithm described in
+\fBapscatter\fR. This can be important if there is significant scattered
+light since the flat field/throughput correction will otherwise be
+incorrect. The algorithm consists of fitting a function to the data
+outside the defined apertures by a specified \fIbuffer\fR at each line or
+column across the dispersion. The function fitting parameters are the same
+at each line. Because the fitted functions are independent at each line or
+column a second set of one dimensional functions are fit parallel to the
+dispersion using the evaluated fit values from the cross-dispersion step.
+This produces a smooth scattered light surface which is finally subtracted
+from the input image. Again the function fitting parameters are the
+same at each line or column though they may be different than the parameters
+used to fit across the dispersion.
+.LP
+The first time the task is run with a particular flat field (or aperture
+reference image if no flat field is used) the scattered light fitting
+parameters are set interactively using that image. The interactive step
+selects a particular line or column upon which the fitting is done
+interactively with the \fBicfit\fR commands. A query is first issued
+which allows skipping this interactive stage. Note that the interactive
+fitting is only for defining the fitting functions and orders. When
+the graphical \fBicfit\fR fitting is exited (with 'q') there is a second prompt
+allowing you to change the buffer distance (in the first cross-dispersion
+stage) from the apertures, change the line/column, or finally quit.
+.LP
+The initial fitting parameters and the final set parameters are recorded
+in the \fBapscat1\fR and \fBapscat2\fR hidden parameter sets. These
+parameters are then used automatically for every subsequent image
+which is scattered light corrected.
+.LP
+The scattered light subtraction modifies the input 2D images. To preserve
+the original data a copy of the original image is made with the same
+root name and the word "noscat" appended. The scattered light subtracted
+images will have the header keyword "APSCATTE" which is how the task
+avoids repeating the scattered light subtraction during any reprocessing.
+However if the \fIredo\fR option is selected the scattered light subtraction
+will also be redone by first restoring the "noscat" images to the original
+input names.
+.NH 2
+Flat Field and Fiber Throughput Corrections
+.LP
+Flat field corrections may be made during the basic CCD processing; i.e.
+direct division by the two dimensional flat field observation. In that
+case do not specify a flat field spectrum; use the null string "". The
+\fBdohydra\fR task provides an alternative flat field response correction
+based on division of the extracted object spectra by the extracted flat field
+spectra. A discussion of the theory and merits of flat fielding directly
+verses using the extracted spectra will not be made here. The
+\fBdohydra\fR flat fielding algorithm is the \fIrecommended\fR method for
+flat fielding since it works well and is not subject to the many problems
+involved in two dimensional flat fielding.
+.LP
+In addition to correcting for pixel-to-pixel response the flat field step
+also corrects for differences in the fiber throughput. Thus, even if the
+pixel-to-pixel flat field corrections have been made in some other way it
+is desirable to use a sky or dome flat observation for determining a fiber
+throughput correction. Alternatively, a separately derived throughput
+file may be specified. This file consists of the aperture numbers
+(the same as used for the aperture reference) and relative throughput
+numbers.
+.LP
+The first step is extraction of the flat field spectrum, if specified,
+using the reference apertures. Only one flat field is allowed so if
+multiple flat fields are required the data must be reduced in groups.
+After extraction one or more corrections are applied. If the \f(CWfitflat\fR
+option is selected (the default) the extracted flat field spectra are
+averaged together and a smooth function is fit. The default fitting
+function and order are given by the parameters \f(CWf_function\fR and
+\f(CWf_order\fR. If the parameter \f(CWf_interactive\fR is "yes" then the
+fitting is done interactively using the \fBfit1d\fR task which uses the
+\fBicfit\fR interactive fitting commands.
+.LP
+The fitted function is divided into the individual flat field spectra to
+remove the basic shape of the spectrum while maintaining the relative
+individual pixel responses and any fiber to fiber differences. This step
+avoids introducing the flat field spectrum shape into the object spectra
+and closely preserves the object counts.
+.LP
+If a throughput image is available (an observation of blank sky
+usually at twilight) it is extracted. If no flat field is used the average
+signal through each fiber is computed and this becomes the response
+normalization function. Note that a dome flat may be used in place of a
+sky in the sky flat field parameter for producing throughput only
+corrections. If a flat field is specified then each sky spectrum is
+divided by the appropriate flat field spectrum. The total counts through
+each fiber are multiplied into the flat field spectrum thus making the sky
+throughput of each fiber the same. This correction is important if the
+illumination of the fibers differs between the flat field source and the
+sky. Since only the total counts are required the sky or dome flat field
+spectra need not be particularly strong though care must be taken to avoid
+objects.
+.LP
+Instead of a sky flat or other throughput image a separately derived
+throughput file may be used. It may be used with or without a
+flat field.
+.LP
+The final step is to normalize the flat field spectra by the mean counts of
+all the fibers. This normalization step is simply to preserve the average
+counts of the extracted object and arc spectra after division by the
+response spectra. The final relative throughput values are recorded in the
+log and possibly printed on the terminal.
+.LP
+These flat field response steps and algorithm are available as a separate
+task called \fBmsresp1d\fR.
+.NH 2
+Dispersion Correction
+.LP
+Dispersion corrections are applied to the extracted spectra if the
+\fBdispcor\fR parameter is set. This can be a complicated process which
+the \fBdohydra\fR task tries to simplify for you. There are three basic
+steps involved; determining the dispersion functions relating pixel
+position to wavelength, assigning the appropriate dispersion function to a
+particular observation, and resampling the spectra to evenly spaced pixels
+in wavelength.
+.LP
+The comparison arc spectra are used to define dispersion functions for the
+fibers using the tasks \fBautoidentify\fR and \fBreidentify\fR. The
+interactive \fBautoidentify\fR task is only used on the central fiber of the
+first arc spectrum to define the basic reference dispersion solution from
+which all other fibers and arc spectra are automatically derived using
+\fBreidentify\fR. \fBAutoidentify\fR attempts to automatically identify
+the arc lines using the \fIcrval\fR and \fIcdelt\fR parameters. Whether
+or not it is successful the user is presented with the interactive
+identification graph. The automatic identifications can be reviewed and a
+new solution or corrections to the automatic solution may be performed.
+.LP
+The set of arc dispersion function parameters are from \fBautoidentify\fR and
+\fBreidentify\fR. The parameters define a line list for use in
+automatically assigning wavelengths to arc lines, a parameter controlling
+the width of the centering window (which should match the base line
+widths), the dispersion function type and order, parameters to exclude bad
+lines from function fits, and parameters defining whether to refit the
+dispersion function, as opposed to simply determining a zero point shift,
+and the addition of new lines from the line list when reidentifying
+additional arc spectra. The defaults should generally be adequate and the
+dispersion function fitting parameters may be altered interactively. One
+should consult the help for the two tasks for additional details of these
+parameters and the operation of \fBautoidentify\fR.
+.LP
+Generally, taking a number of comparison arc lamp exposures interspersed
+with the program spectra is sufficient to accurately dispersion calibrate
+Hydra spectra. However, there are some other calibration options
+which may be of interest. These options apply additional calibration data
+consisting either of auxiliary line spectra, such as from dome lights or
+night sky lines, or simultaneous arc lamp spectra taken through a few
+fibers during the object exposure. These options add complexity to the
+dispersion calibration process and were provided primarily for Nessie
+data. Therefore they are described later in the Nessie section.
+.LP
+When only arc comparison lamp spectra are used, dispersion functions are
+determined independently for each fiber of each arc image and then assigned
+to the matching fibers in the program object observations. The assignment
+consists of selecting one or two arc images to calibrate each object
+image. When two bracketing arc spectra are used the dispersion functions
+are linearly interpolated (usually based on the time of the observations).
+.LP
+The arc assignments may be done either explicitly with an arc assignment
+table (parameter \f(CWarctable\fR) or based on a header parameter. The task
+used is \fBrefspectra\fR and the user should consult this task if the
+default behavior is not what is desired. The default is to interpolate
+linearly between the nearest arcs based on the Julian date (corrected to
+the middle of the exposure). The Julian date and a local Julian day number
+(the day number at local noon) are computed automatically by the task
+\fBsetjd\fR and recorded in the image headers under the keywords JD and
+LJD. In addition the universal time at the middle of the exposure, keyword
+UTMIDDLE, is computed by the task \fBsetairmass\fR and this may also be used
+for ordering the arc and object observations.
+.LP
+An optional step is to use sky lines in the spectra to compute a zeropoint
+dispersion shift that will align the sky lines. This may improve sky
+subtraction if the illumination is not the same between the arc calibration
+and the sky. When selected the object spectrum is dispersion corrected
+using a non-linear dispersion function to avoid resampling the spectrum.
+The sky lines are then reidentified in wavelength space from a template
+list of sky lines. The mean shift in the lines for each fiber relative to
+the template in that fiber is computed to give the zeropoint shift. The
+database file is created when the first object is extracted. You are asked
+to mark the sky lines in one fiber and then the lines are automatically
+reidentified in all other fibers. Note that this technique requires the
+sky lines be found in all fibers.
+.LP
+The last step of dispersion correction (resampling the spectrum to evenly
+spaced pixels in wavelength) is optional and relatively straightforward.
+If the \f(CWlinearize\fR parameter is no then the spectra are not resampled
+and the nonlinear dispersion information is recorded in the image header.
+Other IRAF tasks (the coordinate description is specific to IRAF) will use
+this information whenever wavelengths are needed. If linearizing is
+selected a linear dispersion relation, either linear in the wavelength or
+the log of the wavelength, is defined once and applied to every extracted
+spectrum. The resampling algorithm parameters allow selecting the
+interpolation function type, whether to conserve flux per pixel by
+integrating across the extent of the final pixel, and whether to linearize
+to equal linear or logarithmic intervals. The latter may be appropriate
+for radial velocity studies. The default is to use a fifth order
+polynomial for interpolation, to conserve flux, and to not use logarithmic
+wavelength bins. These parameters are described fully in the help for the
+task \fBdispcor\fR which performs the correction. The interpolation
+function options and the nonlinear dispersion coordinate system is
+described in the help topic \fBonedspec.package\fR.
+.NH 2
+Sky Subtraction
+.LP
+Sky subtraction is selected with the \f(CWskysubtract\fR processing option.
+The sky spectra are selected by their aperture and beam numbers and
+combined into a single master sky spectrum
+which is then subtracted from each object spectrum. If the \f(CWskyedit\fR
+option is selected the sky spectra are plotted using the task
+\fBspecplot\fR. By default they are superposed to allow identifying
+spectra with unusually high signal due to object contamination. To
+eliminate a sky spectrum from consideration point at it with the cursor and
+type 'd'. The last deleted spectrum may be undeleted with 'e'. This
+allows recovery of incorrect or accidental deletions.
+.LP
+The sky combining algorithm parameters define how the individual sky fiber
+spectra, after interactive editing, are combined before subtraction from
+the object fibers. The goals of combining are to reduce noise, eliminate
+cosmic-rays, and eliminate fibers with inadvertent objects. The common
+methods for doing this to use a median and/or a special sigma clipping
+algorithm (see \fBscombine\fR for details). The scale
+parameter determines whether the individual skys are first scaled to a
+common mode. The scaling should be used if the throughput is uncertain,
+but in that case you probably did the wrong thing in the throughput
+correction. If the sky subtraction is done interactively, i.e. with the
+\f(CWskyedit\fR option selected, then after selecting the spectra to be
+combined a query is made for the combining algorithm. This allows
+modifying the default algorithm based on the number of sky spectra
+selected since the "avsigclip" rejection algorithm requires at least
+three spectra.
+.LP
+The combined sky spectrum is subtracted from only those spectra specified
+by the object aperture and beam numbers. Other spectra, such as comparison
+arc spectra, are retained unchanged. One may include the sky spectra as
+object spectra to produce residual sky spectra for analysis. The combined
+master sky spectra may be saved if the \f(CWsaveskys\fR parameter is set.
+The saved sky is given the name of the object spectrum with the prefix
+"sky".
+.NH
+Nessie Data
+.LP
+Reducing Nessie data with \fBdohydra\fR is very similar. The differences
+are that additional setup and calibration are required since this
+instrument was a precursor to the more developed Hydra instrument.
+The discussion in this section also describes some features which may
+be applicable to other fiber instruments outside of the NOAO instruments.
+.LP
+The Nessie comparison lamp exposures suffer from vignetting resulting in
+some fibers being poorly illuminated. By rearranging the fibers in the
+calibration plugboard and taking additional exposures one can obtain good
+arc spectra through all fibers. The task will merge the well exposed
+fibers from the multiple exposures into a single final extracted
+arc calibration image. One of the exposures of a set is selected as
+the primary exposure. This is the one specified in list of arcs,
+\f(CWarc1\fR. The other exposures of the set are referenced only in
+a a setup file, called an \fIarc replacement file\fR.
+.LP
+The format of the arc replacement file is lines containing the primary
+arc image, a secondary arc image,
+and the apertures from the secondary arc to be merged into the
+final arc spectra. There can be more than one secondary
+exposure though it is unlikely. Figure 4 gives an example of this
+setup file.
+
+.ce
+Figure 4: Example Arc Aperture Replacement File
+
+.V1
+ cl> type arcreplace
+ nesjun042c nesjun049c 1,7,9,13,17,19,28,34
+.V2
+
+.fi
+The primary arc exposure is \f(CWnesjun042c\fR, the secondary arc is
+\f(CWnesjun049c\fR, and the secondary apertures are 1, 7, etc. The syntax for
+the list of apertures also includes hyphen delimited ranges such as
+"8-10".
+.LP
+With Hydra the aperture identification table is produced for the user. With
+Nessie this is not the case, hence, the user must prepare a file
+manually. The aperture identification file is not mandatory, sequential
+numbering will be used, but it is highly recommended for keeping track of
+the objects assigned to the fibers. The aperture identification file
+contains lines consisting of an aperture number, a beam number, and an
+object identification. These must be in the same order as the fibers in
+the image. The aperture number may be any unique number but it is
+recommended that the fiber number be used. The beam number is used to flag
+object, sky, arc, or other types of spectra. The default beam numbers used
+by the task are 0 for sky, 1 for object, and 2 for arc. The object
+identifications are optional but it is good practice to include them so
+that the data will contain the object information independent of other
+records. Figure 5 shows an example for the \fIblue\fR fibers from a board
+called M33Sch2.
+
+.ce
+Figure 5: Example Aperture Identification File
+
+.V1
+ cl> type m33sch2
+ 1 1 143
+ 2 1 254
+ 3 0 sky
+ 4 1 121
+ 5 2 arc
+ .
+ .
+ .
+ 44 1 s92
+ 49 -1 Broken
+ 45 1 156
+ 46 2 arc
+ 47 0 sky
+ 48 1 phil2
+.V2
+
+Note the identification of the sky fibers with beam number 0, the object
+fibers with 1, and the arc fibers with 2. Also note that broken fiber 49
+is actually between fibers 44 and 45. The broken fiber entries, given beam
+number -1, are optional but recommended to give the automatic spectrum
+finding operation the best chance to make the correct identifications. The
+identification file will vary for each plugboard setup. Additional
+information about the aperture identification table may be found in the
+description of the task \fBapfind\fR.
+.LP
+An alternative to using an aperture identification table is to give no
+name, the "" empty string, and to explicitly give a range of
+aperture numbers for the skys and possibly for the sky subtraction
+object list in the parameters \f(CWobjaps, skyaps, arcaps, objbeams,
+skybeams,\fR and \f(CWarcbeams\fR.
+.LP
+Because taking comparison exposures with Nessie requires replugging the
+fibers, possibly in more than one configuration, and the good stability of
+the instrument, there are two mutually exclusive methods for monitoring
+shifts in the dispersion zero point from the basic arc lamp spectra other
+than taking many arc lamp exposures. One is to use some fibers to take a
+simultaneous arc spectrum while observing the program objects. The fibers
+are identified by aperture or beam numbers. The second method is to use
+\fIauxiliary line spectra\fR, such as mercury lines from the dome lights.
+These spectra are specified with an auxiliary shift arc list, \f(CWarc2\fR.
+.LP
+When using auxiliary line spectra for monitoring zero point shifts one of
+these spectra is plotted interactively by \fBidentify\fR with the
+reference dispersion function from the reference arc spectrum. The user
+marks one or more lines which will be used to compute zero point wavelength
+shifts in the dispersion functions automatically. The actual wavelengths
+of the lines need not be known. In this case accept the wavelength based
+on the reference dispersion function. As other observations of the same
+features are made the changes in the positions of the features will be
+tracked as zero point wavelength changes such that wavelengths of the
+features remain constant.
+.LP
+When using auxiliary line spectra the only arc lamp spectrum used is the
+initial arc reference spectrum (the first image in the \f(CWarcs1\fR list).
+The master dispersion functions are then shifted based on the spectra in
+the \f(CWarcs2\fR list (which must all be of the same type). The dispersion
+function assignments made by \fBrefspectra\fR using either the arc
+assignment file or based on header keywords is done in the same way as
+described for the arc lamp images except using the auxiliary spectra.
+.LP
+If simultaneous arcs are used the arc lines are reidentified to determine a
+zero point shift relative to the comparison lamp spectra selected, by
+\fBrefspectra\fR, of the same fiber. A linear function of aperture
+position on the image across the dispersion verses the zero point shifts
+from the arc fibers is determined and applied to the dispersion functions
+from the assigned calibration arcs for the non-arc fibers. Note that if
+there are two comparison lamp spectra (before and after the object
+exposure) then there will be two shifts applied to two dispersion functions
+which are then combined using the weights based on the header parameters
+(usually the observation time).
+.NH
+References
+.NH 2
+IRAF Introductory References
+.LP
+Work is underway on a new introductory guide to IRAF. Currently, the
+work below is the primary introduction.
+.IP
+P. Shames and D. Tody, \fIA User's Introduction to the IRAF Command
+Language\fR, Central Computer Services, NOAO, 1986.
+.NH 2
+CCD Reductions
+.IP
+F. Valdes, \fIThe IRAF CCD Reduction Package -- CCDRED\fR, Central
+Computer Services, NOAO, 1987.
+.IP
+F. Valdes, \fIUser's Guide to the CCDRED Package\fR, Central
+Computer Services, NOAO, 1988. Also on-line as \f(CWhelp ccdred.guide\fR.
+.IP
+P. Massey, \fIA User's Guide to CCD Reductions with IRAF\fR, Central
+Computer Services, NOAO, 1989.
+.NH 2
+Aperture Extraction Package
+.IP
+F. Valdes, \fIThe IRAF APEXTRACT Package\fR, Central Computer Services,
+NOAO, 1987 (out-of-date).
+.NH 2
+Task Help References
+.LP
+Each task in the \fBhydra\fR package and tasks used by \fBdohydra\fR have
+help pages describing the parameters and task in some detail. To get
+on-line help type
+.V1
+
+cl> help \fItaskname\fR
+
+.V2
+The output of this command can be piped to \fBlprint\fR to make a printed
+copy.
+
+.V1
+ apall - Extract 1D spectra (all parameters in one task)
+ apdefault - Set the default aperture parameters
+ apedit - Edit apertures interactively
+ apfind - Automatically find spectra and define apertures
+ aprecenter - Recenter apertures
+ apresize - Resize apertures
+ apscatter - Fit and subtract scattered light
+ apsum - Extract 1D spectra
+ aptrace - Trace positions of spectra
+
+ bplot - Batch plots of spectra
+ continuum - Fit the continuum in spectra
+ dispcor - Dispersion correct spectra
+ dopcor - Doppler correct spectra
+ identify - Identify features in spectrum for dispersion solution
+ msresp1d - Create 1D response spectra from flat field and sky spectra
+ refspectra - Assign wavelength reference spectra to other spectra
+ reidentify - Automatically identify features in spectra
+ sapertures - Set or change aperture header information
+ sarith - Spectrum arithmetic
+ scombine - Combine spectra having different wavelength ranges
+ scopy - Select and copy apertures in different spectral formats
+ setairmass - Compute effective airmass and middle UT for an exposure
+ setjd - Compute and set Julian dates in images
+ slist - List spectrum header parameters
+ specplot - Stack and plot multiple spectra
+ splot - Preliminary spectral plot/analysis
+
+ dohydra - Process HYDRA spectra
+ demos - Demonstrations and tests
+
+ Additional help topics
+
+ onedspec.package - Package parameters and general description of package
+ apextract.package - Package parameters and general description of package
+ approfiles - Profile determination algorithms
+ apvariance - Extractions, variance weighting, cleaning, and noise model
+ center1d - One dimensional centering algorithm
+ icfit - Interactive one dimensional curve fitting
+.V2
+.SH
+Appendix A: DOHYDRA Parameters
+.LP
+.nr PS 8
+.nr VS 10
+objects
+.LS
+List of object spectra to be processed. Previously processed spectra are
+ignored unless the \f(CWredo\fR flag is set or the \f(CWupdate\fR flag is set and
+dependent calibration data has changed. Extracted spectra are ignored.
+.LE
+apref = ""
+.LS
+Aperture reference spectrum. This spectrum is used to define the basic
+extraction apertures and is typically a flat field spectrum.
+.LE
+flat = "" (optional)
+.LS
+Flat field spectrum. If specified the one dimensional flat field spectra
+are extracted and used to make flat field calibrations. If a separate
+throughput file or image is not specified the flat field is also used
+for computing a fiber throughput correction.
+.LE
+throughput = "" (optional)
+.LS
+Throughput file or image. If an image is specified, typically a blank
+sky observation, the total flux through
+each fiber is used to correct for fiber throughput. If a file consisting
+of lines with the aperture number and relative throughput is specified
+then the fiber throughput will be corrected by those values. If neither
+is specified but a flat field image is given it is used to compute the
+throughput.
+.LE
+arcs1 = "" (at least one if dispersion correcting)
+.LS
+List of primary arc spectra. These spectra are used to define the dispersion
+functions for each fiber apart from a possible zero point correction made
+with secondary shift spectra or arc calibration fibers in the object spectra.
+One fiber from the first spectrum is used to mark lines and set the dispersion
+function interactively and dispersion functions for all other fibers and
+arc spectra are derived from it.
+.LE
+arcs2 = "" (optional for Nessie)
+.LS
+List of optional shift arc spectra. Features in these secondary observations
+are used to supply a wavelength zero point shift through the observing
+sequence. One type of observation is dome lamps containing characteristic
+emission lines.
+.LE
+arcreplace = "" (optional for Nessie)
+.LS
+Special aperture replacement file. A characteristic of Nessie (though not
+Hydra) spectra is that it requires two exposures to illuminate all fibers
+with an arc calibration. The aperture replacement file assigns fibers from
+the second exposure to replace those in the first exposure. Only the first
+exposures are specified in the \f(CWarcs1\fR list. The file contains lines
+with the first exposure image name, the second exposure image name, and a
+list of apertures from the second exposure to be used instead of those in
+the first exposure.
+.LE
+arctable = "" (optional) (refspectra)
+.LS
+Table defining arc spectra to be assigned to object
+spectra (see \fBrefspectra\fR). If not specified an assignment based
+on a header parameter, \f(CWparams.sort\fR, such as the observation time is made.
+.LE
+
+readnoise = "RDNOISE" (apsum)
+.LS
+Read out noise in photons. This parameter defines the minimum noise
+sigma. It is defined in terms of photons (or electrons) and scales
+to the data values through the gain parameter. A image header keyword
+(case insensitive) may be specified to get the value from the image.
+.LE
+gain = "GAIN" (apsum)
+.LS
+Detector gain or conversion factor between photons/electrons and
+data values. It is specified as the number of photons per data value.
+A image header keyword (case insensitive) may be specified to get the value
+from the image.
+.LE
+datamax = INDEF (apsum.saturation)
+.LS
+The maximum data value which is not a cosmic ray.
+When cleaning cosmic rays and/or using variance weighted extraction
+very strong cosmic rays (pixel values much larger than the data) can
+cause these operations to behave poorly. If a value other than INDEF
+is specified then all data pixels in excess of this value will be
+excluded and the algorithms will yield improved results.
+This applies only to the object spectra and not the flat field or
+arc spectra. For more
+on this see the discussion of the saturation parameter in the
+\fBapextract\fR package.
+.LE
+fibers = 97 (apfind)
+.LS
+Number of fibers. This number is used during the automatic definition of
+the apertures from the aperture reference spectrum. It is best if this
+reflects the actual number of fibers which may be found in the aperture
+reference image. The interactive
+review of the aperture assignments allows verification and adjustments
+to the automatic aperture definitions.
+.LE
+width = 12. (apedit)
+.LS
+Approximate base full width of the fiber profiles. This parameter is used
+for the profile centering algorithm.
+.LE
+minsep = 8. (apfind)
+.LS
+Minimum separation between fibers. Weaker spectra or noise within this
+distance of a stronger spectrum are rejected.
+.LE
+maxsep = 15. (apfind)
+.LS
+Maximum separation between adjacent fibers. This parameter
+is used to identify missing fibers. If two adjacent spectra exceed this
+separation then it is assumed that a fiber is missing and the aperture
+identification assignments will be adjusted accordingly.
+.LE
+apidtable = "" (apfind)
+.LS
+Aperture identification table. This may be either a text file or an
+image. A text file contains the fiber number, beam number defining object
+(1), sky (0), and arc (2) fibers, and a object title. An image contains
+the keywords SLFIBnnn with string value consisting of the fiber number,
+beam number, optional right ascension and declination, and an object
+title. For Nessie the user had to prepare the file for each plugboard, for
+Hydra at the 4meter the file was generated for the user, and for Hydra at
+the WIYN the image header contains the information. Unassigned and broken
+fibers (beam of -1) should be included in the identification information
+since they will automatically be excluded.
+.LE
+crval = INDEF, cdelt = INDEF (autoidentify)
+.LS
+These parameters specify an approximate central wavelength and dispersion.
+They may be specified as numerical values, INDEF, or image header keyword
+names whose values are to be used.
+If both these parameters are INDEF then the automatic identification will
+not be done.
+.LE
+objaps = "", skyaps = "", arcaps = ""
+.LS
+List of object, sky, and arc aperture numbers. These are used to
+identify arc apertures for wavelength calibration and object and sky
+apertures for sky subtraction. Note sky apertures may be identified as
+both object and sky if one wants to subtract the mean sky from the
+individual sky spectra. Typically the different spectrum types are
+identified by their beam numbers and the default, null string,
+lists select all apertures.
+.LE
+objbeams = "0,1", skybeams = "0", arcbeams = 2
+.LS
+List of object, sky, and arc beam numbers. The convention is that sky
+fibers are given a beam number of 0, object fibers a beam number of 1, and
+arc fibers a beam number of 2. The beam numbers are typically set in the
+\f(CWapidtable\fR. Unassigned or broken fibers may be given a beam number of
+-1 in the aperture identification table since apertures with negative beam
+numbers are not extracted. Note it is valid to identify sky fibers as both
+object and sky.
+.LE
+
+scattered = no (apscatter)
+.LS
+Smooth and subtracted scattered light from the object and flat field
+images. This operation consists of fitting independent smooth functions
+across the dispersion using data outside the fiber apertures and then
+smoothing the individual fits along the dispersion. The initial
+flat field, or if none is given the aperture reference image, are
+done interactively to allow setting the fitting parameters. All
+subsequent subtractions use the same fitting parameters.
+.LE
+fitflat = yes (flat1d)
+.LS
+Fit the composite flat field spectrum by a smooth function and divide each
+flat field spectrum by this function? This operation removes the average
+spectral signature of the flat field lamp from the sensitivity correction to
+avoid modifying the object fluxes.
+.LE
+clean = yes (apsum)
+.LS
+Detect and correct for bad pixels during extraction? This is the same
+as the clean option in the \fBapextract\fR package. If yes this also
+implies variance weighted extraction and requires reasonably good values
+for the readout noise and gain. In addition the datamax parameters
+can be useful.
+.LE
+dispcor = yes
+.LS
+Dispersion correct spectra? Depending on the \f(CWparams.linearize\fR
+parameter this may either resample the spectra or insert a dispersion
+function in the image header.
+.LE
+savearcs = yes
+.LS
+Save any simultaneous arc apertures? If no then the arc apertures will
+be deleted after use.
+.LE
+skyalign = no
+.LS
+Align sky lines? If yes then for the first object spectrum you are asked
+to mark one or more sky lines to use for alignment. Then these lines will
+be found in all spectra and an average zeropoint shift computed and applied
+to the dispersion solution to align these lines. Note that this assumes
+the sky lines are seen in all fibers.
+.LE
+skysubtract = yes
+.LS
+Subtract sky from the object spectra? If yes the sky spectra are combined
+and subtracted from the object spectra as defined by the object and sky
+aperture/beam parameters.
+.LE
+skyedit = yes
+.LS
+Overplot all the sky spectra and allow contaminated sky spectra to be
+deleted?
+.LE
+saveskys = yes
+.LS
+Save the combined sky spectrum? If no then the sky spectrum will be
+deleted after sky subtraction is completed.
+.LE
+splot = no
+.LS
+Plot the final spectra with the task \fBsplot\fR?
+.LE
+redo = no
+.LS
+Redo operations previously done? If no then previously processed spectra
+in the objects list will not be processed (unless they need to be updated).
+.LE
+update = yes
+.LS
+Update processing of previously processed spectra if aperture, flat
+field, or dispersion reference definitions are changed?
+.LE
+batch = no
+.LS
+Process spectra as a background or batch job provided there are no interactive
+options (\f(CWskyedit\fR and \f(CWsplot\fR) selected.
+.LE
+listonly = no
+.LS
+List processing steps but don't process?
+.LE
+
+params = "" (pset)
+.LS
+Name of parameter set containing additional processing parameters. The
+default is parameter set \fBparams\fR. The parameter set may be examined
+and modified in the usual ways (typically with "epar params" or ":e params"
+from the parameter editor). Note that using a different parameter file
+is not allowed. The parameters are described below.
+.LE
+
+.ce
+-- PACKAGE PARAMETERS
+
+Package parameters are those which generally apply to all task in the
+package. This is also true of \fBdohydra\fR.
+
+dispaxis = 2
+.LS
+Default dispersion axis. The dispersion axis is 1 for dispersion
+running along image lines and 2 for dispersion running along image
+columns. If the image header parameter DISPAXIS is defined it has
+precedence over this parameter. The default value defers to the
+package parameter of the same name.
+.LE
+observatory = "observatory"
+.LS
+Observatory at which the spectra were obtained if not specified in the
+image header by the keyword OBSERVAT. For Hydra data the image headers
+identify the observatory as "kpno" so this parameter is not used.
+For data from other observatories this parameter may be used
+as describe in \fBobservatory\fR.
+.LE
+interp = "poly5" (nearest|linear|poly3|poly5|spline3|sinc)
+.LS
+Spectrum interpolation type used when spectra are resampled. The choices are:
+
+.V1
+ nearest - nearest neighbor
+ linear - linear
+ poly3 - 3rd order polynomial
+ poly5 - 5th order polynomial
+ spline3 - cubic spline
+ sinc - sinc function
+.V2
+.LE
+database = "database"
+.LS
+Database (directory) used for storing aperture and dispersion information.
+.LE
+verbose = no
+.LS
+Print verbose information available with various tasks.
+.LE
+logfile = "logfile", plotfile = ""
+.LS
+Text and plot log files. If a filename is not specified then no log is
+kept. The plot file contains IRAF graphics metacode which may be examined
+in various ways such as with \fBgkimosaic\fR.
+.LE
+records = ""
+.LS
+Dummy parameter to be ignored.
+.LE
+version = "HYDRA: ..."
+.LS
+Version of the package.
+.LE
+
+.ce
+PARAMS PARAMETERS
+
+The following parameters are part of the \fBparams\fR parameter set and
+define various algorithm parameters for \fBdohydra\fR.
+
+.ce
+-- GENERAL PARAMETERS --
+
+line = INDEF, nsum = 10
+.LS
+The dispersion line (line or column perpendicular to the dispersion
+axis) and number of adjacent lines (half before and half after unless
+at the end of the image) used in finding, recentering, resizing,
+editing, and tracing operations. A line of INDEF selects the middle of the
+image along the dispersion axis.
+.LE
+order = "decreasing" (apfind)
+.LS
+When assigning aperture identifications order the spectra "increasing"
+or "decreasing" with increasing pixel position (left-to-right or
+right-to-left in a cross-section plot of the image).
+.LE
+extras = no (apsum)
+.LS
+Include extra information in the output spectra? When cleaning or using
+variance weighting the cleaned and weighted spectra are recorded in the
+first 2D plane of a 3D image, the raw, simple sum spectra are recorded in
+the second plane, and the estimated sigmas are recorded in the third plane.
+.LE
+
+.ce
+-- DEFAULT APERTURE LIMITS --
+
+lower = -5., upper = 5. (apdefault)
+.LS
+Default lower and upper aperture limits relative to the aperture center.
+These limits are used when the apertures are first found and may be
+resized automatically or interactively.
+.LE
+
+.ce
+-- AUTOMATIC APERTURE RESIZING PARAMETERS --
+
+ylevel = 0.05 (apresize)
+.LS
+Data level at which to set aperture limits during automatic resizing.
+It is a fraction of the peak relative to a local background.
+.LE
+
+.ce
+-- TRACE PARAMETERS --
+
+t_step = 10 (aptrace)
+.LS
+Step along the dispersion axis between determination of the spectrum
+positions. Note the \f(CWnsum\fR parameter is also used to enhance the
+signal-to-noise at each step.
+.LE
+t_function = "spline3", t_order = 3 (aptrace)
+.LS
+Default trace fitting function and order. The fitting function types are
+"chebyshev" polynomial, "legendre" polynomial, "spline1" linear spline, and
+"spline3" cubic spline. The order refers to the number of
+terms in the polynomial functions or the number of spline pieces in the spline
+functions.
+.LE
+t_niterate = 1, t_low = 3., t_high = 3. (aptrace)
+.LS
+Default number of rejection iterations and rejection sigma thresholds.
+.LE
+
+.ce
+-- SCATTERED LIGHT PARAMETERS --
+
+buffer = 1. (apscatter)
+.LS
+Buffer distance from the aperture edges to be excluded in selecting the
+scattered light pixels to be used.
+.LE
+apscat1 = "" (apscatter)
+.LS
+Fitting parameters across the dispersion. This references an additional
+set of parameters for the ICFIT package. The default is the "apscat1"
+parameter set.
+.LE
+apscat2 = "" (apscatter)
+.LS
+Fitting parameters along the dispersion. This references an additional
+set of parameters for the ICFIT package. The default is the "apscat2"
+parameter set.
+.LE
+
+.ce
+-- APERTURE EXTRACTION PARAMETERS --
+
+weights = "none" (apsum)
+.LS
+Type of extraction weighting. Note that if the \f(CWclean\fR parameter is
+set then the weights used are "variance" regardless of the weights
+specified by this parameter. The choices are:
+
+"none"
+.LS
+The pixels are summed without weights except for partial pixels at the
+ends.
+.LE
+"variance"
+.LS
+The extraction is weighted by the variance based on the data values
+and a poisson/ccd model using the \f(CWgain\fR and \f(CWreadnoise\fR
+parameters.
+.LE
+.LE
+pfit = "fit1d" (apsum) (fit1d|fit2d)
+.LS
+Profile fitting algorithm for cleaning and variance weighted extractions.
+The default is generally appropriate for Hydra/Nessie data but users
+may try the other algorithm. See \fBapprofiles\fR for further information.
+.LE
+lsigma = 3., usigma = 3. (apsum)
+.LS
+Lower and upper rejection thresholds, given as a number of times the
+estimated sigma of a pixel, for cleaning.
+.LE
+nsubaps = 1 (apsum)
+.LS
+During extraction it is possible to equally divide the apertures into
+this number of subapertures.
+.LE
+
+.ce
+-- FLAT FIELD FUNCTION FITTING PARAMETERS --
+
+f_interactive = yes (fit1d)
+.LS
+Fit the composite one dimensional flat field spectrum interactively?
+This is used if \f(CWfitflat\fR is set and a two dimensional flat field
+spectrum is specified.
+.LE
+f_function = "spline3", f_order = 10 (fit1d)
+.LS
+Function and order used to fit the composite one dimensional flat field
+spectrum. The functions are "legendre", "chebyshev", "spline1", and
+"spline3". The spline functions are linear and cubic splines with the
+order specifying the number of pieces.
+.LE
+
+.ce
+-- ARC DISPERSION FUNCTION PARAMETERS --
+
+threshold = 10. (autoidentify/identify/reidentify)
+.LS
+In order for a feature center to be determined the range of pixel intensities
+around the feature must exceed this threshold.
+.LE
+coordlist = "linelists$idhenear.dat" (autoidentify/identify)
+.LS
+Arc line list consisting of an ordered list of wavelengths.
+Some standard line lists are available in the directory "linelists$".
+.LE
+match = -3. (autoidentify/identify)
+.LS
+The maximum difference for a match between the dispersion function prediction
+value and a wavelength in the coordinate list.
+.LE
+fwidth = 4. (autoidentify/identify)
+.LS
+Approximate full base width (in pixels) of arc lines.
+.LE
+cradius = 10. (reidentify)
+.LS
+Radius from previous position to reidentify arc line.
+.LE
+i_function = "spline3", i_order = 3 (autoidentify/identify)
+.LS
+The default function and order to be fit to the arc wavelengths as a
+function of the pixel coordinate. The functions choices are "chebyshev",
+"legendre", "spline1", or "spline3".
+.LE
+i_niterate = 2, i_low = 3.0, i_high = 3.0 (autoidentify/identify)
+.LS
+Number of rejection iterations and sigma thresholds for rejecting arc
+lines from the dispersion function fits.
+.LE
+refit = yes (reidentify)
+.LS
+Refit the dispersion function? If yes and there is more than 1 line
+and a dispersion function was defined in the arc reference then a new
+dispersion function of the same type as in the reference image is fit
+using the new pixel positions. Otherwise only a zero point shift is
+determined for the revised fitted coordinates without changing the
+form of the dispersion function.
+.LE
+addfeatures = no (reidentify)
+.LS
+Add new features from a line list during each reidentification?
+This option can be used to compensate for lost features from the
+reference solution. Care should be exercised that misidentified features
+are not introduced.
+.LE
+
+.ce
+-- AUTOMATIC ARC ASSIGNMENT PARAMETERS --
+
+select = "interp" (refspectra)
+.LS
+Selection method for assigning wavelength calibration spectra.
+Note that an arc assignment table may be used to override the selection
+method and explicitly assign arc spectra to object spectra.
+The automatic selection methods are:
+
+average
+.LS
+Average two reference spectra without regard to any sort parameter.
+If only one reference spectrum is specified then it is assigned with a
+warning. If more than two reference spectra are specified then only the
+first two are used and a warning is given.
+This option is used to assign two reference spectra, with equal weights,
+independent of any sorting parameter.
+.LE
+following
+.LS
+Select the nearest following spectrum in the reference list based on the
+sorting parameter. If there is no following spectrum use the nearest preceding
+spectrum.
+.LE
+interp
+.LS
+Interpolate between the preceding and following spectra in the reference
+list based on the sorting parameter. If there is no preceding and following
+spectrum use the nearest spectrum. The interpolation is weighted by the
+relative distances of the sorting parameter.
+.LE
+match
+.LS
+Match each input spectrum with the reference spectrum list in order.
+This overrides the reference aperture check.
+.LE
+nearest
+.LS
+Select the nearest spectrum in the reference list based on the sorting
+parameter.
+.LE
+preceding
+.LS
+Select the nearest preceding spectrum in the reference list based on the
+sorting parameter. If there is no preceding spectrum use the nearest following
+spectrum.
+.LE
+.LE
+sort = "jd", group = "ljd" (refspectra)
+.LS
+Image header keywords to be used as the sorting parameter for selection
+based on order and to group spectra.
+A null string, "", or the word "none" may be use to disable the sorting
+or grouping parameters.
+The sorting parameter
+must be numeric but otherwise may be anything. The grouping parameter
+may be a string or number and must simply be the same for all spectra within
+the same group (say a single night).
+Common sorting parameters are times or positions.
+In \fBdohydra\fR the Julian date (JD) and the local Julian day number (LJD)
+at the middle of the exposure are automatically computed from the universal
+time at the beginning of the exposure and the exposure time. Also the
+parameter UTMIDDLE is computed.
+.LE
+time = no, timewrap = 17. (refspectra)
+.LS
+Is the sorting parameter a 24 hour time? If so then the time origin
+for the sorting is specified by the timewrap parameter. This time
+should precede the first observation and follow the last observation
+in a 24 hour cycle.
+.LE
+
+.ce
+-- DISPERSION CORRECTION PARAMETERS --
+
+linearize = yes (dispcor)
+.LS
+Interpolate the spectra to a linear dispersion sampling? If yes the
+spectra will be interpolated to a linear or log linear sampling
+If no the nonlinear dispersion function(s) from the dispersion function
+database are assigned to the input image world coordinate system
+and the spectral data are not interpolated.
+.LE
+log = no (dispcor)
+.LS
+Use linear logarithmic wavelength coordinates? Linear logarithmic
+wavelength coordinates have wavelength intervals which are constant
+in the logarithm of the wavelength.
+.LE
+flux = yes (dispcor)
+.LS
+Conserve the total flux during interpolation? If \f(CWno\fR the output
+spectrum is interpolated from the input spectrum at each output
+wavelength coordinate. If \f(CWyes\fR the input spectrum is integrated
+over the extent of each output pixel. This is slower than
+simple interpolation.
+.LE
+
+.ce
+-- SKY SUBTRACTION PARAMETERS --
+
+combine = "average" (scombine) (average|median)
+.LS
+Option for combining sky pixels at the same dispersion coordinate after any
+rejection operation. The options are to compute the "average" or "median"
+of the pixels. The median uses the average of the two central
+values when the number of pixels is even.
+.LE
+reject = "none" (scombine) (none|minmax|avsigclip)
+.LS
+Type of rejection operation performed on the pixels which overlap at each
+dispersion coordinate. The algorithms are discussed in the
+help for \fBscombine\fR. The rejection choices are:
+
+.V1
+ none - No rejection
+ minmax - Reject the low and high pixels
+ avsigclip - Reject pixels using an averaged sigma clipping algorithm
+.V2
+
+.LE
+scale = "none" (none|mode|median|mean)
+.LS
+Multiplicative scaling to be applied to each spectrum. The choices are none
+or scale by the mode, median, or mean. This should not be necessary if the
+flat field and throughput corrections have been properly made.
+.LE
+
+.ce
+ENVIRONMENT PARAMETERS
+.LP
+The environment parameter \fIimtype\fR is used to determine the extension
+of the images to be processed and created. This allows use with any
+supported image extension. For STF images the extension has to be exact;
+for example "d1h".
diff --git a/noao/imred/hydra/dohydra.cl b/noao/imred/hydra/dohydra.cl
new file mode 100644
index 00000000..74264633
--- /dev/null
+++ b/noao/imred/hydra/dohydra.cl
@@ -0,0 +1,75 @@
+# DOHYDRA -- Process HYDRA spectra from 2D to wavelength calibrated 1D.
+#
+# The task PROC does all of the interactive work and BATCH does the
+# background work. This procedure is organized this way to minimize the
+# dictionary space when the background task is submitted.
+
+procedure dohydra (objects)
+
+string objects = "" {prompt="List of object spectra"}
+
+file apref = "" {prompt="Aperture reference spectrum"}
+file flat = "" {prompt="Flat field spectrum"}
+file throughput = "" {prompt="Throughput file or image (optional)"}
+string arcs1 = "" {prompt="List of arc spectra"}
+string arcs2 = "" {prompt="List of shift arc spectra"}
+file arcreplace = "" {prompt="Special aperture replacements"}
+file arctable = "" {prompt="Arc assignment table (optional)\n"}
+
+string readnoise = "RDNOISE" {prompt="Read out noise sigma (photons)"}
+string gain = "GAIN" {prompt="Photon gain (photons/data number)"}
+real datamax = INDEF {prompt="Max data value / cosmic ray threshold"}
+int fibers = 97 {prompt="Number of fibers"}
+real width = 12. {prompt="Width of profiles (pixels)"}
+real minsep = 8. {prompt="Minimum separation between fibers (pixels)"}
+real maxsep = 15. {prompt="Maximum separation between fibers (pixels)"}
+file apidtable = "" {prompt="Aperture identifications"}
+string crval = "INDEF" {prompt="Approximate central wavelength"}
+string cdelt = "INDEF" {prompt="Approximate dispersion"}
+string objaps = "" {prompt="Object apertures"}
+string skyaps = "" {prompt="Sky apertures"}
+string arcaps = "" {prompt="Arc apertures"}
+string objbeams = "0,1" {prompt="Object beam numbers"}
+string skybeams = "0" {prompt="Sky beam numbers"}
+string arcbeams = "" {prompt="Arc beam numbers\n"}
+
+bool scattered = no {prompt="Subtract scattered light?"}
+bool fitflat = yes {prompt="Fit and ratio flat field spectrum?"}
+bool clean = yes {prompt="Detect and replace bad pixels?"}
+bool dispcor = yes {prompt="Dispersion correct spectra?"}
+bool savearcs = yes {prompt="Save simultaneous arc apertures?"}
+bool skyalign = no {prompt="Align sky lines?"}
+bool skysubtract = yes {prompt="Subtract sky?"}
+bool skyedit = yes {prompt="Edit the sky spectra?"}
+bool saveskys = yes {prompt="Save sky spectra?"}
+bool splot = no {prompt="Plot the final spectrum?"}
+bool redo = no {prompt="Redo operations if previously done?"}
+bool update = yes {prompt="Update spectra if cal data changes?"}
+bool batch = no {prompt="Extract objects in batch?"}
+bool listonly = no {prompt="List steps but don't process?\n"}
+
+pset params = "" {prompt="Algorithm parameters"}
+
+begin
+ apscript.readnoise = readnoise
+ apscript.gain = gain
+ apscript.nfind = fibers
+ apscript.width = width
+ apscript.t_width = width
+ apscript.minsep = minsep
+ apscript.maxsep = maxsep
+ apscript.radius = minsep
+ apscript.clean = clean
+ proc.datamax = datamax
+
+ proc (objects, apref, flat, throughput, arcs1, arcs2, arcreplace,
+ arctable, fibers, apidtable, crval, cdelt, objaps, skyaps,
+ arcaps, objbeams, skybeams, arcbeams, scattered, fitflat, no,
+ no, no, no, clean, dispcor, savearcs, skyalign, skysubtract,
+ skyedit, saveskys, splot, redo, update, batch, listonly)
+
+ if (proc.dobatch) {
+ print ("-- Do remaining spectra as a batch job --")
+ print ("batch&batch") | cl
+ }
+end
diff --git a/noao/imred/hydra/dohydra.par b/noao/imred/hydra/dohydra.par
new file mode 100644
index 00000000..7bca4821
--- /dev/null
+++ b/noao/imred/hydra/dohydra.par
@@ -0,0 +1,43 @@
+objects,s,a,"",,,"List of object spectra"
+apref,f,h,"",,,"Aperture reference spectrum"
+flat,f,h,"",,,"Flat field spectrum"
+throughput,f,h,"",,,"Throughput file or image (optional)"
+arcs1,s,h,"",,,"List of arc spectra"
+arcs2,s,h,"",,,"List of shift arc spectra"
+arcreplace,f,h,"",,,"Special aperture replacements"
+arctable,f,h,"",,,"Arc assignment table (optional)
+"
+readnoise,s,h,"RDNOISE",,,"Read out noise sigma (photons)"
+gain,s,h,"GAIN",,,"Photon gain (photons/data number)"
+datamax,r,h,INDEF,,,"Max data value / cosmic ray threshold"
+fibers,i,h,97,,,"Number of fibers"
+width,r,h,12.,,,"Width of profiles (pixels)"
+minsep,r,h,8.,,,"Minimum separation between fibers (pixels)"
+maxsep,r,h,15.,,,"Maximum separation between fibers (pixels)"
+apidtable,f,h,"",,,"Aperture identifications"
+crval,s,h,INDEF,,,"Approximate central wavelength"
+cdelt,s,h,INDEF,,,"Approximate dispersion"
+objaps,s,h,"",,,"Object apertures"
+skyaps,s,h,"",,,"Sky apertures"
+arcaps,s,h,"",,,"Arc apertures"
+objbeams,s,h,"0,1",,,"Object beam numbers"
+skybeams,s,h,"0",,,"Sky beam numbers"
+arcbeams,s,h,"",,,"Arc beam numbers
+"
+scattered,b,h,no,,,"Subtract scattered light?"
+fitflat,b,h,yes,,,"Fit and ratio flat field spectrum?"
+clean,b,h,yes,,,"Detect and replace bad pixels?"
+dispcor,b,h,yes,,,"Dispersion correct spectra?"
+savearcs,b,h,yes,,,"Save simultaneous arc apertures?"
+skyalign,b,h,no,,,"Align sky lines?"
+skysubtract,b,h,yes,,,"Subtract sky?"
+skyedit,b,h,yes,,,"Edit the sky spectra?"
+saveskys,b,h,yes,,,"Save sky spectra?"
+splot,b,h,no,,,"Plot the final spectrum?"
+redo,b,h,no,,,"Redo operations if previously done?"
+update,b,h,yes,,,"Update spectra if cal data changes?"
+batch,b,h,no,,,"Extract objects in batch?"
+listonly,b,h,no,,,"List steps but don\'t process?
+"
+params,pset,h,"",,,"Algorithm parameters"
+mode,s,h,"ql",,,
diff --git a/noao/imred/hydra/hydra.cl b/noao/imred/hydra/hydra.cl
new file mode 100644
index 00000000..4312a490
--- /dev/null
+++ b/noao/imred/hydra/hydra.cl
@@ -0,0 +1,82 @@
+#{ HYDRA package definition
+
+proto # bscale
+
+s1 = envget ("min_lenuserarea")
+if (s1 == "")
+ reset min_lenuserarea = 100000
+else if (int (s1) < 100000)
+ reset min_lenuserarea = 100000
+
+# Define HYDRA package
+package hydra
+
+# Package script tasks
+task dohydra = "hydra$dohydra.cl"
+task params = "hydra$params.par"
+
+# Fiber reduction script tasks
+task proc = "srcfibers$proc.cl"
+task fibresponse = "srcfibers$fibresponse.cl"
+task arcrefs = "srcfibers$arcrefs.cl"
+task doarcs = "srcfibers$doarcs.cl"
+task doalign = "srcfibers$doalign.cl"
+task skysub = "srcfibers$skysub.cl"
+task batch = "srcfibers$batch.cl"
+task listonly = "srcfibers$listonly.cl"
+task getspec = "srcfibers$getspec.cl"
+
+task msresp1d = "specred$msresp1d.cl"
+
+# Demos
+set demos = "hydra$demos/"
+task demos = "demos$demos.cl"
+task mkfibers = "srcfibers$mkfibers.cl"
+
+# Onedspec tasks
+task autoidentify,
+ continuum,
+ dispcor,
+ dopcor,
+ identify,
+ refspectra,
+ reidentify,
+ sapertures,
+ sarith,
+ sflip,
+ slist,
+ specplot,
+ specshift,
+ splot = "onedspec$x_onedspec.e"
+task scombine = "onedspec$scombine/x_scombine.e"
+task aidpars = "onedspec$aidpars.par"
+task bplot = "onedspec$bplot.cl"
+task scopy = "onedspec$scopy.cl"
+task dispcor1 = "onedspec$dispcor1.par"
+
+# Apextract tasks
+task apall,
+ apedit,
+ apfind,
+ aprecenter,
+ apresize,
+ apscatter,
+ apsum,
+ aptrace = "apextract$x_apextract.e"
+task apdefault = "apextract$apdefault.par"
+task apparams = "apextract$apparams.par"
+task apall1 = "apextract$apall1.par"
+task apscat1 = "apextract$apscat1.par"
+task apscat2 = "apextract$apscat2.par"
+task apscript = "srcfibers$x_apextract.e"
+
+# Astutil tasks
+task setairmass,
+ setjd = "astutil$x_astutil.e"
+
+# Hide tasks from the user
+hidetask apparams, apall1, apscript, apscat1, apscat2, dispcor1, mkfibers
+hidetask params, proc, batch, arcrefs, doarcs, doalign
+hidetask listonly, fibresponse, getspec
+
+clbye()
diff --git a/noao/imred/hydra/hydra.hd b/noao/imred/hydra/hydra.hd
new file mode 100644
index 00000000..c9e04d8a
--- /dev/null
+++ b/noao/imred/hydra/hydra.hd
@@ -0,0 +1,7 @@
+# Help directory for the HYDRA package.
+
+$doc = "./doc/"
+
+dohydra hlp=doc$dohydra.hlp
+
+revisions sys=Revisions
diff --git a/noao/imred/hydra/hydra.men b/noao/imred/hydra/hydra.men
new file mode 100644
index 00000000..a01bc9b5
--- /dev/null
+++ b/noao/imred/hydra/hydra.men
@@ -0,0 +1,32 @@
+ apall - Extract 1D spectra (all parameters in one task)
+ apdefault - Set the default aperture parameters
+ apedit - Edit apertures interactively
+ apfind - Automatically find spectra and define apertures
+ aprecenter - Recenter apertures
+ apresize - Resize apertures
+ apscatter - Fit and remove scattered light
+ apsum - Extract 1D spectra
+ aptrace - Trace positions of spectra
+
+ bplot - Batch plots of spectra
+ continuum - Fit the continuum in spectra
+ dispcor - Dispersion correct spectra
+ dopcor - Doppler correct spectra
+ identify - Identify features in spectrum for dispersion solution
+ msresp1d - Create 1D response spectra from flat field and sky spectra
+ refspectra - Assign wavelength reference spectra to other spectra
+ reidentify - Automatically identify features in spectra
+ sapertures - Set or change aperture header information
+ sarith - Spectrum arithmetic
+ scombine - Combine spectra having different wavelength ranges
+ scopy - Select and copy apertures in different spectral formats
+ setairmass - Compute effective airmass and middle UT for an exposure
+ setjd - Compute and set Julian dates in images
+ sflip - Flip data and/or dispersion coordinates in spectra
+ slist - List spectrum header parameters
+ specplot - Stack and plot multiple spectra
+ specshift - Shift spectral dispersion coordinate systems
+ splot - Preliminary spectral plot/analysis
+
+ dohydra - Process HYDRA spectra
+ demos - Demonstrations and tests
diff --git a/noao/imred/hydra/hydra.par b/noao/imred/hydra/hydra.par
new file mode 100644
index 00000000..b560f84d
--- /dev/null
+++ b/noao/imred/hydra/hydra.par
@@ -0,0 +1,13 @@
+# HYDRA parameter file
+observatory,s,h,"observatory",,,Observatory of data
+interp,s,h,"poly5","nearest|linear|poly3|poly5|spline3|sinc",,Interpolation type
+dispaxis,i,h,2,1,3,Image axis for 2D/3D images
+nsum,s,h,"1",,,"Number of lines/columns/bands to sum for 2D/3D images
+"
+database,f,h,"database",,,Database
+verbose,b,h,no,,,Verbose output?
+logfile,s,h,"logfile",,,Log file
+plotfile,s,h,"",,,"Plot file
+"
+records,s,h,""
+version,s,h,"HYDRA V1: January 1992"
diff --git a/noao/imred/hydra/params.par b/noao/imred/hydra/params.par
new file mode 100644
index 00000000..af56a1b8
--- /dev/null
+++ b/noao/imred/hydra/params.par
@@ -0,0 +1,67 @@
+line,i,h,INDEF,,,"Default dispersion line"
+nsum,i,h,10,,,"Number of dispersion lines to sum or median"
+order,s,h,"decreasing","increasing|decreasing",,"Order of apertures"
+extras,b,h,no,,,"Extract sky, sigma, etc.?
+
+-- DEFAULT APERTURE LIMITS --"
+lower,r,h,-5.,,,"Lower aperture limit relative to center"
+upper,r,h,5.,,,"Upper aperture limit relative to center
+
+-- AUTOMATIC APERTURE RESIZING PARAMETERS --"
+ylevel,r,h,0.05,,,"Fraction of peak or intensity for resizing
+
+-- TRACE PARAMETERS --"
+t_step,i,h,10,,,"Tracing step"
+t_function,s,h,"spline3","chebyshev|legendre|spline1|spline3",,"Trace fitting function"
+t_order,i,h,3,,,"Trace fitting function order"
+t_niterate,i,h,1,0,,"Trace rejection iterations"
+t_low,r,h,3.,0.,,"Trace lower rejection sigma"
+t_high,r,h,3.,0.,,"Trace upper rejection sigma
+
+-- SCATTERED LIGHT PARAMETERS --"
+buffer,r,h,1.,0.,,Buffer distance from apertures
+apscat1,pset,h,"",,,Fitting parameters across the dispersion
+apscat2,pset,h,"",,,"Fitting parameters along the dispersion
+
+-- APERTURE EXTRACTION PARAMETERS --"
+weights,s,h,"none","none|variance",,Extraction weights (none|variance)
+pfit,s,h,"fit1d","fit1d|fit2d",,Profile fitting algorithm (fit1d|fit2d)
+lsigma,r,h,3.,,,Lower rejection threshold
+usigma,r,h,3.,,,Upper rejection threshold
+nsubaps,i,h,1,1,,"Number of subapertures
+
+-- FLAT FIELD FUNCTION FITTING PARAMETERS --"
+f_interactive,b,h,yes,,,"Fit flat field interactively?"
+f_function,s,h,"spline3",spline3|legendre|chebyshev|spline1,,"Fitting function"
+f_order,i,h,10,1,,"Fitting function order
+
+-- ARC DISPERSION FUNCTION PARAMETERS --"
+threshold,r,h,10.,0.,,"Minimum line contrast threshold"
+coordlist,f,h,linelists$ctiohenear.dat,,,"Line list"
+match,r,h,-3.,,,"Line list matching limit in Angstroms"
+fwidth,r,h,4.,,,"Arc line widths in pixels"
+cradius,r,h,10.,,,Centering radius in pixels
+i_function,s,h,"spline3","legendre|chebyshev|spline1|spline3",,"Coordinate function"
+i_order,i,h,3,1,,"Order of dispersion function"
+i_niterate,i,h,2,0,,"Rejection iterations"
+i_low,r,h,3.,0.,,"Lower rejection sigma"
+i_high,r,h,3.,0.,,"Upper rejection sigma"
+refit,b,h,yes,,,"Refit coordinate function when reidentifying?"
+addfeatures,b,h,no,,,"Add features when reidentifying?
+
+-- AUTOMATIC ARC ASSIGNMENT PARAMETERS --"
+select,s,h,"interp",,,"Selection method for reference spectra"
+sort,s,h,"jd",,,"Sort key"
+group,s,h,"ljd",,,"Group key"
+time,b,h,no,,,"Is sort key a time?"
+timewrap,r,h,17.,0.,24.,"Time wrap point for time sorting
+
+-- DISPERSION CORRECTION PARAMETERS --"
+linearize,b,h,yes,,,Linearize (interpolate) spectra?
+log,b,h,no,,,"Logarithmic wavelength scale?"
+flux,b,h,yes,,,"Conserve flux?
+
+-- SKY SUBTRACTION PARAMETERS --"
+combine,s,h,"average","average|median",,Type of combine operation
+reject,s,h,"avsigclip","none|minmax|avsigclip",,"Sky rejection option"
+scale,s,h,"none","none|mode|median|mean",,"Sky scaling option"