DATA REDUCTION WITH ARGUS: nicholas suntzeff The following document describes a complete reduction run for Argus data. The objects were 18-19th mag stars in the Sextans dwarf galaxy. Instument configuration: Red Air Schmidt, GEC Epi 12, KPGLD grating (8500A) ========================================================================== Basic calibrations needed to reduce data: ~30 biases. These should be done with the telescope dome dark, and with the secondary mirror cover closed. ~5 milk flats. Put the diffusor plate (``milk glass'') in the bench spectrograph filter bolt. Make sure that it doesn't produce reflections back towards the corrector of the collimator. These can be done in full daylight. I used 480 sec to get 20000ADU. Your exposure time will depend on your setup ~5 twilights. Do these right after sunset. Don't forget to get the comp at this time also. ~5 domes. Exposure times of 240s gave 12000ADU. If possible, wait until the dewar has been refilled before observing to start these, in case there are any shifts from the fill process. With the echelle, you probably will not be able to do dome flats, so you will have to use the Argus quartz lamp with the calibration exposure sequence. 3 dome neons. Do these at the end of the night. The neon light needs to be fixed on top of the pf cage, not on the spider to avoid shawdowing the white spot. 2700 sec expsoures. If you cannot use the dome neons, use the Argus calibration lamps with the calibration exposure sequence. This is the sequence where the fibers (both object and sky) are brought into the optical center of the Argus field for exposure. Generally, all but the milks need to be done every night. The nightly biases are not too critical. CCD REDUCTIONS Getpix all the files from the LSI to the sun. I recommend the following form for getpix: getpix -v -p r 1-99 The -v flag sets verbose transfer so you can tell what is happening. The -p flag forces the images to have the prefix of (in this case) ``r'' such that the files created will be r001, r002, etc. If you do not force the prefix, getpix will create prefixes of ``obj'', ``comp'', ``bias'', ``flat'', ``dark'', etc, which entails a lot of typing later on. The first part is the typical CCD processing through [OTZF]. Use the package noao.imred.ccdred. Create an ``instrument translation file'' called ccd.dat with the following information. It is located in /u4m0/nick/trans_files/ccd.dat: ==================================== exptime exptime darktime darktime imagetyp imagetyp subset filters biassec biassec trimsec trimsec fixfile fixfile OBJECT object "MULTIPLE EXP" object DARK dark "PROJECTOR FLAT" flat "SKY FLAT" flat "DOME FLAT" flat COMPARISON comp BIAS zero MASK other ==================================== If you don't understand why you need this file, check the help pages help instruments. Try running ccdred.ccdl on your data. You should get something like: r021.imh[1240,400][short][object][0]:hear test r100.imh[1240,400][short][object][0]:ltt 3864 If you get something like: r021.imh[1240,400][short][unknown][]:hear tet r100.imh[1240,400][short][unknown][]:ltt 3864 ccdred is not picking up the instrument translation file correctly. Now set the parameter file for ccdr as ccdr: (pixeltype = "real real") Output and calculation pixel datatypes (verbose = yes) Print log information to the standard output? (logfile = "logfile") Text log file (plotfile = "") Log metacode plot file (backup = "") Backup directory or prefix (instrument = "ccd.dat") CCD instrument file (ssfile = "filters") Subset translation file (graphics = "stdgraph") Interactive graphics output device (cursor = "") Graphics cursor input (version = "2: October 1987") (mode = "ql") ($nargs = 0) Put all the bias frame numbers in a file called ``in''. Combine the biases with ccdred.combine: combine: input = "@in" List of images to combine output = "biasraw" List of output images (plfile = "") List of output pixel list files (optional) (sigma = "") List of sigma images (optional)\n (ccdtype = "") CCD image type to combine (optional) (subsets = no) Combine images by subset parameter? (delete = no) Delete input images after combining? (clobber = no) Clobber existing output image?\n (combine = "average") Type of combine operation (reject = "avsigclip") Type of rejection (project = no) Project highest dimension of input images? (outtype = "real") Output image pixel datatype (offsets = "none") Input image offsets (masktype = "none") Mask type (maskvalue = 0.) Mask value (blank = 0.) Value if there are no pixels\n (scale = "none") Image scaling (zero = "none") Image zero point offset (weight = "none") Image weights (statsec = "") Image section for computing statistics\n (lthreshold = INDEF) Lower threshold (hthreshold = INDEF) Upper threshold (nlow = 1) minmax: Number of low pixels to reject (nhigh = 1) minmax: Number of high pixels to reject (nkeep = 1) Minimum to keep (pos) or maximum to reject (neg (mclip = yes) Use median in sigma clipping algorithms? (lsigma = 3.) Lower sigma clipping factor (hsigma = 3.) Upper sigma clipping factor (rdnoise = "0.") ccdclip: CCD readout noise (electrons) (gain = "1.") ccdclip: CCD gain (electrons/DN) (snoise = "0.") ccdclip: Sensitivity noise (fraction) (sigscale = 0.1) Tolerance for sigma clipping scaling correction (pclip = -0.5) pclip: Percentile clipping parameter (grow = 0) Radius (pixels) for 1D neighbor rejection (mode = "ql") Copy the newly created biasraw to a new image ``bias'': imcopy biasraw biasn1 You must now determine the ``biassec'' (the overscan region for the overscan subtraction) and the ``trimsec'' for your data. To do this, use implot on one of the milk flats. Find the overscan region (high column numbers) and all the rows and cols with high or zero charge for trimming. Enter these sections into the ccdred.ccdproc command. These values should not change during your run. A good guess for the proper values can be found in the FITS header under TRIMSEC and BIASSEC. Often, the CTIO CCDs have bad first cols or rows. You may want to trim off these if they appear high when you do an implot on the raw data Do: imhead r001 l+ | page for a complete listing of the header. The values that appear in the header are probably correct, but you should verify them on real data. Now reduce the biasn1 through [OT] with ccdred.ccdproc: ccdproc: images = "biasn1" List of CCD images to correct (ccdtype = "") CCD image type to correct (max_cache = 0) Maximum image caching memory (in Mbytes) (noproc = no) List processing steps only?\n (fixpix = no) Fix bad CCD lines and columns? (overscan = yes) Apply overscan strip correction? (trim = yes) Trim the image? (zerocor = no) Apply zero level correction? (darkcor = no) Apply dark count correction? (flatcor = no) Apply flat field correction? (illumcor = no) Apply illumination correction? (fringecor = no) Apply fringe correction? (readcor = no) Convert zero level image to readout correction? (scancor = no) Convert flat field image to scan correction?\n (readaxis = "line") Read out axis (column|line) (fixfile = "") File describing the bad lines and columns (biassec = "[1216:1231,7:400]") Overscan strip image section (trimsec = "[5:1200,7:400]") Trim data section (zero = "") Zero level calibration image (dark = "") Dark count calibration image (flat = "") Flat field images (illum = "") Illumination correction images (fringe = "") Fringe correction images (minreplace = 1.) Minimum flat field value (scantype = "shortscan") Scan type (shortscan|longscan) (nscan = 1) Number of short scan lines\n (interactive = yes) Fit overscan interactively? (function = "legendre") Fitting function (order = 2) Number of polynomial terms or spline pieces (sample = "*") Sample points to fit (naverage = 1) Number of sample points to combine (niterate = 1) Number of rejection iterations (low_reject = 2.5) Low sigma rejection factor (high_reject = 2.5) High sigma rejection factor (grow = 0.) Rejection growing radius (mode = "ql") Now enter the bias name into the ccdred.ccdpr parameter file and set zerocor+. Process ALL the data through [OTZ] ccdpr: images = "" List of CCD images to correct (ccdtype = "") CCD image type to correct (max_cache = 0) Maximum image caching memory (in Mbytes) (noproc = no) List processing steps only?\n (fixpix = no) Fix bad CCD lines and columns? (overscan = yes) Apply overscan strip correction? (trim = yes) Trim the image? (zerocor = yes) Apply zero level correction? (darkcor = no) Apply dark count correction? (flatcor = no) Apply flat field correction? (illumcor = no) Apply illumination correction? (fringecor = no) Apply fringe correction? (readcor = no) Convert zero level image to readout correction? (scancor = no) Convert flat field image to scan correction?\n (readaxis = "line") Read out axis (column|line) (fixfile = "") File describing the bad lines and columns (biassec = "[1216:1231,7:400]") Overscan strip image section (trimsec = "[5:1200,7:400]") Trim data section (zero = "biasn1") Zero level calibration image (dark = "") Dark count calibration image (flat = "") Flat field images (illum = "") Illumination correction images (fringe = "") Fringe correction images (minreplace = 1.) Minimum flat field value (scantype = "shortscan") Scan type (shortscan|longscan) (nscan = 1) Number of short scan lines\n (interactive = yes) Fit overscan interactively? (function = "legendre") Fitting function (order = 2) Number of polynomial terms or spline pieces (sample = "*") Sample points to fit (naverage = 1) Number of sample points to combine (niterate = 1) Number of rejection iterations (low_reject = 2.5) Low sigma rejection factor (high_reject = 2.5) High sigma rejection factor (grow = 0.) Rejection growing radius (mode = "ql") Now combine the milks, domes, twilights with ccdred.combine and scale+ weight+". Do the same with the neons, without scaling. BE VERY CAREFUL OF THE COMBINE COMMAND IN IRAF VERSION 2.10. LOOK AT THE FINAL IMAGE TO MAKE SURE IT LOOKS OKAY. THE MODE OR MEDIAN IN A SPECTRAL IMAGE CAN BE QUITE UNSTABLE. It is safe to combine the milk flats, but you may want to think twice about combining the twilight flats at this point. comb: input = "@in" List of images to combine output = "milk" List of output images (plfile = "") List of output pixel list files (optional) (sigma = "") List of sigma images (optional)\n (ccdtype = "") CCD image type to combine (optional) (subsets = no) Combine images by subset parameter? (delete = no) Delete input images after combining? (clobber = no) Clobber existing output image?\n (combine = "average") Type of combine operation (reject = "avsigclip") Type of rejection (project = no) Project highest dimension of input images? (outtype = "real") Output image pixel datatype (offsets = "none") Input image offsets (masktype = "none") Mask type (maskvalue = 0.) Mask value (blank = 0.) Value if there are no pixels\n (scale = "mode") Image scaling (zero = "none") Image zero point offset (weight = "mode") Image weights (statsec = "") Image section for computing statistics\n (lthreshold = INDEF) Lower threshold (hthreshold = INDEF) Upper threshold (nlow = 1) minmax: Number of low pixels to reject (nhigh = 1) minmax: Number of high pixels to reject (nkeep = -1) Minimum to keep (pos) or maximum to reject (neg (mclip = yes) Use median in sigma clipping algorithms? (lsigma = 3.) Lower sigma clipping factor (hsigma = 3.) Upper sigma clipping factor (rdnoise = "0.") ccdclip: CCD readout noise (electrons) (gain = "1.") ccdclip: CCD gain (electrons/DN) (snoise = "0.") ccdclip: Sensitivity noise (fraction) (sigscale = 0.1) Tolerance for sigma clipping scaling correction (pclip = -0.5) pclip: Percentile clipping parameter (grow = 0) Radius (pixels) for 1D neighbor rejection (mode = "ql") Fit the combined milk flat with imsurf, orders=6, spline3, response. You will have to play with the type and order of fit to get the best normalized flat. You must have a high enough order to get rid of the rolloff towards the chip edge perpendicular to the dispersion, and any residual washed-out spectral features along the dispersion. The final flat should have most of the wiggles taken out to 1-2%. If you see coherent bands running across the flat, you need increase the orders. I have had to go as high as or=20 on occasion. You will have to play with the pixel rejection to make sure that deviant pixels do not introduce bad wiggles into the final flat. The philosophy in producing the normalized milk flat is to preserve the pixel-to-pixel variation while removing ALL the low order (wavelengths of a few pixels or more). You will remove the transmission variations later in the reduction. Even if small wiggles remain in the flat, they will be removed later. imsurfit: input = "milk" Input images to be fit output = "flatn1" Output images xorder = 6 Order of function in x yorder = 6 Order of function in y (type_output = "response") Type of output (fit,residual,response,clean) (function = "spline3") Function to be fit (legendre,chebyshev,spline3) (cross_terms = yes) Include cross-terms for polynomials? (xmedian = 1) X length of median box (ymedian = 1) Y length of median box (median_perce = 50.) Minimum fraction of pixels in median box (lower = 3.) Lower limit for residuals (upper = 3.) Upper limit for residuals (ngrow = 0) Radius of region growing circle (niter = 3) Maximum number of rejection cycles (regions = "all") Good regions (all,rows,columns,border,sections, (rows = "*") Rows to be fit (columns = "*") Columns to be fit (border = "50") Width of border to be fit (sections = ) File name for sections list (circle = ) Circle specifications (div_min = INDEF) Division minimum for response output (mode = "ql") Now use the normalized milk to flatten ALL the data (dome,twilight,program data,neon) through [OTZF]. MAKE SURE THE DOMES AND TWILIGHTS ARE FLATTENED!! ccdpr: images = "r*.imh" List of CCD images to correct (ccdtype = "") CCD image type to correct (max_cache = 0) Maximum image caching memory (in Mbytes) (noproc = no) List processing steps only?\n (fixpix = no) Fix bad CCD lines and columns? (overscan = yes) Apply overscan strip correction? (trim = yes) Trim the image? (zerocor = yes) Apply zero level correction? (darkcor = no) Apply dark count correction? (flatcor = yes) Apply flat field correction? (illumcor = no) Apply illumination correction? (fringecor = no) Apply fringe correction? (readcor = no) Convert zero level image to readout correction? (scancor = no) Convert flat field image to scan correction?\n (readaxis = "line") Read out axis (column|line) (fixfile = "") File describing the bad lines and columns (biassec = "[1216:1231,7:400]") Overscan strip image section (trimsec = "[5:1200,7:400]") Trim data section (zero = "biasn1") Zero level calibration image (dark = "") Dark count calibration image (flat = "flatn1") Flat field images (illum = "") Illumination correction images (fringe = "") Fringe correction images (minreplace = 1.) Minimum flat field value (scantype = "shortscan") Scan type (shortscan|longscan) (nscan = 1) Number of short scan lines\n (interactive = yes) Fit overscan interactively? (function = "legendre") Fitting function (order = 2) Number of polynomial terms or spline pieces (sample = "*") Sample points to fit (naverage = 1) Number of sample points to combine (niterate = 1) Number of rejection iterations (low_reject = 2.5) Low sigma rejection factor (high_reject = 2.5) High sigma rejection factor (grow = 0.) Rejection growing radius (mode = "ql") You can set up the calibrations and reduce the data as soon as it comes over from getpix. You can check that your data is reduced by running ccdl. Note that I am assuming that you will reduce the data in place, writing over the raw data. If you are nervous about this, you should set the backup parameter in ccdred which will copy the data to a new area and not overwrite the raw data. I never save the raw data - only the [OTZF] data. If you have never reduced CCD data with IRAF, you should be saving the raw data. You can write the data to 9-track tape on mta, or exabyte on mtx. Type the help pages in ctio.exuse for more information on exabyte. To write the 9-track tape, use dataio.wfits. Just a note to the wise: exabytes are not really permanent storage. I can still read data written to 9-track that was written in 1974. I doubt that in 20 years you will be able to read your exabytes. 9-track or DATs may be safer PERMANENT storage, if you are concerned. SPECTRAL REDUCTIONS The following is a very terse description of how I reduce my spectral data. It is unlikely that you will have time on the mountain to do this. The spectral data were 17-18 magnitude globular cluster giants at 8500A for velocity and metallicity measurements. Loaded the data from tape. The data are [OTZF]. Did the usual argus.apall reduction . The focus is really bad this time on the Red AS, so the lhs of the chip (Aper 1, 3, etc) are quite different that on the rhs. EXTRACTION: Extracted the domes first as reference, and then all the program data, including the twilight data. apall: input = "@in" List of input images nfind = 48 Number of apertures to be found automatically (output = "") List of output spectra (format = "multispec") Extracted spectra format (references = "dome") List of aperture reference images (profiles = "") List of aperture profile images\n (interactive = yes) Run task interactively? (find = no) Find apertures? (recenter = yes) Recenter apertures? (resize = no) Resize apertures? (edit = yes) Edit apertures? (trace = yes) Trace apertures? (fittrace = yes) Fit the traced points interactively? (extract = yes) Extract spectra? (extras = yes) Extract sky, sigma, etc.? (review = no) Review extractions?\n (line = INDEF) Dispersion line (nsum = 10) Number of dispersion lines to sum\n\n# DEFAULT (dispaxis = 2) Dispersion axis (1=along lines, 2=along columns (lower = -2.7) Lower aperture limit relative to center (upper = 2.3) Upper aperture limit relative to center (apidtable = "") Aperture ID table (optional)\n\n# DEFAULT BACKG (b_function = "chebyshev") Background function (b_order = 1) Background function order (b_sample = "-10:-6,6:10") Background sample regions (b_naverage = -3) Background average or median (b_niterate = 0) Background rejection iterations (b_low_reject = 3.) Background lower rejection sigma (b_high_rejec = 3.) Background upper rejection sigma (b_grow = 0.) Background rejection growing radius\n\n# APERTU (width = 5.) Profile centering width (radius = 10.) Profile centering radius (threshold = 0.) Detection threshold for profile centering\n\n# (minsep = 5.) Minimum separation between spectra (maxsep = 1000.) Maximum separation between spectra (order = "increasing") Order of apertures\n\n# RECENTERING PARAMETERS\n (apertures = "") Select apertures (npeaks = INDEF) Select brightest peaks (shift = yes) Use average shift instead of recentering?\n\n# (llimit = INDEF) Lower aperture limit relative to center (ulimit = INDEF) Upper aperture limit relative to center (ylevel = 0.1) Fraction of peak or intensity for automatic wid (peak = yes) Is ylevel a fraction of the peak? (bkg = yes) Subtract background in automatic width? (r_grow = 0.) Grow limits by this factor (avglimits = no) Average limits over all apertures?\n\n# TRACING (t_nsum = 10) Number of dispersion lines to sum (t_step = 10) Tracing step (t_nlost = 3) Number of consecutive times profile is lost bef (t_function = "spline3") Trace fitting function (t_order = 2) Trace fitting function order (t_sample = "*") Trace sample regions (t_naverage = 1) Trace average or median (t_niterate = 5) Trace rejection iterations (t_low_reject = 3.) Trace lower rejection sigma (t_high_rejec = 3.) Trace upper rejection sigma (t_grow = 0.) Trace rejection growing radius\n\n# EXTRACTION (background = "none") Background to subtract (skybox = 1) Box car smoothing length for sky (weights = "none") Extraction weights (none|variance) (pfit = "fit1d") Profile fitting type (fit1d|fit2d) (clean = no) Detect and replace bad pixels? (saturation = 32000.) Saturation level (readnoise = "5.4") Read out noise sigma (photons) (gain = "0.63") Photon gain (photons/data number) (lsigma = 4.) Lower rejection threshold (usigma = 4.) Upper rejection threshold (nsubaps = 1) Number of subapertures per aperture (mode = "ql") I have had NO luck with the variance weighting, and have found that it ADDS noise on very high S/N data. If you do use variance weighting, note the following hidden gotcha. The variance weighting relies on an accurate estimate for the profile. In order to get an accurate value, you must set the trace to a rather high order fit, say or=10 with spline3. Then extracted the he-ar using the associated object data as the reference. Note that the twi also has a he-ar. # apall r102 refer=r101 recenter- interact- edit- trace- # apall r104 refer=r103 recenter- interact- edit- trace- # apall r106 refer=r105 recenter- interact- edit- trace- # apall r108 refer=r107 recenter- interact- edit- trace- # apall r110 refer=r109 recenter- interact- edit- trace- # apall r112 refer=r111 recenter- interact- edit- trace- # apall r114 refer=r113 recenter- interact- edit- trace- # apall r116 refer=r115 recenter- interact- edit- trace- # apall r118 refer=r117 recenter- interact- edit- trace- # apall r120 refer=r119 recenter- interact- edit- trace- # apall r122 refer=r121 recenter- interact- edit- trace- # apall r129 refer=twi recenter- interact- edit- trace- Copied the aperture id files from the 4m and ran argus.saper saper r100.ms apid=m4.p3.ap saper r101.ms apid=m4.p3.ap saper r103.ms apid=arp2.p1.ap saper r105.ms apid=arp2.p1.ap saper r107.ms apid=ter7.p1.ap saper r109.ms apid=ter7.p1.ap saper r111.ms apid=smc_ech.p2.ap saper r113.ms apid=smc_ech.p2.ap saper r115.ms apid=47tuc_vr.p1.ap saper r117.ms apid=n2257_m.p3.ap saper r119.ms apid=n2257_m.p3.ap saper r121.ms apid=n2141.p2.ap Combined the 2-d dome neons (since I didn't have time at the telescope) with imcombine. imcomb: input = "r13*" List of images to combine output = "neon" List of output images (plfile = "") List of output pixel list files (optional) (sigma = "") List of sigma images (optional) (logfile = "logfile") Log file\n (combine = "average") Type of combine operation (reject = "minmax") Type of rejection (project = no) Project highest dimension of input images? (outtype = "real") Output image pixel datatype (offsets = "none") Input image offsets (masktype = "none") Mask type (maskvalue = 0.) Mask value (blank = 0.) Value if there are no pixels\n (scale = "none") Image scaling (zero = "none") Image zero point offset (weight = "none") Image weights (statsec = "") Image section for computing statistics (expname = "") Image header exposure time keyword\n (lthreshold = INDEF) Lower threshold (hthreshold = INDEF) Upper threshold (nlow = 0) minmax: Number of low pixels to reject (nhigh = 1) minmax: Number of high pixels to reject (mclip = yes) Use median in sigma clipping algorithms? (lsigma = 3.) Lower sigma clipping factor (hsigma = 3.) Upper sigma clipping factor (rdnoise = "0.") ccdclip: CCD readout noise (electrons) (gain = "1.") ccdclip: CCD gain (electrons/DN) (sigscale = 0.1) Tolerance for sigma clipping scaling correction (pclip = -0.5) pclip: Percentile clipping parameter (grow = 0) Radius (pixels) for 1D neighbor rejection (mode = "ql") Continuum subtracted the dome neon, since there was a bunch of twilight spectrum. In general, the comparison lamps do not need to be continuum subtracted. continuum: input = "neon.ms" Input images output = "neon.ms" Output images ask = "NO" (lines = "*") Image lines to be fit (type = "difference") Type of output (replace = no) Replace rejected points by fit? (wavescale = no) Scale the X axis with wavelength? (logscale = no) Take the log (base 10) of both axes? (override = no) Override previously fit lines? (listonly = no) List fit but don't modify any images? (logfiles = "logfile") List of log files (interactive = yes) Set fitting parameters interactively? (sample = "*") Sample points to use in fit (naverage = 1) Number of points in sample averaging (function = "spline3") Fitting function (order = 3) Order of fitting function (low_reject = 3.) Low rejection in sigma of fit (high_reject = 1.5) High rejection in sigma of fit (niterate = 10) Number of rejection iterations (grow = 1.) Rejection growing radius in pixels (markrej = yes) Mark rejected points? (graphics = "stdgraph") Graphics output device (cursor = "") Graphics cursor input (mode = "ql") Corrected the dome.ms spectra prior to extracted flattening using the new task argus. msresp1d. I checked the output on the twi.ms and it seemed to work quite well. This task corrects the extracted dome spectra by the transmission in the twilight fibers. It calculates a single scale factor per dome aperture and allows you to divide a single average curve into all the domes to bring the average response to 0. Note that the extracted domes have already been flattened. msresp1d: flat = "dome" Flat field spectrum throughput = "twi" Throughput file or image apreference = "" Aperture reference spectrum response = "test" Response spectrum (recenter = no) Recenter apertures? (edit = no) Edit/review apertures? (trace = no) Trace spectra? (clean = no) Detect and replace bad pixels? (fitflat = yes) Fit and ratio flat field spectrum? (interactive = yes) Fit flat field interactively? (function = "spline3") Fitting function (order = 3) Fitting function order (mode = "ql") Fiber transmissions (output from resp1d): Fit and ratio flat field dome Correct flat field to throughput image Create the normalized response test test -> test using bzero: 0. and bscale: 39065.36 mean: 39065.36 median: 39926.39 mode: 37231.06 upper: INDEF lower: INDEF Average aperture response: 1. 0.8888245 2. 0.9668172 3. 0.9230656 4. 0.9668096 5. 0.939764 6. 0.947111 7. 1.028445 8. 0.9830965 9. 0.7366316 10. 0.995795 11. 1.043589 12. 1.085693 13. 0.952426 14. 1.004345 15. 1.035023 16. 0.9248246 17. 1.038584 18. 1.072953 19. 1.090806 20. 0.9614231 21. 1.052227 22. 0.7086251 23. 0.917976 24. 0.9520181 25. 0.9566455 26. 1.053608 27. 0.834657 28. 0.7730792 29. 1.041376 30. 0.8409151 31. 1.086769 32. 1.153607 33. 1.071348 34. 1.128506 35. 1.04778 36. 1.129591 37. 0.948418 38. 1.088667 39. 1.11947 40. 1.199724 41. 1.103352 42. 1.096648 43. 1.148686 44. 1.114019 45. 0.9349973 46. 1.06317 47. 0.8570143 48. 0.9910982 I now flatten all the EXTRACTED data with the normalized EXTRACTED dome flats. You should realize that you are not correcting for pixel to pixels variations with this flat field. The extracted dome flats should have very high S/N - if not, you should smooth them. The purpose of this second flat-fielding is to take out the absolute and color transmission variations in each fiber by forcing all the twilights to have the same intensity. After flattening the extracted twilights with this extracted dome, all the twilights should be the same to better than 1%. I flattened the data and added a keyword, to verify for future generations that I did this correction. imar neon.ms / flat.ms neon.ms imar r100.ms / flat.ms r100.ms imar r101.ms / flat.ms r101.ms imar r102.ms / flat.ms r102.ms imar r103.ms / flat.ms r103.ms imar r104.ms / flat.ms r104.ms imar r105.ms / flat.ms r105.ms imar r106.ms / flat.ms r106.ms imar r107.ms / flat.ms r107.ms imar r108.ms / flat.ms r108.ms imar r109.ms / flat.ms r109.ms imar r110.ms / flat.ms r110.ms imar r111.ms / flat.ms r111.ms imar r112.ms / flat.ms r112.ms imar r113.ms / flat.ms r113.ms imar r114.ms / flat.ms r114.ms imar r115.ms / flat.ms r115.ms imar r116.ms / flat.ms r116.ms imar r117.ms / flat.ms r117.ms imar r118.ms / flat.ms r118.ms imar r119.ms / flat.ms r119.ms imar r120.ms / flat.ms r120.ms imar r121.ms / flat.ms r121.ms imar r122.ms / flat.ms r122.ms imar r129.ms / flat.ms r129.ms imar twi.ms / flat.ms twi.ms # hedit neon.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r100.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r101.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r102.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r103.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r104.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r105.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r106.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r107.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r108.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r109.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r110.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r111.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r112.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r113.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r114.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r115.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r116.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r117.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r118.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r119.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r120.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r121.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r122.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit r129.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- hedit twi.ms flatspec "Extracted data flatted by flat.ms 8 Dec 92" add+ ver- The apall extraction lists the spectral shifts perpendicular to the dispersion. These shifts are actually much larger than ususal. The shifts perpendicular to the dispersion were: object jd shift perp to dispersion r100.ms 0.5345093 0.02 r101.ms 0.53964772 -0.02 r103.ms 0.5789316 -0.06 r104.ms 0.5949139 0.05 r105.ms 0.61556011 -0.16 r107.ms 0.65884189 -0.13 r109.ms 0.6938039 -0.17 r111.ms 0.73936301 -0.17 r113.ms 0.77409548 -0.25 r115.ms 0.80305683 -0.19 r115.ms 0.80305683 -0.19 r117.ms 0.84001462 -0.19 r119.ms 0.88690136 -0.24 r121.ms 0.91913489 -0.16 twi.ms 0.92674033 -0.15 neon.ms 0.96531428 -0.29 These could be affected by cr's and other noise in the centering algorithm. WAVELENGTH CALIBRATION First did obseratory to check that CTIO was set. Then ran setjd to fix the times. setjd: images = "test" Images (observatory = )_.observatory) Observatory of observation (date = "date-obs") Date of observation keyword (time = "ut") Time of observation keyword (exposure = "exptime") Exposure time keyword (ra = "ra") Right ascension (hours) keyword (dec = "dec") Declination (degrees) keyword (epoch = "epoch") Epoch (years) keyword\n (jd = "jd") Output Julian date keyword (hjd = "hjd") Output Helocentric Julian date keyword (ljd = "ljd") Output local Julian date keyword\n (utdate = yes) Is observation date UT? (uttime = yes) Is observation time UT? (listonly = no) List only without modifying images? (mode = "ql") Now copied neon to "test" and ran id. Increased fwid to 6 since the focus changed. The fwid parameter should be 2xFWHM+1 roughly. My philosophy is to do a single wavelength solution in each fiber for the whole night. I then use the lamps taken during the night to take out the small spectral drifts. id: images = "test" Images containing features to be identified (section = "middle line") Section to apply to two dimensional images (database = "database") Database in which to record feature data (coordlist = "linelists$ctiohenear.dat") User coordinate list (nsum = 1) Number of lines or columns to sum in 2D images (match = 10.) Coordinate list matching limit in user units (maxfeatures = 50) Maximum number of features for automatic identi (zwidth = 100.) Zoom graph width in user units (ftype = "emission") Feature type (fwidth = 6.) Feature width in pixels (cradius = 5.) Centering radius in pixels (threshold = 10.) Feature threshold for centering (minsep = 2.) Minimum pixel separation (function = "legendre") Coordinate function (order = 3) Order of coordinate function (sample = "*") Coordinate sample regions (niterate = 3) Rejection iterations (low_reject = 3.) Lower rejection sigma (high_reject = 3.) Upper rejection sigma (grow = 0.) Rejection growing radius (autowrite = no) Automatically write to database (graphics = "stdgraph") Graphics output device (cursor = "") Graphics cursor input (mode = "ql") reid: reference = "test" Reference image images = "test" Images to be reidentified answer = "yes" Fit dispersion function interactively? (interactive = "no") Interactive fitting? (section = "middle line") Section to apply to two dimensional images (newaps = yes) Reidentify apertures in images not in reference (override = yes) Override previous solutions? (refit = yes) Refit coordinate function?\n (trace = no) Trace reference image? (step = 1) Step for tracing an image (nsum = 1) Number of lines or columns to sum (shift = 0.) Shift to add to reference features (nlost = 0) Maximum number of features which may be lost\n (cradius = 5.) Centering radius (threshold = 10.) Feature threshold for centering (addfeatures = no) Add features from a line list? (coordlist = "linelists$idhenear.dat") User coordinate list (match = 10.) Coordinate list matching limit in user units (maxfeatures = 50) Maximum number of features for automatic identi (minsep = 2.) Minimum pixel separation\n (database = "database") Database (logfiles = "logfile") List of log files (plotfile = "reid.gk") Plot file for residuals (verbose = yes) Verbose output? (graphics = "stdgraph") Graphics output device (cursor = "") Graphics cursor input (mode = "ql") First pass through reid: Reference image = test, New image = test, Refit = yes Image Data Found Fit Pix Shift User Shift Z Shift RMS test - Ap 1 12/12 12/12 1.59E-6 -1.93E-6 -2.E-10 0.0524 test - Ap 2 12/12 12/12 0. 7.58E-13 9.0E-17 0.052 test - Ap 3 12/12 12/12 -2.86E-6 3.47E-6 3.9E-10 0.0455 test - Ap 4 12/12 12/12 3.18E-7 -3.86E-7 -3.E-11 0.0476 test - Ap 5 12/12 12/12 5.88E-6 -7.14E-6 -8.E-10 0.0534 test - Ap 6 12/12 12/12 -1.91E-6 2.31E-6 2.6E-10 0.0666 test - Ap 7 12/12 12/12 0. 4.55E-13 5.2E-17 0.053 test - Ap 8 12/12 12/12 0. -7.58E-13 -9.E-17 0.0471 test - Ap 9 12/12 12/12 0. -4.55E-13 -5.E-17 0.052 test - Ap 10 12/12 12/12 0. 0. 0. 0.0445 test - Ap 11 12/12 12/12 -2.54E-6 3.09E-6 3.7E-10 0.0525 test - Ap 12 12/12 12/12 0. -7.58E-13 -9.E-17 0.0446 test - Ap 13 12/12 12/12 -9.54E-7 1.16E-6 1.7E-10 0.05 test - Ap 14 12/12 12/12 4.93E-6 -5.98E-6 -7.E-10 0.0316 test - Ap 15 12/12 12/12 6.04E-6 -7.33E-6 -8.E-10 0.0537 test - Ap 16 12/12 12/12 -1.27E-6 1.54E-6 1.7E-10 0.0418 test - Ap 17 12/12 12/12 0. 3.03E-13 3.6E-17 0.0578 test - Ap 18 12/12 12/12 0. 1.52E-13 1.7E-17 0.0596 test - Ap 19 12/12 12/12 -6.68E-6 8.10E-6 9.3E-10 0.0384 test - Ap 20 12/12 12/12 0. 9.09E-13 1.1E-16 0.0557 test - Ap 21 12/12 12/12 0. 9.09E-13 1.1E-16 0.0616 test - Ap 22 12/12 12/12 -1.26E-5 1.52E-5 1.72E-9 0.0501 test - Ap 23 12/12 12/12 0. 7.58E-13 8.8E-17 0.0456 test - Ap 24 12/12 12/12 7.09E-4 -8.52E-4 -1.0E-7 0.0424 test - Ap 25 12/12 12/12 0. -4.55E-13 -5.E-17 0.0499 test - Ap 26 12/12 12/12 2.54E-6 -3.08E-6 -4.E-10 0.036 test - Ap 27 12/12 12/12 -6.36E-7 7.71E-7 8.2E-11 0.0328 test - Ap 28 12/12 12/12 -1.59E-6 1.93E-6 2.2E-10 0.0385 test - Ap 29 12/12 12/12 -1.91E-6 2.31E-6 2.6E-10 0.035 test - Ap 30 12/12 12/12 7.79E-6 -9.45E-6 -1.1E-9 0.0584 test - Ap 31 12/12 12/12 0. 0. 0. 0.0471 test - Ap 32 12/12 12/12 1.11E-6 -1.35E-6 -2.E-10 0.0506 test - Ap 33 12/12 12/12 0. 0. 0. 0.0481 test - Ap 34 12/12 12/12 3.81E-6 -4.63E-6 -5.E-10 0.0533 test - Ap 35 12/12 12/12 1.02E-5 -1.23E-5 -1.4E-9 0.0476 test - Ap 36 12/12 12/12 1.11E-6 -1.35E-6 -1.E-10 0.0364 test - Ap 37 12/12 12/12 0. -3.03E-13 -3.E-17 0.05 test - Ap 38 12/12 12/12 -2.23E-6 2.70E-6 3.1E-10 0.045 test - Ap 39 12/12 12/12 -3.18E-7 3.85E-7 4.3E-11 0.0348 test - Ap 40 12/12 12/12 1.27E-6 -1.54E-6 -2.E-10 0.0609 test - Ap 41 12/12 12/12 1.92E-5 -2.33E-5 -2.7E-9 0.0475 test - Ap 42 12/12 12/12 0. -1.52E-13 -2.E-17 0.047 test - Ap 43 12/12 12/12 8.42E-6 -1.02E-5 -1.2E-9 0.0547 test - Ap 44 12/12 12/12 2.70E-6 -3.27E-6 -4.E-10 0.0363 test - Ap 45 12/12 12/12 1.59E-7 -1.93E-7 -2.E-11 0.0376 test - Ap 46 12/12 12/12 1.91E-6 -2.31E-6 -2.E-10 0.0511 test - Ap 47 12/12 12/12 -3.18E-6 3.85E-6 4.4E-10 0.0448 test - Ap 48 12/12 12/12 1.27E-6 -1.54E-6 -2.E-10 0.0439 Typical errors on first pass through id and reid were about 0.05A. I wrote a program called "waveave.f" to read the idtest file and produce an averaged wavelegth table based on the measured wavelengths from this first pass. You can do the same thing by taking the measured wavelengths output from the id task and use these as the input coord list into id. This will give you a cleaner fit and give you a realistic error in the fit. line ave median sdev N 1 8865.692 8865.693 0.023 48 2 8853.927 8853.925 0.024 48 3 8654.380 8654.377 0.023 48 4 8634.624 8634.625 0.026 48 5 8591.205 8591.205 0.031 48 6 8521.460 8521.461 0.025 48 7 8495.310 8495.307 0.012 48 8 8424.678 8424.679 0.020 48 9 8408.235 8408.235 0.016 48 10 8377.609 8377.609 0.013 48 11 8300.261 8300.260 0.019 48 12 8264.600 8264.604 0.018 48 Final pass through reid with averaged lines: Reference image = test, New image = test, Refit = yes Image Data Found Fit Pix Shift User Shift Z Shift RMS test - Ap 1 12/12 12/12 1.59E-6 -1.93E-6 -2.E-10 0.0251 test - Ap 2 12/12 12/12 0. 0. 0. 0.0245 test - Ap 3 12/12 12/12 -2.86E-6 3.47E-6 3.9E-10 0.0161 test - Ap 4 12/12 12/12 3.18E-7 -3.86E-7 -3.E-11 0.0184 test - Ap 5 12/12 12/12 5.88E-6 -7.14E-6 -8.E-10 0.0174 test - Ap 6 12/12 12/12 -1.91E-6 2.31E-6 2.6E-10 0.0374 test - Ap 7 12/12 12/12 0. 3.03E-13 3.5E-17 0.0224 test - Ap 8 12/12 12/12 0. 4.55E-13 5.4E-17 0.0139 test - Ap 9 12/12 12/12 0. -1.52E-13 -2.E-17 0.0245 test - Ap 10 12/12 12/12 0. -6.06E-13 -7.E-17 0.0116 test - Ap 11 12/12 12/12 -2.54E-6 3.09E-6 3.7E-10 0.0206 test - Ap 12 12/12 12/12 0. 7.58E-13 8.8E-17 0.0171 test - Ap 13 12/12 12/12 -9.54E-7 1.16E-6 1.7E-10 0.0144 test - Ap 14 12/12 12/12 4.93E-6 -5.98E-6 -7.E-10 0.0187 test - Ap 15 12/12 12/12 6.04E-6 -7.33E-6 -8.E-10 0.0193 test - Ap 16 12/12 12/12 1.27E-6 -1.54E-6 -2.E-10 0.0156 test - Ap 17 12/12 12/12 0. -6.06E-13 -7.E-17 0.0168 test - Ap 18 12/12 12/12 0. 9.09E-13 1.1E-16 0.0458 test - Ap 19 12/12 12/12 -6.68E-6 8.10E-6 9.3E-10 0.02 test - Ap 20 12/12 12/12 0. -6.06E-13 -7.E-17 0.0169 test - Ap 21 12/12 12/12 0. 1.52E-13 1.8E-17 0.0178 test - Ap 22 12/12 12/12 -1.26E-5 1.52E-5 1.72E-9 0.0166 test - Ap 23 12/12 12/12 0. 6.06E-13 7.1E-17 0.0128 test - Ap 24 12/12 12/12 7.09E-4 -8.33E-6 -9.E-10 0.0139 test - Ap 25 12/12 12/12 0. 9.09E-13 1.1E-16 0.0247 test - Ap 26 12/12 12/12 2.54E-6 -3.08E-6 -4.E-10 0.0254 test - Ap 27 12/12 12/12 -6.36E-7 7.71E-7 8.2E-11 0.0197 test - Ap 28 12/12 12/12 -1.59E-6 1.93E-6 2.2E-10 0.0221 test - Ap 29 12/12 12/12 -1.91E-6 2.31E-6 2.6E-10 0.0252 test - Ap 30 12/12 12/12 7.79E-6 -9.45E-6 -1.1E-9 0.0206 test - Ap 31 12/12 12/12 0. -7.58E-13 -9.E-17 0.0156 test - Ap 32 12/12 12/12 1.11E-6 -1.35E-6 -2.E-10 0.0122 test - Ap 33 12/12 12/12 0. -6.06E-13 -7.E-17 0.00892 test - Ap 34 12/12 12/12 3.81E-6 -4.62E-6 -5.E-10 0.0153 test - Ap 35 12/12 12/12 1.02E-5 -1.23E-5 -1.4E-9 0.0183 test - Ap 36 12/12 12/12 1.11E-6 -1.35E-6 -1.E-10 0.0207 test - Ap 37 12/12 12/12 0. 3.03E-13 3.6E-17 0.0187 test - Ap 38 12/12 12/12 -2.23E-6 2.70E-6 3.1E-10 0.0162 test - Ap 39 12/12 12/12 -3.18E-7 3.85E-7 4.3E-11 0.0165 test - Ap 40 12/12 12/12 1.27E-6 -1.54E-6 -2.E-10 0.038 test - Ap 41 12/12 12/12 1.92E-5 -2.33E-5 -2.7E-9 0.0182 test - Ap 42 12/12 12/12 0. 0. 0. 0.00691 test - Ap 43 12/12 12/12 8.42E-6 -1.02E-5 -1.2E-9 0.0293 test - Ap 44 12/12 12/12 2.70E-6 -3.27E-6 -4.E-10 0.0193 test - Ap 45 12/12 12/12 1.59E-7 -1.93E-7 -2.E-11 0.0207 test - Ap 46 12/12 12/12 1.91E-6 -2.31E-6 -2.E-10 0.0205 test - Ap 47 12/12 12/12 -3.18E-6 3.85E-6 4.4E-10 0.0345 test - Ap 48 12/12 12/12 1.27E-6 -1.54E-6 -2.E-10 0.0167 Typical rms are 1/50th of a pixel in this fit. Ran refspec using the single dome neons: refspec: input = "@in1" List of input spectra answer = Accept assignment? (references = "test.imh") List of reference spectra (apertures = "") Input aperture selection list (refaps = "") Reference aperture selection list (ignoreaps = no) Ignore input and reference apertures? (select = "interp") Selection method for reference spectra (sort = "jd") Sort key (group = "ljd") Group key (time = no) Is sort key a time? (timewrap = 17.) Time wrap point for time sorting (override = no) Override previous assignments? (confirm = yes) Confirm reference spectrum assignments? (assign = yes) Assign the reference spectra to the input spect (logfiles = "STDOUT,logfile") List of logfiles (verbose = yes) Verbose log output? (mode = "ql") Then did a dispcor, using +2A and -2A for limits on the data where I determined the largest w0 and smallest w(end). dispcor: input = "@in1" List of input spectra output = "@in2" List of output spectra (linearize = yes) Linearize (interpolate) spectra? (database = "database") Dispersion solution database (table = "") Wavelength table for apertures (w1 = 8203.) Starting wavelength (w2 = 8890.) Ending wavelength (dw = 1.21) Wavelength interval per pixel (nw = INDEF) Number of output pixels (log = no) Logarithmic wavelength scale? (flux = yes) Conserve flux? (samedisp = yes) Same dispersion in all apertures? (global = yes) Apply global defaults? (ignoreaps = no) Ignore apertures? (confirm = no) Confirm dispersion coordinates? (listonly = no) List the dispersion coordinates only? (verbose = yes) Print linear dispersion assignments? (logfile = "") Log file (mode = "ql") dispersion corrected (with dome neon) in d*.imh SKY SUBTRACTION: Did the ususal running averages. The following script was written for my specific problem. My spectra are dominated by night sky emission lines which are up to 20x brighter than the continuum in my stars. Because the focus changes just slightly from the first spectrum to the last, I could not just take a median of all the skies since the FWHM was variable. Instead, I took a running average. You may not need to do this. imcopy d111 s111 # skysub d111 out=test01 objap="01" skyap="2,4,6,8" skyedit- savesky+ skysub d111 out=test03 objap="03" skyap="2,4,6,8,10" skyedit- savesky+ skysub d111 out=test05 objap="05" skyap="4,6,8,10" skyedit- savesky+ skysub d111 out=test07 objap="07" skyap="4,6,8,10" skyedit- savesky+ skysub d111 out=test09 objap="09" skyap="6,8,10,12" skyedit- savesky+ skysub d111 out=test11 objap="11" skyap="8,10,12,14,16" skyedit- savesky+ skysub d111 out=test13 objap="13" skyap="8,10,12,14,16,18" skyedit- savesky+ skysub d111 out=test15 objap="15" skyap="10,12,14,16,18,20" skyedit- savesky+ skysub d111 out=test17 objap="17" skyap="12,14,16,18,20,22" skyedit- savesky+ skysub d111 out=test19 objap="19" skyap="14,16,18,20,22,24" skyedit- savesky+ skysub d111 out=test21 objap="21" skyap="16,18,20,22,24,26" skyedit- savesky+ skysub d111 out=test23 objap="23" skyap="18,20,22,24,26,28" skyedit- savesky+ skysub d111 out=test25 objap="25" skyap="20,22,24,26,28,30" skyedit- savesky+ skysub d111 out=test27 objap="27" skyap="22,24,26,28,30,32" skyedit- savesky+ skysub d111 out=test29 objap="29" skyap="24,26,28,30,32,34" skyedit- savesky+ skysub d111 out=test31 objap="31" skyap="26,28,30,32,34,36" skyedit- savesky+ skysub d111 out=test33 objap="33" skyap="28,30,32,34,36,38" skyedit- savesky+ skysub d111 out=test35 objap="35" skyap="30,32,34,36,38,40" skyedit- savesky+ skysub d111 out=test37 objap="37" skyap="32,34,36,38,40,42" skyedit- savesky+ skysub d111 out=test39 objap="39" skyap="34,36,38,40,42,44" skyedit- savesky+ skysub d111 out=test41 objap="41" skyap="36,38,40,42,44,46" skyedit- savesky+ skysub d111 out=test43 objap="43" skyap="38,40,42,44,46,48" skyedit- savesky+ skysub d111 out=test45 objap="45" skyap="40,42,44,46,48" skyedit- savesky+ skysub d111 out=test47 objap="47" skyap="40,42,44,46,48" skyedit- savesky+ # hedit skytest01 apnum 02 up+ ver- hedit skytest03 apnum 04 up+ ver- hedit skytest05 apnum 06 up+ ver- hedit skytest07 apnum 08 up+ ver- hedit skytest09 apnum 10 up+ ver- hedit skytest11 apnum 12 up+ ver- hedit skytest13 apnum 14 up+ ver- hedit skytest15 apnum 16 up+ ver- hedit skytest17 apnum 18 up+ ver- hedit skytest19 apnum 20 up+ ver- hedit skytest21 apnum 22 up+ ver- hedit skytest23 apnum 24 up+ ver- hedit skytest25 apnum 26 up+ ver- hedit skytest27 apnum 28 up+ ver- hedit skytest29 apnum 30 up+ ver- hedit skytest31 apnum 32 up+ ver- hedit skytest33 apnum 34 up+ ver- hedit skytest35 apnum 36 up+ ver- hedit skytest37 apnum 38 up+ ver- hedit skytest39 apnum 40 up+ ver- hedit skytest41 apnum 42 up+ ver- hedit skytest43 apnum 44 up+ ver- hedit skytest45 apnum 46 up+ ver- hedit skytest47 apnum 48 up+ ver- # scopy test01 s111 aper=01 merge+ clob+ form=multi scopy skytest01 s111 merge+ clob+ form=multi scopy test03 s111 aper=03 merge+ clob+ form=multi scopy skytest03 s111 merge+ clob+ form=multi scopy test05 s111 aper=05 merge+ clob+ form=multi scopy skytest05 s111 merge+ clob+ form=multi scopy test07 s111 aper=07 merge+ clob+ form=multi scopy skytest07 s111 merge+ clob+ form=multi scopy test09 s111 aper=09 merge+ clob+ form=multi scopy skytest09 s111 merge+ clob+ form=multi scopy test11 s111 aper=11 merge+ clob+ form=multi scopy skytest11 s111 merge+ clob+ form=multi scopy test13 s111 aper=13 merge+ clob+ form=multi scopy skytest13 s111 merge+ clob+ form=multi scopy test15 s111 aper=15 merge+ clob+ form=multi scopy skytest15 s111 merge+ clob+ form=multi scopy test17 s111 aper=17 merge+ clob+ form=multi scopy skytest17 s111 merge+ clob+ form=multi scopy test19 s111 aper=19 merge+ clob+ form=multi scopy skytest19 s111 merge+ clob+ form=multi scopy test21 s111 aper=21 merge+ clob+ form=multi scopy skytest21 s111 merge+ clob+ form=multi scopy test23 s111 aper=23 merge+ clob+ form=multi scopy skytest23 s111 merge+ clob+ form=multi scopy test25 s111 aper=25 merge+ clob+ form=multi scopy skytest25 s111 merge+ clob+ form=multi scopy test27 s111 aper=27 merge+ clob+ form=multi scopy skytest27 s111 merge+ clob+ form=multi scopy test29 s111 aper=29 merge+ clob+ form=multi scopy skytest29 s111 merge+ clob+ form=multi scopy test31 s111 aper=31 merge+ clob+ form=multi scopy skytest31 s111 merge+ clob+ form=multi scopy test33 s111 aper=33 merge+ clob+ form=multi scopy skytest33 s111 merge+ clob+ form=multi scopy test35 s111 aper=35 merge+ clob+ form=multi scopy skytest35 s111 merge+ clob+ form=multi scopy test37 s111 aper=37 merge+ clob+ form=multi scopy skytest37 s111 merge+ clob+ form=multi scopy test39 s111 aper=39 merge+ clob+ form=multi scopy skytest39 s111 merge+ clob+ form=multi scopy test41 s111 aper=41 merge+ clob+ form=multi scopy skytest41 s111 merge+ clob+ form=multi scopy test43 s111 aper=43 merge+ clob+ form=multi scopy skytest43 s111 merge+ clob+ form=multi scopy test45 s111 aper=45 merge+ clob+ form=multi scopy skytest45 s111 merge+ clob+ form=multi scopy test47 s111 aper=47 merge+ clob+ form=multi scopy skytest47 s111 merge+ clob+ form=multi # imdel test* imdel skytest* beep Sky subtracted data in s*.imh I then edited out the obvious cr's in s*.imh in place. The sky subtraction is never perfect to better than about 2-5%, partly due to field distorsion (which can be calculated) and partly due to fiber flexure which is random. So I tweaked the sky subtraction by running three windows, with one window with imdel temp imar s109[*,40] * 0.01 temp beep This will create temp, which is 1% of sky. I then use splot to subtract or add temp to each object spectrum until I got the best sky subtraction. Copied s*.imh into t*.imh to do the sky tweaking. Took forever to edit the data! FINAL WAVELENGTH CALIBRATION I will now rebin the data again to take out the small spectral shifts that occur uniformly during the night. You may not like to have your data rebinned twice, but I find that it is the easiest way to reduce the data. Had to edit out the DC-FLAG. imdel temp.????.imh scopy t100 temp format=onedspec hedit temp.????.imh dc-flag -1 up+ ver- scopy temp.????.imh t100 format=multispec merge+ clobber+ imdel temp.????.imh beep # imdel temp.????.imh scopy t101 temp format=onedspec hedit temp.????.imh dc-flag -1 up+ ver- scopy temp.????.imh t101 format=multispec merge+ clobber+ imdel temp.????.imh beep # etc. Did an id on the middle hear, with or=2 leg fit. Recalculated the fit values into wave.dat. Used this to redo the wavelength calibration wave.dat 8264.441 8408.265 8424.705 8521.476 8667.880 ave med rms N 1 8264.441 8264.441 0.014 48 2 8408.265 8408.265 0.012 48 3 8424.705 8424.708 0.019 48 4 8521.476 8521.475 0.011 48 5 8667.880 8667.883 0.011 48 The rms on the fitted lines is better than 0.02A (0.7 kms) Then did a reid on the standard lamp REIDENTIFY: NOAO/IRAF V2.10EXPORT nick@ctiow5 Fri 19:16:07 11-Dec-92 Reference image = test1, New image = test1, Refit = yes Image Data Found Fit Pix Shift User Shift Z Shift RMS test1 - Ap 23 5/5 5/5 0.0105 0.0141 1.65E-6 0.0117 test1 - Ap 22 5/5 5/5 -0.0348 -0.0407 -4.8E-6 0.0145 test1 - Ap 21 5/5 5/5 -0.00444 -0.00398 -4.7E-7 0.0107 test1 - Ap 20 5/5 5/5 -0.00563 -0.00541 -6.8E-7 0.00995 test1 - Ap 19 5/5 5/5 -0.0139 -0.0154 -1.8E-6 0.0095 test1 - Ap 18 5/5 5/5 -0.0194 -0.0221 -2.6E-6 0.0278 test1 - Ap 17 5/5 5/5 -0.0179 -0.0202 -2.4E-6 0.00817 test1 - Ap 16 5/5 5/5 -0.0157 -0.0176 -2.1E-6 0.0088 test1 - Ap 15 5/5 5/5 -0.00229 -0.00138 -1.6E-7 0.0118 test1 - Ap 14 5/5 5/5 -0.0288 -0.0335 -3.9E-6 0.00376 test1 - Ap 13 5/5 5/5 -0.0192 -0.0218 -2.6E-6 0.00884 test1 - Ap 12 5/5 5/5 -0.0257 -0.0298 -3.5E-6 0.00872 test1 - Ap 11 5/5 5/5 -0.0248 -0.0286 -3.4E-6 0.00766 test1 - Ap 10 5/5 5/5 -0.0307 -0.0358 -4.2E-6 0.0131 test1 - Ap 9 5/5 5/5 -0.0213 -0.0243 -2.9E-6 0.00919 test1 - Ap 8 5/5 5/5 -0.0349 -0.0408 -4.8E-6 0.00946 test1 - Ap 7 5/5 5/5 -0.0313 -0.0364 -4.3E-6 0.00765 test1 - Ap 6 5/5 5/5 -0.0228 -0.0262 -3.1E-6 0.0153 test1 - Ap 5 5/5 5/5 -0.0292 -0.034 -4.0E-6 0.00859 test1 - Ap 4 5/5 5/5 -0.0597 -0.0709 -8.4E-6 0.00462 test1 - Ap 3 5/5 5/5 -0.0207 -0.0236 -2.8E-6 0.0116 test1 - Ap 2 5/5 5/5 -0.0557 -0.066 -7.8E-6 0.00869 test1 - Ap 1 5/5 5/5 -0.031 -0.0361 -4.2E-6 0.0102 test1 - Ap 25 5/5 5/5 -0.0101 -0.0108 -1.3E-6 0.00666 test1 - Ap 26 5/5 5/5 0.00723 0.0101 1.21E-6 0.00705 test1 - Ap 27 5/5 5/5 -0.00481 -0.00443 -5.3E-7 0.00789 test1 - Ap 28 5/5 5/5 -0.0308 -0.0359 -4.2E-6 0.0128 test1 - Ap 29 5/5 5/5 -0.00715 -0.00726 -8.6E-7 0.0128 test1 - Ap 30 5/5 5/5 -0.0202 -0.0231 -2.8E-6 0.0166 test1 - Ap 31 5/5 5/5 0.00409 0.00634 7.54E-7 0.00869 test1 - Ap 32 5/5 5/5 0.00161 0.00334 3.78E-7 0.00715 test1 - Ap 33 5/5 5/5 -0.00772 -0.00794 -9.6E-7 0.00977 test1 - Ap 34 5/5 5/5 -0.0181 -0.0205 -2.4E-6 0.0179 test1 - Ap 35 5/5 5/5 -0.0314 -0.0366 -4.4E-6 0.0127 test1 - Ap 36 5/5 5/5 -0.037 -0.0433 -5.1E-6 0.0219 test1 - Ap 37 5/5 5/5 -0.0283 -0.0329 -3.9E-6 0.0176 test1 - Ap 38 5/5 5/5 -0.0548 -0.0649 -7.7E-6 0.0128 test1 - Ap 39 5/5 5/5 -0.0389 -0.0456 -5.4E-6 0.0239 test1 - Ap 40 5/5 5/5 0.00583 0.00845 9.74E-7 0.0079 test1 - Ap 41 5/5 5/5 -0.027 -0.0313 -3.7E-6 0.0139 test1 - Ap 42 5/5 5/5 -0.0274 -0.0318 -3.8E-6 0.00318 test1 - Ap 43 5/5 5/5 0.00826 0.0114 1.28E-6 0.03 test1 - Ap 44 5/5 5/5 -0.0807 -0.0962 -1.1E-5 0.00953 test1 - Ap 45 5/5 5/5 -0.0597 -0.0709 -8.4E-6 0.0223 test1 - Ap 46 5/5 5/5 -0.0572 -0.0678 -8.0E-6 0.0103 test1 - Ap 47 5/5 5/5 -0.0552 -0.0654 -7.7E-6 0.0252 test1 - Ap 48 5/5 5/5 -0.0711 -0.0846 -1.0E-5 0.00847 Then did a reid on ALL the lamps. A check on the shifts gives the following. It is clear that the data are shifting uniformly across all the fibers, since the difference in shifts between the fibers is 0.005A or so.== hjd Ap 25 rms Ap 11 rms Ap 41 rms d102 0.5422748 0.0325 0.0142 0.0258 0.00589 0.0339 0.0179 d104 0.5949139 0.142 0.0157 0.139 0.00851 0.144 0.0192 d106 0.63044298 0.17 0.0152 0.164 0.00949 0.169 0.0148 d108 0.67459274 0.177 0.0142 0.169 0.00821 0.179 0.0188 d110 0.70916154 0.177 0.012 0.173 0.00878 0.181 0.0194 d112 0.75437398 0.0109 0.0109 0.0103 0.00628 0.00942 0.0134 d114 0.78910641 0. 0.00666 0. 0.00766 0. 0.0139 d116 0.80742137 -0.0571 0.00863 -0.0536 0.00631 -0.0562 0.0154 d118 0.86209803 0.0554 0.00974 0.0622 0.00771 0.0574 0.0166 d120 0.90354493 0.073 0.0098 0.0739 0.00778 0.0727 0.0162 d122 0.92291995 -0.0142 0.00929 -0.0132 0.00648 -0.0144 0.0151 d129 0.93458029 -0.0355 0.00898 -0.0387 0.00869 -0.0356 0.0178 did the following assignment. SPectrum 116 is very strange. It says "hear 2257" but its ra is between 47 tuc and 2257. Probably telescope was slewing during integration. THere are jumps in the spectra along the disperion of 0.05 to 0.1 pix that seem correlated with sky position. VERY STRANGE! Now I assign the wavelength solutions to the object spectra with refspec. used following assignments: t100 d102 t101 d102 t103 d104 t105 d106 t107 d108 t109 d110 t111 d112 t113 d114 t115 d114 t117 d118 t119 d120 t121 d122 ttwi d129 Ran dispcor with the same parameters. Final calibration in c*.imh